:root{--bg: #010208;--ink: #eef1ff;--ink-2: #aab2d6;--ink-3: #6f789f;--glass: rgba(10, 13, 32, .72);--glass-2: rgba(255, 255, 255, .05);--line: rgba(160, 175, 255, .16);--accent: #8a7bff;--sun: #ffb347;--radius: 18px;--font: "Space Grotesk", system-ui, -apple-system, sans-serif;--mono: "JetBrains Mono", ui-monospace, monospace;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;cursor:pointer;background:none;border:0;padding:0}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}#scene{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;touch-action:none}.labels{position:fixed!important;top:0;right:0;bottom:0;left:0;pointer-events:none}.label{pointer-events:auto;display:flex;flex-direction:column;align-items:center;gap:1px;padding:4px 8px;border-radius:10px;white-space:nowrap;transition:background .2s,opacity .3s;opacity:0;text-shadow:0 1px 8px rgba(0,0,0,.9)}.entered .label{opacity:1}.label-dot{display:none}.label-text{font-size:13px;font-weight:600;letter-spacing:.01em}.label-sub{font-family:var(--mono);font-size:10px;color:var(--ink-2);text-transform:uppercase;letter-spacing:.08em}.label:hover,.label.hover{background:#141838b3}.label.focused .label-text{color:#fff}.label-sun .label-text{font-size:15px;color:#ffe0b0}.label-moon .label-text{font-size:11px;font-weight:500}.label-skill{padding:2px 6px}.label-skill .label-text{font-family:var(--mono);font-size:10.5px;font-weight:400;color:#f1e3cc}.hud{position:fixed;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:max(16px,env(safe-area-inset-top)) 20px 0;pointer-events:none;opacity:0;transition:opacity 1s 1.2s;z-index:5}.entered .hud{opacity:1}.hud>*{pointer-events:auto}.brand{display:flex;align-items:center;gap:12px;text-align:left;padding:6px 12px 6px 6px;border-radius:14px;transition:background .2s}.brand:hover{background:var(--glass-2)}.brand-sun{width:28px;height:28px;border-radius:50%;background:radial-gradient(circle at 40% 40%,#fff3d0,#ffb347 45%,#e2560f);box-shadow:0 0 18px #ffaa46b3;flex:none}.brand-name{display:block;font-weight:600;font-size:15px}.brand-role{display:block;font-family:var(--mono);font-size:11px;color:var(--ink-2)}.home-btn{display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;border:1px solid var(--line);background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);font-size:13px;color:var(--ink-2);transition:color .2s,border-color .2s}.home-btn:hover{color:var(--ink);border-color:#a0afff66}.home-btn svg{width:18px;height:18px}.dock{position:fixed;left:50%;bottom:max(18px,env(safe-area-inset-bottom));transform:translate(-50%,20px);display:flex;gap:4px;padding:6px;max-width:calc(100vw - 32px);overflow-x:auto;scrollbar-width:none;border-radius:999px;border:1px solid var(--line);background:var(--glass);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);opacity:0;transition:opacity .8s 1.5s,transform .8s 1.5s;z-index:5}.dock::-webkit-scrollbar{display:none}.entered .dock{opacity:1;transform:translate(-50%)}.dock-item{flex:none;display:flex;align-items:center;gap:7px;padding:8px 13px;border-radius:999px;font-size:13px;color:var(--ink-2);transition:background .2s,color .2s}.dock-item:hover{color:var(--ink);background:var(--glass-2)}.dock-item.active{color:#fff;background:#8a7bff33}.dock-dot,.kicker-dot{width:8px;height:8px;border-radius:50%;background:var(--c);box-shadow:0 0 10px var(--c);flex:none}.hint{position:fixed;left:50%;bottom:calc(max(18px,env(safe-area-inset-bottom)) + 64px);transform:translate(-50%);margin:0;font-family:var(--mono);font-size:11.5px;color:var(--ink-3);letter-spacing:.04em;white-space:nowrap;opacity:0;transition:opacity .8s 2.5s;pointer-events:none;z-index:4}.entered .hint{opacity:1}.entered .hint.hidden{opacity:0;transition-delay:0s}.panel{position:fixed;top:76px;right:20px;bottom:92px;width:min(440px,calc(100vw - 40px));display:flex;flex-direction:column;border-radius:var(--radius);border:1px solid var(--line);background:var(--glass);backdrop-filter:blur(18px) saturate(1.3);-webkit-backdrop-filter:blur(18px) saturate(1.3);box-shadow:0 30px 80px #00000080;transform:translate(calc(100% + 40px));opacity:0;transition:transform .6s cubic-bezier(.2,.8,.2,1),opacity .4s;z-index:6}.panel.open{transform:none;opacity:1}.panel-close{position:absolute;top:14px;right:14px;width:34px;height:34px;display:grid;place-items:center;border-radius:50%;color:var(--ink-2);background:var(--glass-2);transition:background .2s,color .2s;z-index:1}.panel-close:hover{color:#fff;background:#ffffff1f}.panel-close svg{width:14px;height:14px}.panel-content{flex:1;overflow-y:auto;padding:26px 26px 10px;scrollbar-width:thin;scrollbar-color:rgba(160,175,255,.25) transparent}.panel.open .panel-content>*{animation:rise .6s cubic-bezier(.2,.8,.2,1) both}.panel.open .panel-content>*:nth-child(2){animation-delay:.04s}.panel.open .panel-content>*:nth-child(3){animation-delay:.08s}.panel.open .panel-content>*:nth-child(4){animation-delay:.12s}.panel.open .panel-content>*:nth-child(5){animation-delay:.16s}.panel.open .panel-content>*:nth-child(n+6){animation-delay:.2s}@keyframes rise{0%{opacity:0;transform:translateY(10px)}}.crumb{font-family:var(--mono);font-size:11.5px;color:var(--ink-2);margin-bottom:14px;display:inline-block}.crumb:hover{color:var(--ink)}.kicker{display:flex;align-items:center;gap:9px;margin:0 40px 10px 0;font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}.panel h2{margin:0 0 8px;font-size:30px;line-height:1.1;font-weight:600;letter-spacing:-.02em;text-wrap:balance}.meta{margin:0 0 16px;font-size:13.5px;color:var(--ink-2)}.meta .sep{margin:0 8px;color:var(--ink-3)}.lead{margin:0 0 18px;font-size:16px;line-height:1.55;color:#dfe3fb;text-wrap:pretty}.lead b,.bullets b{color:#fff;font-weight:600}.bullets{list-style:none;margin:0 0 18px;padding:0;display:grid;gap:12px}.bullets li{position:relative;padding-left:18px;font-size:14.5px;line-height:1.55;color:var(--ink-2);text-wrap:pretty}.bullets li:before{content:"";position:absolute;left:2px;top:.62em;width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent)}.bullets b{color:#fff;background:linear-gradient(transparent 62%,#8a7bff59 62%)}.group{margin:18px 0 8px;font-family:var(--mono);font-size:11.5px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}.tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:18px}.tag{padding:5px 10px;border-radius:999px;border:1px solid var(--line);background:var(--glass-2);font-family:var(--mono);font-size:11.5px;color:var(--ink-2)}.links{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.btn{display:inline-flex;align-items:center;gap:6px;padding:10px 16px;border-radius:12px;border:1px solid var(--line);background:var(--glass-2);color:var(--ink);text-decoration:none;font-size:14px;font-weight:500;transition:background .2s,border-color .2s,transform .2s}.btn:hover{border-color:#a0afff73;transform:translateY(-1px)}.btn svg{width:14px;height:14px;opacity:.7}.btn-primary{background:linear-gradient(135deg,#7b6bff,#4f8bff);border-color:transparent;color:#fff;box-shadow:0 8px 24px #6e6eff59}.btn-primary:hover{border-color:transparent;box-shadow:0 10px 30px #6e6eff80}.project-list{display:grid;gap:8px;margin-bottom:18px}.project-card{display:flex;flex-direction:column;gap:3px;text-align:left;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:var(--glass-2);transition:border-color .2s,background .2s,transform .2s}.project-card:hover{border-color:#5dffc473;background:#5dffc40f;transform:translate(3px)}.project-name{font-weight:600;font-size:15px}.project-kind{font-family:var(--mono);font-size:11px;color:var(--ink-3)}.classifier{margin:0 0 18px;padding:14px;border-radius:14px;border:1px solid var(--line);background:#00000040}.classifier-head{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3);margin-bottom:10px}.classifier-buttons{display:flex;gap:8px}.classifier-buttons button{flex:1;padding:9px 10px;border-radius:10px;border:1px solid var(--line);background:var(--glass-2);font-size:13px}.classifier-buttons button:hover{border-color:#ffd21f80}.classifier-result{min-height:0;margin-top:0;display:flex;flex-direction:column;align-items:center;gap:2px;border-radius:10px;transition:all .3s}.classifier-result:not(:empty){margin-top:10px;padding:14px}.classifier-result.scanning{font-family:var(--mono);font-size:12px;color:var(--ink-2);position:relative;overflow:hidden}.classifier-result .bar{position:absolute;inset:auto 0 0 0;height:2px;background:#ffd21f;animation:scan .9s linear;transform-origin:left}@keyframes scan{0%{transform:scaleX(0)}}.classifier-result.yes{background:#1f7a3a}.classifier-result.no{background:#9b1c1c}.classifier-result strong{font-size:20px}.classifier-result span{font-family:var(--mono);font-size:11.5px;opacity:.85}.panel-nav{display:flex;justify-content:space-between;gap:8px;padding:12px 16px 14px;border-top:1px solid var(--line)}.panel-nav button{padding:8px 10px;border-radius:10px;font-size:13px;color:var(--ink-2);max-width:48%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .2s,color .2s}.panel-nav button:hover{color:var(--ink);background:var(--glass-2)}.intro{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse at 50% 60%,#01020840,#010208d9 70%);z-index:10;transition:opacity 1.2s,visibility 1.2s}.intro.gone{opacity:0;visibility:hidden;pointer-events:none}.intro-inner{max-width:560px;text-align:center}.intro-kicker{margin:0 0 12px;font-family:var(--mono);font-size:12px;letter-spacing:.3em;text-transform:uppercase;color:var(--ink-2)}.intro h1{margin:0;font-size:clamp(48px,11vw,96px);line-height:.92;font-weight:700;letter-spacing:-.04em;background:linear-gradient(180deg,#fff 30%,#b8b0ff);-webkit-background-clip:text;background-clip:text;color:transparent}.intro h1 span{display:block;margin-top:14px;font-family:var(--mono);font-size:13px;font-weight:400;letter-spacing:.5em;text-transform:uppercase;color:var(--sun);-webkit-text-fill-color:var(--sun)}.intro-sub{margin:26px auto 32px;max-width:420px;font-size:16px;line-height:1.55;color:var(--ink-2);text-wrap:balance}.enter{position:relative;padding:14px 28px;border-radius:999px;border:1px solid rgba(255,179,71,.5);background:#ffb34714;font-size:15px;font-weight:500;color:#ffe0b0;transition:background .3s,box-shadow .3s,transform .2s}.enter:not(:disabled):hover{background:#ffb3472e;box-shadow:0 0 40px #ffaa4659;transform:translateY(-1px)}.enter:disabled{cursor:progress;border-color:var(--line);color:var(--ink-3)}.enter-ready,.intro.ready .enter-loading{display:none}.intro.ready .enter-ready{display:inline}@media (max-width: 759px){.hud{padding:max(12px,env(safe-area-inset-top)) 12px 0}.home-btn span{display:none}.home-btn{padding:9px}.panel{top:auto;left:8px;right:8px;width:auto;bottom:calc(max(12px,env(safe-area-inset-bottom)) + 58px);max-height:52vh;transform:translateY(calc(100% + 80px))}.panel-content{padding:20px 18px 6px}.panel h2{font-size:24px}.lead{font-size:15px}.bullets li{font-size:14px}.dock{bottom:max(12px,env(safe-area-inset-bottom));border-radius:18px}.dock-item{padding:8px 11px}.hint{bottom:calc(max(12px,env(safe-area-inset-bottom)) + 62px)}.label-text{font-size:11.5px}.label-sub{display:none}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.2s!important}}
