:root{--navy:#0f172a;--ink:#1e293b;--mute:#64748b;--line:#e2e8f0;--bg:#f4f6f8;--card:#fff;--green:#2f7f08;--green-soft:#e9f6e1;--blue:#3b8ac4;--red:#c62828;--radius:14px;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased}body{min-height:100vh}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}.brand{letter-spacing:-.02em;align-items:center;gap:10px;font-size:17px;font-weight:800;display:flex}.brand-dot{background:#40ad0a;border-radius:7px;width:22px;height:22px;display:inline-block}.brand small{letter-spacing:.06em;color:#94a3b8;text-transform:uppercase;font-size:11px;font-weight:500;display:block}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:14px;padding:16px}.card-title{letter-spacing:.12em;text-transform:uppercase;color:var(--mute);justify-content:space-between;align-items:center;margin-bottom:12px;font-size:12px;font-weight:800;display:flex}.grid{gap:12px;display:grid}.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:1fr 1fr 1fr}@media (max-width:520px){.g2{grid-template-columns:1fr}.g3{grid-template-columns:1fr 1fr}.g3>.span-all,.g3>.span-all-sm{grid-column:1/-1}}label.f{color:var(--ink);flex-direction:column;gap:6px;font-size:13px;font-weight:600;display:flex}label.f>span.hint{color:var(--mute);font-size:12px;font-weight:500}.input,.select,.textarea{border:1.5px solid var(--line);background:#fff;border-radius:10px;outline:none;width:100%;padding:12px;font-size:16px;transition:border-color .15s}.input:focus,.select:focus,.textarea:focus{border-color:var(--blue)}.input.num{text-align:right;font-variant-numeric:tabular-nums}.textarea{resize:vertical;min-height:150px;line-height:1.5}.readout{background:var(--bg);text-align:right;font-variant-numeric:tabular-nums;border-radius:10px;justify-content:flex-end;align-items:center;min-height:48px;padding:12px;font-size:16px;font-weight:700;display:flex}.readout small{color:var(--mute);margin-right:auto;font-size:12px;font-weight:500}.seg{background:var(--bg);border-radius:10px;gap:3px;padding:3px;display:inline-flex}.seg button{color:var(--mute);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:8px 12px;font-size:13px;font-weight:700}.seg button.on{color:var(--ink);background:#fff;box-shadow:0 1px 3px #0f172a1f}.switch{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;display:flex}.switch input{appearance:none;cursor:pointer;background:#cbd5e1;border-radius:100px;flex:none;width:46px;height:28px;transition:background .2s;position:relative}.switch input:after{content:"";background:#fff;border-radius:50%;width:22px;height:22px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #00000040}.switch input:checked{background:var(--green)}.switch input:checked:after{transform:translate(18px)}.item{border:1.5px solid var(--line);border-radius:12px;margin-bottom:12px;padding:14px}.item-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.item-no{font-family:var(--mono);color:var(--mute);font-size:12px;font-weight:700}.item-amt{border-top:1px dashed var(--line);justify-content:space-between;align-items:baseline;margin-top:12px;padding-top:10px;display:flex}.item-amt b{font-variant-numeric:tabular-nums;font-size:18px}.btn{cursor:pointer;white-space:nowrap;border:0;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:13px 18px;font-size:15px;font-weight:800;display:inline-flex}.btn:disabled{opacity:.55;cursor:default}.btn-primary{background:var(--navy);color:#fff}.btn-green{color:#fff;background:#1fa855}.btn-ghost{color:var(--ink);border:1.5px solid var(--line);background:#fff}.btn-text{color:var(--blue);background:0 0;padding:8px 4px;font-weight:700}.btn-danger-text{color:var(--red);background:0 0;padding:6px 4px;font-size:13px;font-weight:700}.btn-block{width:100%}.btn-new{color:#fff;background:#40ad0a;padding:11px 16px}.bar{z-index:30;border-top:1px solid var(--line);background:#fff;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -8px 24px #0f172a0f}.bar-in{max-width:760px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));align-items:center;gap:10px;margin:0 auto;display:flex}.bar-total{margin-right:auto}.bar-total small{letter-spacing:.1em;text-transform:uppercase;color:var(--mute);font-size:11px;font-weight:700;display:block}.bar-total b{font-variant-numeric:tabular-nums;font-size:20px}@media (max-width:520px){.bar-in{flex-wrap:wrap}.bar-total{width:100%}.bar-in .btn{flex:1;padding:12px 10px;font-size:14px}}.sum-row{font-variant-numeric:tabular-nums;justify-content:space-between;padding:6px 0;display:flex}.sum-row.grand{border-top:1.5px solid var(--ink);margin-top:6px;padding-top:10px;font-size:17px;font-weight:800}.words{color:var(--mute);margin-top:8px;font-size:13px}.empty{text-align:center;color:var(--mute);padding:48px 16px}.empty b{color:var(--ink);margin-bottom:6px;font-size:18px;display:block}.toast{background:var(--navy);color:#fff;z-index:50;border-radius:10px;padding:10px 16px;font-size:14px;font-weight:700;position:fixed;bottom:110px;left:50%;transform:translate(-50%)}.err{color:var(--red);font-size:12px;font-weight:600}:root{--side:248px;--amber:#b26a00;--amber-soft:#fff4e0;--red-soft:#fdecec;--blue-soft:#e7f1fa}.muted{color:var(--mute)}.small{font-size:12px}.center{text-align:center}.right{justify-content:flex-end;display:flex}.mono{font-family:var(--mono)}.mt{margin-top:14px}.mt-s{margin-top:8px}.mb{margin-bottom:12px}.mb-s{margin-bottom:8px}.link{color:var(--blue);font-weight:700}.ok-msg{color:var(--green);font-size:13px;font-weight:600}.alert{background:var(--red-soft);color:var(--red);border:1px solid #f5c2c2;border-radius:10px;margin-bottom:14px;padding:12px 14px;font-size:14px;font-weight:600}.ok-box{background:var(--green-soft);color:var(--green);border:1px solid #c9e8b8;border-radius:10px;padding:12px 14px;font-size:14px;font-weight:600}.warn{background:var(--amber-soft);color:var(--amber);border-radius:10px;padding:10px 12px;font-size:13px;font-weight:600}.code{background:var(--navy);color:#e2e8f0;font-family:var(--mono);white-space:pre;border-radius:10px;padding:14px;font-size:13px;overflow-x:auto}.textarea.short{min-height:84px}.input.bare{background:0 0;border-color:#0000;padding:6px 8px;font-weight:700}.input.bare:focus{border-color:var(--line);background:#fff}.readout.bad{background:var(--red-soft);color:var(--red)}.btn-sm{border-radius:10px;padding:8px 12px;font-size:13px}.icon-btn{width:36px;height:36px;color:var(--mute);cursor:pointer;background:0 0;border:0;border-radius:8px;flex:none;font-size:22px;line-height:1}.icon-btn:hover{background:var(--bg);color:var(--red)}.check{cursor:pointer;align-items:center;gap:8px;font-size:13px;font-weight:600;display:inline-flex}.check input{width:18px;height:18px;accent-color:var(--navy)}.skeleton{border-radius:var(--radius);background:linear-gradient(90deg,#e9edf2 25%,#f4f6f8 50%,#e9edf2 75%) 0 0/200% 100%;height:120px;animation:1.2s infinite shimmer}.skeleton.tall{height:100%;min-height:600px}@keyframes shimmer{to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.skeleton{animation:none}}.chips{flex-wrap:wrap;gap:8px;display:flex}.chips button{border:1.5px solid var(--line);color:var(--mute);cursor:pointer;background:#fff;border-radius:100px;padding:8px 14px;font-size:14px;font-weight:700}.chips button.on{background:var(--navy);border-color:var(--navy);color:#fff}.seg-lg{display:flex}.seg-lg button{flex:1;padding:11px 12px;font-size:14px}.quick{flex-wrap:wrap;gap:6px;display:flex}.card-title-r{letter-spacing:0;text-transform:none;color:var(--mute);font-size:12px;font-weight:700}.card-title .badge{letter-spacing:0}.badge{letter-spacing:.02em;vertical-align:middle;white-space:nowrap;border-radius:100px;align-items:center;padding:3px 9px;font-size:11px;font-weight:800;display:inline-flex}.badge.t-quotation{background:var(--blue-soft);color:#22679b}.badge.t-estimate{color:#334155;background:#eef0f4}.badge.t-bill{color:#6b3fa0;background:#f1e9fb}.badge.s-unpaid{background:var(--red-soft);color:var(--red)}.badge.s-partial{background:var(--amber-soft);color:var(--amber)}.badge.s-paid{background:var(--green-soft);color:var(--green)}.auth{flex-direction:column;justify-content:center;align-items:center;gap:18px;min-height:100vh;padding:32px 16px;display:flex}.auth-card{border:1px solid var(--line);background:#fff;border-radius:18px;width:100%;max-width:420px;padding:28px 24px;box-shadow:0 12px 40px #0f172a0f}.auth-card.wide{max-width:640px}.auth-brand{letter-spacing:-.02em;align-items:center;gap:10px;margin-bottom:20px;font-weight:800;display:flex}.auth-title{letter-spacing:-.02em;font-size:22px}.auth-links{flex-wrap:wrap;justify-content:space-between;gap:12px;font-size:14px;display:flex}.auth-links a{color:var(--blue);font-weight:700}.auth-foot{color:var(--mute);text-align:center;max-width:420px;font-size:12px}.steps{flex-wrap:wrap;gap:8px;margin-bottom:18px;display:flex}.steps span{background:var(--bg);color:var(--mute);border-radius:100px;padding:6px 10px;font-size:12px;font-weight:700}.steps span.on{background:var(--navy);color:#fff}.steps span.done{background:var(--green-soft);color:var(--green)}.brand-pick{border:1.5px solid var(--line);border-radius:12px;align-items:flex-start;gap:14px;padding:12px;display:flex}.brand-pick-img{border:1px solid var(--line);border-radius:10px;flex:none;justify-content:center;align-items:center;width:96px;height:96px;display:flex;overflow:hidden}.brand-pick-img img{object-fit:contain;max-width:100%;max-height:100%}.checker{background-color:#fff;background-image:linear-gradient(45deg,#eef1f5 25%,#0000 25%),linear-gradient(-45deg,#eef1f5 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#eef1f5 75%),linear-gradient(-45deg,#0000 75%,#eef1f5 75%);background-position:0 0,0 7px,7px -7px,-7px 0;background-size:14px 14px}.brand-pick-body{flex-direction:column;gap:6px;min-width:0;font-size:14px;display:flex}.brand-pick-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:4px;display:flex}.brand-pick-actions input[type=file]{display:none}.list-ed{flex-direction:column;gap:8px;display:flex}.list-ed-row{align-items:center;gap:8px;display:flex}.list-ed-n{font-family:var(--mono);color:var(--mute);text-align:right;flex:none;width:22px;font-size:12px;font-weight:700}.list-ed>.btn-text{align-self:flex-start}.shell{min-height:100vh}.main{min-width:0}.side{width:var(--side);background:var(--navy);color:#cbd5e1;z-index:40;flex-direction:column;padding:18px 12px;display:flex;position:fixed;inset:0 auto 0 0;overflow-y:auto}.side-brand{color:#fff;letter-spacing:-.02em;align-items:center;gap:10px;padding:4px 8px 20px;font-weight:800;display:flex}.side-brand small{color:#94a3b8;letter-spacing:0;white-space:nowrap;text-overflow:ellipsis;max-width:170px;font-size:12px;font-weight:500;display:block;overflow:hidden}.side-nav{flex-direction:column;flex:1;gap:2px;display:flex}.side-nav a,.side-logout{color:#cbd5e1;cursor:pointer;text-align:left;background:0 0;border:0;border-radius:10px;align-items:center;gap:12px;width:100%;padding:11px 12px;font-size:14px;font-weight:600;display:flex}.side-nav a svg,.side-logout svg{opacity:.8;flex:none}.side-nav a:hover,.side-logout:hover{color:#fff;background:#ffffff0f}.side-nav a.on{color:#fff;background:#40ad0a29}.side-nav a.on svg{color:#6fd43a;opacity:1}.side-logout{margin-top:auto}.mbar,.side-scrim{display:none}@media (min-width:901px){.main{margin-left:var(--side)}.shell .bar{left:var(--side)}}@media (max-width:900px){.mbar{z-index:30;background:var(--navy);color:#fff;align-items:center;gap:10px;padding:10px 12px;display:flex;position:sticky;top:0}.mbar-btn{color:#fff;cursor:pointer;background:0 0;border:0;border-radius:10px;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.mbar-title{white-space:nowrap;text-overflow:ellipsis;flex:1;font-weight:800;overflow:hidden}.mbar-new{color:#fff;background:#40ad0a;border-radius:10px;justify-content:center;align-items:center;width:40px;height:40px;font-size:24px;font-weight:700;display:flex}.side{transition:transform .2s;transform:translate(-100%)}.side.open{transform:none;box-shadow:0 0 40px #0000004d}.side-scrim{z-index:35;background:#0f172a73;display:block;position:fixed;inset:0}}.page{max-width:1040px;margin:0 auto;padding:24px 20px 140px}.page.narrow{max-width:760px}.page-head{justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:18px;display:flex}.page-head h1{letter-spacing:-.02em;flex-wrap:wrap;align-items:center;gap:8px;font-size:26px;line-height:1.2;display:flex}.crumb{color:var(--mute);margin-bottom:4px;font-size:13px}.crumb a{color:var(--blue);font-weight:700}@media (max-width:520px){.page{padding:16px 14px 150px}.page-head h1{font-size:22px}}.tiles{grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px;display:grid}@media (max-width:1100px){.tiles{grid-template-columns:1fr 1fr}}.tile{border-radius:var(--radius);border:1px solid var(--line);background:#fff;flex-direction:column;gap:4px;padding:18px 16px 40px;transition:border-color .15s,transform .15s;display:flex;position:relative}.tile:hover{border-color:#cbd5e1;transform:translateY(-1px)}.tile b{font-size:16px}.tile span{color:var(--mute);font-size:13px}.tile i{font-style:normal;font-weight:800;position:absolute;bottom:14px;left:16px}.tile.t-calc{background:var(--navy);border-color:var(--navy);color:#fff}.tile.t-calc span{color:#94a3b8}.tile.t-calc i{color:#6fd43a}.tile.t-quotation i{color:#22679b}.tile.t-estimate i{color:#334155}.tile.t-bill i{color:#6b3fa0}.filters{flex-direction:column;gap:10px;margin-bottom:14px;display:flex}.doc-list{flex-direction:column;gap:10px;display:flex}.doc-list+.btn{margin-top:12px}.doc-row{border:1px solid var(--line);background:#fff;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.doc-row:hover{border-color:#cbd5e1}.doc-list.compact .doc-row{border-radius:10px;padding:12px 14px}.doc-row-l{min-width:0}.doc-row-top{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.doc-row-top .num{color:var(--blue);margin-right:2px;font-size:13px;font-weight:700}.doc-row-name{white-space:nowrap;text-overflow:ellipsis;margin-top:3px;font-weight:700;overflow:hidden}.doc-row-r{text-align:right;font-variant-numeric:tabular-nums;flex-direction:column;flex:none;gap:2px;display:flex}.calc-out{border-top:1px dashed var(--line);justify-content:space-between;gap:12px;margin-top:12px;padding-top:10px;display:flex}.calc-out span{flex-direction:column;display:flex}.calc-out span:last-child{text-align:right}.calc-out small{letter-spacing:.08em;text-transform:uppercase;color:var(--mute);font-size:11px;font-weight:700}.calc-out b{font-variant-numeric:tabular-nums;font-size:18px}.calc-total,.btn-block+.calc-total{margin-top:14px}.grid.tight{gap:8px}@media (max-width:520px){.grid.g3.tight{grid-template-columns:1fr}}.editor{max-width:760px}.editor.with-preview{grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);align-items:start;gap:24px;max-width:1480px;display:grid}.editor-preview{position:sticky;top:16px}.preview-frame{border-radius:var(--radius);border:1px solid var(--line);background:#fff;height:calc(100vh - 122px);min-height:600px;overflow:hidden}.preview-frame iframe{border:0;width:100%;height:100%;display:block}.doc-grid{grid-template-columns:340px minmax(0,1fr);align-items:start;gap:20px;display:grid}.doc-side{position:sticky;top:16px}.doc-preview{border-radius:var(--radius);border:1px solid var(--line);background:#fff;height:calc(100vh - 150px);min-height:640px;overflow:hidden}.doc-preview iframe{border:0;width:100%;height:100%;display:block}.actions{gap:8px;display:grid}.doc-view{max-width:1280px;padding-bottom:40px}@media (max-width:900px){.doc-grid{grid-template-columns:1fr}.doc-side{position:static}.doc-preview{height:75vh;min-height:480px}}
