:root{--ink:#2a1f1f;--muted:#75686a;--tertiary:#786b68;--line-no:#b5a8a4;--body-alt:#5a4d4f;--m:#8a1c1c;--m-hover:#731515;--m-deep:#6e1414;--m-mid:#b5524c;--m-line:#e6c3be;--m-on:#f6dcd8;--m-row:#fcf6f5;--mt:#f9ecea;--ms:#f2d6d2;--page:#f8f5f2;--soft:#f4efec;--track:#efe8e4;--ring:#e6dcd7;--canvas:#fbf9f7;--ok:#2e7d4f;--ok-deep:#1f5c38;--ok-bg:#e6f2ea;--ok-line:#bfdcc9;--err:#c62828;--err-deep:#a11b1b;--err-bg:#fdeaea;--err-line:#f3c2c0;--warn:#c2700a;--warn-deep:#8a4b06;--warn-bg:#fdf1df;--info:#2f5f9e;--info-deep:#234a7c;--info-bg:#e9f0f8;--shadow-card:0 1px 2px #2a1f1f0d, 0 6px 20px #2a1f1f0d;--shadow-card-hover:0 2px 4px #2a1f1f0f, 0 14px 32px #2a1f1f1a;--shadow-pill:0 1px 3px #2a1f1f1f;--mono:"JetBrains Mono", monospace;--head:"Mitr", "Anuphan", sans-serif;--rail-h:64px;--ease:cubic-bezier(.2, .8, .2, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1)}*{box-sizing:border-box}body{background:var(--page);color:var(--ink);margin:0;font-family:Anuphan,system-ui,sans-serif;font-size:15px;line-height:1.6}a{color:var(--m)}a:hover{color:var(--m-hover)}button,input,select{font-family:inherit}button:focus-visible,a:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--m);outline-offset:2px}input{outline-color:var(--m)}h1,h2,h3{font-family:var(--head);letter-spacing:0;margin:0;font-weight:500}.app{min-height:100vh;display:flex}.rail{box-shadow:1px 0 0 var(--track);background:#fff;flex-direction:column;flex:0 0 96px;align-items:center;gap:4px;height:100vh;padding:20px 0;display:flex;position:sticky;top:0}.rail-logo{background:var(--m);color:#fff;border-radius:16px;justify-content:center;align-items:center;width:48px;height:48px;margin-bottom:18px;display:flex}.rail-logo:hover{color:#fff}.rail-item{white-space:nowrap;width:76px;color:var(--muted);transition:background-color .2s, color .2s, transform .12s var(--ease);background:0 0;border-radius:16px;flex-direction:column;align-items:center;gap:4px;padding:10px 0 8px;font-size:12px;font-weight:600;text-decoration:none;display:flex}.rail-item:hover,.rail-item.active{background:var(--mt);color:var(--m)}.rail-item:active{transform:scale(.94)}.rail-item.active svg{animation:pop .35s var(--ease-spring)}.rail-avatar{background:var(--ms);width:44px;height:44px;color:var(--m-deep);cursor:pointer;transition:transform .12s var(--ease), box-shadow .2s;border:0;border-radius:50%;font-size:13px;font-weight:700}a.rail-avatar{justify-content:center;align-items:center;text-decoration:none;display:flex}.rail-avatar:hover{box-shadow:0 0 0 4px var(--mt)}.rail-avatar.active{background:var(--m);color:#fff;box-shadow:0 0 0 4px var(--ms)}.rail-avatar:active{transform:scale(.92)}.page-col{flex-direction:column;flex:1;min-width:0;display:flex}.page-header{flex-wrap:wrap;align-items:center;gap:12px;width:100%;max-width:1272px;margin:0 auto;padding:28px 36px 24px;display:flex}.page-header-title{flex-direction:column;flex:auto;gap:2px;margin-right:auto;display:flex}.page-header h1{font-size:30px;line-height:1.3}.back-link{color:var(--muted);white-space:nowrap;align-items:center;gap:4px;font-size:14px;font-weight:500;text-decoration:none;display:inline-flex}.back-link:hover{color:var(--m)}.main{flex-direction:column;gap:20px;width:100%;max-width:1272px;margin:0 auto;padding:0 36px 56px;display:flex}.card{box-shadow:var(--shadow-card);background:#fff;border-radius:24px;min-width:0}.card-link{color:var(--ink);flex-direction:column;gap:10px;padding:24px;text-decoration:none;transition:transform .15s,box-shadow .15s;display:flex}.card-link:hover{box-shadow:var(--shadow-card-hover);color:var(--ink);transform:translateY(-3px)}.btn{cursor:pointer;white-space:nowrap;height:44px;transition:background-color .15s, color .15s, box-shadow .15s, opacity .15s, transform .12s var(--ease);border:0;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 20px;font-size:15px;font-weight:600;text-decoration:none;display:inline-flex}.btn:active:not(:disabled){transform:scale(.96)}.btn[aria-busy=true]:before{content:"";border:2px solid;border-right-color:#0000;border-radius:50%;flex:none;width:14px;height:14px;animation:.7s linear infinite spin}.btn:disabled{cursor:default;opacity:.45}.btn-primary{background:var(--m);color:#fff}.btn-primary:hover:not(:disabled){background:var(--m-hover);color:#fff;box-shadow:0 6px 16px #8a1c1c40}.btn-secondary{box-shadow:inset 0 0 0 1.5px var(--ring);color:var(--ink);background:#fff}.btn-secondary:hover:not(:disabled){background:var(--soft)}.btn-ghost{color:var(--m);background:0 0;padding:0 16px}.btn-ghost:hover:not(:disabled){background:var(--mt)}.btn-soft{background:var(--soft);height:40px;color:var(--ink);padding:0 18px;font-size:14px}.btn-soft:hover{background:var(--track)}.btn-round{width:44px;padding:0}.seg{background:var(--track);border-radius:999px;flex-wrap:wrap;gap:2px;padding:4px;display:inline-flex}.seg.in-card{background:var(--soft)}.seg button{white-space:nowrap;cursor:pointer;height:36px;color:var(--muted);transition:background-color .2s, color .2s, box-shadow .2s, transform .12s var(--ease);background:0 0;border:0;border-radius:999px;justify-content:center;align-items:center;padding:0 16px;font-size:14px;font-weight:600;display:inline-flex}.seg button:active:not(:disabled){transform:scale(.95)}.seg button[aria-checked=true],.seg button[aria-selected=true],.seg button[aria-pressed=true]{color:var(--ink);box-shadow:var(--shadow-pill);background:#fff}.seg button:disabled{opacity:.45;cursor:default}.chip{white-space:nowrap;border-radius:999px;flex:none;align-items:center;height:26px;padding:0 12px;font-size:13px;font-weight:600;display:inline-flex}.lv-easy{background:var(--mt);color:var(--m)}.lv-mid{background:var(--ms);color:var(--m-deep)}.lv-hard{background:var(--m);color:#fff}.chip-soft{background:var(--soft);color:var(--body-alt)}.topic{white-space:nowrap;cursor:pointer;height:40px;color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--ring);transition:background-color .2s, color .2s, box-shadow .2s, transform .12s var(--ease);background:#fff;border:0;border-radius:999px;padding:0 16px;font-size:14px;font-weight:600}.topic:active{transform:scale(.95)}.topic[aria-pressed=true]{background:var(--m);color:#fff;box-shadow:none}.stat-pill{white-space:nowrap;border-radius:999px;align-items:center;gap:6px;height:38px;padding:0 14px;font-size:14px;display:inline-flex}.streak-pill{background:var(--soft);color:var(--muted);padding-left:6px}.streak-pill b{font-size:15px}.streak-flame{width:28px;height:28px;color:var(--line-no);background:#fff;border-radius:50%;justify-content:center;align-items:center;display:flex}.streak-pill.lit{color:#8a4b06;background:linear-gradient(135deg,#fff3cf,#ffd9a6);box-shadow:inset 0 0 0 1px #f6c98a}.streak-pill.lit .streak-flame{color:#fff;background:linear-gradient(#ffd25e,#e8892a);animation:2.4s ease-in-out infinite lb-flicker;box-shadow:0 2px 8px #e8892a73}.pts-pill{background:var(--m);color:#fff;font-family:var(--mono);font-size:13px;font-weight:600;box-shadow:0 2px 8px #8a1c1c40}.pts-pill svg{color:#f6c945}.pts-pill b{font-size:15px}.code{font-family:var(--mono);font-size:14px;line-height:1.9}.code-line{border-radius:10px;align-items:center;padding:0 10px;display:flex}.code-line.clickable{cursor:pointer}.code-line.hoverable:hover{background:var(--m-row)}.code-no{width:30px;color:var(--line-no);flex:none}.code-text{white-space:pre}.inline-code{font-family:var(--mono);background:var(--soft);border-radius:6px;padding:0 5px;font-weight:500}.field{flex-direction:column;gap:8px;font-size:14px;font-weight:600;display:flex}.input{background:var(--page);height:50px;color:var(--ink);border:0;border-radius:14px;width:100%;padding:0 16px;font-size:16px;font-weight:400}.icon-btn{color:var(--muted);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;display:flex}.icon-btn:hover{background:var(--track)}.prob-row{color:var(--ink);border-radius:16px;align-items:center;gap:16px;padding:14px 16px;text-decoration:none;display:flex}.prob-row:hover{color:var(--ink);background:var(--page)!important}.search-pill.parts-search{flex:none;margin:0 2px 4px}.search-pill.parts-search>svg{top:12px;left:12px}.search-pill.parts-search input{height:40px;padding-left:36px;font-size:14px}.parts-list{overscroll-behavior:contain;flex-direction:column;gap:2px;height:420px;margin:0 -6px;padding:0 6px;display:flex;overflow-y:auto}.part-btn{text-align:left;cursor:grab;color:var(--ink);background:0 0;border:0;border-radius:12px;flex:none;align-items:center;gap:10px;padding:6px;font-size:14px;display:flex}.part-btn:hover{background:var(--page)}.hero-btn-white{color:var(--m);background:#fff}.hero-btn-white:hover{background:var(--mt);color:var(--m)}summary{cursor:pointer}.solve-grid{grid-template-columns:minmax(300px,5fr) minmax(360px,7fr);gap:20px;display:grid}.mode-tabs{flex-wrap:wrap;gap:8px;display:flex}.mode-tab{box-shadow:inset 0 0 0 1.5px var(--ring);color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:background-color .2s, box-shadow .2s, transform .12s var(--ease);background:0 0;border:0;border-radius:16px;align-items:center;gap:10px;padding:7px 16px 7px 7px;display:flex}.mode-tab:hover{background:#fff}.mode-tab:active{transform:scale(.98)}.mode-tab[aria-selected=true]{box-shadow:inset 0 0 0 2px var(--m), var(--shadow-card);background:#fff}.mode-tab b{font-family:var(--head);font-size:15px;font-weight:500;line-height:1.3}.mode-tab small{color:var(--muted);white-space:nowrap;font-size:12.5px;line-height:1.4}.mode-tab-ico{background:var(--soft);width:34px;height:34px;color:var(--muted);border-radius:11px;flex:none;justify-content:center;align-items:center;transition:background-color .2s,color .2s;display:flex}.mode-tab[aria-selected=true] .mode-tab-ico{background:var(--m);color:#fff}.howto{counter-reset:howto;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.howto li{counter-increment:howto;background:var(--page);border-radius:14px;align-items:baseline;gap:10px;padding:10px 14px;font-size:14.5px;line-height:1.6;display:flex}.howto li:before{content:counter(howto);background:var(--mt);width:22px;height:22px;color:var(--m);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:inline-flex}.rail-help{background:var(--soft);width:36px;height:36px;color:var(--muted);font-family:var(--head);cursor:pointer;transition:background-color .2s, color .2s, transform .12s var(--ease);border:0;border-radius:50%;flex:none;margin-bottom:8px;font-size:17px;font-weight:600}.rail-help:hover{background:var(--mt);color:var(--m)}.rail-help:active{transform:scale(.92)}.tour{z-index:70;position:fixed;inset:0}.tour-catch{position:absolute;inset:0}.tour-spot{pointer-events:none;transition:top .4s var(--ease), left .4s var(--ease), width .4s var(--ease), height .4s var(--ease);border-radius:18px;animation:.25s ease-out both fade-in;position:fixed;box-shadow:0 0 0 9999px #2a1f1f94}.tour-spot:after{content:"";border:2.5px solid #fff;border-radius:22px;animation:1.6s ease-out infinite tour-pulse;position:absolute;inset:-4px}@keyframes tour-pulse{0%{opacity:.9;transform:scale(1)}to{opacity:0;transform:scale(1.04)}}.tour-tip{width:min(340px,100vw - 24px);animation:tour-in .32s var(--ease) both;background:#fff;border-radius:18px;flex-direction:column;gap:6px;padding:16px 18px 14px;display:flex;position:fixed;box-shadow:0 18px 44px #2a1f1f47}@keyframes tour-in{0%{opacity:0;transform:translateY(8px)scale(.97)}}.tour-tip.above{animation-name:tour-in-above}@keyframes tour-in-above{0%{opacity:0;transform:translateY(-8px)scale(.97)}}.tour-arrow{background:#fff;border-radius:3px;width:14px;height:14px;margin-left:-7px;position:absolute;top:-7px;transform:rotate(45deg)}.tour-tip.above .tour-arrow{top:auto;bottom:-7px}.tour-count{font-family:var(--mono);color:var(--m);font-size:12px;font-weight:600}.tour-tip b{font-family:var(--head);font-size:18px;font-weight:500}.tour-tip p{color:var(--body-alt);margin:0;font-size:14.5px;line-height:1.65}.tour-actions{align-items:center;gap:8px;margin-top:6px;display:flex}.tour-skip{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0;font-size:14px}.tour-skip:hover{color:var(--m)}.tour-dots{gap:4px;margin-left:6px;margin-right:auto;display:flex}.tour-dots i{background:var(--ring);width:6px;height:6px;transition:width .25s var(--ease), background-color .25s;border-radius:99px}.tour-dots i.on{background:var(--m);width:16px}.menu{display:inline-flex;position:relative}.main>:has(.menu-pop){z-index:40;position:relative}.menu-pop{z-index:45;min-width:240px;animation:dialog-in .18s var(--ease) both;background:#fff;border-radius:16px;flex-direction:column;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 2px 6px #2a1f1f14,0 18px 40px #2a1f1f2e}.menu-pop.up{top:auto;bottom:calc(100% + 8px)}.menu-pop button{font:inherit;text-align:left;color:var(--ink);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:11px;align-items:center;gap:10px;padding:9px 12px;font-size:14px;display:flex}.menu-pop button:hover:not(:disabled){background:var(--mt)}.menu-pop button:disabled{opacity:.4;cursor:default}.menu-ico{width:18px;color:var(--m);flex:none;justify-content:center;display:flex}.menu-pop kbd{background:var(--soft);font-family:var(--mono);color:var(--muted);border-radius:6px;padding:1px 7px;font-size:12px}.flow{background:var(--page);border-radius:18px;flex-wrap:wrap;align-items:center;gap:10px;padding:16px;display:flex}.flow-col{flex-direction:column;gap:6px;min-width:0;display:flex}.flow-cap{color:var(--muted);font-size:12px;font-weight:600}.flow-none{color:var(--tertiary);font-size:13px}.flow-node{min-width:92px;box-shadow:inset 0 0 0 1.5px var(--ring);animation:pop .35s var(--ease-spring) both;background:#fff;border-radius:12px;flex-direction:column;padding:8px 12px;display:flex}.flow-node.num{box-shadow:inset 0 0 0 1.5px var(--ring);background:var(--soft)}.flow-node.mem{box-shadow:inset 0 0 0 1.5px var(--m-line)}.flow-node.out{background:var(--ms);box-shadow:none}.flow-node.pc{background:var(--mt)}.flow-label{font-family:var(--mono);color:var(--muted);font-size:12px;font-weight:600}.flow-node.out .flow-label{color:var(--m-deep)}.flow-value{font-family:var(--mono);color:var(--ink);overflow-wrap:anywhere;font-size:18px;font-weight:700}.flow-node.out .flow-value{color:var(--m-deep)}.flow-old{font-family:var(--mono);color:var(--tertiary);font-size:12px;text-decoration:line-through}.flow-op{background:var(--m);color:#fff;text-align:center;width:86px;height:86px;box-shadow:0 0 0 6px var(--mt);animation:pop .4s var(--ease-spring) 50ms both;border-radius:50%;flex-direction:column;flex:none;justify-content:center;align-items:center;display:flex}.flow-sym{font-family:var(--mono);font-size:22px;font-weight:700;line-height:1.1}.flow-word{color:var(--m-on);padding:0 6px;font-size:12px;line-height:1.3}.flow-arrow{color:var(--m-mid);flex:none}.explain{background:var(--mt);color:var(--body-alt);border-radius:16px;align-items:center;gap:14px;padding:12px 16px;font-size:14px;line-height:1.6;display:flex}.explain b{font-family:var(--head);color:var(--ink);font-size:16px;font-weight:500}.explain-art{flex:none;display:flex}.reg-grid{grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:8px;display:grid}.reg-box{min-width:0;box-shadow:inset 0 0 0 1.5px var(--ring);background:#fff;border-radius:14px;flex-direction:column;gap:2px;padding:10px 12px;display:flex}.reg-box.special{background:var(--page);box-shadow:none}.reg-box.on{background:var(--ms);box-shadow:none}.reg-name{font-family:var(--mono);flex-direction:column;font-size:14px;font-weight:700;display:flex}.reg-name small{color:var(--muted);font-family:Anuphan,sans-serif;font-size:12px;font-weight:500}.reg-val{font-family:var(--mono);overflow-wrap:anywhere;font-size:19px;font-weight:700}.reg-box.zero .reg-val{color:var(--tertiary)}.reg-box.on .reg-val,.reg-box.on .reg-name{color:var(--m-deep)}.reg-old{font-family:var(--mono);color:var(--tertiary);font-size:12px;text-decoration:line-through}.mem-strip{flex-direction:column;gap:4px;max-height:420px;display:flex;overflow-y:auto}.mem-cell{border-radius:10px;grid-template-columns:104px minmax(90px,160px) 1fr;align-items:center;gap:12px;display:grid}.mem-addr{font-family:var(--mono);color:var(--tertiary);text-align:right;font-size:12px}.mem-box{box-shadow:inset 0 0 0 1.5px var(--ring), inset 0 -3px 0 var(--track);font-family:var(--mono);text-align:right;background:#fff;border-radius:10px;padding:6px 12px;font-size:15px;font-weight:700}.mem-cell.on .mem-box{background:var(--ms);color:var(--m-deep);box-shadow:none}.mem-cell.sp .mem-box{box-shadow:inset 0 0 0 2px var(--m)}.mem-tag{font-family:var(--mono);color:var(--m);font-size:12.5px}.hflow-box{background:var(--page);border-radius:16px;flex-direction:column;justify-content:flex-end;height:340px;padding:10px;display:flex;overflow:hidden;-webkit-mask-image:linear-gradient(#0000,#000 48px);mask-image:linear-gradient(#0000,#000 48px)}.hflow{flex-direction:column;align-items:flex-start;margin:0;padding:0;list-style:none;display:flex}.hflow li{flex-direction:column;align-items:flex-start;display:flex}.hflow button{box-shadow:inset 0 0 0 1px var(--ring);font:inherit;color:var(--ink);text-align:left;cursor:pointer;white-space:nowrap;background:#fff;border:0;border-radius:14px;align-items:center;gap:10px;padding:8px 12px;display:flex}.hflow button:hover:not(:disabled){box-shadow:inset 0 0 0 1.5px var(--m-mid)}.hflow button:disabled{cursor:default}.hflow li.now button{background:var(--mt);box-shadow:inset 0 0 0 1.5px var(--m)}.hf-n{background:var(--soft);width:24px;height:24px;color:var(--muted);font-family:var(--mono);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:flex}.hflow li.now .hf-n{background:var(--m);color:#fff}.hf-ins{font-family:var(--mono);font-size:13.5px;font-weight:600}.hf-to{color:var(--m-mid);font-weight:700}.hf-outs{gap:6px;display:flex}.hf-out{background:var(--ms);color:var(--m-deep);font-family:var(--mono);border-radius:10px;align-items:baseline;gap:6px;padding:2px 10px;font-size:13px;font-weight:700;display:inline-flex}.hf-out i{color:var(--m);font-size:12px;font-style:normal;font-weight:500}.hf-out.mem{box-shadow:inset 0 0 0 1px var(--m-line);background:#fff}.hf-none{color:var(--line-no)}.hf-link{border-left:2px solid var(--m-line);height:18px;margin-left:23px;position:relative}.hf-link:after{content:"";border:5px solid #0000;border-top:6px solid var(--m-line);border-bottom:0;position:absolute;bottom:0;left:-6px}.hf-link.jump{border-left-color:var(--m-mid);height:auto;color:var(--m);margin:4px 0 4px 23px;padding:2px 10px 2px 12px;font-size:12.5px;font-weight:600}.hf-link.jump:after{display:none}.hflow-big{zoom:1.25;overflow-x:auto}@media (width<=720px){.flow-arrow{transform:rotate(90deg)}.flow{flex-direction:column;align-items:stretch}.flow-op,.flow-arrow{align-self:center}.mem-cell{grid-template-columns:88px minmax(70px,1fr)}.mem-tag{grid-column:2}}details.more summary{color:var(--m);font-size:14px;font-weight:600}@media (width<=720px){.mode-tab{gap:10px;padding:10px 12px}.mode-tab-ico{width:34px;height:34px}.mode-tab small{display:none}}.code-ws{grid-template-columns:minmax(0,1fr);gap:16px;display:grid}.ws-card{flex-direction:column;min-width:0;display:flex}.ws-fill{flex-direction:column;flex:1;min-height:0;display:flex}.ws-scroll{max-height:480px;overflow:auto}.ws-editor .editor{max-height:520px}.ws-tabs{scrollbar-width:none;min-width:0;overflow-x:auto}.ws-tabs .seg{flex-wrap:nowrap}.ws-tabs .seg button{flex:none}@media (width>=1080px) and (height>=620px){.page-enter:has(>.main.ws){height:100vh}.page-enter:has(>.main.ws) .page-header{max-width:none;padding:14px 24px 12px}.page-enter:has(>.main.ws) .page-header h1{font-size:24px}.page-enter:has(>.main.ws) .page-header .mode-tabs{margin-left:auto}.main.ws{flex:1;max-width:none;min-height:0;padding:0 24px 20px}.code-ws{flex:1;grid-template-rows:minmax(0,1fr) auto;min-height:0}.code-ws.convert{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr)}.code-ws.run{grid-template-columns:minmax(0,.9fr) minmax(0,.9fr) minmax(0,1.5fr)}.ws-card{min-height:0;overflow:hidden}.ws-editor{grid-area:1/1/span 2}.ws-out{grid-area:1/2}.ws-out.tall{grid-row:1/span 2}.ws-detail{grid-area:1/3/span 2}.ws-scroll{flex:1;min-height:0;max-height:none}.ws-editor .editor{max-height:none}.code-ws .player{box-shadow:var(--shadow-card);border-radius:20px;flex-wrap:nowrap;grid-area:2/2;align-self:stretch;gap:6px;padding:8px 10px;animation:none;position:static}.code-ws .player .btn-ghost{padding:0 12px}.code-ws .player-lbl{display:none}.code-ws .player-count{margin-left:auto}.code-ws .mem-strip{max-height:none;overflow:visible}}.player{z-index:30;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fffffff0;border-radius:999px;flex-wrap:wrap;justify-content:center;align-self:center;align-items:center;gap:8px;padding:10px 14px;display:flex;position:sticky;bottom:16px;box-shadow:0 2px 6px #2a1f1f14,0 16px 36px #2a1f1f29}.player-count{color:var(--muted);white-space:nowrap;padding:0 8px;font-size:14px}.player-count b{font-family:var(--mono);color:var(--ink)}@media (width<=900px){.solve-grid{grid-template-columns:minmax(0,1fr)}}.editor{font-family:var(--mono);border:1.5px solid var(--ring);background:#fff;border-radius:14px;font-size:14px;transition:border-color .15s,box-shadow .15s;display:flex;overflow:auto}.editor:focus-within{border-color:var(--m);box-shadow:0 0 0 3px #8a1c1c1f}.editor-gutter{text-align:right;width:44px;color:var(--line-no);-webkit-user-select:none;user-select:none;background:var(--canvas);box-shadow:inset -1px 0 0 var(--track);flex:none;padding-right:10px;font-size:13px;line-height:26px}.editor-body{flex:1;min-width:0;overflow:auto hidden}.editor-pre{font:inherit;white-space:pre;tab-size:4;pointer-events:none;margin:0}.editor-ta{resize:none;color:#0000;width:100%;height:100%;caret-color:var(--ink);font:inherit;white-space:pre;tab-size:4;background:0 0;border:0;outline:0;margin:0;position:absolute;inset:0;overflow:hidden}.editor-ta::selection{color:#0000;background:#8a1c1c2e}.notice{border-radius:14px;align-items:flex-start;gap:10px;padding:12px 16px;font-size:14px;line-height:1.6;display:flex}.notice.err{background:var(--err-bg);color:var(--err-deep);box-shadow:inset 3px 0 0 var(--err)}.notice.ok{background:var(--ok-bg);color:var(--ok-deep);box-shadow:inset 3px 0 0 var(--ok)}.solved-banner{animation:rise .3s var(--ease) both;align-items:center;gap:14px;padding:14px 20px;display:flex}.solved-mark{background:var(--ok);color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:34px;height:34px;display:flex}.solved-text{flex-direction:column;flex:1;min-width:0;line-height:1.4;display:flex}.solved-text b{font-family:var(--head);font-size:16px;font-weight:500}.solved-text span{color:var(--muted);font-size:13px}.solved-pts{background:var(--mt);height:32px;color:var(--m);font-family:var(--mono);border-radius:999px;flex:none;align-items:center;padding:0 14px;font-size:14px;font-weight:600;display:inline-flex}.notice.warn{background:var(--warn-bg);color:var(--warn-deep);box-shadow:inset 3px 0 0 var(--warn)}.notice.info{background:var(--info-bg);color:var(--info-deep);box-shadow:inset 3px 0 0 var(--info)}.skeleton{background:linear-gradient(90deg, var(--soft), var(--track), var(--soft));background-size:200% 100%;border-radius:14px;animation:1.2s linear infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.mini-input{background:var(--page);height:36px;font-family:var(--mono);color:var(--ink);border:0;border-radius:10px;min-width:0;padding:0 12px;font-size:13px}.mini-input:focus{outline:2px solid var(--m)}.dialog-backdrop{z-index:50;background:#2a1f1f59;justify-content:center;align-items:center;padding:16px;animation:.18s ease-out both fade-in;display:flex;position:fixed;inset:0}.dialog{width:100%;max-width:460px;animation:dialog-in .28s var(--ease-spring) both;background:#fff;border-radius:24px;flex-direction:column;gap:16px;padding:28px;display:flex;box-shadow:0 30px 60px #2a1f1f40}.dialog-backdrop.leaving{animation:.18s ease-in both fade-out}.dialog-backdrop.leaving .dialog{animation:.18s ease-in both dialog-out}.dialog.celebrate{text-align:center;align-items:center;padding-top:36px}.burst{justify-content:center;align-items:center;width:88px;height:88px;display:flex;position:relative}.burst-check{background:var(--m);color:#fff;width:88px;height:88px;box-shadow:0 0 0 10px var(--mt);animation:pop .5s var(--ease-spring) 80ms both;border-radius:50%;justify-content:center;align-items:center;display:flex}.burst i{background:var(--m);opacity:0;width:8px;height:14px;animation:burst .9s var(--ease) .15s both;border-radius:3px;margin:-7px 0 0 -4px;position:absolute;top:50%;left:50%}.burst i:nth-child(3n+2){background:var(--m-mid)}.burst i:nth-child(3n){background:var(--m-line);border-radius:50%;height:8px}.celebrate-pts{font-family:var(--mono);color:var(--m);animation:rise .4s var(--ease) .25s both;font-size:28px;font-weight:700}.toasts{z-index:60;pointer-events:none;flex-direction:column;align-items:flex-end;gap:10px;display:flex;position:fixed;bottom:24px;right:24px}.toast{pointer-events:auto;max-width:min(420px,100vw - 32px);color:var(--ink);font:inherit;text-align:left;cursor:pointer;animation:toast-in .32s var(--ease-spring) both;background:#fff;border:0;border-radius:16px;align-items:center;gap:10px;padding:12px 18px 12px 12px;font-size:14px;font-weight:500;line-height:1.5;display:flex;box-shadow:0 2px 6px #2a1f1f14,0 16px 36px #2a1f1f29}.toast.leaving{animation:.18s ease-in both toast-out}.toast-icon{background:var(--soft);width:28px;height:28px;color:var(--body-alt);border-radius:50%;flex:none;justify-content:center;align-items:center;display:flex}.toast.ok .toast-icon{background:var(--ok);color:#fff}.toast.info .toast-icon{background:var(--info-bg);color:var(--info)}.toast.err{box-shadow:inset 0 0 0 1.5px var(--err-line), 0 16px 36px #2a1f1f29}.toast.err .toast-icon{background:var(--err);color:#fff}.page-enter{min-width:0;animation:rise .32s var(--ease) both;flex-direction:column;flex:1;display:flex}.page-enter .main>:not(.skeleton){animation:rise .4s var(--ease) both}.page-enter .main>:nth-child(2){animation-delay:40ms}.page-enter .main>:nth-child(3){animation-delay:80ms}.page-enter .main>:nth-child(n+4){animation-delay:.12s}.notice{animation:rise .3s var(--ease) both}.pop-in{animation:pop .38s var(--ease-spring) both;animation-delay:calc(var(--i,0) * 60ms)}.shake{animation:shake .42s var(--ease)}.flash{animation:flash .7s var(--ease)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade-in{0%{opacity:0}}@keyframes fade-out{to{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes pop{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:none}}@keyframes dialog-in{0%{opacity:0;transform:translateY(16px)scale(.94)}to{opacity:1;transform:none}}@keyframes dialog-out{to{opacity:0;transform:translateY(8px)scale(.97)}}@keyframes toast-in{0%{opacity:0;transform:translate(40px)scale(.9)}to{opacity:1;transform:none}}@keyframes toast-out{to{opacity:0;transform:translate(30px)}}@keyframes burst{0%{opacity:1;transform:rotate(var(--a)) translateY(0) scale(.4)}70%{opacity:1}to{opacity:0;transform:rotate(var(--a)) translateY(calc(var(--d) * -1)) rotate(120deg) scale(1)}}@keyframes shake{20%,60%{transform:translate(-6px)}40%,80%{transform:translate(6px)}}@keyframes flash{0%{background-color:var(--m-line);box-shadow:0 0 0 3px var(--m-line)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}}@media (width<=720px){.app{flex-direction:column-reverse}.rail{height:auto;box-shadow:0 -1px 0 var(--track);z-index:20;flex-direction:row;flex:none;justify-content:space-around;gap:0;padding:6px 4px;position:sticky;top:auto;bottom:0;overflow-x:auto}.rail-logo,.rail>span{display:none}.rail{height:var(--rail-h)}.rail-item{flex:1 1 0;gap:2px;width:auto;min-width:0;padding:4px 2px;font-size:12px}.rail-help{display:none}.rail-avatar{flex:none;width:36px;height:36px}.page-header{padding:20px 16px 16px}.page-header h1{font-size:24px}.main{padding:0 16px 32px}.toasts{align-items:stretch;bottom:84px;left:16px;right:16px}.toast{max-width:none}.ph-help{display:inline-flex}.player{border-radius:20px;flex-wrap:nowrap;gap:4px;padding:8px 10px;bottom:76px}.player .btn-ghost{padding:0 12px}.player-lbl{display:none}}@keyframes dp-wire{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}@keyframes dp-unit{0%{fill:#fff;stroke:#cfc4bf;stroke-width:1.5px}}@keyframes dp-label{0%{fill:#9a8d8a}}@keyframes dp-wire-stale{0%{stroke:#8a1c1c;stroke-width:3px}}@keyframes dp-unit-stale{0%{fill:#f9ecea;stroke:#8a1c1c;stroke-width:2.5px}}@keyframes dp-label-stale{0%{fill:#8a1c1c}}@keyframes dp-unit-pulse{40%{fill:#f0c9c3;stroke:#6e1414;stroke-width:4px}}@keyframes dp-val-in{0%{opacity:0;transform:translateY(4px)}}@keyframes dp-val-out{to{opacity:0;transform:translateY(-4px)}}.dp{flex-direction:column;gap:10px;display:flex}.dp-bar{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.dp-heading{flex:200px;min-width:0}.dp-tools{flex-wrap:wrap;align-items:center;gap:6px;margin-left:auto;display:flex}.dp-stage{width:100%;max-width:122.353vh;margin:0 auto}.dp-vals{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:6px;display:grid}.dp-val{background:var(--mt);border-radius:8px;align-items:baseline;gap:10px;padding:6px 10px;font-size:13px;line-height:1.5;display:flex}.dp-val>b{width:84px;color:var(--m-deep);flex:none;font-size:12px}.dp-val>span{min-width:0;font-family:var(--mono);overflow-wrap:anywhere;flex-wrap:wrap;gap:0 12px;font-weight:600;display:flex}.dp-val.idle{background:var(--soft)}.dp-val.idle>b,.dp-val.idle>span{color:var(--line-no)}.dp-val i{color:var(--muted);font-family:Anuphan,sans-serif;font-style:normal;font-weight:400}@keyframes dp-val-card{0%{background:#f0c9c3}}.dp-big{z-index:60;background:var(--page);padding:16px 28px 28px;position:fixed;inset:0;overflow:auto}.dp-big-bar{z-index:3;background:var(--page);border-bottom:1px solid var(--track);align-items:center;gap:10px;margin:-16px -28px 0;padding:12px 28px;display:flex;position:sticky;top:-16px}.dp-big .dp-stage{max-width:calc(235.294vh - 611.765px)}.dp-big .dp-vals,.dp-big .dp-bar{width:100%;max-width:1100px;margin:0 auto}.env-hint{color:var(--muted);background:var(--canvas);padding:10px 20px;font-size:13px}.sense-step{background:var(--mt);color:var(--m-deep);border-radius:14px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;padding:10px 14px;font-size:13px;font-weight:600;display:flex}.sense-box{background:var(--m-row);box-shadow:inset 0 0 0 1.5px var(--m-line);border-radius:14px;flex-direction:column;gap:10px;padding:14px;display:flex}.sense-note{color:var(--m-deep);font-size:13px}.sense-box .env-panel{background:0 0;border-top:0;padding:0}.sense-now{height:32px;box-shadow:inset 0 0 0 1.5px var(--m-line);font-family:var(--mono);color:var(--m-mid);background:#fff;border-radius:999px;align-self:flex-start;align-items:center;gap:8px;padding:0 14px;font-size:14px;font-weight:700;display:inline-flex}.sense-now i{background:var(--m-line);border-radius:50%;width:10px;height:10px}.sense-now.on{background:var(--m);box-shadow:none;color:#fff}.sense-now.on i{background:#fff;box-shadow:0 0 0 3px #ffffff59}.env-switch{font:inherit;color:var(--ink);cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:0;font-size:14px;display:inline-flex}.env-switch i{background:var(--ms);border-radius:999px;flex:none;width:38px;height:22px;transition:background .15s;position:relative}.env-switch i:after{content:"";width:16px;height:16px;box-shadow:var(--shadow-pill);transition:transform .15s var(--ease);background:#fff;border-radius:50%;position:absolute;top:3px;left:3px}.env-switch[aria-checked=true] i{background:var(--m)}.env-switch[aria-checked=true] i:after{transform:translate(16px)}.kit-ports{background:var(--page);border-radius:14px;flex-direction:column;gap:4px;padding:10px 12px;display:flex}.kit-ports>div{align-items:center;gap:12px;font-size:13px;display:flex}.kit-ports>div>span:first-child{width:58px;font-family:var(--mono);color:var(--body-alt);font-weight:600}.kit-ports b{font-family:var(--mono);color:var(--m);margin-left:auto}.kit-bits{gap:4px;display:flex}.kit-bits i{background:var(--track);border-radius:50%;width:10px;height:10px}.kit-bits i.on{background:var(--m)}.pin-fold{margin:0 12px 16px}.pin-fold summary{color:var(--m);cursor:pointer;padding:6px 8px;font-size:13px;font-weight:600}.pin-fold .pin-table-wrap,.pin-fold>div{margin:4px 0 0!important}.env-panel{background:0 0;border-top:0;padding:4px 0 0}.sense-now{font-family:var(--mono);font-weight:700;color:var(--m)!important}.env-panel{border-top:1px solid var(--track);background:var(--canvas);flex-wrap:wrap;align-items:center;gap:10px 18px;padding:12px 20px;font-size:13px;display:flex}.env-slider{flex-direction:column;flex:180px;gap:2px;max-width:260px;display:flex}.env-slider b{font-family:var(--mono)}.env-slider i{color:var(--muted);margin-left:6px;font-style:normal}.try-run{background:var(--page);border-radius:18px;flex-direction:column;gap:10px;margin:0 12px 12px;padding:14px 16px;display:flex}.try-run .input{box-shadow:inset 0 0 0 1.5px var(--ring);background:#fff}.try-run .input[aria-invalid=true]{box-shadow:inset 0 0 0 1.5px var(--m)}.try-out{flex-direction:column;gap:8px;animation:.2s ease-out fade-in;display:flex}.try-out dl{flex-wrap:wrap;gap:6px;margin:0;display:flex}.try-out dl div{overflow-wrap:anywhere;min-width:0;font-family:var(--mono);background:#fff;border-radius:10px;align-items:baseline;gap:8px;padding:6px 12px;font-size:14px;display:flex}.try-out dt{color:var(--muted)}.try-out dd{margin:0;font-weight:700}.cases{background:var(--page);border-radius:14px;flex-direction:column;gap:2px;margin:0;padding:6px;list-style:none;display:flex}.cases li{font-family:var(--mono);overflow-wrap:anywhere;border-radius:10px;flex-wrap:wrap;align-items:baseline;gap:4px 10px;padding:7px 10px;font-size:14px;display:flex}.cases li:nth-child(odd){background:#fff}.case-in{color:var(--body-alt)}.case-to{color:var(--m-mid)}.case-want{color:var(--m-deep)}.checks{color:var(--body-alt);flex-direction:column;gap:6px;margin:0;padding:0;font-size:14px;list-style:none;display:flex}.checks li{padding-left:18px;position:relative}.checks li:before{content:"";background:var(--m-mid);border-radius:50%;width:6px;height:6px;position:absolute;top:.62em;left:4px}.try-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;display:flex}.try-verdict{color:var(--ink);align-items:center;gap:8px;font-size:14px;font-weight:600;display:inline-flex}.try-verdict i{color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:20px;height:20px;display:flex}.try-verdict.ok i{background:var(--ok)}.try-verdict.bad i{background:var(--m)}.try-verdict.wait{color:var(--muted);font-size:13px;font-weight:400}.ph-help{width:44px;height:44px;box-shadow:inset 0 0 0 1.5px var(--ring);color:var(--body-alt);font:700 17px var(--head);cursor:pointer;background:#fff;border:0;border-radius:50%;flex:none;justify-content:center;align-items:center;display:none}.search-pill{flex:0 300px;min-width:0;display:flex;position:relative}.search-pill>svg{pointer-events:none;position:absolute;top:13px;left:16px}.search-pill input{width:100%;height:44px;box-shadow:inset 0 0 0 1.5px var(--ring);color:var(--ink);background:#fff;border:0;border-radius:999px;padding:0 16px 0 44px;font-size:15px}.search-pill input:focus-visible,.select-pill:focus-visible{outline:2px solid var(--m);outline-offset:2px}.select-pill{height:44px;box-shadow:inset 0 0 0 1.5px var(--ring);color:var(--ink);cursor:pointer;background:#fff;border:0;border-radius:999px;padding:0 16px;font-size:14px}.is-stale{opacity:.55;pointer-events:none;transition:opacity .2s}.th-sort{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;padding:0;display:inline-flex}.th-sort:hover,.th-sort[data-on]{color:var(--ink)}.only-narrow{display:none}@media (width<=900px){.hide-narrow{display:none!important}.only-narrow{display:flex}}.solve-bar{z-index:15;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 -1px 0 var(--track);background:#f8f5f2f0;align-items:center;gap:10px;margin:0 -36px;padding:10px 36px;position:sticky;bottom:0}.solve-bar .btn{height:48px}@media (width<=720px){.solve-bar{bottom:var(--rail-h);margin:0 -16px;padding:10px 16px}}.login-card{padding:36px 40px}@media (width<=480px){.login-card{padding:28px 20px;border-radius:24px!important}}.dialog.modal{gap:0;max-height:min(86vh,760px);padding:0;overflow:hidden}.dialog.modal.wide{max-width:640px}.modal-head{align-items:center;gap:12px;padding:20px 20px 12px 28px;display:flex}.modal-x{flex:none;width:40px;height:40px;padding:0}.modal-body{flex-direction:column;flex:1;gap:12px;min-height:0;padding:4px 28px 20px;display:flex;overflow-y:auto}.modal-foot{box-shadow:0 -1px 0 var(--track);flex-wrap:wrap;justify-content:flex-end;gap:10px;padding:14px 28px 20px;display:flex}@media (width<=480px){.dialog-backdrop:has(>.dialog.modal){align-items:flex-end;padding:0}.dialog.modal{border-radius:24px 24px 0 0;max-width:none;max-height:90vh}.modal-head{padding:18px 12px 10px 20px}.modal-body,.modal-foot{padding-left:20px;padding-right:20px}.modal-foot .btn{flex:1}}.run-loading{text-align:center;flex-direction:column;align-items:center;gap:6px;padding:20px 0 28px;display:flex}.run-chip{background:var(--m);color:#fff;width:64px;height:64px;animation:chip-pulse 1.6s var(--ease) infinite;border-radius:20px;justify-content:center;align-items:center;margin-bottom:14px;display:flex}@keyframes chip-pulse{0%{box-shadow:0 0 #8a1c1c59}70%,to{box-shadow:0 0 0 16px #8a1c1c00}}.run-title{font-family:var(--head);font-size:20px;font-weight:500}.run-sub{color:var(--muted);font-size:14px}.run-bar{background:var(--mt);border-radius:99px;width:min(240px,80%);height:6px;margin-top:16px;position:relative;overflow:hidden}.run-bar i{background:var(--m);width:40%;animation:bar-slide 1.1s var(--ease) infinite;border-radius:99px;position:absolute;top:0;bottom:0}@keyframes bar-slide{0%{left:-40%}to{left:100%}}.res-head{background:var(--page);border-radius:18px;align-items:center;gap:18px;padding:18px 20px;display:flex}.res-score{font-family:var(--head);color:var(--ink);font-size:44px;font-weight:500;line-height:1}.res-score small{color:var(--muted);font-size:22px}.res-icon{border-radius:16px;flex:none;justify-content:center;align-items:center;width:52px;height:52px;display:flex}.res-icon.bad{background:var(--err-bg);color:var(--err)}.res-icon.ok{background:var(--ok-bg);color:var(--ok-deep)}.res-head-text{min-width:0;color:var(--muted);flex-direction:column;align-items:flex-start;gap:6px;font-size:14px;display:flex}.res-head-text b{font-family:var(--head);color:var(--err-deep);font-size:18px;font-weight:500}.res-head-text b.ok{color:var(--ok-deep)}.res-chip-ok{background:var(--ok-bg);color:var(--ok-deep)}.res-chip-bad{background:var(--err-bg);color:var(--err-deep)}.res-segs{gap:4px;display:flex}.res-segs i{background:var(--ok);border-radius:99px;flex:1;height:6px}.res-segs i.bad{background:var(--err)}.res-wrap{overflow-x:auto}.res-table{border-collapse:separate;border-spacing:0 4px;width:100%;font-size:14px}.res-table th{text-align:left;color:var(--muted);padding:2px 12px;font-size:13px;font-weight:500}.res-table td{font-family:var(--mono);background:var(--page);vertical-align:top;overflow-wrap:anywhere;padding:10px 12px}.res-table td:first-child{border-radius:12px 0 0 12px}.res-table td:last-child{border-radius:0 12px 12px 0}.res-table .res-mark{width:36px}.res-mark span{background:var(--ok-bg);width:22px;height:22px;color:var(--ok);border-radius:50%;justify-content:center;align-items:center;display:flex}.res-table tr.bad td{background:var(--err-bg)}.res-table tr.bad .res-mark span{background:var(--err);color:#fff}.res-table tr.bad .res-got{color:var(--err-deep);font-weight:700}.res-table .res-msg{color:var(--muted);font-family:inherit;font-weight:400}.res-errors{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.res-errors li{background:var(--err-bg);font-family:var(--mono);color:var(--err-deep);border-radius:12px;gap:12px;padding:10px 14px;font-size:13px;display:flex}.res-errors li span{font-family:var(--head);flex:none;font-weight:500}.podium{grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;gap:8px;padding:20px 20px 0;display:grid;position:relative;overflow:hidden}.pod-col{flex-direction:column;align-items:stretch;gap:10px;min-width:0;display:flex}.pod-person{text-align:center;min-width:0;animation:pod-pop .45s var(--ease-spring) both;flex-direction:column;align-items:center;gap:2px;display:flex}.pod-trophy{filter:drop-shadow(0 3px 6px #c9961a59);margin-bottom:2px}.pod-avatar{background:var(--soft);border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;margin-bottom:6px;font-size:15px;font-weight:700;display:flex}.pod-avatar.first{width:58px;height:58px;font-size:17px}.pod-avatar.me{background:var(--m);color:#fff}.pod-name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:14px;overflow:hidden}.pod-pts{font-family:var(--mono);color:var(--m);font-size:14px;font-weight:600}.pod-passed{opacity:.85;font-size:12px;font-weight:600}.pod-block{transform-origin:bottom;animation:pod-rise .5s var(--ease) both;border-radius:14px 14px 0 0;flex-direction:column;align-items:center;gap:4px;padding-top:10px;display:flex;box-shadow:inset 0 6px #ffffff24}@keyframes pod-rise{0%{transform:scaleY(0)}}@keyframes pod-pop{0%{opacity:0;transform:translateY(12px)scale(.85)}}.confetti{pointer-events:none;position:absolute;inset:0;overflow:hidden}.confetti i{opacity:0;border-radius:2px;width:7px;height:11px;animation:1.8s ease-in both confetti-fall;position:absolute;top:-12px}.confetti i:nth-child(odd){width:9px;height:6px}@keyframes confetti-fall{0%{opacity:1;transform:translateY(0)rotate(0)}80%{opacity:1}to{opacity:0;transform:translateY(260px)rotate(540deg)}}.lb-me{background:var(--m);color:#fff;border-radius:28px;flex-direction:column;gap:18px;padding:28px 32px;display:flex}.lb-label{color:var(--m-on);font-size:15px}.lb-delta{height:28px;font-family:var(--mono);background:#ffffff29;border-radius:999px;align-items:center;gap:2px;padding:0 10px 0 7px;font-size:14px;font-weight:700;display:inline-flex}.lb-bar{background:#fff3;border-radius:99px;height:12px;position:relative}.lb-bar i{background:#fff;border-radius:99px;height:100%;display:block}.lb-tiles{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.lb-tile{background:#ffffff1a;border-radius:18px;align-items:center;gap:12px;padding:12px 14px;display:flex}.lb-tile.streak{flex-direction:column;align-items:stretch;gap:8px}.lb-tile-text{flex-direction:column;line-height:1.15;display:flex}.lb-tile-text b{font-family:var(--head);font-size:28px;font-weight:500}.lb-tile-text b small{color:var(--m-on);font-size:16px}.lb-tile-text>span{color:var(--m-on);font-size:13px}.lb-ring{transition:stroke-dasharray .6s var(--ease)}.lb-flame{transform-origin:50% 100%;filter:drop-shadow(0 2px 8px #f6c94573);animation:2.4s ease-in-out infinite lb-flicker}@keyframes lb-flicker{0%,to{transform:scale(1)rotate(0)}50%{transform:scale(1.06,.97)rotate(-2deg)}}.lb-week{justify-content:space-between;margin:0;padding:0;list-style:none;display:flex}.lb-week li{color:var(--m-on);flex-direction:column;align-items:center;gap:3px;font-size:11px;display:flex}.lb-week i{background:#ffffff2e;border-radius:50%;width:14px;height:14px}.lb-week li.on i{background:#f6c945;box-shadow:0 0 6px #f6c94599}.lb-week li.today{color:#fff;font-weight:700}.lb-week li.today i{outline-offset:1px;outline:2px solid #fff}.lb-go{height:46px;color:var(--m);background:#fff;border-radius:14px;justify-content:center;align-items:center;gap:8px;font-size:15px;font-weight:700;text-decoration:none;display:flex}.lb-go:hover{color:var(--m-hover);background:var(--mt)}.lb-go.done{color:#fff;background:#ffffff24}.code-tools{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:8px;display:flex}.code-tools .btn{gap:6px;height:32px;padding:0 12px;font-size:13px}.rom-usage{color:var(--muted);flex-direction:column;gap:3px;margin-left:auto;font-size:12px;display:inline-flex}.rom-usage b{font-family:var(--mono);color:var(--m)}.rom-usage>i{background:var(--track);border-radius:99px;width:120px;height:5px;display:block;overflow:hidden}.rom-usage>i>i{background:var(--m);border-radius:99px;height:100%;display:block}.proj-bar{flex-wrap:wrap;align-items:center;gap:10px;padding:12px 16px;display:flex}.proj-label{font-family:var(--head);font-size:16px;font-weight:500}.proj-bar .input{width:220px;height:38px;padding:0 12px;font-size:14px}.proj-bar>.menu{margin-left:auto}.code-big{z-index:60;background:var(--page);flex-direction:column;display:flex;position:fixed;inset:0}.code-big-bar{border-bottom:1px solid var(--track);background:#fff;align-items:center;gap:10px;padding:12px 24px;display:flex}.code-big-bar b{font-family:var(--head);font-size:18px;font-weight:500}.code-big-body{flex:1;grid-template-columns:180px minmax(0,1fr) 300px;gap:16px;min-height:0;padding:16px 24px;display:grid}.code-big-editor{flex-direction:column;gap:8px;min-height:0;display:flex}.code-big-editor .editor{min-height:0}.code-big-side{box-shadow:var(--shadow-card);background:#fff;border-radius:20px;flex-direction:column;align-self:start;gap:12px;padding:16px;display:flex}.code-big-side>b{font-family:var(--head);font-weight:500}.code-big-side .rom-usage{margin-left:0}.code-big-side .rom-usage>i{width:100%}.code-big-status{font-family:var(--mono);color:var(--body-alt);font-size:13px}.asm-outline{min-height:0;box-shadow:var(--shadow-card);background:#fff;border-radius:20px;flex-direction:column;align-self:start;gap:2px;max-height:100%;padding:12px 8px;display:flex;overflow-y:auto}.asm-outline>b{font-family:var(--head);padding:0 8px 6px;font-weight:500}.asm-outline>span{color:var(--muted);padding:0 8px;font-size:13px}.asm-outline button{font-family:var(--mono);color:var(--ink);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:10px;justify-content:space-between;align-items:baseline;gap:8px;padding:6px 8px;font-size:13px;font-weight:600;display:flex}.asm-outline button:hover{background:var(--mt);color:var(--m)}.asm-outline button i{color:var(--tertiary);font-size:11px;font-style:normal;font-weight:400}.err-jump{font-family:var(--mono);color:inherit;text-align:left;cursor:pointer;text-underline-offset:2px;background:0 0;border:0;padding:0;font-size:12px;text-decoration:underline}@media (width<=900px){.code-big-body{grid-template-columns:minmax(0,1fr);overflow-y:auto}.asm-outline{display:none}}.upload-pop{flex-direction:column;gap:14px;font-size:14px;display:flex}.upload-kinds{flex-direction:column;gap:8px;display:flex}.upload-kinds>div{background:var(--page);border-radius:14px;align-items:baseline;gap:12px;padding:10px 14px;line-height:1.5;display:flex}.upload-kinds>div>b{width:52px;font-family:var(--mono);color:var(--m);flex:none}.upload-kinds>div>span{color:var(--body-alt)}.upload-drop{border:2px dashed var(--m-line);background:var(--m-row);color:var(--m);text-align:center;border-radius:18px;flex-direction:column;align-items:center;gap:10px;padding:26px 16px;transition:background .15s,border-color .15s;display:flex}.upload-drop.over{border-color:var(--m);background:var(--mt)}.upload-drop>span{color:var(--m-deep)}.upload-note{color:var(--muted);font-size:13px}.num-field{align-items:center;gap:4px;display:inline-flex}.num-field input{width:72px;height:30px;box-shadow:inset 0 0 0 1.5px var(--ring);font-family:var(--mono);color:var(--ink);background:#fff;border:0;border-radius:8px;padding:0 8px;font-size:13px;font-weight:600}.num-field input:focus-visible{outline:2px solid var(--m);outline-offset:1px}.num-field input[aria-invalid=true]{box-shadow:inset 0 0 0 1.5px var(--m)}.num-field i{color:var(--muted);font-size:12px;font-style:normal}.pm-spin{transform-box:fill-box;transform-origin:50%;animation:.5s linear infinite pm-spin}@keyframes pm-spin{to{transform:rotate(360deg)}}.term{--term-bg:#1b1616;--term-line:#2e2626;--term-fg:#e9f5e6;--term-dim:#8f8682;--term-echo:#f2c46b;flex-direction:column;flex:1;gap:12px;min-height:0;padding:18px 20px 20px;display:flex}.term-head{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px 16px;font-size:13px;display:flex}.term-title{flex-wrap:wrap;align-items:baseline;gap:2px 12px;display:flex}.term-title>b{font-family:var(--head);color:var(--ink);font-size:17px;font-weight:500}.term-rx{background:var(--soft);border-radius:999px;align-items:center;gap:6px;height:26px;padding:0 10px;font-size:12px;font-weight:600;display:inline-flex}.term-rx i{background:var(--line-no);border-radius:50%;width:8px;height:8px}.term-rx.on{background:var(--ok-bg);color:var(--ok-deep)}.term-rx.on i{background:var(--ok);box-shadow:0 0 0 3px #2e7d4f2e}.term-tools{flex-wrap:wrap;gap:6px;margin-left:auto;display:flex}.term-toggle{background:var(--soft);height:30px;color:var(--body-alt);font:inherit;white-space:nowrap;cursor:pointer;border:0;border-radius:999px;padding:0 12px;font-size:13px;font-weight:600;transition:background .15s,color .15s}.term-toggle:hover:not(:disabled){background:var(--track)}.term-toggle[aria-pressed=true]{background:var(--m);color:#fff}.term-toggle:disabled{opacity:.45;cursor:default}.term-screen{background:var(--term-bg);border-radius:14px;flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.term-screen:focus-within{box-shadow:0 0 0 2px var(--m-mid)}.term-out{min-height:120px;color:var(--term-fg);font-family:var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;flex:1;margin:0;padding:14px 16px;font-size:14px;line-height:1.55;overflow-y:auto}.term-empty{color:var(--term-dim);font-family:Anuphan,system-ui,sans-serif}.term-echo{color:var(--term-echo)}.term-hexrow>span+span{margin-left:.6em}.term-addr{color:var(--term-dim);margin-right:.6em}.term-cursor{vertical-align:text-bottom;background:var(--term-fg);width:.6em;height:1.15em;margin-left:1px;animation:1.1s step-end infinite term-blink;display:inline-block}@keyframes term-blink{50%{opacity:0}}@media (prefers-reduced-motion:reduce){.term-cursor{animation:none}}.term-in{border-top:1px solid var(--term-line);align-items:center;gap:8px;padding:8px 8px 8px 16px;display:flex}.term-prompt{color:var(--term-echo);font-family:var(--mono);font-size:16px;font-weight:700}.term-in input{min-width:0;height:38px;color:var(--term-fg);caret-color:var(--term-echo);font-family:var(--mono);background:0 0;border:0;outline:0;flex:1;font-size:14px}.term-in input::placeholder{color:var(--term-dim);font-family:Anuphan,system-ui,sans-serif}.term-cr{border:1px solid var(--term-line);height:30px;color:var(--term-dim);font-family:var(--mono);cursor:pointer;background:0 0;border-radius:999px;flex:none;padding:0 10px;font-size:12px}.term-cr[aria-pressed=true]{border-color:var(--term-echo);color:var(--term-echo)}.term-send{flex:none;height:38px;padding:0 20px}.term-send:disabled{background:var(--term-line);color:var(--term-dim);box-shadow:none}.term-screen.off .term-in{opacity:.7}.term-note{color:var(--muted);font-size:12px}.term-note code{background:var(--soft);color:var(--ink);font-family:var(--mono);border-radius:6px;padding:1px 6px;font-size:12px}@media (width<=560px){.term{padding:16px}.term-tools{margin-left:0}}.term-launch{flex-wrap:wrap;align-items:center;gap:12px 16px;padding:16px 20px;display:flex}.term-launch>div{color:var(--muted);flex-direction:column;flex:260px;font-size:13px;display:flex}.term-launch b{font-family:var(--head);color:var(--ink);font-size:16px;font-weight:500}.term-launch .btn{height:38px;font-size:13px}.term-page{background:var(--page);flex-direction:column;gap:12px;height:100dvh;padding:12px 16px 16px;display:flex}.term-page-bar{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.term-page-bar>b{font-family:var(--head);font-size:17px;font-weight:500}.term-page-logo{background:var(--m);border-radius:10px;place-items:center;width:32px;height:32px;display:inline-grid}.term-page-actions{gap:8px;margin-left:auto;display:flex}.term-page-actions .btn{gap:6px;height:36px;font-size:13px;text-decoration:none}.term-link{background:var(--soft);min-height:26px;color:var(--muted);border-radius:999px;align-items:center;gap:6px;padding:2px 10px;font-size:12px;font-weight:600;display:inline-flex}.term-link i{background:var(--line-no);border-radius:50%;flex:none;width:8px;height:8px}.term-link.on{background:var(--ok-bg);color:var(--ok-deep)}.term-link.on i{background:var(--ok)}.term-link.wait i{background:var(--warn)}.term-link.off{background:var(--warn-bg);color:var(--warn-deep)}.term-link.off i{background:var(--warn)}.term-wait{color:var(--body-alt);align-items:center;gap:12px;padding:20px;display:flex}.teacher-scroll{overflow-x:auto}.teacher-table{border-collapse:collapse;text-align:left;width:100%}.teacher-table th,.teacher-table td{border-bottom:1px solid var(--line);vertical-align:middle;padding:14px 12px}.teacher-table th{color:var(--muted);white-space:nowrap;font-size:13px}.teacher-table td{min-width:85px;font-size:14px}.teacher-table td:first-child{min-width:200px}textarea.input{resize:vertical;height:auto;padding:12px 16px}.login-page{grid-template-columns:1.1fr 1fr;min-height:100vh;display:grid}.login-intro{background:var(--m);color:#fff;flex-direction:column;justify-content:space-between;gap:48px;padding:44px clamp(28px,5vw,80px);display:flex}.login-wordmark{font:500 26px var(--head);justify-content:space-between;align-items:center;gap:24px;display:flex}.login-wordmark span,.login-footnote,.login-kicker{font:12px var(--mono);letter-spacing:.1em;opacity:.65}.login-intro h1{margin:20px 0;font-size:clamp(34px,4vw,60px);font-weight:500;line-height:1.5}.login-intro h1 em{color:#e7d1a7;font-style:normal}.login-intro p{color:#f0dfd5;line-height:1.9}.login-intro pre{font:14px/1.9 var(--mono);color:#ecd4bd;border-left:2px solid #ffffff40;padding-left:24px}.login-panel{background:var(--page);justify-content:center;align-items:center;padding:60px 28px;display:flex}.login-panel-inner{flex-direction:column;gap:28px;width:100%;max-width:410px;display:flex}.login-panel .page-header{padding:0}.login-google-note{border-top:1px solid var(--line);color:var(--muted);padding-top:18px;font-size:12px}@media (width<=800px){.login-page{grid-template-columns:1fr}.login-intro{gap:24px;padding:28px}.login-intro h1{font-size:32px}.login-intro pre,.login-footnote,.login-wordmark span{display:none}.login-panel{padding:36px 24px}}@media (width<=600px){.teacher-stats{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px!important}.teacher-stats>.card{gap:8px!important;padding:18px!important}.teacher-stats strong{font-size:27px!important}}
