:root{
  /* Light (default). If user is in dark system theme, media-query below overrides. */
  --bg:#f7f7fb;
  --card:#ffffff;
  --card2:#f1f2f7;
  --text:#111827;
  --muted:#4b5563;
  --line:#e5e7eb;
  --good:#16a34a;
  --bad:#dc2626;
  --btn:#ffffff;
  --btn2:#f3f4f6;
  --topbar-bg:rgba(247,247,251,0.88);
  --shadow:0 10px 22px rgba(17,24,39,0.08);

  /* Sizing tokens (elder-friendly) */
  --fs-body:18px;
  --fs-title:20px;
  --fs-sub:14px;
  --fs-h1:28px;
  --fs-p:18px;
  --fs-q:34px;
  --fs-choice:24px;
  --fs-choice-sub:16px;
  --btn-min-h:52px;
}

/* System dark theme */
@media (prefers-color-scheme: dark){
  :root{
    --bg:#0b0c10;
    --card:#12141a;
    --card2:#0f1116;
    --text:#f4f6ff;
    --muted:#b7bccd;
    --line:#23283a;
    --good:#2ecc71;
    --bad:#ff5d5d;
    --btn:#1b2030;
    --btn2:#0f1320;
    --topbar-bg:rgba(11,12,16,0.92);
    --shadow:0 10px 22px rgba(0,0,0,0.18);
  }
}

/* Manual override (stored in localStorage) */
html[data-theme="light"]{ color-scheme: light; }
html[data-theme="light"]:root{
  --bg:#f7f7fb;
  --card:#ffffff;
  --card2:#f1f2f7;
  --text:#111827;
  --muted:#4b5563;
  --line:#e5e7eb;
  --good:#16a34a;
  --bad:#dc2626;
  --btn:#ffffff;
  --btn2:#f3f4f6;
  --topbar-bg:rgba(247,247,251,0.88);
  --shadow:0 10px 22px rgba(17,24,39,0.08);
}

html[data-theme="dark"]{ color-scheme: dark; }
html[data-theme="dark"]:root{
  --bg:#0b0c10;
  --card:#12141a;
  --card2:#0f1116;
  --text:#f4f6ff;
  --muted:#b7bccd;
  --line:#23283a;
  --good:#2ecc71;
  --bad:#ff5d5d;
  --btn:#1b2030;
  --btn2:#0f1320;
  --topbar-bg:rgba(11,12,16,0.92);
  --shadow:0 10px 22px rgba(0,0,0,0.18);
}

/* Font size toggle */
html[data-font="xl"]:root{
  --fs-body:22px;
  --fs-title:24px;
  --fs-sub:16px;
  --fs-h1:34px;
  --fs-p:22px;
  --fs-q:42px;
  --fs-choice:30px;
  --fs-choice-sub:20px;
  --btn-min-h:60px;
}

/* High contrast toggle (keeps light/dark palette, boosts separation) */
html[data-contrast="high"]:root{
  --line: color-mix(in oklab, var(--text) 34%, transparent);
  --btn2: color-mix(in oklab, var(--card) 84%, var(--text) 10%);
  --card2: color-mix(in oklab, var(--card) 78%, var(--text) 8%);
}

*{box-sizing:border-box;}
html,body{height:100%;}

body{
  margin:0;
  font-family:system-ui,-apple-system,Segoe UI,Roboto,"Noto Sans KR",Arial,sans-serif;
  background:var(--bg);
  color:var(--text);
  font-size:var(--fs-body);
  line-height:1.55;
  letter-spacing:-0.2px;
}

.topbar{
  position:sticky;
  top:0;
  z-index:5;
  background:var(--topbar-bg);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
  padding:14px 16px;
  display:flex;
  gap:12px;
  align-items:center;
  justify-content:space-between;
}

.brand{display:flex;gap:12px;align-items:center;}
.logo{
  width:44px;height:44px;border-radius:14px;
  display:grid;place-items:center;
  background:linear-gradient(135deg,#6c5ce7,#00cec9);
  color:#081018;
  font-weight:900;
}

.title{font-size:var(--fs-title);font-weight:900;}
.subtitle{font-size:var(--fs-sub);color:var(--muted);margin-top:2px;}

.controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}

.container{max-width:920px;margin:18px auto;padding:0 16px 32px;}

