/* ============ 1. CSS VARIABLES ============ */
:root{
  color-scheme:dark;
  --font-scale:1;
  --bg-primary:#031526;
  --bg-deep:#010812;
  --bg-secondary:#082338;
  --bg-tertiary:#0E3350;
  --bg-glass:rgba(5,24,41,.72);
  --text-primary:#EAF7FF;
  --text-secondary:#A8C8DC;
  --text-faint:#6E93AB;
  --accent-primary:#4FB3D9;
  --accent-secondary:#FFC857;
  --accent-purple:#9ADCF2;
  --accent-mint:#8CE7B2;
  --accent-mint-ink:#0C1F18;
  --accent-coral:#FF6B5E;
  --accent-coral-ink:#3A0D08;
  --status-success:#4ADE80;
  --status-danger:#F87171;
  --status-warning:#FBBF24;
  --border-color:rgba(120,190,230,.22);
  --shadow:0 10px 40px rgba(0,0,0,.45);
  --ring-line:rgba(110,200,240,.35);
}

/* ============ 2. RESET & BASE ============ */
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{font-size:calc(16px * var(--font-scale));}
html,body{height:100%}
body{font-family:'Segoe UI',Roboto,system-ui,-apple-system,sans-serif;background:var(--bg-primary);color:var(--text-primary);line-height:1.6;overflow-x:hidden;min-height:100vh;}
h1,h2,h3,h4,.btn,.btn-pill,button{font-family:'Trebuchet MS','Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif}
.mono{font-family:'Consolas','Courier New',monospace}
a{color:var(--accent-primary);text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
img{max-width:100%;display:block}
ul{list-style:none}
::selection{background:var(--accent-primary);color:#010812}

#appBackdrop{position:fixed;inset:0;z-index:0;pointer-events:none;
  background:
    radial-gradient(1200px 700px at 82% -10%, rgba(79,179,217,.20), transparent 60%),
    radial-gradient(900px 600px at 8% 110%, rgba(154,220,242,.16), transparent 60%),
    linear-gradient(180deg,var(--bg-deep),var(--bg-primary) 55%,#001830);
  background-attachment:fixed;
}

/* ============ 3. SHELL / LAYOUT ============ */
#app{position:relative;z-index:1;min-height:100vh;display:flex;flex-direction:column}
main{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:0 16px 96px}
.view{display:none;animation:fadein .35s ease}
.view.active{display:block}
@keyframes fadein{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

#topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:10px;
  padding:10px 16px;background:var(--bg-glass);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--border-color)}
#topbar .brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:1.02rem;letter-spacing:.2px;white-space:nowrap}
#topbar .brand .logo{width:34px;height:34px;flex:0 0 auto}
.brand b{color:var(--accent-secondary)}
#topbar .nav-links{display:flex;gap:2px;margin-left:auto;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
#topbar .nav-links::-webkit-scrollbar{display:none}
.nav-links a{padding:9px 12px;border-radius:999px;font-size:.82rem;color:var(--text-secondary);white-space:nowrap;transition:.18s}
.nav-links a:hover{color:var(--text-primary);background:var(--bg-tertiary)}
.nav-links a.active{color:var(--text-primary);background:var(--accent-primary);font-weight:700}
#btnBurger{display:none;margin-left:auto;width:44px;height:44px;border-radius:12px;font-size:1.3rem;background:var(--bg-secondary);border:1px solid var(--border-color)}

#drawer{position:fixed;inset:0;z-index:80;display:none}
#drawer.open{display:block}
#drawer .scrim{position:absolute;inset:0;background:rgba(0,0,0,.55);animation:fadein .2s}
#drawer .panel{position:absolute;top:0;left:0;bottom:0;width:min(78vw,300px);background:var(--bg-secondary);
  padding:20px 16px;display:flex;flex-direction:column;gap:6px;box-shadow:var(--shadow);animation:slidein .25s ease}
@keyframes slidein{from{transform:translateX(-100%)}to{transform:none}}
#drawer .panel a{padding:12px 14px;border-radius:12px;color:var(--text-primary);font-size:.95rem}
#drawer .panel a.active{background:var(--accent-primary);font-weight:700}
#drawer .panel a:hover{background:var(--bg-tertiary)}
#drawer .close{margin-left:auto;font-size:1.4rem;width:40px;height:40px;border-radius:10px}

#bottombar{display:none}

/* ============ 4. COMPONENTS ============ */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  min-height:48px;padding:0 22px;border-radius:999px;font-weight:700;font-size:1rem;
  transition:transform .12s ease,filter .15s;text-align:center;border:1px solid transparent}
.btn:active{transform:scale(.97)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-mint{background:var(--accent-mint);color:var(--accent-mint-ink)}
.btn-coral{background:var(--accent-coral);color:var(--accent-coral-ink)}
.btn-primary{background:var(--accent-primary);color:#fff}
.btn-ghost{background:transparent;border:1px solid var(--border-color);color:var(--text-primary)}
.btn-secondary{background:var(--bg-glass);border:1px solid var(--border-color);color:var(--text-primary);backdrop-filter:blur(8px)}
.btn-sm{min-height:44px;padding:0 16px;font-size:.9rem}
.btn-xs{min-height:40px;padding:0 12px;font-size:.82rem;border-radius:12px}
.icon-btn{width:44px;height:44px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;background:var(--bg-secondary);border:1px solid var(--border-color);font-size:1.15rem}
.tag{display:inline-flex;align-items:center;gap:5px;padding:4px 11px;border-radius:999px;font-size:.75rem;font-weight:700;letter-spacing:.4px}
.tag-mint{background:rgba(140,231,178,.16);color:var(--accent-mint)}
.tag-coral{background:rgba(255,107,94,.16);color:var(--accent-coral)}
.tag-purple{background:rgba(154,220,242,.18);color:var(--accent-purple)}
.tag-gold{background:rgba(255,200,87,.16);color:var(--accent-secondary)}
.card{background:var(--bg-glass);border:1px solid var(--border-color);border-radius:20px;padding:20px;backdrop-filter:blur(10px)}
.card h3{font-size:1.05rem;margin-bottom:6px}
.section-title{font-size:1.5rem;font-weight:800;margin:6px 0 4px}
.section-sub{color:var(--text-secondary);margin-bottom:22px;max-width:640px}
.gap8{display:flex;gap:8px;flex-wrap:wrap}
.gap12{display:flex;gap:12px;flex-wrap:wrap}
.mt8{margin-top:8px}.mt16{margin-top:16px}.mt24{margin-top:24px}
.muted{color:var(--text-secondary)}
.faint{color:var(--text-faint);font-size:.8rem}
.center{text-align:center}
.grid{display:grid;gap:16px}

.progress{height:10px;border-radius:999px;background:var(--bg-tertiary);overflow:hidden}
.progress > i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent-primary),var(--accent-mint));transition:width .5s ease}
.progress.thin{height:7px}

