:root{--ink:#17323c;--muted:#61757d;--teal:#087b8c;--bg:#f0f5f7;--line:#dce6e9}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--bg);font:15px/1.5 system-ui,-apple-system,Segoe UI,sans-serif}button,input,select,textarea{font:inherit}button,.button{background:var(--teal);color:white;border:0;border-radius:9px;padding:11px 16px;cursor:pointer;text-decoration:none;display:inline-block}button.secondary{background:#e6eef1;color:var(--ink)}button.danger{background:#a93838}button:disabled{opacity:.45;cursor:default}input,select,textarea{display:block;width:100%;padding:11px;border:1px solid #b8ccd2;background:white;border-radius:8px;color:var(--ink)}input[type=checkbox]{display:inline;width:auto;margin:8px}label{display:block;margin-bottom:15px;font-weight:600}textarea{min-height:100px}h1{font-size:28px;letter-spacing:-.8px;margin:0 0 18px}h2{font-size:20px}p{color:var(--muted)}.card{background:white;border:1px solid var(--line);border-radius:16px;padding:22px}.setup{max-width:510px;margin:6vh auto;padding:32px}.logo{width:200px;max-width:100%;object-fit:contain}.shell{display:grid;grid-template-columns:215px 1fr;min-height:100vh}.side{background:#14323e;padding:24px 16px;color:white;position:sticky;top:0;height:100vh;overflow:auto}.side .logo{background:white;padding:8px;border-radius:8px;margin-bottom:28px}.side button{display:block;width:100%;text-align:left;background:transparent;margin:3px 0}.side button.active{background:#236070}.side small{display:block;color:#b0c7ce;margin:24px 12px}.main{padding:30px;min-width:0}.top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:24px}.top h1{margin:0}.actions{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}.search{max-width:380px}.metrics{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin:20px 0}.metric strong{display:block;font-size:27px}.metric small{color:var(--muted)}.prices{display:flex;gap:10px;overflow:auto;margin:12px 0}.price{min-width:150px;flex:1;background:#e6f1f4;border-radius:10px;padding:12px}.price strong{display:block;font-size:17px}.tablebox{overflow:auto;border:1px solid var(--line);border-radius:12px;background:white}table{width:100%;border-collapse:collapse;white-space:normal}th{font-size:12px;text-transform:uppercase;color:#59717a;background:#e9f0f3;text-align:left;padding:14px}td{padding:12px 14px;border-top:1px solid #edf1f3;font-size:14px}tr.ready{background:#e7f7ed}td img{width:48px;height:48px;object-fit:contain;border-radius:6px}td button{font-size:12px;padding:6px 9px;margin:2px}.empty{padding:35px;color:var(--muted)}.error{color:#a02b2b}.notice{padding:12px;border-radius:8px;background:#fff5d9;color:#71561e}.small{font-size:12px;color:var(--muted)}dialog{border:0;border-radius:16px;width:min(1050px,96vw);max-height:94vh;padding:0;color:var(--ink)}dialog::backdrop{background:#102b3ca8}.dialoghead{position:sticky;top:0;z-index:2;background:white;border-bottom:1px solid var(--line);padding:20px;display:flex;justify-content:space-between;align-items:center}.dialogbody{padding:24px}.formcols{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:30px}.summary{background:#eff6f8;padding:20px;border-radius:12px;align-self:start;position:sticky;top:85px}.summary img{width:100%;max-height:230px;object-fit:contain}.summary strong{display:block;font-size:22px}.formfoot{position:sticky;bottom:0;background:white;padding:15px 24px;border-top:1px solid var(--line);display:flex;gap:10px;justify-content:flex-end}#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:#163d48;color:white;padding:12px 24px;border-radius:12px;display:none;z-index:20}.quote-paper{background:white;max-width:794px;padding:38px;margin:auto;border-top:8px solid var(--teal)}.quote-head{display:flex;justify-content:space-between;gap:20px}.quote-title{font-size:26px;color:var(--teal);font-weight:800}.quote-block{border:1px solid var(--line);padding:16px;margin-top:18px;border-radius:9px;white-space:pre-wrap;overflow-wrap:anywhere}.quote-photo{width:180px;height:160px;object-fit:contain;float:right;margin:10px}.sign{display:flex;justify-content:space-between;margin-top:35px;border-top:1px solid var(--line);padding-top:12px}.print-only{display:none}@media(max-width:850px){.shell{display:block}.side{position:static;height:auto;padding:12px}.side .logo{width:135px;margin:0 0 10px}.side nav{display:flex;overflow:auto;gap:5px}.side button{width:auto;white-space:nowrap}.side small{margin:4px 0}.main{padding:16px}.top h1{font-size:22px}.metrics{gap:8px}.metric{padding:12px}.metric strong{font-size:19px}.formcols{grid-template-columns:1fr}.summary{position:static;grid-row:1}.formcols:has(.summary) .summary{max-height:310px;overflow:auto}.summary img{max-height:140px}.setup{margin:20px 10px}.top{flex-wrap:wrap}td,th{padding:9px}table{min-width:640px}.dialogbody{padding:16px}}
@media print{@page{size:A4;margin:10mm}body{background:white}#app,#toast,.dialoghead,.formfoot,.no-print{display:none!important}dialog{position:static;display:block!important;width:100%;max-height:none;overflow:visible;margin:0;padding:0;border:0}dialog::backdrop{display:none}.dialogbody{padding:0}.quote-paper{width:100%;padding:10px;font-size:11px}.quote-paper h2{font-size:15px}.quote-paper .quote-title{font-size:22px}.quote-block{padding:10px;margin-top:10px;break-inside:avoid}.quote-paper p{margin:5px 0}.quote-head .logo{width:145px}.sign{margin-top:20px}.quote-photo{width:130px;height:110px}table{min-width:0}th,td{padding:6px;font-size:11px}}

.quote-paper.print-layout{width:718px;max-width:none;padding:10px;font-size:11px}.print-layout h2{font-size:15px}.print-layout .quote-title{font-size:22px}.print-layout .quote-block{padding:10px;margin-top:10px}.print-layout p{margin:5px 0}.print-layout .quote-head .logo{width:145px}.print-layout .sign{margin-top:20px}.print-layout .quote-photo{width:130px;height:110px}@media print{.quote-paper.print-layout{zoom:var(--print-scale,1);width:718px;max-width:none}.quote-paper{break-inside:avoid}}

.tablebox td img{width:120px;height:100px;object-fit:contain}.tablebox th{white-space:nowrap}textarea[name=notebook]{width:100%}
/* 1.3.1: independent toolbars, bounded dialogs and readable small screens. */
.actions{align-items:flex-end}.actions>label{flex:0 1 240px;min-width:150px;margin:0}.actions>input{flex:1 1 220px;min-width:0}.actions>button{flex:0 0 auto}.formcols>*{min-width:0}.summary .tablebox{max-width:100%}.dialoghead h2{margin:0;min-width:0;overflow-wrap:anywhere}.dialoghead button{flex-shrink:0}.card,.summary,td{overflow-wrap:anywhere}dialog{overflow:auto}.tablebox th{white-space:normal}.notice:empty{display:none}.main>.small{margin-top:20px}
@media(max-width:600px){.actions>label{flex:1 1 100%}.actions>button{flex:1 1 auto}.dialoghead{padding:12px;gap:8px}.formcols{gap:16px}.metrics{grid-template-columns:1fr}.summary{padding:14px}.side nav{max-width:100%}.tablebox td img{width:90px;height:80px}#toast{max-width:94vw;width:max-content;overflow-wrap:anywhere}.quote-head{flex-wrap:wrap}.quote-paper{padding:16px}}

/* Modern login only — other application screens unchanged */
body:has(.login-page){background:#081827}
.login-page{position:relative;min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:36px 18px 66px;background:radial-gradient(ellipse at 14% 10%,#164357 0%,transparent 42%),radial-gradient(ellipse at 86% 90%,#123e50 0%,transparent 44%),#091a29;color:#19303b;isolation:isolate}
.login-page:before{content:"";position:absolute;inset:0;background-image:linear-gradient(#ffffff05 1px,transparent 1px),linear-gradient(90deg,#ffffff05 1px,transparent 1px);background-size:44px 44px;pointer-events:none;z-index:-1}
.login-ambient{position:absolute;border-radius:50%;filter:blur(50px);opacity:.4;z-index:-1;pointer-events:none}.login-ambient-one{width:340px;height:340px;background:#0b9aaa;top:-150px;right:6%}.login-ambient-two{width:290px;height:290px;background:#226b87;bottom:-170px;left:4%}
.login-panel{width:min(100%,465px);background:#fff;border:1px solid #ffffff7a;border-radius:26px;box-shadow:0 35px 110px #0007;padding:37px 39px 31px;position:relative}.login-brand{display:flex;align-items:center;justify-content:space-between;gap:12px}.login-logo{width:147px;height:72px;object-fit:contain;object-position:left center}.login-brand-tag{font-size:9px;letter-spacing:1.15px;font-weight:800;color:#68828b;border:1px solid #e2ebee;padding:7px 8px;border-radius:6px;white-space:nowrap}.login-heading{margin:23px 0 27px}.login-eyebrow{font-size:11px;font-weight:800;letter-spacing:2px;color:#078395}.login-heading h1{font-size:31px;letter-spacing:-1.2px;line-height:1.2;margin:8px 0 9px;color:#16303b}.login-heading h1 span{color:#07889a}.login-heading p{font-size:14px;line-height:1.6;margin:0;color:#74858e}.login-form>label{display:block;font-size:13px;font-weight:700;margin:18px 0 8px;color:#2b414c}.login-input-wrap{height:51px;display:flex;align-items:center;gap:11px;border:1px solid #d7e2e7;background:#f8fafb;border-radius:12px;padding:0 14px;transition:border-color .2s,box-shadow .2s}.login-input-wrap:focus-within{border-color:#0c8d9e;box-shadow:0 0 0 4px #0c8d9e17;background:#fff}.login-input-wrap svg{width:18px;height:18px;fill:none;stroke:#81949d;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}.login-input-wrap input{border:0;outline:0;box-shadow:none;background:transparent;padding:0;height:100%;min-width:0;flex:1;font-size:14px}.login-input-wrap input:focus{outline:0}.login-reveal{background:transparent;color:#087d8f;border:0;padding:7px 0 7px 6px;font-size:12px;font-weight:700;white-space:nowrap}.login-reveal:hover{background:transparent;color:#055a68}.login-error{font-size:13px;min-height:18px;margin:12px 0 0;color:#b13b3b}.login-submit{margin-top:15px;width:100%;height:51px;border-radius:12px;background:linear-gradient(110deg,#087d90,#0a9ca5);display:flex;align-items:center;justify-content:center;gap:12px;font-weight:750;font-size:15px;box-shadow:0 9px 19px #087d9029;transition:filter .2s,transform .2s}.login-submit:hover{filter:brightness(1.07);transform:translateY(-1px)}.login-submit:disabled{transform:none}.login-submit span:last-child{font-size:23px;font-weight:400;line-height:1}.login-footer{border-top:1px solid #edf1f2;margin-top:27px;padding-top:19px;text-align:center;font-size:12px;color:#8797a0}.login-dot{display:inline-block;width:7px;height:7px;background:#23ae84;border-radius:50%;margin-right:6px}.login-bottom{position:absolute;bottom:23px;color:#90aab5;font-size:11px;letter-spacing:.5px}.login-bottom span{padding:0 8px;color:#42677b}@media(max-width:480px){.login-panel{padding:26px 23px 25px;border-radius:21px}.login-heading h1{font-size:28px}.login-brand-tag{font-size:8px;letter-spacing:.5px}.login-logo{width:132px}.login-page{padding:20px 14px 56px}}

/* 1.5.5 factory login — isolated from application pages */
body:has(.login-page){background:#06192c}
.login-page{background:linear-gradient(90deg,rgba(2,14,31,.22),rgba(2,14,31,.18)),url('login-background.png?v=156') center center/cover no-repeat fixed;color:#f4f8fc}
.login-page:before{background:linear-gradient(180deg,rgba(0,14,31,.1),rgba(0,14,31,.25));pointer-events:none}
.login-ambient{display:none}
.login-panel{background:rgba(5,27,51,.87);border:1px solid rgba(83,200,232,.65);box-shadow:0 25px 80px rgba(0,8,24,.58);backdrop-filter:blur(13px);-webkit-backdrop-filter:blur(13px);color:#f6fbff}
.login-heading h1,.login-form>label{color:#f5faff}
.login-heading h1 span,.login-eyebrow{color:#52d6e8}
.login-heading p,.login-footer{color:#b8d2e5}
.login-brand-tag{color:#a9d9e8;border-color:#4b819a}
.login-input-wrap{background:rgba(24,60,91,.86);border-color:#6997b4}
.login-input-wrap input{color:#fff}
.login-input-wrap input::placeholder{color:#b1c4d4}
.login-reveal{color:#9be4f1}
.login-footer{border-color:#355d77}
.login-bottom{color:#e3edf8;text-shadow:0 1px 6px #001}
.login-submit{background:linear-gradient(110deg,#00b4c7,#06d1d7);color:#04243b;border:0}
@media(max-width:600px){.login-page{background-attachment:scroll;background-position:45% center}.login-panel{background:rgba(5,27,51,.94)}}

/* 1.5.6: login image contains factory only; form and logo are real HTML, shown once. */
.login-page{background-position:center center;background-size:cover}.login-panel{z-index:1}

/* 1.5.7 - Login password visibility, including Chrome autofill */
.login-page .login-input-wrap input,
.login-page .login-input-wrap input[type="password"],
.login-page .login-input-wrap input[type="text"] {
  color:#ffffff !important;
  -webkit-text-fill-color:#ffffff !important;
  caret-color:#35e5ef !important;
  font-size:16px !important;
  font-weight:600;
  opacity:1 !important;
  letter-spacing:1px;
}
.login-page .login-input-wrap input::placeholder {color:#b7cddd !important;-webkit-text-fill-color:#b7cddd !important;opacity:1}
.login-page .login-input-wrap input:-webkit-autofill,
.login-page .login-input-wrap input:-webkit-autofill:hover,
.login-page .login-input-wrap input:-webkit-autofill:focus {
  -webkit-text-fill-color:#ffffff !important;
  caret-color:#35e5ef !important;
  -webkit-box-shadow:0 0 0 1000px #193b59 inset !important;
  box-shadow:0 0 0 1000px #193b59 inset !important;
  transition:background-color 9999s ease-out 0s;
}
.login-page .login-input-wrap:focus-within {background:rgba(24,60,91,.96);border-color:#36d5e5}
/* 1.5.8: independent password-entry feedback even when browser hides password glyphs */
.login-page #login-password{color:#fff!important;-webkit-text-fill-color:#fff!important;text-shadow:0 0 0 #fff!important;min-width:0;}
.login-page .password-feedback{display:flex;align-items:center;gap:8px;margin:7px 0 0;color:#d7f7ff;font-size:12px;min-height:20px}
.login-page .password-dots{color:#fff;font-size:19px;letter-spacing:3px;line-height:1;overflow:hidden;white-space:nowrap;max-width:245px}
.login-page .password-count{color:#a6e4ee}
