/* 41研究室 · 愛文芒果 設計系統 — 共用樣式（淺色預設，.dark 為深色） */
*{box-sizing:border-box}
.theme{
  --bg:#FFF8EC;--surface:#FFFDF7;--surface-2:#FDEFD0;--line:#EBD9B8;--line-strong:#8F7254;
  --text:#2B1D16;--muted:#6A5445;
  --primary:#C8323C;--on-primary:#FFFFFF;--primary-hover:#8E2A4F;
  --brand:#F6A21E;--on-brand:#2B1D16;
  --accent-text:#A5212D;--accent-bg:#FCE3E1;
  --success:#4A6F24;--success-bg:#E6F0D4;
  --sel-bg:#8E2A4F;--sel-fg:#FFF8EC;
  --chart:#C4600F;--track:#F6E8CC;--focus:#8E2A4F;
  --badge-bg:#2B1D16;--badge-fg:#FFF8EC;--counter-bg:#8E2A4F;--counter-fg:#FFF8EC;
  --t1-bg:#6E1F3F;--t1-fg:#FFF8EC;--t2-bg:#E8801F;--t2-fg:#2B1D16;--t3-bg:#FBE3A8;--t3-fg:#2B1D16;
  --t4-bg:#FFFFFF;--t4-fg:#A5212D;--t4-bd:#A5212D;--hatch:rgba(165,33,45,.22);
  --sh-sm:0 1px 2px rgba(94,50,20,.14),0 1px 1px rgba(94,50,20,.06);
  --sh-md:0 4px 14px rgba(94,50,20,.13);
  --sh-lg:0 14px 34px rgba(94,50,20,.18);
  background:var(--bg);color:var(--text);
  font:400 16px/1.7 'Noto Sans TC',system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
}
.theme.dark{
  --bg:#241611;--surface:#2E1E16;--surface-2:#3A271C;--line:#4A3226;--line-strong:#A98B6E;
  --text:#FFF1DC;--muted:#D9C0A3;
  --primary:#F6A21E;--on-primary:#2B1D16;--primary-hover:#FFC25A;
  --brand:#F6A21E;--on-brand:#2B1D16;
  --accent-text:#FF9DA1;--accent-bg:#5A2229;
  --success:#B5DB86;--success-bg:#2F3B1E;
  --sel-bg:#FFC25A;--sel-fg:#2B1D16;
  --chart:#F6A21E;--track:#47301F;--focus:#FFC25A;
  --badge-bg:#FFF1DC;--badge-fg:#2B1D16;--counter-bg:#F6A21E;--counter-fg:#2B1D16;
  --t1-bg:#FFC857;--t1-fg:#2B1D16;--t2-bg:#C77A2A;--t2-fg:#2B1D16;--t3-bg:#5A3A33;--t3-fg:#FFF1DC;
  --t4-bg:#2E1E16;--t4-fg:#FF9DA1;--t4-bd:#FF9DA1;--hatch:rgba(255,157,161,.24);
  --sh-sm:0 1px 2px rgba(0,0,0,.4);
  --sh-md:0 4px 14px rgba(0,0,0,.38);
  --sh-lg:0 14px 34px rgba(0,0,0,.5);
}
.theme :focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.theme h1,.theme h2,.theme h3,.theme p{margin:0}
.fd{font-family:'Iansui','Noto Sans TC',serif;font-weight:400}
.s-d{font-size:48px;line-height:1.2}
.s-1{font-size:32px;line-height:1.3}
.s-2{font-size:24px;line-height:1.4}
.s-3{font-size:20px;line-height:1.45}
.s-sm{font-size:14px;line-height:1.6}
.s-cap{font-size:12px;line-height:1.5}
.muted{color:var(--muted)}
.b{font-weight:700}

/* 按鈕 */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 24px;border:2px solid transparent;border-radius:12px;font:700 16px 'Noto Sans TC',sans-serif;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .15s}
.btn-primary{background:var(--primary);color:var(--on-primary);box-shadow:var(--sh-sm)}
.btn-primary:hover{background:var(--primary-hover)}
.btn-brand{background:var(--brand);color:var(--on-brand);box-shadow:var(--sh-sm)}
.btn-secondary{background:var(--surface);color:var(--text);border-color:var(--line-strong)}
.btn-ghost{background:transparent;color:var(--accent-text)}
.btn:disabled{background:var(--surface-2);color:var(--muted);border-color:var(--line);box-shadow:none;cursor:not-allowed}
.btn-lg{min-height:60px;padding:0 32px;font-size:18px;border-radius:16px}
.btn-block{display:flex;width:100%}
.ib{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:2px solid var(--line-strong);border-radius:12px;background:var(--surface);color:var(--text);cursor:pointer}

/* 輸入框 */
.label{display:block;font-weight:700;font-size:14px;margin:0 0 6px;color:var(--text)}
.input{display:block;width:100%;min-height:48px;padding:10px 16px;border:2px solid var(--line-strong);border-radius:12px;background:var(--surface);color:var(--text);font:400 16px/1.5 'Noto Sans TC',sans-serif}
.input::placeholder{color:var(--muted)}
textarea.input{min-height:160px;resize:vertical;line-height:1.8}
.input.err{border-color:var(--accent-text);background:var(--accent-bg)}
.hint{font-size:14px;color:var(--muted);margin-top:6px}
.hint.err{color:var(--accent-text);font-weight:700}
input[type=range].input{padding:0;min-height:44px;border:0;background:transparent;accent-color:var(--primary)}

