:root{--ink: #1B2430;--muted: #5C6B7A;--faint: #8A96A3;--line: #E3E7EC;--line-soft: #EFF1F5;--bg: #F7F8FA;--card: #FFFFFF;--row-hover: #F4F7FA;--menu-hover: #F2F5F9;--brand: #2F4B8F;--danger: #C43D3D;--danger-bg: #FAE7E7;--ok: #1E8E5A;--ok-bg: #E2F2EA;--amber: #A96A08;--amber-bg: #FAF0DD;--hue: var(--brand);--tint: #E9EBF7;--font-display: "Bricolage Grotesque", sans-serif;--font-mono: "IBM Plex Mono", monospace;--shadow-pop: 0 12px 32px rgba(27, 36, 48, .14)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:IBM Plex Sans,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--bg);font-size:14px;line-height:1.5}.topbar{height:56px;flex:none;background:var(--card);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 14px 0 10px;gap:6px;position:relative;z-index:50}.topbar-spacer{flex:1}.brand{display:flex;align-items:center;gap:9px;padding-left:8px;font-family:var(--font-display);font-weight:700;font-size:17px;color:var(--brand)}.brand-chip{display:inline-flex;width:24px;height:24px;border-radius:7px;background:var(--brand);color:#fff;align-items:center;justify-content:center;font-size:12px}.app-title{font-family:var(--font-display);font-weight:600;font-size:16px;padding:0 12px 0 4px}.iconbtn{width:36px;height:36px;border:none;background:transparent;border-radius:8px;cursor:pointer;font-size:18px;color:var(--muted);font-family:inherit;display:flex;align-items:center;justify-content:center}.iconbtn:hover{background:#edf0f3;color:var(--ink)}.avatar{width:32px;height:32px;border-radius:50%;border:none;background:var(--brand);color:#fff;font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center}.usermenu,.switcher-box{position:relative}.menu{position:absolute;top:40px;left:0;width:224px;background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-pop);padding:6px;z-index:80;animation:bzSlide .12s ease}.menu-right{left:auto;right:0}.switcher-box .menu{top:36px}.menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border:none;background:transparent;border-radius:7px;cursor:pointer;font-family:inherit;font-size:13.5px;font-weight:500;color:var(--ink);text-align:left;text-decoration:none}.menu-item:hover{background:var(--menu-hover);color:var(--ink)}.menu-dot{display:inline-flex;width:24px;height:24px;border-radius:7px;align-items:center;justify-content:center;font-size:13px;flex:none}.menu-foot{border-top:1px solid var(--line);margin-top:4px;border-radius:0 0 7px 7px;color:var(--muted);font-size:12.5px}.menu-head{padding:8px 10px 10px;border-bottom:1px solid var(--line);margin-bottom:4px}.menu-name{font-weight:600;font-size:13.5px}.menu-sub{font-size:12px;color:var(--faint)}.tabs{display:flex;gap:2px}.tab{border:none;cursor:pointer;font-family:inherit;font-size:13.5px;font-weight:500;padding:6px 12px;border-radius:7px;color:var(--muted);text-decoration:none}.tab:hover{color:var(--ink)}.tab.active{color:var(--hue);background:var(--tint)}.launcher-screen{height:100%;display:flex;flex-direction:column;animation:bzFade .18s ease}.launcher-scroll{flex:1;overflow:auto}.launcher{max-width:860px;margin:0 auto;padding:76px 24px 48px;display:grid;grid-template-columns:repeat(4,1fr);gap:48px 24px}@media (max-width: 760px){.launcher{grid-template-columns:repeat(2,1fr);padding-top:40px}}.tile{display:flex;flex-direction:column;align-items:center;gap:8px;cursor:pointer;text-decoration:none;color:var(--ink);transition:transform .15s ease,filter .15s ease}.tile:hover{transform:translateY(-2px);filter:drop-shadow(0 10px 16px rgba(27,36,48,.13));color:var(--ink)}.tile.soon{opacity:.45;cursor:default}.tile.soon:hover{transform:none;filter:none}.tile-icon{width:96px;height:96px;border-radius:22px;display:flex;align-items:center;justify-content:center;font-size:38px}.tile-name{font-family:var(--font-display);font-weight:600;font-size:15px}.tile-status{font-size:12.5px;color:var(--muted);text-align:center;min-height:19px}.workspace{height:100%;display:flex;flex-direction:column;animation:bzFade .18s ease}.wsmain{flex:1;overflow:auto;padding:20px 24px 40px;max-width:1100px;width:100%}h1{font-family:var(--font-display);font-size:20px;font-weight:600;margin:0 0 4px}.sub{color:var(--muted);margin:0 0 18px;font-size:13.5px}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:20px;margin-bottom:16px}label{display:block;font-weight:600;font-size:13px;margin:14px 0 6px;color:var(--ink)}label .hint{font-weight:400;color:var(--faint)}input,select{width:100%;max-width:420px;padding:9px 12px;font-size:14px;font-family:inherit;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink)}input::placeholder{color:var(--faint)}input:focus,select:focus{outline:none;border-color:var(--hue);box-shadow:0 0 0 2px var(--tint)}input[aria-invalid=true]{border-color:var(--danger)}.field-error{color:var(--danger);font-size:12.5px;margin-top:4px}button.primary{margin-top:20px;height:38px;padding:0 18px;font-size:13.5px;font-weight:600;font-family:inherit;background:var(--hue);color:#fff;border:none;border-radius:8px;cursor:pointer}button.primary:hover{filter:brightness(1.08)}button.primary:disabled{opacity:.45;cursor:not-allowed;filter:none}button.secondary{height:32px;padding:0 12px;font-size:13px;font-weight:500;font-family:inherit;background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:8px;cursor:pointer}button.secondary:hover{border-color:#c9d2dc;color:var(--ink)}.banner{padding:11px 14px;border-radius:9px;margin:14px 0;font-size:13.5px}.banner.error{background:var(--danger-bg);color:var(--danger);border:1px solid #F2CFCF}.banner.error a{color:var(--danger);font-weight:600;text-decoration:underline}.banner.ok{background:var(--ok-bg);color:var(--ok);border:1px solid #BFE5D2}.banner.draft-note{background:var(--amber-bg);color:var(--amber);border:1px solid #F0DFC0}table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600;padding:10px 12px;border-bottom:1px solid var(--line)}td{padding:10px 12px;border-bottom:1px solid var(--line-soft)}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}td.num{font-family:var(--font-mono);font-size:13px}tr:hover td{background:var(--row-hover)}tr.rowlink{cursor:pointer}.total-row td{font-weight:600;border-top:1px solid var(--line);border-bottom:none}.table-foot{padding:9px 4px 0;font-size:12.5px;color:var(--faint)}.empty{color:var(--faint);text-align:center;padding:32px 0;font-size:14px}.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.02em;white-space:nowrap}.badge.paid,.badge.submitted{background:var(--ok-bg);color:var(--ok)}.badge.partially_paid,.badge.unpaid{background:var(--amber-bg);color:var(--amber)}.badge.overdue{background:var(--danger-bg);color:var(--danger)}.badge.draft{background:#edf0f3;color:var(--muted)}.badge.cancelled{background:#edf0f3;color:var(--muted);text-decoration:line-through}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.btn-link{display:inline-block;height:34px;line-height:34px;padding:0 16px;font-size:13px;font-weight:600;background:var(--hue);color:#fff;border-radius:8px;text-decoration:none;white-space:nowrap}.btn-link:hover{filter:brightness(1.08);color:#fff}a.secondary.btn-link{background:#fff;color:var(--ink);border:1px solid var(--line);font-weight:500}a.secondary.btn-link:hover{border-color:#c9d2dc;color:var(--ink);filter:none}.login-wrap{display:grid;place-items:center;min-height:100%}.login-card{width:360px}.login-card h1{color:var(--brand)}pre.digest{background:#1b2430;color:#e8ebf2;padding:16px;border-radius:9px;white-space:pre-wrap;font-family:inherit;font-size:14px;line-height:1.5}.confirm-box{background:#fffbeb;border:1px solid #FDE68A;border-radius:9px;padding:14px;margin-top:16px;font-size:13.5px}.alloc-row{display:flex;gap:10px;align-items:center;margin:6px 0}.alloc-row .inv{flex:1;font-size:13.5px}.alloc-row input{max-width:140px}.line-row{display:flex;gap:10px;align-items:flex-start;padding:12px 0;border-bottom:1px solid var(--line-soft)}.line-row .grow{flex:1;min-width:220px}.line-row .grow input{max-width:none}.line-row .cell-qty input{max-width:90px}.line-row .cell-rate input{max-width:120px}.line-row .cell-disc input{max-width:70px}.cell-hint{display:block;font-size:11px;color:var(--faint);margin-top:2px}.line-amount{min-width:110px;text-align:right;font-weight:500;font-family:var(--font-mono);font-size:13px;padding-top:12px}.stock-badge{font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px;white-space:nowrap}.stock-badge.ok{background:var(--ok-bg);color:var(--ok)}.stock-badge.out{background:var(--danger-bg);color:var(--danger)}.stock-badge.svc{background:#e9ebf7;color:#4353a4}.stage-track{display:flex;gap:2px;background:#edf0f3;border-radius:999px;padding:2px;width:fit-content}.stage{font-size:12px;font-weight:600;padding:3px 14px;border-radius:999px;color:var(--faint)}.stage.current{background:var(--hue);color:#fff}.stage.past{color:var(--hue)}.rec-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:4px}.rec-title{font-family:var(--font-display);font-weight:600;font-size:22px}.rec-id{font-family:var(--font-mono);color:var(--faint);font-size:13px}.totals{margin-left:auto;max-width:360px;margin-top:16px}.totals .trow{display:flex;justify-content:space-between;padding:6px 0;font-size:13.5px;color:var(--muted)}.totals .trow span:last-child{font-family:var(--font-mono);font-size:13px;color:var(--ink)}.totals .grand{border-top:1px solid var(--line);font-weight:600;font-size:15px;padding-top:10px;color:var(--ink)}.totals .grand span:last-child{font-size:15px}.totals .words{color:var(--faint);font-size:12.5px;margin-top:8px;text-align:right;font-family:inherit}.row{display:flex;gap:16px;flex-wrap:wrap}.row>*{flex:1;min-width:200px}@keyframes bzFade{0%{opacity:0}to{opacity:1}}@keyframes bzSlide{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.print-sheet{display:none}@media print{body *{visibility:hidden}.print-sheet,.print-sheet *{visibility:visible}.print-sheet{display:block;position:absolute;left:0;top:0;width:100%;background:#fff;color:#000;font-size:12px;padding:8mm;font-family:Segoe UI,Roboto,sans-serif}.print-sheet .ps-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;border-bottom:2px solid #000;padding-bottom:8px}.print-sheet .ps-company{font-size:18px;font-weight:700}.print-sheet .ps-title{font-size:14px;font-weight:700;letter-spacing:2px}.print-sheet table{width:100%;border-collapse:collapse;margin-top:10px}.print-sheet .ps-meta td{border:1px solid #000;padding:4px 8px}.print-sheet .ps-billto{margin-top:10px;border:1px solid #000;padding:8px}.print-sheet .ps-lines th,.print-sheet .ps-lines td{border:1px solid #000;padding:4px 6px;text-align:left}.print-sheet .ps-lines th.num,.print-sheet .ps-lines td.num{text-align:right;font-variant-numeric:tabular-nums}.print-sheet .ps-totals{display:flex;justify-content:flex-end}.print-sheet .ps-totals table{width:45%;margin-top:8px}.print-sheet .ps-totals td{padding:3px 8px}.print-sheet .ps-totals td.num{text-align:right;font-variant-numeric:tabular-nums}.print-sheet .ps-grand td{border-top:2px solid #000;font-weight:700;font-size:14px}.print-sheet .ps-words{margin-top:8px}.print-sheet .ps-terms{margin-top:10px;font-size:11px;white-space:pre-wrap}.print-sheet .ps-sign{margin-top:36px;display:flex;flex-direction:column;align-items:flex-end;gap:40px}.print-sheet .ps-sign-space{border-top:1px solid #000;padding-top:4px}}
