:root{--bg:#0b1016;--glass:#0c1218d1;--glass-strong:#0a0f14f0;--line:#8cdcc829;--text:#e6edf3;--muted:#8d9aa6;--accent:#5ef2d0;--amber:#ffb547;--mono:"JetBrains Mono", ui-monospace, Menlo, Consolas, monospace;--sans:"Space Grotesk", system-ui, -apple-system, Segoe UI, sans-serif;--radius:14px;--panel-w:min(460px, 42vw)}*{box-sizing:border-box}[hidden]{display:none!important}html,body{background:var(--bg);height:100%;color:var(--text);font-family:var(--sans);margin:0}body{-webkit-font-smoothing:antialiased;overflow:hidden}a{color:var(--accent)}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}#scene{touch-action:none;width:100vw;height:100vh;display:block;position:fixed;top:0;bottom:0;left:0;right:0}#loader{z-index:50;background:radial-gradient(ellipse at center, #0f1a20 0%, var(--bg) 70%);place-items:center;transition:opacity .8s,visibility .8s;display:grid;position:fixed;top:0;bottom:0;left:0;right:0}#loader.done{opacity:0;visibility:hidden}.boot{width:min(520px,86vw);font-family:var(--mono);color:var(--muted);font-size:13px}#boot-log{white-space:pre-wrap;min-height:9.5em;margin:0 0 14px;line-height:1.6}#boot-log .ok{color:var(--accent)}.boot-bar{background:#ffffff0f;border-radius:3px;height:3px;overflow:hidden}#boot-progress{background:var(--accent);width:0;height:100%;box-shadow:0 0 12px var(--accent);transition:width .3s;display:block}.hud-top{z-index:10;padding:max(18px, env(safe-area-inset-top)) 22px 0;pointer-events:none;justify-content:space-between;align-items:flex-start;gap:12px;display:flex;position:fixed;top:0;left:0;right:0}.hud-top>*{pointer-events:auto}.brand{color:var(--text);flex-direction:column;gap:2px;text-decoration:none;display:flex}.brand-name{letter-spacing:.01em;font-size:20px;font-weight:700}.brand-role{font-family:var(--mono);color:var(--accent);letter-spacing:.06em;text-transform:uppercase;font-size:11px}.hud-nav{gap:8px;display:flex}.chip{cursor:pointer;font-family:var(--mono);letter-spacing:.04em;color:var(--text);border:1px solid var(--line);background:var(--glass);-webkit-backdrop-filter:blur(10px);border-radius:999px;align-items:center;gap:6px;padding:8px 13px;font-size:12px;text-decoration:none;transition:border-color .2s,background .2s,color .2s;display:inline-flex}.chip:hover{border-color:var(--accent);color:var(--accent)}.chip:disabled{opacity:.35;cursor:default}.menu{z-index:12;background:var(--glass-strong);border:1px solid var(--line);border-radius:var(--radius);-webkit-backdrop-filter:blur(14px);width:min(320px,100vw - 32px);padding:12px;position:fixed;top:64px;right:22px;box-shadow:0 20px 60px #00000073}.menu-title{font-family:var(--mono);letter-spacing:.14em;color:var(--muted);padding:4px 8px 10px;font-size:10px}.menu ul{margin:0;padding:0;list-style:none}.menu button{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;grid-template-columns:64px 1fr;align-items:baseline;gap:10px;width:100%;padding:9px 8px;display:grid}.menu button:hover{background:#5ef2d014}.menu button:focus-visible{background:#5ef2d014}.menu .m-ref{font-family:var(--mono);color:var(--accent);font-size:11px}.menu .m-title{font-size:15px;font-weight:500}.tooltip{z-index:9;pointer-events:none;opacity:0;background:var(--glass-strong);border:1px solid var(--accent);text-align:center;border-radius:10px;min-width:160px;padding:8px 12px;transition:opacity .15s;position:fixed;top:0;left:0;transform:translate(-50%,calc(-100% - 10px));box-shadow:0 0 24px #5ef2d02e}.tooltip.show{opacity:1}.tooltip:after{content:"";background:var(--glass-strong);border-right:1px solid var(--accent);border-bottom:1px solid var(--accent);width:10px;height:10px;position:absolute;bottom:-6px;left:50%;transform:translate(-50%)rotate(45deg)}.tt-ref{font-family:var(--mono);letter-spacing:.1em;color:var(--accent);font-size:10px}.tt-title{margin-top:2px;font-size:16px;font-weight:700}.tt-hint{color:var(--muted);margin-top:2px;font-size:12px}.panel{z-index:11;width:var(--panel-w);background:var(--glass);border:1px solid var(--line);border-radius:var(--radius);-webkit-backdrop-filter:blur(16px);flex-direction:column;transition:transform .55s cubic-bezier(.2,.8,.2,1);display:flex;position:fixed;top:76px;bottom:22px;right:22px;transform:translate(calc(100% + 40px));box-shadow:0 30px 80px #00000080}.panel.open{transform:none}.panel-head{border-bottom:1px dashed var(--line);padding:20px 56px 14px 22px;position:relative}.panel-head h2{letter-spacing:-.01em;margin:6px 0 0;font-size:28px;font-weight:700}.ds-ref{font-family:var(--mono);letter-spacing:.1em;color:var(--accent);font-size:11px}.icon-btn{border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:50%;width:34px;height:34px;position:absolute;top:16px;right:16px}.icon-btn:hover{border-color:var(--accent);color:var(--accent)}.panel-body{overscroll-behavior:contain;flex:1;padding:18px 22px 22px;overflow-y:auto}.panel-foot{border-top:1px dashed var(--line);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.b-text{color:#cfd8e0;margin:0 0 16px;line-height:1.6}.b-text strong{color:var(--text)}.b-group{margin:0 0 18px}.b-group h3,.card h3{font-size:12px;font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 8px;font-weight:600}.b-list{color:#cfd8e0;margin:0;padding-left:18px;line-height:1.7}.b-list li::marker{color:var(--accent)}.b-tags{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.b-tags li{font-family:var(--mono);border:1px solid var(--line);background:#5ef2d00d;border-radius:6px;padding:5px 9px;font-size:12px}.b-tags.small li{padding:3px 7px;font-size:11px}.b-timeline{border-left:1px solid var(--line);margin:0;padding:0 0 0 16px;list-style:none}.b-timeline>li{padding:0 0 18px 14px;position:relative}.b-timeline>li:before{content:"";background:var(--bg);border:2px solid var(--accent);width:9px;height:9px;box-shadow:0 0 8px var(--accent);border-radius:50%;position:absolute;top:6px;left:-21px}.tl-head{flex-wrap:wrap;justify-content:space-between;gap:10px;display:flex}.tl-head strong{font-size:16px}.tl-date{font-family:var(--mono);color:var(--amber);white-space:nowrap;padding-top:3px;font-size:11px}.tl-org{color:var(--muted);margin:2px 0 6px;font-size:14px}.b-timeline ul{color:#cfd8e0;margin:0;padding-left:18px;font-size:14px;line-height:1.55}.b-cards{gap:12px;display:grid}.card{border:1px solid var(--line);background:#ffffff05;border-radius:12px;padding:14px 16px;transition:border-color .2s}.card:hover{border-color:#5ef2d080}.card h3{color:var(--text);font-family:var(--sans);text-transform:none;letter-spacing:0;margin-bottom:6px;font-size:16px;font-weight:700}.card p{color:#cfd8e0;margin:0 0 10px;font-size:14px;line-height:1.55}.b-contact{gap:8px;margin:0;padding:0;list-style:none;display:grid}.b-contact li{border:1px solid var(--line);border-radius:10px;grid-template-columns:110px 1fr;align-items:center;padding:12px 14px;display:grid}.b-contact span{font-family:var(--mono);letter-spacing:.1em;color:var(--muted);font-size:11px}.b-contact a{color:var(--text);overflow-wrap:anywhere;text-decoration:none}.b-contact a:hover{color:var(--accent)}.b-actions{flex-wrap:wrap;gap:10px;margin:4px 0 16px;display:flex}.btn{font-family:var(--mono);color:var(--text);border:1px solid var(--line);border-radius:10px;padding:11px 16px;font-size:13px;text-decoration:none}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn.primary{background:var(--accent);color:#04130f;border-color:var(--accent);font-weight:700}.btn.primary:hover{filter:brightness(1.1);color:#04130f}.b-pre{font-family:var(--mono);color:var(--accent);white-space:pre-wrap;background:#00000059;border-radius:10px;margin:0;padding:12px 14px;font-size:12px}.hint{left:22px;bottom:max(20px, env(safe-area-inset-bottom));z-index:8;font-family:var(--mono);color:var(--muted);background:var(--glass);border:1px solid var(--line);border-radius:999px;align-items:center;gap:10px;padding:8px 12px;font-size:12px;transition:opacity .4s;display:flex;position:fixed}.hint .dot{background:var(--accent);width:7px;height:7px;box-shadow:0 0 10px var(--accent);border-radius:50%;animation:1.6s infinite pulse}.hint-touch{display:none}@media (hover:none){.hint-desktop{display:none}.hint-touch{display:inline}}.hint.hide{opacity:0;pointer-events:none}@keyframes pulse{50%{opacity:.3}}#fallback{padding:32px 20px 60px;position:fixed;top:0;bottom:0;left:0;right:0;overflow-y:auto}#fallback>*{max-width:760px;margin-left:auto;margin-right:auto}.fb-head h1{margin:0;font-size:36px}.fb-head p{color:var(--muted);margin:6px 0}.fb-note{font-family:var(--mono);font-size:12px}.fb-section{border-top:1px dashed var(--line);padding:26px 0 8px}.fb-section h2{margin:6px 0 14px}@media (max-width:820px){.hud-top{padding:max(14px, env(safe-area-inset-top)) 16px 0}.brand-name{font-size:17px}.brand-role{font-size:9.5px}.panel{width:auto;height:58vh;padding-bottom:env(safe-area-inset-bottom);border-bottom:0;border-radius:18px 18px 0 0;top:auto;bottom:0;left:0;right:0;transform:translateY(calc(100% + 20px))}.panel-head h2{font-size:22px}.b-contact li{grid-template-columns:1fr;gap:3px}.hint{white-space:nowrap;font-size:11px;left:50%;transform:translate(-50%)}.menu{top:58px;right:16px}}@media (prefers-reduced-motion:reduce){.panel,#loader,.tooltip{transition:none}.hint .dot{animation:none}}.b-tags li{align-items:center;gap:7px;display:inline-flex}.b-tags .logo{flex:none;align-items:center;height:16px;display:inline-flex}.b-tags .logo svg{width:auto;max-width:60px;height:100%;display:block}.b-tags.small .logo{height:13px}.b-tags.small .logo svg{max-width:48px}.b-tags li.has-logo{padding-left:7px}.b-timeline .b-tags{margin-top:8px}.tl-courses{margin-top:10px}.tl-courses h4{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 6px;font-size:10.5px;font-weight:600}.tl-courses ul{gap:4px;margin:0;padding:0;list-style:none;display:grid}.tl-courses li{color:#cfd8e0;background:#ffffff06;border-radius:6px;grid-template-columns:58px 1fr;gap:8px;padding:5px 8px;font-size:13.5px;line-height:1.45;display:grid}.tl-courses li:not(:has(.c-code)){grid-template-columns:1fr}.c-code{font-family:var(--mono);color:var(--accent);padding-top:2px;font-size:11px}
