/* Line by Line · 看剧学英语 · Geometric Bold（几何大胆风）
   黑白为底 + 红/蓝/黄三原色块；直角粗边框；无阴影无渐变；快切动效 */
:root{
  --bg:#ffffff; --card:#ffffff; --ink:#0a0a0a; --sub:#525252;
  --line:#0a0a0a; --thin:#0a0a0a;
  --blue:#2563eb; --red:#ef4444; --yellow:#facc15;
  --selbg:#fef08a;
  --accbg:#0a0a0a; --accink:#ffffff;
}
@media (prefers-color-scheme: dark){
  :root{
    --bg:#0a0a0a; --card:#0a0a0a; --ink:#fafafa; --sub:#d4d4d4;
    --line:#fafafa; --thin:#fafafa;
    --selbg:#713f12;
    --accbg:#fafafa; --accink:#0a0a0a;
  }
}
*{ box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
html{ -webkit-text-size-adjust:100%; }
body{
  background:var(--bg); color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Segoe UI","Microsoft YaHei",sans-serif;
  font-size:17px; line-height:1.6; font-weight:500;
  padding:0 28px calc(84px + env(safe-area-inset-bottom));
}
a{ color:inherit; text-decoration:none; }
button{ font:inherit; color:inherit; background:none; border:none; cursor:pointer; font-weight:700; }
.loading{ text-align:center; color:var(--sub); padding:80px 0; }

/* ---------- 通用按钮/标签 ---------- */
.btn{
  display:inline-block; text-align:center; padding:12px 22px;
  border:3px solid var(--line); background:var(--card); color:var(--ink);
  font-weight:800; text-transform:uppercase; letter-spacing:.12em; font-size:.85rem;
  transition:transform .1s linear, background-color .15s linear, color .15s linear;
}
.btn:hover{ transform:scale(1.04); }
.btn:active{ transform:scale(.95); }
.btn.primary{ background:var(--accbg); color:var(--accink); }
.btn.warn{ color:var(--red); border-color:var(--red); }

/* ---------- 顶部 ---------- */
.hero{ position:relative; text-align:center; padding:72px 0 28px; }
.hero h1{
  margin:0; font-weight:900; text-transform:uppercase; letter-spacing:-.02em;
  font-size:clamp(3rem,9vw,7rem); line-height:.95;
}
.hero h1 .dot{ color:var(--red); }
.hero p{ margin:14px 0 0; font-weight:700; letter-spacing:.35em; text-transform:uppercase; font-size:.8rem; color:var(--sub); }
.hero .sh{ position:absolute; display:block; }
.hero .sh-circle{ width:56px; height:56px; border-radius:9999px; background:var(--red);
  left:8%; top:34px; transform:rotate(0deg); }
.hero .sh-square{ width:44px; height:44px; background:var(--yellow); right:10%; top:56px;
  transform:rotate(14deg); }
.hero .sh-tri{ left:16%; bottom:6px; width:0; height:0;
  border-left:26px solid transparent; border-right:26px solid transparent;
  border-bottom:44px solid var(--blue); transform:rotate(-12deg); }
@media (max-width:720px){ .hero .sh{ display:none; } }

.epbar{ display:flex; align-items:center; gap:12px; padding:18px 0 10px; position:sticky; top:0;
  background:var(--bg); z-index:5; }
.epbar .back{ font-size:1.5rem; font-weight:900; line-height:1; padding:2px 12px 2px 0; }
.epbar .back:hover{ color:var(--red); }
.epbar .eptitle{ font-weight:900; font-size:1.25rem; text-transform:uppercase; letter-spacing:-.01em; }

/* ---------- 封面首页 ---------- */
.covers{ display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:28px; padding:28px 0 40px; }
.cover{ background:var(--card); border:4px solid var(--line); display:block;
  transition:transform .1s linear; }
.cover:hover{ transform:scale(1.03) rotate(-.5deg); }
.cover:active{ transform:scale(.96); }
.cover img, .coverfb{ width:100%; aspect-ratio:2/3; object-fit:cover; display:block; border-bottom:4px solid var(--line); }
.coverfb{ display:flex; align-items:center; justify-content:center; text-align:center;
  font-weight:900; text-transform:uppercase; font-size:1.5rem; color:#fff; padding:12px;
  background:#0a0a0a; letter-spacing:-.02em; }
.cmeta{ padding:14px 16px 16px; }
.cmeta b{ display:block; font-weight:900; font-size:1.2rem; }
.cmeta span{ color:var(--sub); font-size:.82rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; }

/* ---------- 剧/季页 ---------- */
.showhead{ display:flex; gap:24px; padding:20px 0; align-items:flex-end; }
.showhead img, .showhead .coverfb{ width:130px; border:4px solid var(--line); }
.showhead .coverfb{ aspect-ratio:2/3; }
.showhead h2{ margin:0 0 6px; font-weight:900; text-transform:uppercase; font-size:2rem; letter-spacing:-.02em; }
.showhead p{ margin:0; color:var(--sub); font-weight:700; }
.seasons{ display:flex; flex-direction:column; gap:16px; padding:8px 0 24px; }
.season{ display:flex; justify-content:space-between; align-items:center;
  border:4px solid var(--line); background:var(--card); padding:20px 22px;
  transition:transform .1s linear; }
.season:hover{ transform:scale(1.02); }
.season:active{ transform:scale(.97); }
.season b{ font-weight:900; font-size:1.15rem; text-transform:uppercase; }
.season span{ color:var(--sub); font-weight:700; }
.epgrid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:18px; padding:12px 0 44px; }
.epcell{ position:relative; border:3px solid var(--line); background:var(--card);
  padding:14px 14px 12px; min-height:128px; display:flex; flex-direction:column; justify-content:space-between;
  gap:10px; transition:transform .1s linear; }
.epcell:hover{ transform:scale(1.05); }
.epcell:hover .no{ color:var(--red); }
.epcell:active{ transform:scale(.95); }
.epcell .no{ font-weight:900; font-size:2.3rem; line-height:1; transition:color .12s linear; }
.epcell .t{ font-weight:700; font-size:.8rem; line-height:1.4; color:var(--sub);
  display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.epcell .badge{ position:absolute; top:-3px; right:-3px; background:var(--yellow); color:#0a0a0a;
  font-size:.68rem; font-weight:800; padding:3px 8px; border-left:3px solid var(--line); border-bottom:3px solid var(--line); }

/* ---------- 单集页 ---------- */
.tabs{ display:flex; gap:12px; padding:8px 0 12px; position:sticky; top:0; background:var(--bg); z-index:4; }
.tabs button{ flex:1; padding:13px 0; border:4px solid var(--line); background:var(--card);
  font-weight:900; text-transform:uppercase; letter-spacing:.15em; font-size:.95rem;
  transition:transform .1s linear; }
.tabs button:hover{ transform:scale(1.02); }
.tabs button.on{ background:var(--accbg); color:var(--accink); }
#toolbar{ display:flex; gap:12px; align-items:center; padding-bottom:14px; position:sticky; top:66px;
  background:var(--bg); z-index:4; flex-wrap:wrap; }
.seg{ display:flex; border:3px solid var(--line); }
.seg button{ padding:9px 18px; font-weight:800; font-size:.9rem; letter-spacing:.05em;
  border-right:3px solid var(--line); transition:background-color .12s linear, color .12s linear; }
.seg button:last-child{ border-right:none; }
.seg button.on{ background:var(--blue); color:#fff; }
#toolbar .tbtn{ padding:9px 16px; border:3px solid var(--line); font-weight:800; font-size:.85rem;
  letter-spacing:.05em; transition:transform .1s linear, background-color .12s linear; }
#toolbar .tbtn:hover{ transform:scale(1.05); }
#toolbar .tbtn:active{ transform:scale(.94); }
#toolbar .tbtn.on{ background:var(--yellow); color:#0a0a0a; }

/* ---------- 台词列表 ---------- */
#lines{ list-style:none; margin:0; padding:0 0 40px; }
.ln{ position:relative; padding:15px 34px 15px 4px; border-bottom:2px solid var(--thin); }
.ln .en{ font-weight:700; font-size:1.2rem; line-height:1.5; margin-bottom:9px; }
.ln .zh{ color:var(--sub); font-size:1.08rem; line-height:1.65; }
.ln .zh.only{ font-size:1rem; }
.ln.lyric .en, .ln.lyric .zh{ font-style:italic; color:var(--sub); font-size:1rem; }
.ln.meta{ color:var(--sub); font-size:.85rem; font-weight:700; padding-block:6px; letter-spacing:.03em; }
.ln.sel{ background:var(--selbg); }
@media (prefers-color-scheme: dark){ .ln.sel{ color:#fafafa; } .ln.sel .zh{ color:#fde68a; } }
.ln .star{ position:absolute; left:-20px; top:50%; transform:translateY(-50%);
  color:var(--red); font-size:1rem; padding:8px 6px; }
@media (max-width:860px){ .ln .star{ left:-2px; } .ln{ padding-right:8px; } }

/* 遮罩：点击可开可关 */
.mask{ color:transparent !important; user-select:none; cursor:pointer; position:relative; }
.mask::after{ content:"▪ ▪ ▪"; color:var(--sub); font-size:.75em; letter-spacing:3px;
  position:absolute; left:0; top:0; }
.mask .w{ pointer-events:none; }
.revealed{ animation:cutin .12s linear; }
@keyframes cutin{ from{ opacity:0; } to{ opacity:1; } }

/* ---------- 回想 ---------- */
#quizwrap{ padding:12px 0 48px; }
.q-setup{ display:flex; flex-direction:column; gap:18px; align-items:center; padding:48px 0; }
.q-setup .seg button{ padding:12px 22px; }
.q-big{ border:4px solid var(--line); padding:44px 28px; text-align:center; margin:16px 0; }
.q-big .en{ font-weight:900; font-size:1.5rem; margin-top:20px; padding-top:20px; border-top:3px dashed var(--thin); }
.q-big .zh{ font-weight:800; font-size:1.45rem; line-height:1.7; }
.q-big .why{ display:inline-block; margin-top:18px; background:var(--yellow); color:#0a0a0a;
  font-weight:800; font-size:.85rem; padding:4px 12px; }
.q-prog{ text-align:center; color:var(--sub); font-weight:800; font-size:.85rem; letter-spacing:.2em;
  text-transform:uppercase; margin-bottom:10px; }
.q-actions{ display:flex; gap:14px; justify-content:center; flex-wrap:wrap; }
.q-actions .btn{ min-width:120px; }
.q-end{ text-align:center; padding:56px 0; }
.q-end .num{ font-weight:900; font-size:4.5rem; line-height:1; }
.q-end p{ color:var(--sub); font-weight:700; }
.empty{ text-align:center; color:var(--sub); padding:64px 0; font-weight:700; }

/* ---------- 生词本 ---------- */
.wgroup{ padding:20px 0; border-bottom:2px solid var(--thin); }
.wgroup h3{ margin:0 0 12px; font-weight:900; text-transform:uppercase; font-size:1rem; letter-spacing:.1em; }
.wchips{ display:flex; flex-wrap:wrap; gap:10px; }
.wchip{ display:inline-flex; align-items:center; gap:8px; border:2px solid var(--line);
  border-radius:9999px; padding:7px 9px 7px 16px; font-weight:700; font-size:.98rem;
  transition:transform .1s linear; cursor:pointer; }
.wchip:hover{ transform:scale(1.05); }
.wchip .del{ color:var(--sub); font-weight:900; padding:0 6px; }
.wchip .del:hover{ color:var(--red); }

/* ---------- 底栏 ---------- */
#tabbar{ position:fixed; bottom:0; left:0; right:0; display:flex; justify-content:center; gap:72px;
  background:var(--bg); border-top:4px solid var(--line);
  padding:10px 0 calc(12px + env(safe-area-inset-bottom)); z-index:20; }
#tabbar a{ display:flex; flex-direction:column; align-items:center; gap:2px;
  font-weight:800; font-size:.75rem; letter-spacing:.1em; width:72px; }
#tabbar a.on{ color:var(--red); }

/* ---------- 弹层 ---------- */
#sheetwrap{ position:fixed; inset:0; z-index:50; }
#sheetback{ position:absolute; inset:0; background:#0a0a0a; opacity:1; }
#sheetback{ background:rgba(10,10,10,.55); }
#sheet{ position:absolute; left:0; right:0; bottom:0; max-width:1152px; margin:0 auto;
  background:var(--card); border-top:4px solid var(--line); border-left:4px solid var(--line); border-right:4px solid var(--line);
  padding:26px 24px calc(28px + env(safe-area-inset-bottom));
  display:flex; flex-direction:column; gap:14px; animation:up .12s linear; }
