:root{color-scheme:light;--page: #f4f6f9;--surface: #ffffff;--surface-2: #f6f8fa;--surface-3: #eef1f5;--border: #dfe3e9;--border-soft: #e9edf2;--grid: #eceff3;--axis: #c3c2b7;--shadow: 0 1px 2px rgba(11, 16, 27, .06), 0 1px 3px rgba(11, 16, 27, .04);--shadow-lg: 0 10px 30px rgba(11, 16, 27, .12);--ink: #101828;--ink-2: #52606d;--ink-3: #7d8794;--s1: #2a78d6;--s2: #eb6834;--s3: #1baf7a;--accent: #2a78d6;--accent-soft: rgba(42, 120, 214, .1);--accent-ring: rgba(42, 120, 214, .3);--good: #0ca30c;--warning: #fab219;--critical: #d03b3b;--good-text: #006300;--critical-text: #b02525;--good-soft: rgba(12, 163, 12, .1);--warning-soft: rgba(250, 178, 25, .14);--critical-soft: rgba(208, 59, 59, .1);--fs-xs: 11px;--fs-sm: 12px;--fs-md: 13px;--fs-base: 14px;--fs-lg: 16px;--fs-xl: 20px;--fs-2xl: 26px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--radius: 10px;--radius-sm: 6px;--radius-lg: 14px;--maxw: 1600px}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--page: #0b1220;--surface: #1e293b;--surface-2: #172033;--surface-3: #223047;--border: #334155;--border-soft: #28374d;--grid: #2c3a52;--axis: #3d4d67;--shadow: 0 1px 2px rgba(0, 0, 0, .4);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .55);--ink: #f8fafc;--ink-2: #cbd5e1;--ink-3: #8595ad;--s1: #3987e5;--s2: #d95926;--s3: #199e70;--accent: #3987e5;--accent-soft: rgba(57, 135, 229, .16);--accent-ring: rgba(57, 135, 229, .4);--good-text: #0ca30c;--critical-text: #ef6b6b;--good-soft: rgba(12, 163, 12, .16);--warning-soft: rgba(250, 178, 25, .16);--critical-soft: rgba(208, 59, 59, .18)}}:root[data-theme=dark]{color-scheme:dark;--page: #0b1220;--surface: #1e293b;--surface-2: #172033;--surface-3: #223047;--border: #334155;--border-soft: #28374d;--grid: #2c3a52;--axis: #3d4d67;--shadow: 0 1px 2px rgba(0, 0, 0, .4);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .55);--ink: #f8fafc;--ink-2: #cbd5e1;--ink-3: #8595ad;--s1: #3987e5;--s2: #d95926;--s3: #199e70;--accent: #3987e5;--accent-soft: rgba(57, 135, 229, .16);--accent-ring: rgba(57, 135, 229, .4);--good-text: #0ca30c;--critical-text: #ef6b6b;--good-soft: rgba(12, 163, 12, .16);--warning-soft: rgba(250, 178, 25, .16);--critical-soft: rgba(208, 59, 59, .18)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:system-ui,-apple-system,Segoe UI,sans-serif;background:var(--page);color:var(--ink);font-size:var(--fs-base);line-height:1.5;-webkit-font-smoothing:antialiased}button,select,input{font-family:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.topbar{background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100}.topbar-inner{max-width:var(--maxw);margin:0 auto;height:60px;padding:0 var(--sp-4);display:flex;align-items:center;gap:var(--sp-5)}.brand{display:flex;align-items:center;gap:10px;flex-shrink:0}.brand-mark{width:30px;height:30px;color:var(--accent);flex-shrink:0}.brand-text{display:flex;flex-direction:column;line-height:1.25}.brand-name{font-size:15px;font-weight:680;letter-spacing:-.015em;color:var(--ink)}.brand-sub{font-size:var(--fs-xs);color:var(--ink-3)}.nav{display:flex;gap:2px;flex:1;min-width:0}.nav a{padding:7px 13px;font-size:var(--fs-md);color:var(--ink-2);text-decoration:none;border-radius:var(--radius-sm);font-weight:550;white-space:nowrap}.nav a:hover{background:var(--surface-3);color:var(--ink)}.nav a.active{background:var(--accent-soft);color:var(--accent);font-weight:620}.topbar-right{display:flex;align-items:center;gap:var(--sp-3);flex-shrink:0}.segmented{display:flex;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:2px;gap:2px}.segmented button{padding:5px 10px;border:none;background:transparent;color:var(--ink-2);font-size:var(--fs-sm);cursor:pointer;border-radius:4px;font-weight:550;display:flex;align-items:center;gap:5px;white-space:nowrap}.segmented button:hover:not(.active){color:var(--ink)}.segmented button.active{background:var(--surface);color:var(--accent);box-shadow:var(--shadow)}.segmented.compact button{padding:5px 9px;font-variant-numeric:tabular-nums}.account{position:relative}.avatar-btn{display:flex;align-items:center;gap:5px;padding:3px 6px 3px 3px;background:transparent;border:1px solid transparent;border-radius:999px;cursor:pointer;color:var(--ink-3)}.avatar-btn:hover{background:var(--surface-2);border-color:var(--border)}.avatar{width:30px;height:30px;border-radius:50%;background:var(--accent);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:var(--fs-sm);font-weight:700;letter-spacing:.02em;flex-shrink:0}.avatar.lg{width:38px;height:38px;font-size:var(--fs-base)}.avatar-btn .chev{font-size:10px}.menu{position:absolute;top:calc(100% + 8px);right:0;min-width:264px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:var(--sp-2);z-index:300}.menu-head{display:flex;align-items:center;gap:10px;padding:var(--sp-2)}.menu-id{min-width:0}.menu-name{font-size:var(--fs-md);font-weight:650;color:var(--ink)}.menu-mail{font-size:var(--fs-sm);color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:190px}.menu-meta{padding:0 var(--sp-2) var(--sp-2)}.role-badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;background:var(--surface-3);color:var(--ink-2)}.role-badge.admin{background:var(--accent-soft);color:var(--accent)}.menu-sep{height:1px;background:var(--border-soft);margin:var(--sp-2) 0}.menu-label{font-size:10px;font-weight:700;color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em;padding:0 var(--sp-2) 6px}.menu-theme{display:flex;gap:4px;padding:0 var(--sp-2) 2px}.menu-theme button{flex:1;padding:7px 4px;border:1px solid var(--border);background:var(--surface-2);color:var(--ink-2);border-radius:var(--radius-sm);font-size:var(--fs-xs);cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;font-weight:550}.menu-theme button:hover{color:var(--ink)}.menu-theme button.active{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-ring)}.menu-item{display:block;width:100%;text-align:left;padding:8px var(--sp-2);background:transparent;border:none;border-radius:var(--radius-sm);color:var(--ink-2);font-size:var(--fs-md);cursor:pointer;text-decoration:none}.menu-item:hover{background:var(--surface-2);color:var(--ink)}.menu-item.danger:hover{background:var(--critical-soft);color:var(--critical-text)}.filters{background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:60px;z-index:90}.filters-bar{max-width:var(--maxw);margin:0 auto;padding:6px var(--sp-4);display:flex;align-items:center;gap:var(--sp-2);min-height:32px;cursor:pointer;-webkit-user-select:none;user-select:none}.filters-bar:hover{background:var(--surface-2)}.filters-bar:hover .filters-label,.filters-bar:hover .caret{color:var(--accent)}.filters-label{font-size:var(--fs-sm);font-weight:620;color:var(--ink-2);text-transform:uppercase;letter-spacing:.04em}.filters-bar .caret{color:var(--ink-3);font-size:10px;width:10px}.filters-summary{font-size:var(--fs-sm);color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.filters-inner{max-width:var(--maxw);margin:0 auto;display:flex;gap:var(--sp-4);flex-wrap:wrap;align-items:flex-end;padding:0 var(--sp-4) var(--sp-3)}.filters.collapsed .filters-inner{display:none}.filters-inner{cursor:default}.filter{display:flex;flex-direction:column;gap:5px}.filter label{font-size:10px;font-weight:700;color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em}.filter select,.filter input{padding:7px 10px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--ink);font-size:var(--fs-md);min-height:34px}.filter select:hover,.filter input:hover{border-color:var(--ink-3)}.multi-select{position:relative;min-width:240px}.multi-btn{padding:7px 10px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--ink);font-size:var(--fs-md);cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:var(--sp-2);min-height:34px}.multi-btn:hover{border-color:var(--ink-3)}.multi-btn .chev{color:var(--ink-3);font-size:10px}.multi-drop{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);max-height:280px;overflow-y:auto;z-index:200;box-shadow:var(--shadow-lg);padding:var(--sp-1)}.multi-item{padding:7px 8px;display:flex;align-items:center;gap:var(--sp-2);cursor:pointer;font-size:var(--fs-md);border-radius:var(--radius-sm)}.multi-item:hover{background:var(--surface-3)}.multi-item input{accent-color:var(--accent);width:14px;height:14px}.multi-item.all{border-bottom:1px solid var(--border-soft);font-weight:650;border-radius:0;margin-bottom:var(--sp-1);padding-bottom:9px}.main{max-width:var(--maxw);margin:0 auto;padding:var(--sp-4)}.tabs{display:flex;gap:var(--sp-1);border-bottom:1px solid var(--border);margin-bottom:var(--sp-4);flex-wrap:wrap}.tab{padding:7px 13px;background:transparent;border:none;color:var(--ink-2);font-size:var(--fs-md);font-weight:600;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.tab:hover{color:var(--ink)}.tab.active{color:var(--accent);border-bottom-color:var(--accent)}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--sp-2);margin-bottom:var(--sp-4)}.kpi{background:var(--surface);border-radius:var(--radius);padding:10px var(--sp-3);border:1px solid var(--border);box-shadow:var(--shadow)}.kpi-title{font-size:10px;font-weight:700;color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em;margin-bottom:3px}.kpi-value{font-size:22px;font-weight:650;letter-spacing:-.02em;line-height:1.15;margin-bottom:4px}.kpi-row{display:flex;gap:var(--sp-2);font-size:var(--fs-xs);color:var(--ink-2);flex-wrap:wrap;align-items:center;row-gap:3px}.kpi-row .lbl{color:var(--ink-3);margin-right:3px}.delta{display:inline-flex;align-items:center;gap:3px;font-weight:650;font-size:var(--fs-xs);padding:1px 5px;border-radius:4px;font-variant-numeric:tabular-nums}.delta.up{color:var(--good-text);background:var(--good-soft)}.delta.down{color:var(--critical-text);background:var(--critical-soft)}.delta.flat{color:var(--ink-3);background:var(--surface-3)}.charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:var(--sp-3);margin-bottom:var(--sp-4)}.chart-card{background:var(--surface);border-radius:var(--radius);padding:var(--sp-3);border:1px solid var(--border);box-shadow:var(--shadow)}.chart-title{font-size:var(--fs-md);font-weight:650;margin-bottom:1px}.chart-sub{font-size:var(--fs-xs);color:var(--ink-3);margin-bottom:var(--sp-2)}.chart-box{height:208px;position:relative}.chart-box.tall{height:300px}.tbl-card{background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);overflow:hidden;margin-bottom:var(--sp-3);box-shadow:var(--shadow)}.tbl-hdr{padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;gap:var(--sp-3);flex-wrap:wrap}.tbl-hdr h3{font-size:var(--fs-md);font-weight:650}.tbl-hdr .note{font-size:var(--fs-xs);color:var(--ink-3)}.tbl-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}th{background:var(--surface-2);padding:7px 10px;text-align:left;font-weight:650;color:var(--ink-2);font-size:10px;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:2}thead tr:nth-child(2) th{top:27px}td{padding:7px 10px;border-bottom:1px solid var(--border-soft);white-space:nowrap;color:var(--ink-2)}tbody tr:last-child td{border-bottom:none}tbody tr:hover td{background:var(--surface-2)}td b,th b{color:var(--ink);font-weight:650}.num{text-align:right;font-variant-numeric:tabular-nums}.total-row td{font-weight:700;background:var(--surface-2);color:var(--ink);border-top:1px solid var(--border)}.total-row:hover td{background:var(--surface-3)}.pos{color:var(--good-text)}.neg{color:var(--critical-text)}.muted{color:var(--ink-3)}.hotel-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(272px,1fr));gap:var(--sp-4)}.h-card{background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);overflow:hidden;box-shadow:var(--shadow)}.h-card h3{padding:var(--sp-3) var(--sp-4);background:var(--surface-2);font-size:var(--fs-md);font-weight:650;border-bottom:1px solid var(--border)}.h-card h3 .code{color:var(--accent)}.h-card-body{padding:var(--sp-2) var(--sp-4) var(--sp-3)}.h-row{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-3);padding:7px 0;border-bottom:1px solid var(--border-soft);font-size:var(--fs-sm)}.h-row:last-child{border:none}.h-lbl{color:var(--ink-3)}.h-vals{display:flex;gap:var(--sp-2);align-items:baseline;font-variant-numeric:tabular-nums}.v-a{color:var(--ink);font-weight:650}.v-b,.v-l{color:var(--ink-3);font-size:var(--fs-xs)}.auth{min-height:100vh;display:grid;grid-template-columns:1.05fr 1fr;background:var(--page)}.auth-brand{background:linear-gradient(155deg,#1d5fae,#2a78d6 45%,#1b4f92);color:#fff;display:flex;align-items:center;padding:var(--sp-6);position:relative;overflow:hidden}:root[data-theme=dark] .auth-brand{background:linear-gradient(155deg,#12213a,#1c3d6b 48%,#0f1b2e)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .auth-brand{background:linear-gradient(155deg,#12213a,#1c3d6b 48%,#0f1b2e)}}.auth-brand:after{content:"";position:absolute;width:620px;height:620px;right:-220px;top:-180px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.14),transparent 68%);pointer-events:none}.auth-brand-inner{max-width:460px;margin-left:auto;margin-right:auto;position:relative;z-index:1}.auth-logo{display:flex;align-items:center;gap:12px;margin-bottom:var(--sp-6)}.auth-mark{width:42px;height:42px;color:#ffffff38;flex-shrink:0}.auth-mark.sm{width:36px;height:36px;color:var(--accent)}.auth-logo-name{font-size:var(--fs-lg);font-weight:680;letter-spacing:-.015em}.auth-logo-sub{font-size:var(--fs-sm);color:#ffffffb3}.auth-tagline{font-size:30px;line-height:1.25;font-weight:640;letter-spacing:-.02em;margin-bottom:var(--sp-5);max-width:15ch}.auth-points{list-style:none;display:flex;flex-direction:column;gap:var(--sp-4)}.auth-points li{display:flex;gap:12px;align-items:flex-start}.auth-points .tick{width:22px;height:22px;border-radius:50%;background:#ffffff29;display:inline-flex;align-items:center;justify-content:center;font-size:12px;flex-shrink:0;margin-top:1px}.auth-points b{display:block;font-size:var(--fs-base);font-weight:620;margin-bottom:2px}.auth-points p{font-size:var(--fs-md);color:#ffffffc7;line-height:1.5}.auth-foot{margin-top:var(--sp-6);font-size:var(--fs-sm);color:#fff9;border-top:1px solid rgba(255,255,255,.16);padding-top:var(--sp-4)}.auth-form-side{display:flex;align-items:center;justify-content:center;padding:var(--sp-6) var(--sp-5);position:relative}.auth-theme{position:absolute;top:var(--sp-4);right:var(--sp-4)}.auth-card{width:100%;max-width:384px}.auth-card-mark{display:none;margin-bottom:var(--sp-4)}.auth-card h1{font-size:26px;font-weight:660;letter-spacing:-.02em;margin-bottom:6px}.auth-sub{font-size:var(--fs-md);color:var(--ink-3);margin-bottom:var(--sp-5)}.field{display:flex;flex-direction:column;gap:7px;margin-bottom:var(--sp-4)}.field label{font-size:var(--fs-sm);font-weight:620;color:var(--ink-2)}.field input{padding:11px 13px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--ink);font-size:var(--fs-base);width:100%}.field input::placeholder{color:var(--ink-3)}.field input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.input-affix{position:relative;display:flex}.input-affix input{padding-right:62px}.affix-btn{position:absolute;right:5px;top:50%;transform:translateY(-50%);background:transparent;border:none;color:var(--ink-3);cursor:pointer;font-size:var(--fs-sm);font-weight:620;padding:5px 8px;border-radius:5px}.affix-btn:hover{color:var(--accent);background:var(--surface-2)}.auth-help{font-size:var(--fs-sm);color:var(--ink-3);line-height:1.55;margin-top:var(--sp-4);text-align:center}@media(max-width:980px){.auth{grid-template-columns:1fr}.auth-brand{display:none}.auth-card-mark{display:block}.auth-theme{top:var(--sp-3);right:var(--sp-3)}.theme-word{display:none}}.btn{padding:9px 16px;border:1px solid transparent;border-radius:var(--radius-sm);background:var(--accent);color:#fff;font-size:var(--fs-md);font-weight:600;cursor:pointer;min-height:36px;display:inline-flex;align-items:center;justify-content:center;gap:6px}.btn:hover:not(:disabled){filter:brightness(1.08)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.wide{width:100%}.btn.ghost{background:var(--surface-2);color:var(--ink);border-color:var(--border)}.btn.ghost:hover:not(:disabled){background:var(--surface-3);filter:none}.btn.danger{background:var(--critical)}.btn.small{padding:5px 10px;font-size:var(--fs-sm);min-height:28px}.btn.lg{padding:12px 18px;font-size:var(--fs-base);min-height:44px}.alert{padding:10px 12px;border-radius:var(--radius-sm);font-size:var(--fs-md);margin-bottom:var(--sp-3);line-height:1.5;border:1px solid transparent}.alert.error{background:var(--critical-soft);color:var(--critical-text);border-color:var(--critical)}.alert.warn{background:var(--warning-soft);color:var(--ink);border-color:var(--warning)}.alert.ok{background:var(--good-soft);color:var(--good-text);border-color:var(--good)}.alert.info{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-ring)}.alert ul{margin:6px 0 0 18px}.alert li{margin-bottom:3px}.panel-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--sp-5);margin-bottom:var(--sp-4);box-shadow:var(--shadow)}.panel-card h2{font-size:var(--fs-lg);font-weight:650;margin-bottom:4px}.panel-card p.sub{font-size:var(--fs-md);color:var(--ink-3);margin-bottom:var(--sp-4);line-height:1.55;max-width:76ch}.form-row{display:flex;gap:var(--sp-4);flex-wrap:wrap;align-items:flex-end;margin-bottom:var(--sp-4)}.form-row .filter{min-width:170px}.dropzone{border:2px dashed var(--border);border-radius:var(--radius);padding:var(--sp-6) var(--sp-4);text-align:center;cursor:pointer;transition:border-color .15s,background .15s;background:var(--surface-2)}.dropzone:hover,.dropzone.active{border-color:var(--accent);background:var(--accent-soft)}.dropzone .big{font-size:var(--fs-base);font-weight:600;margin-bottom:4px}.dropzone .small{font-size:var(--fs-md);color:var(--ink-3)}.dropzone .file{font-size:var(--fs-md);color:var(--accent);margin-top:var(--sp-3);word-break:break-all;font-weight:600}.preview-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:var(--sp-4)}.meta-list{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-5);font-size:var(--fs-md);margin-bottom:var(--sp-4);padding:var(--sp-3) var(--sp-4);background:var(--surface-2);border-radius:var(--radius-sm)}.meta-list div span{color:var(--ink-3);margin-right:5px}.actions-row{display:flex;gap:var(--sp-2);flex-wrap:wrap;margin-top:var(--sp-4)}.status-pill{display:inline-block;padding:2px 7px;border-radius:999px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.status-committed{background:var(--good-soft);color:var(--good-text)}.status-pending{background:var(--warning-soft);color:var(--ink)}.status-failed{background:var(--critical-soft);color:var(--critical-text)}.status-superseded{background:var(--surface-3);color:var(--ink-3)}.coverage-head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--sp-4);flex-wrap:wrap}.coverage-wrap{border:1px solid var(--border);border-radius:var(--radius);max-height:60vh}table.coverage{font-size:var(--fs-sm)}table.coverage th{padding:9px 8px;text-align:center;font-size:10px}table.coverage th.current{color:var(--accent)}table.coverage th .tag{display:block;font-size:9px;color:var(--ink-3);font-weight:600;text-transform:none;letter-spacing:0}table.coverage td{padding:10px 8px;vertical-align:middle;text-align:center;border-left:1px solid var(--border-soft);min-width:108px}table.coverage .sticky-col{position:sticky;left:0;z-index:3;text-align:left;border-left:none;background:var(--surface);min-width:168px;white-space:nowrap}table.coverage tbody tr:hover .sticky-col{background:var(--surface-2)}table.coverage thead .sticky-col{background:var(--surface-2);z-index:4}table.coverage .hotel-name{font-size:var(--fs-xs);color:var(--ink-3);font-weight:400;margin-top:1px;max-width:168px;overflow:hidden;text-overflow:ellipsis}td.cell-empty{background:transparent}td.cell-filled{background:var(--good-soft)}.uploaded-badge{display:inline-block;margin-bottom:7px;padding:3px 9px;border-radius:999px;border:1px solid transparent;background:var(--good-soft);color:var(--good-text);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;cursor:help}.uploaded-badge:hover,.uploaded-badge:focus-visible{filter:brightness(1.08)}.uploaded-badge.has-warnings{background:var(--warning-soft);color:var(--ink);border-color:var(--warning)}.cell-actions{display:flex;gap:var(--sp-1);justify-content:center}.cell-actions button{border:1px solid var(--border);background:var(--surface);color:var(--ink-2);border-radius:var(--radius-sm);width:28px;height:26px;font-size:var(--fs-md);cursor:pointer;line-height:1;padding:0}.cell-actions button:hover:not(:disabled){background:var(--accent);color:#fff;border-color:var(--accent)}.cell-actions button.danger:hover:not(:disabled){background:var(--critical);border-color:var(--critical)}.cell-actions button:disabled{opacity:.35;cursor:not-allowed}.coverage-foot{font-size:var(--fs-xs);color:var(--ink-3);margin-top:var(--sp-3)}.hover-card{position:fixed;z-index:400;transform:translate(-50%);width:316px;padding:var(--sp-3) var(--sp-4);pointer-events:none;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg)}.hover-card.flip{transform:translate(-50%,-100%)}.hc-title{font-size:10px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px}.hc-file{font-size:var(--fs-md);color:var(--ink);margin-bottom:var(--sp-3);word-break:break-all;line-height:1.4;font-weight:600}.hc-rows{display:flex;flex-direction:column;gap:4px}.hc-rows>div{display:flex;gap:var(--sp-2);font-size:var(--fs-sm)}.hc-rows dt{color:var(--ink-3);min-width:66px}.hc-rows dd{color:var(--ink-2);margin:0;word-break:break-word}.hc-warnings{margin-top:var(--sp-3);padding-top:var(--sp-2);border-top:1px solid var(--border-soft);font-size:var(--fs-sm);color:var(--ink-2);line-height:1.5}.hc-warnings strong{color:var(--ink)}.hc-warnings ul{margin:4px 0 0 16px}.hc-warnings li{margin-bottom:3px}.sub-head{font-size:10px;font-weight:700;color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em;margin:var(--sp-5) 0 var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--border-soft)}.row-actions{display:flex;gap:5px;flex-wrap:wrap}tr.editing td{background:var(--accent-soft);vertical-align:middle}.cell-input{width:100%;min-width:84px;padding:5px 8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--ink);font-size:var(--fs-sm)}.cell-input:focus{outline:none;border-color:var(--accent)}.cell-input.code{text-transform:uppercase;font-weight:650;min-width:76px}.cell-input.wide{min-width:200px}.cell-input.tiny{min-width:68px;text-align:right}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#080c148c;z-index:500;display:flex;align-items:center;justify-content:center;padding:var(--sp-4)}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--sp-5);width:100%;max-width:460px}.modal h3{font-size:var(--fs-lg);font-weight:650;margin-bottom:var(--sp-3)}.modal-body{font-size:var(--fs-md);color:var(--ink-2);line-height:1.55;margin-bottom:var(--sp-3)}.empty{padding:var(--sp-6) var(--sp-4);text-align:center;color:var(--ink-3);font-size:var(--fs-md);line-height:1.6;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.empty strong{color:var(--ink);display:block;margin-bottom:6px;font-size:var(--fs-lg)}.spinner-wrap{padding:var(--sp-6);text-align:center;color:var(--ink-3);font-size:var(--fs-md)}.refetching{opacity:.55;transition:opacity .15s}@media(max-width:900px){.topbar-inner{height:auto;flex-wrap:wrap;padding:var(--sp-3) var(--sp-3);gap:var(--sp-3)}.nav{order:3;flex-basis:100%;overflow-x:auto}.topbar-right{margin-left:auto}.brand-sub{display:none}}@media(max-width:720px){.main{padding:var(--sp-4) var(--sp-3)}.kpi-value{font-size:var(--fs-xl)}}.basis-note{font-size:var(--fs-md);color:var(--ink-3);padding-bottom:9px;align-self:flex-end}.basis-note b{color:var(--ink-2);font-weight:620}.panel-note{font-size:var(--fs-sm);color:var(--ink-3);line-height:1.6;margin-top:var(--sp-3);max-width:90ch}.hint{position:relative;display:inline-flex;vertical-align:middle;cursor:help}.hint-icon{width:15px;height:15px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;font-style:italic;background:var(--surface-3);color:var(--ink-3);border:1px solid var(--border);margin-left:5px}.hint:hover .hint-icon,.hint:focus-visible .hint-icon{background:var(--accent);color:#fff;border-color:var(--accent)}.hint-body{display:none;position:absolute;top:calc(100% + 7px);left:0;z-index:350;width:330px;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);font-size:var(--fs-sm);font-weight:400;line-height:1.55;color:var(--ink-2);text-transform:none;letter-spacing:0;white-space:normal;text-align:left}.hint:hover .hint-body,.hint:focus-visible .hint-body{display:block}.hint.right .hint-body{left:auto;right:0}
