:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--page:#f6f6f3;--surface:#fff;--surface-2:#f9f9f7;--border:#0b0b0b1a;--border-strong:#0b0b0b2e;--text:#0b0b0b;--text-secondary:#52514e;--text-muted:#898781;--grid:#e1e0d9;--accent:#2a78d6;--accent-ink:#1c5cab;--accent-soft:#e6f0fc;--series-1:#2a78d6;--series-2:#eb6834;--up:#006300;--down:#c62f2f;--danger-soft:#fdeeee;--ok-soft:#eaf6ea;--shadow:0 1px 2px #0000000a, 0 1px 1px #00000008;--radius:10px;--font:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--page:#0d0d0d;--surface:#1a1a19;--surface-2:#222220;--border:#ffffff1a;--border-strong:#fff3;--text:#fff;--text-secondary:#c3c2b7;--text-muted:#898781;--grid:#2c2c2a;--accent:#3987e5;--accent-ink:#86b6ef;--accent-soft:#16263b;--series-1:#3987e5;--series-2:#d95926;--up:#0ca30c;--down:#e66767;--danger-soft:#3a1c1c;--ok-soft:#142914}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--page:#0d0d0d;--surface:#1a1a19;--surface-2:#222220;--border:#ffffff1a;--border-strong:#fff3;--text:#fff;--text-secondary:#c3c2b7;--text-muted:#898781;--grid:#2c2c2a;--accent:#3987e5;--accent-ink:#86b6ef;--accent-soft:#16263b;--series-1:#3987e5;--series-2:#d95926;--up:#0ca30c;--down:#e66767;--danger-soft:#3a1c1c;--ok-soft:#142914}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--page);color:var(--text);font:14px/1.45 var(--font);-webkit-font-smoothing:antialiased;margin:0}h1,h2{letter-spacing:-.01em;margin:0;font-weight:650}h1{font-size:22px}h2{font-size:15px}a{color:var(--accent-ink)}button,input,select{font:inherit;color:inherit}input,select{background:var(--surface);border:1px solid var(--border-strong);border-radius:8px;min-height:36px;padding:7px 10px}input:focus-visible,select:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.muted{color:var(--text-muted)}.small{font-size:12px}.shell{grid-template-columns:232px minmax(0,1fr);min-height:100%;display:grid}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;height:100vh;padding:16px 12px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:10px;padding:4px 8px 18px;font-size:15px;font-weight:700;display:flex}.brand.big{justify-content:center;padding-bottom:8px;font-size:18px}.brand-mark{background:var(--accent);border-radius:8px;place-items:center;width:30px;height:30px;display:grid}.brand-mark svg{fill:none;stroke:#fff;stroke-width:2.4px;stroke-linecap:round;width:18px;height:18px}nav{flex:1;overflow-y:auto}.nav-title{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);align-items:center;gap:8px;padding:0 8px 6px;font-size:12px;font-weight:600;display:flex}.nav-title svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;width:16px;height:16px}.nav-link{color:var(--text-secondary);border-radius:8px;padding:7px 10px 7px 32px;font-weight:500;text-decoration:none;display:block}.nav-link:hover{background:var(--surface-2);color:var(--text)}.nav-link.active{background:var(--accent-soft);color:var(--accent-ink);font-weight:600}.sidebar-foot{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;padding:12px 6px 0;display:flex}.me{min-width:0}.me-name{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.me-login{color:var(--text-muted);font-size:12px}.main{min-width:0;padding:24px 28px 48px}.menu-btn,.backdrop{display:none}@media (width<=860px){.shell{grid-template-columns:minmax(0,1fr)}.sidebar{z-index:30;width:260px;transition:transform .2s;position:fixed;left:0;transform:translate(-100%)}.nav-open .sidebar{transform:none}.nav-open .backdrop{z-index:20;background:#00000059;display:block;position:fixed;inset:0}.main{padding:12px 16px 40px}.menu-btn{border:1px solid var(--border-strong);background:var(--surface);cursor:pointer;border-radius:8px;place-items:center;width:38px;height:38px;margin-bottom:8px;display:grid}.menu-btn svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;width:18px;height:18px}}.page{max-width:1500px}.page-head{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.page-head .sub{color:var(--text-secondary);margin:4px 0 0}.page-loading{color:var(--text-muted);padding:40px}.btn{border:1px solid var(--border-strong);background:var(--surface);cursor:pointer;white-space:nowrap;border-radius:8px;justify-content:center;align-items:center;gap:6px;min-height:36px;padding:7px 14px;font-weight:600;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-2)}.btn:disabled{opacity:.55;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover:not(:disabled){background:var(--accent-ink)}.btn.ghost{color:var(--text-secondary);background:0 0;border-color:#0000}.btn.ghost:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.btn.small{min-height:30px;padding:4px 10px;font-size:13px}.link-btn{color:var(--accent-ink);cursor:pointer;background:0 0;border:0;padding:0;font-weight:500;text-decoration:none}.link-btn:hover{text-decoration:underline}.alert{background:var(--danger-soft);color:var(--down);border-radius:8px;margin:0 0 12px;padding:10px 14px;font-weight:500}.notice{background:var(--ok-soft);color:var(--up);border-radius:8px;margin:0 0 12px;padding:10px 14px;font-weight:500}.period-bar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:10px;margin-bottom:12px;padding:12px 14px;display:flex}.period-bar.slim{display:inline-flex}.mode-switch{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.hint{color:var(--text-muted);font-size:13px}.period-row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.period-inputs{flex-wrap:wrap;align-items:center;gap:10px 14px;display:flex}.date-range{align-items:center;gap:6px;display:flex}.date-range-label{color:var(--text-secondary);font-size:13px;font-weight:600}.dash{color:var(--text-muted)}.presets{flex-wrap:wrap;gap:14px;font-size:13px;display:flex}.segmented{background:var(--surface-2);border:1px solid var(--border);border-radius:9px;flex-wrap:wrap;padding:2px;display:inline-flex}.segmented button{color:var(--text-secondary);cursor:pointer;background:0 0;border:0;border-radius:7px;padding:6px 12px;font-weight:500}.segmented button:hover{color:var(--text)}.segmented button.active{background:var(--surface);color:var(--text);box-shadow:0 0 0 1px var(--border-strong), var(--shadow);font-weight:600}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;display:flex}.toolbar .search{width:280px;max-width:100%}.toolbar select.has-value{border-color:var(--accent);background:var(--accent-soft)}.metric-switch{margin-left:auto}.table-card,.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);position:relative}.card{padding:16px}.table-card.is-loading .table-scroll,.kpi-grid.is-loading{opacity:.5;transition:opacity .2s}.loading-bar{border-radius:var(--radius) var(--radius) 0 0;height:3px;position:absolute;top:0;left:0;right:0;overflow:hidden}.loading-bar:after{content:"";background:var(--accent);width:30%;animation:1s ease-in-out infinite load;position:absolute;inset:0}@keyframes load{0%{transform:translate(-100%)}to{transform:translate(400%)}}.table-meta{border-bottom:1px solid var(--border);color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:18px;padding:10px 14px;font-size:13px;display:flex}.legend-periods{flex-wrap:wrap;gap:18px;display:flex}.table-scroll{min-height:200px;max-height:calc(100vh - 290px);overflow:auto}table.report{border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums;width:100%}.report th,.report td{border-bottom:1px solid var(--grid);white-space:nowrap;padding:7px 12px}.report th{z-index:2;background:var(--surface-2);color:var(--text-secondary);text-align:right;font-size:13px;font-weight:600;position:sticky;top:0}.report .group-row th{text-align:center;color:var(--text);border-bottom:0}.report .group-row th.group{border-left:1px solid var(--grid)}.report .group-row+tr th{top:33px}.report th.text,.report td.text{text-align:left}.report td.num{text-align:right}.report th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.report th.sortable:hover,.report th.sorted{color:var(--text)}.sort-ind{width:12px;margin-left:2px;font-size:10px;display:inline-block}.report .num-col{text-align:right;width:44px;min-width:44px;color:var(--text-muted)}.report .pin-0,.report .pin-1{z-index:1;background:var(--surface);position:sticky}.report .pin-0{left:0}.report .pin-1{text-overflow:ellipsis;max-width:320px;box-shadow:inset -1px 0 0 var(--grid);left:44px;overflow:hidden}.report .total-row .pin-0,.report .total-row .pin-1{z-index:2}.report th.pin-0,.report th.pin-1{z-index:3;background:var(--surface-2)}.report .total-row td{z-index:1;background:var(--accent-soft);border-bottom:1px solid var(--border-strong);font-weight:700;position:sticky;top:33px}.report .group-row~.total-row td{top:66px}.report .total-col{background:var(--surface-2);font-weight:650}.report .total-row .total-col{background:var(--accent-soft)}.report tbody tr:hover td{background:var(--surface-2)}.report tbody tr.clickable{cursor:pointer}.report tbody tr.clickable:hover td.text:nth-child(2){color:var(--accent-ink);text-decoration:underline}.report td.zero{color:var(--text-muted)}.report td.up{color:var(--up)}.report td.down{color:var(--down)}.report td.empty,.table-card .empty{text-align:center;color:var(--text-muted);padding:40px}.report.compact th{position:static}.report.compact td,.report.compact th{padding:6px 8px}.report.compact td.text{white-space:normal}.report tr.inactive td{color:var(--text-muted)}.report td.actions{text-align:right}.report td input,.report td select{width:100%;min-width:140px}.kpi-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:6px;display:grid}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px}.kpi-title{color:var(--text-secondary);font-size:13px;font-weight:600}.kpi-value{letter-spacing:-.02em;margin:4px 0 0;font-size:30px;font-weight:700}.kpi-sub{color:var(--text-muted);margin-bottom:8px;font-size:12px}.kpi-delta{align-items:baseline;gap:6px;margin-top:2px;font-size:13px;display:flex}.kpi-delta .arrow{font-size:10px}.kpi-delta .v{font-variant-numeric:tabular-nums;font-weight:700}.kpi-delta .l{color:var(--text-muted)}.kpi-delta.up .arrow,.kpi-delta.up .v{color:var(--up)}.kpi-delta.down .arrow,.kpi-delta.down .v{color:var(--down)}.kpi-delta.flat{color:var(--text-muted)}.footnote{color:var(--text-muted);margin:6px 0 16px;font-size:12px}.card-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.chart-card{margin-bottom:16px}.chart-card .footnote{margin-bottom:0}.chart-box{height:320px;position:relative}.two-col{grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:16px;display:grid}@media (width<=520px){.two-col{grid-template-columns:minmax(0,1fr)}.two-col .card{overflow-x:auto}}.bar-cell{flex-direction:column;gap:4px;display:flex;position:relative}.bar-cell .bar{background:var(--series-1);border-radius:0 4px 4px 0;min-width:2px;height:4px;display:block}.login-page{place-items:center;min-height:100%;padding:16px;display:grid}.login-card{background:var(--surface);border:1px solid var(--border);width:100%;max-width:360px;box-shadow:var(--shadow);border-radius:14px;flex-direction:column;gap:14px;padding:28px 24px;display:flex}.login-card label,.form-row label{color:var(--text-secondary);flex-direction:column;gap:4px;font-size:13px;font-weight:600;display:flex}.login-card input{color:var(--text)}.login-card .alert{margin:0}.form-row{margin-bottom:16px}.form-row h2{margin-bottom:12px}.form-row .fields{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.form-row .fields label{flex:180px}.data-stamp{color:var(--text-secondary);flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin-top:4px;font-size:13px;display:flex}.data-stamp .link-btn{font-size:13px}.data-stamp .link-btn:disabled{color:var(--text-muted);cursor:default;text-decoration:none}.stamp-error{color:var(--down);flex-basis:100%}.log-card{margin-top:16px}.log-card .table-scroll{min-height:0;max-height:480px}.log-card td.down{color:var(--down);font-weight:600}.check{color:var(--text-secondary);cursor:pointer;align-items:center;gap:6px;font-size:13px;display:inline-flex}.check input{min-height:0}.login-card.wide{max-width:420px}.login-title{text-align:center;font-size:17px}.login-hint{color:var(--text-secondary);margin:0;font-size:14px}.login-hint.small{color:var(--text-muted);margin-top:-8px;font-size:12px}.enroll-steps{color:var(--text-secondary);flex-direction:column;gap:6px;margin:0;padding-left:20px;display:flex}.qr-box{border:1px solid var(--border);background:#fff;border-radius:10px;place-items:center;padding:12px;display:grid}.qr-box img{image-rendering:pixelated;display:block}.manual-key summary{cursor:pointer;color:var(--accent-ink);font-size:13px}.manual-key p{color:var(--text-secondary);margin:8px 0 6px;font-size:13px}.secret{background:var(--surface-2);border:1px solid var(--border);letter-spacing:.04em;word-break:break-all;-webkit-user-select:all;user-select:all;border-radius:8px;padding:8px 10px;font-family:ui-monospace,Consolas,monospace;font-size:14px;display:block}.code-input{letter-spacing:.3em;text-align:center;font-variant-numeric:tabular-nums;font-size:22px}.back-link{align-self:center;font-size:13px}.login-card label.check{flex-direction:row;font-weight:500}.theme-switch{background:var(--surface-2);border:1px solid var(--border);border-radius:9px;padding:2px;display:inline-flex}.theme-switch button{width:30px;height:26px;color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:7px;place-items:center;display:grid}.theme-switch button:hover{color:var(--text)}.theme-switch button.active{background:var(--surface);color:var(--text);box-shadow:0 0 0 1px var(--border-strong), var(--shadow)}.theme-switch svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:16px;height:16px}.sidebar-theme{border-top:1px solid var(--border);text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);justify-content:space-between;align-items:center;padding:10px 6px;font-size:12px;font-weight:600;display:flex}.login-page{position:relative}.login-theme{position:absolute;top:16px;right:16px}.nav-section+.nav-section{margin-top:6px}.nav-group{width:100%;color:var(--text);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:10px;padding:9px 10px;font-weight:600;display:flex}.nav-group:hover{background:var(--surface-2)}.nav-group>svg:first-child{fill:none;width:18px;height:18px;stroke:var(--text-secondary);stroke-width:1.8px;stroke-linecap:round;flex:none}.nav-group.current>svg:first-child{stroke:var(--accent)}.nav-group .chev{fill:none;width:14px;height:14px;stroke:var(--text-muted);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;margin-left:auto;transition:transform .15s}.nav-section.open .nav-group .chev{transform:rotate(90deg)}.nav-items{padding:2px 0 4px}.nav-items .nav-link{padding-left:38px}:root{--series-3:#1baf7a;--series-4:#eda100;--series-5:#e87ba4;--series-6:#008300;--series-7:#4a3aa7;--series-8:#e34948;--series-other:#a3a19a}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--series-3:#199e70;--series-4:#c98500;--series-5:#d55181;--series-6:#008300;--series-7:#9085e9;--series-8:#e66767;--series-other:#6b6a64}}:root[data-theme=dark]{--series-3:#199e70;--series-4:#c98500;--series-5:#d55181;--series-6:#008300;--series-7:#9085e9;--series-8:#e66767;--series-other:#6b6a64}.report-chart{margin-bottom:12px}.report-chart .chart-box{height:300px}.chart-note{color:var(--text-muted);margin:0 0 12px;font-size:13px}:root{--heat-0:#e6f0fc;--heat-1:#cde2fb;--heat-2:#b7d3f6;--heat-3:#9ec5f4;--heat-4:#86b6ef;--heat-ink:#0b0b0b;--closed-bg:#ecebe7}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--heat-0:#13233a;--heat-1:#16304f;--heat-2:#184f95;--heat-3:#1c5cab;--heat-4:#256abf;--heat-ink:#fff;--closed-bg:#2c2c2a}}:root[data-theme=dark]{--heat-0:#13233a;--heat-1:#16304f;--heat-2:#184f95;--heat-3:#1c5cab;--heat-4:#256abf;--heat-ink:#fff;--closed-bg:#2c2c2a}.heat-legend{vertical-align:middle;gap:2px;margin:0 4px;display:inline-flex}.heat-legend i{border-radius:2px;width:14px;height:10px;display:inline-block}.heat-legend .heat-0,.report.calendar td.heat-0{background:var(--heat-0)}.heat-legend .heat-1,.report.calendar td.heat-1{background:var(--heat-1)}.heat-legend .heat-2,.report.calendar td.heat-2{background:var(--heat-2)}.heat-legend .heat-3,.report.calendar td.heat-3{background:var(--heat-3)}.heat-legend .heat-4,.report.calendar td.heat-4{background:var(--heat-4)}.price-calendar{margin-bottom:12px}.price-calendar .table-scroll{max-height:none}.report.calendar{border-collapse:separate;width:auto}.report.calendar th,.report.calendar td{text-align:center;padding:4px 3px}.report.calendar .pin-cal{z-index:2;background:var(--surface);text-align:left;min-width:190px;max-width:230px;box-shadow:inset -1px 0 0 var(--grid);padding-left:10px;position:sticky;left:0}.report.calendar thead .pin-cal{z-index:4;background:var(--surface-2)}.report.calendar th.month{text-align:left;color:var(--text);border-left:1px solid var(--border-strong);font-weight:650}.report.calendar .month-row+tr th{top:29px}.report.calendar th.day{min-width:42px;font-size:12px;line-height:1.2}.report.calendar th.day span{display:block}.report.calendar th.day .wd{color:var(--text-muted);font-weight:500}.report.calendar th.weekend .wd,.report.calendar th.weekend{color:var(--down)}.report.calendar tr.group-head td{background:var(--surface-2);color:var(--text-secondary);padding-top:7px;padding-bottom:7px;font-size:13px}.report.calendar tr.group-head .pin-cal{background:var(--surface-2)}.report.calendar td.flight-name{white-space:nowrap}.report.calendar td.cell{color:var(--heat-ink);cursor:pointer;border-left:1px solid var(--surface);min-width:42px;font-size:13px;line-height:1.15}.report.calendar td.cell .price{white-space:nowrap;font-weight:600;display:block}.report.calendar td.cell .free{opacity:.7;font-size:10px;display:block}.report.calendar td.cell .free.low{color:var(--down);opacity:1;font-weight:700}.report.calendar td.cell .chg{margin-left:1px;font-size:9px}.report.calendar td.cell .chg.up{color:var(--up)}.report.calendar td.cell .chg.down{color:var(--down)}.report.calendar td.cell.closed{background:var(--closed-bg);color:var(--text-muted);font-size:11px}.report.calendar td.empty-cell{color:var(--text-muted);cursor:default}.report.calendar td.cell.selected{outline:2px solid var(--accent);outline-offset:-2px}.report.calendar td.status-cell{color:var(--text-muted);text-align:left;padding-left:12px;font-style:italic}.report.calendar tbody tr:hover td.cell{filter:brightness(.97)}.history-card{margin-bottom:12px}.report.calendar td.status-cell span{position:sticky;left:200px}
