@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/fonts/jetbrains-mono-latin.woff2) format("woff2")}:root{--bg: #0e0f12;--bg-soft: #16181d;--line: #1f222a;--line-strong: #2a2e38;--txt: #9aa0ad;--txt-strong: #e7e9ee;--txt-mid: #c6cad3;--txt-dim: #8b91a0;--txt-faint: #808795;--accent: #a78bfa;--accent-ink: #0e0f12;--accent-glow: rgba(167, 139, 250, .16);--pane-bg: #050505;--pane-border: #262a33;--log-w: #f2f2f2;--log-c: #c9c9c9;--log-g: #8a8a8a;--log-d: #5a5a5a;--hover-border: #4d4d4d;--hover-border-soft: #3a4150;--ease-pane: cubic-bezier(.25, 1, .3, 1);--dur-dock: 1.35s;--dur-pane: .75s}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-variant-ligatures:none}::selection{background:var(--accent);color:var(--accent-ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}a{color:#e8e8e8}a:hover{color:var(--accent)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#2a2e38;border-radius:0}::-webkit-scrollbar-thumb:hover{background:#454b59}::-webkit-scrollbar-corner{background:transparent}*{scrollbar-width:thin;scrollbar-color:#2a2e38 transparent}[data-hidebar]{scrollbar-width:none}[data-hidebar]::-webkit-scrollbar{width:0;height:0;display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip-link{position:fixed;left:16px;top:-60px;z-index:100;background:var(--pane-bg);color:var(--txt-strong);border:1px solid var(--line-strong);padding:10px 16px;font-size:12px;text-decoration:none;transition:top .15s}.skip-link:focus-visible{top:16px}#app{height:100dvh;display:flex;background:var(--bg);overflow:hidden}.canvas{flex:1;overflow:auto;background:var(--bg);-webkit-overflow-scrolling:touch;overscroll-behavior:contain;height:100dvh}.canvas-head{position:sticky;top:0;z-index:40;background:var(--bg)}.canvas-head-row{max-width:784px;margin:0 auto;padding:14px 32px;display:flex;align-items:center;gap:16px;border-bottom:1px solid var(--line)}.canvas-head .brand{color:var(--txt-mid);font-size:12px;line-height:1;text-decoration:none}.canvas-head .brand:hover{color:var(--txt-strong)}.canvas-head .lang{margin-left:auto;color:var(--accent);font-size:12px;line-height:1;text-decoration:none;padding:4px 0}.canvas-head .lang:hover{color:var(--txt-strong)}.sections{max-width:784px;margin:0 auto;padding:48px 32px 128px;display:flex;flex-direction:column;gap:96px}.sec-label{color:var(--txt-faint);font-size:11px;letter-spacing:.06em;margin:0}.sec-label:before{content:"// " / "";color:var(--accent);font-weight:700;letter-spacing:0}.hero-row{display:flex;gap:40px;align-items:flex-start;flex-wrap:wrap;margin-top:18px}.hero-txt{flex:1;min-width:260px}.hero-txt h1{margin:0;color:#f2f2f2;font-size:44px;font-weight:700;letter-spacing:-.02em;line-height:1.1}.role{color:#8a8a8a;font-size:13px;margin:10px 0 0}.hero-txt p{margin:24px 0 0;color:#a3a3a3;font-size:15px;line-height:1.8;max-width:540px}.hero-txt p+p{margin-top:16px}.avatar-box{flex-shrink:0;width:238px;height:246px;overflow:hidden;background-image:linear-gradient(var(--bg),var(--bg))}.avatar-box img{display:block;width:238px;height:auto}.avatar-txt{font-family:JetBrains Mono,monospace;font-size:4.3px;line-height:1.06;letter-spacing:0;user-select:text}.avatar-txt>div{white-space:pre}.sec-slot h2{margin:14px 0 0;color:#f2f2f2;font-size:24px;font-weight:700}.proy-hint{color:var(--txt-faint);font-size:11px;margin:8px 0 0}.proy-list{display:flex;flex-direction:column;margin-top:24px;border-top:1px solid var(--line)}a.proy-row{display:flex;align-items:baseline;gap:14px;text-align:left;background:none;border:none;border-bottom:1px solid var(--line);padding:14px 6px;cursor:pointer;font-family:inherit;width:100%;text-decoration:none}a.proy-row:hover{background:#121212}.proy-row .num{color:var(--txt-faint);font-size:11px;min-width:22px}.proy-row .pname{color:#f2f2f2;font-size:13.5px;font-weight:700;white-space:nowrap}.proy-row .ptag{color:#8a8a8a;font-size:12px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.proy-row .pyear{color:var(--txt-faint);font-size:11px;white-space:nowrap}.proy-row .arrow{color:var(--txt-faint);font-size:12px}.sec-foot{border-top:1px solid var(--line);padding-top:40px}.contact-links{display:flex;gap:24px;margin-top:18px;flex-wrap:wrap}.contact-links a{color:#e8e8e8;font-size:13px}.contact-links a:hover{color:var(--accent)}.detail{max-width:784px;margin:0 auto;padding:40px 32px 80px}a.detail-back{display:inline-block;background:none;border:1px solid var(--line-strong);color:#8a8a8a;font-family:inherit;font-size:11px;padding:7px 12px;cursor:pointer;text-decoration:none}a.detail-back:hover{color:#f2f2f2;border-color:var(--hover-border)}.detail .sec-label{margin-top:32px}.detail .dh{margin:16px 0 0;color:#f2f2f2;font-size:36px;font-weight:700;letter-spacing:-.02em;line-height:1.15}.detail .dh:focus{outline:none}.detail .dh:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.detail-meta{color:#8a8a8a;font-size:12px;margin:10px 0 0}.detail-img{margin-top:28px;border:1px solid var(--pane-border)}.detail-img img{display:block;width:100%;height:auto}.detail-desc{margin:22px 0 0;color:#a3a3a3;font-size:14.5px;line-height:1.8;max-width:560px}.detail-points{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-top:28px;max-width:560px}.detail-points .pt{display:flex;gap:10px;align-items:baseline}.detail-points .pt:before{content:"";width:7px;height:7px;background:#e8e8e8;flex-shrink:0}.detail-points .pt span{color:#c9c9c9;font-size:12.5px;line-height:1.6}.detail-links{display:flex;gap:12px;margin-top:32px;flex-wrap:wrap}a.detail-link{display:inline-block;border:1px solid var(--hover-border-soft);color:#e8e8e8;font-size:12px;padding:10px 16px;text-decoration:none}a.detail-link:hover{border-color:#e8e8e8;background:#191c22;color:#e8e8e8}@media(max-width:560px){.hero-txt h1{font-size:34px}.sections{gap:72px;padding:40px 24px 96px}.detail{padding:32px 24px 64px}.canvas-head-row{padding:12px 24px}}@keyframes blink{0%,49%{opacity:1}50%,to{opacity:0}}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes popIn{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:none}}@keyframes psFall{0%{opacity:1;transform:translateY(0) rotate(0);animation-timing-function:cubic-bezier(.25,.7,.4,1)}18%{opacity:1;transform:translateY(-9px) rotate(-18deg);animation-timing-function:cubic-bezier(.45,0,.85,.4)}72%{opacity:1}to{opacity:0;transform:translateY(98px) rotate(62deg)}}@keyframes ccDrop{0%{opacity:0;transform:translateY(-42px);animation-timing-function:cubic-bezier(.35,0,.5,1)}46%{opacity:1;transform:translateY(0);animation-timing-function:cubic-bezier(.3,0,.25,1)}70%{transform:translateY(-9px)}86%{transform:translateY(-4px)}to{opacity:1;transform:translateY(-6px)}}@keyframes brillBurst{0%{background-position-x:0px}to{background-position-x:var(--shift)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.2}}@keyframes skel{0%,to{opacity:.4}50%{opacity:1}}@keyframes paneOpen{0%{opacity:0;transform:translate(-26px,26px) scale(.965)}to{opacity:1;transform:translate(0) scale(1)}}@keyframes paneClose{0%{opacity:1;transform:translate(0) scale(1)}to{opacity:0;transform:translate(-26px,26px) scale(.965)}}html[data-boot] #app:not([data-view=detail]) .canvas,html:not([data-boot]):not([data-hydrated]) .canvas{margin-left:0!important;margin-top:0!important;height:100dvh!important}html[data-boot] .sec-slot>*{display:none!important}html[data-boot] #app:not([data-view=detail]) .canvas-head{display:none}html:not([data-hydrated]):not([data-boot]) .session-root{display:none}@media(min-width:760px){.canvas{transition:margin-left var(--dur-dock) var(--ease-pane)}#app[data-stage=side][data-pane=open] .canvas{margin-left:400px}}@media(max-width:759.98px){.canvas{transition:margin-top var(--dur-pane) var(--ease-pane),height var(--dur-pane) var(--ease-pane)}#app[data-stage=side][data-pane=open] .canvas{margin-top:60dvh;height:40dvh;scrollbar-width:none}#app[data-stage=side][data-pane=open] .canvas::-webkit-scrollbar{width:0;height:0;display:none}}#app[data-notrans] .canvas{transition:none}#app[data-stage=center] .canvas-head{display:none}.detail{animation:fadeUp .25s both}.detail[hidden],#app[data-view=detail] .sections{display:none}.sec-slot>.skel{display:none}.sec-slot>.built{animation:fadeUp .6s both}.sec-slot[data-state=hidden]>*{display:none}.sec-slot[data-state=skel]>.built{display:none}.sec-slot[data-state=skel]>.skel{display:flex}.skel{flex-direction:column}.skel i{display:block;animation:skel 1.4s infinite}.avatar-wrap{animation:fadeUp .8s both}.pane{position:fixed;z-index:50;background:var(--pane-bg);display:flex;flex-direction:column;overflow:hidden;font-size:12px}.pane[data-win=min]{display:none}.pane[data-notrans]{transition:none!important}@media(min-width:760px){.pane[data-stage=center]{left:50%;top:50%;transform:translate(-50%,-50%);width:min(660px,92vw);height:min(500px,82dvh);border:1px solid var(--pane-border);box-shadow:0 30px 90px #000000a6;transition:all var(--dur-dock) var(--ease-pane)}.pane[data-stage=side]{left:0;top:50%;transform:translateY(-50%);width:400px;height:100dvh;border:1px solid transparent;border-right:1px solid var(--line);box-shadow:0 0 #0000;transition:all var(--dur-pane) var(--ease-pane)}.pane[data-stage=side][data-phase=boot]{transition:all var(--dur-dock) var(--ease-pane)}.pane[data-pstage=chip]{left:16px;top:calc(100dvh - 52px);transform:translate(0);width:176px;height:36px;border:1px solid var(--line-strong);border-right:1px solid var(--line-strong);pointer-events:none}}@media(max-width:759.98px){.pane{left:0;top:0;width:100vw;height:100dvh;border-bottom:1px solid transparent;transition:all var(--dur-pane) var(--ease-pane)}.pane[data-stage=side]:not([data-maxed]){height:60dvh;border-bottom:1px solid var(--line)}.pane[data-pstage=chip]{left:16px;top:calc(100dvh - 52px);width:176px;height:36px;border:1px solid var(--line-strong);pointer-events:none}}.pane-inner-w{box-sizing:border-box;width:auto}.pane-inner{box-sizing:border-box;width:auto;opacity:1;transition:opacity .3s ease .5s}.pane[data-pstage=chip] .pane-inner-w,.pane[data-pstage=chip] .pane-inner{width:400px}.pane[data-pstage=chip] .pane-inner{opacity:0;transition:opacity .16s}.pane-head{height:40px;display:flex;align-items:center;gap:10px;padding:0 14px;border-bottom:1px solid var(--line);flex-shrink:0}.pane-title{color:#c9c9c9;font-size:11px}.pane-btns{margin-left:auto;display:flex;gap:4px}.pane-btns button{width:26px;height:26px;background:none;border:1px solid var(--line-strong);color:#8a8a8a;font-family:inherit;font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.pane-btns button:hover{color:#f2f2f2;border-color:var(--hover-border)}.pane-log{flex:1;overflow:auto;padding:16px 14px}.pane[data-phase=boot] .pane-log{overflow:hidden}.pane-log .ln{white-space:pre-wrap;line-height:1.8}.cursor{display:inline-block;width:7px;height:13px;background:var(--accent);animation:blink 1s steps(1) infinite;vertical-align:middle}.pane-skip{padding:10px 14px;border-top:1px solid var(--line);flex-shrink:0}.pane-skip button{background:none;border:none;color:#8a8a8a;font-family:inherit;font-size:11px;cursor:pointer;padding:0}.pane-skip button:hover{color:#e8e8e8}.pane-prompts{padding:12px 14px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:6px;flex-shrink:0;animation:fadeUp .5s both}.pane-prompts .ph{color:var(--accent);font-size:10px;letter-spacing:.08em;animation:fadeUp .4s both .1s}.pane-prompts button{text-align:left;background:none;border:1px solid var(--line-strong);color:#e8e8e8;font-family:inherit;font-size:11px;padding:7px 10px;cursor:pointer}.pane-prompts button:hover{background:var(--bg-soft);border-color:var(--accent)}.pane-prompts button .pfx{color:var(--accent)}.pane-prompts .pb1{animation:fadeUp .4s both .22s}.pane-prompts .pb2{animation:fadeUp .4s both .34s}.pane-prompts .pb-min{border:none;color:#8a8a8a;padding:5px 10px 2px;animation:fadeUp .4s both .46s}.pane-prompts .pb-min:hover{background:none;border:none;color:#e8e8e8}.pane-prompts[data-settled],.pane-prompts[data-settled] .ph,.pane-prompts[data-settled] button{animation:none}.gag-slot{position:relative;width:29px;height:26px;flex:none;overflow:visible}.gag-ps{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.gag-cc{position:absolute;inset:0;cursor:pointer}.gag-cc .sprite{position:absolute;inset:0;background-image:url(/sprite/brillitos.png);background-repeat:no-repeat;background-size:1555.4px 26px;--shift: -1555.4px;image-rendering:pixelated}.chip{position:fixed;left:16px;bottom:16px;z-index:60;width:176px;height:36px;box-sizing:border-box;background:var(--pane-bg);border:1px solid var(--line-strong);color:#c9c9c9;font-family:inherit;font-size:11px;padding:0 14px;display:flex;align-items:center;gap:9px;cursor:pointer}.chip:hover{border-color:#e8e8e8}.chip .sprite{width:24px;height:22px;flex:none;background-image:url(/sprite/brillitos.png);background-repeat:no-repeat;background-size:1316.2px 22px;--shift: -1316.2px;image-rendering:pixelated;transform:translateY(-5px)}.chip span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dev-wrap{position:fixed;right:16px;bottom:16px;z-index:70;display:flex;flex-direction:column;align-items:flex-end;gap:8px}.dev-panel{background:var(--pane-bg);border:1px solid var(--line-strong);padding:12px 14px;display:flex;flex-direction:column;gap:8px;animation:fadeUp .2s both;min-width:180px}.dev-panel .dl{color:#5a5a5a;font-size:9px;letter-spacing:.12em}.dev-panel button{text-align:left;background:none;border:1px solid var(--line-strong);color:#8a8a8a;font-family:inherit;font-size:11px;padding:7px 10px;cursor:pointer}.dev-panel button:hover{color:#f2f2f2;border-color:var(--hover-border)}.dev-panel button.primary{border-color:var(--hover-border-soft);color:#e8e8e8}.dev-panel button.primary:hover{background:#191c22;border-color:#e8e8e8}.dev-toggle{background:var(--pane-bg);border:1px solid var(--line-strong);color:#5a5a5a;font-family:inherit;font-size:10px;padding:6px 10px;cursor:pointer}.dev-toggle:hover{color:#e8e8e8;border-color:var(--hover-border)}@media(prefers-reduced-motion:reduce){@keyframes blink{0%,to{opacity:1}}@keyframes fadeUp{0%{opacity:0}to{opacity:1}}@keyframes popIn{0%{opacity:0}to{opacity:1}}@keyframes pulse{0%,to{opacity:1}}@keyframes skel{0%,to{opacity:.6}}@keyframes paneOpen{0%{opacity:0}to{opacity:1}}@keyframes paneClose{0%{opacity:1}to{opacity:0}}}
