:root {
  color-scheme: dark;
  --bg:#15110d; --bg-2:#1d1813; --surface:#251f19; --surface-2:#2e2620;
  --line:#3a3027; --line-soft:#2a221b; --text:#f4ecdf; --text-dim:#b9ad99; --muted:#8a7d6b;
  --amber:#e8a547; --amber-soft:#ffd089; --sage:#95c187; --coral:#d97757;
  --shadow:0 24px 60px -22px rgba(0,0,0,.72);
  --display:"Fraunces","Songti SC","Noto Serif SC",Georgia,serif;
  --ui:"Geist",-apple-system,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;
  --mono:"Geist Mono","JetBrains Mono",ui-monospace,Menlo,monospace;
}
* { box-sizing:border-box; }
[hidden] { display:none !important; }
body {
  margin:0; min-height:100vh; background:var(--bg); color:var(--text);
  font-family:var(--ui); -webkit-font-smoothing:antialiased;
}
body::before {
  content:""; position:fixed; inset:0; pointer-events:none;
  background:radial-gradient(1000px 520px at 18% -12%,rgba(232,165,71,.13),transparent 62%),
             radial-gradient(900px 520px at 110% 100%,rgba(149,193,135,.09),transparent 58%);
}
button, input, select { font:inherit; }
button { cursor:pointer; }
a { color:var(--amber); }
.app { position:relative; z-index:1; min-height:100vh; }
.topbar {
  position:sticky; top:0; z-index:10; min-height:68px; border-bottom:1px solid var(--line);
  background:rgba(21,17,13,.86); backdrop-filter:blur(12px);
}
.topbar-inner { width:min(1180px,calc(100% - 32px)); margin:0 auto; min-height:68px; display:flex; align-items:center; justify-content:space-between; gap:16px; }
.brand { display:flex; align-items:center; gap:11px; color:var(--text-dim); font-family:var(--mono); font-size:13px; }
.mark { width:34px; height:34px; border-radius:8px; display:grid; place-items:center; background:var(--amber); color:#15110d; font-family:var(--display); font-size:21px; font-weight:700; }
.top-nav { display:flex; align-items:center; gap:7px; margin-left:auto; }
.user { display:flex; align-items:center; gap:8px; min-width:0; }
.lang-select { border:1px solid var(--line); border-radius:8px; background:var(--surface); color:var(--text-dim); padding:8px 10px; }
.pill { border:1px solid var(--line); border-radius:999px; background:var(--surface); color:var(--text-dim); padding:7px 10px; font-family:var(--mono); font-size:12px; }
.ghost { border:1px solid var(--line); border-radius:8px; background:transparent; color:var(--text-dim); padding:8px 11px; }
.ghost:hover { background:var(--surface); color:var(--text); }
.primary { border:1px solid var(--amber); border-radius:8px; background:var(--amber); color:#15110d; font-weight:700; padding:10px 13px; }
.primary:hover { background:var(--amber-soft); border-color:var(--amber-soft); }
.danger { border-color:rgba(217,119,87,.4); color:var(--coral); }
.page { width:min(1180px,calc(100% - 32px)); margin:0 auto; padding:28px 0 70px; }
.page-head { display:flex; align-items:flex-end; justify-content:space-between; gap:18px; border-bottom:1px solid var(--line); padding:0 0 20px; margin-bottom:20px; }
h1 { margin:0; font-family:var(--display); font-size:clamp(32px,5vw,56px); line-height:1.04; font-weight:500; letter-spacing:0; }
h2 { margin:0; font-family:var(--display); font-size:23px; font-weight:500; }
.muted { color:var(--muted); }
.sub { color:var(--text-dim); line-height:1.7; margin:10px 0 0; max-width:680px; }
.grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:14px; }
.card {
  border:1px solid var(--line); border-radius:8px; background:linear-gradient(180deg,var(--surface),var(--bg-2));
  padding:17px; box-shadow:0 18px 42px -30px rgba(0,0,0,.8);
}
.deck-card { min-height:205px; display:grid; gap:14px; text-align:left; color:inherit; position:relative; overflow:hidden; }
.deck-card::before { content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--amber); }
.deck-card:hover { border-color:rgba(232,165,71,.55); background:linear-gradient(180deg,var(--surface-2),var(--bg-2)); }
.deck-top { display:flex; justify-content:space-between; gap:12px; align-items:flex-start; }
.deck-name { font-family:var(--display); font-size:24px; line-height:1.2; }
.badges { display:flex; flex-wrap:wrap; gap:7px; }
.badge { border:1px solid var(--line); border-radius:999px; padding:4px 8px; color:var(--text-dim); font-family:var(--mono); font-size:11px; }
.badge.hot { color:var(--amber-soft); border-color:rgba(232,165,71,.38); background:rgba(232,165,71,.10); }
.forecast { display:grid; grid-template-columns:repeat(7,1fr); gap:4px; align-items:end; height:38px; }
.forecast.long { grid-template-columns:repeat(30,1fr); height:78px; margin-top:14px; }
.bar { min-height:3px; border-radius:3px; background:var(--amber); opacity:.82; }
.mini-chart-label { display:flex; justify-content:space-between; color:var(--muted); font-family:var(--mono); font-size:11px; }
.deck-limits { display:flex; gap:10px; flex-wrap:wrap; color:var(--muted); font-family:var(--mono); font-size:12px; }
.deck-actions { display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.task-strip {
  border:1px solid var(--line); border-radius:8px; background:var(--surface); padding:12px;
  display:grid; grid-template-columns:auto 1fr auto auto; gap:12px; align-items:center; margin-bottom:14px;
}
.task-strip strong { display:block; font-family:var(--display); font-size:26px; font-weight:500; }
.task-meter { height:10px; border-radius:999px; background:var(--bg-2); overflow:hidden; border:1px solid var(--line-soft); }
.task-meter span { display:block; height:100%; background:linear-gradient(90deg,var(--amber),var(--sage)); border-radius:999px; }
.drop {
  border:1px dashed rgba(232,165,71,.45); border-radius:8px; background:rgba(232,165,71,.08);
  padding:18px; display:grid; gap:10px; justify-items:start;
}
.drop.drag { background:rgba(232,165,71,.16); border-color:var(--amber); }
.auth { min-height:100vh; display:grid; place-items:center; padding:24px; }
.auth-card { width:min(440px,100%); border:1px solid var(--line); border-radius:8px; background:linear-gradient(180deg,var(--surface),var(--bg-2)); padding:30px; box-shadow:var(--shadow); }
.auth-brand { display:flex; align-items:center; gap:12px; margin-bottom:22px; }
.auth-brand h1 { font-size:25px; }
.auth-brand small { display:block; color:var(--muted); font-family:var(--mono); font-size:10px; letter-spacing:.18em; margin-top:4px; }
.tabs { display:grid; grid-template-columns:repeat(3,1fr); gap:6px; margin-bottom:18px; }
.tabs button { border:1px solid var(--line); border-radius:8px; background:var(--bg-2); color:var(--text-dim); padding:8px; }
.tabs button.on { background:var(--amber); border-color:var(--amber); color:#15110d; font-weight:700; }
.field { display:grid; gap:6px; margin-bottom:13px; }
.field label { color:var(--muted); font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; }
.field input { width:100%; border:1px solid var(--line); border-radius:8px; background:var(--bg); color:var(--text); padding:11px 12px; outline:none; }
.field input:focus { border-color:var(--amber); }
.settings-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:14px; align-items:start; }
.settings-card { display:grid; gap:14px; }
.settings-card.focused { border-color:rgba(232,165,71,.65); }
.form-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:10px; }
.form-grid label { display:grid; gap:6px; color:var(--muted); font-family:var(--mono); font-size:12px; }
.form-grid input, .form-grid select {
  min-width:0; width:100%; border:1px solid var(--line); border-radius:8px;
  background:var(--bg); color:var(--text); padding:10px 11px; outline:none;
}
.form-grid input:focus, .form-grid select:focus { border-color:var(--amber); }
.stat-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:12px; margin-bottom:14px; }
.stat-card { display:grid; gap:6px; }
.stat-card span, .stat-card small { color:var(--muted); font-family:var(--mono); font-size:12px; }
.stat-card strong { font-family:var(--display); font-size:42px; font-weight:500; }
.chart-card { margin-bottom:14px; }
.chart-head { display:flex; justify-content:space-between; gap:16px; align-items:flex-start; margin-bottom:16px; }
.chart-head p { margin:6px 0 0; color:var(--muted); line-height:1.55; }
.chart-head > span { color:var(--amber-soft); font-family:var(--mono); font-size:12px; white-space:nowrap; border:1px solid rgba(232,165,71,.35); border-radius:999px; padding:5px 8px; }
.bar-chart { display:grid; grid-template-columns:repeat(30,minmax(22px,1fr)); gap:7px; align-items:end; overflow-x:auto; padding:6px 0 2px; }
.bar-item { min-width:22px; display:grid; grid-template-rows:18px 104px auto; gap:5px; align-items:end; justify-items:center; }
.bar-item .bar { width:100%; max-width:18px; min-height:4px; background:linear-gradient(180deg,var(--amber),rgba(232,165,71,.55)); }
.bar-value { color:var(--text-dim); font-family:var(--mono); font-size:10px; align-self:start; }
.bar-label { color:var(--muted); font-family:var(--mono); font-size:10px; writing-mode:vertical-rl; max-height:48px; }
.calendar { display:grid; grid-template-columns:repeat(30,minmax(34px,1fr)); gap:6px; margin-top:14px; overflow-x:auto; }
.calendar span { min-height:48px; border:1px solid var(--line-soft); border-radius:6px; display:grid; place-items:center; color:var(--muted); font-family:var(--mono); font-size:10px; background:var(--bg-2); padding:5px 3px; }
.calendar span b { color:var(--text-dim); font-weight:500; }
.calendar span small { color:var(--muted); font-size:9px; }
.calendar span.done { background:rgba(149,193,135,.18); border-color:rgba(149,193,135,.42); color:var(--sage); }
.review-shell { min-height:calc(100vh - 68px); display:block; padding-bottom:30px; }
.review-head { width:min(900px,calc(100% - 32px)); margin:0 auto; padding:18px 0; display:flex; justify-content:space-between; align-items:center; gap:12px; }
.review-tools { display:flex; align-items:center; justify-content:flex-end; gap:9px; flex-wrap:wrap; min-width:0; }
.audio-toggle, .volume-control {
  min-height:34px; border:1px solid var(--line); border-radius:8px; background:var(--surface);
  color:var(--text-dim); padding:6px 9px; display:inline-flex; align-items:center; gap:8px;
  font-family:var(--mono); font-size:12px; white-space:nowrap;
}
.audio-toggle input { accent-color:var(--amber); }
.volume-control input { width:110px; accent-color:var(--amber); }
.volume-control b { min-width:24px; color:var(--amber-soft); font-weight:500; text-align:right; }
.card-actions {
  width:min(900px,calc(100% - 32px)); margin:0 auto 10px; display:flex; justify-content:flex-end; gap:8px; flex-wrap:wrap;
  align-items:center; min-height:36px;
}
.card-actions .ghost { padding:7px 10px; min-height:34px; }
.card-actions .on { color:#15110d; background:var(--amber); border-color:var(--amber); }
.study-card {
  width:min(900px,calc(100% - 32px)); min-height:min(58vh,620px); margin:0 auto 18px;
  display:grid; place-items:center; text-align:center; padding:28px;
  border:1px solid var(--line); border-radius:8px; background:linear-gradient(180deg,var(--surface),var(--bg-2)); box-shadow:var(--shadow);
}
.study-card .content { width:100%; max-width:760px; font-size:clamp(22px,3vw,34px); line-height:1.55; overflow-wrap:anywhere; }
.study-card.back .content { font-size:clamp(18px,2.4vw,26px); text-align:left; }
.vocab-front { display:grid; gap:12px; justify-items:center; }
.vocab-rank { color:var(--muted); font-family:var(--mono); font-size:13px; }
.vocab-word { font-family:var(--display); font-size:clamp(54px,10vw,112px); line-height:.95; color:var(--text); }
.vocab-lemma { color:var(--text-dim); font-size:clamp(20px,3vw,32px); }
.vocab-audio { margin-top:4px; }
.vocab-back { display:grid; gap:18px; width:100%; }
.vocab-answer {
  display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; border-bottom:1px solid var(--line);
  padding-bottom:16px;
}
.vocab-pos {
  border:1px solid rgba(232,165,71,.38); border-radius:999px; color:var(--amber-soft);
  background:rgba(232,165,71,.08); padding:5px 9px; font-family:var(--mono); font-size:13px;
}
.vocab-meaning { font-family:var(--display); font-size:clamp(28px,4vw,46px); line-height:1.15; color:var(--text); }
.vocab-example {
  border:1px solid var(--line); border-radius:8px; background:rgba(255,255,255,.025);
  padding:16px; display:grid; gap:10px;
}
.vocab-label { color:var(--muted); font-family:var(--mono); font-size:12px; text-transform:uppercase; letter-spacing:.08em; }
.vocab-example p { margin:0; font-size:clamp(20px,2.7vw,30px); line-height:1.45; color:var(--text); }
.vocab-translation { color:var(--text-dim) !important; font-size:clamp(16px,2vw,21px) !important; }
.vocab-note { color:var(--text-dim); line-height:1.65; font-size:16px; }
.content img { max-width:100%; height:auto; border-radius:8px; margin:12px auto; }
.content audio[data-media-name] { display:none; }
.audio-chip {
  width:28px; height:28px; display:inline-grid; place-items:center; vertical-align:middle;
  border:1px solid rgba(232,165,71,.45); border-radius:999px; background:rgba(232,165,71,.10);
  color:var(--amber-soft); padding:0; margin:2px 5px; font-size:12px; line-height:1;
}
.audio-chip:hover { background:rgba(232,165,71,.2); color:var(--text); }
.ratings { width:min(900px,calc(100% - 32px)); margin:0 auto 28px; display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
.rate { border:1px solid var(--line); border-radius:8px; background:var(--surface); color:var(--text); padding:13px 10px; display:grid; gap:3px; }
.rate span { color:var(--muted); font-family:var(--mono); font-size:11px; }
.rate.again { border-color:rgba(217,119,87,.45); }
.rate.good, .rate.easy { border-color:rgba(149,193,135,.38); }
.empty { display:grid; place-items:center; min-height:45vh; text-align:center; }
.toast { position:fixed; left:50%; bottom:24px; transform:translateX(-50%); z-index:20; border:1px solid var(--line); border-radius:999px; background:var(--surface); color:var(--text); padding:11px 16px; box-shadow:var(--shadow); }
@media (max-width:720px) {
  .topbar-inner, .page, .review-head, .study-card, .ratings { width:calc(100% - 22px); }
  .topbar-inner { flex-wrap:wrap; padding:10px 0; }
  .top-nav { order:3; width:100%; justify-content:space-between; }
  .top-nav .ghost { flex:1; }
  .page-head { align-items:stretch; flex-direction:column; }
  .task-strip { grid-template-columns:1fr; }
  .chart-head { flex-direction:column; }
  .ratings { grid-template-columns:repeat(2,1fr); }
  .review-head { align-items:flex-start; }
  .review-tools { justify-content:flex-start; }
  .volume-control { width:100%; }
  .volume-control input { flex:1; width:auto; }
  .study-card { min-height:54vh; padding:18px; }
}