.card{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:18px;
  padding:18px;
  box-shadow:var(--shadow);
}

.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap;}
.spread{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;}

.h1{font-size:var(--fs-h1);font-weight:950;margin:0 0 6px;}
.p{color:var(--muted);margin:0;font-size:var(--fs-p);line-height:1.55;}

.grid-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;margin-top:14px;}
@media (max-width:560px){.grid-days{grid-template-columns:repeat(4,minmax(0,1fr));}}

.day{
  background:var(--btn);
  border:1px solid var(--line);
  border-radius:14px;
  padding:12px 10px;
  cursor:pointer;
  display:flex;
  flex-direction:column;
  gap:6px;
  user-select:none;
  min-height:72px;
}
.day:hover{filter:brightness(1.06);} 
.day.selected{outline:2px solid rgba(108,92,231,0.55);} 

.badge{font-size:14px;color:var(--muted);} 
.badge.done{color:var(--good);font-weight:800;}

.btn{
  appearance:none;
  border:1px solid var(--line);
  background:var(--btn);
  color:var(--text);
  padding:14px 16px;
  min-height:var(--btn-min-h);
  border-radius:16px;
  font-size:var(--fs-p);
  font-weight:900;
  cursor:pointer;
}
.btn:hover{filter:brightness(1.06);} 
.btn:active{transform:translateY(1px);} 
.btn.primary{background:linear-gradient(135deg,#6c5ce7,#00cec9);color:#071018;border:none;}
.btn.ghost{background:transparent;}

.btn:focus-visible,.choice:focus-visible,.day:focus-visible{
  outline:3px solid rgba(108,92,231,0.55);
  outline-offset:2px;
}

.q-prompt{font-size:var(--fs-q);font-weight:950;margin:0 0 10px;letter-spacing:-0.6px;}
@media (max-width:560px){.q-prompt{font-size:calc(var(--fs-q) - 4px);}}

.choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:10px;}
@media (max-width:560px){.choices{grid-template-columns:1fr;}}

.choice{
  text-align:left;
  background:var(--btn2);
  border:1px solid var(--line);
  border-radius:18px;
  padding:18px;
  min-height:74px;
  font-size:var(--fs-choice);
  font-weight:950;
  color:var(--text);
}

.choice small{display:block;margin-top:8px;font-size:var(--fs-choice-sub);color:var(--muted);font-weight:800;}

.choice[disabled]{opacity:0.65;cursor:not-allowed;}

.hint{
  margin-top:12px;
  padding:12px 14px;
  border-radius:14px;
  border:1px dashed color-mix(in oklab, var(--muted) 35%, transparent);
  color:var(--muted);
  background:color-mix(in oklab, var(--card2) 70%, transparent);
}

.progressline{margin-top:10px;color:var(--muted);font-size:calc(var(--fs-p) - 2px);}

.goalline{margin-top:8px;color:var(--muted);font-size:calc(var(--fs-p) - 2px);}

.bar{
  margin-top:10px;
  height:12px;
  border-radius:999px;
  background:color-mix(in oklab, var(--line) 60%, transparent);
  overflow:hidden;
  border:1px solid var(--line);
}
.bar > .fill{
  height:100%;
  width:0%;
  background:linear-gradient(135deg,#6c5ce7,#00cec9);
}

.nav-row{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-top:14px;}

/* Modal / Overlay */
.overlay{
  position:fixed;
  inset:0;
  background:rgba(0,0,0,0.42);
  display:flex;
  align-items:center;
  justify-content:center;
  padding:16px;
  z-index:50;
}
.modal{
  width:min(880px, 100%);
  background:var(--card);
  border:1px solid var(--line);
  border-radius:22px;
  box-shadow:var(--shadow);
  overflow:hidden;
}
.modal-head{
  padding:16px 18px;
  border-bottom:1px solid var(--line);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.modal-body{padding:18px;}
.modal-title{font-weight:950;font-size:var(--fs-title);}

.seg{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}
.seg button{
  border:1px solid var(--line);
  background:var(--btn2);
  color:var(--text);
  padding:12px 14px;
  border-radius:999px;
  font-weight:900;
  cursor:pointer;
  min-height:var(--btn-min-h);
}
.seg button.active{
  background:linear-gradient(135deg,#6c5ce7,#00cec9);
  color:#071018;
  border:none;
}

.tip{
  margin-top:10px;
  padding:12px 14px;
  border-radius:14px;
  border:1px solid var(--line);
  background:var(--card2);
  color:var(--muted);
}

/* Tutorial */
.tuto-hero{font-size:calc(var(--fs-h1) + 2px);font-weight:950;letter-spacing:-0.6px;}
.tuto-step{color:var(--muted);margin-top:6px;}

/* Tiny tooltip (one-time hints) */
.tooltip{
  margin-top:10px;
  padding:10px 12px;
  border-radius:14px;
  border:1px dashed color-mix(in oklab, var(--muted) 35%, transparent);
  background:color-mix(in oklab, var(--card2) 70%, transparent);
  color:var(--muted);
  font-weight:900;
}

.toast{margin-top:10px;font-weight:900;}
.toast.good{color:var(--good);} 
.toast.bad{color:var(--bad);} 
.toast small{display:block;margin-top:6px;font-size:calc(var(--fs-p) - 2px);font-weight:800;color:var(--muted);} 
.toast.bad small{color:color-mix(in oklab, var(--bad) 60%, var(--muted));}

/* Learn screen */
.learn-card{margin-top:14px;border:1px solid var(--line);border-radius:18px;padding:18px;background:var(--card2);}
.learn-front{font-size:calc(var(--fs-q) + 6px);font-weight:950;letter-spacing:-0.6px;}
.learn-back{margin-top:12px;font-size:var(--fs-p);color:var(--text);line-height:1.6;}
@media (max-width:560px){.learn-front{font-size:calc(var(--fs-q) + 2px);}}

/* Learn toggle (show/hide explanation) */
.learn-toggle{
  margin-top:12px;
  display:flex;
  gap:10px;
  align-items:center;
  justify-content:space-between;
  flex-wrap:wrap;
}
.learn-toggle .label{
  font-weight:950;
  color:var(--muted);
}
.seg.seg-tight button{padding:10px 12px;min-height:48px;}

/* Celebration / Finish */
.celebrate{
  margin-top:12px;
  padding:16px;
  border-radius:18px;
  border:1px solid var(--line);
  background:linear-gradient(135deg, color-mix(in oklab, var(--card2) 86%, transparent), color-mix(in oklab, var(--card) 86%, transparent));
  position:relative;
  overflow:hidden;
}
.celebrate-badge{
  width:72px;height:72px;
  border-radius:24px;
  display:grid;place-items:center;
  background:linear-gradient(135deg,#6c5ce7,#00cec9);
  color:#071018;
  font-size:38px;
  font-weight:950;
  box-shadow:var(--shadow);
  animation:popIn 520ms ease-out both;
}
.celebrate-title{margin-top:10px;font-size:calc(var(--fs-h1) + 6px);font-weight:950;letter-spacing:-0.8px;animation:fadeUp 520ms ease-out both 80ms;}
.celebrate-sub{margin-top:6px;color:var(--muted);font-size:var(--fs-p);font-weight:900;animation:fadeUp 520ms ease-out both 140ms;}

@keyframes popIn{from{transform:scale(0.7);opacity:0;}to{transform:scale(1);opacity:1;}}
@keyframes fadeUp{from{transform:translateY(6px);opacity:0;}to{transform:translateY(0);opacity:1;}}

.confetti-layer{
  position:fixed;
  inset:0;
  pointer-events:none;
  overflow:hidden;
  z-index:60;
}
.confetti-piece{
  position:absolute;
  top:-12px;
  left:0;
  width:10px;
  height:14px;
  border-radius:3px;
  background:linear-gradient(135deg,#6c5ce7,#00cec9);
  opacity:0.95;
  transform:translateX(var(--x, 0px)) rotate(var(--r, 0deg));
  animation:confettiFall 1800ms ease-in both;
  animation-delay:var(--d, 0ms);
}
@keyframes confettiFall{
  0%{transform:translateX(var(--x)) translateY(-20px) rotate(var(--r));opacity:1;}
  100%{transform:translateX(calc(var(--x) + var(--dx, 0px))) translateY(110vh) rotate(calc(var(--r) + 220deg));opacity:0;}
}

.footer{
  border-top:1px solid var(--line);
  color:var(--muted);
  font-size:12px;
  padding:12px 16px;
  display:flex;
  justify-content:space-between;
  gap:12px;
}