@keyframes up{ from{ transform:translateY(60px); } to{ transform:none; } }
#sheet .word{ font-weight:900; font-size:2rem; text-align:center; text-transform:uppercase; letter-spacing:-.01em; }
#sheet .whyline{ text-align:center; font-weight:800; color:var(--ink); background:var(--yellow);
  align-self:center; padding:4px 14px; font-size:.9rem; }
#sheet .row{ display:flex; gap:12px; }
#sheet .row .btn{ flex:1; }

h3.sectitle{ margin:22px 0 6px; font-weight:900; text-transform:uppercase;
  font-size:.95rem; letter-spacing:.25em; color:var(--sub); }

@media (prefers-reduced-motion: reduce){
  *{ transition:none !important; animation:none !important; }
}

/* ---------- 右侧有道分栏 + 词交互 ---------- */
.w{ cursor:pointer; }
.w:hover{ background:var(--yellow); color:#0a0a0a; }
.w.active{ background:var(--red); color:#fff; }
.epcols{ display:flex; gap:24px; align-items:flex-start; }
.epmain{ flex:1 1 55%; min-width:0; }
.dict{ display:none; }
@media (min-width:1000px){
  .dict{ display:flex; flex-direction:column; flex:1 1 45%; min-width:380px;
    position:sticky; top:124px; height:calc(100vh - 150px);
    border:4px solid var(--line); background:var(--card); }
}
.dict-bar{ display:flex; align-items:center; justify-content:space-between; gap:10px;
  padding:10px 14px; border-bottom:4px solid var(--line); flex-shrink:0; }
.dict-word{ font-weight:900; font-size:1.5rem; text-transform:uppercase; letter-spacing:-.01em;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dict-btns{ display:flex; gap:8px; flex-shrink:0; }
.btn.mini{ padding:7px 10px; font-size:.72rem; letter-spacing:.06em; }
.dict-body{ position:relative; flex:1 1 0; min-height:0; background:var(--card); }
.dict-frame{ position:absolute; inset:0; width:100%; height:100%; border:none; background:#fff; }
.dict-hint{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  color:var(--sub); font-weight:800; letter-spacing:.2em; z-index:0; }
.dict-frame{ z-index:1; }
#sheet .dict-body{ height:62vh; flex:none; }

@media (prefers-reduced-motion: reduce){
  *{ transition:none !important; animation:none !important; }
}
