:root{color-scheme:light;--background: #ffffff;--foreground: #31383c;--card: color-mix(in srgb, #8b8b8b 8%, #ffffff);--card-foreground: #31383c;--popover: #ffffff;--popover-foreground: #31383c;--primary: #016394;--primary-hover: color-mix(in srgb, #016394 86%, #000000);--primary-foreground: #ffffff;--secondary: color-mix(in srgb, #8b8b8b 18%, #ffffff);--secondary-foreground: #31383c;--muted: color-mix(in srgb, #8b8b8b 16%, #ffffff);--muted-foreground: #8b8b8b;--accent: color-mix(in srgb, #016394 12%, #ffffff);--accent-foreground: #016394;--destructive: #c0362c;--destructive-foreground: #ffffff;--success: #1f7a44;--success-foreground: #ffffff;--warning: #a56400;--warning-foreground: #ffffff;--info: #016394;--info-foreground: #ffffff;--border: color-mix(in srgb, #8b8b8b 36%, #ffffff);--input: color-mix(in srgb, #8b8b8b 48%, #ffffff);--ring: #016394;--overlay: color-mix(in srgb, #31383c 55%, transparent);--font-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif}.dark{color-scheme:dark;--background: #000000;--foreground: #ffffff;--card: #31383c;--card-foreground: #ffffff;--popover: #31383c;--popover-foreground: #ffffff;--primary: #016394;--primary-hover: color-mix(in srgb, #016394 82%, #ffffff);--primary-foreground: #ffffff;--secondary: color-mix(in srgb, #31383c 80%, #000000);--secondary-foreground: #ffffff;--muted: color-mix(in srgb, #31383c 70%, #000000);--muted-foreground: color-mix(in srgb, #8b8b8b 80%, #ffffff);--accent: color-mix(in srgb, #016394 26%, #000000);--accent-foreground: color-mix(in srgb, #016394 50%, #ffffff);--destructive: #e5645a;--destructive-foreground: #240806;--success: #3fae6b;--success-foreground: #04140a;--warning: #d9982a;--warning-foreground: #221806;--info: #2a9bcc;--info-foreground: #04212c;--border: color-mix(in srgb, #8b8b8b 26%, #000000);--input: color-mix(in srgb, #8b8b8b 40%, #000000);--ring: color-mix(in srgb, #016394 50%, #ffffff);--overlay: color-mix(in srgb, #000000 66%, transparent)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--background);color:var(--foreground);font-family:var(--font-sans);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;font-weight:650;letter-spacing:-.01em;line-height:1.2}p{margin:0}a{color:var(--accent-foreground);text-decoration-color:color-mix(in srgb,currentColor 40%,transparent);text-underline-offset:3px}code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.875em}pre{margin:0;padding:.75rem 1rem;border-radius:.5rem;background:var(--muted);color:var(--foreground);overflow-x:auto}:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.page{max-width:64rem;margin:0 auto;padding:1.5rem 1.25rem 3rem;display:grid;gap:1.25rem}.page-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem .75rem;padding-bottom:.25rem;border-bottom:1px solid var(--border)}.page-header h1{font-size:1.35rem}.page-header .spacer{flex:1}.subtitle{color:var(--muted-foreground)}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));gap:1.25rem}.card{background:var(--card);color:var(--card-foreground);border:1px solid var(--border);border-radius:.75rem;padding:1.25rem;display:grid;gap:.75rem;align-content:start}.card h2{font-size:1rem}.card .hint{color:var(--muted-foreground);font-size:.875rem}.row{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.btn{appearance:none;border:1px solid transparent;border-radius:.5rem;min-height:44px;padding:.5rem 1rem;font:inherit;font-weight:600;cursor:pointer;background:var(--secondary);color:var(--secondary-foreground);transition:background-color .15s ease,border-color .15s ease}.btn:hover{background:color-mix(in srgb,var(--secondary) 85%,var(--foreground))}.btn-primary{background:var(--primary);color:var(--primary-foreground)}.btn-primary:hover{background:var(--primary-hover)}.btn-outline{background:transparent;border-color:var(--input);color:var(--foreground)}.btn-outline:hover{background:var(--muted)}.btn:disabled{opacity:.55;cursor:not-allowed}.badge{display:inline-flex;align-items:center;gap:.375rem;border-radius:999px;padding:.25rem .75rem;font-size:.8125rem;font-weight:600;width:fit-content}.badge-primary{background:var(--primary);color:var(--primary-foreground)}.badge-success{background:var(--success);color:var(--success-foreground)}.badge-warning{background:var(--warning);color:var(--warning-foreground)}.badge-error{background:var(--destructive);color:var(--destructive-foreground)}.kv{display:grid;grid-template-columns:auto 1fr;gap:.25rem 1rem;font-size:.9375rem}.kv dt{color:var(--muted-foreground)}.kv dd{margin:0;overflow-wrap:anywhere}.gate{min-height:60vh;display:grid;place-items:center;padding:1.5rem}.gate-card{max-width:34rem}.gate-error{color:var(--destructive);font-size:.875rem}.session-overlay{position:fixed;inset:0;background:var(--overlay);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:grid;place-items:center;padding:1.5rem;z-index:50}.connecting-status{display:grid;place-items:center}.connecting-pulse{width:2.5rem;height:2.5rem;border-radius:999px;background:var(--primary);animation:pulse 1.2s ease-in-out infinite}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}@keyframes pulse{0%,to{opacity:.25;transform:scale(.85)}50%{opacity:.9;transform:scale(1)}}.card-grid>.card{animation:rise .36s ease-out backwards}.card-grid>.card:nth-child(2){animation-delay:60ms}.card-grid>.card:nth-child(3){animation-delay:.12s}.card-grid>.card:nth-child(4){animation-delay:.18s}@keyframes rise{0%{opacity:0;transform:translateY(.5rem)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.connecting-pulse,.card-grid>.card{animation:none}.btn{transition:none}}.app-shell{min-height:100%;display:flex;flex-direction:column;background:var(--background)}.app-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1rem 1.25rem .75rem;border-bottom:1px solid var(--border)}.app-header h1{font-size:1.25rem}.app-header-meta{font-size:.875rem;color:var(--muted-foreground)}.app-nav{display:flex;flex-wrap:wrap;gap:.25rem;padding:.5rem 1rem;border-bottom:1px solid var(--border);background:var(--card)}.app-nav a{text-decoration:none;color:var(--foreground);padding:.45rem .75rem;border-radius:.5rem;font-weight:600;font-size:.9rem;display:inline-flex;align-items:center;gap:.4rem}.app-nav a:hover{background:var(--muted)}.app-nav a.on{background:var(--accent);color:var(--accent-foreground)}.nav-dot{display:inline-flex;min-width:1.25rem;justify-content:center;padding:0 .35rem;border-radius:999px;background:var(--secondary);font-size:.75rem}.nav-dot.warn{background:var(--warning);color:var(--warning-foreground)}.app-body{flex:1;overflow:auto}.page.wide{max-width:72rem}.eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted-foreground);margin:0}.lede{color:var(--muted-foreground);max-width:42rem}.btn-sm{min-height:36px;padding:.35rem .75rem;font-size:.875rem}.card-hd{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.75rem}.card-hd h3{font-size:1rem;margin:0}.dropzone{border:1.5px dashed var(--input);border-radius:.75rem;padding:1.25rem;text-align:center;background:var(--muted)}.dropzone.over{border-color:var(--primary);background:var(--accent)}.dropzone .hint{color:var(--muted-foreground);font-size:.875rem;margin-top:.25rem}.report-input,.search,.fld input,.fld select,.addrow input,.addrow select{width:100%;border:1px solid var(--input);border-radius:.5rem;padding:.55rem .75rem;font:inherit;background:var(--background);color:var(--foreground)}.report-input{margin-top:.75rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem;min-height:8rem;resize:vertical}.search{max-width:18rem}.muted{color:var(--muted-foreground)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em}.tnum,.num{font-variant-numeric:tabular-nums}.neg{color:var(--destructive)}.empty{color:var(--muted-foreground);padding:1.5rem 0}.batchmeta{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;font-size:.9rem}.batchmeta .sep{color:var(--muted-foreground)}.ribbon{display:grid;grid-template-columns:repeat(auto-fit,minmax(7.5rem,1fr));gap:.5rem}.ribbon .cell{background:var(--card);border:1px solid var(--border);border-radius:.65rem;padding:.75rem .9rem}.ribbon .k{font-size:.75rem;color:var(--muted-foreground);font-weight:600}.ribbon .v{font-size:1.1rem;font-weight:700;margin-top:.15rem}.ribbon .status.ok{border-color:color-mix(in srgb,var(--success) 45%,var(--border))}.ribbon .status.bad{border-color:color-mix(in srgb,var(--destructive) 45%,var(--border))}.callout{border-radius:.65rem;padding:.85rem 1rem;border:1px solid var(--border);background:var(--card)}.callout ul{margin:.5rem 0 0;padding-left:1.1rem}.callout.err{border-color:color-mix(in srgb,var(--destructive) 40%,var(--border));background:color-mix(in srgb,var(--destructive) 8%,var(--background))}.callout.warn{border-color:color-mix(in srgb,var(--warning) 40%,var(--border));background:color-mix(in srgb,var(--warning) 8%,var(--background))}.callout.ok{border-color:color-mix(in srgb,var(--success) 40%,var(--border));background:color-mix(in srgb,var(--success) 8%,var(--background))}.ack{display:flex;gap:.5rem;align-items:flex-start;margin-top:.75rem;font-size:.9rem}.batchbar{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center}.subtabs{display:flex;flex-wrap:wrap;gap:.35rem}.subtabs button{appearance:none;border:1px solid var(--border);background:var(--background);color:var(--foreground);border-radius:999px;padding:.35rem .75rem;font:inherit;font-weight:600;cursor:pointer}.subtabs button.on{background:var(--primary);color:var(--primary-foreground);border-color:var(--primary)}.subtabs .c{opacity:.8;font-size:.8em}.entbal{font-size:.85rem;color:var(--muted-foreground)}.tblwrap{overflow:auto;border:1px solid var(--border);border-radius:.65rem}.table-card{padding:0;overflow:hidden}table{width:100%;border-collapse:collapse;font-size:.875rem}th,td{padding:.55rem .7rem;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}th{background:var(--muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted-foreground)}tr.inactive{opacity:.55}tr.tsep td{border-bottom-width:2px}.num{text-align:right}.tag{display:inline-flex;padding:.1rem .45rem;border-radius:.35rem;font-size:.8rem;font-weight:700;background:var(--secondary)}.tag.ch{background:color-mix(in srgb,var(--primary) 16%,var(--background));color:var(--accent-foreground)}.tag.sdc{background:color-mix(in srgb,var(--success) 16%,var(--background))}.tag.ts{background:color-mix(in srgb,var(--warning) 16%,var(--background))}.tag.unm,.tag.def{background:var(--muted);color:var(--muted-foreground)}.route-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:1.25rem}.routelist{display:grid;gap:.35rem;margin:.75rem 0}.rrow{display:flex;align-items:center;gap:.5rem;padding:.35rem .5rem;border-radius:.45rem;background:var(--muted)}.rrow .x{margin-left:auto;border:0;background:transparent;color:var(--muted-foreground);font-size:1.1rem;cursor:pointer}.addrow{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}.addrow input,.addrow select{width:auto}.postfields{display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:.85rem;margin-top:.75rem}.fld{display:grid;gap:.3rem;font-size:.85rem;font-weight:600}.fld.span2{grid-column:1 / -1}.fld .hint{font-weight:400;color:var(--muted-foreground);font-size:.8rem}.steps{margin:0;padding-left:1.1rem;display:grid;gap:.45rem}.modal-backdrop{position:fixed;inset:0;background:var(--overlay);display:grid;place-items:center;padding:1rem;z-index:40}.modal{width:min(28rem,100%);display:grid;gap:.75rem}