/* 卡片 */
.card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:24px;box-shadow:var(--sh-sm)}
.card-tint{background:var(--surface-2);border:1px solid var(--line);border-radius:16px;padding:24px}
.card-lg{border-radius:24px;box-shadow:var(--sh-md)}
.stat .k{font-size:14px;color:var(--muted);font-weight:700}
.stat .v{font-family:'Iansui','Noto Sans TC',serif;font-size:40px;line-height:1.2;margin-top:4px}
.stat .u{font-size:16px;color:var(--muted);margin-left:4px}

/* 分頁標籤與切換 */
.tabs{display:flex;gap:6px;padding:6px;background:var(--surface-2);border-radius:18px;border:1px solid var(--line)}
.tab{flex:1;min-height:52px;padding:0 16px;border:0;border-radius:13px;background:transparent;color:var(--muted);font:700 16px 'Noto Sans TC',sans-serif;cursor:pointer}
.tab[aria-selected="true"]{background:var(--brand);color:var(--on-brand);box-shadow:var(--sh-sm)}
.seg{display:inline-flex;padding:3px;border:2px solid var(--line-strong);border-radius:14px;background:var(--surface)}
.seg button{min-width:60px;min-height:40px;padding:0 14px;border:0;border-radius:10px;background:transparent;color:var(--text);font:700 15px 'Noto Sans TC',sans-serif;cursor:pointer}
.seg button[aria-pressed="true"]{background:var(--sel-bg);color:var(--sel-fg)}

/* 形／音／義／不明 切換 */
.tg{flex:1;min-height:48px;padding:0 8px;border:2px solid var(--line-strong);border-radius:12px;background:var(--surface);color:var(--text);font:700 16px 'Noto Sans TC',sans-serif;cursor:pointer}
.tg[aria-pressed="true"]{background:var(--sel-bg);border-color:var(--sel-bg);color:var(--sel-fg)}
.tg[aria-pressed="true"]::before{content:"✓ "}
.pat{display:inline-flex;align-items:center;min-height:32px;padding:2px 14px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line);font-weight:700;font-size:14px;color:var(--text)}
.pat.none{color:var(--muted);font-weight:400}

/* 字頻 4 級 */
.t1{background-color:var(--t1-bg);color:var(--t1-fg)}
.t2{background-color:var(--t2-bg);color:var(--t2-fg)}
.t3{background-color:var(--t3-bg);color:var(--t3-fg)}
.t4{background-color:var(--t4-bg);background-image:repeating-linear-gradient(135deg,transparent 0 5px,var(--hatch) 5px 7px);color:var(--t4-fg);box-shadow:inset 0 0 0 2px var(--t4-bd)}
.t3.edge{box-shadow:inset 0 0 0 1px var(--line-strong)}
.legend{display:flex;flex-wrap:wrap;gap:8px 20px}
.lg{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:700}
.sw{display:inline-block;width:22px;height:22px;border-radius:6px;flex:none}

/* 長條圖 */
.bar{display:flex;gap:2px;height:30px;border-radius:8px;overflow:hidden;background:var(--track)}
.bar>i{display:block;height:100%}
.bar>i.t4{box-shadow:none;border-left:2px dashed var(--t4-bd)}
.hb{display:grid;grid-template-columns:minmax(0,200px) minmax(0,1fr) 44px;align-items:center;gap:14px}
.hb .tr{height:24px;border-radius:8px;background:var(--track);overflow:hidden}
.hb .fl{display:block;height:100%;border-radius:8px;background:var(--chart)}
.hb .nm{font-size:15px;font-weight:700;line-height:1.4}
.hb .vl{font-family:'Iansui','Noto Sans TC',serif;font-size:22px;text-align:right}

/* 字卡 */
.chars{display:grid;gap:12px}
.ch{position:relative;aspect-ratio:1/1;border-radius:14px;display:flex;align-items:center;justify-content:center;font-family:'Iansui','Noto Sans TC',serif;font-size:40px;line-height:1}
.ch .n{position:absolute;top:-7px;right:-7px;min-width:26px;height:26px;padding:0 7px;border-radius:13px;background:var(--badge-bg);color:var(--badge-fg);font:700 13px/26px 'Noto Sans TC',sans-serif;text-align:center;box-shadow:0 0 0 2px var(--bg)}

/* 原文標色 */
.src{font-size:20px;line-height:2.3;letter-spacing:.04em}
.over{color:var(--accent-text);background:var(--accent-bg);font-weight:700;border-radius:4px;padding:0 2px;text-decoration:underline wavy var(--accent-text);text-underline-offset:7px}

/* 提醒、計數器、提示詞框 */
.notice{display:flex;align-items:center;gap:14px;padding:16px 20px;border-radius:16px;background:var(--accent-bg);border:2px solid var(--accent-text);color:var(--text);font-weight:700;font-size:18px;line-height:1.5}
.notice .ic{flex:none;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:var(--accent-text);color:var(--bg);font:700 22px/1 'Noto Sans TC',sans-serif}
.digits{display:flex;gap:6px}
.digits b{display:inline-flex;align-items:center;justify-content:center;width:44px;height:60px;border-radius:10px;background:var(--counter-bg);color:var(--counter-fg);font:400 38px/1 'Iansui','Noto Sans TC',serif;box-shadow:var(--sh-sm)}
.digits em{align-self:flex-end;font-style:normal;font-weight:700;font-size:24px;color:var(--muted);padding:0 1px 4px}
.code{background:var(--surface-2);border:1px solid var(--line);border-radius:16px;padding:20px;font-size:15px;line-height:1.95;white-space:pre-wrap}
.hr{height:1px;background:var(--line);border:0;margin:0}
.logo{display:inline-flex;align-items:center;gap:10px;text-decoration:none;color:var(--text)}
