:root{color:#17231d;background:#f7f9f7;font-family:Noto Sans SC,Microsoft YaHei UI,sans-serif;font-synthesis:none;--pine-950: #0d2c20;--pine-900: #123c2c;--pine-800: #1f5a43;--pine-700: #316b51;--pine-500: #6f9480;--sage-400: #91ae9b;--sage-200: #d7e4da;--sage-100: #e8f0ea;--canvas: #ffffff;--paper: #ffffff;--chart: #ffffff;--ink: #17231d;--muted: #68766e;--subtle: #96a29b;--line: #dce4de;--amber: #ad792d;--amber-soft: #f4ead7;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px}*{box-sizing:border-box}html{min-width:320px;background:var(--canvas)}body{margin:0;min-width:320px;min-height:100vh}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button,a{color:inherit}.product-brand{display:inline-flex;align-items:center;gap:11px;color:inherit;text-decoration:none}.product-brand img{width:42px;height:42px;object-fit:cover;border-radius:50%}.product-brand span{display:grid;gap:2px}.product-brand strong{font:650 17px/1 "Noto Serif SC",serif;letter-spacing:.08em}.product-brand small{font:600 8px/1.2 Bahnschrift,sans-serif;letter-spacing:.16em;opacity:.6}.product-brand.compact img{width:34px;height:34px}.auth-page{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(410px,.72fr);background:#f7f9f7}.auth-scenic{position:relative;min-height:100vh;overflow:hidden;color:#fff;background:#153e30 url(/brand/bg-scenic.jpg) center/cover no-repeat}.auth-scenic-shade{position:absolute;inset:0;background:linear-gradient(115deg,#071f1740,#09211905 46%,#0a241b9e),linear-gradient(0deg,rgba(8,35,25,.64),transparent 58%)}.auth-scenic-brand{position:absolute;z-index:1;top:38px;left:42px;display:flex;align-items:center;gap:13px}.auth-scenic-brand img{width:43px;height:43px;border-radius:50%;box-shadow:0 8px 24px #0000002e}.auth-scenic-brand div{display:grid;gap:3px}.auth-scenic-brand strong{font:600 17px/1.2 "Noto Serif SC",serif;letter-spacing:.04em}.auth-scenic-brand span{color:#ffffffad;font-size:14px;letter-spacing:.18em}.auth-scenic-copy{position:absolute;z-index:1;left:clamp(42px,7vw,106px);bottom:clamp(64px,12vh,128px)}.auth-scenic-copy>span{color:#ffffff9e;font:600 10px/1 Bahnschrift,sans-serif;letter-spacing:.3em}.auth-scenic-copy h1{margin:17px 0 18px;font:500 clamp(40px,5vw,68px)/1.18 "Noto Serif SC",serif;letter-spacing:.04em;text-shadow:0 4px 20px rgba(0,0,0,.16)}.auth-scenic-copy p{margin:0;color:#ffffffc2;font-size:17px;letter-spacing:.08em}.auth-panel{min-height:100vh;padding:38px clamp(34px,5vw,72px);display:grid;align-items:center;background:#fbfcfbf5}.auth-panel-inner{width:min(100%,390px);margin-inline:auto}.auth-wordmark{width:min(245px,74%);height:auto;display:block;margin:0 auto 38px}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;margin-bottom:30px;border-bottom:1px solid var(--line)}.auth-tabs a{position:relative;padding:12px 8px;color:var(--subtle);text-align:center;text-decoration:none;font-size:17px;font-weight:600}.auth-tabs a.active{color:var(--pine-900)}.auth-tabs a.active:after{content:"";position:absolute;left:24%;right:24%;bottom:-1px;height:2px;background:var(--pine-800)}.auth-form header{margin-bottom:27px}.auth-form header span{color:var(--pine-700);font:650 9px/1 Bahnschrift,sans-serif;letter-spacing:.22em}.auth-form h2{margin:9px 0 0;font:520 28px/1.3 "Noto Serif SC",serif}.auth-form label{display:grid;gap:8px;margin:17px 0}.auth-form label span{color:#4e5e55;font-size:15px;font-weight:650}.auth-form input{width:100%;height:46px;padding:0 13px;border:1px solid var(--line);border-radius:7px;background:#fff;outline:none;transition:border-color .18s ease,box-shadow .18s ease}.auth-form input:focus{border-color:var(--pine-700);box-shadow:0 0 0 3px #316b5114}.auth-form>button{width:100%;height:47px;margin-top:12px;border:0;border-radius:7px;color:#fff;background:var(--pine-900);cursor:pointer;transition:background-color .18s ease,transform .18s ease}.auth-form>button:hover:not(:disabled){background:var(--pine-800);transform:translateY(-1px)}.auth-form>button:disabled{opacity:.6;cursor:wait}.form-message{margin:10px 0 0;padding:10px 12px;border-radius:6px;font-size:15px}.form-message.error{color:#954d42;background:#f8eae7}.form-message.success{color:var(--pine-800);background:var(--sage-100)}.auth-prototype-note{margin:22px 0 0;color:var(--subtle);text-align:center;font-size:13px;line-height:1.6}@media(max-width:840px){.auth-page{grid-template-columns:1fr}.auth-scenic{min-height:310px}.auth-scenic-copy{bottom:42px}.auth-scenic-copy h1{font-size:42px}.auth-panel{min-height:auto;padding-block:54px}}@media(max-width:520px){.auth-scenic{min-height:250px}.auth-scenic-brand{top:25px;left:24px}.auth-scenic-copy{left:24px;bottom:30px}.auth-scenic-copy h1{margin-block:12px;font-size:35px}.auth-panel{padding:42px 24px}}.upload-page{min-height:100vh;color:#fff;background:radial-gradient(circle at 82% 20%,rgba(55,126,99,.35),transparent 36%),linear-gradient(145deg,#081a14,#123c2c 52%,#0d2c20)}.upload-header{height:74px;padding:0 clamp(24px,5vw,70px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(255,255,255,.1)}.upload-header>div{display:flex;align-items:center;gap:16px;color:#ffffffa6;font-size:15px}.upload-header button{padding:7px 10px;border:1px solid rgba(255,255,255,.17);border-radius:6px;color:#fff;background:transparent;cursor:pointer}.upload-content{width:min(880px,calc(100% - 40px));margin:0 auto;padding:clamp(58px,9vh,100px) 0 80px}.upload-heading{margin-bottom:30px}.upload-heading>span{color:#91c3ad;font:650 9px/1 Bahnschrift,sans-serif;letter-spacing:.28em}.upload-heading h1{margin:12px 0 10px;font:500 clamp(32px,5vw,48px)/1.2 "Noto Serif SC",serif}.upload-heading p{margin:0;color:#ffffff8f;font-size:16px;line-height:1.7}.upload-card{padding:clamp(18px,3vw,30px);border:1px solid rgba(255,255,255,.14);border-radius:16px;background:#ffffff13;box-shadow:0 24px 70px #00000038;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.upload-dropzone{min-height:245px;padding:32px;display:grid;place-items:center;align-content:center;border:1px dashed rgba(183,220,203,.42);border-radius:12px;background:#071b1438;cursor:pointer;outline:none;transition:border-color .18s ease,background-color .18s ease}.upload-dropzone:hover,.upload-dropzone:focus-visible{border-color:#a9d5c1;background:#3d7e6424}.upload-icon{width:52px;height:52px;margin-bottom:17px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.2);border-radius:50%;color:#b8d9ca;font-size:29px}.upload-dropzone strong{font-size:21px;font-weight:600}.upload-dropzone p{margin:6px 0 15px;color:#9cc8b5;font-size:16px}.upload-dropzone small{color:#fff6;font-size:13px}.upload-file-list{margin:18px 0 0;padding:0;display:grid;gap:8px;list-style:none}.upload-file-list li{min-height:56px;padding:8px 10px;display:grid;grid-template-columns:42px 1fr 34px;align-items:center;gap:11px;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:#0000001a}.upload-file-list li>span{height:34px;display:grid;place-items:center;border-radius:6px;color:#b8d9ca;background:#89bea51f;font-size:13px;font-weight:700}.upload-file-list li>div{min-width:0;display:grid;gap:4px}.upload-file-list strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:550}.upload-file-list small{color:#fff6;font-size:13px}.upload-file-list button{border:0;color:#ffffff94;background:transparent;font-size:24px;cursor:pointer}.upload-message{margin:15px 0 0;color:#b7dac9;font-size:14px}.upload-actions{margin-top:20px;display:flex;justify-content:flex-end;gap:10px}.upload-actions button{height:42px;padding:0 20px;border-radius:7px;cursor:pointer}.upload-actions button:disabled{opacity:.42;cursor:not-allowed}.upload-actions .secondary{border:1px solid rgba(255,255,255,.16);color:#ffffffb3;background:transparent}.upload-actions .primary{min-width:142px;border:0;color:var(--pine-950);background:#d9ebe1;font-weight:650}.header-goto-dashboard{font-weight:600;color:#cfe9dc!important;border-color:#91c3ad66!important}.header-goto-dashboard:hover{background:#3d7e6438!important}.upload-history{margin-top:34px}.upload-history-head{margin-bottom:14px}.upload-history-head h2{margin:0;font:500 20px/1.3 "Noto Serif SC",serif}.upload-history-head p{margin:6px 0 0;color:#ffffff80;font-size:15px}.upload-history-list{margin:0;padding:0;display:grid;gap:8px;list-style:none}.upload-history-list li{border:1px solid rgba(255,255,255,.12);border-radius:10px;background:#ffffff0d;overflow:hidden}.upload-history-list button{width:100%;padding:12px 16px;display:flex;align-items:center;gap:14px;border:0;color:#e6f2ec;background:transparent;cursor:pointer;text-align:left;transition:background-color .16s ease}.upload-history-list button:hover{background:#3d7e6429}.history-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:550}.upload-history-list small{color:#ffffff6b;font-size:14px;flex:0 0 auto}.history-status{flex:0 0 auto;padding:3px 10px;border-radius:999px;font-size:13px;font-weight:600}.history-status.ok{color:#b7e6cd;background:#3e9e6c38}.history-status.fail{color:#f2b8b0;background:#cd5c4a38}.history-status.pending{color:#f0d9a8;background:#ad792d38}@media(max-width:560px){.upload-header>div>span{display:none}.upload-content{width:min(100% - 28px,880px);padding-top:48px}.upload-card{padding:14px}.upload-dropzone{min-height:220px;padding-inline:18px;text-align:center}}.dashboard-page{--layer-content: 1;--layer-floating: 2;min-height:100vh;display:grid;grid-template-columns:224px minmax(0,1fr);background:#f6f8f6}.sidebar{position:sticky;top:0;height:100vh;padding:var(--space-6) var(--space-4);display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;color:#ffffffc2;background:var(--pine-900)}.sidebar:after{content:"黔";position:absolute;right:-72px;bottom:80px;color:#daede00d;font:400 264px/.82 STXingkai,FZShuTi,STKaiti,KaiTi,serif;letter-spacing:-.15em;transform:rotate(-28deg) skew(-4deg) scaleY(1.08);pointer-events:none;-webkit-user-select:none;user-select:none}.brand-mark{position:relative;z-index:var(--layer-content);min-height:44px;display:inline-flex;align-items:center;gap:var(--space-3);color:#fff;text-decoration:none}.brand-mark>span:last-child{display:grid;gap:var(--space-1)}.brand-mark b{font-size:21px;font-weight:650;letter-spacing:.08em;line-height:1}.brand-mark small{font:500 8px/1.2 Bahnschrift,sans-serif;letter-spacing:.17em;opacity:.6}.brand-glyph{position:relative;width:28px;height:28px;display:block}.brand-glyph i{position:absolute;width:4px;height:20px;border-radius:4px;background:#c5dbcd;transform:rotate(38deg)}.brand-glyph i:nth-child(1){left:4px;top:0}.brand-glyph i:nth-child(2){left:12px;top:4px;height:24px;background:#fff}.brand-glyph i:nth-child(3){left:20px;top:0;height:16px;opacity:.72}.sidebar-nav{position:relative;z-index:var(--layer-content);margin-top:var(--space-12);display:grid;gap:var(--space-2)}.sidebar-nav a{position:relative;min-height:44px;padding:0 var(--space-3);display:flex;align-items:center;gap:var(--space-3);color:#ffffffa8;border-radius:var(--space-2);font-size:17px;text-decoration:none;transition:color .18s ease,background-color .18s ease,transform .18s ease}.sidebar-nav a:hover{color:#fff;background:#ffffff12;transform:translate(2px)}.sidebar-nav a:focus-visible,.sidebar-actions button:focus-visible{outline:2px solid #fff;outline-offset:2px}.sidebar-nav a.active{color:var(--pine-900);background:#fff}.sidebar-nav svg{flex:0 0 auto}.sidebar-foot{position:relative;z-index:var(--layer-content);padding:var(--space-4) var(--space-3) var(--space-1);display:grid;gap:var(--space-1);border-top:1px solid rgba(255,255,255,.12)}.sidebar-foot strong{color:#fffffff0;font-size:16px;font-weight:600}.sidebar-foot small{color:#ffffff8a;font-size:14px;overflow-wrap:anywhere}.sidebar-actions{margin-top:var(--space-3);display:grid;grid-template-columns:1fr;gap:var(--space-2)}.sidebar-actions button{min-height:44px;padding:0 var(--space-3);border:1px solid rgba(255,255,255,.16);border-radius:var(--space-2);color:#fffc;background:#ffffff0d;font-size:14px;cursor:pointer}.sidebar-actions button:hover{color:#fff;background:#ffffff1a}.park-status{margin-bottom:var(--space-2);display:flex;align-items:center;gap:var(--space-2);color:#d4e7da;font-size:14px}.park-status i{width:8px;height:8px;border-radius:50%;background:#9fc5aa;box-shadow:0 0 0 4px #9fc5aa1f}.dashboard-main{min-width:0;padding:var(--space-5) var(--space-6) var(--space-6);overflow:hidden}.dashboard-content{width:min(100%,1600px);margin:0 auto}.dashboard-header{min-height:56px;margin-bottom:var(--space-6);display:flex;align-items:center;justify-content:space-between;gap:var(--space-6)}.dashboard-header h1{margin:0;color:var(--ink);font-size:28px;font-weight:650;letter-spacing:-.02em}.dashboard-header p{margin:var(--space-2) 0 0;color:var(--muted);font-size:16px}.header-upload{min-height:44px;padding:0 var(--space-4);display:inline-flex;align-items:center;gap:var(--space-2);border:0;border-radius:var(--space-2);color:#fff;background:var(--pine-900);font-size:15px;font-weight:600;cursor:pointer;transition:background-color .18s ease,transform .18s ease}.header-upload:hover{background:var(--pine-800);transform:translateY(-1px)}.header-upload:focus-visible,.history-tabs button:focus-visible,.dashboard-state button:focus-visible{outline:2px solid var(--sage-400);outline-offset:2px}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:var(--space-5);align-items:start}.primary-column{min-width:0;display:grid;gap:var(--space-4)}.insight-column{min-width:0;display:grid;gap:var(--space-4);align-content:start}.card,.snapshot-strip{border:1px solid var(--line);border-radius:var(--space-3);background:var(--paper)}.card{padding:var(--space-5)}.snapshot-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:hidden}.snapshot-strip article{min-width:0;padding:var(--space-5);display:grid;gap:var(--space-2)}.snapshot-strip article+article{border-left:1px solid var(--line)}.snapshot-strip article>span{color:var(--muted);font-size:15px;font-weight:600}.snapshot-strip article>div{display:flex;align-items:baseline;gap:var(--space-2)}.snapshot-strip strong{color:var(--pine-900);font:650 34px/1 Bahnschrift,Microsoft YaHei UI,sans-serif;font-variant-numeric:tabular-nums;letter-spacing:-.03em}.snapshot-strip small{color:var(--muted);font-size:15px}.snapshot-strip p{margin:0;color:var(--subtle);font-size:14px;line-height:1.5}.snapshot-strip .snapshot-primary{background:#eef4f0}.section-heading,.trend-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4)}.section-heading h2,.trend-heading h2{margin:0;color:var(--ink);font-size:19px;font-weight:650;letter-spacing:-.015em;text-wrap:balance}.section-heading p,.trend-heading p{margin:var(--space-1) 0 0;color:var(--muted);font-size:14px;line-height:1.5}.section-heading.compact{align-items:center}.trend-card{padding-bottom:var(--space-5)}.trend-heading{align-items:center}.history-tabs{padding:var(--space-1);display:flex;gap:var(--space-1);border:1px solid #d6e0d8;border-radius:var(--space-2);background:#f4f7f5}.history-tabs button{min-width:48px;min-height:44px;padding:0 var(--space-2);border:0;border-radius:6px;color:var(--muted);background:transparent;font:600 10px/1 Bahnschrift,sans-serif;cursor:pointer}.history-tabs button:hover{color:var(--pine-900);background:#e7eee9}.history-tabs button.active{color:#fff;background:var(--pine-900)}.trend-legend{margin-top:var(--space-4);display:flex;align-items:center;gap:var(--space-4);color:var(--muted);font-size:14px}.trend-legend span{display:inline-flex;align-items:center;gap:var(--space-2)}.trend-legend b{margin-left:auto;color:var(--pine-700);font-size:14px;font-weight:600}.actual-line-legend,.forecast-line-legend{width:24px;height:0;display:inline-block;border-top:2px solid var(--pine-800)}.forecast-line-legend{border-top-color:var(--sage-400);border-top-style:dashed}.chart-wrap{position:relative;width:100%;aspect-ratio:880 / 240;margin-top:var(--space-2);overflow:hidden}.trend-svg{width:100%;height:100%;overflow:visible}.forecast-zone{fill:#f3f7f4}.chart-grid{stroke:#dce4de;stroke-width:1}.chart-axis-label,.chart-label{fill:#74837a;font:10px/1 Bahnschrift,Microsoft YaHei UI,sans-serif}.forecast-boundary{stroke:#88a392;stroke-width:1;stroke-dasharray:4 4}.forecast-boundary-label{fill:var(--pine-700);font-size:14px;font-weight:600}.actual-line,.forecast-line{fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;transition:opacity .2s ease}.actual-line{stroke:var(--pine-800)}.forecast-line{stroke:var(--sage-400);stroke-dasharray:7 5}.actual-dot,.forecast-dot{fill:#fff;stroke-width:2;vector-effect:non-scaling-stroke;transition:r .16s ease,fill .16s ease}.actual-dot{stroke:var(--pine-800)}.forecast-dot{stroke:var(--sage-400)}.chart-point{cursor:crosshair;outline:none}.chart-hit-line{stroke:transparent;stroke-width:1}.chart-point:hover .chart-hit-line,.chart-point:focus .chart-hit-line{stroke:#1f5a433d;stroke-dasharray:3 4}.chart-point:hover .actual-dot,.chart-point:focus .actual-dot{fill:var(--pine-800)}.chart-point:hover .forecast-dot,.chart-point:focus .forecast-dot{fill:var(--sage-400)}.chart-tooltip{pointer-events:none}.chart-tooltip rect{fill:var(--pine-950);opacity:.96}.chart-tooltip text{fill:#ffffffb8;font:10px/1 Noto Sans SC,Microsoft YaHei UI,sans-serif}.chart-tooltip text tspan{fill:#fff;font-weight:650}.chart-tooltip .tooltip-date{fill:#cfe0d5;font-size:14px}.chart-caption{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);color:var(--subtle);font-size:14px}.forecast-detail{padding:var(--space-5);border:1px solid var(--line);border-radius:var(--space-3);background:var(--paper)}.week-list{margin-top:var(--space-3);display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--space-2)}.week-day{min-width:0;min-height:88px;padding:var(--space-3);display:grid;align-content:center;gap:var(--space-1);border-radius:var(--space-2)}.week-day span{color:var(--muted);font-size:14px}.week-day strong{color:#34443a;font:620 16px/1.2 Bahnschrift,sans-serif;font-variant-numeric:tabular-nums}.week-day small{font-size:14px}.week-day.level-high{background:#f3e8d8}.week-day.level-high small{color:#8d6429}.week-day.level-normal{background:#e6efe8}.week-day.level-normal small{color:#4f735d}.week-day.level-low{background:#e7edf1}.week-day.level-low small{color:#536c7c}.contribution-card{padding:var(--space-6)}.explain-badge,.quality-status{flex:0 0 auto;padding:var(--space-2) var(--space-3);border-radius:999px;color:var(--pine-700);background:var(--sage-100);font-size:14px;font-weight:650}.contribution-list{margin:var(--space-6) 0 0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-5);list-style:none}.contribution-list li{position:relative;min-width:0;display:grid;gap:var(--space-3);padding:var(--space-4) var(--space-5);border:1px solid var(--line);border-radius:var(--space-3);background:#fff;box-shadow:inset 0 0 0 1px #fff9}.contribution-list li:before{content:"";position:absolute;left:0;top:var(--space-4);bottom:var(--space-4);width:4px;border-radius:0 4px 4px 0;background:var(--theme, #316b51)}.contribution-head{display:flex;align-items:flex-start;gap:var(--space-3)}.contribution-dot{flex:0 0 auto;width:10px;height:10px;margin-top:4px;border-radius:50%;background:var(--theme, #316b51);box-shadow:0 0 0 4px color-mix(in srgb,var(--theme, #316b51) 16%,transparent)}.contribution-label{flex:1;display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3)}.contribution-label>div{min-width:0;display:grid;gap:var(--space-1)}.contribution-label strong{color:#2a3830;font-size:19px;font-weight:650}.contribution-label small{color:var(--muted);font-size:15px;line-height:1.5}.contribution-label b{color:var(--theme, var(--pine-800));font:650 22px/1 Bahnschrift,sans-serif;font-variant-numeric:tabular-nums}.contribution-track{height:10px;overflow:hidden;border-radius:999px;background:#eef2ef}.contribution-track span{height:100%;display:block;border-radius:inherit;background:var(--theme, var(--pine-700));transition:width .4s cubic-bezier(.22,1,.36,1)}.contribution-note{margin:var(--space-6) 0 0;padding-top:var(--space-4);color:var(--subtle);border-top:1px solid var(--line);font-size:15px}.contribution-insight{margin:0;color:#4a5a50;font-size:17px;line-height:1.75}.ask-agent-btn{justify-self:start;margin-top:var(--space-1);padding:var(--space-2) var(--space-4);border:1px solid color-mix(in srgb,var(--theme, #316b51) 30%,transparent);border-radius:999px;background:color-mix(in srgb,var(--theme, #316b51) 8%,#fff);color:var(--theme, var(--pine-800));font-size:15px;font-weight:600;cursor:pointer;transition:background-color .18s ease,border-color .18s ease}.ask-agent-btn:hover{background:color-mix(in srgb,var(--theme, #316b51) 16%,#fff)}.ask-agent-btn:focus-visible{outline:2px solid var(--sage-400);outline-offset:2px}.contribution-empty{margin:var(--space-5) 0 0;color:var(--muted);font-size:15px}.contribution-loading{margin-top:var(--space-5);display:grid;gap:var(--space-4)}.contribution-loading span{height:32px;border-radius:var(--space-2);background:#edf1ee;animation:skeleton-pulse 1.2s ease-in-out infinite alternate}.model-card dl,.dataset-panel dl{margin:var(--space-4) 0 0;display:grid;gap:var(--space-3)}.model-card dl>div,.dataset-panel dl>div{display:flex;justify-content:space-between;gap:var(--space-3)}.model-card dt,.dataset-panel dt{color:var(--muted);font-size:14px}.model-card dd,.dataset-panel dd{margin:0;color:#35463c;font-size:14px;font-weight:600;text-align:right}.quality-status{color:#7c5b24;background:var(--amber-soft)}.availability-list{margin:var(--space-4) 0 0;padding:0;display:grid;gap:var(--space-3);list-style:none}.availability-list li{display:flex;align-items:center;gap:var(--space-3)}.availability-list li>span{width:8px;height:8px;flex:0 0 8px;border-radius:50%}.availability-list li>div{min-width:0;display:grid;gap:var(--space-1)}.availability-list strong{color:#405047;font-size:14px;font-weight:650}.availability-list small{color:var(--muted);font-size:14px}.source-ok{background:#62a178;box-shadow:0 0 0 4px #62a1781f}.source-pending{background:#c58a32;box-shadow:0 0 0 4px #c58a321f}.dataset-panel{padding:var(--space-5) var(--space-1) 0;border-top:1px solid var(--line)}.dataset-panel .section-heading p{overflow-wrap:anywhere}.dataset-warning{margin-top:var(--space-3);display:block;color:#8d6429;font-size:14px;line-height:1.6}.dashboard-state{min-height:calc(100vh - 48px);display:grid;place-content:center;justify-items:center;gap:var(--space-3);color:var(--muted);text-align:center}.dashboard-state h2{margin:0;color:var(--ink);font-size:24px}.dashboard-state p{max-width:480px;margin:0;font-size:16px;line-height:1.7}.dashboard-state button{min-height:44px;margin-top:var(--space-2);padding:0 var(--space-4);border:0;border-radius:var(--space-2);color:#fff;background:var(--pine-900);cursor:pointer}.dashboard-loading{width:min(100%,1600px);margin:0 auto;display:grid;gap:var(--space-6)}.loading-line,.loading-grid span,.loading-chart{border-radius:var(--space-3);background:#e8eeea;animation:skeleton-pulse 1.2s ease-in-out infinite alternate}.loading-line{width:280px;height:56px}.loading-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;overflow:hidden;border:1px solid var(--line);border-radius:var(--space-3)}.loading-grid span{height:120px;border-radius:0}.loading-chart{aspect-ratio:880 / 240}@keyframes skeleton-pulse{0%{opacity:.62}to{opacity:1}}.accuracy-card,.admission-card{padding:var(--space-5)}.ring-wrap{margin-top:var(--space-4);display:flex;align-items:center;gap:var(--space-5)}.accuracy-ring{width:130px;height:130px;flex:0 0 130px;transform:rotate(-90deg)}.ring-track{fill:none;stroke:#e8eeea;stroke-width:10}.ring-progress{fill:none;stroke:var(--pine-700);stroke-width:10;stroke-linecap:round;transition:stroke-dashoffset 1.2s cubic-bezier(.22,1,.36,1)}.ring-value{transform:rotate(90deg);transform-origin:65px 65px;fill:var(--pine-900);font:650 22px/1 Bahnschrift,sans-serif;font-variant-numeric:tabular-nums}.ring-unit{transform:rotate(90deg);transform-origin:65px 65px;fill:var(--muted);font-size:14px}.ring-stats{margin:0;flex:1;display:grid;gap:var(--space-3)}.ring-stats>div{display:flex;justify-content:space-between;gap:var(--space-2)}.ring-stats dt{color:var(--muted);font-size:14px}.ring-stats dd{margin:0;color:#35463c;font-size:14px;font-weight:600}.agent-chat-card{padding:var(--space-5);display:flex;flex-direction:column;min-height:280px}.agent-badge{flex:0 0 auto;padding:var(--space-1) var(--space-2);border-radius:999px;color:#fff;background:var(--pine-700);font-size:14px;font-weight:650;letter-spacing:.04em}.chat-messages{flex:1;margin-top:var(--space-3);display:flex;flex-direction:column;gap:var(--space-3);overflow-y:auto;max-height:220px;padding-right:var(--space-1)}.chat-msg{display:flex;flex-direction:column;gap:var(--space-1)}.chat-msg.chat-user{align-items:flex-end}.chat-msg.chat-agent{align-items:flex-start}.chat-bubble{max-width:85%;padding:var(--space-2) var(--space-3);border-radius:var(--space-2);font-size:15px;line-height:1.5}.chat-bubble p{margin:0}.chat-user .chat-bubble{background:var(--pine-800);color:#fff;border-bottom-right-radius:2px}.chat-agent .chat-bubble{background:var(--sage-100);color:var(--ink);border-bottom-left-radius:2px}.chat-time{color:var(--subtle);font-size:14px}.chat-input-row{margin-top:var(--space-3);display:flex;gap:var(--space-2)}.chat-input{flex:1;min-width:0;padding:var(--space-2) var(--space-3);border:1px solid var(--line);border-radius:var(--space-2);background:#fff;color:var(--ink);font-size:15px}.chat-input:focus{outline:none;border-color:var(--pine-500);box-shadow:0 0 0 2px #2a84701f}.chat-send{flex:0 0 auto;min-height:36px;padding:0 var(--space-4);border:0;border-radius:var(--space-2);color:#fff;background:var(--pine-800);font-size:15px;font-weight:600;cursor:pointer;transition:background-color .18s ease}.chat-send:hover:not(:disabled){background:var(--pine-700)}.chat-send:disabled{opacity:.5;cursor:not-allowed}.chat-float{position:fixed;bottom:24px;right:24px;z-index:1000;width:360px;max-width:calc(100vw - 48px);background:#fff;border-radius:14px;box-shadow:0 8px 32px #0000002e;display:flex;flex-direction:column;overflow:hidden}.chat-float-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--pine-800);color:#fff}.chat-float-title{display:flex;align-items:center;gap:8px}.chat-float-title strong{font-size:18px}.chat-float-close{background:none;border:none;color:#fff;font-size:26px;line-height:1;cursor:pointer;padding:0 4px;opacity:.8}.chat-float-close:hover{opacity:1}.chat-float .chat-messages{max-height:320px;min-height:160px;padding:16px}.chat-float .chat-input-row{padding:12px 16px;border-top:1px solid var(--line)}.chat-fab{position:fixed;bottom:24px;right:24px;z-index:1000;width:56px;height:56px;border-radius:50%;border:none;background:var(--pine-800);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 16px #0003;transition:transform .18s ease,background-color .18s ease}.chat-fab:hover{background:var(--pine-700);transform:scale(1.08)}.chat-fab-badge{position:absolute;top:-2px;right:-2px;background:#e05353;color:#fff;font-size:13px;font-weight:700;padding:2px 6px;border-radius:999px}.report-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:var(--space-5);align-items:start}.report-side{min-width:0;display:grid;gap:var(--space-4)}.report-gen-panel,.report-list,.report-chat{padding:var(--space-4);border:1px solid var(--line);border-radius:var(--space-3);background:var(--paper)}.report-gen-panel h3,.report-list h3,.report-chat h3{margin:0 0 var(--space-3);color:var(--pine-800);font-size:17px;font-weight:650}.report-chat h3 small{color:var(--muted);font-size:14px;font-weight:400}.report-type-tabs{display:grid;gap:var(--space-1)}.report-type-tabs button{min-height:36px;padding:0 var(--space-3);border:1px solid var(--line);border-radius:var(--space-2);background:#fff;color:var(--muted);font-size:15px;cursor:pointer;text-align:left}.report-type-tabs button.active{border-color:var(--pine-700);background:var(--pine-900);color:#fff;font-weight:600}.report-question{margin-top:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--line);border-radius:var(--space-2);font-size:15px}.report-question:focus{outline:none;border-color:var(--pine-500)}.report-period-tabs{margin-top:var(--space-2);display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-1)}.report-period-tabs button{min-height:34px;border:1px solid var(--line);border-radius:var(--space-2);background:#fff;color:var(--muted);font-size:15px;cursor:pointer}.report-period-tabs button.active{border-color:var(--pine-700);background:var(--pine-900);color:#fff;font-weight:600}.report-gen-btn{margin-top:var(--space-3);width:100%;min-height:40px;border:0;border-radius:var(--space-2);background:var(--pine-800);color:#fff;font-size:16px;font-weight:600;cursor:pointer}.report-gen-btn:hover:not(:disabled){background:var(--pine-700)}.report-gen-btn:disabled{opacity:.6;cursor:not-allowed}.report-error{margin:var(--space-2) 0 0;color:#a32d2d;font-size:14px}.report-empty{color:var(--muted);font-size:15px}.report-item{width:100%;display:grid;gap:2px;padding:var(--space-2) var(--space-3);border:1px solid transparent;border-radius:var(--space-2);background:transparent;text-align:left;cursor:pointer}.report-item:hover{background:#f4f7f5}.report-item.active{border-color:var(--pine-500);background:var(--sage-100)}.report-item-type{color:var(--ink);font-size:15px;font-weight:650}.report-item small{color:var(--muted);font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.report-status{justify-self:start;padding:1px 6px;border-radius:999px;font-size:14px;font-weight:650}.st-done{background:#e1f5ee;color:#0f6e56}.st-running{background:#faeeda;color:#854f0b}.st-failed{background:#fcebeb;color:#a32d2d}.report-main{min-width:0;min-height:400px;padding:var(--space-6);border:1px solid var(--line);border-radius:var(--space-3);background:var(--paper)}.report-doc-wrap{display:grid;gap:var(--space-4)}.report-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding-bottom:var(--space-3);border-bottom:1px solid var(--line)}.report-toolbar-title{color:var(--muted);font-size:15px;font-weight:600}.report-toolbar-actions{display:flex;gap:var(--space-2)}.report-download-btn{min-height:32px;padding:0 var(--space-3);border:1px solid var(--pine-500);border-radius:var(--space-2);background:#fff;color:var(--pine-800);font-size:15px;font-weight:600;cursor:pointer;transition:background-color .18s ease}.report-download-btn:hover{background:var(--sage-100)}.report-empty-main{display:grid;place-content:center;min-height:400px;color:var(--muted);font-size:17px}.report-doc h1{margin:0 0 var(--space-4);color:var(--pine-900);font-size:24px;font-weight:650;padding-bottom:var(--space-3);border-bottom:2px solid var(--pine-900)}.report-doc h2{margin:var(--space-5) 0 var(--space-2);color:var(--pine-800);font-size:19px;font-weight:650}.report-doc h3{margin:var(--space-4) 0 var(--space-2);color:var(--ink);font-size:17px;font-weight:650}.report-doc p{margin:var(--space-2) 0;color:#35463c;font-size:16px;line-height:1.8}.report-doc li{margin:var(--space-1) 0 var(--space-1) var(--space-4);color:#35463c;font-size:16px;line-height:1.7;list-style:disc}.report-doc ul{margin:var(--space-2) 0;padding:0}.report-doc blockquote{margin:var(--space-3) 0;padding:var(--space-2) var(--space-4);border-left:3px solid var(--sage-400);background:var(--sage-100);color:#4a5a50;font-size:15px;border-radius:0 var(--space-2) var(--space-2) 0}.report-doc strong{color:var(--pine-900)}.report-doc code{padding:1px 4px;background:#f4f7f5;border-radius:3px;font-size:15px}.report-progress{display:grid;gap:var(--space-4);place-content:start}.report-progress h3{margin:0;color:var(--pine-800);font-size:18px}.progress-stages{display:grid;gap:var(--space-2)}.stage{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--line);border-radius:var(--space-2);background:#fbfcfb;color:var(--muted);font-size:15px}.stage i{width:8px;height:8px;border-radius:50%;background:#dce4de}.stage small{margin-left:auto;font-size:14px}.stage-done{color:var(--pine-800)}.stage-done i{background:#62a178}.stage-running{border-color:var(--pine-500);color:var(--pine-900)}.stage-running i{background:var(--amber);animation:stage-pulse 1s ease-in-out infinite alternate}.stage-failed{color:#a32d2d}.stage-failed i{background:#e24b4a}.stage-degraded{color:#854f0b}.stage-degraded i{background:var(--amber)}@keyframes stage-pulse{0%{opacity:.4}to{opacity:1}}.progress-detail{margin:0;color:var(--muted);font-size:14px}.report-chat{display:flex;flex-direction:column}.report-chat-messages{flex:1;display:flex;flex-direction:column;gap:var(--space-2);overflow-y:auto;max-height:220px;margin-bottom:var(--space-2)}.report-chat-hint{margin:0;color:var(--muted);font-size:14px;line-height:1.6}.report-chat .chat-bubble{font-size:15px;max-width:92%}.report-chat .chat-input{font-size:15px}.report-summary{margin-bottom:var(--space-5);padding:var(--space-5);border:1px solid var(--line);border-radius:var(--space-3);background:linear-gradient(180deg,#f7faf8,#fff)}.summary-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-3);margin-bottom:var(--space-5)}.summary-kpi{display:grid;gap:3px;padding:var(--space-3) var(--space-4);background:#fff;border:.5px solid var(--line);border-radius:var(--space-2)}.summary-kpi span{color:var(--muted);font-size:14px;font-weight:600}.summary-kpi strong{color:var(--pine-900);font:650 20px/1.2 Bahnschrift,sans-serif;font-variant-numeric:tabular-nums}.summary-kpi strong small{color:var(--muted);font-size:14px;font-weight:400;margin-left:2px}.summary-body{display:grid;grid-template-columns:1.4fr 1fr;gap:var(--space-5);align-items:stretch}.summary-chart-title{color:var(--pine-800);font-size:16px;font-weight:650;margin-bottom:var(--space-2)}.summary-svg{width:100%;height:150px;display:block}.summary-contrib-list{display:grid;gap:var(--space-3)}.summary-contrib-row{display:grid;grid-template-columns:84px 1fr 44px;align-items:center;gap:var(--space-2)}.summary-contrib-label{color:#405047;font-size:15px}.summary-contrib-track{height:10px;background:#eef2ef;border-radius:999px;overflow:hidden}.summary-contrib-track span{display:block;height:100%;border-radius:inherit}.summary-contrib-row b{color:var(--pine-800);font:650 12px/1 Bahnschrift,sans-serif;text-align:right}.indicator-card{padding:var(--space-5)}.indicator-grid{margin-top:var(--space-4);display:grid;grid-template-columns:repeat(12,1fr);gap:var(--space-4)}.indicator-block{padding:var(--space-4) var(--space-5);border:1px solid var(--line);border-radius:var(--space-3);background:#fbfcfb;grid-column:span 4}.indicator-block-wide{grid-column:span 8}.indicator-block h3{margin:0;color:var(--pine-800);font-size:17px;font-weight:650}.block-head{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);padding-bottom:var(--space-2);border-bottom:1px solid var(--line)}.block-icon{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;flex:0 0 26px;border-radius:7px;background:var(--sage-100);color:var(--pine-700)}.accuracy-block{display:flex;align-items:center;gap:var(--space-4);margin-top:var(--space-2)}.accuracy-block-ring{width:110px;height:110px;flex:0 0 110px;transform:rotate(-90deg)}.accuracy-block-ring .ring-track,.accuracy-block-ring .ring-progress{stroke-width:9}.accuracy-block-value{transform:rotate(90deg);transform-origin:55px 55px;fill:var(--pine-900);font:650 24px/1 Bahnschrift,sans-serif;font-variant-numeric:tabular-nums}.accuracy-block-unit{transform:rotate(90deg);transform-origin:55px 55px;fill:var(--muted);font-size:15px}.accuracy-block-stats{flex:1;display:grid;gap:var(--space-3)}.holiday-layout{display:grid;grid-template-columns:150px 1fr;gap:var(--space-4);align-items:start}.holiday-right{min-width:0}.season-pie-wrap{display:grid;gap:var(--space-2);justify-items:center}.season-pie{width:120px;height:120px;transform:rotate(-90deg)}.pie-legend{display:grid;gap:2px;font-size:14px;color:var(--muted)}.pie-legend span{display:inline-flex;align-items:center;gap:4px}.pie-legend i{width:8px;height:8px;border-radius:2px;display:inline-block}.rain-dry-chart{display:flex;justify-content:space-around;gap:var(--space-4);margin:var(--space-3) 0}.rd-col{display:grid;gap:3px;justify-items:center}.rd-bar-wrap{width:56px;display:flex;align-items:flex-end;background:#f4f7f5;border-radius:6px 6px 3px 3px;overflow:hidden}.rd-bar{width:100%;display:block;border-radius:6px 6px 0 0;transition:height .5s cubic-bezier(.22,1,.36,1)}.rd-rain{background:#378add}.rd-dry{background:#0f6e56}.rd-val{color:var(--pine-900);font:600 10px/1 Bahnschrift,sans-serif;font-variant-numeric:tabular-nums}.rd-label{color:var(--muted);font-size:14px}.attention-area-wrap{margin-top:var(--space-3)}.attention-area{width:100%;height:56px;display:block}.area-legend{display:flex;gap:var(--space-3);margin-top:var(--space-1);font-size:14px;color:var(--muted)}.area-legend span{display:inline-flex;align-items:center;gap:4px}.area-legend i{width:8px;height:8px;border-radius:50%;display:inline-block}.kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-2);margin-bottom:var(--space-3)}.kpi{display:grid;gap:2px;padding:var(--space-2) var(--space-3);background:#fff;border:.5px solid var(--line);border-radius:var(--space-2)}.kpi span{color:var(--muted);font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.kpi strong{color:var(--pine-900);font:650 14px/1.2 Bahnschrift,sans-serif;font-variant-numeric:tabular-nums}.kpi strong small{color:var(--muted);font-size:14px;font-weight:400;margin-left:2px}.kpi-up{color:#993c1d!important}.kpi-down{color:#0f6e56!important}.gauge-flex{display:flex;gap:var(--space-4);justify-content:space-around;margin-bottom:var(--space-3)}.mini-chart-wrap{position:relative;margin-top:var(--space-2);overflow:hidden}.mini-bar-chart{width:100%;height:calc(100% - 16px);display:block;overflow:hidden}.mini-tooltip{position:absolute;top:0;right:var(--space-2);padding:var(--space-1) var(--space-2);background:var(--pine-950);color:#fff;font-size:14px;border-radius:var(--space-1);font-variant-numeric:tabular-nums;pointer-events:none}.mini-label{display:block;margin-top:var(--space-1);color:var(--muted);font-size:14px;text-align:right}.spark-cell{padding:var(--space-2);background:#fff;border:.5px solid var(--line);border-radius:var(--space-2)}.spark-label{display:block;color:var(--ink);font-size:14px;font-weight:600;margin-bottom:2px}.spark-label small{color:var(--muted);font-size:14px;font-weight:400;display:block}.sparkline-svg{width:100%;height:48px;display:block}.holiday-sparklines{margin-top:var(--space-3);display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:var(--space-2)}.capacity-stack{margin:var(--space-3) 0}.stack-bar{display:flex;width:100%;height:16px;border-radius:4px;overflow:hidden;background:#f4f7f5}.stack-bar>span{display:block;height:100%;transition:width .3s ease}.seg-sold{background:#d85a30}.seg-rest{background:#ba7517}.seg-near{background:#97c459}.stack-legend{display:flex;gap:var(--space-3);margin-top:var(--space-1);font-size:14px;color:var(--muted)}.stack-legend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:3px;vertical-align:-1px}.stack-legend .seg-sold{background:#d85a30}.stack-legend .seg-rest{background:#ba7517}.stack-legend .seg-near{background:#97c459}.temp-bar-wrap{margin:var(--space-3) 0}.temp-bar{position:relative;height:6px;background:linear-gradient(90deg,#378add,#97c459,#d85a30);border-radius:3px;margin:6px 0 4px}.temp-range{position:absolute;top:0;height:100%}.temp-avg{position:absolute;top:-3px;width:2px;height:12px;background:var(--pine-950);border-radius:1px}.temp-legend{display:flex;justify-content:space-between;color:var(--muted);font-size:14px}.compare-block{margin-bottom:var(--space-3);padding-bottom:var(--space-3);border-bottom:1px dashed var(--line)}.compare-block:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}.compare-label{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-2)}.compare-label span{color:var(--ink);font-size:15px;font-weight:600}.compare-label b{font:650 12px/1 Bahnschrift,sans-serif}.compare-bars{display:grid;gap:var(--space-1)}.cmp-row{display:grid;grid-template-columns:48px 1fr 56px;align-items:center;gap:var(--space-2)}.cmp-row small{color:var(--muted);font-size:14px}.cmp-track{height:8px;background:#f4f7f5;border-radius:4px;overflow:hidden}.cmp-track span{display:block;height:100%;border-radius:4px;transition:width .4s ease}.cmp-before{background:#888780}.cmp-after{background:#316b51}.cmp-row b{color:var(--pine-900);font:600 10px/1 Bahnschrift,sans-serif;font-variant-numeric:tabular-nums;text-align:right}.transport-stats{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2);margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--line)}.weather-impact-bar{display:grid;gap:var(--space-2);margin-top:var(--space-3)}.impact-row{display:grid;grid-template-columns:80px 1fr 50px;align-items:center;gap:var(--space-2)}.impact-row>span{color:var(--muted);font-size:14px}.impact-track{height:8px;background:#f4f7f5;border-radius:4px;overflow:hidden}.impact-track span{display:block;height:100%;background:#378add;border-radius:4px}.impact-row b{color:var(--pine-900);font:600 10px/1 Bahnschrift,sans-serif;text-align:right}.correlation-dial{position:relative;width:120px;height:70px;margin:0 auto var(--space-2)}.corr-svg{width:100%;height:100%}.corr-center{position:absolute;bottom:0;left:50%;transform:translate(-50%);text-align:center}.corr-center strong{display:block;color:var(--pine-900);font:650 18px/1 Bahnschrift,sans-serif}.corr-center small{color:var(--muted);font-size:14px}.bar-row{display:grid;grid-template-columns:80px 1fr 50px;align-items:center;gap:var(--space-2);padding:var(--space-1) 0}.bar-label{color:var(--muted);font-size:14px}.bar-track{height:6px;background:#f4f7f5;border-radius:3px;overflow:hidden}.bar-track span{display:block;height:100%;background:var(--pine-500);border-radius:3px;transition:width .4s ease}.bar-row b{color:var(--pine-900);font:600 10px/1 Bahnschrift,sans-serif;text-align:right}.quality-stack{display:grid;gap:var(--space-2);margin-bottom:var(--space-3)}.qual-row{display:grid;grid-template-columns:64px 1fr 48px;align-items:center;gap:var(--space-2)}.qual-row>span{color:var(--muted);font-size:14px}.qual-track{height:8px;background:#f4f7f5;border-radius:4px;overflow:hidden}.qual-track span{display:block;height:100%;border-radius:4px}.qual-row b{color:var(--pine-900);font:600 10px/1 Bahnschrift,sans-serif;text-align:right}.quality-kpi{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--line)}.indicator-subgrid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2) var(--space-4)}.metric-row{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-2);padding:var(--space-1) 0}.metric-label{color:var(--muted);font-size:14px}.metric-value{color:#35463c;font:600 12px/1 Bahnschrift,sans-serif;font-variant-numeric:tabular-nums;text-align:right}.metric-up .metric-value{color:#993c1d}.metric-down .metric-value{color:#0f6e56}.indicator-empty{margin-top:var(--space-4);color:var(--muted);font-size:16px;text-align:center;padding:var(--space-6)}.gauge-dial-wrap{position:relative;width:110px;height:64px;margin:0 auto var(--space-2)}.gauge-dial{width:100%;height:100%}.gauge-center{position:absolute;bottom:0;left:50%;transform:translate(-50%);text-align:center;display:grid;gap:0}.gauge-center strong{font:650 16px/1 Bahnschrift,sans-serif;font-variant-numeric:tabular-nums}.gauge-center small{color:var(--muted);font-size:14px}.holiday-curves{margin-top:var(--space-3)}.curves-title{color:var(--muted);font-size:14px}.curves-chart{margin-top:var(--space-2);display:grid;gap:var(--space-2)}.curve-row{display:flex;align-items:flex-end;gap:var(--space-2)}.curve-name{flex:0 0 48px;color:var(--muted);font-size:14px;text-align:right;padding-bottom:2px}.curve-bars{flex:1;display:flex;align-items:flex-end;gap:2px;height:40px}.curve-bar{flex:1;min-width:4px;background:var(--pine-500);border-radius:2px 2px 0 0;opacity:.8;transition:opacity .15s ease}.curve-bar:hover{opacity:1}@media(max-width:1200px){.dashboard-grid{grid-template-columns:1fr}.insight-column{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--space-4)}}@media(max-width:900px){.dashboard-page{grid-template-columns:192px minmax(0,1fr)}.dashboard-main{padding-inline:var(--space-5)}.snapshot-strip{grid-template-columns:1fr}.snapshot-strip article+article{border-top:1px solid var(--line);border-left:0}.contribution-list{grid-template-columns:1fr;gap:var(--space-4)}.indicator-block-wide,.indicator-block{grid-column:span 1}.indicator-subgrid{grid-template-columns:1fr}.kpi-row{grid-template-columns:1fr 1fr}.holiday-layout{grid-template-columns:1fr;justify-items:center}.season-pie-wrap{grid-template-columns:120px 1fr;align-items:center}.report-layout{grid-template-columns:1fr}.report-side{grid-template-columns:1fr 1fr}.report-chat{grid-column:span 2}.report-main{min-height:300px}.summary-kpis{grid-template-columns:repeat(2,1fr)}.summary-body{grid-template-columns:1fr}}@media(max-width:720px){.dashboard-page{display:block}.sidebar{position:relative;width:100%;height:auto;padding:var(--space-4);display:block}.sidebar:after,.sidebar-foot{display:none}.sidebar-nav{margin-top:var(--space-3);display:flex;overflow-x:auto;padding-bottom:var(--space-1)}.sidebar-nav a{min-width:max-content}.dashboard-main{padding:var(--space-5) var(--space-4) var(--space-8);overflow:visible}.dashboard-header{align-items:flex-start}.dashboard-header h1{font-size:25px}.header-upload{padding-inline:var(--space-3)}.header-upload svg{display:none}.primary-column{gap:var(--space-5)}.trend-card,.contribution-card,.forecast-detail{padding:var(--space-4)}.trend-heading{align-items:flex-start;flex-direction:column}.history-tabs{width:100%}.history-tabs button{flex:1}.trend-legend{align-items:flex-start;flex-wrap:wrap}.trend-legend b{width:100%;margin-left:0}.chart-wrap{aspect-ratio:880 / 220}.week-list{overflow-x:auto;grid-template-columns:repeat(7,minmax(88px,1fr));padding-bottom:var(--space-1)}.insight-column{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
