:root{--bg:#0b2545;--panel:#13315c;--text:#eef4fb;--muted:#9fb3c8;--accent:#ffd60a}*{box-sizing:border-box}body,html{margin:0;height:100%;background:var(--bg);color:var(--text);font:16px/1.5 system-ui,-apple-system,Segoe UI,sans-serif}main.shell{max-width:42rem;margin:0 auto;padding:3rem 1.25rem}main.shell.center{display:grid;place-items:center;min-height:60vh}.card{background:var(--panel);border-radius:12px;padding:1.25rem 1.4rem;margin:1rem 0}.login{display:grid;grid-gap:.75rem;gap:.75rem;max-width:22rem}.login label{display:grid;grid-gap:.25rem;gap:.25rem;font-size:.9rem;color:var(--muted)}.login input{padding:.55rem .7rem;border-radius:8px;border:1px solid #274a77;background:#081a33;color:var(--text);font:inherit}.login button{padding:.6rem .8rem;border-radius:8px;border:0;background:var(--accent);color:#081a33;font-weight:600;cursor:pointer}.err{color:#ff6b6b;font-size:.9rem;min-height:1.2rem}.admin-layout{display:grid;grid-template-columns:14rem 1fr;min-height:100vh}.admin-nav{background:var(--panel);padding:1rem}.admin-nav h1{font-size:1rem;margin:.25rem 0 1rem}.admin-nav a{display:block;color:var(--text);text-decoration:none;padding:.35rem .5rem;border-radius:8px;font-size:.92rem}.admin-nav a:hover{background:#1b3f6e}.admin-nav a[data-active="1"]{background:#1b3f6e;box-shadow:inset 2px 0 var(--accent)}.admin-main{padding:2rem}.muted{color:var(--muted)}.badge{display:inline-block;background:#1b3f6e;border-radius:999px;padding:.1rem .6rem;font-size:.8rem;margin:.15rem}a:where(:not(.btn)){color:#c5def5;text-decoration:none}a:where(:not(.btn)):hover{color:var(--accent);text-decoration:underline}a:where(:not(.btn)):focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}@media (max-width:720px){.admin-layout{grid-template-columns:1fr}.admin-nav{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}}.toolbar{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;margin:.75rem 0 1rem}.toolbar .spacer{flex:1 1}table.grid{width:100%;border-collapse:collapse;font-size:.92rem}table.grid th{text-align:left;color:var(--muted);font-weight:600;padding:.4rem .55rem;border-bottom:1px solid #274a77;white-space:nowrap}table.grid td{padding:.45rem .55rem;border-bottom:1px solid #1b3f6e;vertical-align:top}table.grid tr:hover td{background:#10294a}table.grid tr[data-selected="1"] td{background:#10294a;box-shadow:inset 3px 0 0 var(--accent)}td.actions{white-space:nowrap;text-align:right}.btn{padding:.4rem .75rem;border-radius:8px;border:1px solid #274a77;background:#16355f;color:var(--text);font:inherit;font-size:.88rem;cursor:pointer}.btn:hover{background:#1b3f6e}.btn:disabled{opacity:.45;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:#081a33;font-weight:600}.btn.primary:hover{filter:brightness(1.08)}.btn.danger{background:#5c1a1a;border-color:#7a2b2b}.btn.small{padding:.15rem .5rem;font-size:.8rem}a.btn{text-decoration:none;display:inline-block}.field{display:grid;grid-gap:.25rem;gap:.25rem;font-size:.9rem;color:var(--muted)}.field input,.field select,.field textarea{padding:.5rem .65rem;border-radius:8px;border:1px solid #274a77;background:#081a33;color:var(--text);font:inherit}.field select[multiple]{min-height:6rem}.checkboxline{display:flex;align-items:center;gap:.5rem;font-size:.9rem;color:var(--text)}.modal-backdrop{position:fixed;inset:0;background:rgba(4,12,26,.72);display:grid;place-items:center;z-index:20;padding:1rem}.modal{background:var(--panel);border-radius:12px;padding:1.25rem 1.4rem;width:min(34rem,96vw);max-height:90vh;overflow:auto;scrollbar-gutter:stable}.modal h3{margin:0 0 .75rem}.modal .modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem}.notice{background:#10294a;border-left:3px solid var(--accent);border-radius:8px;padding:.55rem .8rem;margin:.6rem 0;font-size:.9rem}.notice.err{border-left-color:#ff6b6b}.diffpanel{font-size:.9rem}.diffpanel code{background:#081a33;border-radius:6px;padding:.05rem .35rem}.permgroup{margin:.65rem 0}.permgroup h4{margin:.2rem 0;font-size:.85rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.permline{display:flex;align-items:baseline;gap:.5rem;padding:.12rem 0;font-size:.9rem}.permline .code{font-family:ui-monospace,Cascadia Code,monospace;min-width:16rem}.permline .desc{color:var(--muted);font-size:.82rem}.permline.granted .code{color:var(--accent)}.token{font-family:ui-monospace,monospace;word-break:break-all;background:#081a33;border-radius:8px;padding:.5rem .7rem;font-size:.82rem}.pill{display:inline-block;border-radius:999px;padding:.05rem .55rem;font-size:.78rem;background:#1b3f6e}.pill.active{background:#14532d}.pill.suspended{background:#5c1a1a}.pill.pending_invite{background:#6b4d12}.pill.locked{background:#5c1a1a}.pill.add{background:#14532d}.pill.remove{background:#5c1a1a}.pill.change{background:#6b4d12}.mono{font-family:ui-monospace,Cascadia Code,monospace}.floor-canvas{position:relative;height:34rem;overflow:auto;background:#081a33;border-radius:12px;background-image:linear-gradient(90deg,#123156 1px,transparent 0),linear-gradient(180deg,#123156 1px,transparent 0);background-size:26px 26px;touch-action:none}.floor-tile{position:absolute;display:flex;align-items:center;justify-content:center;gap:4px;border:2px solid;border-radius:8px;font-size:.8rem;color:var(--text);-webkit-user-select:none;-moz-user-select:none;user-select:none}.floor-tile.grab{cursor:-webkit-grab;cursor:grab}.floor-tile .seats,.floor-tile.round{border-radius:999px}.floor-tile .seats{position:absolute;top:1px;right:4px;font-size:.66rem;background:rgba(0,0,0,.35);padding:0 .35rem}.floor-tile .state{position:absolute;bottom:1px;left:4px;font-size:.62rem;color:var(--muted)}.floor-tile .grip{position:absolute;right:-3px;bottom:-3px;width:12px;height:12px;background:var(--accent);border-radius:4px;cursor:nwse-resize}.tone-free{background:#1b3f6e;border-color:#2c5a94}.tone-open{background:#14532d;border-color:#1f7a45}.tone-reserved{background:#6b4d12;border-color:#9a731f}.tone-dirty{background:#5c1a1a;border-color:#8f2f2f}.legend{display:inline-flex;align-items:center;gap:.35rem;font-size:.78rem;color:var(--muted)}.legend .dot{display:inline-block;width:10px;height:10px;border-radius:3px;border:1px solid;margin:0 .15rem 0 .5rem}.pos-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));grid-gap:10px;gap:10px;margin:.5rem 0 1rem}.pos-tile{position:relative;min-height:84px;padding:.6rem;display:flex;align-items:center;justify-content:center;border:2px solid;border-radius:10px;font:inherit;font-size:.9rem;color:var(--text);cursor:pointer}.pos-tile.striped{box-shadow:inset 4px 0 0 var(--accent)}.pos-tile .seats{position:absolute;top:3px;right:5px;font-size:.68rem;color:var(--muted)}.pos-tile .server{position:absolute;top:3px;left:6px;font-size:.66rem;color:var(--accent)}.pos-tile .total{position:absolute;bottom:3px;left:0;right:0;text-align:center;font-size:.78rem;color:var(--muted)}.pos-tile .dwell{position:absolute;bottom:3px;right:5px;font-size:.64rem}.pos-tile .dwell.warn{color:#ffb4b4;font-weight:700}.btn.ghost{background:transparent;border-color:transparent;color:var(--muted)}.btn.ghost:hover{color:var(--text);background:#123156}.pinpad{max-width:420px;margin:0 auto}.pin-staff{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));grid-gap:8px;gap:8px;margin-bottom:.75rem}.pin-tile{display:flex;flex-direction:column;align-items:center;gap:2px;min-height:72px;padding:.4rem;background:#123156;border:2px solid #1b3f6e;border-radius:10px;color:var(--text);font:inherit;cursor:pointer}.pin-tile.sel{border-color:var(--accent);background:#1b3f6e}.pin-initials{font-size:1.3rem;font-weight:700;color:var(--accent)}.pin-name{font-size:.78rem}.pin-dots{text-align:center;letter-spacing:.35em;min-height:1.4rem;font-size:1.1rem;margin:.35rem 0}.pin-keys{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px;gap:8px;margin:.5rem 0}.pin-key{min-height:48px;font-size:1.25rem}.pin-key.fn{font-size:1rem;color:var(--muted)}.pin-submit{width:100%;min-height:48px}.idle-overlay{position:fixed;inset:0;z-index:60;background:rgba(4,12,24,.92);display:grid;place-items:center;padding:1rem}.order-shell{max-width:1180px}.order-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:.5rem}.order-grid{display:grid;grid-template-columns:1.35fr 1fr;grid-gap:14px;gap:14px;align-items:start}@media (max-width:900px){.order-grid{grid-template-columns:1fr}}.order-rail input[type=search]{width:100%;min-height:44px;margin-bottom:8px}.cat-rail{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.cat-rail .btn{min-height:44px}.quick-row{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 8px}.quick-key{min-height:44px}.item-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));grid-gap:8px;gap:8px}.item-cell{position:relative;min-height:72px;padding:.5rem;display:flex;flex-direction:column;gap:2px;justify-content:center;background:#123156;border:2px solid #1b3f6e;border-radius:10px;color:var(--text);font:inherit;cursor:pointer;text-align:left}.item-cell:hover:not(:disabled){border-color:var(--accent)}.item-cell.is86{opacity:.45;cursor:default}.item-cell .item-name{font-weight:600}.item-cell .item-price{color:var(--muted);font-size:.85rem}.item-cell .item-opts{position:absolute;top:2px;right:8px;color:var(--accent)}.order-lines{position:-webkit-sticky;position:sticky;top:10px}.course-block{border-top:1px solid #1b3f6e;padding:4px 0}.course-head{margin:6px 0}.course-head,.line-row{display:flex;align-items:center;gap:8px}.line-row{flex-wrap:wrap;padding:4px 2px;border-radius:8px}.line-row.st-pending{opacity:.7;background:#10294a}.line-row.st-failed{background:#301414}.line-row.sent{opacity:.92}.line-row.voided{opacity:.6}.line-row.voided .line-name{text-decoration:line-through;color:var(--muted)}.pill.sentstate.voided{background:#5c1a1a;border-color:#8f2f2f}.line-main{display:flex;align-items:center;gap:6px;min-width:130px;flex:1 1}.line-name{font-weight:600}.line-hint{color:var(--muted);font-size:.78rem}.line-ops{display:flex;align-items:center;gap:4px}.btn.tiny{min-height:36px;min-width:36px;padding:.1rem .45rem;font-size:.82rem}.stepper{display:inline-flex;align-items:center;gap:4px;min-width:88px;justify-content:center}.pill.sentstate{background:#14532d;border-color:#1f7a45}.btn.tiny.on{border-color:var(--accent);color:var(--accent)}.btn.tiny.danger{color:#ff9c9c}.totals{border-top:2px solid #1b3f6e;margin-top:8px;padding-top:6px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.totals div{display:flex;justify-content:space-between;gap:1rem;padding:1px 2px}.totals .grand{font-weight:700;font-size:1.05rem}.totals .disc span:last-child{color:#9fe0b4}.totals .hintline{font-size:.8rem}.order-note textarea,.send-all{width:100%}.send-all{min-height:52px;margin-top:8px;font-size:1.05rem;font-weight:700}.opt-row{display:flex;align-items:center;gap:8px;min-height:40px}.opt-row input{width:22px;height:22px}.opt-row .opt-name{flex:1 1}.opt-row .opt-delta{color:var(--muted);font-size:.82rem}fieldset{border:1px solid #1b3f6e;border-radius:8px;margin:0 0 8px;padding:4px 10px}legend{font-size:.8rem;color:var(--muted);padding:0 4px}.ops-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 0 8px}.ops-bar .btn{min-height:40px}.pick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));grid-gap:8px;gap:8px;margin:8px 0}.pick-cell{position:relative;min-height:72px;padding:.5rem;display:flex;flex-direction:column;gap:2px;justify-content:center;align-items:flex-start;background:#123156;border:2px solid #1b3f6e;border-radius:10px;color:var(--text);font:inherit;cursor:pointer;text-align:left}.pick-cell.sel{border-color:var(--accent)}.pick-cell:disabled{opacity:.4;cursor:default}.pick-cell .seats{color:var(--muted);font-size:.78rem}.reason-row{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}.reason-row .btn{min-height:44px}.qty-input{width:5rem;min-height:40px;background:#081a33;color:var(--text);border:1px solid #1b3f6e;border-radius:8px;padding:.2rem .4rem;font:inherit}.sep{border:0;border-top:1px solid #1b3f6e;margin:10px 0}.disc-amt{color:#9fe0b4;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.amount-pad{margin:.5rem 0}.amount-display{width:100%;min-height:48px;font-size:1.4rem;text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.pad-keys{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:6px;gap:6px;margin:.5rem 0}.pad-key{min-height:48px;font-size:1.2rem}.pad-key.fn{font-size:1rem;color:var(--muted)}.quick-denoms{display:flex;flex-wrap:wrap;gap:6px;margin:.5rem 0}.quick-denoms .btn{min-height:44px}.btn.denom{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.btn.method.sel,.btn.tip.sel{border-color:var(--accent);background:#1b3f6e}.method-row{display:flex;flex-wrap:wrap;gap:6px;margin:.5rem 0}.method-row .btn.method{min-height:44px;display:inline-flex;align-items:center;gap:6px}.pay-due{display:flex;gap:1.25rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;margin-bottom:.5rem}.pay-due .due{color:#ffd479}.btn.settle{width:100%;min-height:52px;margin-top:8px;font-size:1.05rem;font-weight:700}.cash-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:10px;gap:10px;margin-bottom:.75rem}.cash-grid>div{display:flex;flex-direction:column;gap:2px}.cash-actions{display:flex;flex-wrap:wrap;gap:8px}.denom-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-gap:8px;gap:8px;margin:.5rem 0}.denom-row{display:flex;align-items:center;gap:8px}td.warn{color:#ffb4b4;font-weight:700}td.ok{color:#9fe0b4}.th-sort{background:none;border:0;color:inherit;font:inherit;cursor:pointer;padding:0}@media print{body{background:#fff!important;color:#000!important}.cat-rail,.no-print,[data-testid=reports-csv],[data-testid=reports-dates],[data-testid=reports-print],header.topbar,nav{display:none!important}main.shell{padding:0!important;max-width:none!important}.card{border:none!important;box-shadow:none!important;page-break-inside:avoid;break-inside:avoid}.card,table.grid td,table.grid th{background:#fff!important;color:#000!important}table.grid td,table.grid th{border:1px solid #444!important;padding:3px 8px!important}.pill{border:1px solid #666!important;color:#000!important}.muted{color:#333!important}a,h2,h3{color:#000!important}a{text-decoration:none}}.right{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.danger-text{color:#ff6b6b}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:8px 12px;gap:8px 12px;margin:8px 0}.linklike{background:none;border:0;padding:0;color:inherit;font:inherit;text-decoration:underline;cursor:pointer;min-height:0}.subpanel{margin-top:6px;padding:6px 8px;background:#10294a;border-radius:8px}ul.tree{list-style:none;padding-left:0;margin:6px 0}ul.tree ul{list-style:none;padding-left:1.25rem;margin:2px 0}.csv-input{width:100%;font-family:ui-monospace,Cascadia Code,monospace;font-size:.8rem;background:#0b1f39;color:var(--fg);border:1px solid #274a77;border-radius:8px;padding:8px}.err.list{margin:8px 0;padding-left:1.2rem;min-height:0}table.grid.tight td,table.grid.tight th{padding:.25rem .5rem;font-size:.86rem}@media print{.csv-input,.grid2{background:#fff!important;color:#000!important}}.pill.ok{background:#14532d}.pill.warn{background:#6b4d12}.pill.info{background:#143a5c}.pill.muted{background:#2a2f37}.warn-text{color:#ffb4b4;font-weight:700}.po-doc{display:none}@media print{body.printing-po>*{visibility:hidden}.po-doc{visibility:visible;display:block;position:absolute;top:0;left:0;width:100%;padding:1.5rem;background:#fff;color:#000}.po-doc table.grid td,.po-doc table.grid th{border:1px solid #444!important;color:#000!important;background:#fff!important}}