:root{--bg:#f3f6ff;--ink:#1b2340;--mute:#5d6786;--panel:#ffffff;--tint:rgba(0,0,0,.05);--line:rgba(0,0,0,.18);--acc:#2f5bff;--acc-ink:#fff;--ok:#0f8a5f;--bad:#c63d3d;--code:#101733;--code-ink:#e6ebff;
box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.6 "Trebuchet MS","Segoe UI",system-ui,sans-serif;transition:background .25s}
header,main{max-width:900px;margin:0 auto}
header{padding:20px 16px 8px}
h1{font:800 clamp(1.8rem,5vw,2.8rem)/1.1 "Trebuchet MS",system-ui,sans-serif;margin:0 0 6px;letter-spacing:-.02em}
header p{margin:0 0 14px;color:var(--mute);max-width:60ch}
.top{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center;justify-content:space-between}
#prog{flex:1 1 220px;max-width:340px;font-weight:700}
#bar{height:10px;border-radius:99px;background:var(--tint);border:1px solid var(--line);margin-top:4px;overflow:hidden}
#fill{height:100%;width:0;background:var(--acc);transition:width .4s}
.theme{display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:var(--mute)}
.theme .btn{padding:6px 12px}
#bgpick{width:44px;height:36px;padding:2px;border:1px solid var(--line);border-radius:8px;background:var(--panel);cursor:pointer}
main{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px;margin-top:12px;margin-bottom:40px;width:calc(100% - 32px)}
h2{margin:0 0 8px;font-size:1.5rem}
.task{background:var(--tint);border-left:4px solid var(--acc);padding:10px 12px;border-radius:6px;margin:12px 0}
code{background:var(--tint);padding:1px 6px;border-radius:5px;font-family:Consolas,Menlo,monospace;font-size:.92em}
.ed{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}
.ed>div{min-width:0}
label{display:block;font-weight:700;margin-bottom:4px;font-size:.9rem;color:var(--mute)}
textarea{width:100%;height:300px;resize:vertical;background:var(--code);color:var(--code-ink);border:1px solid var(--line);border-radius:10px;padding:12px;font:14px/1.5 Consolas,Menlo,monospace;tab-size:2}
iframe{width:100%;height:300px;border:1px solid var(--line);border-radius:10px;background:#fff}
.row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;align-items:center}
.btn{padding:10px 16px;border-radius:10px;border:1px solid var(--line);background:var(--panel);color:var(--ink);font:inherit;cursor:pointer}
.btn.p{background:var(--acc);color:var(--acc-ink);border-color:var(--acc);font-weight:700}
.btn.small{padding:4px 10px;font-size:.85rem;color:var(--mute)}
#msg{font-weight:700}.ok{color:var(--ok)}.bad{color:var(--bad)}
button:focus-visible,textarea:focus-visible,input:focus-visible{outline:3px solid var(--acc);outline-offset:2px}
.free textarea,.free iframe{height:440px}
[hidden]{display:none!important}
#confetti{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:50}
#next{animation:pop .35s ease-out}
@keyframes pop{from{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}
@media(max-width:760px){.ed{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){#next{animation:none}#fill,body{transition:none}}
#choose{max-width:900px;margin:12px auto 40px;padding:0 16px}
.cards{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.card{display:flex;flex-direction:column;gap:6px;text-align:left;padding:24px;border-radius:14px;border:2px solid var(--line);background:var(--panel);color:var(--ink);font:inherit;cursor:pointer}
.card:hover,.card:focus-visible{border-color:var(--acc)}
.card strong{font-size:2rem;line-height:1.1}
.card em{font-style:normal;color:var(--mute);font-size:.9rem}
#lout{height:300px;margin:0;overflow:auto;white-space:pre-wrap;background:var(--code);color:var(--code-ink);border:1px solid var(--line);border-radius:10px;padding:12px;font:14px/1.5 Consolas,Menlo,monospace}
#lout.bad{color:#ff9a9a}
.free #lout{height:440px}
@media(max-width:760px){.cards{grid-template-columns:1fr}}
#sugg{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-height:34px;margin-top:6px;font-size:.85rem;color:var(--mute)}
.chip{padding:3px 10px;border-radius:8px;border:1px solid var(--line);background:var(--panel);color:var(--ink);font:13px Consolas,Menlo,monospace;cursor:pointer}
.chip.on{border-color:var(--acc);box-shadow:inset 0 0 0 1px var(--acc);font-weight:700}
.ver{display:inline-block;margin-bottom:6px;padding:2px 10px;border-radius:99px;background:var(--acc);color:var(--acc-ink);font-size:.75rem;font-weight:800;letter-spacing:.06em}
footer{max-width:900px;margin:0 auto 24px;padding:0 16px;color:var(--mute);font-size:.8rem;text-align:center}
pre.ex{margin:8px 0;padding:8px 12px;border-radius:8px;background:var(--tint);border:1px solid var(--line);overflow:auto;font:13px/1.5 Consolas,Menlo,monospace}
body{background-image:linear-gradient(180deg,rgba(111,140,255,.18),rgba(111,140,255,0) 280px);background-repeat:no-repeat}
button.ver{border:0;cursor:pointer;font-family:inherit}
button.ver:hover{filter:brightness(1.1)}
main{box-shadow:0 8px 28px rgba(0,0,0,.10);border-radius:18px}
.btn{transition:transform .12s,box-shadow .12s}
.btn:hover{transform:translateY(-1px);box-shadow:0 3px 10px rgba(0,0,0,.15)}
.card{--cc:#4c6fff;border-top:6px solid var(--cc);transition:transform .15s,box-shadow .15s}
.card:hover{transform:translateY(-3px);box-shadow:0 10px 24px rgba(0,0,0,.15)}
.card[data-c="html"]{--cc:#ff7a45}.card[data-c="js"]{--cc:#f2c200}.card[data-c="py"]{--cc:#2f8fe0}.card[data-c="lua"]{--cc:#6c5ce7}
.card .em{font-size:2.6rem;line-height:1}
.callout{margin:12px 0;padding:10px 12px;border-radius:10px;background:var(--tint);border-left:4px solid #f5a623}
.callout.m{border-left-color:#2fbf71}
#fill{background:linear-gradient(90deg,var(--acc),#2fbf71)}
dialog{border:1px solid var(--line);border-radius:16px;background:var(--bg);color:var(--ink);max-width:480px;width:calc(100% - 32px);padding:20px}
dialog::backdrop{background:rgba(0,0,0,.55)}
dialog h2{margin-top:0}
.vrow{padding:10px 12px;margin:10px 0;border:1px solid var(--line);border-radius:12px;background:var(--panel)}
.vrow p{margin:6px 0 8px;color:var(--mute);font-size:.92rem}
.tag{display:inline-block;padding:1px 8px;border-radius:99px;background:#2fbf71;color:#fff;font-size:.72rem;font-weight:800}
a.btn{display:inline-block;text-decoration:none}
