:root{--bg: #05070d;--panel: rgba(10, 14, 24, .62);--panel-border: rgba(140, 180, 255, .14);--text: #e8eefc;--muted: #8b97b5;--accent: #7ee8ff;--accent-2: #ffd15c;--ease: cubic-bezier(.37, 0, .63, 1);--mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--sans: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:var(--sans);overflow:hidden}#gl{position:fixed;inset:0;width:100%;height:100%;display:block}#app{position:fixed;inset:0;pointer-events:none}#app>*{pointer-events:auto}button,input,select{font:inherit;color:inherit}#loader{position:fixed;inset:0;display:grid;place-content:center;gap:16px;background:var(--bg);z-index:50;transition:opacity .9s var(--ease)}#loader.hide{opacity:0;pointer-events:none}.spinner{width:46px;height:46px;margin:0 auto;border-radius:50%;border:3px solid rgba(126,232,255,.15);border-top-color:var(--accent);animation:spin 1s linear infinite}.loader-text{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:12px}@keyframes spin{to{transform:rotate(360deg)}}.panel{position:absolute;background:var(--panel);border:1px solid var(--panel-border);border-radius:14px;backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%);box-shadow:0 10px 40px #00000073,inset 0 1px #ffffff0d;transition:transform .6s var(--ease),opacity .6s var(--ease)}.panel h2{margin:0 0 10px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:600}#header{top:16px;left:16px;padding:12px 16px;display:flex;align-items:center;gap:14px}#header img{width:44px;height:44px;mix-blend-mode:screen;filter:drop-shadow(0 0 10px rgba(126,232,255,.5))}#header .title{font-weight:700;font-size:15px;letter-spacing:.02em}#header .subtitle{color:var(--muted);font-size:11px;margin-top:2px}#phase{top:16px;left:50%;transform:translate(-50%);padding:10px 18px 10px 12px;display:flex;align-items:center;gap:12px;min-width:300px}#phase .icon{width:44px;height:44px;border-radius:10px;background:#000;overflow:hidden;position:relative;box-shadow:0 0 20px var(--phase-color, var(--accent));transition:box-shadow .6s var(--ease)}#phase .icon img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity .5s var(--ease);opacity:0}#phase .icon img.on{opacity:1}#phase .name{font-weight:700;font-size:15px;color:var(--phase-color, var(--accent));transition:color .6s var(--ease)}#phase .sub{color:var(--muted);font-size:11px;font-family:var(--mono);margin-top:2px}#phase .bar{position:absolute;left:12px;right:12px;bottom:6px;height:2px;background:#ffffff14;border-radius:2px;overflow:hidden}#phase .bar>i{display:block;height:100%;width:0%;background:var(--phase-color, var(--accent));box-shadow:0 0 8px var(--phase-color, var(--accent))}#settings{top:96px;left:16px;width:290px;padding:14px 16px 10px;max-height:calc(100vh - 516px);overflow:auto}#settings.collapsed{transform:translate(-320px);opacity:0}.field{display:grid;grid-template-columns:1fr auto;gap:2px 10px;align-items:center;margin:8px 0}.field label{font-size:12px;color:var(--muted)}.field output{font-family:var(--mono);font-size:12px;color:var(--text);text-align:right}.field input[type=range]{grid-column:1 / -1;width:100%;accent-color:var(--accent);height:18px}.field.toggle{grid-template-columns:1fr auto}.field input[type=checkbox]{accent-color:var(--accent);width:16px;height:16px}.field select{grid-column:1 / -1;background:#ffffff0d;border:1px solid var(--panel-border);border-radius:8px;padding:6px 8px}.row{display:flex;gap:8px;margin-top:10px}.btn{flex:1;border:1px solid var(--panel-border);background:#ffffff0d;border-radius:9px;padding:8px 10px;cursor:pointer;font-size:12px;font-weight:600;letter-spacing:.02em;transition:background .3s var(--ease),transform .3s var(--ease)}.btn:hover{background:#7ee8ff26}.btn:active{transform:scale(.97)}.btn.primary{background:#7ee8ff2e;border-color:#7ee8ff66}.derived{margin-top:10px;white-space:normal;border-top:1px solid var(--panel-border);padding-top:8px;font-family:var(--mono);font-size:11px;color:var(--muted);line-height:1.7}.derived b{color:var(--text);font-weight:500}#toggle-settings{position:absolute;top:96px;left:16px;width:40px;height:40px;border-radius:12px;padding:0;display:grid;place-items:center}#stats{top:16px;right:16px;width:300px;padding:14px 16px}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px}.stat{display:flex;flex-direction:column;gap:2px}.stat .k{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.stat .v{font-family:var(--mono);font-size:15px;font-weight:600}.stat .v.small{font-size:12px;font-weight:500}#chart-wrap{top:232px;right:16px;width:300px;padding:12px 12px 8px}#chart{width:100%;height:112px;display:block}.epoch-bar{margin-top:8px;height:6px;background:#ffffff12;border-radius:4px;overflow:hidden}.epoch-bar>i{display:block;height:100%;width:0;background:linear-gradient(90deg,#7ee8ff,#c36bff);border-radius:4px;transition:width .25s linear}.epoch-label{display:flex;justify-content:space-between;font-family:var(--mono);font-size:11px;color:var(--muted);margin-top:6px}#bottom{left:50%;bottom:18px;transform:translate(-50%);width:min(880px,calc(100vw - 664px));padding:14px 18px 12px}.timeline{display:flex;gap:4px;height:26px;margin-bottom:12px}.tl-seg{position:relative;flex:1 1 0;border-radius:6px;background:#ffffff0f;overflow:hidden;display:grid;place-items:center;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);transition:color .4s var(--ease),background .4s var(--ease)}.tl-seg>i{position:absolute;left:0;top:0;bottom:0;width:0;background:var(--seg);opacity:.55}.tl-seg>span{position:relative;z-index:1;white-space:nowrap}.tl-seg.active{color:#fff;box-shadow:0 0 14px var(--seg)}.tl-seg.done>i{width:100%;opacity:.35}.explain{display:flex;gap:14px;align-items:flex-start}.explain img{width:64px;height:64px;border-radius:12px;background:#000;flex:0 0 auto;box-shadow:0 0 18px #00000080}.explain .text{font-size:13px;line-height:1.55;color:#d6def2}.explain .text b{color:var(--phase-color, var(--accent));font-weight:600;transition:color .6s var(--ease)}.explain .text .n{font-family:var(--mono);color:#fff}.explain .text .real{display:block;margin-top:6px;color:var(--muted);font-size:12px;line-height:1.5}body.vertical .explain .text .real{display:none}#banner{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%) scale(.92);opacity:0;text-align:center;transition:opacity .7s var(--ease),transform .7s var(--ease);pointer-events:none}#banner.show{opacity:1;transform:translate(-50%,-50%) scale(1)}#banner .big{font-size:54px;font-weight:800;letter-spacing:-.02em;background:linear-gradient(90deg,#7ee8ff,#fff,#ffd15c);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 24px rgba(126,232,255,.45))}#banner .small{font-family:var(--mono);color:var(--muted);margin-top:8px;font-size:13px}.controls .hint{margin-left:auto;font-size:10.5px;color:var(--muted);font-family:var(--mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}kbd{font-family:var(--mono);background:#ffffff14;border-radius:4px;padding:1px 5px;border:1px solid rgba(255,255,255,.1)}@media(max-width:1100px){#chart-wrap{display:none}#bottom{width:calc(100vw - 32px)}#stats{width:240px}#phase{min-width:0}}@media(max-width:760px){#stats,#header .subtitle,.controls .hint{display:none}#settings{width:calc(100vw - 32px)}#phase{top:auto;bottom:200px}}.controls{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}.controls .lbl{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.controls .lbl.cam{margin-left:8px}.seg{display:inline-flex;border:1px solid var(--panel-border);border-radius:9px;overflow:hidden}.seg button{border:none;background:#ffffff0a;padding:6px 12px;font-size:12px;font-weight:600;cursor:pointer;color:var(--muted);transition:background .3s var(--ease),color .3s var(--ease)}.seg button.on{background:#7ee8ff33;color:#fff}.btn.next{flex:0 0 auto;padding:7px 16px;background:#7ee8ff2e;border-color:#7ee8ff80}.btn.next.pulse{animation:pulse 1.4s var(--ease) infinite;background:#7ee8ff52}.btn.next.epoch{background:#ffd15c40;border-color:#ffd15c99}@keyframes pulse{0%,to{box-shadow:0 0 #7ee8ff80}50%{box-shadow:0 0 0 8px #7ee8ff00}}.controls .spacer{flex:1}#overview-btn{position:absolute;top:16px;left:428px;width:40px;height:40px;border-radius:12px;padding:0;font-size:16px}#timing{top:424px;right:16px;width:300px;padding:10px 14px}.big-time{font-size:13px;margin:0 0 6px}.big-time b{font-family:var(--mono);font-size:20px;color:var(--accent-2)}.dim{color:var(--muted);font-size:11px}.warn{color:#ff9a5c}.bar-stack{display:flex;height:8px;border-radius:4px;overflow:hidden;background:#ffffff0f}.bar-stack i{display:block;height:100%;min-width:1px}.timing-rows{margin-top:8px;font-size:11px;color:#c9d2e8}.timing-rows div{display:grid;grid-template-columns:auto 1fr auto auto;gap:6px;line-height:1.55;align-items:baseline}.timing-rows b{font-family:var(--mono);font-weight:500}.timing-rows em{font-style:normal;font-family:var(--mono);color:var(--muted);width:30px;text-align:right}.timing-foot{margin-top:6px;font-size:10.5px;color:#c9d2e8;line-height:1.5;border-top:1px solid var(--panel-border);padding-top:6px}.timing-foot b{font-family:var(--mono);font-weight:500}#overview{position:absolute;inset:0;display:grid;place-items:center;background:#03050ab8;backdrop-filter:blur(10px);opacity:0;pointer-events:none;transition:opacity .6s var(--ease);z-index:40;overflow:auto;padding:20px}#overview.show{opacity:1;pointer-events:auto}.ov-card{width:min(1040px,100%);background:#0a0e18d9;border:1px solid var(--panel-border);border-radius:18px;padding:26px 30px;box-shadow:0 30px 80px #0009;transform:translateY(12px);transition:transform .6s var(--ease)}#overview.show .ov-card{transform:translateY(0)}.ov-head{display:flex;gap:18px;align-items:center}.ov-head img{width:72px;height:72px;mix-blend-mode:screen}.ov-head h1{margin:0 0 6px;font-size:24px;letter-spacing:-.01em}.ov-head p{margin:0;color:#c9d2e8;font-size:13px;line-height:1.5}.ov-head b{color:var(--accent)}.ov-flow{display:grid;grid-template-columns:repeat(8,1fr);gap:8px;margin:22px 0 16px}.ov-step{position:relative;background:#ffffff08;border:1px solid var(--panel-border);border-radius:12px;padding:10px 8px;display:flex;flex-direction:column;gap:6px;align-items:center;text-align:center}.ov-step img{width:64px;height:64px;border-radius:10px;background:#000;object-fit:cover}.ov-step b{font-size:11px;letter-spacing:.02em}.ov-step span{font-size:10.5px;color:var(--muted);line-height:1.4}.ov-step:not(:last-child):after{content:"›";position:absolute;right:-9px;top:36px;color:var(--accent);font-size:18px}.ov-legend{display:grid;grid-template-columns:1fr 1fr;gap:6px 18px;font-size:12px;color:#c9d2e8}.ov-legend div{display:flex;align-items:center;gap:8px}.ov-legend i{display:inline-block;width:22px;height:10px;border-radius:3px;flex:0 0 auto}.ov-legend i.diamond{width:12px;height:12px;background:#3dffb0;transform:rotate(45deg);margin:0 5px}.ov-actions{display:flex;gap:12px;margin-top:20px}.btn.big{padding:12px 18px;font-size:14px}.ov-foot{margin-top:14px;font-size:11px;color:var(--muted);line-height:1.5}@media(max-width:1100px){.ov-flow{grid-template-columns:repeat(4,1fr)}.ov-step:after{display:none}.ov-legend{grid-template-columns:1fr}}@media(max-height:820px),(max-width:1100px){#timing,#memory{display:none}}.flow-title{margin:0 0 4px!important}.flow-wrap{margin:0 -6px 8px}svg.flow{width:100%;height:auto;display:block;overflow:visible}svg.flow .link{stroke:#ffffff24;stroke-width:2;transition:stroke .5s var(--ease)}svg.flow .link.done{stroke:#ffffff47}svg.flow .link.flow-on{stroke-width:2.5;stroke-dasharray:5 6;animation:dashflow .5s linear infinite;filter:var(--fglow)}@keyframes dashflow{to{stroke-dashoffset:-11}}svg.flow .node .ring{fill:#06080f;transform-box:fill-box;transform-origin:center;stroke:#ffffff2e;stroke-width:2;transition:stroke .5s var(--ease),fill .5s var(--ease);transform:rotate(-90deg)}svg.flow .node image{opacity:.55;transition:opacity .5s var(--ease)}svg.flow .node .name{fill:var(--muted);font-size:10px;font-weight:600;letter-spacing:.02em;transition:fill .5s var(--ease)}svg.flow .node .sub{fill:#8b97b5bf;font-size:8.5px;font-family:var(--mono)}svg.flow .node.done image{opacity:.8}svg.flow .node.done .ring{stroke:#ffffff59}svg.flow .node.active image{opacity:1}svg.flow .node.active .ring{stroke:var(--c);stroke-width:3;filter:var(--fglow)}svg.flow .node.active .name{fill:#fff}svg.flow .node.active .sub{fill:var(--c)}svg.flow .node{transition:transform .5s var(--ease)}svg.flow .loop{fill:none;stroke:#ffffff1f;stroke-width:1.5;stroke-dasharray:4 5;transition:stroke .5s var(--ease)}svg.flow .loop.on{stroke:#ffd15c;stroke-width:2;animation:dashflow .5s linear infinite}svg.flow .loop.epoch{stroke:#fff}svg.flow .loop-glow{fill:none;stroke:transparent;stroke-width:8;transition:stroke .5s var(--ease)}svg.flow .loop-glow.on{stroke:#ffd15c2e}svg.flow .loop-glow.epoch{stroke:#ffffff38}svg.flow .loop-label{fill:#8b97b5d9;font-size:9px;font-family:var(--mono);transition:fill .5s var(--ease)}svg.flow .loop-label.on{fill:#ffd15c}svg.flow .dot{filter:var(--fglow);transition:fill .4s var(--ease)}svg.flow .dot-halo{transition:fill .4s var(--ease)}#flow-rail,body.horizontal #flow-rail{display:none}body.vertical #header{top:10px;left:10px;right:62px;padding:8px 12px;gap:10px;height:48px;overflow:hidden}body.vertical #header img{width:32px;height:32px;flex:0 0 32px}body.vertical #header .title{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}body.vertical #header .subtitle{display:none}body.vertical #overview-btn{left:auto;right:10px;top:10px;width:42px;height:48px}body.vertical #toggle-settings{top:66px;left:10px;width:42px;height:48px}body.vertical #phase{top:66px;left:60px;right:10px;width:auto;height:48px;transform:none;padding:6px 12px 8px 8px}body.vertical #phase .icon{width:34px;height:34px;flex:0 0 34px}body.vertical #phase .name{font-size:13px}body.vertical #phase .sub{font-size:10px}body.vertical #settings{top:122px;left:10px;width:min(420px,calc(100vw - 20px));max-height:calc(100vh - 420px);z-index:6}body.vertical #settings.collapsed{transform:translate(calc(-100% - 20px))}body.vertical #stats{top:122px;left:10px;right:10px;width:auto;height:58px;padding:8px 12px;overflow:hidden}body.vertical #stats h2{display:none}body.vertical .stat-grid{grid-template-columns:repeat(4,1fr);gap:2px 8px}body.vertical .stat:nth-child(n+5){display:none}body.vertical .stat .v{font-size:13px}body.vertical #chart-wrap,body.vertical #timing{display:none}body.vertical #flow-rail{display:block;right:10px;top:200px;width:168px;padding:6px 4px}body.vertical #flow-rail .flow-wrap{margin:0}body.vertical #bottom{left:10px;right:10px;bottom:10px;width:auto;transform:none;padding:10px 12px}body.vertical #bottom .flow-title,body.vertical #bottom .flow-wrap.horizontal{display:none}body.vertical .controls{gap:6px}body.vertical .controls .hint,body.vertical .controls .lbl{display:none}body.vertical .timeline{height:20px;gap:3px;margin-bottom:8px}body.vertical .tl-seg{font-size:8px;letter-spacing:0}body.vertical .explain img{width:44px;height:44px}body.vertical .explain .text{font-size:12px;line-height:1.45;max-height:132px;overflow-y:auto}body.vertical .ov-card{padding:18px}body.vertical .ov-flow{grid-template-columns:repeat(2,1fr)}body.vertical .ov-step:after{display:none}body.vertical .ov-legend,body.vertical .ov-real-grid{grid-template-columns:1fr}body.vertical .ov-actions{flex-direction:column}@media(min-width:680px)and (min-height:1000px){body.vertical #memory{display:block;top:190px;left:10px;right:auto;width:300px}body.vertical #timing{display:block;inset:auto auto 246px 10px;width:300px}body.vertical .explain .text{max-height:none}}.btn.reset{background:#ffffff0d;border-color:var(--panel-border)}.btn.reset:hover{background:#ffd15c2e;border-color:#ffd15c73}.controls .btn{flex:0 0 auto}#toggle-settings{transition:transform .6s var(--ease),background .3s var(--ease)}body.horizontal.settings-open #toggle-settings{transform:translate(298px)}#memory{top:496px;left:16px;width:300px;padding:12px 14px}.par-grid{display:grid;gap:4px;font-size:11px;color:#c9d2e8}.par-grid>div{display:grid;grid-template-columns:92px 1fr;gap:8px;align-items:baseline}.par-grid b{color:var(--accent);font-weight:600}.par-grid span{font-family:var(--mono);font-size:10.5px}.par-grid .par-sum{display:block;margin-top:4px;padding-top:5px;border-top:1px solid var(--panel-border);color:var(--muted);font-family:var(--mono);font-size:10px;line-height:1.5}.mem-h{margin-top:10px!important;padding-top:8px;border-top:1px solid var(--panel-border)}.mem-shard{font-family:var(--mono);font-size:10.5px;color:var(--muted);margin-bottom:6px}.mem-bar{height:10px}.mem-bar .rest{background:#ffffff0f}.mem-total{border-top:1px solid var(--panel-border);margin-top:3px;padding-top:3px;color:#fff}.mem-total b{color:#fff}.mem-foot{margin-top:6px;font-size:11px;line-height:1.5}.mem-foot .ok{color:#4ade80;font-weight:600}.mem-foot .warn{color:#ff9a5c;font-weight:600}body.hide-stats #stats,body.hide-chart #chart-wrap,body.hide-timing #timing,body.hide-memory #memory,body.hide-flow #flow-rail,body.hide-flow .flow-wrap,body.hide-flow .flow-title,body.hide-explain .explain{display:none!important}.chips{display:flex;gap:4px;flex-wrap:wrap}.chip{border:1px solid var(--panel-border);background:#ffffff0a;color:var(--muted);border-radius:7px;padding:4px 9px;font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .3s var(--ease),color .3s var(--ease),border-color .3s var(--ease)}.chip:hover{border-color:#7ee8ff66;color:var(--text)}.chip.on{background:#7ee8ff29;border-color:#7ee8ff6b;color:#fff}.chip.view{background:#ffffff0d}.chip.view:active{transform:scale(.96)}.controls-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}.controls-row .lbl{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}body.vertical .controls-row .lbl{display:none}
