:root{--navy:#1F3864;--navy-deep:#16294A;--ink:#1F2A3C;--gold:#C9A227;--gold-soft:#F6EED6;--paper:#F6F7F9;--line:#DCE1E8;--muted:#5F6B7A;--ok:#1E7A4C;--bad:#B03A2E;--teal:#17876D;
--sans:"PingFang TC","Noto Sans TC","Microsoft JhengHei",system-ui,sans-serif;--kai:"Kaiti TC","STKaiti","BiauKai","DFKai-SB",serif}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--sans);color:var(--ink);background:#fff;line-height:1.7;font-size:16px}
a{color:var(--navy)}
[hidden]{display:none!important}
.nav{position:sticky;top:0;background:rgba(255,255,255,.97);border-bottom:1px solid var(--line);z-index:10}
.nav .in,.wrap,footer .in{max-width:1080px;margin:0 auto;padding:0 20px}
.nav .in{display:flex;align-items:center;gap:18px;height:72px}
.nav .logo{display:flex;align-items:center;gap:10px;font-family:var(--kai);font-size:20px;color:var(--navy);text-decoration:none;letter-spacing:.06em;margin-right:auto}
.nav .logo img{height:52px;width:auto}
.nav .logo small{display:block;font-family:var(--sans);font-size:10.5px;letter-spacing:.12em;color:var(--muted);line-height:1}
.nav a.l{color:var(--ink);text-decoration:none;font-size:15px}
.nav .lang{font-size:14px;color:var(--muted);text-decoration:none}
.who{font-size:14px;color:var(--muted)}
.btn{display:inline-block;border:1px solid var(--navy);background:var(--navy);color:#fff;padding:10px 20px;border-radius:4px;text-decoration:none;font-size:15.5px;cursor:pointer;font-family:inherit}
.btn:hover{background:var(--navy-deep)}.btn.ghost{background:transparent;color:var(--navy)}.btn.sm{padding:5px 12px;font-size:14px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.wrap{padding-top:32px;padding-bottom:40px}
h1{font-family:var(--kai);font-size:40px;color:var(--navy);letter-spacing:.06em;line-height:1.25;margin-bottom:14px}
h2{font-family:var(--kai);font-size:28px;color:var(--navy);letter-spacing:.04em;margin-bottom:16px}
h3{font-size:17px;color:var(--navy);margin-bottom:6px}
.hero{display:grid;grid-template-columns:1.1fr 1fr;gap:36px;align-items:start}
.lead{font-size:17px;margin-bottom:14px}
.ticks{list-style:none}.ticks li{padding-left:24px;position:relative;margin:6px 0}
.ticks li:before{content:"";position:absolute;left:4px;top:.55em;width:9px;height:9px;background:var(--gold);border-radius:50%}
.card{background:#fff;border:1px solid var(--line);border-radius:8px;padding:20px;box-shadow:0 1px 3px rgba(20,30,60,.05);margin-bottom:18px}
.tabs{display:flex;gap:6px;margin-bottom:14px}
.tab{flex:1;border:1px solid var(--line);background:var(--paper);padding:8px;border-radius:4px;cursor:pointer;font:inherit;color:var(--muted)}
.tab.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.form label{display:block;font-size:14px;color:var(--muted);margin-bottom:10px}
.form input:not([type=checkbox]),.form select{display:block;width:100%;margin-top:3px;padding:9px 10px;border:1px solid var(--line);border-radius:4px;font:inherit;color:var(--ink);background:#fff}
.form .chk{display:flex;gap:8px;align-items:flex-start;color:var(--ink)}.form .chk input{margin-top:6px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.msg{color:var(--bad);font-size:14px;margin-top:8px;min-height:1em}
.hint{color:var(--muted);font-size:13.5px;margin-top:6px}
.levels{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:22px}
.levels div{background:var(--paper);border-top:3px solid var(--navy);padding:12px 14px;border-radius:4px}
.levels b{display:block;color:var(--navy)}.levels span{font-size:14px;color:var(--muted)}
.sets{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.set .tag{display:inline-block;font-size:12.5px;background:var(--gold-soft);color:#7a5d00;border-radius:3px;padding:1px 8px;margin-right:6px}
.set h3{margin:8px 0 2px;font-size:18px}.set .zh{color:var(--muted);font-size:14px}
.set .info{font-size:13.5px;color:var(--muted);margin:6px 0 10px}
.set .modes{display:flex;flex-direction:column;gap:6px}
.set .modes button{display:flex;justify-content:space-between;align-items:center;border:1px solid var(--line);background:#fff;border-radius:4px;padding:8px 10px;cursor:pointer;font:inherit;font-size:14.5px;color:var(--ink);text-align:left}
.set .modes button:hover{border-color:var(--navy)}
.badge{font-size:12.5px;border-radius:10px;padding:0 8px;background:var(--paper);color:var(--muted);white-space:nowrap}
.badge.done{background:#E3F3EA;color:var(--ok)}
.back{display:inline-block;margin-bottom:12px;text-decoration:none;font-size:14.5px}
.phead{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:8px}
.meta{color:var(--muted);font-size:14px}
.pctl{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.pctl input[type=range]{flex:1;min-width:140px;accent-color:var(--navy)}
.time{font-variant-numeric:tabular-nums;font-size:14px;color:var(--muted);min-width:96px}
.pctl select{padding:6px;border:1px solid var(--line);border-radius:4px;font:inherit;font-size:14px}
.transcript p{padding:4px 8px;border-radius:4px;margin:2px 0;transition:background .2s}
.transcript p b{color:var(--navy);font-weight:600;margin-right:6px}
.transcript p{border-left:3px solid transparent}.transcript p.cur{background:#FBEFC4;border-left-color:var(--gold)}
.vocab{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:4px 16px;font-size:14.5px}
.vocab span{color:var(--muted)}
.questions .q{padding:12px 0;border-bottom:1px dashed var(--line)}.questions .q:last-of-type{border-bottom:0}
.questions .q p{font-weight:600;margin-bottom:6px}
.questions .opt{display:flex;gap:8px;align-items:flex-start;padding:4px 6px;border-radius:4px;cursor:pointer}
.questions .opt:hover{background:var(--paper)}.questions .opt input{margin-top:6px}
.questions input.fill{padding:7px 9px;border:1px solid var(--line);border-radius:4px;font:inherit;width:240px;max-width:100%}
.q.ok{background:linear-gradient(90deg,#E3F3EA 0,transparent 60%)}.q.bad{background:linear-gradient(90deg,#F8E3E0 0,transparent 60%)}
.q .ex{font-size:14.5px;margin-top:6px;padding:8px 10px;background:var(--paper);border-left:3px solid var(--gold);border-radius:3px}
.q .ex b.ok{color:var(--ok)}.q .ex b.bad{color:var(--bad)}
.opt.right{outline:2px solid var(--ok)}.opt.wrong{outline:2px solid var(--bad)}
.result .score{font-size:30px;font-family:var(--kai);color:var(--navy)}
.note{margin-top:30px;padding:18px 20px;background:var(--paper);border-radius:6px;font-size:14px;color:var(--muted)}
.note p+p{margin-top:6px}
footer{background:var(--navy);color:#fff;padding:22px 0;font-size:14px}footer a{color:#fff}
table{border-collapse:collapse;width:100%;font-size:13.5px}th,td{border-bottom:1px solid var(--line);padding:6px 8px;text-align:left;vertical-align:top}
th{background:var(--paper);white-space:nowrap}td{white-space:nowrap}td:nth-child(13){min-width:200px}
.stats{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:16px}.stats div{background:var(--paper);padding:10px 16px;border-radius:6px}.stats b{display:block;font-size:24px;color:var(--navy)}
.tblwrap{overflow-x:auto}
@media (max-width:760px){.hero,.levels,.row2{grid-template-columns:1fr}.nav a.l{display:none}h1{font-size:32px}}
.mt{margin-top:12px}
