:root{--bg:#f7f8f5;--surface:#fff;--surface-2:#eef3ef;--ink:#17201d;--muted:#65736c;--line:#dbe2dc;--green:#197a50;--green-soft:#dff1e8;--yellow:#a86c00;--yellow-soft:#fff2cf;--orange:#b84f22;--orange-soft:#ffe1d2;--red:#b72f2f;--red-soft:#ffe0e0;--blue:#1d5e89;--shadow:0 16px 40px #16201d14;--font:Inter, "Microsoft YaHei", "PingFang SC", "Segoe UI", Arial, sans-serif;font-family:var(--font);color:var(--ink);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{min-width:320px;margin:0}button,input{font:inherit}button{cursor:pointer;border:0}button:disabled{cursor:not-allowed;opacity:.55}.app-shell{width:min(1180px,100% - 28px);margin:0 auto;padding:28px 0 42px}.topbar{align-items:center;gap:14px;margin-bottom:16px;display:grid}.title-lockup{min-width:0}.eyebrow{color:var(--blue);margin:0 0 6px;font-size:13px;font-weight:800}h1,h2{letter-spacing:0;margin:0}h1{text-shadow:0 2px #ffffffe6,0 8px 22px #16201d24;white-space:nowrap;min-width:0;font-size:clamp(30px,3.5vw,40px);font-weight:900;line-height:1.05;display:block}h1 span:last-child{color:var(--green);font-size:1em;font-weight:inherit}h2{font-size:21px;line-height:1.2}.search-panel{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);grid-template-columns:1fr auto auto auto;gap:8px;padding:8px;display:grid}.search-box{border:1px solid var(--line);background:#fbfcfa;align-items:center;gap:8px;min-width:0;padding:0 12px;display:flex}.search-box input{width:100%;min-width:0;height:42px;color:var(--ink);background:0 0;border:0;outline:0}.search-panel button,.result-strip button{color:#fff;background:var(--ink);justify-content:center;align-items:center;gap:7px;min-height:42px;padding:0 14px;display:inline-flex}.search-panel .icon-button{width:42px;color:var(--ink);background:var(--surface-2);padding:0}.result-strip{gap:8px;padding:4px 0 18px;display:flex;overflow-x:auto}.result-strip button{max-width:min(280px,78vw);color:var(--ink);border:1px solid var(--line);background:var(--surface);text-overflow:ellipsis;white-space:nowrap;flex:none;overflow:hidden}.result-strip button.active{color:#fff;background:var(--green);border-color:var(--green)}.notice{border:1px solid var(--line);background:var(--surface);align-items:center;gap:8px;margin-bottom:14px;padding:12px 14px;display:flex}.notice.danger{color:var(--red);background:var(--red-soft);border-color:#efb8b8}.dashboard-grid,.lower-grid{gap:14px;display:grid}.dashboard-grid{grid-template-columns:1fr}.lower-grid{grid-template-columns:1fr;margin-top:14px}.score-panel,.timeline-panel,.insight-panel,.source-panel{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow)}.score-panel{border-left:8px solid var(--green);min-height:318px;color:var(--ink);text-align:left;flex-direction:column;gap:18px;padding:20px;display:flex}.score-panel.active{outline-offset:-2px;outline:2px solid #197a5047}.tone-excellent,.tone-good{border-left-color:var(--green)}.tone-fair{border-left-color:var(--yellow)}.tone-poor{border-left-color:var(--orange)}.tone-bad{border-left-color:var(--red)}.place-line,.timestamp,.warning-list p,.source-title,.section-head{align-items:center;gap:8px;display:flex}.place-line,.timestamp{color:var(--muted)}.place-line{min-width:0}.place-line span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.score-row{flex-wrap:wrap;justify-content:flex-start;align-items:flex-end;gap:18px;display:flex}.score-block{min-width:0}.score-main{align-items:center;gap:16px;display:flex}.score-label{color:var(--muted);margin:0 0 4px;font-weight:700}.score-number{font-size:82px;line-height:.95;display:block}.grade-pill{text-align:center;color:#fff;background:var(--muted);border:0;min-width:124px;padding:16px 20px;font-size:30px;font-weight:900;line-height:1;box-shadow:0 10px 24px #16201d29}.suitability-card{border:1px solid var(--line);background:#fbfcfa;gap:4px;min-width:142px;padding:12px 14px;display:grid}.suitability-card span,.suitability-card em{color:var(--muted);font-size:12px;font-style:normal;font-weight:800}.suitability-card strong{color:var(--ink);font-size:34px;line-height:1}.suitability-card.tone-excellent,.suitability-card.tone-good{background:#f2faf5;border-color:#b7d8c6}.suitability-card.tone-fair{background:#fff9e8;border-color:#ead092}.suitability-card.tone-poor{background:#fff0e8;border-color:#e6b08f}.suitability-card.tone-bad{background:#fff0f0;border-color:#e1a1a1}.tone-excellent .grade-pill,.tone-good .grade-pill{background:var(--green)}.tone-fair .grade-pill{background:var(--yellow)}.tone-poor .grade-pill{background:var(--orange)}.tone-bad .grade-pill{background:var(--red)}.summary{max-width:620px;margin:0;font-size:18px;line-height:1.55}.warning-list{gap:6px;margin-top:auto;display:grid}.warning-list p{color:var(--orange);margin:0;font-size:13px}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.metric-card{border:1px solid var(--line);background:var(--surface);min-height:154px;color:var(--ink);text-align:left;flex-direction:column;justify-content:space-between;padding:14px;transition:background .16s,border-color .16s,color .16s;display:flex}.metric-card:hover{border-color:#b7d8c6}.metric-card.active{color:#fff;border-color:var(--green);background:var(--green)}.metric-head{color:var(--muted);align-items:center;gap:7px;font-size:14px;font-weight:800;display:flex}.quality-badge{white-space:nowrap;border:1px solid;border-radius:999px;margin-left:auto;padding:3px 7px;font-size:11px;font-style:normal;line-height:1}.quality-observed{color:var(--green);background:var(--green-soft)}.quality-forecast{color:#0a6f98;background:#e9f6fb}.quality-fallback{color:var(--muted);background:#eef2ef}.metric-card strong{font-size:31px;line-height:1}.metric-card small,.source-card small{color:var(--muted);overflow-wrap:anywhere;font-size:12px;line-height:1.4}.metric-guidance{color:var(--ink);overflow-wrap:anywhere;margin:0;font-size:12px;line-height:1.45}.metric-card.active .metric-head,.metric-card.active small,.metric-card.active .metric-guidance,.metric-card.active .quality-badge{color:inherit}.metric-card.active .quality-badge{background:#ffffff2e}.timeline-panel,.insight-panel,.source-panel{padding:18px}.section-head{justify-content:space-between;margin-bottom:16px}.chart-wrap{border:1px solid var(--line);background:#fbfcfa;width:100%;height:220px;padding:14px 10px 24px 48px;position:relative}.date-tabs{grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-bottom:12px;display:grid}.date-tabs button{min-width:0;color:var(--ink);border:1px solid var(--line);text-align:center;background:#fbfcfa;gap:2px;padding:10px 8px;display:grid}.date-tabs button.active{color:#fff;border-color:var(--green);background:var(--green)}.date-tabs strong,.date-tabs span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.date-tabs strong{font-size:14px}.date-tabs span{color:inherit;opacity:.82;font-size:12px}.chart-plot{width:100%;height:100%;position:relative}.chart-plot svg{width:100%;height:100%;display:block;overflow:visible}.chart-wrap line{stroke:#dfe6e1;stroke-width:.8px}.chart-wrap polyline{fill:none;stroke:var(--green);stroke-width:2.1px;vector-effect:non-scaling-stroke}.chart-node{border:1px solid var(--green);width:24px;height:24px;color:var(--green);cursor:pointer;background:#fff;border-radius:999px;outline:none;place-items:center;padding:0;transition:background .12s,border-color .12s,color .12s;display:grid;position:absolute;transform:translate(-50%,-50%)}.chart-node>svg{width:13px;height:13px}.chart-node:hover,.chart-node:focus-visible{background:var(--green-soft);border-color:var(--green)}.chart-node.active{color:#fff;background:var(--green);border-color:var(--green)}.y-axis-labels{width:36px;color:var(--muted);letter-spacing:0;pointer-events:none;font-size:10px;font-weight:700;position:absolute;inset:14px auto 12px 8px}.y-axis-labels span{white-space:nowrap;opacity:.9;position:absolute;left:0;transform:translateY(-50%)}.hour-strip{height:12px;color:var(--muted);pointer-events:none;font-size:11px;line-height:1;position:absolute;bottom:8px;left:48px;right:10px}.hour-strip span{white-space:nowrap;position:absolute;top:0;transform:translate(-50%)}.window-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.window-list article{background:#f6faf7;border:1px solid #cddbd2;justify-content:space-between;align-items:center;gap:8px;padding:10px 11px;display:flex}.window-list .window-empty{background:#fbfcfa;border-style:dashed;grid-column:1/-1;justify-content:flex-start}.window-list strong,.window-list span{white-space:nowrap;font-size:12px;line-height:1.15}.window-list strong{font-weight:700}.window-list span{color:var(--muted);text-align:right}.drag-list{gap:12px;display:grid}.drag-list article{border:1px solid var(--line);background:#fbfcfa;gap:10px;padding:13px;display:grid}.drag-list strong{margin-bottom:4px;display:block}.drag-list span,.empty-state{color:var(--muted);line-height:1.5}meter{width:100%;height:10px}.source-panel{margin-top:14px}.source-grid{grid-template-columns:1fr;gap:10px;display:grid}.source-card{border:1px solid var(--line);background:#fbfcfa;gap:7px;padding:14px;display:grid}.source-title{align-items:center;gap:8px;display:flex}.source-card p{color:var(--muted);margin:0}.source-note{color:var(--muted);margin:12px 0 0;font-size:12px;line-height:1.5}.state-ok .source-title{color:var(--green)}.state-partial .source-title{color:var(--yellow)}.state-unavailable .source-title{color:var(--orange)}.skeleton{background:linear-gradient(90deg,#edf1ed,#f8faf8,#edf1ed) 0 0/200% 100%;min-height:80px;animation:1.2s linear infinite pulse}.chart-skeleton{min-height:220px}.text-skeleton{min-height:180px}.source-skeleton{min-height:108px}@keyframes pulse{0%{background-position:200% 0}to{background-position:-200% 0}}@media (width<=680px){.app-shell{width:min(100% - 18px,1180px);padding-top:16px}h1{font-size:34px}.title-lockup{overflow-x:auto}.search-panel{grid-template-columns:1fr auto auto}.search-panel button[type=submit] span{display:none}.search-box{grid-column:1/-1}.score-number{font-size:68px}.score-main{gap:12px}.grade-pill{min-width:96px;padding:13px 14px;font-size:24px}.metric-grid,.window-list{grid-template-columns:1fr}.date-tabs{grid-template-columns:repeat(5,minmax(62px,1fr));padding-bottom:2px;overflow-x:auto}}@media (width>=920px){.topbar{grid-template-columns:minmax(0,1fr) 520px;align-items:center}.dashboard-grid{grid-template-columns:minmax(340px,.9fr) minmax(520px,1.1fr)}.lower-grid{grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr)}.source-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width>=1120px){.metric-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