/* ============ 5. BERANDA / HERO ============ */
.hero{position:relative;margin:20px 0 6px;border-radius:28px;overflow:hidden;border:1px solid var(--border-color);
  background:#00040A;box-shadow:var(--shadow)}
/* Latar hero: gambar planet di atas lanskap (assets/hero-bg.jpg) + lapisan gelap tipis agar teks tetap terbaca */
.hero .hero-bg{position:absolute;inset:0;z-index:0;background:url("assets/hero-bg.jpg") 56% 60%/cover no-repeat}
.hero .hero-bg::after{content:"";position:absolute;inset:0;
  background:
    radial-gradient(ellipse 58% 62% at 50% 50%,rgba(0,6,16,.55) 0%,rgba(0,6,16,.22) 60%,transparent 100%),
    linear-gradient(180deg,rgba(0,6,16,.30) 0%,rgba(0,6,16,.08) 45%,rgba(0,6,16,.50) 100%)}
.hero .inner{position:relative;z-index:2;padding:44px 24px 34px;text-align:center;display:flex;flex-direction:column;align-items:center}
.hero h1{font-size:clamp(1.7rem,5vw,2.9rem);font-weight:800;line-height:1.12;max-width:14ch}
.hero h1 .hl{color:var(--accent-mint)}
.hero .sub{color:var(--text-secondary);margin:14px 0 22px;max-width:46ch;font-size:1.02rem}
.hero .cta-row{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
.hero .hint{margin-top:16px;color:var(--accent-secondary);font-weight:700;font-size:.95rem}
.module-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px}
.module-tile{display:flex;flex-direction:column;gap:10px;padding:20px;border-radius:20px;cursor:pointer;
  background:var(--bg-glass);border:1px solid var(--border-color);transition:transform .15s,border-color .2s;text-align:left;backdrop-filter:blur(10px)}
.module-tile:hover{transform:translateY(-4px);border-color:var(--accent-primary)}
/* Ikon modul: hanya ikon biru (tanpa kotak latar), selaras tema neon biru */
.module-tile .ic{width:44px;height:44px;display:flex;align-items:center;justify-content:flex-start;font-size:1.6rem;
  color:var(--accent-primary);background:none;border-radius:0}
.module-tile .ic svg{width:42px;height:42px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;
  filter:drop-shadow(0 0 5px rgba(79,179,217,.55));transition:color .2s,filter .2s,transform .2s}
.module-tile:hover .ic svg,.module-tile:focus-visible .ic svg{color:#9ADCF2;filter:drop-shadow(0 0 9px rgba(79,179,217,.95));transform:scale(1.06)}
.module-tile h4{font-size:1.02rem}
.module-tile p{color:var(--text-secondary);font-size:.85rem;line-height:1.45}
.module-tile .meta{color:var(--text-faint);font-size:.72rem;letter-spacing:.5px;text-transform:uppercase}

/* ============ 6. 3D STAGE ============ */
#view-simulasi{padding:0;max-width:none;margin:0}
#stage{position:relative;height:calc(100vh - 57px);min-height:460px;overflow:hidden;background:#00040A}
#stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;z-index:2}
.starfield{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none;}
.planet-label{position:absolute;z-index:5;pointer-events:none;transform:translate(-50%,-100%);
  color:#fff;font-weight:700;font-size:.78rem;padding:2px 9px;border-radius:999px;
  background:rgba(10,8,30,.55);text-shadow:0 1px 3px rgba(0,0,0,.6);white-space:nowrap;transition:opacity .2s}
.planet-label.hidden{display:none}
#scaleNote{position:absolute;z-index:6;left:12px;top:12px;max-width:250px;font-size:.72rem;line-height:1.4;
  color:var(--text-secondary);background:var(--bg-glass);border:1px solid var(--border-color);border-radius:12px;padding:8px 11px;backdrop-filter:blur(8px)}
#hud{position:absolute;z-index:7;left:50%;bottom:14px;transform:translateX(-50%);
  display:flex;align-items:center;gap:8px;padding:9px 12px;border-radius:999px;
  background:var(--bg-glass);border:1px solid var(--border-color);backdrop-filter:blur(10px);max-width:96vw;flex-wrap:wrap;justify-content:center}
#hud .ctl{display:flex;align-items:center;gap:6px}
#hud input[type=range]{width:90px;accent-color:var(--accent-primary)}
#hud label{font-size:.72rem;color:var(--text-secondary);white-space:nowrap}
#hud .speed-val{font-size:.75rem;color:var(--accent-secondary);font-weight:700;min-width:34px;text-align:center}
#planetBar{position:absolute;z-index:7;top:12px;left:50%;transform:translateX(-50%);
  display:flex;gap:4px;overflow-x:auto;max-width:92vw;padding:6px 8px;border-radius:999px;
  background:var(--bg-glass);border:1px solid var(--border-color);backdrop-filter:blur(10px);scrollbar-width:none}
#planetBar::-webkit-scrollbar{display:none}
#planetBar .pb{flex:0 0 auto;white-space:nowrap;padding:7px 12px;border-radius:999px;font-size:.78rem;color:var(--text-secondary);font-weight:600}
#planetBar .pb.active{background:var(--accent-primary);color:#fff}
#welcomeOverlay{position:absolute;inset:0;z-index:9;display:flex;align-items:center;justify-content:center;padding:20px}
#welcomeOverlay .wcard{max-width:480px;width:100%;background:var(--bg-glass);border:1px solid var(--border-color);
  border-radius:26px;padding:30px 26px;text-align:center;backdrop-filter:blur(14px);box-shadow:var(--shadow);animation:pop .35s ease}
@keyframes pop{from{transform:scale(.94);opacity:0}to{transform:none;opacity:1}}
#welcomeOverlay .wcard h1{font-size:1.7rem;line-height:1.15}
#welcomeOverlay .wcard .sub{margin:12px 0 20px;color:var(--text-secondary)}
#welcomeOverlay .wcard .cta-row{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;margin-top:6px}
#welcomeOverlay .wcard .cta-row .btn{width:100%;max-width:280px;min-height:48px;padding:12px 22px;margin:0;white-space:nowrap}
#welcomeOverlay .wcard .hint{margin-top:22px;line-height:1.5}
#infoCard{position:absolute;z-index:8;right:12px;top:58px;width:min(330px,calc(100vw - 24px));
  background:var(--bg-glass);border:1px solid var(--border-color);border-radius:20px;padding:18px;backdrop-filter:blur(14px);
  box-shadow:var(--shadow);animation:pop .2s ease;display:none}
