*{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#0b0b18;--surface:#14142a;--surface2:#1c1c35;--border:#252545;
  --accent:#00d4ff;--accent2:#ff5e78;--accent3:#ffc73a;--accent4:#4ecb71;
  --text:#e8e8fa;--muted:#6868a0;
  --font-d:'Fredoka One',cursive;--font-b:'Nunito',sans-serif;--font-m:'Space Mono',monospace;
}
body{background:var(--bg);color:var(--text);font-family:var(--font-b);min-height:100vh;overflow-x:hidden}
.screen{display:none;min-height:100vh;flex-direction:column}
.screen.active{display:flex}

#home{
  background:radial-gradient(ellipse 80% 60% at 20% 10%,#1a0538 0%,transparent 60%),
             radial-gradient(ellipse 60% 50% at 80% 80%,#001a2e 0%,transparent 60%),var(--bg);
  align-items:center;justify-content:center;padding:32px 20px 60px;gap:32px;position:relative;overflow:hidden
}
.stars-bg{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.star{position:absolute;width:2px;height:2px;background:#fff;border-radius:50%;animation:twinkle calc(2s + var(--r)*3s) var(--d) ease-in-out infinite alternate}
@keyframes twinkle{from{opacity:.1;transform:scale(.5)}to{opacity:.8;transform:scale(1.5)}}
.fkey{position:absolute;width:42px;height:42px;border-radius:10px;border:1.5px solid rgba(0,212,255,.18);background:rgba(0,212,255,.04);display:flex;align-items:center;justify-content:center;font-family:var(--font-m);font-size:13px;color:rgba(0,212,255,.25);animation:flt 4s ease-in-out var(--d) infinite alternate;pointer-events:none}
@keyframes flt{from{transform:translateY(0) rotate(-6deg)}to{transform:translateY(-18px) rotate(6deg)}}

.hero{text-align:center;animation:slideDown .7s ease both;position:relative;z-index:1}
@keyframes slideDown{from{opacity:0;transform:translateY(-28px)}to{opacity:1;transform:none}}
.hero-emoji{font-size:72px;display:block;animation:pulse 2.5s ease-in-out infinite;filter:drop-shadow(0 0 24px rgba(0,212,255,.5))}
@keyframes pulse{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-10px) scale(1.05)}}
.hero-title{font-family:var(--font-d);font-size:clamp(44px,9vw,80px);background:linear-gradient(130deg,#00d4ff 0%,#bf6aff 50%,#ff5e78 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:1px;margin-top:8px}
.hero-sub{color:var(--muted);font-size:15px;font-weight:700;margin-top:6px;letter-spacing:.5px}

.level-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;width:100%;max-width:920px;animation:slideUp .7s .25s ease both;position:relative;z-index:1}
@keyframes slideUp{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
.lcard{background:var(--surface);border:1.5px solid var(--border);border-radius:18px;padding:22px 18px 18px;cursor:pointer;transition:all .22s;position:relative;overflow:hidden}
.lcard::after{content:'';position:absolute;inset:0;background:linear-gradient(135deg,transparent 55%,rgba(0,212,255,.04));pointer-events:none}
.lcard:hover{border-color:var(--accent);transform:translateY(-5px);box-shadow:0 12px 40px rgba(0,212,255,.15)}
.lcard.locked{opacity:.4;cursor:not-allowed;filter:grayscale(.6)}
.lcard.done{border-color:rgba(78,203,113,.4)}
.lcard.done .done-tick{display:block}
.done-tick{display:none;position:absolute;top:14px;right:16px;color:var(--accent4);font-size:16px;font-weight:900}
.badge{display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:800;padding:3px 10px;border-radius:99px;text-transform:uppercase;letter-spacing:.8px;margin-bottom:10px}
.badge.typing{background:rgba(0,212,255,.15);color:var(--accent)}
.badge.python{background:rgba(255,199,58,.15);color:var(--accent3)}
.badge.lock{background:rgba(104,104,160,.15);color:var(--muted)}
.lcard-ico{font-size:34px;margin-bottom:10px;display:block}
.lcard-title{font-family:var(--font-d);font-size:18px;color:var(--text);margin-bottom:5px}
.lcard-desc{font-size:12px;color:var(--muted);line-height:1.55}
.lcard-stars{margin-top:12px;font-size:17px;letter-spacing:3px}

.stats-row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;animation:slideUp .7s .4s ease both;position:relative;z-index:1}
.spill{background:var(--surface2);border:1px solid var(--border);padding:8px 22px;border-radius:99px;font-size:13px;font-weight:800;color:var(--accent)}

#game{background:var(--bg)}
.gtop{display:flex;align-items:center;justify-content:space-between;padding:14px 22px;background:var(--surface);border-bottom:1.5px solid var(--border);gap:12px;flex-wrap:wrap}
.btn-back{background:none;border:1.5px solid var(--border);color:var(--muted);font-family:var(--font-b);font-size:13px;font-weight:800;padding:8px 16px;border-radius:99px;cursor:pointer;transition:all .2s}
.btn-back:hover{border-color:var(--accent);color:var(--accent)}
.glvl{font-family:var(--font-d);font-size:19px;color:var(--accent)}
.gmeters{display:flex;gap:18px}
.gmet{text-align:center}
.gmet-l{display:block;font-size:10px;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.8px}
.gmet-v{display:block;font-family:var(--font-m);font-size:18px;font-weight:700;color:var(--accent3)}

.gbody{flex:1;display:flex;flex-direction:column;align-items:center;padding:28px 20px;gap:22px;max-width:780px;margin:0 auto;width:100%}
.lhead{display:flex;align-items:center;gap:14px;width:100%;background:var(--surface);border:1.5px solid var(--border);border-radius:16px;padding:14px 18px}
.lhead-ico{font-size:38px}
.lhead-title{font-family:var(--font-d);font-size:20px;color:var(--accent)}
.lhead-desc{font-size:12px;color:var(--muted);margin-top:3px}

.kb{display:flex;flex-direction:column;align-items:center;gap:5px;width:100%}
.krow{display:flex;gap:4px;justify-content:center;flex-wrap:wrap}
.k{width:36px;height:36px;border-radius:8px;background:var(--surface2);border:1.5px solid var(--border);display:flex;align-items:center;justify-content:center;font-family:var(--font-m);font-size:11px;font-weight:700;color:var(--muted);transition:all .12s;user-select:none}
.k.home{border-color:rgba(0,212,255,.25);color:rgba(0,212,255,.5)}
.k.active{background:var(--accent);border-color:var(--accent);color:#000;transform:scale(1.18);box-shadow:0 0 18px rgba(0,212,255,.5)}
.k.err{background:var(--accent2);border-color:var(--accent2);color:#fff;animation:ks .28s}
@keyframes ks{0%,100%{transform:translateX(0)}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
.kspace{width:160px;font-size:10px}

.tarea{width:100%;background:var(--surface);border:1.5px solid var(--border);border-radius:16px;padding:22px;display:flex;flex-direction:column;gap:14px}
.tdisp{font-family:var(--font-m);font-size:clamp(15px,2.8vw,21px);line-height:1.9;min-height:72px;word-break:break-word}
.ch{transition:color .08s}
.ch.ok{color:var(--accent4)}
.ch.bad{color:var(--accent2);text-decoration:underline wavy}
.ch.pend{color:var(--muted)}
.ch.cur{color:var(--accent);border-bottom:2.5px solid var(--accent);animation:blink .65s step-start infinite}
@keyframes blink{50%{opacity:.2}}
.tinput{background:var(--surface2);border:1.5px solid var(--border);color:var(--text);font-family:var(--font-m);font-size:15px;padding:11px 14px;border-radius:10px;outline:none;width:100%;transition:border-color .2s}
.tinput:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(0,212,255,.08)}
.tinput.ok{border-color:var(--accent4)}
.tinput.bad{border-color:var(--accent2);animation:ks .28s}
.pbar-w{height:5px;background:var(--surface2);border-radius:99px;overflow:hidden}
.pbar{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent3));border-radius:99px;width:0%;transition:width .25s;box-shadow:0 0 6px rgba(0,212,255,.4)}

.timer-area{display:flex;flex-direction:column;align-items:center;gap:14px}
.tring{position:relative;width:76px;height:76px}
.tring svg{transform:rotate(-90deg);width:100%;height:100%}
.rbg{fill:none;stroke:var(--border);stroke-width:6}
.rfill{fill:none;stroke:var(--accent3);stroke-width:6;stroke-linecap:round;stroke-dasharray:213.6;stroke-dashoffset:0;transition:stroke-dashoffset .5s linear,stroke .3s}
.tring span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--font-m);font-size:19px;font-weight:700;color:var(--accent3)}
.btn-go{background:linear-gradient(135deg,#00d4ff,#0099cc);color:#000;border:none;font-family:var(--font-d);font-size:18px;padding:14px 44px;border-radius:99px;cursor:pointer;transition:all .2s;box-shadow:0 4px 22px rgba(0,212,255,.3)}
.btn-go:hover{transform:scale(1.06);box-shadow:0 6px 30px rgba(0,212,255,.45)}
.btn-go:disabled{opacity:.38;cursor:not-allowed;transform:none}

#result{background:radial-gradient(ellipse 60% 50% at 50% 20%,#190433 0%,var(--bg) 65%);align-items:center;justify-content:center}
.rcontent{text-align:center;display:flex;flex-direction:column;align-items:center;gap:18px;padding:40px 24px;max-width:480px;animation:slideUp .5s ease both}
.rburst{font-size:68px;animation:pop .45s cubic-bezier(.36,.07,.19,.97) both}
@keyframes pop{from{transform:scale(0);opacity:0}80%{transform:scale(1.2)}to{transform:scale(1);opacity:1}}
.rtitle{font-family:var(--font-d);font-size:40px;background:linear-gradient(135deg,#00d4ff,#bf6aff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.rmsg{font-size:15px;color:var(--muted)}
.rstats{display:flex;gap:18px;flex-wrap:wrap;justify-content:center}
.rstat{background:var(--surface);border:1.5px solid var(--border);border-radius:16px;padding:16px 22px;min-width:96px}
.rsv{display:block;font-family:var(--font-m);font-size:30px;font-weight:700;color:var(--accent3)}
.rsl{font-size:11px;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.8px}
.rfeed{background:var(--surface);border:1.5px solid var(--border);border-left:4px solid var(--accent3);border-radius:10px;padding:14px 16px;font-size:13px;font-family:var(--font-m);line-height:1.75;width:100%;text-align:left;white-space:pre-wrap;color:var(--text)}
.py-kw{color:#bf6aff;font-weight:700}.py-str{color:#ff9d5e}.py-num{color:var(--accent3)}.py-cm{color:var(--muted);font-style:italic}.py-fn{color:var(--accent)}.py-ok{color:var(--accent4)}
.rbtns{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.btn-pri{background:linear-gradient(135deg,var(--accent4),#2ea84f);color:#000;border:none;font-family:var(--font-d);font-size:17px;padding:13px 30px;border-radius:99px;cursor:pointer;transition:all .2s;box-shadow:0 4px 18px rgba(78,203,113,.3)}
.btn-pri:hover{transform:scale(1.05)}
.btn-sec{background:var(--surface2);color:var(--text);border:1.5px solid var(--border);font-family:var(--font-b);font-size:14px;font-weight:800;padding:11px 22px;border-radius:99px;cursor:pointer;transition:all .2s}
.btn-sec:hover{border-color:var(--accent3);color:var(--accent3)}
.btn-gh{background:none;color:var(--muted);border:none;font-family:var(--font-b);font-size:13px;font-weight:700;padding:10px 16px;cursor:pointer;transition:color .2s}
.btn-gh:hover{color:var(--text)}
.confp{position:fixed;width:9px;height:9px;top:-12px;border-radius:2px;animation:cfall linear forwards;pointer-events:none;z-index:999}
@keyframes cfall{to{top:105vh;transform:rotate(720deg)}}

/* ===== DESKTOP - UKURAN LEBIH BESAR ===== */
@media(min-width:768px){
  /* Hero */
  .hero-emoji{font-size:100px}
  .hero-title{font-size:clamp(56px,10vw,100px)}
  .hero-sub{font-size:20px;margin-top:10px}
  
  /* Level cards */
  .level-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px;max-width:1200px}
  .lcard{padding:28px 24px 22px;border-radius:22px}
  .lcard-ico{font-size:48px}
  .lcard-title{font-size:24px}
  .lcard-desc{font-size:14px}
  .lcard-stars{font-size:22px}
  .badge{font-size:12px;padding:5px 14px}
  
  /* Stats */
  .stats-row{gap:16px}
  .spill{font-size:16px;padding:12px 28px}
  
  /* Game screen */
  .gtop{padding:18px 32px}
  .btn-back{font-size:16px;padding:12px 24px}
  .glvl{font-size:26px}
  .gmet-l{font-size:12px}
  .gmet-v{font-size:24px}
  .gmeters{gap:28px}
  
  .gbody{padding:40px 32px;gap:30px;max-width:900px}
  .lhead{padding:20px 24px;border-radius:20px}
  .lhead-ico{font-size:52px}
  .lhead-title{font-size:28px}
  .lhead-desc{font-size:15px}
  
  /* Keyboard */
  .k{width:56px;height:56px;font-size:16px;border-radius:12px}
  .krow{gap:8px}
  .kspace{width:240px;font-size:14px}
  
  /* Text area */
  .tarea{padding:28px;border-radius:20px;gap:18px}
  .tdisp{font-size:clamp(20px,3.5vw,30px);line-height:2;min-height:90px}
  .tinput{font-size:20px;padding:16px 18px;border-radius:14px}
  .pbar-w{height:8px}
  
  /* Timer */
  .timer-area{gap:20px}
  .tring{width:100px;height:100px}
  .tring span{font-size:26px}
  .rbg,.rfill{stroke-width:8}
  .btn-go{font-size:24px;padding:18px 60px}
  
  /* Result screen */
  .rcontent{padding:50px 32px;gap:24px}
  .rburst{font-size:90px}
  .rtitle{font-size:52px}
  .rmsg{font-size:18px}
  .rstat{padding:22px 30px;min-width:120px}
  .rsv{font-size:40px}
  .rsl{font-size:13px}
  .rfeed{font-size:15px;padding:18px 20px}
  .btn-pri{font-size:22px;padding:16px 40px}
  .btn-sec{font-size:17px;padding:14px 28px}
  .btn-gh{font-size:15px}
  .confp{width:12px;height:12px}
}

/* ===== MOBILE - UKURAN LEBIH KECIL ===== */
@media(max-width:600px){
  .k{width:28px;height:28px;font-size:9px}
  .kspace{width:120px}
  .tdisp{font-size:14px}
  .gtop{padding:10px 14px}
}
