:root{
  --bg:#0f1420;--panel:#161d2d;--panel2:#1c2538;--line:#273149;
  --text:#e8ecf4;--muted:#9aa5bd;--amber:#f5b942;--amber2:#ffd27a;
  --green:#5fd38d;--red:#ff7b7b;--blue:#7cb3ff;
  --radius:16px;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,system-ui,sans-serif;line-height:1.5}
body{background:radial-gradient(1200px 600px at 50% -10%,#1b2540 0,var(--bg) 60%) no-repeat,var(--bg)}
a{color:var(--amber2)}
h1,h2,h3{font-family:Fraunces,Georgia,serif;font-weight:700;letter-spacing:-.01em;margin:0}
button{font-family:inherit;cursor:pointer;color:inherit}
.muted{color:var(--muted)} .small{font-size:13px}
.hidden{display:none!important}
.eyebrow{color:var(--amber);font-size:12px;letter-spacing:.14em;text-transform:uppercase;font-weight:600}

/* top bar */
.top{display:flex;align-items:center;gap:12px;max-width:1000px;margin:0 auto;padding:14px 18px}
.brand{font-family:Fraunces,serif;font-weight:700;font-size:18px;color:var(--text);text-decoration:none}
.pills{display:flex;align-items:center;gap:6px;margin-left:auto;font-size:12px}
.pill{border:1px solid var(--line);border-radius:999px;padding:3px 10px;color:var(--muted)}
.pill.now{border-color:var(--amber);color:var(--amber2)}
.pill.goal{border-color:var(--green);color:var(--green)}
.arrow{color:var(--muted)}
.link-btn{background:none;border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:13px;color:var(--muted)}
.link-btn:hover{border-color:var(--amber);color:var(--text)}
@media(max-width:560px){.pills{display:none}.link-btn{margin-left:auto}}

/* stage */
main{max-width:1000px;margin:0 auto;padding:0 18px 60px}
.stage{display:flex;flex-direction:column;align-items:center;text-align:center;padding:24px 0 40px;min-height:calc(100vh - 64px);min-height:calc(100svh - 64px);justify-content:center}
.mascot-wrap{position:relative;width:min(260px,62vw);aspect-ratio:1;transition:width .4s}
.mascot{position:relative;z-index:1;width:100%;height:100%;overflow:visible}
.halo{position:absolute;inset:12%;border-radius:50%;background:radial-gradient(circle,rgba(245,185,66,.22),transparent 70%);filter:blur(8px);transition:.3s}
.hero-copy h1{font-size:clamp(28px,5.4vw,42px);line-height:1.1;margin-top:10px}
.hero-copy p{margin:10px auto 0;max-width:440px}

.start-btn{display:inline-block;text-decoration:none;margin-top:26px;background:var(--amber);color:#1a1200;border:0;border-radius:999px;padding:18px 40px;font-size:19px;font-weight:600;box-shadow:0 10px 30px -8px rgba(245,185,66,.55);transition:transform .15s,box-shadow .15s}
.start-btn:hover{transform:translateY(-2px);box-shadow:0 14px 36px -8px rgba(245,185,66,.7)}
.start-btn:active{transform:translateY(0)}
.hero-stat{margin-top:14px}
.mascot-wrap.cheer .bob{animation:cheer .5s ease-in-out 2}
@keyframes cheer{50%{transform:translateY(-14px) rotate(3deg)}}


/* mascot animation */
.mascot .bob{animation:bob 4s ease-in-out infinite;transform-origin:120px 200px}
@keyframes bob{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-5px) rotate(-1.2deg)}}
.mascot .eyes{animation:blink 5s infinite;transform-origin:120px 120px}
@keyframes blink{0%,46%,50%,100%{transform:scaleY(1)}48%{transform:scaleY(.08)}}
@media (prefers-reduced-motion:reduce){.mascot *{animation:none!important}}

.chip{background:transparent;border:1px solid var(--line);color:var(--muted);padding:6px 12px;border-radius:999px;font-size:12px}
.chip.on{border-color:var(--green);color:var(--green)}

/* sections */
.section{margin-top:34px}
.section h2{font-size:26px;margin-top:4px}
.section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}
.overall{min-width:200px}
.stat{font-family:Fraunces,serif;font-size:30px;font-weight:700;line-height:1}
.progress{height:8px;background:var(--panel2);border-radius:999px;overflow:hidden;border:1px solid var(--line);margin-top:6px}
.progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--amber),var(--amber2));transition:width .4s}
.note{font-size:13px;color:var(--muted);background:var(--panel);border:1px dashed var(--line);border-radius:12px;padding:12px 14px;margin:16px 0 6px}
.note b{color:var(--amber2)}