#infoCard.show{display:block}
#infoCard .pname{font-size:1.5rem;font-weight:800}
#infoCard .pkind{color:var(--text-secondary);font-size:.9rem;margin:2px 0 12px}
#infoCard .row{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-top:1px solid var(--border-color);font-size:.9rem}
#infoCard .row .k{color:var(--text-secondary)}
#infoCard .row .v{font-weight:700;text-align:right}

/* ============ 7. INSPEKSI ============ */
.inspect-wrap{display:grid;grid-template-columns:1.1fr .95fr;gap:20px;align-items:start}
#inspectStage{position:relative;height:min(62vh,560px);min-height:380px;border-radius:24px;overflow:hidden;border:1px solid var(--border-color);background:#00040A}
#inspectStage canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;z-index:2}
.name-toggle{position:absolute;z-index:7;left:12px;bottom:12px;width:46px;height:46px;border-radius:14px;
  display:inline-flex;align-items:center;justify-content:center;cursor:pointer;
  background:rgba(6,14,26,.62);border:1px solid var(--border-color);color:#EAF6FF;
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  box-shadow:0 6px 20px rgba(0,0,0,.35);transition:background .18s,transform .18s,border-color .18s,color .18s}
.name-toggle:hover{background:rgba(20,44,72,.82);transform:translateY(-1px);border-color:var(--accent-mint)}
.name-toggle:active{transform:translateY(0) scale(.96)}
.name-toggle:focus-visible{outline:2px solid var(--accent-mint);outline-offset:2px}
.name-toggle svg{width:23px;height:23px;display:none}
.name-toggle .eye-open{display:none}
.name-toggle[aria-pressed="false"] .eye-off{display:block}
.name-toggle[aria-pressed="true"] .eye-open{display:block}
.name-toggle[aria-pressed="true"]{color:var(--accent-mint);border-color:rgba(140,231,178,.55)}
#inspectBigTitle{position:absolute; z-index:5; bottom:20%; left:0; right:0; text-align:center; pointer-events:none;
  opacity:0; transition:opacity .45s}
#inspectBigTitle.show{opacity:1}
#inspectBigTitle .nm{font-size:clamp(3rem, 8vw, 5rem); font-weight:900; text-shadow:0 4px 20px rgba(0,0,0,0.8); color:#fff; line-height:1; margin-bottom:8px;}
#inspectBigTitle .jk{font-size:1.1rem; font-weight:700; color:var(--accent-mint); letter-spacing:2px; text-transform:uppercase;}
#inspectPrevNext{position:absolute;z-index:6;bottom:12px;left:0;right:0;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 12px 0 68px}
#inspectPrevNext .thumb{display:flex;align-items:center;gap:7px;padding:6px 12px 6px 7px;border-radius:999px;background:var(--bg-glass);border:1px solid var(--border-color);backdrop-filter:blur(8px);cursor:pointer;font-size:.8rem;font-weight:600}
#inspectPrevNext .thumb .dot{width:26px;height:26px;border-radius:50%}
.stats-col{display:flex;flex-direction:column;gap:14px}
.stat-line{padding:10px 0;border-bottom:1px solid var(--border-color)}
.stat-line .lbl{font-size:.68rem;letter-spacing:1.2px;text-transform:uppercase;color:var(--text-faint);font-weight:700}
.stat-line .val{font-size:1.02rem;font-weight:700;margin-top:1px}
.fact-card{padding:16px;border-radius:16px;background:var(--bg-tertiary);border:1px solid var(--border-color);font-size:.9rem}
.fact-card .ttl{color:var(--accent-coral);font-weight:800;letter-spacing:1px;font-size:.72rem;text-transform:uppercase;margin-bottom:8px}
.fact-card li{padding:6px 0;border-top:1px solid var(--border-color)}
.fact-card li:first-child{border-top:none}
.data-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-top:14px}
.data-cell{background:var(--bg-glass);border:1px solid var(--border-color);border-radius:16px;padding:13px;backdrop-filter:blur(8px)}
.data-cell .ico{font-size:1.2rem}
.data-cell .lb{font-size:.68rem;letter-spacing:.8px;text-transform:uppercase;color:var(--text-faint);font-weight:700;margin:6px 0 2px}
.data-cell .dv{font-size:.93rem;font-weight:600;line-height:1.45}
.data-cell .src{font-size:.68rem;color:var(--text-faint);margin-top:5px;display:block;line-height:1.35}
#inspectCarousel{display:flex;gap:8px;overflow-x:auto;padding:6px 2px;scrollbar-width:none}
#inspectCarousel::-webkit-scrollbar{display:none}
#inspectCarousel .prb{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:5px;padding:8px;cursor:pointer}
#inspectCarousel .prb .dot{width:34px;height:34px;border-radius:50%;transition:transform .15s}
#inspectCarousel .prb.active .dot{transform:scale(1.18);box-shadow:0 0 0 3px var(--accent-primary)}
#inspectCarousel .prb span{font-size:.7rem;color:var(--text-secondary)}

