:root{--bg: #080b0d;--panel: rgba(14, 19, 22, .72);--panel-solid: rgba(17, 23, 26, .94);--edge: rgba(150, 184, 176, .16);--edge-strong: rgba(150, 184, 176, .3);--text: #e9efec;--muted: #9aaba6;--faint: #6b7c78;--accent: #7fd8b0;--accent-soft: rgba(127, 216, 176, .14);--amber: #f0c078;--warn: #ff8f7a;--radius: 16px;--display: "Instrument Serif", Georgia, serif;--ui: "Inter", "Segoe UI", "Microsoft YaHei", system-ui, sans-serif;--mono: "JetBrains Mono", ui-monospace, Menlo, monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--ui);font-size:14px;-webkit-font-smoothing:antialiased;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer}.app{position:fixed;inset:0;display:grid;grid-template-columns:332px minmax(0,1fr) 344px;grid-template-rows:auto auto minmax(0,1fr) auto auto;grid-template-areas:"top    top     top" "intro  .       right" "left   camera  right" "tick   tick    tick" "foot   foot    foot";gap:14px 18px;padding:16px 20px 12px;pointer-events:none}.app>*{pointer-events:auto;min-width:0}.stage{position:absolute;inset:0;z-index:0;pointer-events:auto}.scene-host{position:absolute;inset:0}.scene-host canvas{display:block;width:100%;height:100%}.stage-vignette{position:absolute;inset:0;pointer-events:none;background:radial-gradient(120% 90% at 50% 45%,transparent 42%,rgba(4,6,7,.68) 100%),linear-gradient(to bottom,rgba(4,6,7,.5),transparent 26%,transparent 68%,rgba(4,6,7,.62))}.app>*:not(.stage){position:relative;z-index:2}.topbar{grid-area:top;display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.brand{display:flex;flex-direction:column;gap:2px}.brand-mark{font-family:var(--mono);font-size:19px;font-weight:600;letter-spacing:.34em;color:var(--text)}.brand-tag{font-size:11.5px;color:var(--faint);letter-spacing:.02em}.tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.pulse{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);padding-right:4px}.pulse i{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 #7fd8b08c;animation:breathe 2.6s ease-out infinite}@keyframes breathe{70%{box-shadow:0 0 0 7px #7fd8b000}to{box-shadow:0 0 #7fd8b000}}.chip,.segmented button,.camera-bar button{border:1px solid var(--edge);background:var(--panel);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:999px;padding:7px 13px;font-size:12px;color:var(--muted);transition:color .16s,border-color .16s,background .16s}.chip:hover,.segmented button:hover,.camera-bar button:hover:not(:disabled){color:var(--text);border-color:var(--edge-strong)}.chip[data-on=true],.segmented button[data-on=true],.camera-bar button[data-on=true]{color:var(--accent);border-color:#7fd8b06b;background:var(--accent-soft)}.segmented{display:flex;gap:4px;padding:3px;border-radius:999px;border:1px solid var(--edge);background:var(--panel);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.segmented button{border:none;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;padding:4px 11px;font-family:var(--mono);font-size:11px}.intro{grid-area:intro;display:flex;flex-direction:column;gap:10px;max-width:332px;padding-top:10px}.kicker{font-family:var(--mono);font-size:10.5px;letter-spacing:.17em;text-transform:uppercase;color:var(--accent)}.intro h1{margin:0;font-family:var(--display);font-weight:400;font-size:40px;line-height:1.04;letter-spacing:-.01em}.intro p{margin:0;font-size:12.8px;line-height:1.55;color:var(--muted)}.counters{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}.counter{flex:1 1 74px;border:1px solid var(--edge);border-radius:12px;background:var(--panel);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);padding:8px 10px}.counter.is-wide{flex:1 1 100%}.counter b{display:block;font-family:var(--mono);font-size:16px;font-weight:500;color:var(--text)}.counter span{font-size:10px;letter-spacing:.11em;text-transform:uppercase;color:var(--faint)}.panel{border:1px solid var(--edge);border-radius:var(--radius);background:var(--panel);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:0 22px 50px #0000006b;display:flex;flex-direction:column;overflow:hidden}.panel-left{grid-area:left;align-self:start;max-height:100%}.panel-right{grid-area:right;max-height:100%}.panel-head{padding:14px 16px 10px;border-bottom:1px solid var(--edge)}.panel-head h2{margin:0;font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}.panel-head p{margin:5px 0 0;font-size:11.5px;color:var(--faint);line-height:1.45}.roster{list-style:none;margin:0;padding:7px;overflow-y:auto}.roster button{width:100%;display:grid;grid-template-columns:10px 1fr auto;align-items:center;gap:9px;padding:9px 10px;border:1px solid transparent;border-radius:11px;background:transparent;text-align:left;transition:background .15s,border-color .15s}.roster button:hover{background:#ffffff0a}.roster button[data-on=true]{background:var(--accent-soft);border-color:#7fd8b052}.dot{width:10px;height:10px;border-radius:50%;box-shadow:0 0 0 1px #ffffff2e}.roster-name{font-size:13px;color:var(--text)}.roster-doing{font-family:var(--mono);font-size:10px;color:var(--faint);letter-spacing:.04em}.tabs{display:flex;gap:2px;padding:8px 8px 0;border-bottom:1px solid var(--edge)}.tabs button{flex:1;border:none;background:transparent;padding:9px 4px 10px;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);border-bottom:2px solid transparent;margin-bottom:-1px}.tabs button:hover{color:var(--muted)}.tabs button[data-on=true]{color:var(--accent);border-bottom-color:var(--accent)}.panel-body{padding:14px;overflow-y:auto}.stack{display:flex;flex-direction:column;gap:12px}.block{border:1px solid var(--edge);border-radius:12px;padding:12px;background:#ffffff04}.block-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.block-head h3{margin:0;font-size:12.5px;font-weight:600;color:var(--text)}.badge{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;padding:3px 8px;border-radius:999px;color:var(--accent);background:var(--accent-soft);border:1px solid rgba(127,216,176,.3)}.badge.is-warn{color:var(--warn);background:#ff8f7a1f;border-color:#ff8f7a4d}.hint{margin:0 0 10px;font-size:11.5px;line-height:1.5;color:var(--faint)}.prose{margin:0 0 9px;font-size:12.3px;line-height:1.62;color:var(--muted)}.empty{margin:0;font-size:12.5px;line-height:1.6;color:var(--faint)}.signal{margin-bottom:9px}.signal-head{display:flex;justify-content:space-between;font-size:11.5px;color:var(--muted);margin-bottom:5px}.signal-head b{font-family:var(--mono);color:var(--text);font-weight:500}.meter{height:4px;border-radius:999px;background:#ffffff12;overflow:hidden}.meter i{display:block;height:100%;border-radius:999px;transition:width .4s ease;background:var(--accent)}.meter i[data-tone=mid]{background:var(--amber)}.meter i[data-tone=high]{background:var(--warn)}.vital{display:grid;grid-template-columns:62px 1fr 28px;align-items:center;gap:9px;margin-bottom:8px;font-size:11.5px;color:var(--muted)}.vital b{font-family:var(--mono);font-weight:500;text-align:right;color:var(--text)}.spark{width:100%;height:56px;display:block}.spark polyline{fill:none;stroke:var(--accent);stroke-width:1.4;vector-effect:non-scaling-stroke}.spark .spark-fill{fill:#7fd8b01a;stroke:none}.rowline{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:6px 0;font-size:12px;color:var(--muted);border-bottom:1px solid rgba(255,255,255,.05)}.rowline:last-child{border-bottom:none}.rowline b{font-family:var(--mono);font-size:11.5px;font-weight:500;color:var(--text);text-align:right}.rat-head{display:flex;align-items:center;gap:11px}.rat-swatch{width:34px;height:34px;border-radius:11px;box-shadow:0 0 0 1px #ffffff29}.rat-head h3{margin:0;font-family:var(--display);font-size:22px;font-weight:400}.rat-head .hint{margin:0}.primary{width:100%;border:1px solid rgba(127,216,176,.38);background:var(--accent-soft);color:var(--accent);border-radius:11px;padding:10px;font-size:12.5px;transition:background .16s}.primary:hover{background:#7fd8b038}.link{display:block;font-size:12px;color:var(--muted);text-decoration:none;padding:5px 0;border-bottom:1px solid rgba(255,255,255,.05)}.link:last-child{border-bottom:none}.link:hover{color:var(--accent)}.log{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.log li{display:flex;flex-direction:column;gap:3px;padding-bottom:8px;border-bottom:1px solid rgba(255,255,255,.05)}.log-time{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}.log-body{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--muted)}.log-body i{width:7px;height:7px;border-radius:50%;flex:none;box-shadow:0 0 0 1px #ffffff29}.log-body b{color:var(--text);font-weight:600}.camera-bar{grid-area:camera;align-self:end;justify-self:center;display:flex;align-items:center;gap:6px;padding:6px;border-radius:999px;border:1px solid var(--edge);background:var(--panel-solid);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:0 18px 40px #00000080}.camera-label{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint);padding:0 6px 0 10px}.camera-bar button{border-color:transparent;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;padding:6px 12px;font-size:11.5px}.camera-bar button:disabled{opacity:.32;cursor:not-allowed}.camera-split{width:1px;height:18px;background:var(--edge);margin:0 3px}.ticker{grid-area:tick;display:flex;align-items:center;gap:12px;height:34px;padding:0 14px;border:1px solid var(--edge);border-radius:999px;background:var(--panel);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);overflow:hidden}.ticker-title{font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);flex:none}.ticker-track{display:flex;gap:30px;white-space:nowrap;animation:drift 52s linear infinite}.ticker:hover .ticker-track{animation-play-state:paused}@keyframes drift{0%{transform:translate(0)}to{transform:translate(-50%)}}.ticker-item{display:inline-flex;align-items:center;gap:7px;font-size:11.5px;color:var(--faint)}.ticker-item i{width:6px;height:6px;border-radius:50%}.ticker-item b{color:var(--muted);font-weight:600}.foot{grid-area:foot;display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:10.5px;color:var(--faint);padding:0 4px}.foot-links{display:flex;gap:16px}.foot a{color:var(--faint);text-decoration:none}.foot a:hover{color:var(--accent)}.rat-labels{position:absolute;inset:0;pointer-events:none}.rat-label{position:absolute;transform:translate(-50%,-100%);display:flex;flex-direction:column;align-items:center;gap:1px;padding:4px 9px 5px;border-radius:9px;border:1px solid var(--edge);background:#080b0db8;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);white-space:nowrap;transition:opacity .2s}.rat-label b{font-size:10.5px;font-weight:600;letter-spacing:.04em;color:var(--text)}.rat-label span{font-family:var(--mono);font-size:8.5px;color:var(--faint)}.rat-label.is-selected{border-color:#7fd8b080;background:#0e201ad1}.rat-label.is-selected b{color:var(--accent)}.scrim{position:fixed;inset:0;z-index:20;display:grid;place-items:center;background:#040607ad;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:20px}.sheet{width:min(460px,100%);border:1px solid var(--edge-strong);border-radius:18px;background:var(--panel-solid);padding:22px;box-shadow:0 30px 70px #0009}.sheet h3{margin:0 0 14px;font-family:var(--display);font-weight:400;font-size:25px}.sheet ol{margin:0 0 18px;padding-left:18px;display:flex;flex-direction:column;gap:9px;font-size:12.8px;line-height:1.55;color:var(--muted)}.sheet ol::marker{color:var(--accent)}.app.is-focus .intro,.app.is-focus .panel,.app.is-focus .ticker,.app.is-focus .foot{opacity:0;pointer-events:none;transition:opacity .25s}@media(max-width:1180px){.app{grid-template-columns:300px minmax(0,1fr) 300px}.intro h1{font-size:32px}}@media(max-width:920px){.app{grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto minmax(0,1fr) auto auto;grid-template-areas:"top" "intro" "camera" "right" "foot";padding:12px 12px 10px}.panel-left,.ticker{display:none}.intro{max-width:none}.intro h1{font-size:28px}.intro p{display:none}.panel-right{max-height:44vh}.camera-bar{overflow-x:auto;justify-self:stretch;border-radius:14px}.tools{gap:6px}}
