*{margin:0;padding:0;box-sizing:border-box}
/* ============ Apple 风格设计系统 ============
   颜色取自 Apple Human Interface Guidelines 的系统色板（systemBlue / systemOrange /
   systemGreen / systemRed）与 apple.com 的中性灰阶，深浅色各自成套。 */
:root{color-scheme:light;--brand:#0071e3;--brand-hover:#0077ed;--accent:#0064d2;--accent-soft:#eaf2fd;--accent-muted:#c2dcfa;--amber:#ff9500;--amber-soft:#fff1de;--on-brand:#fff;--on-amber:#3a2400;--switch-on:#34c759;--page:#f5f5f7;--topbar:rgb(250 250 252/.82);--sidebar:rgb(250 250 252/.76);--surface:#fff;--surface-soft:#f5f5f7;--surface-subtle:#ebebf0;--inner-surface:#f5f5f7;--glass:rgb(255 255 255/.72);--workspace:radial-gradient(circle at 18% 12%,rgb(0 113 227/.07),transparent 46%),radial-gradient(circle at 86% 6%,rgb(191 90 242/.05),transparent 42%),#f5f5f7;--text:#1d1d1f;--text-2:#33333a;--text-3:#4a4a52;--muted:#6e6e73;--faint:#8e8e93;--line:#d8d8de;--line-soft:#e8e8ed;--scroll:rgb(0 0 0/.2);--success-bg:#e4f7ea;--success:#0b7a3d;--warning-bg:#fff1de;--warning:#9a5600;--danger:#d70015;--orange:#b25000;--tint:rgb(0 113 227/.10);--tint-strong:rgb(0 113 227/.20);--scrim:rgb(0 0 0/.34);--shadow:0 12px 34px rgb(0 0 0/.10);--shadow-sm:0 2px 8px rgb(0 0 0/.06);--header-shadow:0 .5px 0 rgb(0 0 0/.09);--skeleton-a:#fff;--skeleton-b:#ebebf0}
:root[data-theme="dark"]{color-scheme:dark;--brand:#0a6cf0;--brand-hover:#2f86ff;--accent:#5aa9ff;--accent-soft:rgb(10 132 255/.18);--accent-muted:rgb(10 132 255/.38);--amber:#ff9f0a;--amber-soft:rgb(255 159 10/.18);--on-brand:#fff;--on-amber:#2d1c00;--switch-on:#30d158;--page:#000;--topbar:rgb(22 22 24/.78);--sidebar:rgb(20 20 22/.74);--surface:#1c1c1e;--surface-soft:#232326;--surface-subtle:#2c2c2f;--inner-surface:#232326;--glass:rgb(28 28 30/.72);--workspace:radial-gradient(circle at 18% 10%,rgb(10 132 255/.12),transparent 48%),radial-gradient(circle at 86% 6%,rgb(191 90 242/.08),transparent 44%),#000;--text:#f5f5f7;--text-2:#e2e2e6;--text-3:#c6c6cb;--muted:#98989d;--faint:#7c7c82;--line:#3a3a3d;--line-soft:#2c2c2f;--scroll:rgb(255 255 255/.22);--success-bg:rgb(48 209 88/.18);--success:#30d158;--warning-bg:rgb(255 159 10/.18);--warning:#ffb340;--danger:#ff453a;--orange:#ff9f0a;--tint:rgb(10 132 255/.16);--tint-strong:rgb(10 132 255/.30);--scrim:rgb(0 0 0/.56);--shadow:0 20px 52px rgb(0 0 0/.6);--shadow-sm:0 2px 10px rgb(0 0 0/.5);--header-shadow:0 .5px 0 rgb(255 255 255/.1);--skeleton-a:#1c1c1e;--skeleton-b:#2c2c2f}
/* 排版 / 圆角 / 间距 / 控件高度刻度：颜色早已成体系，这里补齐其余维度，
   同一行内的控件走同一个 --ctl-* 高度，是消除错位的机制性保证。
   字体优先落到 Apple 平台自带的 SF Pro（-apple-system / BlinkMacSystemFont）与
   PingFang SC；非 Apple 平台退到 Inter（异步加载，取不到也不阻塞渲染）。 */
:root{--font-sans:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Helvetica Neue",Inter,"Segoe UI",Roboto,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;--font-display:-apple-system,BlinkMacSystemFont,"SF Pro Display","Helvetica Neue",Inter,"Segoe UI",Roboto,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;--font-mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace;--fs-2xs:11px;--fs-xs:12px;--fs-sm:13px;--fs-md:15px;--fs-lg:17px;--fs-xl:22px;--r-xs:8px;--r-sm:10px;--r-md:12px;--r-lg:16px;--r-xl:22px;--r-pill:999px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--ctl-sm:30px;--ctl-md:36px;--ctl-lg:44px;--focus-ring:2px solid var(--brand);--ease:cubic-bezier(.32,.72,0,1);--material:saturate(180%) blur(20px)}
html{background:var(--page)}
body{height:100vh;height:100svh;display:flex;flex-direction:column;overflow:hidden;font-family:var(--font-sans);font-synthesis-weight:none;letter-spacing:-.01em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--page);color:var(--text)}
button,input,select,textarea{font:inherit}button{touch-action:manipulation}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--scroll);border-radius:999px}::-webkit-scrollbar-track{background:transparent}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.noscript{max-width:780px;margin:40px auto;padding:24px;line-height:1.8;color:var(--text)}
.hd{height:52px;flex-shrink:0;background:var(--topbar);backdrop-filter:var(--material);-webkit-backdrop-filter:var(--material);color:var(--text);padding:7px 20px;border-bottom:1px solid var(--line-soft);box-shadow:var(--header-shadow);display:flex;align-items:center;justify-content:space-between;gap:16px;z-index:100}
.brand{display:flex;align-items:center;gap:11px;min-width:0}.brand-logo{width:34px;height:34px;display:grid;place-items:center;border-radius:var(--r-sm);background:linear-gradient(180deg,var(--brand-hover),var(--brand));color:var(--on-brand);box-shadow:0 6px 16px var(--tint-strong)}.brand-logo svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.brand-copy{min-width:0}.brand-copy h1{font-family:var(--font-display);font-size:17px;font-weight:600;line-height:1.1;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand-copy p{font-size:var(--fs-2xs);color:var(--muted);margin-top:3px;letter-spacing:-.005em}
/* 词典切换：页头左上角的分段控件，样式与页头其他胶囊控件保持同一套刻度。 */
.dict-switch{flex-shrink:0;display:inline-flex;align-items:center;gap:2px;margin-left:var(--sp-2);padding:2px;border-radius:var(--r-pill);background:var(--surface-subtle)}.dict-tab{height:26px;padding:0 11px;border:0;border-radius:var(--r-pill);background:transparent;color:var(--text-2);font-size:var(--fs-2xs);font-weight:500;line-height:1;white-space:nowrap;cursor:pointer;transition:background .2s var(--ease),color .2s var(--ease),transform .2s var(--ease)}.dict-tab:hover{color:var(--text)}.dict-tab.ac{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.dict-tab:active{transform:scale(.96)}.dict-tab:focus-visible{outline:var(--focus-ring);outline-offset:2px}
.header-actions{display:flex;align-items:center;gap:var(--sp-1)}.hbtn{height:var(--ctl-md);display:inline-flex;align-items:center;gap:5px;border:0;background:transparent;color:var(--text-2);border-radius:var(--r-sm);padding:0 var(--sp-3);font-size:var(--fs-xs);font-weight:500;line-height:1;cursor:pointer;white-space:nowrap;transition:background .2s var(--ease),color .2s var(--ease),transform .2s var(--ease)}.hbtn:hover:not(:disabled){background:var(--surface-subtle);color:var(--text)}.hbtn:active:not(:disabled){transform:scale(.96)}.hbtn:disabled{opacity:.45;cursor:not-allowed}.hbtn-icon{font-size:var(--fs-sm);line-height:1}.hbtn-count{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:var(--r-pill);background:var(--surface-subtle);font-size:var(--fs-2xs);font-variant-numeric:tabular-nums}.favorites-toggle.active,.focus-toggle.active,.favorites-toggle.active:hover:not(:disabled),.focus-toggle.active:hover:not(:disabled){background:var(--amber-soft);color:var(--warning)}.favorites-toggle.active .hbtn-count{background:rgb(255 149 0/.2)}.hbtn:focus-visible{outline:var(--focus-ring);outline-offset:2px}
.search-control{position:relative;display:flex}.search-toggle{width:var(--ctl-md);padding:0;justify-content:center}.search-toggle.active,.search-toggle.active:hover:not(:disabled){background:var(--accent-soft);color:var(--accent)}.search-popover{position:absolute;top:calc(100% + 10px);right:0;z-index:80;width:min(560px,calc(100vw - 40px));padding:8px;border:1px solid var(--line-soft);border-radius:var(--r-lg);background:var(--glass);box-shadow:var(--shadow);backdrop-filter:var(--material);-webkit-backdrop-filter:var(--material);animation:pop .2s var(--ease)}.search-popover[hidden]{display:none}.search-shell{width:100%;height:44px;position:relative}.search-shell input{width:100%;height:100%;border:1px solid transparent;border-radius:var(--r-pill);padding:0 48px;font-size:14px;letter-spacing:-.01em;outline:none;background:var(--surface-subtle);color:var(--text);transition:border-color .2s var(--ease),box-shadow .2s var(--ease),background .2s var(--ease)}.search-shell input::placeholder{color:var(--muted)}.search-shell input:focus{border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 4px var(--tint)}.search-shell input:disabled{cursor:progress;opacity:.65}.search-icon{position:absolute;left:17px;top:50%;transform:translateY(-50%);width:19px;height:19px;color:var(--muted);z-index:1}.search-icon svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}.search-shell kbd{position:absolute;right:16px;top:50%;transform:translateY(-50%);min-width:24px;padding:3px 6px;border:1px solid var(--line-soft);border-radius:var(--r-xs);background:var(--surface);color:var(--muted);font-family:var(--font-sans);font-size:var(--fs-xs);text-align:center}
.lay{flex:1;display:flex;min-height:0;overflow:hidden}.sidebar{width:270px;flex-shrink:0;overflow-y:auto;background:var(--sidebar);backdrop-filter:var(--material);-webkit-backdrop-filter:var(--material);border-right:1px solid var(--line-soft);z-index:10}.sbhead{padding:18px 16px 15px;border-bottom:1px solid var(--line-soft)}.sbhead strong{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;letter-spacing:-.01em}.sbhead strong span{color:var(--accent)}.sbhead p{font-size:11px;color:var(--muted);margin-top:7px}.sb{padding:11px 8px 26px}.sb .ch{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:11px 13px;border:0;background:transparent;font-size:12px;text-align:left;color:var(--text-2);cursor:pointer;border-radius:var(--r-sm);margin-bottom:2px;transition:background .2s var(--ease),color .2s var(--ease);overflow-wrap:anywhere}.sb .ch:hover{background:var(--surface-subtle);color:var(--text)}.sb .ch.ac{background:var(--brand);color:var(--on-brand);font-weight:500;box-shadow:0 4px 12px var(--tint-strong)}.sb .favorite-view{margin-bottom:10px;padding-bottom:13px;border-bottom:1px solid var(--line-soft);border-radius:var(--r-sm);color:var(--warning)}.sb .favorite-view.ac{background:var(--amber);color:var(--on-amber);box-shadow:0 4px 12px rgb(255 149 0/.22)}.chstats{display:flex;align-items:center;gap:5px;flex-shrink:0}.pbdg{background:var(--success-bg);color:var(--success);border-radius:var(--r-pill);padding:2px 7px;font-size:var(--fs-2xs);font-weight:500;font-variant-numeric:tabular-nums}.sb .ch.ac .pbdg{background:rgb(255 255 255/.22);color:var(--on-brand)}.sb .ch .bdg{min-width:32px;background:var(--surface-subtle);color:var(--muted);border:1px solid transparent;border-radius:var(--r-pill);padding:2px 8px;font-size:var(--fs-xs);text-align:center;font-variant-numeric:tabular-nums}.sb .ch.ac .bdg{background:rgb(255 255 255/.18);border-color:rgb(255 255 255/.34);color:var(--on-brand)}.sb .favorite-view.ac .bdg{color:var(--on-amber);border-color:rgb(58 36 0/.22);background:rgb(58 36 0/.12)}
/* 侧栏第一级分类：听说读写四个可折叠分区 */
.sbfam{margin-bottom:2px}.fam-head{width:100%;display:flex;align-items:center;gap:8px;padding:10px 13px;border:0;background:transparent;font-size:13px;font-weight:600;letter-spacing:-.01em;text-align:left;color:var(--text);cursor:pointer;border-radius:var(--r-sm);transition:background .2s var(--ease)}.fam-head:hover{background:var(--surface-subtle)}.fam-caret{display:inline-block;width:10px;font-size:10px;color:var(--faint);transition:transform .2s var(--ease)}.fam-head.open .fam-caret{transform:rotate(90deg)}.fam-head .chstats{margin-left:auto}.fam-groups{font-size:var(--fs-2xs);color:var(--muted);font-variant-numeric:tabular-nums}.fam-head .bdg{min-width:32px;background:var(--surface-subtle);color:var(--muted);border-radius:var(--r-pill);padding:2px 8px;font-size:var(--fs-xs);text-align:center;font-variant-numeric:tabular-nums}.fam-body{margin:2px 0 8px 14px;padding-left:8px;border-left:2px solid var(--line-soft)}
.dictionary-workspace{flex:1;display:flex;min-height:0;overflow:hidden}.chatgpt-coach{width:270px;flex:0 0 270px;align-self:flex-start;margin:10px 0 48px 24px;padding:16px;border:1px solid var(--line-soft);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-sm)}.chatgpt-coach-head{display:flex;align-items:center;gap:9px}.chatgpt-coach-icon{width:28px;height:28px;display:grid;place-items:center;flex-shrink:0;border-radius:var(--r-xs);background:#111;color:#fff;font-size:12px}.chatgpt-coach-head div{min-width:0}.chatgpt-coach-head strong{display:block;color:var(--text);font-size:11px}.chatgpt-coach-head div span{display:block;margin-top:3px;overflow:hidden;color:var(--accent);font-size:var(--fs-2xs);font-weight:600;text-overflow:ellipsis;white-space:nowrap}.chatgpt-coach label{display:block;margin:12px 0 6px;color:var(--muted);font-size:var(--fs-2xs);font-weight:600;letter-spacing:.05em}.chatgpt-coach textarea{width:100%;min-height:132px;max-height:260px;resize:vertical;border:1px solid var(--line-soft);border-radius:var(--r-xs);outline:0;background:var(--inner-surface);color:var(--text-2);padding:10px;font-family:var(--font-sans);font-size:var(--fs-2xs);line-height:1.55}.chatgpt-coach textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--tint)}.chatgpt-voice-open{min-height:36px;display:flex;align-items:center;justify-content:center;margin-top:8px;padding:8px 9px;border:1px solid #111;border-radius:var(--r-xs);background:#111;color:#fff;font-size:var(--fs-2xs);font-weight:500;text-align:center;text-decoration:none;transition:transform .2s var(--ease),background .2s var(--ease),border-color .2s var(--ease)}.chatgpt-voice-open:active{transform:scale(.97)}.chatgpt-voice-open:hover{background:#242424;border-color:#242424}.chatgpt-voice-open.disabled{pointer-events:none;opacity:.42}.chatgpt-voice-status{margin-top:7px;color:var(--faint);font-size:var(--fs-2xs);line-height:1.45}.chatgpt-voice-open:focus-visible{outline:var(--focus-ring);outline-offset:2px}:root[data-theme="dark"] .chatgpt-coach-icon,:root[data-theme="dark"] .chatgpt-voice-open{background:#f5f5f7;border-color:#f5f5f7;color:#1d1d1f}:root[data-theme="dark"] .chatgpt-voice-open:hover{background:#d8d8de;border-color:#d8d8de}
.mn{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden;background:var(--workspace)}.pg{display:flex;align-items:center;gap:var(--sp-2);justify-self:center}.mbtn{display:none;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;border:1px solid var(--line-soft);background:var(--glass);color:var(--accent);font-size:15px;cursor:pointer;backdrop-filter:var(--material);-webkit-backdrop-filter:var(--material)}.jump-control{min-width:112px;height:var(--ctl-sm);padding:0 var(--sp-3);display:flex;align-items:center;justify-content:center;gap:7px;font-size:12px;font-weight:500;color:var(--muted);font-variant-numeric:tabular-nums;background:var(--surface-subtle);border:1px solid transparent;border-radius:var(--r-pill);transition:border-color .2s var(--ease),box-shadow .2s var(--ease),background .2s var(--ease)}.jump-control:focus-within{border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 3px var(--tint)}.jump-input{width:42px;padding:2px 3px;border:0;border-radius:5px;outline:0;background:transparent;color:var(--text);font-size:12px;font-weight:600;text-align:right;font-variant-numeric:tabular-nums;appearance:textfield}.jump-input::-webkit-inner-spin-button,.jump-input::-webkit-outer-spin-button{margin:0;appearance:none}.jump-input:disabled{color:var(--faint)}.jump-divider{color:var(--faint)}.pos-total{min-width:36px;text-align:left;color:var(--text-2)}.navbtn{width:var(--ctl-sm);height:var(--ctl-sm);border-radius:var(--r-sm);border:1px solid var(--line-soft);background:var(--surface);color:var(--text-2);font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s var(--ease),color .2s var(--ease),border-color .2s var(--ease),transform .2s var(--ease);line-height:1}.navbtn:hover:not(:disabled){background:var(--brand);color:var(--on-brand);border-color:var(--brand)}.navbtn:active:not(:disabled){transform:scale(.92)}.navbtn:disabled{opacity:.32;cursor:not-allowed}
.review{position:relative;z-index:30;flex-shrink:0;padding:var(--sp-3) var(--sp-6) var(--sp-2);background:transparent}.review-row{max-width:1000px;margin:0 auto var(--sp-2);padding:var(--sp-2) var(--sp-3);display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:var(--sp-3);background:var(--glass);border:1px solid var(--line-soft);border-radius:var(--r-lg);backdrop-filter:var(--material);-webkit-backdrop-filter:var(--material);box-shadow:var(--shadow-sm)}.review-copy{display:flex;align-items:center;min-width:0;gap:var(--sp-2);min-width:0;font-size:var(--fs-2xs);color:var(--muted)}.review-label{color:var(--accent);font-weight:600;white-space:nowrap}.progress-pct{color:var(--accent);font-weight:600}.review-copy strong{color:var(--text-2);font-size:var(--fs-2xs);font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.review-time{color:var(--faint);white-space:nowrap}.review-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--sp-2);flex-shrink:0}.auto-study{height:var(--ctl-sm);display:inline-flex;align-items:center;border:0;background:var(--amber-soft);color:var(--warning);font-size:var(--fs-2xs);font-weight:500;cursor:pointer;padding:0 var(--sp-3);border-radius:var(--r-pill);white-space:nowrap;line-height:1;transition:background .2s var(--ease),color .2s var(--ease),transform .2s var(--ease)}.auto-study:active:not(:disabled){transform:scale(.95)}.auto-study.on{background:var(--amber);color:var(--on-amber)}.auto-study.paused{background:var(--warning-bg);color:var(--warning)}.auto-study:disabled{opacity:.42;cursor:not-allowed}.settings-anchor{position:relative;display:flex;align-items:center}.settings-toggle{width:var(--ctl-sm);height:var(--ctl-sm);display:grid;place-items:center;border:0;border-radius:var(--r-pill);background:var(--surface-subtle);color:var(--text-3);font-size:var(--fs-md);line-height:1;cursor:pointer;transition:background .2s var(--ease),color .2s var(--ease),transform .2s var(--ease)}.settings-toggle:hover,.settings-toggle.active{background:var(--accent-soft);color:var(--accent)}.settings-toggle:active{transform:scale(.92)}.settings-pop{position:absolute;top:calc(100% + var(--sp-2));right:0;z-index:60;width:242px;padding:var(--sp-3);border:1px solid var(--line-soft);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:var(--sp-2);animation:pop .2s var(--ease)}.settings-pop[hidden]{display:none}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);min-height:var(--ctl-sm)}.settings-label{color:var(--text-3);font-size:var(--fs-xs);font-weight:500}.settings-foot{margin-top:var(--sp-1);padding-top:var(--sp-2);border-top:1px solid var(--line-soft)}.auto-audio{height:var(--ctl-sm);display:inline-flex;align-items:center;border:0;background:var(--accent-soft);color:var(--accent);font-size:var(--fs-2xs);font-weight:500;cursor:pointer;padding:0 var(--sp-3);border-radius:var(--r-pill);white-space:nowrap;line-height:1}.auto-audio.on{background:var(--success-bg);color:var(--success)}.auto-audio.blocked{background:var(--warning-bg);color:var(--warning)}.audio-accent,.study-pace{height:var(--ctl-sm);border:0;background:var(--surface-subtle);color:var(--text-2);border-radius:var(--r-sm);padding:0 var(--sp-2);font-family:var(--font-sans);font-size:var(--fs-xs);outline:none;cursor:pointer}.review-reset{width:100%;height:var(--ctl-md);border:0;background:var(--surface-subtle);color:var(--accent);font-size:var(--fs-xs);font-weight:500;cursor:pointer;border-radius:var(--r-sm);white-space:nowrap;transition:background .2s var(--ease)}.review-reset:hover:not(:disabled){background:var(--accent-soft)}.review-reset:disabled{color:var(--faint);cursor:not-allowed}.settings-toggle:focus-visible,.auto-study:focus-visible,.auto-audio:focus-visible,.review-reset:focus-visible,.audio-accent:focus-visible,.study-pace:focus-visible{outline:var(--focus-ring);outline-offset:1px}.review-track{height:3px;max-width:1000px;margin:0 auto;background:var(--surface-subtle);border-radius:var(--r-pill);overflow:hidden}.review-track span{display:block;width:0;height:100%;background:linear-gradient(90deg,var(--brand),#5e5ce6);border-radius:inherit;transition:width .3s var(--ease)}
.stage{flex:1;overflow-y:auto;padding:10px 24px 48px;transition:opacity .15s}.stage.loading-detail{opacity:.68}.card{max-width:1000px;margin:0 auto;background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--r-xl);box-shadow:var(--shadow);overflow:hidden;animation:fade .28s var(--ease);contain:layout paint style}.chead{position:relative;padding:var(--sp-8) 40px;background:var(--surface);border-bottom:1px solid var(--line-soft)}.word-info{min-width:0;--measure:68ch}.word-meta{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-3);font-size:var(--fs-2xs);line-height:1}.cn{display:inline-flex;align-items:center;height:22px;padding:0 var(--sp-3);border:0;background:var(--surface-subtle);border-radius:var(--r-pill);color:var(--text-3);font-weight:500;letter-spacing:0}.oc{display:inline-flex;align-items:center;gap:var(--sp-1);height:22px;color:var(--muted);font-weight:600}.oc::before{content:"";width:1px;height:11px;margin-right:var(--sp-1);background:var(--line)}.oc b{color:var(--accent);font-weight:600;font-variant-numeric:tabular-nums}.word{font-family:var(--font-display);font-size:clamp(36px,3.6vw,50px);font-weight:600;letter-spacing:-.035em;line-height:1.06;color:var(--text);overflow-wrap:anywhere;word-break:break-word}.pho{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-3);flex-wrap:wrap}.ph{font-family:var(--font-mono);font-size:var(--fs-md);color:var(--muted);overflow-wrap:anywhere;margin-right:var(--sp-1)}.trans{margin-top:var(--sp-4);font-size:var(--fs-lg);line-height:1.65;letter-spacing:-.012em;color:var(--text-2);max-width:var(--measure);overflow-wrap:anywhere}.verb-forms{display:flex;align-items:stretch;gap:8px;margin-top:16px;max-width:680px}.verb-forms>div{min-width:118px;padding:9px 12px;border:1px solid transparent;border-radius:var(--r-sm);background:var(--inner-surface)}.verb-forms dt{font-size:var(--fs-2xs);color:var(--muted);font-weight:500}.verb-forms dd{margin-top:3px;color:var(--accent);font-size:12px;font-weight:600;overflow-wrap:anywhere}.word-relations{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;margin-top:var(--sp-4)}.relation-label{font-size:var(--fs-2xs);font-weight:600;color:var(--muted)}.antonym-btn{height:var(--ctl-sm);display:inline-flex;align-items:center;border:1px solid transparent;background:var(--accent-soft);color:var(--accent);border-radius:var(--r-pill);padding:0 var(--sp-3);font-size:var(--fs-2xs);font-weight:500;cursor:pointer;line-height:1;transition:background .2s var(--ease),color .2s var(--ease),border-color .2s var(--ease),transform .2s var(--ease)}.antonym-btn:active{transform:scale(.95)}.antonym-btn:hover{background:var(--brand);color:var(--on-brand);border-color:var(--brand)}.favorite-btn{position:absolute;top:var(--sp-5);right:var(--sp-5);width:var(--ctl-md);height:var(--ctl-md);display:grid;place-items:center;border:0;border-radius:var(--r-pill);background:var(--surface-subtle);color:var(--muted);font-size:var(--fs-lg);line-height:1;cursor:pointer;transition:background .2s var(--ease),color .2s var(--ease),transform .2s var(--ease)}.favorite-btn:active{transform:scale(.9)}.favorite-btn:hover{border-color:var(--amber);background:var(--amber-soft);color:var(--warning)}.favorite-btn.active{border-color:var(--amber);background:var(--amber-soft);color:var(--amber)}.favorite-btn:focus-visible{outline:3px solid rgb(255 149 0/.34);outline-offset:2px}.ab{height:var(--ctl-sm);display:inline-flex;align-items:center;background:var(--surface-subtle);border:1px solid transparent;color:var(--text-2);border-radius:var(--r-pill);padding:0 var(--sp-3);font-size:var(--fs-2xs);cursor:pointer;transition:background .2s var(--ease),color .2s var(--ease),border-color .2s var(--ease),transform .2s var(--ease);font-weight:500;white-space:nowrap;line-height:1}.ab:hover{background:var(--accent-soft);color:var(--accent)}.ab:active{transform:scale(.94)}.ab:focus-visible{outline:var(--focus-ring);outline-offset:1px}
.word-forms{display:flex;align-items:stretch;gap:var(--sp-2);margin-top:var(--sp-4);max-width:var(--measure);flex-wrap:wrap}.word-forms>div{min-width:132px;padding:var(--sp-2) var(--sp-3);border:1px solid transparent;border-radius:var(--r-sm);background:var(--inner-surface)}.word-forms dt{font-size:var(--fs-2xs);color:var(--muted);font-weight:500;line-height:1.3}.word-forms dd{margin-top:var(--sp-1);color:var(--accent);font-size:var(--fs-sm);font-weight:600;overflow-wrap:anywhere;line-height:1.3}.form-pronounce{display:flex;align-items:center;gap:5px;border:0;background:transparent;color:var(--accent);font-size:12px;font-weight:600;cursor:pointer;text-align:left;overflow-wrap:anywhere}.form-pronounce span{font-size:var(--fs-2xs);color:var(--muted)}.form-pronounce:hover{color:var(--warning)}
.pronunciation-variants{display:flex;flex-direction:column;gap:var(--sp-2);width:100%;max-width:var(--measure)}.pronunciation-variant{display:grid;grid-template-columns:minmax(132px,auto) minmax(190px,1fr) auto;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border:1px solid transparent;border-radius:var(--r-sm);background:var(--inner-surface)}.pronunciation-label{font-family:var(--font-sans);color:var(--text-2);font-size:var(--fs-xs);font-weight:600}.variant-phonetic{display:flex;align-items:center;gap:11px;color:var(--muted);font-family:var(--font-mono);font-size:11px;white-space:nowrap}.variant-audio{display:flex;gap:5px}.variant-audio .ab{padding:0 var(--sp-2)}
.cbody{padding:34px 40px 42px}.sec{padding:21px 0;border-bottom:1px solid var(--line-soft);content-visibility:auto;contain-intrinsic-size:auto 96px}.sec:first-child{padding-top:0}.sec:last-child{padding-bottom:0;border-bottom:0}.sec{--sec-indent:34px}.sname{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-xs);font-weight:600;color:var(--text-2);letter-spacing:0;margin-bottom:var(--sp-3)}.sname::before{content:"";width:var(--sp-1);height:14px;border-radius:var(--r-pill);background:var(--accent);flex-shrink:0;margin-left:var(--sp-2)}.sex{font-size:var(--fs-md);line-height:1.85;color:var(--text-2);overflow-wrap:anywhere;padding-left:var(--sec-indent)}.secn{font-size:var(--fs-sm);color:var(--muted);margin-top:var(--sp-2);line-height:1.75;overflow-wrap:anywhere;padding-left:var(--sec-indent)}.sr{display:flex;gap:var(--sp-2);flex-wrap:wrap;margin:0 0 var(--sp-3) var(--sec-indent)}.stats{display:inline-block;background:var(--accent-soft);color:var(--accent);border-radius:var(--r-pill);padding:5px 11px;font-size:var(--fs-xs);font-weight:500}.stats b{color:var(--orange);font-size:11px}.dr{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-left:var(--sec-indent)}.dt{font-size:var(--fs-xs);padding:4px 10px;background:var(--surface-subtle);color:var(--text-3);border:1px solid transparent;border-radius:var(--r-pill)}.hr{display:flex;align-items:center;gap:3px;margin:var(--sp-2) 0 var(--sp-2) var(--sec-indent)}.hname{width:72px;font-size:var(--fs-2xs);color:var(--faint);flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hdot{width:12px;height:12px;border-radius:3px;flex-shrink:0}.hdot.hit{background:var(--brand)}.hdot.miss{background:var(--surface-subtle)}.zi{font-size:13px;color:var(--text-3);padding:12px 14px;border-left:3px solid var(--amber);background:var(--inner-surface);border-radius:0 var(--r-sm) var(--r-sm) 0;margin:var(--sp-2) 0 var(--sp-2) var(--sec-indent);line-height:1.75;overflow-wrap:anywhere}.zi mark{background:var(--amber-soft);color:var(--orange);font-weight:600;padding:0 2px;border-radius:3px}.zsrc{font-size:var(--fs-2xs);color:var(--faint);margin-top:5px}.emp,.error{text-align:center;padding:80px 20px;color:var(--faint);font-size:13px}.error{color:var(--danger)}.snav{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);margin:0 0 var(--sp-3) var(--sec-indent)}.sbtn{border:1px solid transparent;background:var(--surface-subtle);color:var(--accent);border-radius:var(--r-pill);padding:6px 12px;font-size:var(--fs-2xs);cursor:pointer;transition:background .2s var(--ease),color .2s var(--ease),border-color .2s var(--ease);font-weight:500}.sbtn:hover:not(:disabled){background:var(--brand);color:var(--on-brand);border-color:var(--brand)}.sbtn:disabled{opacity:.35;cursor:not-allowed}.spos{font-size:var(--fs-2xs);color:var(--muted)}
.youglish-section>.sname::before{content:"▶";background:#ffe7e7;color:#c91519}.youglish-intro{margin:0 0 var(--sp-4) var(--sec-indent);color:var(--muted);font-size:12px;line-height:1.7}.youglish-intro strong{color:var(--text-2)}.youglish-shell{min-height:260px;margin-left:var(--sec-indent);overflow:hidden;border:1px solid var(--line-soft);border-radius:var(--r-lg);background:var(--inner-surface)}.youglish-widget-host{width:100%;min-height:260px}.youglish-widget-host iframe{display:block;max-width:100%!important}.youglish-placeholder{min-height:260px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:28px;text-align:center}.youglish-logo{color:#050505;font-size:28px;font-weight:500;letter-spacing:-1.8px}.youglish-logo span{margin-left:2px;padding:1px 4px;border-radius:4px;background:#cf1519;color:#fff;letter-spacing:-1px}.youglish-placeholder>strong{color:var(--text-2);font-size:13px}.youglish-placeholder p{color:var(--muted);font-size:var(--fs-xs)}.youglish-load{margin-top:3px;border:0;border-radius:var(--r-pill);background:#c91519;color:#fff;padding:9px 18px;font-size:var(--fs-xs);font-weight:500;cursor:pointer;transition:background .2s var(--ease),transform .2s var(--ease)}.youglish-load:active{transform:scale(.96)}.youglish-load:hover{background:#a90e12}.youglish-meta{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-3);margin:var(--sp-2) 0 0 var(--sec-indent);color:var(--faint);font-size:var(--fs-2xs);line-height:1.5}.youglish-meta [data-kind="error"],.youglish-meta [data-kind="empty"]{color:var(--warning)}.youglish-links{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}.youglish-links a{color:var(--accent);text-decoration:none;white-space:nowrap}.youglish-links a:hover{text-decoration:underline}.youglish-load:focus-visible,.youglish-links a:focus-visible{outline:3px solid rgb(201 21 25/.2);outline-offset:2px}:root[data-theme="dark"] .youglish-section>.sname::before{background:#3a1517;color:#ff8588}:root[data-theme="dark"] .youglish-logo{color:#fff}
.word-workspace{width:100%;max-width:1000px;margin:0 auto}.youglish-panel{width:100%;margin-top:20px;padding:24px;background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--r-xl);box-shadow:var(--shadow);animation:fade .28s var(--ease)}.youglish-panel .youglish-intro,.youglish-panel .youglish-shell,.youglish-panel .youglish-meta{margin-left:0}
@media(min-width:1680px){.word-workspace{max-width:1520px;display:grid;grid-template-columns:minmax(0,1fr) minmax(400px,480px);align-items:start;gap:24px}.word-workspace>.card{max-width:none;margin:0}.youglish-panel{position:sticky;top:-10px;max-height:calc(100svh - 230px);margin-top:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}}
.loading{position:fixed;inset:0;z-index:9999;background:radial-gradient(circle at 30% 20%,rgb(0 113 227/.16),transparent 42%),radial-gradient(circle at 75% 25%,rgb(255 149 0/.10),transparent 38%),var(--page);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;transition:opacity .35s var(--ease)}.loading.hide{opacity:0;pointer-events:none}.spin{width:38px;height:38px;border:3px solid var(--line-soft);border-top-color:var(--brand);border-radius:50%;animation:spin .9s linear infinite}.ltxt{color:var(--text);font-family:var(--font-display);font-size:21px;font-weight:600;letter-spacing:-.02em}.lstatus{color:var(--muted);font-size:11px}.backdrop{position:fixed;inset:0;z-index:880;background:var(--scrim);opacity:0;pointer-events:none;transition:opacity .25s}.backdrop.on{opacity:1;pointer-events:auto}.ft{height:34px;flex-shrink:0;display:grid;place-items:center;background:var(--topbar);backdrop-filter:var(--material);-webkit-backdrop-filter:var(--material);border-top:1px solid var(--line-soft);font-size:var(--fs-2xs);color:var(--muted);font-weight:400;letter-spacing:-.005em}.skeleton-head{height:230px;background:linear-gradient(110deg,var(--surface) 8%,var(--surface-subtle) 18%,var(--surface) 33%);background-size:200% 100%;animation:shimmer 1.5s linear infinite}.skeleton-body{height:360px;background:linear-gradient(110deg,var(--skeleton-a) 8%,var(--skeleton-b) 18%,var(--skeleton-a) 33%);background-size:200% 100%;animation:shimmer 1.5s linear infinite}
.word-popup-layer{position:fixed;inset:0;z-index:950;display:grid;place-items:center;padding:24px;background:var(--scrim);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);opacity:0;transition:opacity .24s var(--ease)}.word-popup-layer[hidden]{display:none}.word-popup-layer.open{opacity:1}.word-popup-card{width:min(520px,100%);max-height:min(680px,calc(100svh - 48px));overflow:auto;background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--r-xl);box-shadow:0 28px 80px rgb(0 0 0/.34);animation:pop .24s var(--ease)}.word-popup-header{position:sticky;top:0;z-index:1;display:flex;align-items:center;justify-content:space-between;padding:13px 16px;background:var(--surface);border-bottom:1px solid var(--line)}.word-popup-header strong{font-size:12px;color:var(--text-2)}.popup-close{width:30px;height:30px;border:0;border-radius:50%;background:var(--surface-subtle);color:var(--muted);font-size:20px;line-height:1;cursor:pointer;transition:background .2s var(--ease),color .2s var(--ease)}.popup-close:hover{color:var(--accent);background:var(--accent-soft)}.popup-content{padding:24px}.popup-loading{text-align:center;padding:48px 16px;color:var(--muted);font-size:12px}.popup-word{display:flex;flex-direction:column;align-items:flex-start}.popup-category{display:inline-block;padding:3px 8px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:var(--fs-2xs)}.popup-word h2{margin-top:12px;font-family:var(--font-display);font-size:34px;font-weight:600;letter-spacing:-.03em;line-height:1.1;color:var(--text)}.popup-phonetic{margin-top:8px;color:var(--muted);font-family:var(--font-mono);font-size:14px}.popup-translation{margin-top:15px;color:var(--text-2);font-size:15px;line-height:1.7;white-space:pre-line}.popup-example{width:100%;margin-top:20px;padding:14px 16px;border-left:3px solid var(--amber);border-radius:0 var(--r-sm) var(--r-sm) 0;background:var(--inner-surface);color:var(--text-2);font-size:12px;line-height:1.7}.popup-example p+p{margin-top:5px;color:var(--muted)}.popup-audio{display:flex;gap:7px;margin-top:18px}
body,.hd,.sidebar,.mn,.review-row,.card,.chead,.sec,.zi,.ft,.search-shell input{transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s}@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes pop{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{to{background-position-x:-200%}}
.sb .ch:focus-visible,.fam-head:focus-visible,.navbtn:focus-visible,.mbtn:focus-visible,.sbtn:focus-visible,.ab:focus-visible,.favorite-btn:focus-visible,.antonym-btn:focus-visible,.form-pronounce:focus-visible,.popup-close:focus-visible,.review-reset:focus-visible,.auto-audio:focus-visible,.auto-study:focus-visible,.audio-accent:focus-visible{outline:var(--focus-ring);outline-offset:2px}
@media(max-width:900px){.sidebar{position:fixed;left:0;top:0;bottom:0;z-index:900;width:270px;transform:translateX(-100%);transition:transform .25s ease;box-shadow:0 0 36px rgb(0 0 0/.3)}.sidebar.open{transform:none}.mbtn{display:flex}.word{font-size:38px}.chead{padding:30px}.cbody{padding:28px 30px 34px}}
@media(max-width:1199px){.dictionary-workspace{display:block;overflow-y:auto}.dictionary-workspace>.chatgpt-coach{width:auto;margin:10px 24px 14px}.dictionary-workspace>.stage{overflow:visible;padding-top:0}}
@media(max-width:600px){.hbtn{padding:0 var(--sp-2)}.hbtn .control-label{display:none}}
@media(max-width:640px){.hd{padding:7px 12px}.brand-copy p{display:none}.dict-switch{margin-left:var(--sp-1)}.dict-tab{height:24px;padding:0 9px}.brand-logo{width:34px;height:34px}.brand-copy h1{font-size:15px}.header-actions{gap:var(--sp-1)}.search-popover{position:fixed;top:62px;right:12px;left:12px;width:auto}.search-shell{height:46px}.search-shell input{font-size:16px;padding:0 42px}.search-shell kbd{display:none}.jump-control{min-width:94px;height:36px;padding:0 10px;gap:5px;font-size:var(--fs-xs)}.jump-input{width:34px;font-size:var(--fs-xs)}.pos-total{min-width:31px}.navbtn,.mbtn{width:36px;height:36px}.review{padding:0 10px 8px}.review-time{display:none}.stage{padding:8px 10px 28px}.card{border-radius:var(--r-lg)}.chead{padding:var(--sp-6) var(--sp-5) var(--sp-5)}.word{font-size:32px}.trans{font-size:14px}.verb-forms{gap:5px;flex-wrap:wrap}.verb-forms>div{min-width:calc(50% - 3px);flex:1;padding:7px 9px}.verb-forms dd{font-size:11px}.cbody{padding:24px 20px 30px}.sec{padding:18px 0}.sec{--sec-indent:0px}.ft{height:28px}}
@media(max-width:640px){.dictionary-workspace>.chatgpt-coach{margin:8px 10px 12px;padding:13px}.dictionary-workspace>.stage{padding-top:0}.chatgpt-coach textarea{min-height:104px}}
@media(max-width:640px){.word-forms{gap:5px}.word-forms>div{min-width:calc(50% - 3px);flex:1;padding:7px 9px}.word-forms dd,.form-pronounce{font-size:11px}}
@media(max-width:640px){.pronunciation-variant{grid-template-columns:1fr auto;gap:7px}.variant-phonetic{grid-column:1/-1;grid-row:2;flex-wrap:wrap}.variant-audio{grid-column:2;grid-row:1}.variant-audio .ab{padding:0 var(--sp-2)}}
@media(max-width:640px){.word-popup-layer{padding:14px}.word-popup-card{max-height:calc(100svh - 28px);border-radius:var(--r-lg)}.popup-content{padding:20px}.popup-word h2{font-size:29px}}
@media(max-width:640px){.youglish-meta{flex-direction:column}.youglish-links{justify-content:flex-start}.youglish-shell,.youglish-widget-host,.youglish-placeholder{min-height:220px}}
@media(max-width:480px){.brand-copy h1{font-size:14px;white-space:nowrap}}
@media(max-width:400px){.brand-copy{display:none}.brand{gap:6px}.dict-tab{padding:0 8px}.brand-logo{width:32px;height:32px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

.typing-toggle svg{flex-shrink:0}.typing-toggle svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.typing-toggle.active,.typing-toggle.active:hover:not(:disabled){background:var(--brand);color:var(--on-brand)}.typing-toggle:disabled{cursor:progress}.typing-toggle:focus-visible,.typing-exit:focus-visible,.typing-sound:focus-visible,.typing-summary-actions button:focus-visible{outline:var(--focus-ring);outline-offset:3px}
.typing-view[hidden],.typing-summary[hidden],.typing-lesson[hidden],.typing-break-reminder[hidden],.search-control[hidden],.lay[hidden],.ft[hidden]{display:none!important}
.typing-view{flex:1;min-height:0;overflow:auto;background:radial-gradient(circle at 50% -20%,rgb(0 113 227/.14),transparent 45%),radial-gradient(circle at 92% 82%,rgb(191 90 242/.08),transparent 34%),var(--page)}.typing-shell{min-height:100%;display:flex;flex-direction:column}.typing-toolbar{height:68px;flex-shrink:0;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:18px;padding:0 26px;border-bottom:1px solid var(--line-soft);background:var(--topbar);backdrop-filter:var(--material);-webkit-backdrop-filter:var(--material)}.typing-exit,.typing-sound{justify-self:start;border:1px solid transparent;border-radius:var(--r-pill);background:var(--surface-subtle);color:var(--text-2);padding:9px 14px;font-size:var(--fs-xs);font-weight:500;cursor:pointer;transition:background .2s var(--ease),color .2s var(--ease),border-color .2s var(--ease),transform .2s var(--ease)}.typing-exit:active,.typing-sound:active:not(:disabled){transform:scale(.95)}.typing-sound{justify-self:end;color:var(--accent);background:var(--accent-soft)}.typing-exit:hover,.typing-sound:hover:not(:disabled){border-color:var(--accent);color:var(--accent);}.typing-sound:disabled{opacity:.45;cursor:wait}.typing-heading{text-align:center}.typing-heading span{display:block;color:var(--faint);font-size:var(--fs-2xs);font-weight:600;letter-spacing:.16em;text-transform:uppercase}.typing-heading strong{display:block;margin-top:4px;color:var(--text);font-size:13px}.typing-progress{height:5px;flex-shrink:0;background:var(--surface-subtle);overflow:hidden}.typing-progress span{display:block;width:0;height:100%;border-radius:0 var(--r-pill) var(--r-pill) 0;background:linear-gradient(90deg,var(--brand),#5e5ce6);transition:width .3s var(--ease)}
.typing-workspace{width:min(1120px,calc(100% - 40px));min-height:calc(100svh - 123px);margin:0 auto;padding:24px 0 42px;display:flex;flex-direction:column;align-items:center}.typing-stats{width:min(620px,100%);display:grid;grid-template-columns:repeat(3,1fr);margin-bottom:24px;border:1px solid var(--line-soft);border-radius:var(--r-lg);background:var(--glass);box-shadow:var(--shadow-sm);backdrop-filter:var(--material);-webkit-backdrop-filter:var(--material);overflow:hidden}.typing-stats div{min-height:66px;display:flex;align-items:baseline;justify-content:center;gap:5px;padding:15px;border-right:1px solid var(--line-soft)}.typing-stats div:last-child{border-right:0}.typing-stats span{align-self:flex-start;color:var(--muted);font-size:var(--fs-2xs);font-weight:600}.typing-stats strong{color:var(--text);font-family:var(--font-display);font-size:23px;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.typing-stats small{color:var(--faint);font-size:var(--fs-2xs);font-weight:600}.typing-lesson{width:100%;display:flex;flex-direction:column;align-items:center}.typing-position{margin-bottom:24px;color:var(--muted);font-size:var(--fs-xs);font-weight:600;font-variant-numeric:tabular-nums}.typing-word{min-height:94px;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;margin:0 auto 12px;padding:0 16px;font-family:var(--font-mono);font-size:clamp(42px,6vw,72px);font-weight:500;line-height:1.25;letter-spacing:.04em;color:var(--text)}.typing-word>span{position:relative;min-width:.62em;text-align:center;border-bottom:4px solid var(--line);transition:color .12s,border-color .12s,transform .12s}.typing-word>span.correct{color:var(--success);border-color:var(--brand);transform:translateY(-2px)}.typing-word>span.incorrect{color:var(--danger);border-color:var(--danger);animation:typing-shake .22s ease}.typing-word>span.current{border-color:var(--brand)}.typing-word>span.current::after{content:"";position:absolute;left:50%;bottom:-5px;width:3px;height:13px;border-radius:var(--r-pill);background:var(--brand);animation:typing-caret .85s step-end infinite}.typing-word .typing-loading-word{min-width:0;border:0;color:var(--faint);font-family:inherit;font-size:18px;letter-spacing:.04em}.typing-translation{min-height:28px;max-width:760px;margin:0 auto 26px;padding:0 16px;text-align:center;color:var(--text-3);font-size:14px;line-height:1.7}.typing-input-label{margin-bottom:8px;color:var(--muted);font-size:var(--fs-2xs);font-weight:600;letter-spacing:.06em}.typing-input{width:min(620px,calc(100% - 24px));height:62px;border:2px solid var(--line-soft);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-sm);padding:0 20px;outline:0;color:var(--text);font-family:var(--font-mono);font-size:24px;font-weight:500;text-align:center;letter-spacing:.05em;caret-color:var(--brand);transition:border-color .2s var(--ease),box-shadow .2s var(--ease),background .2s var(--ease)}.typing-input:focus{border-color:var(--brand);box-shadow:0 0 0 4px var(--tint),var(--shadow-sm)}.typing-input.has-error{border-color:var(--danger);background:color-mix(in srgb,var(--surface) 92%,var(--danger))}.typing-input.complete{border-color:var(--brand);background:var(--success-bg);color:var(--success)}.typing-input:disabled{opacity:.78}.typing-feedback{min-height:22px;margin:10px 0 26px;color:var(--muted);font-size:var(--fs-xs);font-weight:500}.typing-input.has-error+.typing-feedback{color:var(--danger)}
.typing-keyboard{display:flex;flex-direction:column;align-items:center;gap:7px;padding:16px 20px;border:1px solid var(--line-soft);border-radius:var(--r-xl);background:var(--glass);box-shadow:var(--shadow-sm);backdrop-filter:var(--material);-webkit-backdrop-filter:var(--material)}.typing-keyboard>div{display:flex;justify-content:center;gap:7px}.typing-keyboard kbd{width:46px;height:42px;display:grid;place-items:center;border:1px solid var(--line-soft);border-radius:var(--r-xs);background:var(--surface);color:var(--text-3);font:500 11px/1 var(--font-sans);box-shadow:0 1px 2px rgb(0 0 0/.06);transition:transform .16s var(--ease),background .16s var(--ease),color .16s var(--ease),border-color .16s var(--ease)}.typing-keyboard kbd.next{border-color:var(--brand);background:var(--brand);color:var(--on-brand);transform:translateY(2px);box-shadow:0 0 0 4px var(--tint)}.typing-keyboard kbd.wrong{border-color:var(--danger);background:color-mix(in srgb,var(--surface) 84%,var(--danger));color:var(--danger)}.typing-keyboard .space-key{width:260px;height:34px}.typing-keyboard .wide-key{width:70px;height:34px}
.typing-summary{width:min(620px,100%);margin:auto;text-align:center;padding:54px 28px;border:1px solid var(--line-soft);border-radius:var(--r-xl);background:var(--surface);box-shadow:var(--shadow);animation:pop .28s var(--ease)}.typing-summary-mark{width:66px;height:66px;display:grid;place-items:center;margin:0 auto 20px;border-radius:50%;background:var(--switch-on);color:#fff;font-size:30px;font-weight:600;box-shadow:0 10px 24px rgb(52 199 89/.28)}.typing-summary h2{font-family:var(--font-display);font-size:26px;font-weight:600;letter-spacing:-.02em;color:var(--text)}.typing-summary p{margin-top:12px;color:var(--muted);font-size:13px}.typing-summary-actions{display:flex;justify-content:center;gap:10px;margin-top:28px}.typing-summary-actions button{border:0;border-radius:var(--r-pill);background:var(--surface-subtle);color:var(--text-2);padding:11px 20px;font-size:var(--fs-xs);font-weight:500;cursor:pointer;transition:background .2s var(--ease),transform .2s var(--ease)}.typing-summary-actions button:active{transform:scale(.96)}.typing-summary-actions button:first-child{background:var(--brand);color:var(--on-brand)}
.typing-break-reminder{position:fixed;inset:0;z-index:980;display:grid;place-items:center;padding:20px;background:var(--scrim);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}.typing-break-card{width:min(420px,100%);padding:36px 30px;text-align:center;border:1px solid var(--line-soft);border-radius:var(--r-xl);background:var(--surface);box-shadow:0 28px 80px rgb(0 0 0/.34);animation:pop .24s var(--ease)}.typing-break-icon{width:64px;height:64px;display:grid;place-items:center;margin:0 auto 18px;border-radius:50%;background:var(--warning-bg);font-size:30px}.typing-break-card h2{color:var(--text);font-family:var(--font-display);font-size:24px;font-weight:600;letter-spacing:-.02em}.typing-break-card p{margin-top:10px;color:var(--muted);font-size:12px;line-height:1.7}.typing-break-card p:first-of-type{color:var(--amber);font-weight:600}.typing-break-card button{margin-top:24px;padding:11px 26px;border:0;border-radius:var(--r-pill);background:var(--brand);color:var(--on-brand);font-size:var(--fs-xs);font-weight:500;cursor:pointer;transition:background .2s var(--ease),transform .2s var(--ease)}.typing-break-card button:active{transform:scale(.96)}.typing-break-card button:focus-visible{outline:var(--focus-ring);outline-offset:3px}
@keyframes typing-caret{50%{opacity:0}}@keyframes typing-shake{25%{transform:translateX(-3px)}75%{transform:translateX(3px)}}
@media(max-width:720px){.typing-toolbar{height:60px;grid-template-columns:auto 1fr auto;padding:0 12px;gap:8px}.typing-heading strong{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.typing-heading span{display:none}.typing-exit,.typing-sound{padding:7px 9px;font-size:var(--fs-2xs)}.typing-workspace{width:calc(100% - 20px);min-height:calc(100svh - 115px);padding:16px 0 28px}.typing-stats{margin-bottom:18px}.typing-stats div{min-height:57px;padding:11px 6px;gap:3px}.typing-stats strong{font-size:19px}.typing-position{margin-bottom:16px}.typing-word{min-height:75px;margin-bottom:8px;padding:0 5px;font-size:clamp(32px,10vw,48px)}.typing-word>span{border-bottom-width:3px}.typing-translation{margin-bottom:18px;font-size:12px}.typing-input{height:56px;font-size:20px}.typing-feedback{margin-bottom:16px}.typing-keyboard{width:100%;gap:5px;padding:12px 6px}.typing-keyboard>div{gap:4px}.typing-keyboard kbd{width:calc((100vw - 68px)/10);max-width:38px;height:36px;font-size:var(--fs-2xs)}.typing-keyboard .space-key{width:190px;height:30px}.typing-keyboard .wide-key{width:62px;height:30px}.typing-summary{padding:40px 20px}.typing-summary h2{font-size:22px}}
@media(max-width:480px){.hbtn{padding:0 var(--sp-2)}.hbtn .control-label{display:none}.typing-toggle svg{width:16px;height:16px}.typing-view .typing-keyboard{display:none}.typing-feedback{margin-bottom:8px}.typing-word{font-size:clamp(28px,11vw,42px)}.typing-summary-actions{flex-direction:column}.typing-summary-actions button{width:100%}}

.typing-toolbar-actions{justify-self:end;display:flex;align-items:center;gap:8px}.typing-example-option{display:flex;align-items:center;gap:6px;color:var(--text-3);font-size:var(--fs-2xs);font-weight:600;cursor:pointer;white-space:nowrap}.typing-example-option input{position:absolute;opacity:0;pointer-events:none}.typing-switch{position:relative;width:38px;height:23px;border:0;border-radius:var(--r-pill);background:var(--surface-subtle);transition:background .24s var(--ease)}.typing-switch::after{content:"";position:absolute;top:2px;left:2px;width:19px;height:19px;border-radius:50%;background:#fff;box-shadow:0 2px 5px rgb(0 0 0/.2);transition:transform .24s var(--ease)}.typing-example-option input:checked+.typing-switch{background:var(--switch-on)}.typing-example-option input:checked+.typing-switch::after{transform:translateX(15px)}.typing-example-option input:focus-visible+.typing-switch{outline:var(--focus-ring);outline-offset:2px}
.typing-word.example-mode{max-width:1000px;min-height:120px;font-size:clamp(22px,3.3vw,38px);line-height:1.55;letter-spacing:.025em}.typing-word.example-mode>span{min-width:.5em;border-bottom-width:2px}.typing-input{resize:none;padding:13px 20px;line-height:1.4;transition:border-color .15s,box-shadow .15s,background .15s,height .18s}.typing-input.example-mode{width:min(820px,calc(100% - 24px));height:100px;padding:14px 18px;font-size:17px;line-height:1.6;text-align:left;letter-spacing:.015em}
@media(max-width:720px){.typing-example-option>span:last-child{display:none}.typing-toolbar-actions{gap:5px}.typing-word.example-mode{min-height:105px;font-size:clamp(18px,5.6vw,28px)}.typing-input.example-mode{height:90px;font-size:15px}}

/* ============ 移动端优化：连续刷词的底部操作条与触控友好排版 ============ */
html{-webkit-text-size-adjust:100%}
body{-webkit-tap-highlight-color:transparent}
.stage{overscroll-behavior:contain}
.study-dock{display:none;flex-shrink:0;align-items:center;gap:8px;padding:8px 12px calc(8px + env(safe-area-inset-bottom));border-top:1px solid var(--line-soft);background:var(--topbar);backdrop-filter:var(--material);-webkit-backdrop-filter:var(--material)}
.dock-btn{flex:0 0 auto;min-width:50px;height:46px;display:flex;align-items:center;justify-content:center;border:0;border-radius:var(--r-md);background:var(--surface-subtle);color:var(--text-2);font-size:20px;line-height:1;cursor:pointer;transition:background .2s var(--ease),color .2s var(--ease),transform .2s var(--ease)}
.dock-btn:disabled{opacity:.34}
.dock-btn:active:not(:disabled){background:var(--accent-soft);color:var(--accent);transform:scale(.94)}
.dock-play{flex:1 1 auto;min-width:0;height:46px;padding:0 12px;border:0;border-radius:var(--r-md);background:var(--brand);color:var(--on-brand);font-size:15px;font-weight:500;letter-spacing:-.01em;white-space:nowrap;cursor:pointer;box-shadow:0 6px 16px var(--tint-strong);transition:background .2s var(--ease),color .2s var(--ease),box-shadow .2s var(--ease),transform .2s var(--ease)}.dock-play:active:not(:disabled){transform:scale(.97)}
.dock-play.on{background:var(--amber);color:var(--on-amber);box-shadow:0 6px 16px rgb(255 149 0/.26)}
.dock-play.paused{background:var(--warning-bg);color:var(--warning);box-shadow:none}
.dock-play:disabled{opacity:.42;box-shadow:none;cursor:not-allowed}
.dock-position{flex:0 0 auto;min-width:62px;color:var(--muted);font-size:11px;font-weight:600;text-align:right;font-variant-numeric:tabular-nums}
.dock-btn:focus-visible,.dock-play:focus-visible{outline:var(--focus-ring);outline-offset:2px}
.study-pace{border:0;background:var(--surface-subtle);color:var(--text-3);border-radius:var(--r-xs);padding:3px 6px;font-size:var(--fs-2xs);outline:none;cursor:pointer}

@media(max-width:900px){
  .ft{display:none}
  .review-row .navbtn{display:none}
  .study-dock{display:flex}
  .review-actions .auto-study{display:none}
  .dictionary-workspace{display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain}
  .dictionary-workspace>.stage{order:1;flex:0 0 auto;overflow:visible;padding-bottom:14px}
  .dictionary-workspace>.chatgpt-coach{order:2;flex:0 0 auto;margin-bottom:26px}
}

@media(max-width:640px){
  .hd{height:auto;min-height:54px;padding:8px 12px;padding-top:calc(8px + env(safe-area-inset-top))}
  .brand-copy h1{font-size:16px}
  .brand-copy p{font-size:var(--fs-2xs)}
  .header-actions{gap:6px}
  .hbtn{height:var(--ctl-md);padding:0 var(--sp-2);font-size:var(--fs-2xs)}
  .hbtn-count{min-width:18px;height:18px;padding:0 5px;font-size:var(--fs-2xs)}
  /* iOS 会对小于 16px 的输入框自动放大页面，所有可聚焦输入统一到 16px。 */
  .pg{flex:1;gap:10px;justify-content:flex-start}
  .jump-control{min-width:124px;height:36px;padding:0 11px;gap:6px;font-size:12px}
  .jump-input{width:46px;font-size:16px}
  .pos-total{min-width:40px;font-size:12px}
  .mbtn{width:36px;height:36px;font-size:16px}
  .review{padding:0 12px 6px}
  .review-row{grid-template-columns:minmax(0,1fr) auto auto;gap:var(--sp-2);margin-bottom:var(--sp-1);padding:var(--sp-2)}
  .review-copy{min-width:0;gap:var(--sp-2);font-size:var(--fs-xs)}
  .review-copy strong{font-size:var(--fs-xs)}
  .progress-detail{display:none}
  .review-time{display:none}
  .review-actions{justify-content:flex-end;gap:var(--sp-2)}
  .settings-pop{width:min(268px,calc(100vw - var(--sp-6)))}
  .settings-toggle,.auto-study,.auto-audio,.audio-accent,.study-pace,.review-reset{height:var(--ctl-md)}
  .settings-toggle{width:var(--ctl-md)}
  .stage{padding:6px 10px 10px}
  .chead{padding:var(--sp-5) var(--sp-4)}
  .trans{font-size:var(--fs-md)}
  .cbody{padding:20px 16px 24px}
  .favorite-btn{top:var(--sp-3);right:var(--sp-3)}
  .ab{height:var(--ctl-md);padding:0 var(--sp-3);font-size:var(--fs-2xs)}
  .antonym-btn{min-height:32px;font-size:12px}
  .sbtn{min-height:32px;padding:7px 11px;font-size:11px}
  .sb .ch{padding:13px 13px;font-size:13px}
  .dictionary-workspace>.chatgpt-coach{padding:14px}
  .chatgpt-coach textarea{min-height:96px;font-size:16px;padding:10px}
  .chatgpt-coach label,.chatgpt-coach-head strong{font-size:11px}
  .chatgpt-coach-head div span{font-size:var(--fs-xs)}
  .chatgpt-voice-open{min-height:42px;font-size:12px}
  .chatgpt-voice-status{font-size:var(--fs-xs)}
}

@media(max-width:640px){
  .typing-input,.typing-input.example-mode{font-size:18px}
  .typing-example-option,.typing-exit,.typing-sound{min-height:36px}
  .typing-exit,.typing-sound{padding:8px 11px;font-size:11px}
}

@media(max-width:390px){
  .brand-copy p{display:none}
  .hbtn{padding:0 var(--sp-1)}
  .dock-position{display:none}
  .dock-play{font-size:14px}
}
.study-hint{max-width:1000px;margin:0 auto var(--sp-2);padding:7px 12px;border:0;border-radius:var(--r-sm);background:var(--warning-bg);color:var(--warning);font-size:var(--fs-xs);line-height:1.5}
@media(max-width:640px){.study-hint{margin-bottom:5px;padding:7px 9px;font-size:11px}}

/* ============ 纯净模式：只留单词本身与例句 ============ */
:root[data-focus="on"] .chatgpt-coach,
:root[data-focus="on"] .youglish-section{display:none}
:root[data-focus="on"] .dictionary-workspace{display:block;overflow-y:auto}
:root[data-focus="on"] .word-workspace{max-width:760px;display:block}
:root[data-focus="on"] .card{max-width:760px;margin:0 auto}
:root[data-focus="on"] .chead{background:var(--surface)}
:root[data-focus="on"] .cbody{padding:var(--sp-6) 40px var(--sp-8)}
:root[data-focus="on"] .sex{font-size:var(--fs-lg);line-height:1.9}
:root[data-focus="on"] .secn{font-size:var(--fs-md)}
:root[data-focus="on"] .trans{font-size:var(--fs-lg)}
@media(max-width:640px){
  :root[data-focus="on"] .cbody{padding:var(--sp-5) var(--sp-4) var(--sp-6)}
  :root[data-focus="on"] .sex{font-size:var(--fs-md)}
}

/* Celpip 词条的 CLB 难度带与使用建议标签。分组标签讲「这个词在考试里干什么用」，
   这两个标签补上「难到什么程度」和「该不该主动用」。 */
.lv{display:inline-flex;align-items:center;height:22px;padding:0 var(--sp-3);border-radius:var(--r-pill);background:var(--accent-soft);color:var(--accent);font-weight:600;letter-spacing:0;white-space:nowrap}
.use{display:inline-flex;align-items:center;height:22px;padding:0 var(--sp-3);border-radius:var(--r-pill);background:var(--amber-soft);color:var(--warning);font-weight:600;letter-spacing:0;white-space:nowrap;cursor:help}
/* 语域标签：正式用绿、口语用琥珀提醒「别写进正式邮件」、中性走灰底表示放哪儿都安全。 */
.rg{display:inline-flex;align-items:center;height:22px;padding:0 var(--sp-3);border-radius:var(--r-pill);font-weight:600;letter-spacing:0;white-space:nowrap;cursor:help}
.rg-formal{background:var(--success-bg);color:var(--success)}
.rg-neutral{background:var(--surface-subtle);color:var(--text-3)}
.rg-casual{background:var(--amber-soft);color:var(--warning)}
.popup-badges{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:9px;font-size:var(--fs-2xs);line-height:1}

/* 听力模式：词头遮起来只给发音，逼着走「听到 → 想起意思」这条路。
   遮罩用等宽的圆点，宽度稳定，不会因为词长不同而让卡片跳动。 */
.listen-mode{display:inline-flex;align-items:center;height:var(--ctl-sm);padding:0 var(--sp-3);border:0;border-radius:var(--r-pill);background:var(--surface-subtle);color:var(--text-2);font-size:var(--fs-2xs);font-weight:600;line-height:1;cursor:pointer;white-space:nowrap;transition:background .2s var(--ease),color .2s var(--ease)}
.listen-mode:hover{background:var(--accent-soft);color:var(--accent)}
.listen-mode.active{background:var(--accent-soft);color:var(--accent)}
.listen-mode:focus-visible{outline:var(--focus-ring);outline-offset:1px}
.listen-mask{color:var(--faint);letter-spacing:.12em;user-select:none}
.listen-actions{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-3);border-bottom:0}
.listen-reveal{display:inline-flex;align-items:center;height:var(--ctl-md);padding:0 var(--sp-5);margin-left:var(--sec-indent);border:0;border-radius:var(--r-pill);background:var(--brand);color:var(--on-brand);font-size:var(--fs-sm);font-weight:600;line-height:1;cursor:pointer;transition:background .2s var(--ease),transform .2s var(--ease)}
.listen-reveal:hover{background:var(--brand-hover)}
.listen-reveal:active{transform:scale(.97)}
.listen-reveal:focus-visible{outline:var(--focus-ring);outline-offset:2px}
.listen-hint{margin-left:var(--sec-indent);max-width:var(--measure);font-size:var(--fs-2xs);line-height:1.7;color:var(--muted)}

/* 第二例句：和第一条之间拉一条细线，标一行「换个场景」，提示这是另一个任务里的用法。 */
.ex-alt{margin-top:var(--sp-4);padding-top:var(--sp-4);border-top:1px dashed var(--line-soft)}
.ex-alt-label{display:inline-flex;align-items:center;height:20px;margin-left:var(--sec-indent);margin-bottom:var(--sp-2);padding:0 var(--sp-2);border-radius:var(--r-sm);background:var(--surface-subtle);color:var(--muted);font-size:var(--fs-2xs);font-weight:600;line-height:1}

/* 常用搭配：一行一条太占地方，做成可换行的胶囊，扫一眼就知道这个词跟谁连用。 */
.co-list{display:flex;flex-wrap:wrap;gap:var(--sp-2);padding-left:var(--sec-indent)}
.co-item{display:inline-flex;align-items:center;padding:5px var(--sp-3);border-radius:var(--r-sm);background:var(--inner-surface);color:var(--text-2);font-size:var(--fs-sm);line-height:1.5;overflow-wrap:anywhere}

/* ---------------------------------------------------------------- 备考中心
   听说读写四科练习、词汇产出排程与模考成绩。布局与打字训练同级，
   靠切换 hidden 与词典主体互斥；控件沿用全站的刻度与胶囊风格。 */
/* 顶部不留 padding：粘性分栏要正好贴住页头，否则内容会从两者之间的缝隙里穿过去。 */
.practice-view{flex:1;overflow-y:auto;padding:0 var(--sp-6) 64px;background:var(--page)}
.practice-view[hidden]{display:none}
/* .hbtn 自带 display，会盖掉浏览器默认的 [hidden]，这里显式补一条。 */
.hbtn[hidden]{display:none}
/* 图标沿用打字训练按钮的描边规格，否则手机上标签隐藏后 SVG 会塌成 0 宽。 */
.practice-toggle svg{width:16px;height:16px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.practice-shell{max-width:920px;margin:0 auto;display:flex;flex-direction:column;gap:var(--sp-4)}
.practice-toolbar{display:flex;align-items:center;gap:var(--sp-4);flex-wrap:wrap;padding-top:var(--sp-5)}
.practice-heading{display:flex;flex-direction:column;line-height:1.3;min-width:0}
.practice-heading strong{font-size:var(--fs-md);color:var(--text)}
.practice-heading span{font-size:var(--fs-2xs);color:var(--muted)}
.practice-nav{display:flex;gap:var(--sp-2);flex-wrap:wrap;position:sticky;top:0;z-index:5;padding:var(--sp-3) 0;background:var(--page)}
.pc-tab{display:inline-flex;align-items:center;gap:6px;height:var(--ctl-md);padding:0 var(--sp-4);border:0;border-radius:var(--r-pill);background:var(--surface-subtle);color:var(--text-2);font-size:var(--fs-xs);font-weight:500;cursor:pointer;transition:background .2s var(--ease),color .2s var(--ease),transform .2s var(--ease)}
.pc-tab:hover{background:var(--accent-soft);color:var(--accent)}
.pc-tab:active{transform:scale(.96)}
.pc-tab.active{background:var(--brand);color:var(--on-brand)}
.pc-tab:focus-visible{outline:var(--focus-ring);outline-offset:2px}
.practice-panel{display:flex;flex-direction:column;gap:var(--sp-4)}

.pc-card{background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--r-xl);box-shadow:var(--shadow-sm);padding:var(--sp-5) var(--sp-5)}
.pc-card h3{font-size:var(--fs-md);font-weight:600;color:var(--text);margin-bottom:var(--sp-3)}
.pc-head-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;margin-bottom:var(--sp-3)}
.pc-head-row h3{margin-bottom:0}
.pc-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--sp-5);flex-wrap:wrap}
.pc-hero-main{min-width:0;flex:1}
.pc-eyebrow{font-size:var(--fs-2xs);color:var(--muted);margin-bottom:6px}
.pc-hero h2{font-family:var(--font-display);font-size:clamp(20px,2.4vw,28px);font-weight:600;letter-spacing:-.02em;color:var(--text)}
.pc-hero h2 b{color:var(--accent)}
.pc-advice{margin-top:var(--sp-3);font-size:var(--fs-sm);line-height:1.7;color:var(--text-2);max-width:60ch}
.pc-advice b{color:var(--warning)}
.pc-lead{font-size:var(--fs-sm);line-height:1.75;color:var(--text-2);max-width:64ch;margin-bottom:var(--sp-3)}
.pc-goal{font-size:var(--fs-xs);color:var(--muted);margin-bottom:var(--sp-3)}
.pc-note{margin-top:var(--sp-3);font-size:var(--fs-2xs);line-height:1.7;color:var(--muted)}
.pc-empty{font-size:var(--fs-xs);color:var(--muted);line-height:1.7}

.pc-field{display:flex;flex-direction:column;gap:6px;font-size:var(--fs-2xs);color:var(--muted)}
.pc-field.pc-block{margin-top:var(--sp-3)}
.pc-field.pc-grow{flex:1;min-width:180px}
.pc-field input,.pc-field textarea,.pc-input{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--inner-surface);color:var(--text);font-size:16px;font-family:inherit;line-height:1.6}
.pc-input:focus,.pc-field input:focus{outline:var(--focus-ring);outline-offset:1px;border-color:var(--accent)}
.pc-editor{min-height:280px;resize:vertical;font-size:16px;line-height:1.8}

.pc-btn{display:inline-flex;align-items:center;gap:6px;height:var(--ctl-md);padding:0 var(--sp-4);border:1px solid transparent;border-radius:var(--r-pill);background:var(--surface-subtle);color:var(--text-2);font-size:var(--fs-xs);font-weight:500;cursor:pointer;transition:background .2s var(--ease),color .2s var(--ease),transform .2s var(--ease)}
.pc-btn:hover{background:var(--accent-soft);color:var(--accent)}
.pc-btn:active{transform:scale(.96)}
.pc-btn:focus-visible{outline:var(--focus-ring);outline-offset:2px}
.pc-btn.primary{background:var(--brand);color:var(--on-brand)}
.pc-btn.primary:hover{background:var(--brand-hover);color:var(--on-brand)}
.pc-quick{display:flex;gap:var(--sp-2);flex-wrap:wrap;margin-top:var(--sp-3)}
.pc-link{border:0;background:none;color:var(--danger);font-size:var(--fs-2xs);cursor:pointer;padding:2px 4px}

.pc-tasklist{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:var(--sp-3)}
.pc-pill{height:var(--ctl-sm);padding:0 var(--sp-3);border:0;border-radius:var(--r-pill);background:var(--surface-subtle);color:var(--text-3);font-size:var(--fs-2xs);cursor:pointer;white-space:nowrap}
.pc-pill:hover{background:var(--accent-soft);color:var(--accent)}
.pc-pill.active{background:var(--accent);color:var(--on-brand)}

.pc-chip{display:inline-flex;align-items:center;height:22px;padding:0 var(--sp-3);border-radius:var(--r-pill);background:var(--surface-subtle);color:var(--text-3);font-size:var(--fs-2xs);font-weight:500;white-space:nowrap}
.pc-chip.pc-inline{margin-bottom:var(--sp-2)}
.pc-chip.ok{background:var(--success-bg);color:var(--success)}
.pc-chip.warn{background:var(--amber-soft);color:var(--warning)}
.pc-chip.live{background:var(--amber-soft);color:var(--warning);font-variant-numeric:tabular-nums}

.pc-metrics{display:flex;gap:var(--sp-3);flex-wrap:wrap}
.pc-metric{flex:1;min-width:96px;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-sm);background:var(--inner-surface);display:flex;flex-direction:column;gap:4px}
.pc-metric span{font-size:var(--fs-2xs);color:var(--muted)}
.pc-metric strong{font-size:var(--fs-xl);font-weight:600;color:var(--text);font-variant-numeric:tabular-nums}
.pc-metric.ok strong{color:var(--success)}
.pc-metric.warn strong{color:var(--warning)}

.pc-prompt{margin:var(--sp-3) 0;padding:var(--sp-4);border-left:3px solid var(--accent);border-radius:0 var(--r-sm) var(--r-sm) 0;background:var(--inner-surface);color:var(--text-2);font-size:var(--fs-sm);line-height:1.8}
.pc-question{font-size:var(--fs-md);line-height:1.85;color:var(--text);margin:var(--sp-3) 0}
.pc-bullets{list-style:none;display:flex;flex-direction:column;gap:8px;margin:var(--sp-3) 0}
.pc-bullets label{display:flex;gap:8px;align-items:flex-start;font-size:var(--fs-xs);line-height:1.7;color:var(--text-2);cursor:pointer}
.pc-bullets input{margin-top:3px;width:16px;height:16px;flex:none;accent-color:var(--accent)}
.pc-check{display:flex;flex-direction:column;gap:8px;padding-left:1.2em;font-size:var(--fs-xs);line-height:1.75;color:var(--text-2)}
.pc-tips ol{display:flex;flex-direction:column;gap:10px;padding-left:1.2em;font-size:var(--fs-xs);line-height:1.8;color:var(--text-2)}
.pc-tips li b{color:var(--accent)}

.pc-timer{margin-top:var(--sp-4);padding:var(--sp-4);border-radius:var(--r-md);background:var(--inner-surface);display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center}
.pc-timer span{font-size:var(--fs-2xs);color:var(--muted)}
.pc-timer strong{font-family:var(--font-mono);font-size:clamp(32px,6vw,48px);font-weight:600;color:var(--text);font-variant-numeric:tabular-nums;line-height:1.1}
.pc-timer p{font-size:var(--fs-2xs);color:var(--muted);margin-top:4px}
.pc-timer.live{background:var(--amber-soft)}
.pc-timer.live strong{color:var(--warning)}
.pc-playback{margin-top:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-2)}
.pc-playback audio{width:100%}

.pc-chunks{display:flex;flex-wrap:wrap;gap:6px}
.pc-chunk{display:inline-flex;align-items:center;height:26px;padding:0 var(--sp-3);border-radius:var(--r-pill);background:var(--accent-soft);color:var(--accent);font-size:var(--fs-2xs);cursor:help}

.pc-options{display:flex;flex-direction:column;gap:8px;margin:var(--sp-3) 0}
.pc-option{text-align:left;padding:11px var(--sp-4);border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);color:var(--text-2);font-size:var(--fs-sm);cursor:pointer;transition:border-color .2s var(--ease),background .2s var(--ease)}
.pc-option:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}
.pc-option.right{border-color:var(--success);background:var(--success-bg);color:var(--success);font-weight:600}
.pc-option.wrong{border-color:var(--danger);background:rgb(255 59 48/.1);color:var(--danger)}
.pc-answer{margin-top:var(--sp-3);font-size:var(--fs-xs);line-height:1.8;color:var(--text-2)}
.pc-answer.pc-muted{color:var(--muted)}