/* ============ 8. PERBANDINGAN ============ */
.comp-stage{display:flex;align-items:flex-end;justify-content:center;gap:40px;padding:40px 10px 10px;
  min-height:340px;border-radius:22px;border:1px solid var(--border-color);background:#00040A;overflow:hidden;flex-wrap:wrap;position:relative;}
.comp-ball{text-align:center;transition:width .5s ease,height .5s ease; position:relative; z-index:2;}
.comp-ball .ball{border-radius:50%;margin:0 auto;box-shadow:inset -8px -10px 24px rgba(0,0,0,.5),0 8px 26px rgba(0,0,0,.4)}
.comp-ball .nm{font-weight:700;font-size:.85rem;margin-top:8px;color:#fff}
.comp-ball .st{font-size:.68rem;color:var(--text-secondary)}
/* --- Perbandingan 3D (compare-three.js) --- */
#sizeStage{height:440px;min-height:0;display:block;padding:0}
.dist-stage{height:340px;min-height:0;display:block;padding:0}
.cmp-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:2;display:block;touch-action:pan-y;cursor:grab}
.cmp-canvas:active{cursor:grabbing}
#distCanvas{cursor:default}
.cmp-labels,.cmp-ticks{position:absolute;inset:0;z-index:3;pointer-events:none;overflow:hidden}
.cmp-label{position:absolute;left:0;top:0;text-align:center;white-space:nowrap;will-change:transform}
.cmp-label .nm{font-weight:700;font-size:.85rem;color:#fff}
.cmp-label .st{font-size:.68rem;color:var(--text-secondary)}
.cmp-hint{font-size:.78rem;margin:8px 4px 14px}
.cmp-ticks .tk-line{position:absolute;bottom:34px;height:2px;border-radius:2px;background:linear-gradient(90deg,var(--accent-secondary),var(--accent-primary))}
.cmp-ticks .tk{position:absolute;bottom:8px;transform:translateX(-50%);text-align:center}
.cmp-ticks .tk i{display:block;width:1px;height:10px;margin:0 auto 2px;background:var(--text-faint)}
.cmp-ticks .tk span{font-size:.62rem;color:var(--text-faint);white-space:nowrap}
.cmp-ticks .tk-dot{position:absolute;left:0;bottom:30px;width:10px;height:10px;margin-left:-5px;border-radius:50%;background:#fff;box-shadow:0 0 0 3px var(--accent-primary),0 0 12px var(--accent-primary)}
@media (max-width:767px){
  #sizeStage{height:360px}
  .dist-stage{height:300px}
}
.ratio-card{text-align:center;padding:18px;border-radius:18px;background:var(--bg-glass);border:1px solid var(--border-color);font-size:1.05rem;font-weight:700}
.picker-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.picker-row select{flex:1;min-width:140px;padding:12px 14px;border-radius:12px;border:1px solid var(--border-color);background:var(--bg-secondary);color:var(--text-primary);font-size:.95rem}
#distTrack{position:relative;height:70px;margin:18px 6px}
#distTrack .rail{position:absolute;top:50%;left:0;right:0;height:12px;transform:translateY(-50%);border-radius:999px;background:linear-gradient(90deg,var(--accent-secondary),var(--accent-primary),var(--accent-purple))}
#distTrack input[type=range]{position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);width:100%;appearance:none;background:transparent;height:44px}
#distTrack .ptick{position:absolute;top:50%;transform:translate(-50%,-50%);width:14px;height:14px;border-radius:50%;background:#fff;border:2px solid var(--accent-primary)}
.weight-wrap{display:grid;grid-template-columns:1fr 1.3fr;gap:20px;align-items:start}
.weight-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.weight-cell{background:var(--bg-glass);border:1px solid var(--border-color);border-radius:16px;padding:14px;text-align:center}
.weight-cell .wdot{width:30px;height:30px;border-radius:50%;margin:0 auto 8px}
.weight-cell .wnm{font-size:.8rem;color:var(--text-secondary)}
.weight-cell .wval{font-size:1.3rem;font-weight:800;color:var(--accent-mint)}
.weight-cell .wrel{font-size:.7rem;color:var(--text-faint)}

/* ============ 9. MATERI ============ */
.subnav{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 10px;scrollbar-width:none}
.subnav::-webkit-scrollbar{display:none}
.subnav button{flex:0 0 auto;display:inline-flex;align-items:center;gap:8px;padding:10px 18px;border-radius:999px;background:rgba(3,18,32,.35);border:1px solid var(--border-color);color:var(--text-secondary);font-weight:600;font-size:.88rem;transition:color .2s,border-color .2s,box-shadow .2s,background .2s}
.subnav button .tab-ic{width:18px;height:18px;flex:0 0 auto}
.subnav button.active .tab-ic{color:var(--accent-primary,#4FB3D9)}
.subnav button:hover{color:var(--text-primary);border-color:rgba(120,205,240,.4)}
.subnav button:focus-visible{outline:2px solid var(--accent-secondary);outline-offset:2px}
.subnav button.active{color:var(--text-primary);border-color:var(--accent-primary,#4FB3D9);
  background:radial-gradient(120% 140% at 50% 0%,rgba(79,179,217,.28),rgba(79,179,217,.08) 70%);
  box-shadow:0 0 0 1px rgba(79,179,217,.35),0 0 18px rgba(79,179,217,.38),inset 0 0 14px rgba(79,179,217,.2)}
.chapter{border:1px solid var(--border-color);border-radius:18px;margin-bottom:16px;overflow:hidden;background:var(--bg-glass)}
.chapter .ch-head{width:100%;display:flex;align-items:center;gap:12px;padding:16px 18px;text-align:left;font-size:1rem;font-weight:700;flex-wrap:wrap}
/* Lencana angka bab: neon biru (selaras tema antariksa) */
.chapter{transition:border-color .25s,box-shadow .25s}
.chapter:hover,.chapter.open{border-color:rgba(79,179,217,.5);box-shadow:0 0 22px rgba(79,179,217,.10)}
.chapter .ch-head .num{--neon:79,179,217;width:36px;height:36px;border-radius:12px;flex:0 0 auto;
  display:flex;align-items:center;justify-content:center;font-weight:800;font-size:1.02rem;color:#DDF6FF;
  background:radial-gradient(120% 140% at 50% 0%,rgba(var(--neon),.32),rgba(3,14,26,.88) 72%);
  border:1.5px solid rgba(var(--neon),.78);
  box-shadow:0 0 8px rgba(var(--neon),.55),0 0 18px rgba(var(--neon),.22),inset 0 0 8px rgba(var(--neon),.28);
  text-shadow:0 0 6px rgba(130,215,245,.95),0 0 14px rgba(var(--neon),.7);
  animation:numPulse 3.2s ease-in-out infinite;
  transition:transform .25s,border-color .25s,box-shadow .25s,text-shadow .25s}
.chapter .ch-head:hover .num,.chapter .ch-head:focus-visible .num,.chapter.open .ch-head .num{
  transform:scale(1.07);border-color:rgba(150,225,250,.95);color:#fff;
  box-shadow:0 0 12px rgba(var(--neon),.85),0 0 28px rgba(var(--neon),.45),inset 0 0 12px rgba(var(--neon),.4);
  text-shadow:0 0 8px rgba(170,232,255,1),0 0 20px rgba(var(--neon),.9)}
@keyframes numPulse{0%,100%{box-shadow:0 0 7px rgba(79,179,217,.45),0 0 16px rgba(79,179,217,.18),inset 0 0 8px rgba(79,179,217,.24)}
  50%{box-shadow:0 0 11px rgba(79,179,217,.75),0 0 24px rgba(79,179,217,.32),inset 0 0 10px rgba(79,179,217,.34)}}
@media (prefers-reduced-motion:reduce){.chapter .ch-head .num{animation:none}}
.chapter .ch-head .tick{margin-left:auto;color:var(--status-success);font-size:1.2rem}
.chapter .ch-body{display:none;padding:0 18px 18px;color:var(--text-secondary);font-size:.95rem}
.chapter.open .ch-body{display:block}
.chapter .ch-body p{margin-bottom:12px}
.chapter .ch-body h4{margin:16px 0 8px;color:var(--text-primary);font-size:1.1rem;}
.chapter .ch-body .src{display:block;margin-top:14px;padding-top:10px;border-top:1px solid var(--border-color);color:var(--text-faint);font-size:.75rem}
.callout-ayo-coba { background: rgba(79,179,217,0.1); border: 1px solid var(--accent-primary); border-radius: 12px; padding: 14px; margin: 14px 0; color: var(--text-primary); }
.callout-ayo-coba ol { padding-left: 1.5em; list-style: decimal outside; }
.callout-ayo-coba li { padding-left: 2px; margin-bottom: 4px; overflow-wrap: anywhere; }
.callout-ayo-coba { overflow-wrap: anywhere; }
.callout-summary { background: var(--bg-tertiary); border-left: 4px solid var(--accent-mint); padding: 14px; margin-top: 14px; border-radius: 0 12px 12px 0; color: var(--text-primary); }
.kta-card{background:var(--bg-glass);border:1px solid var(--border-color);border-radius:16px;padding:15px;margin-bottom:12px}
.kta-card b{color:var(--accent-secondary)}
/* ---- Kartu urutan planet: efek neon interaktif (diatur oleh src/neon-mnemonic.js) ---- */
.mnemonic{--mn-rgb:79,179,217;--mn-r:170px;--o:0;
  position:relative;isolation:isolate;text-align:center;padding:26px 20px 22px;border-radius:22px;
  background:linear-gradient(135deg,rgba(9,30,48,.92),rgba(2,10,20,.96));
  border:1.5px solid rgba(140,200,240,.14);color:#fff;cursor:grab;
  touch-action:pan-y;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}
.mnemonic.is-drag{cursor:grabbing}
/* garis tepi neon: hanya bagian dekat kursor yang menyala */
.mnemonic::before{content:"";position:absolute;inset:-1.5px;border-radius:inherit;padding:1.5px;z-index:3;pointer-events:none;
  background:radial-gradient(circle var(--mn-r) at var(--mx,50%) var(--my,50%),
    rgba(var(--mn-rgb),1) 0%,rgba(var(--mn-rgb),.75) 35%,rgba(var(--mn-rgb),0) 100%);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  mask-composite:exclude;opacity:var(--o);filter:drop-shadow(0 0 5px rgba(var(--mn-rgb),.9))}
/* pendar lembut yang melewati tepi kartu */
.mn-aura{position:absolute;left:var(--mx,50%);top:var(--my,50%);z-index:0;pointer-events:none;
  width:calc(var(--mn-r)*2.3);aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;
  background:radial-gradient(circle,rgba(var(--mn-rgb),.28) 0%,rgba(var(--mn-rgb),.10) 38%,rgba(var(--mn-rgb),0) 70%);
  opacity:var(--o)}
/* partikel debu cahaya (canvas lebih besar dari kartu) */
.mn-fx{position:absolute;left:-70px;top:-70px;width:calc(100% + 140px);height:calc(100% + 140px);z-index:1;pointer-events:none}
.mn-row{position:relative;z-index:2;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:.1em .5em;
  font-size:clamp(1.25rem,2.6vw,1.75rem);font-weight:800;letter-spacing:1px;line-height:1.5}
.mn-row i{font-style:normal;opacity:.35}
.mn-t{--c:79,179,217;--p:0;display:inline-block;
  color:rgba(238,247,255,calc(.8 + var(--p)*.2));
  transform:translateY(calc(var(--p)*-2px)) scale(calc(1 + var(--p)*.12));
  text-shadow:0 0 calc(3px + var(--p)*10px) rgba(var(--c),calc(.18 + var(--p)*.8)),
              0 0 calc(var(--p)*28px) rgba(var(--c),calc(var(--p)*.75));
  will-change:transform,text-shadow}
.mnemonic small{position:relative;z-index:2;display:block;font-weight:600;font-size:.8rem;letter-spacing:0;color:rgba(200,225,245,.82);margin-top:10px}
@media (prefers-reduced-motion:reduce){.mn-t{transform:none}}
#glosSearch{width:100%;padding:13px 16px;border-radius:14px;border:1px solid var(--border-color);background:var(--bg-secondary);color:var(--text-primary);font-size:1rem}
.glos-item{padding:14px;border-bottom:1px solid var(--border-color)}
.glos-item b{color:var(--accent-primary);font-size:1.02rem}
.glos-item p{color:var(--text-secondary);font-size:.92rem;margin-top:2px}

/* [C] Lencana jenjang bab + filter */
.jenjang-badge{display:inline-flex;align-items:center;padding:3px 9px;border-radius:999px;font-size:.7rem;font-weight:800;letter-spacing:.4px;border:1px solid var(--border-color);background:var(--bg-tertiary);color:var(--text-secondary);white-space:nowrap}
.jenjang-badge[data-jenjang="Kelas VI"]{background:rgba(140,231,178,.16);color:var(--accent-mint);border-color:rgba(140,231,178,.4)}
.jenjang-badge[data-jenjang="Kelas VII"]{background:rgba(79,179,217,.16);color:var(--accent-primary);border-color:rgba(79,179,217,.4)}
.jenjang-badge[data-jenjang="Pengayaan 8–9"]{background:rgba(255,200,87,.16);color:var(--accent-secondary);border-color:rgba(255,200,87,.4)}
.materi-filter{display:flex;gap:6px;overflow-x:auto;padding:4px 2px 12px;scrollbar-width:none}
.materi-filter::-webkit-scrollbar{display:none}
.materi-filter button{flex:0 0 auto;padding:7px 14px;border-radius:999px;font-weight:700;font-size:.8rem;border:1px solid var(--border-color);background:var(--bg-secondary);color:var(--text-secondary)}
.materi-filter button.active{background:var(--accent-mint);color:var(--accent-mint-ink);border-color:transparent}

/* ============ 10. KUIS ============ */
.quiz-lobby{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}
.quiz-card{background:var(--bg-glass);border:1px solid var(--border-color);border-radius:20px;padding:20px;position:relative}
.quiz-card.locked{opacity:.6;filter:grayscale(.3)}
.quiz-card .lock{position:absolute;top:14px;right:14px;font-size:1.3rem}
.quiz-card h4{font-size:1.05rem;margin-bottom:4px}
.quiz-card .desc{color:var(--text-secondary);font-size:.85rem;margin-bottom:12px;min-height:36px}
.q-head{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.q-head .qnum{font-size:.85rem;color:var(--text-secondary);font-weight:700}
.q-progress{flex:1;min-width:120px}
.qq{margin-bottom:6px}
.q-text{font-size:1.12rem;font-weight:700;line-height:1.4}
.opt{display:flex;gap:12px;align-items:flex-start;padding:13px 15px;border-radius:14px;border:1px solid var(--border-color);background:var(--bg-glass);margin-bottom:10px;cursor:pointer;transition:.15s;text-align:left;width:100%}
.opt:hover{border-color:var(--accent-primary)}
.opt .letter{width:30px;height:30px;border-radius:10px;background:var(--bg-tertiary);display:flex;align-items:center;justify-content:center;font-weight:800;flex:0 0 auto}
.opt.sel{border-color:var(--accent-primary);background:rgba(79,179,217,.14)}
.opt.sel .letter{background:var(--accent-primary);color:#fff}
.opt.correct{border-color:var(--status-success);background:rgba(74,222,128,.14)}
.opt.correct .letter{background:var(--status-success);color:#062}
.opt.wrong{border-color:var(--status-danger);background:rgba(248,113,113,.14)}
.opt.wrong .letter{background:var(--status-danger);color:#fff}
.qnav{display:flex;gap:6px;flex-wrap:wrap}
.qnav .qn{width:40px;height:40px;border-radius:12px;background:var(--bg-tertiary);border:1px solid var(--border-color);font-weight:700;font-size:.9rem}
.qnav .qn.done{background:var(--status-success);color:#062;border-color:transparent}
.qnav .qn.cur{outline:2px solid var(--accent-primary)}
.qnav .qn.blank{opacity:.55}
.score-hero{text-align:center;padding:26px 18px;border-radius:22px;background:var(--bg-glass);border:1px solid var(--border-color);margin-bottom:18px}
.score-hero .big{font-size:3.2rem;font-weight:800;line-height:1}
.score-hero .pred{font-size:1.2rem;font-weight:800;margin-top:6px}
.review-item{border:1px solid var(--border-color);border-radius:16px;padding:15px;margin-bottom:12px;background:var(--bg-glass)}
.review-item .rq{font-weight:700;margin-bottom:8px}
.review-item .ex{font-size:.86rem;color:var(--text-secondary);margin-top:10px;padding-top:10px;border-top:1px dashed var(--border-color)}
.history-row{display:flex;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid var(--border-color);font-size:.9rem}

/* ============ 11. SUMBER & PROFIL & PENGATURAN ============ */
.ref-list{list-style:none}
.ref-list li{padding:14px;border-bottom:1px solid var(--border-color);font-size:.92rem;line-height:1.55;color:var(--text-secondary)}
.ref-list li .apa{color:var(--text-primary)}
.ref-list li a{word-break:break-all;font-size:.82rem}
.profile-card{display:flex;gap:22px;align-items:center;flex-wrap:wrap}
.avatar{width:120px;height:120px;border-radius:50%;overflow:hidden;border:3px solid var(--accent-primary);background:var(--bg-tertiary);flex:0 0 auto;display:flex;align-items:center;justify-content:center}
.avatar img{width:100%;height:100%;object-fit:cover}
.avatar .ph{font-size:2.6rem}
.id-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.id-cell{background:var(--bg-glass);border:1px solid var(--border-color);border-radius:14px;padding:13px}
.id-cell .il{font-size:.68rem;letter-spacing:.8px;text-transform:uppercase;color:var(--text-faint);font-weight:700}
.id-cell .iv{font-weight:700;margin-top:3px}
.setting-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 0;border-bottom:1px solid var(--border-color);flex-wrap:wrap}
.setting-row .sc{flex:1;min-width:200px}
.setting-row .sc h4{font-size:1rem}
.setting-row .sc p{color:var(--text-secondary);font-size:.85rem}
.seg{display:inline-flex;background:var(--bg-tertiary);border-radius:12px;padding:3px;gap:3px}
.seg button{padding:9px 14px;border-radius:9px;font-weight:700;font-size:.85rem;color:var(--text-secondary)}
.seg button.active{background:var(--accent-primary);color:#fff}
.switch{position:relative;width:54px;height:30px;flex:0 0 auto}
.switch input{opacity:0;width:0;height:0}
.switch .sl{position:absolute;inset:0;background:var(--bg-tertiary);border-radius:999px;transition:.2s;cursor:pointer;border:1px solid var(--border-color)}
.switch .sl:before{content:"";position:absolute;width:22px;height:22px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s}
.switch input:checked + .sl{background:var(--accent-mint)}
.switch input:checked + .sl:before{transform:translateX(24px)}
.offline-badge{display:inline-flex;align-items:center;gap:7px;padding:7px 13px;border-radius:999px;background:rgba(74,222,128,.14);color:var(--status-success);font-weight:700;font-size:.85rem}
.storage-bar{height:10px;border-radius:999px;background:var(--bg-tertiary);overflow:hidden}

/* ============ 11b. VIDEO ============ */
.video-stage{position:relative;border-radius:22px;overflow:hidden;border:1px solid var(--border-color);background:#00040A;display:flex;flex-direction:column}
.video-frame{position:relative;width:100%;aspect-ratio:16/9;background:#000}
#ytPlayer{position:absolute;inset:0;width:100%;height:100%}
#ytPlayer iframe{width:100%!important;height:100%!important;border:0}
.video-fallback{position:absolute;inset:0;z-index:6;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(0,0,0,.72);text-align:center}
.video-fallback[hidden]{display:none}
.vf-card{max-width:360px;background:var(--bg-glass);border:1px solid var(--border-color);border-radius:20px;padding:22px;backdrop-filter:blur(12px)}
.vf-ico{font-size:2.4rem}
.video-controls{display:flex;flex-direction:column;gap:8px;padding:12px;background:var(--bg-glass);border-top:1px solid var(--border-color);backdrop-filter:blur(10px)}
.vc-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.vc-btn{min-height:44px;min-width:44px;border-radius:12px;padding:0 12px;background:var(--bg-secondary);border:1px solid var(--border-color);color:var(--text-primary);font-weight:700;font-size:.9rem}
.vc-btn.vc-big{font-size:1.2rem;min-width:52px}
.vc-btn:focus-visible{outline:3px solid var(--accent-secondary);outline-offset:2px}
.vc-time{font-size:.8rem;color:var(--text-secondary);font-variant-numeric:tabular-nums;min-width:96px;text-align:center}
.vc-progress{flex:1;min-width:120px;accent-color:var(--accent-primary)}
.vc-volume{width:100px;accent-color:var(--accent-primary)}
.vc-speed-label{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;color:var(--text-secondary)}
.vc-speed{padding:8px 10px;border-radius:10px;border:1px solid var(--border-color);background:var(--bg-secondary);color:var(--text-primary);font-size:.82rem}
.vc-auto{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;color:var(--text-secondary)}
.vc-opt{font-size:.75rem}
.video-info .video-title-lg{font-size:1.3rem;margin-bottom:4px}
.video-attribution{font-size:.85rem;color:var(--text-secondary);margin-bottom:6px}
.video-notes-label{display:block;font-weight:700;font-size:.9rem}
.video-notes{width:100%;margin-top:6px;padding:10px 12px;border-radius:12px;border:1px solid var(--border-color);background:var(--bg-secondary);color:var(--text-primary);font-family:inherit;font-size:.9rem;resize:vertical;min-height:70px}
.video-playlist{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}
.video-group-title{font-weight:800;font-size:.85rem;letter-spacing:.5px;text-transform:uppercase;color:var(--text-faint);margin:10px 0 2px;grid-column:1/-1}
.video-card{display:flex;flex-direction:column;gap:8px;padding:10px;border-radius:16px;border:1px solid var(--border-color);background:var(--bg-glass);text-align:left;cursor:pointer;transition:border-color .15s,transform .15s;position:relative}
.video-card:hover{transform:translateY(-2px);border-color:var(--accent-primary)}
.video-card.active{border-color:var(--accent-mint)}
.video-thumb{position:relative;aspect-ratio:16/9;border-radius:12px;overflow:hidden;background:linear-gradient(135deg,var(--accent-purple),#184860);display:flex;align-items:center;justify-content:center}
.video-thumb img{width:100%;height:100%;object-fit:cover}
.video-thumb-fallback .video-thumb-ico{font-size:2rem}
.video-ep{position:absolute;left:8px;bottom:8px;padding:2px 8px;border-radius:999px;background:rgba(0,0,0,.65);color:#fff;font-size:.7rem;font-weight:700}
.video-meta .video-title{font-size:.88rem;font-weight:700;line-height:1.35}
.video-meta .video-sub{font-size:.72rem;color:var(--text-faint);margin-top:2px}
.video-badges{position:absolute;top:10px;right:10px;display:flex;gap:4px}
.video-badge{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:800;background:rgba(0,0,0,.55);color:transparent}
.video-badge.on{background:var(--accent-mint);color:var(--accent-mint-ink)}
.video-badge.playing.on{background:var(--accent-secondary);color:#3A2A00}
@media (max-width:819px){ .video-playlist{grid-template-columns:1fr} }

/* ============ 12. MODAL (cropper) ============ */
.modal{position:fixed;inset:0;z-index:90;display:none;align-items:center;justify-content:center;padding:16px}
.modal.open{display:flex}
.modal .scrim{position:absolute;inset:0;background:rgba(0,0,0,.7);animation:fadein .2s}
.modal .mbox{position:relative;width:min(560px,96vw);background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:22px;padding:20px;box-shadow:var(--shadow);max-height:92vh;overflow:auto}
.modal .mbox h3{margin-bottom:8px}
.modal .mbox h3 + p{color:var(--text-secondary);margin-bottom:14px}
#cropCanvasWrap{position:relative;width:100%;aspect-ratio:1/1;border-radius:16px;overflow:hidden;background:#000;touch-action:none}
#cropCanvasWrap canvas{position:absolute;inset:0;width:100%;height:100%}
#bannerCropWrap{position:relative;width:100%;aspect-ratio:3/1;border-radius:16px;overflow:hidden;background:#000;touch-action:none;cursor:grab}
#bannerCropWrap canvas{position:absolute;inset:0;width:100%;height:100%}
#cropPreview{width:84px;height:84px;border-radius:50%;overflow:hidden;border:3px solid var(--accent-primary);background:#000}
#cropPreview img{width:100%;height:100%;object-fit:cover}

/* ============ 13. TOAST ============ */
#toast{position:fixed;left:50%;bottom:96px;transform:translateX(-50%) translateY(20px);z-index:120;opacity:0;pointer-events:none;transition:.3s;
  background:var(--bg-glass);border:1px solid var(--border-color);border-radius:14px;padding:12px 18px;backdrop-filter:blur(10px);font-weight:600;max-width:90vw}
#toast.show{opacity:1;transform:translateX(-50%)}

/* ============ 14. RESPONSIVE ============ */
@media (max-width:767px){
  main{padding:0 12px 120px}
  #btnBurger{display:block}
  #topbar .nav-links{display:none}
  #bottombar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:60;justify-content:space-around;
    background:var(--bg-glass);border-top:1px solid var(--border-color);backdrop-filter:blur(12px);padding:5px 4px calc(5px + env(safe-area-inset-bottom))}
  #bottombar a{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:.62rem;color:var(--text-secondary);padding:6px 4px;border-radius:12px;flex:1;text-align:center}
  #bottombar a .bi{font-size:1.3rem;line-height:1}
  #bottombar a.active{color:var(--accent-primary);font-weight:700}
  .inspect-wrap{grid-template-columns:1fr}
  .weight-wrap{grid-template-columns:1fr}
  #hud{bottom:74px}
  #planetBar{display:none}
  #infoCard{top:56px}
  #stage{height:calc(100vh - 120px)}
}
@media (min-width:768px) and (max-width:1023px){
  main{padding:0 20px 100px}
  .inspect-wrap{grid-template-columns:1fr}
}
@media (min-width:1024px){
  #welcomeOverlay .wcard{padding:42px 40px}
}

/* ============ 15. MOTION & A11Y ============ */
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms !important;transition-duration:.01ms !important}
  .view{animation:none}
}
.twinkle{animation:tw 2.6s ease-in-out infinite}
@keyframes tw{0%,100%{opacity:.6}50%{opacity:1}}
.floaty{animation:fl 6s ease-in-out infinite}
@keyframes fl{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
:focus-visible{outline:3px solid var(--accent-secondary);outline-offset:2px;border-radius:8px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* ============ LAB SIMULASI (Modul 10) ============ */
.lab-stage{position:relative;width:100%;height:350px;margin-top:16px;border-radius:16px;overflow:hidden;background:var(--bg-deep);border:1px solid var(--border-color)}
.lab-stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.lab-range{flex:1;min-width:140px;accent-color:var(--accent-primary)}
.lab-range--alt{accent-color:var(--accent-secondary)}
.lab-number{padding:8px 12px;border-radius:8px;border:1px solid var(--border-color);background:var(--bg-secondary);color:var(--text-primary);width:120px;min-height:44px;font:inherit}
.lab-result{font-weight:700;color:var(--accent-mint);align-self:center}
.lab-caption{font-size:.95rem;font-weight:600;text-align:center;color:var(--accent-secondary)}
.lab-panel{animation:fadein .25s ease}
@media (max-width:767px){ .lab-stage{height:300px} }
@media (prefers-reduced-motion:reduce){ .lab-panel{animation:none} }

/* ===== Lab 3D (Fase Bulan & Musim) — overlay di atas canvas WebGL ===== */
.lab-stage canvas.lab-gl{cursor:grab}
.lab-stage canvas.lab-gl:active{cursor:grabbing}
.lab-hud{position:absolute;inset:0;pointer-events:none;color:#EAF7FF;z-index:2}
.lab-hud .hud-text{position:absolute;left:16px;top:14px;max-width:60%}
.lab-hud .hud-title{font-weight:700;font-size:1.02rem;line-height:1.25}
.lab-hud .hud-line{font-size:.78rem;color:#A8C8DC;margin-top:3px;line-height:1.35}
.lab-hud .hud-status{color:#FF9F6B;font-weight:700}
.lab-hud .hud-note{position:absolute;left:16px;bottom:12px;font-size:.72rem;color:#6E93AB}
.lab-tag{position:absolute;transform:translate(-50%,0);font-size:.72rem;color:#EAF7FF;text-shadow:0 1px 3px #000;white-space:nowrap}
.lab-tag--dim{color:#7FA6C2;font-size:.68rem}
.lab-inset{position:absolute;border-radius:50%;background:#000;border:1px solid rgba(168,200,220,.55);box-shadow:0 0 0 3px rgba(1,8,18,.6)}
.lab-inset-tag{position:absolute;transform:translateX(-50%);font-size:.72rem;color:#A8C8DC;white-space:nowrap;z-index:2;text-shadow:0 1px 3px #000}
@media (max-width:767px){ .lab-hud .hud-text{max-width:75%} .lab-hud .hud-note,.lab-tag--dim{display:none} }
/* ===== Tombol pilihan (selected) — gaya menyala lembut, sama dengan .subnav ===== */
.materi-filter button,.seg button,#planetBar .pb{transition:color .2s,border-color .2s,box-shadow .2s,background .2s}
.materi-filter button{background:rgba(3,18,32,.35)}
.seg button{border:1px solid transparent}
.seg button:hover,.materi-filter button:hover,#planetBar .pb:hover{color:var(--text-primary)}
.materi-filter button.active,.seg button.active,#planetBar .pb.active{
  color:var(--text-primary) !important;border-color:var(--accent-primary,#4FB3D9) !important;
  background:radial-gradient(120% 140% at 50% 0%,rgba(79,179,217,.28),rgba(79,179,217,.08) 70%) !important;
  box-shadow:0 0 0 1px rgba(79,179,217,.35),0 0 14px rgba(79,179,217,.35),inset 0 0 12px rgba(79,179,217,.18)}
#planetBar .pb{border:1px solid transparent}

/* ===== Tombol aksi neon (.btn) =====
   Diam: gelap, garis tepi & teks berwarna. Disorot / fokus / ditekan: menyala neon.
   Warna per varian lewat --neon (R,G,B). Tidak memakai !important. */
button.btn,a.btn{--neon:79,179,217;--neon-text:#C4ECFF;
  background:radial-gradient(120% 160% at 50% 0%,rgba(var(--neon),.16),rgba(3,14,26,.78) 72%);
  color:var(--neon-text);border:1.5px solid rgba(var(--neon),.55);
  box-shadow:inset 0 0 10px rgba(var(--neon),.10);
  transition:box-shadow .2s ease,border-color .2s ease,color .2s ease,transform .1s ease}
button.btn-mint,a.btn-mint{--neon:80,235,150;--neon-text:#B8FFD3}
button.btn-coral,a.btn-coral{--neon:255,82,82;--neon-text:#FFC2BD}
button.btn-primary,a.btn-primary{--neon:79,179,217;--neon-text:#C4ECFF}
button.btn-ghost,a.btn-ghost,button.btn-secondary,a.btn-secondary{--neon:160,190,215;--neon-text:#E6F3FB}
button.btn:hover:not(:disabled),button.btn:focus-visible,button.btn.active,button.btn[aria-pressed="true"],
a.btn:hover,a.btn:focus-visible{
  border-color:rgb(var(--neon));color:#fff;text-shadow:0 0 8px rgba(var(--neon),.85);
  box-shadow:0 0 0 1px rgba(var(--neon),.45),0 0 14px rgba(var(--neon),.55),0 0 30px rgba(var(--neon),.30),inset 0 0 16px rgba(var(--neon),.28)}
button.btn:active:not(:disabled){box-shadow:0 0 0 1px rgba(var(--neon),.6),0 0 20px rgba(var(--neon),.7),0 0 40px rgba(var(--neon),.4),inset 0 0 20px rgba(var(--neon),.35)}
button.btn:focus-visible{outline:none}
button.btn:disabled{box-shadow:none;text-shadow:none;border-color:rgba(var(--neon),.25);color:rgba(255,255,255,.45)}
@media (hover:none){button.btn:hover:not(:disabled):not(:active):not(:focus-visible){box-shadow:inset 0 0 10px rgba(var(--neon),.10);border-color:rgba(var(--neon),.55);color:var(--neon-text);text-shadow:none}}


/* ===== Jelajah 3D: pas satu layar desktop, tanpa scroll ===== */
@media (min-width:768px){
  #stage{height:calc(100vh - var(--topbar-h,64px));height:calc(100dvh - var(--topbar-h,64px));min-height:420px}
  body:has(#view-simulasi.active){overflow-y:hidden}
  body:has(#view-simulasi.active) main{padding-bottom:0}
}

/* ===== Inspeksi: indikator planet tepat di bawah layar 3D; Misi (kiri) + Tahukah Kamu (kanan) di bawahnya ===== */
.inspect-main{display:flex;flex-direction:column;gap:12px;min-width:0}
.inspect-main #inspectCarousel{justify-content:center;padding:4px 2px}
.inspect-extra{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:stretch}
.inspect-extra .fact-card{height:100%}
@media (max-width:767px){.inspect-extra{grid-template-columns:1fr}}

/* Misi (kiri) & Tahukah Kamu (kanan): masing-masing setengah lebar halaman, memanjang ke bawah sesuai isi */
.inspect-extra{width:100%;margin-top:16px;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:stretch}
@media (max-width:767px){.inspect-extra{grid-template-columns:1fr}}


/* ===== Ikon neon (pengganti emoji) =====
   Warna ikon = currentColor; glow mengikuti --neon tombol bila ada. */
.ni{width:1.15em;height:1.15em;flex:none;vertical-align:-.2em;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;
  filter:drop-shadow(0 0 2px currentColor) drop-shadow(0 0 6px rgba(var(--neon,120,200,255),.85)) drop-shadow(0 0 12px rgba(var(--neon,120,200,255),.45))}
.ni-lg{width:1.05em;height:1.05em;vertical-align:-.12em;margin-right:.1em}
.ni-xl{width:2rem;height:2rem}
.ni-card{line-height:1;margin-bottom:2px}
.ni-card .ni{color:#7fe3ff;--neon:60,200,255}
/* di dalam tombol neon: ikut warna tombol */
button.btn .ni,a.btn .ni{color:var(--neon-text)}
/* tag & petunjuk */
.tag-mint .ni{color:var(--accent-mint);--neon:80,235,150}
.hint .ni{color:var(--accent-secondary);--neon:255,200,87}
#scaleNote .ni{color:#ffd25e;--neon:255,200,87}
.section-title .ni,h2 .ni{color:#7fe3ff;--neon:60,200,255}
/* tombol ikon HUD */
.icon-btn .ni{width:1.3rem;height:1.3rem;color:#8fdcff;--neon:60,200,255}
