:root{--navy: #223a5c;--navy-deep: #1a2d48;--amber: #e8a33d;--amber-soft: #fdf3e3;--paper: #faf8f4;--card: #ffffff;--ink: #26303d;--muted: #6b7686;--line: #e6e2da;--green: #2e7d54;--red: #b3453f;--red-soft: #fdecec}*{box-sizing:border-box}body{margin:0;font-family:DM Sans,system-ui,-apple-system,sans-serif;background:var(--paper);color:var(--ink);font-size:15px}.brand-title{font-family:"DM Serif Display",Georgia,serif;font-weight:400;color:var(--navy);margin:0;font-size:1.6rem}.muted{color:var(--muted)}.small{font-size:.82rem}.nomargin{margin:2px 0 0}.page{max-width:1600px;margin:0 auto;padding:20px 16px 60px}.center-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--paper)}.signin-card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:40px 44px;text-align:center;max-width:400px;box-shadow:0 4px 24px #223a5c14}.signin-card .brand-title{font-size:2rem;margin-bottom:8px}.topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap}.topbar-right{display:flex;align-items:center;gap:10px}.controls{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 14px}.controls label{display:flex;flex-direction:column;gap:4px}.controls label span{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:500}.controls label.grow{flex:1 1 200px;min-width:160px}.controls select,.controls input{font-family:inherit;font-size:.9rem;padding:7px 9px;border:1px solid var(--line);border-radius:7px;background:var(--card);color:var(--ink);min-width:130px}.controls select:focus,.controls input:focus{outline:2px solid rgba(34,58,92,.25);outline-offset:1px}.control-actions{display:flex;gap:8px;margin-left:auto}.btn{font-family:inherit;font-size:.9rem;padding:8px 14px;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:7px;cursor:pointer}.btn:hover:not(:disabled){border-color:var(--navy)}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--navy);border-color:var(--navy);color:#fff}.btn-primary:hover:not(:disabled){background:var(--navy-deep)}.btn-small{padding:7px 11px;font-size:.85rem}.summary{margin:10px 2px 8px}.error-banner{background:var(--red-soft);border:1px solid var(--red);color:var(--red);border-radius:8px;padding:10px 12px;margin-bottom:12px;font-size:.88rem}.grid-wrap{overflow:auto;max-height:calc(100vh - 250px);border:1px solid var(--line);border-radius:10px;background:var(--card);width:fit-content;max-width:100%}.grid{border-collapse:separate;border-spacing:0;font-size:.85rem;white-space:nowrap;table-layout:fixed;width:max-content}.grid th,.grid td{padding:5px 9px;border-bottom:1px solid var(--line);background:var(--card);overflow:hidden;text-overflow:ellipsis}.grid thead th{padding-right:12px}.col-grip{position:absolute;top:0;right:0;width:8px;height:100%;cursor:col-resize;touch-action:none;-webkit-user-select:none;user-select:none}.col-grip:after{content:"";position:absolute;top:20%;bottom:20%;right:3px;width:2px;border-radius:1px;background:transparent}.grid thead th:hover .col-grip:after{background:#ffffff73}.col-grip:hover:after,body.resizing .col-grip:after{background:var(--amber)!important}body.resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}.grid thead th{position:sticky;top:0;z-index:3;background:var(--navy);color:#fff;font-weight:500;font-size:.78rem;letter-spacing:.02em;text-align:right}.grid thead th.col-name,.grid thead th.col-notes{text-align:left}.col-name{position:sticky;left:0;z-index:2;text-align:left;overflow:hidden;text-overflow:ellipsis;border-right:1px solid var(--line)}.grid thead th.col-name{z-index:4}.col-notes{position:sticky;right:0;z-index:2;border-left:1px solid var(--line);white-space:normal}.grid thead th.col-notes{z-index:4}.col-num{text-align:right;font-variant-numeric:tabular-nums}.grid thead th.col-current{background:var(--amber);color:var(--navy-deep);font-weight:700}.row-client>td.col-current,.row-space>td.col-current{background:#fdf6e9}.row-market>td.col-current{background:#f7e3c2}.grid tfoot td.col-current{background:var(--navy-deep);box-shadow:inset 0 2px 0 var(--amber)}.col-total{position:sticky;right:var(--notes-w, 230px);z-index:2;font-weight:700;border-left:1px solid var(--line);background:#fbfaf7}.grid thead th.col-total{z-index:4}.row-market>td{background:var(--amber-soft);font-weight:700;color:var(--navy)}.row-market>td.col-total{background:#f7ead2}.row-client>td{font-weight:600}.row-space>td{color:var(--muted);font-size:.8rem;background:#fcfbf9}.row-space>td.col-total{background:#f8f6f2}.indent{padding-left:34px!important;font-weight:400}.grid tfoot td{position:sticky;bottom:0;z-index:3;background:var(--navy);color:#fff;font-weight:700;border-top:2px solid var(--navy-deep)}.grid tfoot td.col-name,.grid tfoot td.col-notes,.grid tfoot td.col-total{z-index:4}.grid tfoot td.col-total{background:var(--navy-deep)}.empty{color:var(--muted);padding:24px 12px!important;min-width:auto;max-width:none;position:static}.twisty{background:none;border:none;cursor:pointer;color:var(--muted);font-size:.8rem;padding:0 6px 0 0;line-height:1}.twisty:hover{color:var(--navy)}.name-cell{display:flex;align-items:center;min-width:0}.name-text{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip{flex:0 0 auto;display:inline-block;margin-left:7px;padding:1px 6px;border-radius:999px;font-size:.62rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;vertical-align:1px}.chip-canceled{background:var(--red-soft);color:var(--red)}.chip-expired{background:#fdf0dd;color:#9a6a1c}.chip-stale{background:#eef1f5;color:var(--muted)}.chip-renew{background:#e9f0fa;color:#2f5f9e}.note{display:flex;align-items:flex-start;gap:4px}.note textarea{flex:1;font-family:inherit;font-size:.8rem;line-height:1.35;color:var(--ink);border:1px solid transparent;border-radius:5px;padding:3px 5px;background:transparent;resize:vertical;min-height:26px;width:100%}.note textarea:hover{border-color:var(--line)}.note textarea:focus{outline:none;border-color:var(--navy);background:#fff;min-height:60px}.note-flag{font-size:.66rem;color:var(--muted);padding-top:6px;white-space:nowrap}.note-flag.ok{color:var(--green)}.note-flag.bad{color:var(--red)}
