:root{--bg: #f4f5f7;--panel: #ffffff;--border: #d9dce1;--text: #1f2430;--muted: #6b7280;--danger: #b91c1c;--success: #15803d;--brand-navy-dark: #0b1a3a;--brand-navy: #163a7a;--brand-blue: #1f4fa0;--brand-blue-light: #3f74c9;--brand-silver: #97a1b0;--brand-silver-light: #ccd2da;--primary: var(--brand-blue);--primary-hover: var(--brand-navy);font-family:Segoe UI,system-ui,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}a{color:inherit}.app-shell{display:flex;min-height:100vh}.sidebar{width:232px;background:linear-gradient(180deg,var(--brand-navy-dark) 0%,#0f2350 100%);color:#dbe2ee;display:flex;flex-direction:column;padding:20px 0 16px;flex-shrink:0}.sidebar nav{display:flex;flex-direction:column;margin-top:16px}.sidebar nav a{padding:10px 16px;text-decoration:none;color:#cbd5e1;font-size:14px}.sidebar nav a.active,.sidebar nav a:hover{background:#ffffff14;color:#fff;border-left:3px solid var(--brand-silver-light);padding-left:13px}.sidebar .user-box{margin-top:auto;padding:12px 16px;border-top:1px solid rgba(255,255,255,.12);font-size:13px}.brand-mark{display:flex;align-items:center;gap:10px;padding:0 16px 16px;margin-bottom:4px;border-bottom:1px solid rgba(255,255,255,.12)}.brand-mark .brand-logo-plate{width:34px;height:34px;flex-shrink:0;border-radius:8px;background:#fff;padding:3px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px #00000059}.brand-mark .brand-logo-plate img{width:100%;height:100%;object-fit:contain;display:block}.brand-mark .brand-word{line-height:1.1}.brand-mark .brand-word .name{font-weight:800;font-size:16px;letter-spacing:.4px;background:linear-gradient(90deg,#ffffff 0%,var(--brand-silver-light) 100%);-webkit-background-clip:text;background-clip:text;color:transparent}.brand-mark .brand-word .sub{font-size:10px;letter-spacing:1.5px;color:var(--brand-silver-light);text-transform:uppercase}.brand-mark.large{padding:0;border:none;margin:0 0 8px;justify-content:center}.brand-mark.large .brand-logo-plate{width:64px;height:64px;border-radius:14px;padding:5px}.brand-mark.large .brand-word .name{font-size:26px}.brand-mark.large .brand-word .sub{font-size:12px}.brand-mark.on-light .brand-word .name{background:linear-gradient(90deg,var(--brand-navy) 0%,var(--brand-blue) 100%);-webkit-background-clip:text;background-clip:text}.brand-mark.on-light .brand-word .sub{color:var(--muted)}.brand-mark.on-light .brand-logo-plate{border:1px solid var(--border);box-shadow:none}.brand-mark.on-light{border-bottom-color:var(--border)}.sidebar .user-box button{margin-top:8px;width:100%}.content{flex:1;padding:24px 32px;max-width:1100px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:20px;margin-bottom:20px}h2{margin-top:0}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}th{color:var(--muted);font-weight:600}input,select,button{font-family:inherit;font-size:14px;padding:8px 10px;border:1px solid var(--border);border-radius:6px}button{background:var(--primary);color:#fff;border:none;cursor:pointer}button:hover{background:var(--primary-hover)}button.secondary{background:#fff;color:var(--text);border:1px solid var(--border)}button:disabled{opacity:.6;cursor:not-allowed}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:16px}.form-field{display:flex;flex-direction:column;gap:4px}.form-field label{font-size:13px;color:var(--muted)}.line-items-table input,.line-items-table select{width:100%}.error-banner{background:#fef2f2;border:1px solid #fecaca;color:var(--danger);padding:10px 14px;border-radius:6px;margin-bottom:16px;font-size:14px}.success-banner{background:#f0fdf4;border:1px solid #bbf7d0;color:var(--success);padding:10px 14px;border-radius:6px;margin-bottom:16px;font-size:14px}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--brand-navy-dark) 0%,var(--brand-navy) 55%,var(--brand-blue) 100%)}.login-card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:36px;width:360px;box-shadow:0 20px 45px #0b1a3a59}.login-card p.subtitle{color:var(--muted);font-size:13px;margin-top:0;margin-bottom:20px}.login-card .form-field{margin-bottom:14px}.login-card button{width:100%;padding:10px}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600}.badge.official{background:#dbeafe;color:#1e3a8a}.badge.unofficial{background:#fef3c7;color:#92400e}.print-document{background:#fff;border:1px solid var(--border);border-radius:8px;padding:32px;max-width:760px}.print-document .doc-header{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:2px solid var(--brand-navy);padding-bottom:16px;margin-bottom:20px}.print-document .doc-header h1{font-size:20px;margin:0 0 4px;color:var(--brand-navy)}.print-document .doc-header .brand-mark{padding:0;border:none;margin:0 0 10px}.print-document .doc-header .company{font-size:13px;color:var(--muted)}.print-document .doc-meta{text-align:right;font-size:13px}.print-document .doc-parties{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:20px;font-size:14px}.print-document .doc-parties h4{margin:0 0 4px;font-size:12px;text-transform:uppercase;color:var(--muted)}.print-document table{margin-bottom:16px}.print-document .doc-totals{display:flex;justify-content:flex-end;font-size:15px;font-weight:700;margin-bottom:20px}.print-document .doc-footer{display:flex;justify-content:space-between;margin-top:40px;font-size:13px;color:var(--muted)}.inv1c{background:#fff;color:#000;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:1.35;padding:24px 28px;max-width:820px;border:1px solid var(--border)}.inv1c table{width:100%;border-collapse:collapse;margin:0}.inv1c th,.inv1c td{color:#000;background:#fff;font-size:12px;text-transform:none;letter-spacing:normal}.inv1c-head{display:flex;align-items:center;gap:12px;padding-bottom:8px;border-bottom:1px solid #000}.inv1c-head img{height:44px;width:auto}.inv1c-head .company{font-size:11px;line-height:1.3}.inv1c-head .company .name{font-size:14px;font-weight:700}.inv1c-title{text-align:center;font-size:18px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;margin:10px 0 4px}.inv1c-numberline{display:flex;justify-content:space-between;font-weight:700;padding-bottom:6px;border-bottom:2px solid #000;margin-bottom:10px}.inv1c-parties td{border:none;padding:3px 4px;vertical-align:top}.inv1c-parties td:first-child{width:70px;white-space:nowrap}.inv1c-parties td:last-child{font-weight:600}.inv1c .inv1c-items{margin-top:12px}.inv1c-items th,.inv1c-items td{border:1px solid #000;padding:3px 5px}.inv1c-items th{font-weight:700;text-align:center;background:#efefef;-webkit-print-color-adjust:exact;print-color-adjust:exact}.inv1c .n{text-align:right;white-space:nowrap}.inv1c .c{text-align:center}.inv1c .inv1c-totals{width:auto;margin:6px 0 0 auto}.inv1c-totals td{border:none;padding:2px 5px;font-weight:700;text-align:right}.inv1c-totals .grand td{font-size:13px}.inv1c-summary{margin-top:10px}.inv1c-words{font-weight:700;margin-top:2px;padding-bottom:8px;border-bottom:2px solid #000}.inv1c-notes{margin-top:8px}.inv1c-signatures{display:flex;gap:48px;margin-top:26px}.inv1c-signatures .sig-title{font-weight:700;margin-bottom:4px}.inv1c-signatures .sig-line{display:flex;align-items:flex-end;gap:6px;margin-top:10px}.inv1c-signatures .sig-line .fill{flex:1;border-bottom:1px solid #000;min-height:15px}.inv1c-signatures>div{flex:1}.inv1c-signatures .line{border-bottom:1px solid #000;height:24px}.inv1c-signatures .name{font-size:11px;text-align:center;color:#333}.inv1c-signatures.four{gap:18px}.inv1c-signatures.four .sig-title{font-size:11px}.inv1c .fill-cell{min-width:90px}.inv1c .blank-row{display:flex;gap:40px;margin-top:12px}.inv1c .blank-field{flex:1;display:flex;align-items:flex-end;gap:6px}.inv1c .blank-field .fill{flex:1;border-bottom:1px solid #000;min-height:15px}.inv1c .blank-box{margin-top:14px;padding:8px 10px 10px;border:1px solid #000}.inv1c .blank-box-title{font-weight:700}.inv1c .blank-box .blank-row{margin-top:8px}.inv1c-stamp{margin-top:16px}.inv1c{position:relative}.inv1c-cancelled{position:absolute;top:38%;left:50%;transform:translate(-50%,-50%) rotate(-16deg);font-size:54px;font-weight:800;letter-spacing:2px;color:#b4231833;border:6px solid rgba(180,35,24,.2);padding:4px 28px;white-space:nowrap;pointer-events:none;-webkit-print-color-adjust:exact;print-color-adjust:exact}.badge.cancelled{background:#fee4e2;color:#b42318}.cancel-panel{border:1px solid #fda29b;background:#fffbfa;border-radius:8px;padding:12px;margin:8px 0;max-width:460px}button.danger{background:var(--danger);border-color:var(--danger)}button.danger-outline{color:var(--danger);border-color:#fda29b}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;margin-bottom:16px}.kpi-tile{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:14px 16px}.kpi-tile.hero{grid-column:span 2}.kpi-label{font-size:13px;color:var(--muted)}.kpi-value{font-size:24px;font-weight:600;margin-top:4px;color:var(--text)}.kpi-tile.hero .kpi-value{font-size:48px;line-height:1.1}.kpi-sub{font-size:12px;color:var(--muted);margin-top:4px}.dash-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px}.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.chart-wrap{position:relative}.chart-tooltip{position:absolute;top:0;transform:translate(-50%);background:var(--brand-navy-dark);color:#fff;font-size:12px;padding:6px 10px;border-radius:6px;pointer-events:none;white-space:nowrap}.status-note{display:flex;align-items:center;gap:8px;font-size:13px;padding:8px 10px;border-radius:6px;margin-bottom:8px}.status-note.warning{background:#fffaeb;color:#93370d}.status-note.critical{background:#fef3f2;color:#b42318}.global-search{position:relative;padding:12px 12px 0}.global-search input{width:100%;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:#fff}.global-search input::placeholder{color:#aab4c5}.search-results{position:absolute;left:12px;top:calc(100% + 4px);width:min(400px,calc(100vw - 24px));max-height:70vh;overflow-y:auto;background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:8px;box-shadow:0 12px 32px #0b1a3a40;z-index:70;padding:6px 0}.search-group-label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);padding:8px 12px 4px}.search-item{display:block;width:100%;text-align:left;background:none;color:var(--text);border:0;border-radius:0;padding:7px 12px;font-size:14px}.search-item:hover,.search-item.active{background:#eef2f8}.search-item .sub,.notif-item .msg{display:block;font-size:12px;color:var(--muted);margin-top:2px}.search-empty{padding:12px 16px;font-size:13px;color:var(--muted)}.notif-button{margin:10px 12px 0;width:calc(100% - 24px);display:flex;align-items:center;gap:8px;background:#ffffff14;border:1px solid rgba(255,255,255,.16);color:#fff}.notif-count{margin-left:auto;min-width:20px;padding:0 6px;border-radius:999px;background:#b42318;color:#fff;font-size:12px;font-weight:700;line-height:20px;text-align:center}.notif-count.calm{background:#475467}.notif-topbar-button{position:relative;background:transparent;color:#fff;font-size:20px;min-width:44px;min-height:44px;padding:0}.notif-topbar-button .notif-count{position:absolute;top:2px;right:0}.notif-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0b1a3a59;z-index:80}.notif-panel{position:fixed;top:0;right:0;bottom:0;width:min(420px,92vw);background:var(--panel);color:var(--text);z-index:90;box-shadow:-8px 0 24px #0b1a3a4d;display:flex;flex-direction:column}.notif-panel header,.notif-panel footer{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border)}.notif-panel footer{border-bottom:0;border-top:1px solid var(--border);font-size:12px;color:var(--muted)}.notif-list{overflow-y:auto;flex:1}.notif-item{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;background:none;color:var(--text);border:0;border-bottom:1px solid var(--border);border-radius:0;padding:12px 16px;font-size:14px}.notif-item:hover{background:#f7f8fa}.notif-item .sev{font-size:12px;font-weight:700}.notif-item .sev.critical{color:#b42318}.notif-item .sev.warning{color:#b54708}.notif-item .sev.info{color:#1f4fa0}.permission-matrix th,.permission-matrix td{border:1px solid var(--border);padding:6px 8px}.permission-matrix thead th{position:sticky;top:0;background:var(--panel);z-index:2;font-size:12px}.permission-matrix tbody td:first-child,.permission-matrix thead th:first-child{position:sticky;left:0;background:var(--panel);z-index:1}.permission-matrix .group-row td{background:#eef2f8;font-weight:700;text-transform:uppercase;font-size:12px;letter-spacing:.4px}.permission-matrix .c{text-align:center}.permission-matrix input[type=checkbox]{width:18px;height:18px}.mobile-topbar,.sidebar-backdrop{display:none}.report-filters{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}@media (min-width: 901px) and (max-width: 1200px){.content{padding:20px}.sidebar{width:200px}}@media (max-width: 900px){.app-shell{flex-direction:column}.mobile-topbar{display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:30;background:var(--brand-navy-dark);color:#fff;padding:6px 12px;padding-top:max(6px,env(safe-area-inset-top))}.menu-toggle{background:transparent;color:#fff;font-size:22px;line-height:1;min-width:44px;min-height:44px;padding:0}.menu-toggle:hover{background:#ffffff1a}.mobile-title{flex:1;font-weight:600;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar{position:fixed;top:0;left:0;bottom:0;z-index:50;width:min(280px,82vw);overflow-y:auto;transform:translate(-100%);transition:transform .2s ease;padding-top:max(20px,env(safe-area-inset-top))}.app-shell.menu-open .sidebar{transform:translate(0);box-shadow:8px 0 24px #0b1a3a59}.app-shell.menu-open .sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#0b1a3a73}.sidebar nav a{padding:13px 16px;font-size:15px}.content{width:100%;max-width:100%;padding:14px 12px 32px}h2{font-size:20px}.panel{padding:14px}.form-grid,.report-filters{grid-template-columns:1fr}input,select,button{font-size:16px;min-height:44px}input[type=checkbox]{min-height:auto;width:20px;height:20px}.line-items-table input,.line-items-table select{min-width:110px}.panel>table,.content>table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}table{font-size:13px}th,td{padding:8px}.kpi-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.kpi-tile.hero{grid-column:1 / -1}.kpi-tile.hero .kpi-value{font-size:34px}.kpi-value{font-size:20px}.dash-grid{grid-template-columns:1fr}.login-card{width:calc(100vw - 32px);padding:24px 20px}.cancel-panel{max-width:100%}.inv1c{padding:14px}}@media (prefers-reduced-motion: reduce){.sidebar{transition:none}}@page{size:A4;margin:12mm}@media print{.inv1c{border:none;padding:0;max-width:100%}body *{visibility:hidden}.print-area,.print-area *{visibility:visible}.print-area{position:absolute;top:0;left:0;width:100%}.print-document{border:none;box-shadow:none;max-width:100%}.no-print{display:none!important}}.due-date-box{margin-top:12px;padding:12px 14px;border:1px solid #fcd34d;border-left:4px solid #f59e0b;border-radius:8px;background:#fffbeb}.due-date-title{font-size:13px;font-weight:600;color:#92400e;margin-bottom:8px}.permission-simple th.num,.permission-simple td.num{text-align:center;width:110px}.permission-simple td.permission-cell input[type=checkbox]{width:18px;height:18px;cursor:pointer}.permission-simple td.permission-cell.changed{background:#fef3c7}.permission-simple td.permission-cell.custom{background:#eef2f8}.permission-simple tr.permission-extra td{font-size:13px;color:var(--muted);background:#fafbfc}.permission-tag{margin-left:8px;padding:1px 6px;border-radius:10px;background:#e0e7ff;color:#3730a3;font-size:11px}.prod-steps{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.prod-step{padding:6px 12px;border-radius:20px;border:1px solid #e5e7eb;background:#f9fafb;font-size:13px;color:var(--muted);display:flex;align-items:center;gap:6px}.prod-step.done{background:#ecfdf5;border-color:#6ee7b7;color:#065f46}.prod-step.current{background:#fffbeb;border-color:#f59e0b;color:#92400e;font-weight:600}.prod-step-mark{font-size:12px}.prod-cost{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;margin:12px 0;padding:12px;border:1px solid #e5e7eb;border-radius:8px;background:#fafbfc}.prod-cost>div{display:flex;flex-direction:column;gap:2px}.prod-cost span{font-size:12px;color:var(--muted)}.prod-cost strong{font-size:15px}.qr-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172abf;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.qr-box{background:#fff;border-radius:12px;padding:16px;width:100%;max-width:420px}.qr-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.qr-video-wrap{position:relative;border-radius:10px;overflow:hidden;background:#000}.qr-video{width:100%;max-height:60vh;display:block;object-fit:cover}.qr-frame{position:absolute;top:18%;right:18%;bottom:18%;left:18%;border:3px solid rgba(255,255,255,.9);border-radius:10px;pointer-events:none}.qr-labels{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px}.qr-label{border:1px solid #d1d5db;border-radius:8px;padding:10px;text-align:center;break-inside:avoid}.qr-label .code{font-weight:700;font-size:14px;margin-top:6px}.qr-label .name{font-size:12px;color:#374151}@media print{.qr-labels{grid-template-columns:repeat(3,1fr)}}.notif-filter{display:flex;align-items:center;gap:6px;padding:8px 14px;font-size:13px;color:var(--muted);border-bottom:1px solid #e5e7eb}.notif-row{display:flex;align-items:stretch;border-bottom:1px solid #f1f5f9}.notif-row .notif-item{flex:1;border-bottom:none}.notif-row.read{opacity:.55}.notif-read-toggle{border:none;background:transparent;color:var(--muted);cursor:pointer;padding:0 12px;font-size:16px}.notif-read-toggle:hover{background:#f1f5f9;color:#0f172a}