.phase{margin:26px 0 8px}
.phase h3{font-size:20px}
.phase p{color:var(--muted);margin:2px 0 0;font-size:14px}
.week{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);margin:10px 0;overflow:hidden}
.week.current{border-color:rgba(245,185,66,.5)}
.week>summary{list-style:none;cursor:pointer;display:flex;gap:14px;align-items:center;padding:14px 16px}
.week>summary::-webkit-details-marker{display:none}
.wk{font-family:Fraunces,serif;font-size:12px;color:var(--amber);min-width:58px;letter-spacing:.06em;text-transform:uppercase;font-weight:700}
.week>summary h4{font-family:Fraunces,serif;font-size:16px;margin:0;flex:1}
.ring{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-size:10px;font-weight:600;color:var(--muted);background:conic-gradient(var(--amber) calc(var(--p)*1%),var(--panel2) 0);position:relative;flex:none}
.ring::after{content:"";position:absolute;inset:4px;border-radius:50%;background:var(--panel)}
.ring span{position:relative;z-index:1}
.ring.done{color:var(--green)}
.wbody{padding:0 16px 16px;border-top:1px solid var(--line)}
.focus{margin:14px 0 10px;padding:11px 14px;background:rgba(245,185,66,.06);border-left:3px solid var(--amber);border-radius:0 10px 10px 0;font-size:14px}
.focus b{color:var(--amber2)}
.focus s{color:var(--red)}
.tasks{display:grid;gap:8px}
.task{display:flex;gap:12px;align-items:flex-start;padding:11px 12px;border-radius:10px;background:var(--panel2);border:1px solid transparent;transition:.15s}
.task:hover{border-color:var(--line)}
.task .box{width:22px;height:22px;border-radius:6px;border:2px solid var(--muted);flex:none;margin-top:1px;display:grid;place-items:center;background:none;padding:0}
.task.done .box{background:var(--green);border-color:var(--green)}
.task.done .box::after{content:"✓";color:#05240f;font-size:13px;font-weight:700}
.task .t{flex:1;font-size:14px}
.task .tt{cursor:pointer}
.task.done .tt,.task.done .meta{opacity:.55;text-decoration:line-through}
.task .meta{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.mat-row{margin-top:7px}
.task .mat{display:inline-flex;align-items:center;gap:6px;font-size:12px;text-decoration:none;color:var(--text);border:1px solid var(--line);padding:4px 10px;border-radius:999px;background:var(--panel)}
.task .mat:hover{border-color:var(--amber)}
.task .mat .k{font-size:10px;font-weight:700;letter-spacing:.06em;color:var(--amber);text-transform:uppercase}
.task .mat.ai .k{color:var(--green)}

/* library */
.lib{display:grid;gap:10px;margin-top:14px}
@media(min-width:760px){.lib{grid-template-columns:1fr 1fr}}
.lib .item{display:grid;grid-template-columns:auto 1fr;gap:12px;padding:14px;background:var(--panel);border:1px solid var(--line);border-radius:12px;text-decoration:none;color:inherit}
.lib .item:hover{border-color:var(--amber)}
.lib .ic{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;font-family:Fraunces,serif;font-weight:700;font-size:13px;background:rgba(245,185,66,.12);color:var(--amber2)}
.lib h4{margin:0 0 2px;font-size:14px;font-weight:600}
.lib p{margin:0;font-size:13px;color:var(--muted)}
.lvl{font-size:11px;color:var(--blue);margin-left:6px;font-weight:500}

/* diagnosis */
.diag-wrap summary{cursor:pointer;list-style:none;padding:8px 0}
.diag-wrap summary::-webkit-details-marker{display:none}
.diag-wrap summary::after{content:" ▾";color:var(--amber)}
.diag{display:grid;gap:8px;margin-top:8px}
.diag .row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;padding:11px 14px;background:var(--panel);border-radius:12px;border:1px solid var(--line)}
.tag{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:4px 8px;border-radius:6px}
.tag.weak{background:rgba(255,123,123,.12);color:var(--red)}
.tag.ok{background:rgba(124,179,255,.12);color:var(--blue)}
.tag.strong{background:rgba(95,211,141,.12);color:var(--green)}
.fix{font-size:13px;color:var(--muted);margin-top:2px}
.fix b{color:var(--text);font-weight:500}
.fix s{color:var(--red)}

footer{text-align:center;color:var(--muted);font-size:12px;padding:20px}
.toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);background:var(--panel2);border:1px solid var(--line);padding:10px 16px;border-radius:999px;font-size:13px;opacity:0;transition:.3s;pointer-events:none;z-index:10}
.toast.show{opacity:1}

dialog{background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:16px;padding:22px;width:min(380px,90vw)}
dialog::backdrop{background:rgba(5,8,14,.7)}
dialog input{width:100%;margin:12px 0;background:var(--panel2);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:11px 12px;font:inherit}
.dlg-actions{display:flex;justify-content:flex-end;gap:8px}
