:root{--bg: #090c16;--panel: #121726;--editor: #0d111b;--card: #1e2438;--card-raised: #262d44;--stroke: rgba(255, 255, 255, .08);--text: #f4f6fb;--muted: rgba(255, 255, 255, .62);--gutter: rgba(255, 255, 255, .28);--crystal: #3dffa1;--data: #4dd1ff;--orange: #ff8a3d;--danger: #ff5c6b;--kw: #fc5ea3;--fn: #66cce6;--ty: #d1a8ff;--num: #d9c97d;--run: linear-gradient(90deg, #29db8c, #17ad9e);--sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro", "Inter", "Segoe UI", Roboto, sans-serif;--rounded: ui-rounded, "SF Pro Rounded", "Nunito", var(--sans);--mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, "JetBrains Mono", monospace;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:linear-gradient(180deg,#0d1224,var(--bg)) fixed,var(--bg);color:var(--text);font:16px/1.5 var(--sans);-webkit-tap-highlight-color:transparent}a{color:var(--crystal)}button{font:inherit;color:inherit}.app{max-width:1440px;margin:0 auto;padding:0 16px 120px}.loading{min-height:70vh;display:grid;place-items:center;text-align:center;color:var(--muted);padding:24px}.loading>div{max-width:520px}.loading h1{color:var(--text);font-size:22px;margin:0 0 8px}.top{display:flex;align-items:center;gap:12px;padding:14px 0 12px}.brand img{width:40px;height:40px;border-radius:10px;display:block}.title{flex:1;min-width:0}.name{font-weight:800;font-size:18px;line-height:1.15}.sub{color:var(--muted);font-size:13px;display:flex;align-items:center;gap:6px}.lang{display:inline-flex;align-items:center;gap:5px;position:relative}.lang .dot{width:7px;height:7px;border-radius:50%;background:var(--orange)}.lang select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--muted);font:inherit;font-weight:600;padding:2px 14px 2px 0;cursor:pointer;field-sizing:content;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(-45deg,transparent 50%,var(--muted) 50%);background-size:4px 4px;background-position:right 4px center,right 0 center;background-repeat:no-repeat}.lang select option{background:var(--panel);color:var(--text)}.chip{font-variant-numeric:tabular-nums;background:var(--card);border:1px solid var(--stroke);border-radius:999px;padding:6px 12px;font-weight:700;font-size:14px;white-space:nowrap}.notice{background:#4dd1ff1a;border:1px solid rgba(77,209,255,.3);border-radius:12px;padding:10px 14px;font-size:14px;margin-bottom:12px}.board{display:grid;gap:16px}@media(min-width:900px){.board{grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:start;gap:24px}.world-card{top:16px}#world{aspect-ratio:auto;height:max(420px,calc(100dvh - 108px))}}.world-card{background:#1e66b4;border-radius:22px;overflow:hidden;position:sticky;top:8px;z-index:4;box-shadow:0 0 0 1.5px #78beff80,0 20px 50px #0006}.world-head{position:absolute;inset:12px 12px auto;display:flex;justify-content:flex-end;pointer-events:none;z-index:1}.pill{background:#0c162c8c;border-radius:999px;padding:5px 12px;font-size:14px;font-weight:600;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.mono{font-family:var(--mono);font-weight:700;font-variant-numeric:tabular-nums}#world{display:block;width:100%;aspect-ratio:16 / 10;cursor:pointer}@media(max-width:899px){#world{aspect-ratio:auto;height:min(36vh,320px)}.narration{min-height:0;padding:8px 12px;font-size:14px}}.narration{position:absolute;left:12px;right:12px;bottom:12px;pointer-events:none;padding:11px 14px;border-radius:14px;min-height:46px;background:#0c162c8c;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);font-size:15px}code{font-family:var(--mono)}.narration code,.error code,.goal code{background:#ffffff1a;padding:0 4px;border-radius:4px;font-size:.92em}.goal h1{font-size:22px;font-weight:800;margin:0 0 4px;display:flex;flex-wrap:wrap;align-items:center;gap:8px}.goal p{color:var(--muted);margin:0 0 10px}.badge{font-family:var(--rounded);font-size:12px;font-weight:800;padding:3px 9px;border-radius:999px}.badge.boss{background:#fcd44d26;color:#fcd44d}.badge.debug{background:#ff5c6b26;color:#ff8f99}.output{display:inline-block;font:600 13px var(--mono);color:var(--crystal);background:#3dffa114;border-radius:10px;padding:6px 10px}.section-head{display:flex;justify-content:space-between;margin:20px 2px 8px;font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:#ffffffd9}.section-head span:last-child{text-transform:none;font-weight:500;color:var(--muted);letter-spacing:0}.editor{background:var(--editor);border:1px solid var(--stroke);border-radius:16px;padding:10px 12px 10px 4px}.line{display:flex;align-items:center;gap:8px;min-height:40px;transition:transform .15s}.line+.line{margin-top:6px}.ln{width:22px;text-align:right;color:var(--gutter);font:12px var(--mono);flex:none}.line.fixed code{padding-left:2px}.placeholder{color:var(--gutter);font-size:14px;padding:8px 4px}.card{display:inline-flex;align-items:center;gap:10px;max-width:100%;background:var(--card);border:1px solid var(--stroke);border-radius:12px;padding:8px 12px;font:14.5px/1.35 var(--mono);text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:none;transition:border-color .15s,background .15s}.card code{white-space:pre-wrap;overflow-wrap:anywhere}.card:hover{border-color:#ffffff38}.card:focus-visible{outline:2px solid var(--data);outline-offset:2px}.card .grip{color:var(--gutter);font-family:var(--sans)}.card.locked{cursor:default;background:#1e243899}.card.active{border-color:var(--crystal);box-shadow:0 0 0 1.5px var(--crystal)}.card.bad{border-color:var(--danger);box-shadow:0 0 0 1.5px var(--danger)}.card.dragging{position:relative;z-index:5;background:var(--card-raised);box-shadow:0 12px 30px #00000080;transition:none}.line:has(.dragging){transition:none}.stepper{display:inline-flex;gap:4px;margin-left:2px}.stepper button{width:28px;height:28px;border-radius:8px;border:0;background:var(--card-raised);font-weight:700;cursor:pointer}.stepper button:disabled{opacity:.35;cursor:default}.pool{display:flex;flex-wrap:wrap;gap:8px;padding:12px;border:1.5px dashed var(--stroke);border-radius:16px}.kw{color:var(--kw);font-weight:600}.fn{color:var(--fn)}.ty{color:var(--ty)}.num{color:var(--num)}.pn{color:#ffffffb3}.error{margin-top:12px;background:#ff5c6b1a;border:1px solid rgba(255,92,107,.4);border-radius:12px;padding:10px 14px;font-size:14.5px}.error strong{display:block;color:#ff8f99;margin-bottom:2px}.marks{margin-top:14px;letter-spacing:2px;min-height:1em}.actions{position:fixed;left:0;right:0;bottom:0;z-index:10;background:linear-gradient(180deg,transparent,rgba(9,12,22,.95) 30%);padding:18px 16px calc(14px + env(safe-area-inset-bottom))}.actions-inner{max-width:560px;margin:0 auto;display:flex;gap:10px}@media(min-width:900px){.actions{--page: min(100vw - 32px, 1408px);left:auto;right:calc((100vw - var(--page)) / 2 - 16px);width:calc((var(--page) - 24px) * 6 / 11 + 32px)}.actions-inner{max-width:none}}.icon-btn{display:grid;place-items:center;color:#ffffffd9;width:54px;height:54px;border-radius:16px;border:1px solid var(--stroke);background:var(--card);font-size:22px;cursor:pointer;flex:none}.icon-btn:disabled{opacity:.4;cursor:default}.run{flex:1;height:54px;border:0;border-radius:16px;background:var(--run);color:#06140e;font-weight:800;font-size:17px;cursor:pointer}.run:disabled{opacity:.75;cursor:default}.run:not(:disabled):hover,.icon-btn:not(:disabled):hover{filter:brightness(1.1)}dialog{border:1px solid var(--stroke);border-radius:24px;background:var(--panel);color:var(--text);padding:0;width:min(420px,calc(100vw - 32px));max-height:calc(100vh - 32px)}dialog::backdrop{background:#04060cb3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.result{padding:28px 24px 20px;text-align:center;display:grid;gap:12px}.result .gem{font-size:44px;line-height:1}.result h2{margin:0;font-size:30px;font-weight:800;letter-spacing:-.01em}.result p{margin:0;color:var(--muted)}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.stats div{background:var(--card);border-radius:14px;padding:10px 4px;display:grid}.stats b{font-size:20px;font-weight:800;font-variant-numeric:tabular-nums}.stats span{font-size:12px;color:var(--muted)}.grid{font-size:20px;letter-spacing:3px}.result .run{flex:none}.next{font-size:14px}.next span{font-family:var(--mono);color:var(--text)}.app-cta{background:var(--card);border-radius:16px;padding:14px;display:grid;gap:8px}.app-cta p{font-size:14px}.store{display:block;padding:12px;border-radius:999px;border:1.5px solid rgba(255,255,255,.3);color:var(--text);font-weight:700;text-decoration:none}.store:hover{background:#ffffff0f}.link{background:none;border:0;color:var(--muted);cursor:pointer;padding:6px}