.pc-diff{font-size:var(--fs-sm);line-height:2;word-spacing:2px}
.pc-diff .ok{color:var(--success)}
.pc-diff .miss{color:var(--danger);text-decoration:line-through}
.pc-diff .extra{color:var(--warning);opacity:.85}
.pc-result{margin-top:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-3);align-items:flex-start}

.pc-analysis{margin-top:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-2)}
.pc-analysis:empty{display:none}
.pc-ok{font-size:var(--fs-xs);line-height:1.7;color:var(--success)}
.pc-bad{font-size:var(--fs-xs);line-height:1.7;color:var(--danger)}
.pc-warn{font-size:var(--fs-xs);line-height:1.7;color:var(--warning)}
.pc-flags{list-style:none;display:flex;flex-direction:column;gap:6px;padding-left:var(--sp-3);font-size:var(--fs-2xs);line-height:1.7;color:var(--text-2)}
.pc-flags code{font-family:var(--font-mono);background:var(--surface-subtle);border-radius:4px;padding:1px 5px;color:var(--danger)}
.pc-flags.soft code{color:var(--warning)}

.pc-score-form{display:flex;gap:var(--sp-3);flex-wrap:wrap;align-items:flex-end}
.pc-score-form .pc-field{min-width:90px}
.pc-table-wrap{overflow-x:auto}
.pc-table{width:100%;border-collapse:collapse;font-size:var(--fs-2xs)}
.pc-table th,.pc-table td{padding:9px 10px;text-align:left;border-bottom:1px solid var(--line-soft);white-space:nowrap}
.pc-table th{color:var(--muted);font-weight:500}
.pc-table td{color:var(--text-2);font-variant-numeric:tabular-nums}
.pc-ok-cell{color:var(--success);font-weight:600}
.pc-bad-cell{color:var(--warning);font-weight:600}

@media(max-width:640px){
  .practice-view{padding:0 var(--sp-4) 80px}
  .pc-card{padding:var(--sp-4)}
  .pc-hero{flex-direction:column;align-items:stretch}
  .pc-metrics{gap:var(--sp-2)}
  .pc-metric{min-width:calc(50% - var(--sp-2))}
  .pc-score-form .pc-field{min-width:calc(50% - var(--sp-3))}
}
.pc-session{border-color:var(--accent);background:var(--accent-soft)}
.pc-session .pc-lead{margin-bottom:0;color:var(--text-2)}
.pc-session .pc-lead b{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--accent)}
label.pc-btn{cursor:pointer}
