.tf-me-group{display:grid;gap:var(--ds-space-2)}.tf-me-group-title{margin:0;padding-inline:var(--ds-space-1);color:var(--ds-text-muted);font-size:var(--ds-text-sm);font-weight:900}.tf-me-rows{margin:0;padding:0;list-style:none;overflow:hidden}.tf-me-rows li+li{border-top:1px solid var(--ds-border)}.tf-me-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--ds-space-3);min-width:0;min-height:60px;padding:var(--ds-space-3) var(--ds-space-4);color:var(--ds-text);text-decoration:none}@media(hover:hover){.tf-me-row:hover{background:var(--ds-surface-sunken)}}.tf-me-row:focus-visible{outline:3px solid var(--ds-focus);outline-offset:-3px}.tf-me-row-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:var(--ds-radius-md);background:var(--ds-grape-soft);color:var(--ds-grape-ink)}.tf-me-row-icon[data-tone=pink]{background:var(--ds-pink-soft);color:var(--ds-pink-ink)}.tf-me-row-icon[data-tone=mint]{background:var(--ds-mint-soft);color:var(--ds-mint-ink)}.tf-me-row-icon[data-tone=lemon]{background:var(--ds-lemon-soft);color:var(--ds-lemon-ink)}.tf-me-row-icon[data-tone=sky]{background:var(--ds-sky-soft);color:var(--ds-sky-ink)}.tf-me-row-icon[data-tone=caramel]{background:var(--ds-caramel-soft);color:var(--ds-caramel-ink)}.tf-me-row-text{display:grid;gap:2px;min-width:0}.tf-me-row-name{overflow:hidden;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.tf-me-row-value{color:var(--ds-text-muted);font-size:var(--ds-text-sm);overflow-wrap:anywhere}.tf-me-row-go{color:var(--ds-text-subtle)}.tf-me-extras{justify-content:flex-start}@media(min-width:900px){.tf-app>.tf-page.tf-page--me-list,.tf-app>.tf-page.tf-me-page{max-width:720px}}.tf-ai-summary textarea{box-sizing:border-box;width:100%;min-width:0;min-height:18rem;padding:var(--ds-space-3);border:var(--ds-stroke) solid var(--ds-border-strong);border-radius:var(--ds-radius-sm);background:var(--ds-surface-sunken);color:var(--ds-text);font:500 16px/1.6 var(--ds-font);resize:vertical}.tf-ai-summary textarea:focus{outline:3px solid var(--ds-focus);outline-offset:2px}.tf-ai-summary .tf-actions .ds-button{min-width:10rem}.tf-ai-copy-status{min-height:4.5rem}.tf-ai-followups{margin:0;padding-left:var(--ds-space-6);display:grid;gap:var(--ds-space-2)}.tf-account-hero{justify-items:start}.tf-account-hero h2,.tf-account-hero p{margin:0}.tf-account-hero .ds-button{justify-self:stretch}.tf-account-points,.tf-account-facts{display:grid;gap:var(--ds-space-2);margin:0;padding:0;list-style:none}.tf-account-points li{position:relative;padding-inline-start:var(--ds-space-6);overflow-wrap:anywhere}.tf-account-points li:before{content:"";position:absolute;inset-inline-start:4px;top:.55em;width:10px;height:10px;border-radius:var(--ds-radius-pill);background:var(--ds-ok)}.tf-account-facts li{padding:var(--ds-space-3);border-radius:var(--ds-radius-sm);background:var(--ds-surface-sunken);overflow-wrap:anywhere}.tf-account-who h2{margin:0}.tf-account-name{margin:0;font-size:var(--ds-text-title);font-weight:900;overflow-wrap:anywhere}.tf-account-claim h2,.tf-account-claim p{margin:0}.tf-sync{display:grid;gap:var(--ds-space-3);justify-items:start}.tf-sync-line{display:flex;align-items:flex-start;gap:var(--ds-space-2);margin:0;color:var(--ds-text-muted);font-weight:700;overflow-wrap:anywhere}.tf-sync-line svg{flex:none;margin-top:2px}.tf-sync[data-state=synced] .tf-sync-line svg{color:var(--ds-ok)}.tf-sync[data-state=failed] .tf-sync-line svg,.tf-sync[data-state=unreadable] .tf-sync-line svg{color:var(--ds-bad)}.tf-sync-spin{animation:tf-sync-spin 1s linear infinite}@keyframes tf-sync-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.tf-sync-spin{animation:none}}.tf-chapter-number{font-size:var(--ds-text-sm);font-weight:900;font-variant-numeric:tabular-nums}.tf-chapter-count{color:var(--ds-text-muted);font-size:var(--ds-text-sm);font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}.tf-words-trial{margin:0}.tf-words-start{display:grid;gap:var(--ds-space-2);justify-items:start}.tf-words-start .tf-fineprint{margin:0}.tf-word-rows .tf-word-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:var(--ds-space-3);min-height:56px;padding:var(--ds-space-3) var(--ds-space-4)}.tf-word-row-text{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px var(--ds-space-2);min-width:0}.tf-word-row-en{font-weight:900;overflow-wrap:anywhere}.tf-word-row-pos{color:var(--ds-text-subtle);font-size:var(--ds-text-xs);font-style:italic}.tf-word-row-zh{flex-basis:100%;color:var(--ds-text-muted);font-size:var(--ds-text-sm)}.tf-word-drill-head{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-3)}.tf-word-prompt{display:grid;justify-items:center;gap:var(--ds-space-3);padding:var(--ds-space-6) var(--ds-space-4);text-align:center}.tf-word-ask{margin:0;color:var(--ds-text-muted);font-size:var(--ds-text-base);font-weight:800}.tf-word-big{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--ds-space-2);margin:0;font-size:2rem;font-weight:900;line-height:1.2;overflow-wrap:anywhere}.tf-word-options .tf-option{width:100%;color:var(--ds-text);font:inherit;font-size:1.0625rem;font-weight:700;text-align:start}.tf-word-options .tf-option>span:nth-child(2){flex:1;min-width:0;overflow-wrap:anywhere}.tf-word-options .tf-option:disabled{cursor:default}.tf-word-options .tf-option:disabled:not([data-result]){opacity:.55}.tf-word-options .tf-option:focus-visible{outline:3px solid var(--ds-focus);outline-offset:2px}.tf-word-answer{display:grid;gap:var(--ds-space-2);padding:var(--ds-space-4)}.tf-word-answer p{margin:0}.tf-word-verdict{font-weight:900}.tf-word-verdict[data-result=right]{color:var(--ds-ok-ink)}.tf-word-verdict[data-result=wrong]{color:var(--ds-bad-ink)}.tf-word-example{padding-inline-start:var(--ds-space-3);border-inline-start:3px solid var(--ds-border);color:var(--ds-text-muted);font-size:var(--ds-text-sm)}.tf-word-answer .ds-button{justify-self:start}.tf-word-row-toggle{appearance:none;border:0;background:none;padding:0;color:inherit;font:inherit;text-align:start;cursor:pointer;border-radius:6px}.tf-word-row-toggle:focus-visible{outline:3px solid var(--ds-focus);outline-offset:2px}.tf-word-row-more{align-self:center;margin-inline-start:auto;color:var(--ds-text-subtle);transition:transform .15s}.tf-word-row-toggle[aria-expanded=true] .tf-word-row-more{transform:rotate(180deg)}@media(prefers-reduced-motion:reduce){.tf-word-row-more{transition:none}}.tf-word-note{grid-column:1 / -1;display:grid;gap:var(--ds-space-2);padding-block-start:var(--ds-space-3);border-block-start:1px solid var(--ds-border);font-size:var(--ds-text-sm)}.tf-word-note p{margin:0}.tf-word-note-head{display:flex;flex-wrap:wrap;gap:2px var(--ds-space-3)}.tf-word-ipa{color:var(--ds-text-muted);font-weight:700;overflow-wrap:anywhere}.tf-word-note-list{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--ds-space-2) var(--ds-space-3);margin:0}.tf-word-note-list dt{padding-block-start:2px;color:var(--ds-text-subtle);font-size:var(--ds-text-xs);font-weight:800;white-space:nowrap}.tf-word-note-list dd{display:grid;gap:var(--ds-space-1);margin:0;min-width:0;overflow-wrap:anywhere}.tf-word-note-sentence{display:grid}.tf-word-credit{margin-block-start:var(--ds-space-3)}.tf-word-credit a{color:inherit;text-decoration:underline}button.tf-round-row{width:100%;border:0;background:transparent;font:inherit;text-align:left;cursor:pointer}.tf-round-status{display:inline-flex;align-items:center;gap:var(--ds-space-1)}.tf-round-status[data-state=done]{color:var(--ds-ok-ink)}.tf-round-start{display:grid;gap:var(--ds-space-2);justify-items:start}.tf-round-start .tf-fineprint{margin:0}.tf-round-extra{display:flex;flex-wrap:wrap;gap:var(--ds-space-2) var(--ds-space-4)}.tf-practice-switch{display:grid;gap:var(--ds-space-2)}.tf-word-all{display:grid;gap:var(--ds-space-3)}.tf-word-all>summary{justify-self:start;cursor:pointer}.tf-word-all>.tf-me-group+.tf-me-group{margin-top:var(--ds-space-2)}.tf-level-chips{display:grid;gap:var(--ds-space-1)}.tf-level-chips-note{margin:0;color:var(--ds-text-muted);font-size:var(--ds-text-sm)}.tf-domain-note{margin-left:var(--ds-space-2);font-weight:600}.tf-topic-groups{display:grid;gap:var(--ds-space-3)}.tf-topic-group{display:grid;gap:var(--ds-space-2)}.tf-round-more{justify-self:start;min-height:44px}.tf-sound-check{display:grid;gap:var(--ds-space-3);padding:var(--ds-space-4)}.tf-sound-check h2{margin:0;font-size:var(--ds-text-base)}.tf-sound-check-body p{margin:0}.tf-sound-check-actions{display:flex;flex-wrap:wrap;gap:var(--ds-space-2)}.tf-return-help{position:relative;display:grid;gap:var(--ds-space-3);padding:var(--ds-space-4)}.tf-return-help h2,.tf-return-help p{margin:0}.tf-return-help h2{font-size:var(--ds-text-base)}.tf-return-help-steps{margin:0;padding-left:var(--ds-space-6);display:grid;gap:var(--ds-space-1)}.tf-return-help-actions{display:flex;flex-wrap:wrap;gap:var(--ds-space-2)}.tf-return-help-note:empty{position:absolute;width:1px;height:1px;overflow:hidden}@media(min-width:1280px){.tf-app--wide{max-width:1180px;margin-inline:auto}.tf-app--wide>.tf-page{max-width:1040px}.tf-app--wide>.tf-nav{left:max(var(--ds-space-4),calc(50vw - 574px))}.tf-app--wide .tf-page--practice .tf-types{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--ds-space-3)}}.tf-page--plain .tf-rpg-bar-track:before{content:none}.tf-intro--folded{padding:var(--ds-space-3) var(--ds-space-4)}.tf-intro--folded>summary{min-height:44px;display:flex;align-items:center;font-weight:800;cursor:pointer}.tf-intro--folded .tf-type-list{display:grid;gap:var(--ds-space-3);margin:var(--ds-space-3) 0 0;padding:0;list-style:none}.tf-intro--folded .tf-type-list p{margin:var(--ds-space-1) 0 0}.tf-practice-group{display:grid;gap:var(--ds-space-3);min-width:0}.tf-practice-group-title{margin:var(--ds-space-2) 0 0;font-size:var(--ds-text-lg)}.tf-type-suggest{padding:2px var(--ds-space-2);border-radius:var(--ds-radius-sm);background:var(--ds-mint-soft);color:var(--ds-mint-ink);font-size:var(--ds-text-xs);font-weight:800;white-space:nowrap}.tf-practice-extra{display:grid;gap:var(--ds-space-3);padding:var(--ds-space-4)}.tf-practice-extra p,.tf-practice-foot{margin:0}.tf-subjects,.tf-types{display:grid;gap:var(--ds-space-3);margin:0;padding:0;list-style:none}.tf-subjects li,.tf-types li{min-width:0}.tf-subject,.tf-type-row{width:100%;min-width:0;margin:0;color:var(--ds-text);font:inherit;text-align:start;cursor:pointer}.tf-subject{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--ds-space-3);min-height:72px;padding:var(--ds-space-4)}.tf-type-row{display:grid;gap:var(--ds-space-1);min-height:64px;padding:var(--ds-space-4)}.tf-practice-sets{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:var(--ds-space-2);padding:var(--ds-space-3) 0}.tf-practice-set{display:grid;gap:var(--ds-space-1);min-height:68px;padding:var(--ds-space-3);text-align:start;color:var(--ds-text);font:inherit;cursor:pointer}.tf-practice-set span{color:var(--ds-text-muted);font-size:var(--ds-text-sm)}.tf-practice-set:focus-visible{outline:3px solid var(--ds-focus);outline-offset:3px}.tf-subject:focus-visible,.tf-type-row:focus-visible{outline:3px solid var(--ds-focus);outline-offset:3px}.tf-subject-copy{display:grid;gap:var(--ds-space-1);min-width:0}.tf-subject-name{font-size:var(--ds-text-lg);font-weight:900}.tf-subject-meta,.tf-type-meta{color:var(--ds-text-muted);font-size:var(--ds-text-sm);font-weight:700;overflow-wrap:anywhere}.tf-type-en{min-width:0;overflow-wrap:anywhere;color:var(--ds-text-subtle);font-size:var(--ds-text-xs);font-weight:800}.tf-subject-arrow{flex:none;color:var(--ds-text-muted)}.tf-source-library,.tf-source-content{display:grid;gap:var(--ds-space-3);min-width:0}.tf-source-library{padding:var(--ds-space-4)}.tf-source-library p{margin:0}.tf-source-content [role=status]{scroll-margin-top:var(--ds-space-4)}.tf-source-filter-note{margin:0;scroll-margin-top:var(--ds-space-4)}.tf-source-filters{display:grid;gap:var(--ds-space-2)}.tf-source-filters input,.tf-source-filters select{width:100%;min-width:0}.tf-source-list{display:grid;gap:var(--ds-space-3);list-style:none;padding:0;margin:0}.tf-source-list li{display:grid;gap:var(--ds-space-1);min-width:0;overflow-wrap:anywhere;padding-bottom:var(--ds-space-3);border-bottom:var(--ds-stroke) solid var(--ds-border)}.tf-source-list li span{color:var(--ds-text-muted);font-size:var(--ds-text-sm)}.tf-source-list li a{display:inline-flex;align-items:center;justify-self:start;min-height:44px}.tf-practice-levels .ds-chip{min-height:44px}.tf-set-top{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:var(--ds-space-2)}.tf-set-clock{justify-self:end;margin:0;color:var(--ds-text-muted);font-weight:800;font-variant-numeric:tabular-nums}.tf-set-note{display:grid;gap:var(--ds-space-3);padding:var(--ds-space-4)}.tf-set-note h2{font-size:var(--ds-text-lg)}.tf-set-note p{margin:0}.tf-set-score{display:grid;justify-items:center;gap:var(--ds-space-1);padding:var(--ds-space-6) var(--ds-space-4);text-align:center}.tf-set-score strong{color:var(--ds-text);font-size:var(--ds-text-hero);font-weight:900;line-height:1.1;font-variant-numeric:tabular-nums}.tf-set-score span{color:var(--ds-text);font-weight:800}.tf-set-times{display:grid;gap:var(--ds-space-1);margin:0;padding:0;list-style:none;color:var(--ds-text);font-weight:800;font-variant-numeric:tabular-nums}.tf-set-redo{margin-inline-start:auto}.tf-arcade-banner,.tf-arcade-stage{display:grid;gap:var(--ds-space-3);padding:var(--ds-space-4)}.tf-arcade-banner p,.tf-arcade-stage>p{margin:0}.tf-arcade-cards{display:grid;gap:var(--ds-space-3)}.tf-arcade-card{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--ds-space-3);padding:var(--ds-space-3) var(--ds-space-4);border:var(--ds-stroke) solid var(--tone, var(--ds-border));border-radius:var(--ds-radius-lg);background:var(--tone-soft, var(--ds-surface-sunken))}.tf-arcade-card h3{margin:0 0 2px;color:var(--tone-ink, var(--ds-text));font-size:var(--ds-text-base)}.tf-arcade-card p{margin:0}.tf-hearts{display:inline-flex;align-items:center;gap:4px}.tf-match-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--ds-space-3)}.tf-match-col{display:grid;gap:var(--ds-space-2);align-content:start;min-width:0}.tf-match-col-label{color:var(--ds-text-muted);font-size:var(--ds-text-xs);font-weight:900;text-align:center}.tf-match-card{display:grid;gap:2px;place-items:center;min-height:54px;padding:var(--ds-space-2) var(--ds-space-3);border:var(--ds-stroke) solid var(--ds-border-strong);border-radius:var(--ds-radius-md);background:var(--ds-surface);box-shadow:0 var(--ds-ledge-sm) 0 var(--ds-border-strong);color:var(--ds-text);font:inherit;font-weight:800;text-align:center;overflow-wrap:anywhere;cursor:pointer}.tf-match-card[data-selected]{border-color:var(--ds-caramel);background:var(--ds-caramel-soft);box-shadow:0 var(--ds-ledge-sm) 0 var(--ds-caramel-ledge);color:var(--ds-caramel-ink)}.tf-match-card[data-matched]{border-color:var(--ds-ok);background:var(--ds-ok-soft);box-shadow:none;color:var(--ds-ok-ink);opacity:.75;cursor:default}.tf-match-card[data-wrong]{border-color:var(--ds-bad);background:var(--ds-bad-soft);color:var(--ds-bad-ink)}.tf-match-card small{font-size:var(--ds-text-xs);font-weight:700}.tf-arcade-clear{display:grid;justify-items:center;gap:var(--ds-space-3);padding:var(--ds-space-3) 0;text-align:center}.tf-arcade-clear h3,.tf-arcade-clear p{margin:0}.tf-boss-feedback{display:grid;gap:var(--ds-space-2);padding:var(--ds-space-3) var(--ds-space-4);border:var(--ds-stroke) solid var(--ds-ok);border-radius:var(--ds-radius-md);background:var(--ds-ok-soft);color:var(--ds-ok-ink)}.tf-boss-feedback[data-result=wrong]{border-color:var(--ds-bad);background:var(--ds-bad-soft);color:var(--ds-bad-ink)}.tf-boss-feedback p{margin:0;line-height:1.6}.tf-goal-row{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--ds-space-2) var(--ds-space-3);min-width:0}.tf-goal{display:grid;gap:2px;flex:1 1 12rem;min-width:0;margin:0}.tf-goal p{margin:0;overflow-wrap:anywhere;font-weight:800}.tf-goal-note{margin:0;overflow-wrap:anywhere}.tf-delta{display:grid;gap:var(--ds-space-1);width:100%;margin:0;padding:0;list-style:none;text-align:start;font-weight:800;overflow-wrap:anywhere}.tf-result .tf-set-times,.tf-result .tf-delta,.tf-result .tf-result-miss,.tf-result .tf-mistakes{width:100%;text-align:start}.tf-result .tf-mistakes li{min-height:48px}.tf-trend{display:grid;gap:var(--ds-space-2);margin:0;min-width:0}.tf-trend svg{width:100%;height:auto;display:block}.tf-trend-grid{stroke:var(--ds-border);stroke-width:1}.tf-trend-axis{fill:var(--ds-text-muted);font-size:12px;font-weight:800}.tf-trend-line{fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.tf-trend-dot{stroke:none}.tf-trend [data-series=grape].tf-trend-line{stroke:var(--ds-grape-ink)}.tf-trend [data-series=grape].tf-trend-dot{fill:var(--ds-grape-ink)}.tf-trend [data-series=sky].tf-trend-line{stroke:var(--ds-sky-ink)}.tf-trend [data-series=sky].tf-trend-dot{fill:var(--ds-sky-ink)}.tf-trend-legend{display:flex;flex-wrap:wrap;gap:var(--ds-space-3);margin:0;padding:0;list-style:none;font-weight:800}.tf-trend-legend li{display:inline-flex;align-items:center;gap:6px;min-height:44px}.tf-trend-legend li:before{content:"";width:18px;height:4px;border-radius:2px;background:var(--ds-grape-ink)}.tf-trend-legend li[data-series=sky]:before{background:var(--ds-sky-ink)}.tf-trend-table{width:100%;border-collapse:collapse}.tf-trend-table th,.tf-trend-table td{padding:var(--ds-space-2) var(--ds-space-2);border-bottom:var(--ds-stroke) solid var(--ds-border);text-align:start;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}.tf-trend-table th{font-weight:800}.tf-report-facts{display:grid;margin:0}.tf-report-facts div{display:flex;justify-content:space-between;align-items:center;gap:var(--ds-space-3);min-height:44px}.tf-report-facts div+div{border-top:var(--ds-stroke) solid var(--ds-border)}.tf-report-facts dt{font-weight:800}.tf-report-facts dd{margin:0;font-weight:900;font-variant-numeric:tabular-nums}.tf-onboarding{display:flex;flex-direction:column;gap:var(--ds-space-4);min-height:100dvh;padding-top:max(var(--ds-space-3),env(safe-area-inset-top))}.tf-onboarding h1{font-size:var(--ds-text-title)}.tf-onboarding-title{margin-top:var(--ds-space-2)}.tf-onboarding .tf-sticky-actions{align-self:stretch;margin-top:auto}.tf-onboarding-bar{display:flex;align-items:center;gap:var(--ds-space-3)}.tf-welcome{align-items:center;padding-top:max(var(--ds-space-12),env(safe-area-inset-top));text-align:center}.tf-welcome h1{font-size:var(--ds-text-display);line-height:1.25}.tf-benefits{display:grid;gap:var(--ds-space-3);width:100%;margin:var(--ds-space-2) 0 0;padding:0;list-style:none;text-align:start}.tf-benefits li{display:flex;align-items:center;gap:var(--ds-space-3);padding:var(--ds-space-3) var(--ds-space-4);border:var(--ds-stroke) solid var(--tone-soft, var(--ds-border));border-radius:20px;background:var(--ds-surface);box-shadow:0 var(--ds-ledge-sm) 0 var(--tone, var(--ds-border));font-weight:800}.tf-step-dots{display:flex;flex:1;gap:6px;margin:0;padding:0;list-style:none}.tf-step-dots li{flex:1;max-width:48px;height:10px;border-radius:var(--ds-radius-pill);background:var(--ds-surface-sunken)}.tf-step-dots li[data-state=done]{background:var(--ds-brand)}.tf-step-dots li[data-state=current]{max-width:72px;background:var(--ds-brand);box-shadow:0 0 0 3px var(--ds-brand-soft)}.tf-intro-mascot{display:grid;justify-items:center}.tf-checklist{display:grid;gap:var(--ds-space-2);margin:0;padding:0;list-style:none}.tf-checklist li{position:relative;padding:var(--ds-space-3) var(--ds-space-4) var(--ds-space-3) 46px;border:var(--ds-stroke) solid var(--ds-border);border-radius:var(--ds-radius-md);background:var(--ds-surface);font-weight:700}.tf-checklist li:before{content:"";position:absolute;top:50%;left:16px;width:16px;height:16px;border-radius:6px;background:var(--ds-brand);transform:translateY(-50%)}.tf-choice-cards{display:grid;gap:var(--ds-space-3);min-width:0;margin:0;padding:0;border:0}.tf-choice-card{position:relative;display:grid;gap:2px;min-height:64px;padding:var(--ds-space-3) 48px var(--ds-space-3) var(--ds-space-4);border:var(--ds-stroke) solid var(--ds-border);border-radius:20px;background:var(--ds-surface);box-shadow:0 var(--ds-ledge) 0 var(--ds-border-strong);cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;-webkit-user-select:none;user-select:none;transition:transform var(--ds-motion-fast) var(--ds-ease-out),box-shadow var(--ds-motion-fast) var(--ds-ease-out)}.tf-choice-card:active{transform:translateY(var(--ds-ledge-sm));box-shadow:0 1px 0 var(--ds-border-strong)}.tf-choice-card input{position:absolute;opacity:0;pointer-events:none}.tf-choice-card:has(input:checked){border-color:var(--ds-brand);background:var(--ds-brand-soft);box-shadow:0 var(--ds-ledge) 0 var(--ds-brand-ledge)}.tf-choice-card:has(input:focus-visible){outline:3px solid var(--ds-focus);outline-offset:2px}.tf-choice-title{font-size:var(--ds-text-lg);font-weight:900}.tf-choice-card:has(input:checked) .tf-choice-title{color:var(--ds-brand-ink)}.tf-choice-hint{color:var(--ds-text-muted);font-size:var(--ds-text-sm)}.tf-choice-card .tf-selected-mark{position:absolute;top:50%;right:var(--ds-space-4);color:var(--ds-brand-ink);transform:translateY(-50%)}.tf-choice-card:has(input:checked) .tf-selected-mark{display:block}.tf-placement-result{justify-items:center;text-align:center}.tf-level-scores{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--ds-space-2);margin:0}.tf-level-scores span{padding:4px 14px;border-radius:var(--ds-radius-pill);background:var(--ds-brand-soft);color:var(--ds-brand-ink);font-weight:900}.tf-test-date{margin-top:var(--ds-space-2)}.tf-field-error{color:var(--ds-bad-ink);font-weight:800}.tf-skill-badge{display:block;width:28px;height:auto;flex-shrink:0;overflow:visible}.tf-sb-ink{fill:var(--tk-ink-900)}.tf-sb-body{fill:var(--tone, var(--ds-brand))}.tf-sb-fill{fill:var(--tone-soft, var(--ds-brand-soft))}.tf-sb-glint{fill:var(--ds-toffee-shine)}.tf-hud-bar{flex-wrap:wrap;padding:var(--ds-space-2) var(--ds-space-3);border:var(--ds-stroke) solid var(--ds-border-strong);border-radius:var(--ds-radius-md);background:var(--ds-surface);box-shadow:0 var(--ds-ledge) 0 var(--ds-border-strong)}.tf-hud-left{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ds-space-2);min-width:0}.tf-player-lv{display:inline-flex;align-items:center;padding:2px 10px;border:var(--ds-stroke) solid var(--tone, var(--ds-grape));border-radius:var(--ds-radius-sm);background:var(--tone-soft, var(--ds-grape-soft));box-shadow:0 2px 0 var(--tone-ledge, var(--ds-grape-ledge));color:var(--tone-ink, var(--ds-grape-ink));font-size:var(--ds-text-xs);font-weight:900;letter-spacing:.04em;font-variant-numeric:tabular-nums}.tf-hud-toggle{display:inline-flex;align-items:center;gap:5px;min-height:36px;padding:4px 10px;border:var(--ds-stroke) solid var(--ds-border-strong);border-radius:10px;background:var(--ds-surface-sunken);box-shadow:0 2px 0 var(--ds-border-strong);color:var(--ds-text-muted);font-size:var(--ds-text-xs);font-weight:900;cursor:pointer}.tf-hud-toggle[aria-pressed=true]{border-color:var(--ds-grape);background:var(--ds-grape-soft);box-shadow:0 2px 0 var(--ds-grape-ledge);color:var(--ds-grape-ink)}.tf-hud-toggle:active{transform:translateY(1px);box-shadow:0 1px 0 var(--ds-border-strong)}.tf-app .ds-card,.tf-app .tf-hero{border-width:2.5px;border-radius:20px;box-shadow:0 5px 0 var(--ds-border-strong);max-width:100%;box-sizing:border-box}.tf-app .ds-card[data-tone]{border-color:var(--tone);box-shadow:0 5px 0 var(--tone-ledge, var(--tone))}.tf-stage-bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--ds-space-2);padding-bottom:var(--ds-space-2);border-bottom:2px dashed var(--ds-border)}.tf-stage-tag{display:inline-flex;align-items:center;gap:6px;width:fit-content;padding:3px 10px;border:var(--ds-stroke) solid var(--ds-caramel);border-radius:8px;background:var(--ds-caramel-soft);box-shadow:0 2px 0 var(--ds-caramel-ledge);color:var(--ds-caramel-ink);font-size:var(--ds-text-xs);font-weight:900;letter-spacing:.06em}.tf-mascot-pedestal{display:grid;place-items:center;padding:var(--ds-space-2);border:var(--ds-stroke) solid var(--ds-border);border-radius:18px;background:linear-gradient(180deg,var(--ds-surface-sunken) 0%,var(--ds-surface) 100%);box-shadow:inset 0 -4px 0 var(--ds-border);flex-shrink:0}.tf-hero-headline{display:grid;gap:6px;min-width:0;flex:1}.tf-hero-headline .tf-hero-title{margin-top:2px;font-size:clamp(1.45rem,1.2rem + 1.2vw,2rem)}.tf-hero-sub{font-size:var(--ds-text-sm);font-weight:700}.tf-stage-meter{height:12px;border:var(--ds-stroke) solid var(--ds-border-strong);border-radius:8px;background:var(--ds-surface-sunken);overflow:hidden}.tf-stage-meter-fill{display:block;width:calc(var(--done, 0) * 100%);height:100%;background:repeating-linear-gradient(-45deg,var(--ds-mint) 0 8px,var(--ds-mint-ledge) 8px 16px)}.tf-skill-days{padding:var(--ds-space-3);border:var(--ds-stroke) solid var(--ds-border);border-radius:var(--ds-radius-md);background:var(--ds-surface-sunken)}.tf-skill-cartridge{--btn-bg: var(--tone-soft, var(--ds-surface));--btn-fg: var(--tone-ink, var(--ds-text));--btn-edge: var(--tone, var(--ds-border-strong));--btn-ledge: var(--tone-ledge, var(--ds-border-strong));display:grid;justify-items:center;gap:4px;min-height:68px;padding:8px 6px;border-radius:14px;text-align:center}.tf-skill-cartridge .tf-skill-badge{width:24px}.tf-rpg-stats{display:grid;gap:var(--ds-space-2);padding:var(--ds-space-3);border:var(--ds-stroke) solid var(--ds-border-strong);border-radius:var(--ds-radius-md);background:var(--ds-surface-sunken)}.tf-rpg-stats-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:var(--ds-space-2)}.tf-rpg-goal-badge{margin:0;color:var(--ds-text);font-size:var(--ds-text-base);font-weight:900}.tf-rpg-bars{display:grid;gap:var(--ds-space-2)}.tf-rpg-stat-item{display:grid;gap:4px;padding:var(--ds-space-2) var(--ds-space-3);border:var(--ds-stroke) solid var(--tone, var(--ds-border));border-radius:var(--ds-radius-sm);background:var(--ds-surface)}.tf-rpg-bar-track{display:flex;align-items:center;gap:var(--ds-space-2)}.tf-rpg-bar-track:before{content:"EXP";padding:1px 6px;border-radius:6px;background:var(--tone-soft, var(--ds-grape-soft));color:var(--tone-ink, var(--ds-grape-ink));font-size:11px;font-weight:900;letter-spacing:.04em}.tf-rpg-bar-fill{display:block;height:10px;border-radius:6px;background:repeating-linear-gradient(90deg,var(--tone, var(--ds-grape)) 0 10px,var(--tone-ledge, var(--ds-grape-ledge)) 10px 13px);flex:0 0 auto;max-width:calc(100% - 110px)}.tf-rpg-bar-tag{margin-inline-start:auto;color:var(--tone-ink, var(--ds-text-muted));font-size:var(--ds-text-xs);font-weight:900;font-variant-numeric:tabular-nums}.tf-rpg-stat-line{margin:0;color:var(--ds-text-muted);font-size:var(--ds-text-sm);font-weight:800}.tf-nodate-strip{padding-top:var(--ds-space-1);border-top:1px dashed var(--ds-border-strong);font-size:var(--ds-text-sm)}.tf-round .tf-meter{position:relative;height:18px;border:var(--ds-stroke) solid var(--ds-border-strong);border-radius:10px;background:repeating-linear-gradient(90deg,transparent 0 calc(100% / var(--segments, 10) - 2px),var(--ds-border-strong) calc(100% / var(--segments, 10) - 2px) calc(100% / var(--segments, 10))),var(--ds-surface-sunken)}.tf-stage-companion{display:flex;align-items:center;gap:var(--ds-space-3);padding:var(--ds-space-2) var(--ds-space-3);border:var(--ds-stroke) solid var(--type, var(--ds-brand));border-radius:16px;background:var(--type-soft, var(--ds-brand-soft));box-shadow:0 3px 0 var(--type-ledge, var(--ds-brand-ledge))}.tf-stage-companion-copy{display:grid;gap:2px;min-width:0}.tf-stage-badge{width:fit-content;padding:1px 8px;border-radius:6px;background:var(--ds-surface);color:var(--type-ink, var(--ds-brand-ink));font-size:11px;font-weight:900;letter-spacing:.06em}.tf-stage-companion-copy p{margin:0;color:var(--type-ink, var(--ds-brand-ink));font-size:var(--ds-text-sm);font-weight:800}.tf-round--arena .tf-option{border-width:2.5px;border-radius:16px;box-shadow:0 5px 0 var(--ds-border-strong)}.tf-round--arena .tf-option-letter{border-width:2px;border-bottom-width:4px;border-radius:9px}.tf-round--arena .tf-options>li:nth-child(1) .tf-option:after,.tf-round--arena .tf-options>label.tf-option:nth-of-type(1):after{content:"[1]"}.tf-round--arena .tf-options>li:nth-child(2) .tf-option:after,.tf-round--arena .tf-options>label.tf-option:nth-of-type(2):after{content:"[2]"}.tf-round--arena .tf-options>li:nth-child(3) .tf-option:after,.tf-round--arena .tf-options>label.tf-option:nth-of-type(3):after{content:"[3]"}.tf-round--arena .tf-options>li:nth-child(4) .tf-option:after,.tf-round--arena .tf-options>label.tf-option:nth-of-type(4):after{content:"[4]"}.tf-round--arena .tf-options>li .tf-option:after,.tf-round--arena .tf-options>label.tf-option:after{margin-inline-start:auto;padding:3px 8px;border:1.5px solid var(--ds-on-brand);border-bottom:3.5px solid var(--ds-on-brand);border-radius:6px;background:var(--ds-surface);box-shadow:inset 0 1px 0 var(--ds-surface),0 2px 0 var(--ds-border-strong);color:var(--ds-text);font-size:11px;font-weight:900;font-variant-numeric:tabular-nums;letter-spacing:.05em;transition:transform .1s,box-shadow .1s}.tf-round--arena .tf-option:active:after{transform:translateY(2px);box-shadow:inset 0 1px 0 var(--ds-surface),0 0 0 var(--ds-border-strong)}.tf-round--arena .tf-listen{padding:var(--ds-space-3);border:2.5px solid var(--ds-sky);border-radius:18px;background:var(--ds-sky-soft);box-shadow:0 4px 0 var(--ds-sky-ledge)}.tf-round--arena .tf-notes-card,.tf-round--arena .tf-reading,.tf-round--arena .tf-speak-card{border-width:2.5px;border-radius:18px;box-shadow:0 4px 0 var(--ds-border-strong)}.tf-round--arena .tf-passage-block>.ds-button{justify-self:start;width:fit-content}.tf-round--arena .tf-chip{border-width:2px;border-bottom-width:4px;border-radius:12px}.tf-round--arena .tf-feedback{border-width:3px;border-radius:20px;box-shadow:0 6px 0 var(--ds-border-strong)}.tf-round--arena .tf-feedback[data-result=right]{box-shadow:0 6px 0 var(--ds-mint-ledge)}.tf-round--arena .tf-feedback[data-result=wrong]{box-shadow:0 6px 0 var(--ds-pink-ledge)}.tf-round--arena .tf-word{border-width:2px;border-bottom-width:4px;border-radius:14px}.tf-dressing-stage{display:grid;gap:var(--ds-space-3);padding:var(--ds-space-4);border:2.5px solid var(--tone, var(--ds-grape));border-radius:20px;background:radial-gradient(circle at 50% 38%,var(--tone-soft, var(--ds-grape-soft)) 0%,var(--ds-surface-sunken) 75%);box-shadow:inset 0 -6px 0 var(--ds-border),0 4px 0 var(--tone-ledge, var(--ds-grape-ledge))}.tf-dressing-top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--ds-space-2)}.tf-dressing-status{padding:3px 10px;border:1.5px solid var(--tone, var(--ds-grape));border-radius:999px;background:var(--ds-surface);color:var(--tone-ink, var(--ds-grape-ink));font-size:var(--ds-text-xs);font-weight:900}.tf-dressing-poses,.tf-dressing-stages{display:flex;flex-wrap:wrap;gap:6px}.tf-pose-btn,.tf-stage-pill{min-height:32px;padding:4px 10px;border:1.5px solid var(--ds-border-strong);border-radius:999px;background:var(--ds-surface);color:var(--ds-text-muted);font:inherit;font-size:var(--ds-text-xs);font-weight:900;cursor:pointer}.tf-pose-btn[aria-pressed=true],.tf-stage-pill[aria-pressed=true]{border-color:var(--tone, var(--ds-grape));background:var(--tone-soft, var(--ds-grape-soft));box-shadow:0 2px 0 var(--tone-ledge, var(--ds-grape-ledge));color:var(--tone-ink, var(--ds-grape-ink))}.tf-dressing-spotlight{position:relative;display:grid;place-items:center;min-height:168px;padding:var(--ds-space-4) var(--ds-space-3);border:2px dashed var(--tone, var(--ds-grape));border-radius:20px;background:var(--ds-surface);box-shadow:inset 0 0 32px var(--tone-soft, var(--ds-grape-soft));overflow:hidden}.tf-stage-podium{display:block;width:136px;height:10px;margin-top:-6px;border:2px solid var(--ds-on-brand);border-radius:999px;background:var(--tone-soft, var(--ds-grape-soft));box-shadow:0 4px 0 var(--tone-ledge, var(--ds-grape-ledge));z-index:1}.tf-stage-sparkle{position:absolute;color:var(--tone, var(--ds-lemon));font-size:16px;line-height:1;pointer-events:none;animation:tf-twinkle 2.4s ease-in-out infinite;z-index:2}.tf-stage-sparkle--1{top:16px;left:28px;animation-delay:0s}.tf-stage-sparkle--2{top:22px;right:32px;animation-delay:1.2s}.tf-result-podium{display:block;width:160px;height:14px;margin:-8px auto var(--ds-space-2);border:2.5px solid var(--ds-on-brand);border-radius:999px;background:var(--ds-lemon);box-shadow:inset 0 2px 0 var(--ds-lemon-soft),0 5px 0 var(--ds-lemon-ledge);z-index:1}.tf-result-podium--compact{width:110px;height:10px;margin-top:-4px}.tf-dressing-loadout{display:flex;flex-wrap:wrap;justify-content:center;gap:6px}.tf-loadout-pill{padding:3px 10px;border:1.5px solid var(--ds-border-strong);border-radius:8px;background:var(--ds-surface);color:var(--ds-text);font-size:var(--ds-text-xs);font-weight:800}.tf-try-skins{display:grid;gap:var(--ds-space-2);padding-top:var(--ds-space-2);border-top:2px dashed var(--ds-border)}.tf-try-skin-grid{display:flex;flex-wrap:wrap;gap:6px}.tf-try-skin-btn{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:4px 10px;border:2px solid var(--ds-border-strong);border-radius:12px;background:var(--ds-surface-sunken);box-shadow:0 2px 0 var(--ds-border-strong);color:var(--ds-text);font:inherit;font-size:var(--ds-text-xs);font-weight:800;cursor:pointer}.tf-try-skin-btn[aria-pressed=true]{border-color:var(--ds-pink);background:var(--ds-pink-soft);box-shadow:0 2px 0 var(--ds-pink-ledge);color:var(--ds-pink-ink)}.tf-try-swatch{width:14px;height:14px;border:1.5px solid var(--tk-ink-900);border-radius:4px;flex-shrink:0}.tf-try-tag{padding:1px 6px;border-radius:6px;background:var(--ds-surface);color:var(--ds-text-muted);font-size:11px;font-weight:900}.tf-gear-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--ds-space-2)}.tf-gear-tab{min-height:42px;padding:6px 8px;border:2px solid var(--ds-border-strong);border-radius:12px;background:var(--ds-surface-sunken);box-shadow:0 3px 0 var(--ds-border-strong);color:var(--ds-text);font:inherit;font-size:var(--ds-text-xs);font-weight:900;cursor:pointer}.tf-gear-tab[aria-pressed=true]{border-color:var(--ds-grape);background:var(--ds-grape-soft);box-shadow:0 3px 0 var(--ds-grape-ledge);color:var(--ds-grape-ink)}.tf-app .tf-flavors>li,.tf-app .tf-skins>.tf-skin{border-width:2.5px;border-radius:16px;box-shadow:0 4px 0 var(--ds-border-strong)}.tf-app .tf-flavors>li[data-owned=false]{border-color:color-mix(in srgb,var(--candy-wrapper, var(--ds-border-strong)) 55%,var(--ds-border-strong));background:color-mix(in srgb,var(--candy-wrapper, var(--ds-surface)) 10%,var(--ds-surface-sunken))}.tf-app .tf-skins>.tf-skin[data-active=true]{border-color:var(--ds-grape);background:var(--ds-grape-soft);box-shadow:0 4px 0 var(--ds-grape-ledge)}.tf-vault-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--ds-space-2)}.tf-vault-stat{display:grid;justify-items:center;gap:2px;padding:var(--ds-space-3) var(--ds-space-2);border:2px solid var(--tone, var(--ds-border-strong));border-radius:16px;background:var(--tone-soft, var(--ds-surface));box-shadow:0 4px 0 var(--tone-ledge, var(--ds-border-strong));text-align:center}.tf-vault-stat strong{color:var(--tone-ink, var(--ds-text));font-size:var(--ds-text-lg);font-weight:900;line-height:1.1;font-variant-numeric:tabular-nums}.tf-vault-stat span{color:var(--tone-ink, var(--ds-text-muted));font-size:var(--ds-text-xs);font-weight:800}.tf-vault-actions-row{display:flex;flex-wrap:wrap;gap:var(--ds-space-2);margin-top:var(--ds-space-3);margin-bottom:var(--ds-space-2)}.tf-wax-seal{display:inline-flex;align-items:center;justify-content:center;transform:rotate(-12deg);margin:var(--ds-space-1) auto}.tf-result-stage{display:grid;justify-items:center;gap:var(--ds-space-2);padding:var(--ds-space-4);text-align:center}.tf-result-stage .tf-stage-bar{width:100%}.tf-rank-badge{display:inline-flex;align-items:center;padding:3px 12px;border:2px solid var(--tone, var(--ds-lemon));border-radius:999px;background:var(--ds-surface);box-shadow:0 2px 0 var(--tone-ledge, var(--ds-lemon-ledge));color:var(--tone-ink, var(--ds-lemon-ink));font-size:var(--ds-text-xs);font-weight:900;letter-spacing:.06em}.tf-result-kpi-row{display:flex;justify-content:center;align-items:center;gap:var(--ds-space-3);margin:var(--ds-space-2) 0;width:100%}.tf-result-kpi{display:flex;flex-direction:column;align-items:center;gap:2px;flex:1;max-width:110px;padding:var(--ds-space-2) var(--ds-space-1);border:var(--ds-stroke) solid var(--ds-border);border-radius:var(--ds-radius-card);background:var(--ds-surface);box-shadow:0 var(--ds-ledge) 0 var(--ds-border-strong)}.tf-result-kpi-num{font-size:var(--ds-text-base);font-weight:900;color:var(--ds-text);font-variant-numeric:tabular-nums}.tf-result-kpi-lbl{font-size:var(--ds-text-xs);font-weight:800;color:var(--ds-text-muted)}.tf-result-bento .tf-breakdown,.tf-result-bento .tf-set-times,.tf-result-bento .tf-delta,.tf-result-bento .tf-section,.tf-result-bento .tf-actions{width:100%}.tf-arcade-page-head>.ds-button,.tf-arcade-page-head>.tf-link{justify-self:start;width:fit-content}.tf-arcade-page-head .tf-arcade-head-row{display:grid;gap:var(--ds-space-1)}.tf-subject--cartridge{grid-template-columns:auto minmax(0,1fr) auto;padding:var(--ds-space-4);border-width:2.5px}.tf-cartridge-icon-wrap{display:grid;justify-items:center;gap:4px;padding:var(--ds-space-2);border:var(--ds-stroke) solid var(--tone, var(--ds-border));border-radius:14px;background:var(--tone-soft, var(--ds-surface-sunken))}.tf-cartridge-icon-wrap .tf-skill-badge{width:34px}.tf-cartridge-slot{color:var(--tone-ink, var(--ds-text-muted));font-size:11px;font-weight:900;letter-spacing:.06em}.tf-cartridge-bar{display:block;width:100%;height:8px;margin-top:4px;border-radius:999px;background:var(--ds-surface-sunken);overflow:hidden}.tf-cartridge-bar-fill{display:block;height:100%;border-radius:inherit;background:var(--tone, var(--ds-brand))}.tf-welcome{max-width:680px}.tf-welcome .tf-benefits li{border-width:2.5px;border-color:var(--tone, var(--ds-border-strong));box-shadow:0 5px 0 var(--tone-ledge, var(--ds-border-strong))}.tf-player-passport{display:grid;gap:var(--ds-space-3);padding:var(--ds-space-4)}.tf-passport-main{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ds-space-3)}.tf-passport-avatar{display:grid;place-items:center;padding:var(--ds-space-2);border:var(--ds-stroke) solid var(--ds-grape);border-radius:16px;background:var(--ds-grape-soft)}.tf-passport-info{display:grid;gap:var(--ds-space-1);min-width:0;flex:1}.tf-passport-badges{display:flex;flex-wrap:wrap;gap:6px}.tf-passport-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border:var(--ds-stroke) solid var(--tone, var(--ds-border));border-radius:var(--ds-radius-pill);background:var(--tone-soft, var(--ds-surface-sunken));color:var(--tone-ink, var(--ds-text));font-size:var(--ds-text-xs);font-weight:900}.tf-passport-chip .tf-mini-candy{width:18px}.tf-passport-sub{font-size:var(--ds-text-sm);font-weight:700}.tf-player-passport .tf-passport-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--ds-space-2);padding-top:var(--ds-space-3);border-top:2px dashed var(--ds-border)}.tf-player-passport .tf-passport-actions .ds-button{white-space:nowrap}@media(max-width:520px){.tf-player-passport .tf-passport-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.tf-player-passport .tf-passport-actions>:first-child{grid-column:1 / -1}}.tf-bento-grid,.tf-bento-main,.tf-bento-side{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--ds-space-4);align-content:start;min-width:0}@media(min-width:900px){.tf-app{padding-left:112px;padding-bottom:var(--ds-space-8)}.tf-app>.tf-page{max-width:1060px;padding:var(--ds-space-6) var(--ds-space-6) var(--ds-space-8)}.tf-app>.tf-nav{inset:var(--ds-space-6) auto auto var(--ds-space-4);grid-template-columns:1fr;width:84px;max-width:84px;padding:var(--ds-space-3) var(--ds-space-2);border:2.5px solid var(--ds-border-strong);border-radius:24px;box-shadow:0 6px 0 var(--ds-border-strong);gap:var(--ds-space-2)}.tf-app>.tf-nav a{min-height:68px;border-radius:16px}.tf-bento-grid{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:start;gap:var(--ds-space-6)}.tf-page--practice .tf-subjects{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.tf-page--practice .tf-arcade-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.tf-round--arena .tf-round-bar,.tf-round--arena .tf-round-body{max-width:780px}.tf-vault-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--ds-space-4);align-items:start}.tf-app>.tf-result{justify-items:stretch;text-align:start}}@media(min-width:960px)and (min-height:760px){.tf-round--arena[data-type=read-tfng] .tf-round-bar,.tf-round--arena[data-type=read-tfng] .tf-round-body,.tf-round--arena[data-type=read-gap] .tf-round-bar,.tf-round--arena[data-type=read-gap] .tf-round-body{max-width:1040px}.tf-round--arena[data-type=read-tfng] .tf-task,.tf-round--arena[data-type=read-gap] .tf-task{grid-template-columns:minmax(0,1.15fr) minmax(0,.95fr);column-gap:var(--ds-space-6);align-items:start}.tf-round--arena[data-type=read-tfng] .tf-task>.tf-inst,.tf-round--arena[data-type=read-gap] .tf-task>.tf-inst{grid-column:1 / -1}.tf-round--arena[data-type=read-tfng] .tf-passage-block,.tf-round--arena[data-type=read-gap] .tf-passage-block{grid-column:1;grid-row:2 / span 5;position:sticky;top:var(--ds-space-3)}.tf-round--arena[data-type=read-tfng] .tf-task>:not(.tf-inst):not(.tf-passage-block),.tf-round--arena[data-type=read-gap] .tf-task>:not(.tf-inst):not(.tf-passage-block){grid-column:2}}@media(max-width:480px){.tf-round--arena .tf-options>li .tf-option:after,.tf-round--arena .tf-options>label.tf-option:after{display:none}}@media(max-width:480px){.tf-page--today .tf-hero-cta{order:1}.tf-page--today .tf-hero-top{order:2}.tf-page--today .tf-stage-meter{order:3}.tf-hero-top{flex-direction:column;align-items:stretch;gap:var(--ds-space-4)}.tf-hero-top .tf-mascot-pedestal{justify-self:stretch}.tf-hero-top .tf-bubble:before{top:-7px;left:44px;transform:rotate(45deg)}}@media(max-width:360px){.tf-hud-toggle span{display:none}.tf-hud-toggle{padding:4px 7px}.tf-hero-top{flex-wrap:wrap}.tf-skill-cartridge{padding:6px 4px;font-size:var(--ds-text-xs)}}.tf-stage-companion[data-fever=true]{border-color:var(--ds-pink);background:linear-gradient(135deg,var(--ds-pink-soft) 0%,var(--ds-surface) 100%);box-shadow:0 0 0 2px var(--ds-pink-soft),0 4px 14px var(--ds-pink-soft);animation:tf-fever-pulse 1.2s ease-in-out infinite alternate}@keyframes tf-fever-pulse{0%{transform:scale(1);filter:brightness(1)}to{transform:scale(1.015);filter:brightness(1.05)}}.tf-fever-badge{display:inline-flex;align-items:center;gap:var(--ds-space-1);padding:2px 10px;border-radius:var(--ds-radius-pill);background:var(--ds-pink-soft);color:var(--ds-pink-ink);border:var(--ds-stroke) solid var(--ds-pink-ledge);font-family:var(--ds-font);font-size:var(--ds-text-xs);font-weight:900;letter-spacing:.05em;text-transform:uppercase;box-shadow:0 2px 0 var(--ds-pink-ledge);animation:tf-fever-pop .4s var(--ds-ease-bounce) both}@keyframes tf-fever-pop{0%{transform:scale(.85)}60%{transform:scale(1.08)}to{transform:scale(1)}}.tf-juice-pop{display:inline-flex;align-items:center;gap:var(--ds-space-2);margin-left:auto;animation:tf-juice-float .6s var(--ds-ease-bounce) both}.tf-juice-num{font-family:var(--ds-font);font-size:var(--ds-text-xs);font-weight:900;padding:2px 8px;border-radius:var(--ds-radius-pill);background:var(--ds-mint-soft);color:var(--ds-mint-ink);border:var(--ds-stroke) solid var(--ds-mint);box-shadow:0 2px 0 var(--ds-mint-ledge)}@keyframes tf-juice-float{0%{transform:translateY(8px) scale(.7);opacity:0}50%{transform:translateY(-4px) scale(1.1);opacity:1}to{transform:translateY(0) scale(1);opacity:1}}.tf-quest-heading-wrap{display:flex;align-items:center;gap:var(--ds-space-2)}.tf-quest-all-badge{display:inline-flex;align-items:center;padding:1px 8px;border-radius:var(--ds-radius-pill);background:var(--ds-lemon-soft);color:var(--ds-lemon-ink);border:var(--ds-stroke) solid var(--ds-lemon);font-family:var(--ds-font);font-size:var(--ds-text-xs);font-weight:900;letter-spacing:.06em;box-shadow:0 1px 0 var(--ds-lemon-ledge);animation:tf-badge-shimmer 2s ease-in-out infinite alternate}@keyframes tf-badge-shimmer{0%{filter:brightness(1)}to{filter:brightness(1.12)}}.tf-guild-chest-banner{margin-top:var(--ds-space-3);padding-top:var(--ds-space-3);border-top:var(--ds-stroke) dashed var(--ds-border)}.tf-guild-chest-btn{display:flex;align-items:center;justify-content:center;gap:var(--ds-space-2);width:100%;padding:var(--ds-space-3) var(--ds-space-4);border:var(--ds-stroke) solid var(--ds-lemon);border-radius:var(--ds-radius-md);background:linear-gradient(135deg,var(--ds-lemon-soft) 0%,var(--ds-surface) 100%);color:var(--ds-lemon-ink);font-weight:800;font-size:var(--ds-text-sm);cursor:pointer;box-shadow:0 3px 0 var(--ds-lemon-ledge),0 6px 16px var(--ds-lemon-soft);transition:transform .12s ease,box-shadow .12s ease}.tf-guild-chest-btn:hover{transform:translateY(-2px);box-shadow:0 5px 0 var(--ds-lemon-ledge),0 8px 20px var(--ds-lemon-soft)}.tf-guild-chest-btn:active{transform:translateY(2px);box-shadow:0 1px 0 var(--ds-lemon-ledge)}.tf-guild-chest-btn-label{display:inline-flex;align-items:center;gap:var(--ds-space-1)}.tf-chest-bounce{font-size:1.4rem;animation:tf-chest-jump 1.6s ease-in-out infinite}@keyframes tf-chest-jump{0%,to{transform:translateY(0)}50%{transform:translateY(-4px) scale(1.08)}}.tf-guild-chest-claimed{display:flex;align-items:center;gap:var(--ds-space-3);padding:var(--ds-space-3);border:var(--ds-stroke) solid var(--ds-mint);border-radius:var(--ds-radius-md);background:var(--ds-mint-soft);color:var(--ds-mint-ink)}.tf-guild-chest-icon{font-size:1.5rem;line-height:1}.tf-guild-chest-desc strong{display:block;font-size:var(--ds-text-sm);font-weight:800}.tf-guild-chest-desc p{margin:2px 0 0;font-size:var(--ds-text-xs);opacity:.85}.tf-blitz-badge{display:inline-flex;align-items:center;gap:var(--ds-space-1);padding:2px 8px;border-radius:var(--ds-radius-pill);background:var(--ds-lemon-soft);color:var(--ds-lemon-ink);border:var(--ds-stroke) solid var(--ds-lemon-ledge);font-family:var(--ds-font);font-size:var(--ds-text-xs);font-weight:900;letter-spacing:.04em;box-shadow:0 1px 0 var(--ds-lemon-ledge);animation:tf-blitz-pop .35s var(--ds-ease-bounce) both}@keyframes tf-blitz-pop{0%{transform:scale(.85)}to{transform:scale(1)}}@media(prefers-reduced-motion:reduce){.tf-blitz-badge,.tf-fever-badge,.tf-juice-pop,.tf-stage-sparkle{animation:none}}.tf-word-vault-banner{display:flex;flex-direction:column;gap:var(--ds-space-3);margin-bottom:var(--ds-space-4);background:linear-gradient(135deg,var(--ds-lemon-soft) 0%,var(--ds-surface) 100%);border:var(--ds-stroke) solid var(--ds-lemon)}.tf-word-vault-top{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--ds-space-3);flex-wrap:wrap}.tf-mastery-pill{display:inline-flex;align-items:center;gap:var(--ds-space-1);padding:4px 12px;border-radius:var(--ds-radius-pill);background:var(--ds-surface);border:var(--ds-stroke) solid var(--ds-lemon);color:var(--ds-lemon-ink);font-size:var(--ds-text-xs);font-weight:700;box-shadow:0 1px 0 var(--ds-lemon-ledge)}.tf-mastery-pill strong{font-weight:900}.tf-lex-filters{display:flex;gap:var(--ds-space-2);flex-wrap:wrap}.tf-lex-btn{padding:4px 12px;border-radius:var(--ds-radius-pill);border:var(--ds-stroke) solid var(--ds-border);background:var(--ds-surface);color:var(--ds-text-muted);font-size:var(--ds-text-xs);font-weight:700;cursor:pointer;transition-property:transform,opacity,color,background-color,border-color,box-shadow,fill,stroke;transition-duration:.15s;transition-timing-function:ease}.tf-lex-btn:hover{border-color:var(--ds-lemon);color:var(--ds-text)}.tf-lex-btn[data-active]{border-color:var(--ds-lemon);background:var(--ds-lemon);color:var(--ds-lemon-ink);font-weight:900;box-shadow:0 2px 0 var(--ds-lemon-ledge)}.tf-lex-card{display:flex;flex-direction:column;gap:var(--ds-space-2)}.tf-word-top-row{display:flex;justify-content:space-between;align-items:center;gap:var(--ds-space-2)}.tf-word-title-group{display:flex;align-items:center;gap:var(--ds-space-2)}.tf-word-voice-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--ds-radius-pill);border:var(--ds-stroke) solid var(--ds-border);background:var(--ds-surface);color:var(--ds-text-muted);cursor:pointer;transition-property:transform,opacity,color,background-color,border-color,box-shadow,fill,stroke;transition-duration:.12s;transition-timing-function:ease}.tf-word-voice-btn:hover{border-color:var(--ds-lemon);color:var(--ds-lemon-ink);transform:scale(1.1)}.tf-word-stars{display:inline-flex;align-items:center;gap:2px}.tf-star{font-size:14px;line-height:1;color:var(--ds-border)}.tf-star[data-filled=true]{color:var(--ds-lemon);text-shadow:0 1px 2px var(--ds-lemon-ledge)}.tf-mastered-tag{margin-left:var(--ds-space-1);padding:1px 6px;border-radius:var(--ds-radius-pill);background:var(--ds-lemon-soft);border:var(--ds-stroke) solid var(--ds-lemon);color:var(--ds-lemon-ink);font-size:10px;font-weight:900;letter-spacing:.05em}.tf-quiz-prompt-wrap{display:flex;align-items:center;justify-content:center;gap:var(--ds-space-2)}.tf-center-note{text-align:center;margin-top:var(--ds-space-4)}.tf-keycap-hint{display:none}@media(min-width:600px){.tf-keycap-hint{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 var(--ds-space-1);border-radius:var(--ds-radius-sm);border:var(--ds-stroke) solid var(--ds-border-strong);background:var(--ds-surface);color:var(--ds-text-muted);font-family:inherit;font-size:var(--ds-text-xs);font-weight:800;box-shadow:0 1.5px 0 var(--ds-border-strong);margin-left:auto;-webkit-user-select:none;user-select:none}}.tf-word-banner-actions{display:flex;flex-wrap:wrap;gap:var(--ds-space-2)}.tf-word-mode-tabs{display:inline-flex;gap:var(--ds-space-1);background:var(--ds-surface-sunken);padding:3px;border-radius:var(--ds-radius-pill);border:var(--ds-stroke) solid var(--ds-border)}.tf-mode-tab{display:inline-flex;align-items:center;gap:var(--ds-space-1);padding:3px var(--ds-space-3);border-radius:var(--ds-radius-pill);border:none;background:transparent;color:var(--ds-text-muted);font-size:var(--ds-text-xs);font-weight:800;cursor:pointer;transition-property:transform,opacity,color,background-color,border-color,box-shadow,fill,stroke;transition-duration:.15s;transition-timing-function:ease}.tf-mode-tab[data-active=true]{background:var(--ds-surface);color:var(--ds-text);box-shadow:0 2px 4px var(--ds-border)}.tf-flashcard-wrap{display:flex;flex-direction:column;align-items:center;gap:var(--ds-space-4);margin-top:var(--ds-space-3)}.tf-flashcard{width:100%;max-width:440px;min-height:200px;perspective:1000px;cursor:pointer}.tf-flashcard-inner{position:relative;width:100%;min-height:200px;border-radius:var(--ds-radius-lg);border:var(--ds-stroke) solid var(--ds-border-strong);background:var(--ds-surface);box-shadow:0 var(--ds-ledge) 0 var(--ds-border-strong);padding:var(--ds-space-6) var(--ds-space-4);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;transition:transform .25s cubic-bezier(.34,1.56,.64,1),box-shadow .2s ease}.tf-flashcard:hover .tf-flashcard-inner{transform:translateY(-2px);box-shadow:0 6px 0 var(--ds-border-strong)}.tf-flashcard[data-flipped=true] .tf-flashcard-inner{border-color:var(--ds-mint);background:var(--ds-mint-soft);box-shadow:0 var(--ds-ledge) 0 var(--ds-mint-ledge)}.tf-flashcard[data-flipped=true] .tf-flashcard-front{display:none}.tf-flashcard:not([data-flipped=true]) .tf-flashcard-back{display:none}.tf-flashcard-front,.tf-flashcard-back{display:flex;flex-direction:column;align-items:center;gap:var(--ds-space-2);width:100%}.tf-flashcard-cue{font-size:10px;font-weight:900;letter-spacing:.08em;color:var(--ds-text-muted)}.tf-flashcard-word{font-size:var(--ds-text-title);font-weight:900;letter-spacing:-.02em;color:var(--ds-text);margin:0}.tf-flashcard-meta{display:flex;align-items:center;gap:var(--ds-space-2);margin-top:var(--ds-space-1)}.tf-flashcard-zh{font-size:var(--ds-text-lg);font-weight:800;color:var(--ds-mint-ink);margin:0}.tf-flashcard-subword{font-size:var(--ds-text-sm);color:var(--ds-text-muted);margin:0}.tf-flashcard-actions{display:flex;gap:var(--ds-space-3);width:100%;max-width:440px;justify-content:center}.tf-flashcard-actions button{flex:1}.tf-flashcard-prompt-actions{display:flex;justify-content:center}.tf-theme-pill-tabs{display:flex;flex-wrap:wrap;gap:var(--ds-space-2);margin-bottom:var(--ds-space-3)}.tf-theme-pill-btn{display:inline-flex;align-items:center;gap:var(--ds-space-1);padding:var(--ds-space-1) var(--ds-space-3);border-radius:var(--ds-radius-pill);border:var(--ds-stroke) solid var(--ds-border-strong);background:var(--ds-surface);color:var(--ds-text);font-size:var(--ds-text-xs);font-weight:800;cursor:pointer;transition-property:transform,opacity,color,background-color,border-color,box-shadow,fill,stroke;transition-duration:.15s;transition-timing-function:ease}.tf-theme-pill-btn:hover{border-color:var(--ds-lemon);transform:translateY(-1px)}.tf-theme-pill-btn[data-active=true]{border-color:var(--ds-lemon);background:var(--ds-lemon-soft);color:var(--ds-lemon-ink);box-shadow:0 var(--ds-ledge-sm) 0 var(--ds-lemon-ledge)}.tf-theme-badge{font-size:9px;font-weight:900;padding:1px 5px;border-radius:var(--ds-radius-pill);background:var(--ds-surface-sunken);color:var(--ds-text-muted)}.tf-humor-quote{margin:var(--ds-space-2) 0 0;padding:var(--ds-space-2);border-radius:var(--ds-radius-sm);background:var(--ds-surface-sunken);border-left:var(--ds-stroke) solid var(--ds-lemon);font-size:var(--ds-text-xs);color:var(--ds-text-muted);line-height:1.4}.tf-humor-ipa{margin-left:var(--ds-space-1);font-size:var(--ds-text-xs);color:var(--ds-text-muted);font-family:monospace}.tf-theme-add-btn{display:inline-flex;align-items:center;justify-content:center;padding:var(--ds-space-1) var(--ds-space-2);border-radius:var(--ds-radius-pill);border:var(--ds-stroke) solid var(--ds-border);background:var(--ds-surface);color:var(--ds-text);font-size:var(--ds-text-xs);font-weight:800;cursor:pointer;transition-property:transform,opacity,color,background-color,border-color,box-shadow,fill,stroke;transition-duration:.12s;transition-timing-function:ease}.tf-theme-add-btn:hover:not(:disabled){border-color:var(--ds-mint);color:var(--ds-mint-ink)}.tf-theme-add-btn:disabled{opacity:.5;cursor:default}.tf-story-paper{background:var(--ds-surface);border:var(--ds-stroke) solid var(--ds-border-strong);border-radius:var(--ds-radius-lg);padding:var(--ds-space-6) var(--ds-space-4);box-shadow:0 var(--ds-ledge) 0 var(--ds-border-strong)}.tf-story-header{margin-bottom:var(--ds-space-4);padding-bottom:var(--ds-space-3);border-bottom:var(--ds-stroke) dashed var(--ds-border)}.tf-story-header h3{margin:var(--ds-space-2) 0 var(--ds-space-1);font-size:var(--ds-text-lg);font-weight:900;color:var(--ds-text)}.tf-story-prose{font-size:var(--ds-text-base);line-height:2;color:var(--ds-text);white-space:pre-wrap}.tf-story-word-btn{display:inline-flex;align-items:baseline;gap:3px;padding:2px 7px;margin:0 3px;border-radius:var(--ds-radius-sm);border:var(--ds-stroke) solid var(--ds-pink);background:var(--ds-pink-soft);cursor:pointer;vertical-align:baseline;transition-property:transform,opacity,color,background-color,border-color,box-shadow,fill,stroke;transition-duration:.15s;transition-timing-function:ease}.tf-story-word-btn:hover{transform:translateY(-1px);box-shadow:0 2px 0 var(--ds-pink)}.tf-story-word-btn[data-active=true]{border-color:var(--ds-lemon);background:var(--ds-lemon-soft);box-shadow:0 2px 0 var(--ds-lemon-ledge)}.tf-story-word-btn .tf-story-en{font-weight:900;color:var(--ds-text)}.tf-story-word-btn .tf-story-zh{font-size:var(--ds-text-xs);color:var(--ds-text-muted)}.tf-story-word-callout{margin-top:var(--ds-space-4);padding:var(--ds-space-3) var(--ds-space-4);border-radius:var(--ds-radius-md);border:var(--ds-stroke) solid var(--ds-lemon);background:var(--ds-lemon-soft);box-shadow:0 var(--ds-ledge-sm) 0 var(--ds-lemon-ledge)}.tf-callout-top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--ds-space-2)}.tf-callout-info{display:flex;align-items:baseline;gap:var(--ds-space-2)}.tf-callout-word{font-size:var(--ds-text-lg);font-weight:900;color:var(--ds-text)}.tf-callout-ipa{font-size:var(--ds-text-xs);color:var(--ds-text-muted);font-family:monospace}.tf-callout-zh{font-size:var(--ds-text-sm);font-weight:800;color:var(--ds-lemon-ink)}.tf-chapter-nav{display:flex;flex-wrap:wrap;gap:var(--ds-space-2);margin-top:var(--ds-space-3)}.tf-chapter-pill{display:inline-flex;align-items:center;gap:var(--ds-space-1);padding:var(--ds-space-1) var(--ds-space-3);border-radius:var(--ds-radius-pill);border:var(--ds-stroke) solid var(--ds-border-strong);background:var(--ds-surface);color:var(--ds-text);font-size:var(--ds-text-xs);font-weight:800;cursor:pointer;transition-property:transform,opacity,color,background-color,border-color,box-shadow,fill,stroke;transition-duration:.15s;transition-timing-function:ease}.tf-chapter-pill:hover{border-color:var(--ds-pink);transform:translateY(-1px)}.tf-chapter-pill[data-active=true]{border-color:var(--ds-pink);background:var(--ds-pink-soft);color:var(--ds-pink-ink);box-shadow:0 var(--ds-ledge-sm) 0 var(--ds-pink-ledge)}.tf-chapter-badge{font-size:9px;font-weight:900;padding:1px 4px;border-radius:var(--ds-radius-sm);background:var(--ds-surface-sunken);color:var(--ds-text-muted)}.tf-story-choice-card{margin-top:var(--ds-space-4);padding:var(--ds-space-3) var(--ds-space-4);border-radius:var(--ds-radius-lg);border:var(--ds-stroke) solid var(--ds-pink);background:var(--ds-pink-soft);box-shadow:0 var(--ds-ledge-sm) 0 var(--ds-pink-ledge)}.tf-choice-cue{display:inline-block;font-size:var(--ds-text-xs);font-weight:900;color:var(--ds-pink-ink);margin-bottom:var(--ds-space-1)}.tf-choice-prompt p{margin:0 0 var(--ds-space-3);font-size:var(--ds-text-sm);font-weight:800;color:var(--ds-text)}.tf-choice-options{display:flex;flex-direction:column;gap:var(--ds-space-2)}.tf-choice-btn{display:flex;align-items:center;gap:var(--ds-space-2);padding:var(--ds-space-2) var(--ds-space-3);border-radius:var(--ds-radius-md);border:var(--ds-stroke) solid var(--ds-border-strong);background:var(--ds-surface);color:var(--ds-text);font-size:var(--ds-text-sm);cursor:pointer;text-align:left;transition-property:transform,opacity,color,background-color,border-color,box-shadow,fill,stroke;transition-duration:.15s;transition-timing-function:ease}.tf-choice-btn:hover{border-color:var(--ds-pink);transform:translateY(-1px)}.tf-choice-btn[data-selected=true]{border-color:var(--ds-pink);background:var(--ds-pink-soft);box-shadow:0 var(--ds-ledge-sm) 0 var(--ds-pink-ledge)}.tf-choice-label{font-weight:900;color:var(--ds-pink-ink)}.tf-choice-vocab{font-weight:800;font-style:italic;color:var(--ds-text)}.tf-choice-zh{font-size:var(--ds-text-xs);color:var(--ds-text-muted)}.tf-choice-reaction{margin-top:var(--ds-space-3);padding-top:var(--ds-space-3);border-top:var(--ds-stroke) dashed var(--ds-pink)}.tf-reaction-text{margin:0;font-size:var(--ds-text-sm);font-weight:700;color:var(--ds-text);line-height:1.5}.tf-reaction-hint{display:block;margin-top:var(--ds-space-1);font-size:var(--ds-text-xs);font-weight:800;color:var(--ds-mint-ink)}.tf-word-clash-arena{margin-top:var(--ds-space-4);padding:var(--ds-space-4);border-radius:var(--ds-radius-lg);border:var(--ds-stroke) solid var(--ds-lemon);box-shadow:0 var(--ds-ledge) 0 var(--ds-lemon-ledge)}.tf-clash-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-2);margin-bottom:var(--ds-space-3);padding-bottom:var(--ds-space-2);border-bottom:var(--ds-stroke) solid var(--ds-border)}.tf-clash-timer{display:inline-flex;align-items:center;gap:var(--ds-space-1);padding:var(--ds-space-1) var(--ds-space-2);border-radius:var(--ds-radius-pill);background:var(--ds-surface-sunken);color:var(--ds-text);font-size:var(--ds-text-sm);font-weight:900;font-family:monospace}.tf-clash-timer[data-urgent=true]{background:var(--ds-pink-soft);color:var(--ds-pink-ink);animation:pulse-border .8s infinite alternate}.tf-clash-combo{font-size:var(--ds-text-sm);font-weight:900;color:var(--ds-lemon-ink)}.tf-clash-combo[data-fever=true]{color:var(--ds-pink-ink);text-shadow:0 0 6px var(--ds-pink)}.tf-clash-score{font-size:var(--ds-text-sm);font-weight:900;color:var(--ds-mint-ink)}.tf-word-clash-finish{margin-top:var(--ds-space-4);padding:var(--ds-space-6) var(--ds-space-4);border-radius:var(--ds-radius-lg);border:var(--ds-stroke) solid var(--ds-grape);box-shadow:0 var(--ds-ledge) 0 var(--ds-grape-ledge)}.tf-clash-grade{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--ds-radius-md);border:var(--ds-stroke) solid var(--ds-border-strong);font-size:var(--ds-text-lg);font-weight:900;background:var(--ds-surface-sunken);color:var(--ds-text)}.tf-clash-grade[data-grade=SSS],.tf-clash-grade[data-grade=SS]{background:var(--ds-lemon-soft);color:var(--ds-lemon-ink);border-color:var(--ds-lemon)}.tf-clash-result-box{margin:var(--ds-space-4) 0;padding:var(--ds-space-4);border-radius:var(--ds-radius-md);background:var(--ds-surface-sunken);text-align:center}.tf-clash-score-hero{display:flex;flex-direction:column;align-items:center;margin-bottom:var(--ds-space-3)}.tf-clash-score-num{font-size:2.2rem;font-weight:900;line-height:1;color:var(--ds-text);font-family:monospace}.tf-clash-score-lbl{font-size:var(--ds-text-xs);font-weight:800;color:var(--ds-text-muted);letter-spacing:1px}.tf-clash-stats-row{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--ds-space-2);padding-top:var(--ds-space-3);border-top:var(--ds-stroke) dashed var(--ds-border)}.tf-clash-stats-row strong{display:block;font-size:var(--ds-text-base);font-weight:900;color:var(--ds-text)}.tf-clash-stats-row span{font-size:var(--ds-text-xs);color:var(--ds-text-muted)}.tf-passage-highlight{background:var(--ds-lemon-soft);border-bottom:2px solid var(--ds-lemon);padding:1px 3px;border-radius:var(--ds-radius-sm);color:var(--ds-text)}.tf-passage-toolbar{display:flex;align-items:center;gap:var(--ds-space-2);margin-bottom:var(--ds-space-2)}.tf-boss-rush-card{margin-bottom:var(--ds-space-4);padding:var(--ds-space-4);border-radius:var(--ds-radius-lg);border:var(--ds-stroke) solid var(--ds-pink);background:var(--ds-surface);box-shadow:0 var(--ds-ledge) 0 var(--ds-pink-ledge)}.tf-boss-head{display:flex;align-items:center;gap:var(--ds-space-3);margin-bottom:var(--ds-space-3)}.tf-boss-avatar{font-size:2.2rem;line-height:1}.tf-boss-info{flex:1}.tf-boss-name{font-size:var(--ds-text-base);font-weight:900;color:var(--ds-text);margin-bottom:2px}.tf-boss-hp-wrap{display:flex;align-items:center;gap:var(--ds-space-2)}.tf-boss-hp-bar{flex:1;height:10px;border-radius:var(--ds-radius-pill);background:var(--ds-surface-sunken);border:var(--ds-stroke) solid var(--ds-border);overflow:hidden}.tf-boss-hp-fill{display:block;height:100%;background:var(--ds-pink);transition:width .3s ease}.tf-boss-hp-text{font-size:var(--ds-text-xs);font-weight:800;color:var(--ds-text-muted);font-family:monospace}.tf-shadowing-clinic{margin-top:var(--ds-space-3);padding:var(--ds-space-3);border-radius:var(--ds-radius-md);border:var(--ds-stroke) solid var(--ds-sky);background:var(--ds-sky-soft)}.tf-shadowing-top{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-2);margin-bottom:var(--ds-space-2)}.tf-shadowing-actions{display:flex;align-items:center;gap:var(--ds-space-2)}.tf-shadowing-hint{font-size:var(--ds-text-xs);color:var(--ds-sky-ink);font-weight:800}.tf-mascot-care-station{margin-top:var(--ds-space-4);padding:var(--ds-space-4);border-radius:var(--ds-radius-lg);border:var(--ds-stroke) solid var(--ds-lemon);background:var(--ds-surface);box-shadow:0 var(--ds-ledge) 0 var(--ds-lemon-ledge)}.tf-care-top{display:flex;align-items:center;gap:var(--ds-space-3);margin-bottom:var(--ds-space-3)}.tf-care-meta{flex:1}.tf-care-title{font-size:var(--ds-text-base);font-weight:900;color:var(--ds-text);margin-bottom:2px}.tf-intimacy-bar{flex:1;height:8px;border-radius:var(--ds-radius-pill);background:var(--ds-surface-sunken);border:var(--ds-stroke) solid var(--ds-border);overflow:hidden;margin:var(--ds-space-1) 0}.tf-intimacy-fill{display:block;height:100%;background:var(--ds-lemon);transition:width .3s ease}.tf-mascot-quote{margin:var(--ds-space-2) 0 var(--ds-space-3);padding:var(--ds-space-2) var(--ds-space-3);border-radius:var(--ds-radius-md);background:var(--ds-surface-sunken);border-left:3px solid var(--ds-lemon);font-size:var(--ds-text-sm);color:var(--ds-text);font-style:italic}.tf-persona-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--ds-space-2);margin:var(--ds-space-3) 0}.tf-persona-card{display:flex;flex-direction:column;padding:var(--ds-space-2) var(--ds-space-3);border-radius:var(--ds-radius-md);border:var(--ds-stroke) solid var(--ds-border);background:var(--ds-surface);cursor:pointer;text-align:left;transition-property:transform,opacity,color,background-color,border-color,box-shadow,fill,stroke;transition-duration:.15s;transition-timing-function:ease}.tf-persona-card:hover{border-color:var(--ds-lemon);transform:translateY(-1px)}.tf-persona-card[data-active=true]{border-color:var(--ds-lemon);background:var(--ds-lemon-soft);box-shadow:0 var(--ds-ledge-sm) 0 var(--ds-lemon-ledge)}.tf-persona-name{font-weight:900;font-size:var(--ds-text-xs);color:var(--ds-text)}.tf-persona-desc{font-size:var(--ds-text-xs);color:var(--ds-text-muted);margin-top:2px}.tf-match-arena{margin-top:var(--ds-space-4);padding:var(--ds-space-4);border-radius:var(--ds-radius-lg);border:var(--ds-stroke) solid var(--ds-lemon);box-shadow:0 var(--ds-ledge) 0 var(--ds-lemon-ledge)}.tf-match-cue{margin-bottom:var(--ds-space-3)}.tf-match-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--ds-space-2)}.tf-match-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--ds-space-3) var(--ds-space-2);min-height:72px;border-radius:var(--ds-radius-md);border:var(--ds-stroke) solid var(--ds-border-strong);background:var(--ds-surface);cursor:pointer;transition-property:transform,opacity,color,background-color,border-color,box-shadow,fill,stroke;transition-duration:.15s;transition-timing-function:ease;text-align:center}.tf-match-tile:hover:not(:disabled){border-color:var(--ds-lemon);transform:translateY(-2px)}.tf-match-tile[data-selected=true]{border-color:var(--ds-lemon);background:var(--ds-lemon-soft);box-shadow:0 var(--ds-ledge-sm) 0 var(--ds-lemon-ledge)}.tf-match-tile[data-matched=true]{opacity:.2;cursor:default;transform:scale(.95);border-color:var(--ds-mint);background:var(--ds-mint-soft)}.tf-match-tile[data-shake=true]{animation:shake .3s ease-in-out;border-color:var(--ds-pink);background:var(--ds-pink-soft)}.tf-tile-text{font-size:var(--ds-text-sm);font-weight:900;color:var(--ds-text);line-height:1.3}.tf-tile-zh{font-size:var(--ds-text-xs);color:var(--ds-text-muted);margin-top:3px}.tf-transformer-card{margin-top:var(--ds-space-4);padding:var(--ds-space-4);border-radius:var(--ds-radius-lg);border:var(--ds-stroke) solid var(--ds-sky);background:var(--ds-surface);box-shadow:0 var(--ds-ledge) 0 var(--ds-sky-ledge)}.tf-transformer-top{margin-bottom:var(--ds-space-3);padding-bottom:var(--ds-space-2);border-bottom:var(--ds-stroke) solid var(--ds-border)}.tf-transformer-title{margin:var(--ds-space-1) 0;font-size:var(--ds-text-base);font-weight:900;color:var(--ds-text)}.tf-topic-tabs{display:flex;flex-wrap:wrap;gap:var(--ds-space-2);margin-bottom:var(--ds-space-3)}.tf-tier-stepper{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--ds-space-2);margin-bottom:var(--ds-space-3)}.tf-tier-btn{display:flex;flex-direction:column;align-items:center;padding:var(--ds-space-2);border-radius:var(--ds-radius-md);border:var(--ds-stroke) solid var(--ds-border);background:var(--ds-surface-sunken);cursor:pointer;transition-property:transform,opacity,color,background-color,border-color,box-shadow,fill,stroke;transition-duration:.15s;transition-timing-function:ease}.tf-tier-btn:hover{border-color:var(--ds-sky)}.tf-tier-btn[data-active=true]{border-color:var(--ds-sky);background:var(--ds-sky-soft);box-shadow:0 var(--ds-ledge-sm) 0 var(--ds-sky-ledge)}.tf-tier-badge{font-size:var(--ds-text-xs);font-weight:900;color:var(--ds-text)}.tf-tier-name{font-size:10px;color:var(--ds-text-muted);margin-top:2px}.tf-sentence-display-box{padding:var(--ds-space-4);border-radius:var(--ds-radius-md);background:var(--ds-surface-sunken);border:var(--ds-stroke) solid var(--ds-border)}.tf-sentence-display-box[data-band="8.0+"]{border-color:var(--ds-lemon);background:var(--ds-lemon-soft)}.tf-sentence-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--ds-space-3)}.tf-sentence-quote{margin:0 0 var(--ds-space-3);font-size:var(--ds-text-base);font-weight:800;line-height:1.6;color:var(--ds-text);font-style:italic}.tf-grammar-diagnostic{padding-top:var(--ds-space-2);border-top:var(--ds-stroke) dashed var(--ds-border)}.tf-grammar-pill{font-size:var(--ds-text-xs);color:var(--ds-text);margin-bottom:var(--ds-space-1)}.tf-grammar-pill strong{color:var(--ds-sky-ink)}.tf-grammar-note{margin:0;font-size:var(--ds-text-xs);color:var(--ds-text-muted)}.tf-stress-heatmap-row{display:inline-flex;align-items:center;gap:var(--ds-space-1);margin-left:var(--ds-space-2)}.tf-syllable-pill{display:inline-flex;align-items:center;justify-content:center;padding:1px 6px;border-radius:var(--ds-radius-pill);font-size:var(--ds-text-xs);font-family:monospace;font-weight:800;border:var(--ds-stroke) solid var(--ds-border);background:var(--ds-surface-sunken);color:var(--ds-text-muted)}.tf-syllable-pill[data-stress=true]{background:var(--ds-lemon-soft);border-color:var(--ds-lemon);color:var(--ds-lemon-ink);font-weight:900;box-shadow:0 0 6px var(--ds-lemon)}.tf-syllable-pill[data-weak=true]{opacity:.6}.tf-trap-clinic-box{margin-top:var(--ds-space-3)}.tf-trap-clinic-bar{display:flex}.tf-trap-toggle-btn{display:inline-flex;align-items:center;gap:var(--ds-space-2);padding:var(--ds-space-2) var(--ds-space-3);border-radius:var(--ds-radius-pill);border:var(--ds-stroke) solid var(--ds-pink);background:var(--ds-pink-soft);color:var(--ds-pink-ink);font-size:var(--ds-text-xs);font-weight:800;cursor:pointer;transition-property:transform,opacity,color,background-color,border-color,box-shadow,fill,stroke;transition-duration:.15s;transition-timing-function:ease}.tf-trap-toggle-btn:hover{transform:translateY(-1px);box-shadow:0 var(--ds-ledge-sm) 0 var(--ds-pink-ledge)}.tf-trap-detail-panel{margin-top:var(--ds-space-3);padding:var(--ds-space-3);border-radius:var(--ds-radius-lg);border:var(--ds-stroke) solid var(--ds-pink);background:var(--ds-surface)}.tf-detective-callout{display:grid;gap:var(--ds-space-1);padding:var(--ds-space-2) var(--ds-space-3);margin-bottom:var(--ds-space-3);border-radius:var(--ds-radius-md);border:var(--ds-stroke) solid var(--ds-fox);background:var(--ds-fox-soft)}.tf-detective-callout[data-result=wrong]{border-color:var(--ds-pink);background:var(--ds-pink-soft)}.tf-detective-callout-head{display:flex;align-items:center;gap:var(--ds-space-2)}.tf-detective-badge{font-size:var(--ds-text-xs);font-weight:900;color:var(--ds-fox-ink)}.tf-detective-callout[data-result=wrong] .tf-detective-badge{color:var(--ds-pink-ink)}.tf-detective-sub{font-size:var(--ds-text-xs);font-weight:700;color:var(--ds-text-muted)}.tf-detective-insight{margin:0;font-size:var(--ds-text-xs);color:var(--ds-text);line-height:var(--ds-leading);font-weight:700}.tf-trap-chips{display:flex;flex-wrap:wrap;gap:var(--ds-space-2);margin-bottom:var(--ds-space-3)}.tf-trap-content-card{padding:var(--ds-space-3);border-radius:var(--ds-radius-md);background:var(--ds-surface-sunken);border-left:3px solid var(--ds-pink)}.tf-trap-head-row{margin-bottom:var(--ds-space-2)}.tf-trap-section{margin-top:var(--ds-space-2)}.tf-trap-lbl{display:block;font-size:var(--ds-text-xs);font-weight:900;color:var(--ds-text);margin-bottom:2px}.tf-trap-desc{margin:0;font-size:var(--ds-text-xs);color:var(--ds-text-muted);line-height:1.5}.tf-trap-defense{padding-top:var(--ds-space-2);border-top:var(--ds-stroke) dashed var(--ds-border)}.tf-trap-defense .tf-trap-lbl{color:var(--ds-mint-ink)}.tf-focus-room-card{margin-top:var(--ds-space-4);padding:var(--ds-space-6) var(--ds-space-4);border-radius:var(--ds-radius-lg);border:var(--ds-stroke) solid var(--ds-mint);background:var(--ds-surface);box-shadow:0 var(--ds-ledge) 0 var(--ds-mint-ledge)}.tf-focus-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--ds-space-3)}.tf-focus-title{margin:0;font-size:var(--ds-text-base);font-weight:900;color:var(--ds-text);overflow-wrap:anywhere;word-break:break-word}.tf-focus-desk-stage{display:flex;flex-direction:column;align-items:center;padding:var(--ds-space-4) 0;margin-bottom:var(--ds-space-3);border-radius:var(--ds-radius-md);background:var(--ds-surface-sunken);position:relative}.tf-focus-mascot-wrap{position:relative;display:inline-block}.tf-desk-lamp{position:absolute;top:-12px;right:-16px;font-size:1.5rem}.tf-focus-tree-badge{display:inline-flex;align-items:center;gap:var(--ds-space-2);margin-top:var(--ds-space-3);padding:var(--ds-space-1) var(--ds-space-3);border-radius:var(--ds-radius-pill);background:var(--ds-surface);border:var(--ds-stroke) solid var(--ds-border)}.tf-tree-icon{font-size:1.2rem}.tf-tree-label{font-size:var(--ds-text-xs);font-weight:800;color:var(--ds-mint-ink)}.tf-focus-timer-hero{text-align:center;margin-bottom:var(--ds-space-4)}.tf-timer-display{display:block;font-size:2.8rem;font-weight:900;font-family:monospace;color:var(--ds-text);line-height:1;letter-spacing:2px;margin-bottom:var(--ds-space-2)}.tf-focus-progress-bar{height:8px;border-radius:var(--ds-radius-pill);background:var(--ds-surface-sunken);border:var(--ds-stroke) solid var(--ds-border);overflow:hidden;max-width:280px;margin:0 auto}.tf-focus-progress-fill{display:block;height:100%;background:var(--ds-mint);transition:width .3s ease}.tf-focus-complete-banner{display:flex;align-items:center;gap:var(--ds-space-2);padding:var(--ds-space-3);border-radius:var(--ds-radius-md);background:var(--ds-mint-soft);border:var(--ds-stroke) solid var(--ds-mint);color:var(--ds-mint-ink);font-size:var(--ds-text-sm);font-weight:800;margin-bottom:var(--ds-space-3)}.tf-focus-actions{display:flex;justify-content:center;align-items:center;gap:var(--ds-space-2)}.tf-examiner-studio-card{margin-bottom:var(--ds-space-6);border:var(--ds-stroke) solid var(--ds-border-strong);border-bottom-width:var(--ds-ledge);background:var(--ds-surface);border-radius:var(--ds-radius-lg);padding:var(--ds-space-4)}.tf-examiners-selector{display:flex;gap:var(--ds-space-2);margin-bottom:var(--ds-space-4);flex-wrap:wrap}.tf-examiner-pill-btn{display:flex;align-items:center;gap:var(--ds-space-2);padding:var(--ds-space-2) var(--ds-space-3);border-radius:var(--ds-radius-md);border:var(--ds-stroke) solid var(--ds-border);background:var(--ds-surface-sunken);color:var(--ds-text);font-family:inherit;font-weight:700;cursor:pointer;transition-property:transform,opacity,color,background-color,border-color,box-shadow,fill,stroke;transition-duration:var(--ds-motion-base);transition-timing-function:var(--ds-ease-out)}.tf-examiner-pill-btn.is-active{border-color:var(--ds-grape);background:var(--ds-grape-soft);color:var(--ds-grape-ink);box-shadow:0 0 0 2px var(--ds-grape)}.tf-examiner-avatar{font-size:var(--ds-text-title);line-height:1}.tf-examiner-meta{display:flex;flex-direction:column;text-align:left}.tf-examiner-name{font-size:var(--ds-text-sm)}.tf-examiner-accent{font-size:var(--ds-text-xs);color:var(--ds-text-muted)}.tf-topic-tabs-row{display:flex;gap:var(--ds-space-2);margin-bottom:var(--ds-space-4);flex-wrap:wrap}.tf-topic-tab{padding:var(--ds-space-1) var(--ds-space-3);border-radius:var(--ds-radius-pill);border:var(--ds-stroke) solid var(--ds-border);background:var(--ds-surface);font-size:var(--ds-text-xs);font-weight:700;color:var(--ds-text-muted);cursor:pointer}.tf-topic-tab.is-active{background:var(--ds-pink-soft);border-color:var(--ds-pink);color:var(--ds-pink-ink)}.tf-examiner-stage{display:flex;gap:var(--ds-space-3);margin-bottom:var(--ds-space-4);align-items:flex-start}.tf-examiner-avatar-box{display:flex;flex-direction:column;align-items:center;gap:var(--ds-space-1)}.tf-examiner-avatar-large{font-size:2.5rem;line-height:1}.tf-examiner-speech-bubble{flex:1;background:var(--ds-surface-sunken);border:var(--ds-stroke) solid var(--ds-border);border-radius:var(--ds-radius-md);padding:var(--ds-space-3)}.tf-bubble-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--ds-space-2)}.tf-examiner-title{font-size:var(--ds-text-xs);font-weight:800;color:var(--ds-text-muted)}.tf-examiner-prompt-text{font-size:var(--ds-text-base);font-weight:700;color:var(--ds-text);line-height:var(--ds-leading);margin:0}.tf-collocations-target-bar{display:flex;align-items:center;gap:var(--ds-space-2);padding:var(--ds-space-2) var(--ds-space-3);background:var(--ds-lemon-soft);border:var(--ds-stroke) solid var(--ds-lemon);border-radius:var(--ds-radius-md);margin-bottom:var(--ds-space-4);flex-wrap:wrap}.tf-target-label{font-size:var(--ds-text-xs);font-weight:800;color:var(--ds-lemon-ink)}.tf-target-pill{font-size:var(--ds-text-xs);font-weight:700;background:var(--ds-surface);border:var(--ds-stroke) solid var(--ds-border-strong);border-radius:var(--ds-radius-pill);padding:2px var(--ds-space-2);color:var(--ds-text)}.tf-speaking-record-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-3);margin-bottom:var(--ds-space-4);flex-wrap:wrap}.tf-record-status{display:flex;align-items:center;gap:var(--ds-space-2);font-size:var(--ds-text-sm);font-weight:700;color:var(--ds-text-muted)}.tf-record-pulse-dot{width:10px;height:10px;border-radius:var(--ds-radius-pill);background:var(--ds-bad)}.tf-feedback-card{background:var(--ds-mint-soft);border:var(--ds-stroke) solid var(--ds-mint);border-radius:var(--ds-radius-md);padding:var(--ds-space-3);margin-bottom:var(--ds-space-4)}.tf-feedback-head-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--ds-space-3)}.tf-band-score-pill{font-size:var(--ds-text-sm);font-weight:900;color:var(--ds-mint-ink);background:var(--ds-surface);border:var(--ds-stroke) solid var(--ds-mint);border-radius:var(--ds-radius-pill);padding:2px var(--ds-space-3)}.tf-dimension-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:var(--ds-space-2);margin-bottom:var(--ds-space-3)}.tf-dim-item{display:flex;flex-direction:column;background:var(--ds-surface);border:var(--ds-stroke) solid var(--ds-border);border-radius:var(--ds-radius-sm);padding:var(--ds-space-2);font-size:var(--ds-text-xs)}.tf-dim-name{color:var(--ds-text-muted)}.tf-dim-score{font-weight:800;color:var(--ds-text)}.tf-fsrs-radar-card{margin-bottom:var(--ds-space-6);border:var(--ds-stroke) solid var(--ds-border-strong);border-bottom-width:var(--ds-ledge);background:var(--ds-surface);border-radius:var(--ds-radius-lg);padding:var(--ds-space-4)}.tf-fsrs-hero-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--ds-space-3);margin-bottom:var(--ds-space-4)}.tf-fsrs-hero-metric{padding:var(--ds-space-3);border-radius:var(--ds-radius-md);border:var(--ds-stroke) solid var(--ds-border);background:var(--ds-surface-sunken);text-align:center}.tf-fsrs-hero-metric[data-tone=mint]{background:var(--ds-mint-soft);border-color:var(--ds-mint);color:var(--ds-mint-ink)}.tf-fsrs-hero-metric[data-tone=pink]{background:var(--ds-pink-soft);border-color:var(--ds-pink);color:var(--ds-pink-ink)}.tf-metric-val{display:block;font-size:var(--ds-text-display);font-weight:900;line-height:1.1}.tf-metric-lbl{font-size:var(--ds-text-xs);font-weight:700}.tf-forecast-bars-wrap{background:var(--ds-surface-sunken);border:var(--ds-stroke) solid var(--ds-border);border-radius:var(--ds-radius-md);padding:var(--ds-space-3);margin-bottom:var(--ds-space-4)}.tf-forecast-title{display:block;font-size:var(--ds-text-xs);font-weight:800;color:var(--ds-text-muted);margin-bottom:var(--ds-space-3)}.tf-forecast-chart{display:flex;justify-content:space-between;align-items:flex-end;height:140px;padding:0 var(--ds-space-2);gap:var(--ds-space-2)}.tf-forecast-col{flex:1;display:flex;flex-direction:column;align-items:center;height:100%}.tf-col-pct{font-size:var(--ds-text-xs);font-weight:800;color:var(--ds-text-muted);margin-bottom:var(--ds-space-1)}.tf-col-track{flex:1;width:100%;max-width:28px;background:var(--ds-border);border-radius:var(--ds-radius-pill);display:flex;align-items:flex-end;overflow:hidden}.tf-col-fill{width:100%;background:var(--ds-mint);border-radius:var(--ds-radius-pill);transition:height .4s ease}.tf-col-fill[data-warning]{background:var(--ds-lemon)}.tf-col-fill[data-danger]{background:var(--ds-bad)}.tf-col-label{font-size:var(--ds-text-xs);font-weight:700;color:var(--ds-text);margin-top:var(--ds-space-2)}.tf-fsrs-explanation{background:var(--ds-surface);border:var(--ds-stroke) solid var(--ds-border);border-radius:var(--ds-radius-md);padding:var(--ds-space-3);margin-bottom:var(--ds-space-4);font-size:var(--ds-text-xs);color:var(--ds-text-muted);line-height:var(--ds-leading)}.tf-guild-raid-card{margin-bottom:var(--ds-space-6);border:var(--ds-stroke) solid var(--ds-border-strong);border-bottom-width:var(--ds-ledge);background:var(--ds-surface);border-radius:var(--ds-radius-lg);padding:var(--ds-space-4);max-width:100%;box-sizing:border-box;overflow:hidden}.tf-boss-stage-box{background:var(--ds-surface-sunken);border:var(--ds-stroke) solid var(--ds-border);border-radius:var(--ds-radius-md);padding:var(--ds-space-4);margin-bottom:var(--ds-space-4);max-width:100%;box-sizing:border-box;min-width:0}.tf-boss-battlefield{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--ds-space-3);margin-bottom:var(--ds-space-4);padding:var(--ds-space-3);border-radius:var(--ds-radius-card);background:var(--ds-surface);border:var(--ds-stroke) solid var(--ds-border);max-width:100%;box-sizing:border-box;min-width:0}.tf-boss-hero-side{display:flex;flex-direction:column;align-items:center;gap:var(--ds-space-1)}.tf-hero-stance-tag{font-size:var(--ds-text-xs);font-weight:800;color:var(--ds-fox-ink);background:var(--ds-fox-soft);padding:2px 8px;border-radius:var(--ds-radius-pill)}.tf-boss-vs-tag{font-size:var(--ds-text-base);font-weight:900;color:var(--ds-bad-ink);font-style:italic;letter-spacing:.08em}.tf-boss-avatar-banner{display:flex;align-items:center;gap:var(--ds-space-3);margin-bottom:var(--ds-space-3)}.tf-boss-giant-emoji{font-size:3rem;line-height:1}.tf-boss-meta{display:flex;flex-direction:column}.tf-boss-name{font-size:var(--ds-text-lg);font-weight:900;color:var(--ds-text)}.tf-boss-title{font-size:var(--ds-text-xs);color:var(--ds-text-muted);margin-bottom:var(--ds-space-1)}.tf-boss-weakness{display:flex;align-items:center;gap:var(--ds-space-1);font-size:var(--ds-text-xs);font-weight:700;color:var(--ds-fox-ink)}.tf-boss-hp-section{margin-bottom:var(--ds-space-4)}.tf-boss-hp-labels{display:flex;justify-content:space-between;font-size:var(--ds-text-xs);font-weight:800;margin-bottom:var(--ds-space-1)}.tf-boss-hp-track{height:12px;background:var(--ds-border);border-radius:var(--ds-radius-pill);overflow:hidden}.tf-boss-hp-fill{height:100%;background:var(--ds-mint);transition:width .3s ease}.tf-boss-hp-fill[data-critical]{background:var(--ds-bad)}.tf-attack-toast{padding:var(--ds-space-2) var(--ds-space-3);background:var(--ds-lemon-soft);border:var(--ds-stroke) solid var(--ds-lemon);border-radius:var(--ds-radius-md);color:var(--ds-lemon-ink);font-weight:800;font-size:var(--ds-text-sm);text-align:center;margin-bottom:var(--ds-space-3);animation:pulse .3s ease-out}.tf-raid-actions-row{display:flex;gap:var(--ds-space-2);flex-wrap:wrap}.tf-boss-defeated-banner{display:flex;align-items:center;gap:var(--ds-space-3);padding:var(--ds-space-3);background:var(--ds-mint-soft);border:var(--ds-stroke) solid var(--ds-mint);border-radius:var(--ds-radius-md);flex-wrap:wrap}.tf-defeated-info strong{display:block;font-size:var(--ds-text-base);color:var(--ds-mint-ink)}.tf-defeated-info p{font-size:var(--ds-text-xs);color:var(--ds-text-muted);margin:0}.tf-party-meter-section{background:var(--ds-surface);border:var(--ds-stroke) solid var(--ds-border);border-radius:var(--ds-radius-md);padding:var(--ds-space-3)}.tf-subheading{font-size:var(--ds-text-sm);font-weight:800;margin:0;color:var(--ds-text)}.tf-party-list{display:flex;flex-direction:column;gap:var(--ds-space-2);margin-top:var(--ds-space-3)}.tf-party-item{display:flex;align-items:center;justify-content:space-between;padding:var(--ds-space-2) var(--ds-space-3);border-radius:var(--ds-radius-md);background:var(--ds-surface-sunken);border:var(--ds-stroke) solid var(--ds-border)}.tf-party-item.is-me{background:var(--ds-sky-soft);border-color:var(--ds-sky)}.tf-party-avatar-col{display:flex;align-items:center;gap:var(--ds-space-2)}.tf-party-avatar{font-size:1.5rem}.tf-party-name{font-size:var(--ds-text-sm);font-weight:800;display:flex;align-items:center;gap:var(--ds-space-1)}.tf-party-role{font-size:var(--ds-text-xs);color:var(--ds-text-muted);display:block}.tf-party-dmg{font-size:var(--ds-text-sm);font-weight:900;color:var(--ds-caramel-ink)}.tf-ranked-league-card{margin-bottom:var(--ds-space-6);border:var(--ds-stroke) solid var(--ds-border-strong);border-bottom-width:var(--ds-ledge);background:var(--ds-surface);border-radius:var(--ds-radius-lg);padding:var(--ds-space-4);max-width:100%;box-sizing:border-box;overflow:hidden}.tf-band-radar-box{display:grid;grid-template-columns:180px 1fr;gap:var(--ds-space-4);background:var(--ds-surface-sunken);border:var(--ds-stroke) solid var(--ds-border);border-radius:var(--ds-radius-md);padding:var(--ds-space-3);margin-bottom:var(--ds-space-4);max-width:100%;box-sizing:border-box;min-width:0}@media(max-width:600px){.tf-band-radar-box{grid-template-columns:100%}}.tf-overall-band-col{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.tf-band-circle{width:90px;height:90px;border-radius:var(--ds-radius-pill);border:4px solid var(--ds-sky);background:var(--ds-surface);display:flex;flex-direction:column;align-items:center;justify-content:center;margin-bottom:var(--ds-space-2)}.tf-band-number{font-size:var(--ds-text-display);font-weight:900;color:var(--ds-sky-ink);line-height:1}.tf-band-label{font-size:var(--ds-text-xs);font-weight:800;color:var(--ds-text-muted)}.tf-target-comparison{display:flex;flex-direction:column;align-items:center;gap:var(--ds-space-1)}.tf-target-badge{display:flex;align-items:center;gap:var(--ds-space-1);font-size:var(--ds-text-xs);font-weight:800;color:var(--ds-mint-ink)}.tf-gap-tip{font-size:var(--ds-text-xs);color:var(--ds-text-muted);line-height:1.3}.tf-skills-breakdown-col{display:flex;flex-direction:column;justify-content:center;gap:var(--ds-space-2)}.tf-skill-meter-row{display:flex;flex-direction:column;gap:2px}.tf-skill-name-col{display:flex;justify-content:space-between;align-items:center;font-size:var(--ds-text-xs);font-weight:700}.tf-skill-score{font-weight:800;color:var(--ds-text)}.tf-skill-track{height:8px;background:var(--ds-border);border-radius:var(--ds-radius-pill);overflow:hidden}.tf-skill-fill{height:100%;background:var(--ds-sky);border-radius:var(--ds-radius-pill)}.tf-league-leaderboard-box{background:var(--ds-surface);border:var(--ds-stroke) solid var(--ds-border);border-radius:var(--ds-radius-md);padding:var(--ds-space-3);max-width:100%;box-sizing:border-box;min-width:0;overflow:hidden}.tf-leaderboard-header-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--ds-space-3);flex-wrap:wrap;gap:var(--ds-space-2);min-width:0}.tf-promo-info{display:flex;align-items:center;gap:var(--ds-space-2);flex-wrap:wrap;min-width:0}.tf-promo-zone-tag{font-size:var(--ds-text-xs);font-weight:800;color:var(--ds-mint-ink);background:var(--ds-mint-soft);border:var(--ds-stroke) solid var(--ds-mint);border-radius:var(--ds-radius-pill);padding:2px var(--ds-space-2)}.tf-timer-badge{font-size:var(--ds-text-xs);color:var(--ds-text-muted)}.tf-current-tier-pill{font-size:var(--ds-text-xs);font-weight:700;color:var(--ds-grape-ink)}.tf-league-player-table{display:flex;flex-direction:column;gap:var(--ds-space-1);min-width:0}.tf-league-row{display:flex;align-items:center;justify-content:space-between;padding:var(--ds-space-2) var(--ds-space-3);border-radius:var(--ds-radius-md);background:var(--ds-surface-sunken);border:var(--ds-stroke) solid transparent;min-width:0;max-width:100%;box-sizing:border-box}.tf-league-row.is-user-row{background:var(--ds-lemon-soft);border-color:var(--ds-lemon)}.tf-league-row.is-promoted{border-left:4px solid var(--ds-mint)}.tf-rank-col{width:32px;font-weight:900;font-size:var(--ds-text-sm);color:var(--ds-text-muted)}.tf-player-info-col{flex:1;display:flex;align-items:center;gap:var(--ds-space-2)}.tf-player-avatar{font-size:1.25rem}.tf-player-name{font-size:var(--ds-text-sm);font-weight:800;display:flex;align-items:center;gap:var(--ds-space-1)}.tf-player-status{font-size:var(--ds-text-xs);color:var(--ds-text-muted);display:block}.tf-player-exp{font-size:var(--ds-text-sm);font-weight:900;color:var(--ds-sky-ink)}.tf-widget-studio-card{margin-bottom:var(--ds-space-6);border:var(--ds-stroke) solid var(--ds-border-strong);border-bottom-width:var(--ds-ledge);background:var(--ds-surface);border-radius:var(--ds-radius-lg);padding:var(--ds-space-4)}.tf-widget-preview-area{background:var(--ds-surface-sunken);border:var(--ds-stroke) solid var(--ds-border);border-radius:var(--ds-radius-md);padding:var(--ds-space-4);margin-bottom:var(--ds-space-4)}.tf-widget-tabs-row{display:flex;gap:var(--ds-space-2);margin-bottom:var(--ds-space-4);flex-wrap:wrap}.tf-widget-tab-btn{padding:var(--ds-space-1) var(--ds-space-3);border-radius:var(--ds-radius-pill);border:var(--ds-stroke) solid var(--ds-border);background:var(--ds-surface);font-size:var(--ds-text-xs);font-weight:700;color:var(--ds-text-muted);cursor:pointer}.tf-widget-tab-btn.is-active{background:var(--ds-sky-soft);border-color:var(--ds-sky);color:var(--ds-sky-ink)}.tf-live-widget-wrapper{display:flex;flex-direction:column;align-items:center;gap:var(--ds-space-3)}.tf-phone-screen-frame{width:100%;max-width:360px;background:var(--ds-bg);border:var(--ds-stroke) solid var(--ds-border-strong);border-radius:var(--ds-radius-xl);padding:var(--ds-space-4);box-shadow:var(--ds-shadow-float)}.tf-widget-card-sim{background:var(--ds-surface);border:var(--ds-stroke) solid var(--ds-border);border-radius:var(--ds-radius-lg);padding:var(--ds-space-3);box-shadow:var(--ds-shadow-float)}.tf-widget-sim-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--ds-space-2)}.tf-widget-badge{font-size:var(--ds-text-xs);font-weight:800;color:var(--ds-sky-ink)}.tf-widget-clock{font-size:var(--ds-text-xs);font-weight:700;color:var(--ds-text-muted)}.tf-widget-sim-word{font-size:var(--ds-text-lg);font-weight:900;color:var(--ds-text)}.tf-widget-sim-phonetic{font-size:var(--ds-text-xs);color:var(--ds-text-muted);margin-bottom:var(--ds-space-2)}.tf-widget-sim-quote{font-size:var(--ds-text-xs);line-height:var(--ds-leading);color:var(--ds-text);font-style:italic}.tf-widget-sim-mascot-box{display:flex;flex-direction:column;align-items:center;gap:var(--ds-space-1)}.tf-sim-mascot-emoji{font-size:2.5rem}.tf-sim-status-pill{font-size:var(--ds-text-xs);font-weight:700;color:var(--ds-mint-ink)}.tf-sim-streak-pill{font-size:var(--ds-text-xs);font-weight:800;color:var(--ds-caramel-ink)}.tf-widget-fsrs-count{font-size:var(--ds-text-sm);font-weight:800;color:var(--ds-bad);margin-bottom:var(--ds-space-2)}.tf-widget-fsrs-tags{display:flex;gap:var(--ds-space-1);flex-wrap:wrap}.tf-fsrs-due-tag{font-size:var(--ds-text-xs);font-weight:700;background:var(--ds-surface-sunken);border:var(--ds-stroke) solid var(--ds-border);border-radius:var(--ds-radius-pill);padding:2px var(--ds-space-2)}.tf-widget-export-actions{display:flex;flex-direction:column;align-items:center;gap:var(--ds-space-1)}.tf-export-hint{font-size:var(--ds-text-xs);color:var(--ds-text-muted)}.tf-offline-storage-box{background:var(--ds-surface);border:var(--ds-stroke) solid var(--ds-border);border-radius:var(--ds-radius-md);padding:var(--ds-space-3)}.tf-offline-packs-list{display:flex;flex-direction:column;gap:var(--ds-space-3);margin-top:var(--ds-space-3)}.tf-offline-pack-item{display:flex;justify-content:space-between;align-items:center;gap:var(--ds-space-3);padding:var(--ds-space-3);border-radius:var(--ds-radius-md);background:var(--ds-surface-sunken);border:var(--ds-stroke) solid var(--ds-border);flex-wrap:wrap}.tf-pack-info-col{flex:1;min-width:240px}.tf-pack-title-row{display:flex;align-items:center;gap:var(--ds-space-2);margin-bottom:var(--ds-space-1);flex-wrap:wrap}.tf-pack-name{font-size:var(--ds-text-sm);font-weight:800;color:var(--ds-text)}.tf-pack-size{font-size:var(--ds-text-xs);font-weight:700;color:var(--ds-text-muted)}.tf-pack-desc{font-size:var(--ds-text-xs);color:var(--ds-text-muted);margin:0;line-height:var(--ds-leading)}.tf-dossier-vault-card{display:grid;gap:var(--ds-space-4);padding:var(--ds-space-4);border:var(--ds-stroke) solid var(--ds-border);border-radius:var(--ds-radius-xl);background:var(--ds-surface);box-shadow:0 var(--ds-ledge) 0 var(--ds-border-strong)}.tf-vault-stats-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--ds-space-2)}.tf-vault-stat-item{display:grid;gap:var(--ds-space-1);padding:var(--ds-space-3);border-radius:var(--ds-radius-md);background:var(--ds-surface-sunken);border:var(--ds-stroke) solid var(--ds-border)}.tf-vault-stat-label{font-size:var(--ds-text-xs);color:var(--ds-text-muted);font-weight:700}.tf-vault-stat-val{font-size:var(--ds-text-base);font-weight:900;color:var(--ds-text)}.tf-vault-status-notice{padding:var(--ds-space-2) var(--ds-space-3);border-radius:var(--ds-radius-md);background:var(--ds-mint-soft);color:var(--ds-mint-ink);font-size:var(--ds-text-xs);font-weight:800}.tf-vault-action-block{display:grid;gap:var(--ds-space-2);padding:var(--ds-space-3);border-radius:var(--ds-radius-md);background:var(--ds-surface-sunken);border:var(--ds-stroke) solid var(--ds-border)}.tf-vault-block-title{display:flex;align-items:center;gap:var(--ds-space-2);font-size:var(--ds-text-sm);font-weight:800;color:var(--ds-text);margin:0}.tf-vault-input-group{display:flex;gap:var(--ds-space-2);flex-wrap:wrap}.tf-vault-input{flex:1;min-width:180px;min-height:38px;padding:var(--ds-space-2) var(--ds-space-3);border-radius:var(--ds-radius-md);border:var(--ds-stroke) solid var(--ds-border);background:var(--ds-surface);color:var(--ds-text);font-size:var(--ds-text-xs);font-family:inherit}.tf-vault-buttons-row{display:flex;gap:var(--ds-space-2);flex-wrap:wrap}.tf-file-label{display:inline-flex;align-items:center;gap:var(--ds-space-2);cursor:pointer}.tf-pack-manager-card{display:grid;gap:var(--ds-space-4);padding:var(--ds-space-4);border:var(--ds-stroke) solid var(--ds-border);border-radius:var(--ds-radius-xl);background:var(--ds-surface);box-shadow:0 var(--ds-ledge) 0 var(--ds-border-strong)}.tf-packs-list{display:grid;gap:var(--ds-space-3)}.tf-pack-card{display:grid;gap:var(--ds-space-2);padding:var(--ds-space-3);border-radius:var(--ds-radius-lg);border:var(--ds-stroke) solid var(--ds-border);background:var(--ds-surface-sunken);transition-property:transform,opacity,color,background-color,border-color,box-shadow,fill,stroke;transition-duration:.15s;transition-timing-function:ease}.tf-pack-card[data-installed=true]{border-color:var(--ds-mint);background:var(--ds-surface);box-shadow:0 var(--ds-ledge-sm) 0 var(--ds-mint-soft)}.tf-pack-card-top{display:flex;align-items:center;gap:var(--ds-space-3);flex-wrap:wrap}.tf-pack-icon{font-size:24px;flex:none}.tf-pack-meta{flex:1;min-width:180px}.tf-pack-badge-row{display:flex;align-items:center;gap:var(--ds-space-2);margin-bottom:2px}.tf-pack-badge{font-size:var(--ds-text-xs);font-weight:900;color:var(--ds-fox-ink);background:var(--ds-fox-soft);padding:1px 6px;border-radius:var(--ds-radius-pill)}.tf-pack-cefr{font-size:var(--ds-text-xs);font-weight:800;color:var(--ds-text-muted)}.tf-pack-title{margin:0;font-size:var(--ds-text-sm);font-weight:900;color:var(--ds-text)}.tf-pack-action{flex:none}.tf-pack-tags{display:flex;flex-wrap:wrap;gap:var(--ds-space-2)}.tf-pack-tag{font-size:var(--ds-text-xs);font-weight:700;color:var(--ds-text-muted)}.tf-booking-badge-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--ds-space-2);flex-wrap:wrap;gap:var(--ds-space-2)}.tf-booking-free-tag{background:var(--ds-grape-soft);color:var(--ds-grape-ink);border:var(--ds-stroke) solid var(--ds-grape);font-size:var(--ds-text-xs);font-weight:800;padding:2px var(--ds-space-2);border-radius:var(--ds-radius-pill)}.tf-teacher-dossier-card{background:var(--ds-surface-sunken);border:var(--ds-stroke) dashed var(--ds-grape);border-radius:var(--ds-radius-md);padding:var(--ds-space-3);margin:var(--ds-space-3) 0;display:flex;flex-direction:column;gap:var(--ds-space-2)}.tf-dossier-head{display:flex;align-items:center;justify-content:space-between}.tf-dossier-label{font-size:var(--ds-text-xs);font-weight:800;color:var(--ds-grape-ink);display:inline-flex;align-items:center;gap:var(--ds-space-1)}.tf-dossier-text{font-size:var(--ds-text-xs);color:var(--ds-text);white-space:pre-line;margin:0;line-height:1.5;background:var(--ds-surface);padding:var(--ds-space-2);border-radius:var(--ds-radius-sm);border:var(--ds-stroke) solid var(--ds-border)}.tf-dossier-actions{display:flex;justify-content:flex-end}.tf-booking-cta-block{margin:var(--ds-space-3) 0}.tf-booking-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--ds-space-2);text-decoration:none}.tf-detective-card-wrapper{margin:var(--ds-space-4) 0;border:var(--ds-stroke) solid var(--ds-navy);box-shadow:0 var(--ds-ledge) 0 var(--ds-navy-ledge);background:var(--ds-surface)}.tf-credential-card-stage{perspective:1000px;margin:var(--ds-space-3) 0;display:flex;justify-content:center}.tf-credential-card-inner{width:100%;max-width:440px;background:var(--ds-surface);border:var(--ds-stroke) solid var(--ds-navy);border-radius:var(--ds-radius-lg);box-shadow:0 var(--ds-ledge) 0 var(--ds-navy-ledge);overflow:hidden;position:relative}.tf-cred-head{background:var(--ds-navy);color:var(--ds-navy-ink);padding:var(--ds-space-2) var(--ds-space-3);display:flex;align-items:center;justify-content:space-between}.tf-cred-seal-mark{display:flex;flex-direction:column}.tf-cred-seal-text{font-size:var(--ds-text-xs);font-weight:900;letter-spacing:.1em;color:var(--ds-caramel-soft)}.tf-cred-seal-sub{font-size:var(--ds-text-xs);font-weight:800;color:var(--ds-navy-ink);opacity:.8}.tf-cred-chip{background:var(--ds-caramel);color:var(--ds-text);font-size:var(--ds-text-xs);font-weight:900;padding:2px var(--ds-space-2);border-radius:var(--ds-radius-pill);border:var(--ds-stroke) solid var(--ds-caramel-ledge)}.tf-cred-body{padding:var(--ds-space-4) var(--ds-space-3);display:flex;gap:var(--ds-space-3);align-items:center}.tf-cred-mascot-col{display:flex;flex-direction:column;align-items:center;gap:var(--ds-space-1);flex:none}.tf-cred-title-badge{font-size:var(--ds-text-xs);font-weight:800;background:var(--ds-surface-sunken);border:var(--ds-stroke) solid var(--ds-border-strong);border-radius:var(--ds-radius-pill);padding:1px var(--ds-space-2);color:var(--ds-navy-ink)}.tf-cred-info-col{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.tf-cred-agent-id{font-size:var(--ds-text-xs);font-family:monospace;font-weight:800;color:var(--ds-text-muted)}.tf-cred-agent-name{margin:0;font-size:var(--ds-text-base);font-weight:900;color:var(--ds-navy-ink)}.tf-cred-exam-target{margin:0;font-size:var(--ds-text-xs);font-weight:700;color:var(--ds-fox-ink)}.tf-cred-stats-row{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--ds-space-1);margin-top:var(--ds-space-2);background:var(--ds-surface-sunken);padding:var(--ds-space-1) var(--ds-space-2);border-radius:var(--ds-radius-md);border:var(--ds-stroke) solid var(--ds-border)}.tf-cred-stat{display:flex;flex-direction:column;align-items:center;text-align:center}.tf-cred-stat-lbl{font-size:var(--ds-text-xs);font-weight:700;color:var(--ds-text-muted);display:inline-flex;align-items:center;gap:2px;white-space:nowrap}.tf-cred-stat-num{font-size:var(--ds-text-xs);font-weight:900;color:var(--ds-text);white-space:nowrap}.tf-cred-security-strip{display:flex;align-items:center;justify-content:space-between;padding:4px var(--ds-space-3);background:var(--ds-surface-sunken);border-top:var(--ds-stroke) solid var(--ds-border)}.tf-cred-barcode-wrap{display:flex;flex-direction:column}.tf-cred-barcode{font-family:monospace;font-size:11px;letter-spacing:2px;color:var(--ds-text-muted);line-height:1;-webkit-user-select:none;user-select:none}.tf-cred-security-id{font-family:monospace;font-size:9px;font-weight:800;color:var(--ds-text-muted);letter-spacing:.05em}.tf-cred-stamp-badge{font-size:9px;font-weight:900;color:var(--ds-fox-ink);background:var(--ds-fox-soft);border:var(--ds-stroke) solid var(--ds-fox);border-radius:var(--ds-radius-pill);padding:1px var(--ds-space-2);letter-spacing:.05em}.tf-cred-foot{background:var(--ds-biscuit);border-top:var(--ds-stroke) dashed var(--ds-biscuit-border);padding:var(--ds-space-2) var(--ds-space-3);text-align:center}.tf-cred-motto{font-size:var(--ds-text-xs);font-weight:800;color:var(--ds-navy-ink);letter-spacing:.05em}.tf-cred-actions-row{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:var(--ds-space-2);margin-top:var(--ds-space-2)}.tf-cred-preview-box{margin:var(--ds-space-3) 0 0;padding:var(--ds-space-3);background:var(--ds-surface-sunken);border-radius:var(--ds-radius-md);border:var(--ds-stroke) solid var(--ds-border);display:flex;flex-direction:column;align-items:center;gap:var(--ds-space-2)}.tf-cred-preview-img{max-width:100%;height:auto;border-radius:var(--ds-radius-md);border:var(--ds-stroke) solid var(--ds-border-strong);box-shadow:0 var(--ds-ledge) 0 var(--ds-border-strong)}@media(max-width:420px){.tf-passport-main{flex-wrap:wrap}.tf-passport-info{flex-basis:100%}.tf-passport-sub{overflow-wrap:anywhere}}.tf-past-papers-page{padding-bottom:64px}.tf-vault-hero-card{margin-bottom:20px;border-radius:18px;padding:20px;background:var(--ds-surface);border:1px solid var(--ds-border);box-shadow:var(--ds-shadow-float)}.tf-vault-hero-badge{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:800;letter-spacing:.5px;color:var(--ds-caramel-ink);background:var(--ds-caramel-soft);border:1px solid var(--ds-border);padding:4px 10px;border-radius:999px;margin-bottom:12px}.tf-vault-hero-title{font-size:22px;font-weight:900;color:var(--ds-text);margin:0 0 6px;display:flex;align-items:center;gap:8px}.tf-vault-hero-desc{font-size:14px;color:var(--ds-text-muted);line-height:1.6;margin:0 0 16px}.tf-vault-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px}.tf-vault-kpi-item{background:var(--ds-surface-sunken);border:1px solid var(--ds-border);border-radius:12px;padding:10px 14px;display:flex;flex-direction:column}.tf-vault-kpi-num{font-size:20px;font-weight:900;color:var(--ds-text)}.tf-vault-kpi-lbl{font-size:12px;color:var(--ds-text-subtle);margin-top:2px}.tf-vault-tabs{display:flex;gap:8px;overflow-x:auto;padding-bottom:8px;margin-bottom:16px}.tf-vault-tab{flex:1;min-width:140px;border:2px solid var(--ds-border);background:var(--ds-surface);color:var(--ds-text);padding:12px 14px;border-radius:14px;font-size:14px;font-weight:700;cursor:pointer;display:flex;flex-direction:column;gap:4px;transition:border-color .15s ease,background .15s ease}.tf-vault-tab:hover{border-color:var(--ds-sky)}.tf-vault-tab[data-active=true]{border-color:var(--ds-sky);background:var(--ds-sky-soft);color:var(--ds-sky-ink)}.tf-vault-tab-pill{font-size:11px;font-weight:600;color:var(--ds-text-subtle)}.tf-vault-tab[data-active=true] .tf-vault-tab-pill{color:var(--ds-sky-ink)}.tf-vault-cognitive-bar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:12px;padding:10px 14px;margin-bottom:14px}.tf-vault-cognitive-lbl{font-size:12px;font-weight:800;color:var(--ds-text);display:flex;align-items:center;gap:4px;flex-shrink:0}.tf-vault-cognitive-pills{display:flex;flex-wrap:wrap;gap:6px}.tf-vault-cognitive-pill{font-size:11px;font-weight:700;padding:4px 10px;border-radius:999px;border:1px solid var(--ds-border);background:var(--ds-surface-sunken);color:var(--ds-text-subtle);cursor:pointer;transition-property:transform,opacity,color,background-color,border-color,box-shadow,fill,stroke;transition-duration:.15s;transition-timing-function:ease}.tf-vault-cognitive-pill:hover{background:var(--ds-surface);color:var(--ds-text)}.tf-vault-cognitive-pill.is-active{background:var(--ds-caramel);color:var(--ds-surface);border-color:var(--ds-caramel);box-shadow:var(--ds-shadow-float)}.tf-vault-toolbar{background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:14px;padding:14px;margin-bottom:16px;display:flex;flex-direction:column;gap:12px}.tf-vault-search-row{display:flex;flex-wrap:wrap;gap:10px}.tf-vault-search-input{flex:1;min-width:220px;padding:10px 14px;border:1px solid var(--ds-border);border-radius:10px;font-size:14px;background:var(--ds-surface-sunken);color:var(--ds-text)}.tf-vault-search-input:focus{outline:none;border-color:var(--ds-focus)}.tf-vault-select{padding:10px 12px;border:1px solid var(--ds-border);border-radius:10px;font-size:13px;background:var(--ds-surface-sunken);color:var(--ds-text)}.tf-vault-chip-row{display:flex;flex-wrap:wrap;gap:6px}.tf-vault-chip{border:1px solid var(--ds-border);background:var(--ds-surface-sunken);color:var(--ds-text);padding:6px 12px;border-radius:999px;font-size:12px;font-weight:600;cursor:pointer;transition-property:transform,opacity,color,background-color,border-color,box-shadow,fill,stroke;transition-duration:.15s;transition-timing-function:ease}.tf-vault-chip[data-active=true]{background:var(--ds-caramel-soft);border-color:var(--ds-caramel);color:var(--ds-caramel-ink)}.tf-vault-status-bar{display:flex;justify-content:space-between;align-items:center;font-size:13px;color:var(--ds-text-muted);margin-bottom:14px}.tf-vault-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(280px,100%),1fr));gap:14px;margin-bottom:24px}.tf-vault-card{background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:14px;padding:16px;display:flex;flex-direction:column;justify-content:space-between;gap:12px;cursor:pointer;transition:transform var(--ds-motion-base) var(--ds-ease-bounce),border-color var(--ds-motion-fast) ease,box-shadow var(--ds-motion-fast) ease}.tf-vault-card:hover{transform:translateY(-3px) scale(1.008);border-color:var(--ds-caramel);box-shadow:var(--ds-shadow-float)}.tf-vault-card:active{transform:translateY(0) scale(.98)}.tf-vault-card-tags{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.tf-tag-source{font-size:11px;font-weight:700;padding:2px 8px;border-radius:6px;background:var(--ds-sky-soft);color:var(--ds-sky-ink)}.tf-tag-module{font-size:11px;font-weight:700;padding:2px 8px;border-radius:6px;background:var(--ds-caramel-soft);color:var(--ds-caramel-ink)}.tf-tag-count{font-size:11px;color:var(--ds-text-subtle);margin-left:auto}.tf-vault-card-title{font-size:16px;font-weight:800;color:var(--ds-text);line-height:1.4;margin:0}.tf-vault-card-meta{font-size:12px;color:var(--ds-text-subtle);display:flex;flex-wrap:wrap;gap:4px}.tf-type-badge{background:var(--ds-surface-sunken);border:1px solid var(--ds-border);padding:2px 6px;border-radius:4px;font-size:11px}.tf-vault-card-footer{margin-top:4px;display:flex;justify-content:flex-end}.tf-vault-pagination{display:flex;justify-content:center;align-items:center;gap:12px;margin-top:24px}.tf-vault-page-info{font-size:13px;font-weight:700;color:var(--ds-text-muted)}.tf-vault-modal-scrim{position:fixed;inset:0;background:var(--ds-scrim);z-index:2000;display:flex;align-items:center;justify-content:center;padding:16px}.tf-vault-modal-dialog{background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:20px;max-width:960px;width:100%;max-height:90vh;display:flex;flex-direction:column;box-shadow:var(--ds-shadow-float);overflow:hidden}.tf-vault-modal-header{padding:18px 22px;border-bottom:1px solid var(--ds-border);display:flex;align-items:flex-start;justify-content:space-between;gap:16px;background:var(--ds-surface)}.tf-vault-modal-titles{display:flex;flex-direction:column;gap:4px}.tf-vault-modal-h3{margin:0;font-size:18px;font-weight:900;color:var(--ds-text);line-height:1.4}.tf-vault-modal-sub{font-size:12px;color:var(--ds-text-subtle);display:flex;align-items:center;gap:8px}.tf-vault-modal-body{padding:20px 22px;overflow-y:auto;display:grid;grid-template-columns:1.2fr 1fr;gap:24px}@media(max-width:768px){.tf-vault-modal-body{grid-template-columns:1fr;gap:20px}}.tf-vault-pane-left,.tf-vault-pane-right{display:flex;flex-direction:column;gap:14px}.tf-vault-pane-title{font-size:14px;font-weight:800;color:var(--ds-text);border-bottom:2px solid var(--ds-border);padding-bottom:6px;margin:0}.tf-vault-passage-box{font-size:14px;line-height:1.7;color:var(--ds-text);background:var(--ds-surface-sunken);border:1px solid var(--ds-border);border-radius:12px;padding:16px;white-space:pre-wrap;max-height:480px;overflow-y:auto}.tf-vault-audio-box{background:var(--ds-mint-soft);border:1px solid var(--ds-border);border-radius:12px;padding:12px 16px;font-size:13px;color:var(--ds-mint-ink);display:flex;align-items:center;justify-content:space-between;gap:10px}.tf-vault-transcript-box{font-size:14px;line-height:1.7;color:var(--ds-text);background:var(--ds-surface-sunken);border:1px solid var(--ds-border);border-radius:12px;padding:16px;white-space:pre-wrap;max-height:380px;overflow-y:auto}.tf-vault-question-box{font-size:14px;line-height:1.6;color:var(--ds-text);background:var(--ds-surface-sunken);border:1px solid var(--ds-border);border-radius:12px;padding:16px;white-space:pre-wrap;max-height:400px;overflow-y:auto}.tf-vault-answers-box{background:var(--ds-lemon-soft);border:1px solid var(--ds-border);border-radius:12px;padding:14px}.tf-vault-answers-head{display:flex;justify-content:space-between;align-items:center;font-weight:800;font-size:13px;color:var(--ds-lemon-ink);margin-bottom:10px}.tf-vault-answers-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}.tf-ans-badge{background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:8px;padding:6px 10px;font-size:12px;color:var(--ds-text)}.tf-ans-badge strong{color:var(--ds-lemon-ink)}.tf-vault-model-essay{background:var(--ds-surface-sunken);border:1px solid var(--ds-border);border-radius:12px;padding:14px;margin-bottom:12px}.tf-vault-model-essay h5{margin:0 0 8px;font-size:13px;font-weight:800;color:var(--ds-caramel-ink)}.tf-vault-model-essay p{margin:0;font-size:13px;line-height:1.6;color:var(--ds-text);white-space:pre-wrap}.tf-vault-qa-card{background:var(--ds-surface-sunken);border:1px solid var(--ds-border);border-radius:12px;padding:12px 14px;margin-bottom:10px}.tf-vault-qa-q{font-weight:800;color:var(--ds-sky-ink);font-size:13px;margin-bottom:6px}.tf-vault-qa-a{font-size:13px;line-height:1.6;color:var(--ds-text)}.tf-vault-modal-footer{padding:14px 22px;border-top:1px solid var(--ds-border);display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--ds-surface)}.tf-past-papers-hero{margin-bottom:18px;padding:18px 20px;border-radius:16px;background:var(--ds-surface);border:2px solid var(--ds-border);cursor:pointer;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}.tf-past-papers-hero:hover{transform:translateY(-2px);border-color:var(--ds-caramel);box-shadow:var(--ds-shadow-float)}.tf-past-papers-hero-badge{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:800;color:var(--ds-caramel-ink);background:var(--ds-caramel-soft);padding:4px 10px;border-radius:999px;margin-bottom:8px}.tf-past-papers-hero-title{font-size:18px;font-weight:900;color:var(--ds-text);margin-bottom:6px}.tf-past-papers-hero-desc{font-size:13px;color:var(--ds-text-muted);line-height:1.55;margin:0 0 12px}.tf-past-papers-hero-stats{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.tf-stat-pill{font-size:12px;font-weight:700;color:var(--ds-text);background:var(--ds-surface-sunken);border:1px solid var(--ds-border);padding:4px 10px;border-radius:8px}.tf-growth-card{margin-top:18px;margin-bottom:20px;border-radius:18px;padding:20px;background:var(--ds-surface);border:1px solid var(--ds-border);box-shadow:var(--ds-shadow-float);display:flex;flex-direction:column;gap:16px}.tf-growth-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.tf-growth-head-info{display:flex;flex-direction:column;gap:4px}.tf-growth-title{margin:0;font-size:18px;font-weight:900;color:var(--ds-text);display:flex;align-items:center;gap:8px}.tf-growth-sub{font-size:13px;color:var(--ds-text-muted);line-height:1.5;margin:0}.tf-growth-fox-bubble{background:var(--ds-surface-sunken);border:1px solid var(--ds-border);border-left:4px solid var(--ds-caramel);border-radius:12px;padding:14px 16px;display:flex;gap:12px;align-items:flex-start}.tf-growth-fox-avatar{font-size:24px;line-height:1;flex-shrink:0}.tf-growth-fox-text{font-size:13px;line-height:1.6;color:var(--ds-text);margin:0}.tf-growth-dimensions{display:flex;flex-direction:column;gap:10px}.tf-growth-dim-row{display:flex;flex-direction:column;gap:4px}.tf-growth-dim-header{display:flex;justify-content:space-between;align-items:center;font-size:13px}.tf-growth-dim-name{font-weight:700;color:var(--ds-text);display:flex;align-items:center;gap:6px}.tf-growth-dim-meta{font-size:12px;color:var(--ds-text-subtle);display:flex;align-items:center;gap:8px}.tf-growth-dim-tag{font-size:11px;font-weight:800;padding:2px 6px;border-radius:4px}.tf-growth-dim-tag[data-status=mastered]{background:var(--ds-mint-soft);color:var(--ds-mint-ink)}.tf-growth-dim-tag[data-status=steady]{background:var(--ds-sky-soft);color:var(--ds-sky-ink)}.tf-growth-dim-tag[data-status=vulnerable]{background:var(--ds-pink-soft);color:var(--ds-pink-ink)}.tf-growth-bar-track{height:8px;background:var(--ds-surface-sunken);border-radius:999px;overflow:hidden;border:1px solid var(--ds-border)}.tf-growth-bar-fill{height:100%;border-radius:999px;transition:width .4s ease}.tf-growth-bar-fill[data-tone=pink]{background:var(--ds-pink)}.tf-growth-bar-fill[data-tone=lemon]{background:var(--ds-lemon)}.tf-growth-bar-fill[data-tone=caramel]{background:var(--ds-caramel)}.tf-growth-bar-fill[data-tone=sky]{background:var(--ds-sky)}.tf-growth-bar-fill[data-tone=mint]{background:var(--ds-mint)}.tf-growth-remediation{background:var(--ds-caramel-soft);border:1px solid var(--ds-border);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:12px}.tf-growth-remedy-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.tf-growth-remedy-badge{font-size:11px;font-weight:800;background:var(--ds-surface);color:var(--ds-caramel-ink);padding:3px 8px;border-radius:999px;border:1px solid var(--ds-border)}.tf-growth-remedy-title{font-size:15px;font-weight:900;color:var(--ds-caramel-ink);margin:0}.tf-growth-remedy-desc{font-size:13px;color:var(--ds-text);line-height:1.5;margin:0}.tf-growth-remedy-action{display:flex;justify-content:flex-end}.tf-growth-milestone{background:var(--ds-surface-sunken);border:1px solid var(--ds-border);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:10px}.tf-growth-milestone-head{display:flex;justify-content:space-between;align-items:center}.tf-growth-milestone-title{font-size:14px;font-weight:800;color:var(--ds-text);display:flex;align-items:center;gap:6px;margin:0}.tf-growth-milestone-reward{font-size:12px;font-weight:700;color:var(--ds-caramel-ink)}.tf-growth-milestone-desc{font-size:13px;color:var(--ds-text-muted);line-height:1.5;margin:0}.tf-growth-milestone-progress{display:flex;align-items:center;gap:10px;font-size:12px;font-weight:700;color:var(--ds-text-subtle)}.tf-growth-milestone-track{flex:1;height:6px;background:var(--ds-surface);border-radius:999px;overflow:hidden;border:1px solid var(--ds-border)}.tf-growth-milestone-fill{height:100%;background:var(--ds-caramel);border-radius:999px}.tf-growth-view-toggles{display:flex;background:var(--ds-surface-sunken);border:1px solid var(--ds-border);border-radius:999px;padding:3px;gap:2px;margin-bottom:8px;align-self:center}.tf-growth-view-btn{display:flex;align-items:center;gap:6px;padding:6px 14px;font-size:12px;font-weight:700;border:none;background:transparent;color:var(--ds-text-subtle);border-radius:999px;cursor:pointer;transition-property:transform,opacity,color,background-color,border-color,box-shadow,fill,stroke;transition-duration:.2s;transition-timing-function:ease}.tf-growth-view-btn.is-active{background:var(--ds-surface);color:var(--ds-text);box-shadow:var(--ds-shadow-float)}.tf-radar-container{display:flex;flex-direction:column;gap:12px;width:100%}.tf-radar-svg{max-width:320px;margin:0 auto;display:block;overflow:visible}.tf-radar-vertex{cursor:pointer;transition:transform .2s ease}.tf-radar-vertex:hover circle:first-of-type{opacity:1}.tf-radar-axis-label{transition-property:transform,opacity,color,background-color,border-color,box-shadow,fill,stroke;transition-duration:.2s;transition-timing-function:ease;-webkit-user-select:none;user-select:none}.tf-radar-axis-label:hover text{fill:var(--ds-caramel-ink)}.tf-radar-legend{display:flex;justify-content:center;align-items:center;gap:16px;font-size:11px;font-weight:700;color:var(--ds-text-subtle)}.tf-radar-legend-item{display:flex;align-items:center;gap:6px}.tf-radar-legend-swatch{width:12px;height:12px;border-radius:3px}.tf-radar-legend-swatch.is-current{background:var(--ds-caramel-soft);border:1.5px solid var(--ds-caramel)}.tf-radar-legend-swatch.is-baseline{background:var(--ds-sky-soft);border:1.5px dashed var(--ds-sky)}.tf-radar-inspector{background:var(--ds-surface-sunken);border:1px solid var(--ds-border);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:10px}.tf-radar-inspector-head{display:flex;justify-content:space-between;align-items:center}.tf-radar-inspector-title{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:800;color:var(--ds-text)}.tf-radar-inspector-icon{font-size:18px;line-height:1}.tf-radar-inspector-en{font-size:11px;color:var(--ds-text-subtle);font-weight:500;margin-left:4px}.tf-radar-inspector-score{display:flex;justify-content:space-between;align-items:center;font-size:13px;color:var(--ds-text);padding:6px 10px;background:var(--ds-surface);border-radius:8px;border:1px solid var(--ds-border)}.tf-radar-inspector-pct{font-weight:900;color:var(--ds-caramel-ink)}.tf-radar-inspector-desc{font-size:12px;color:var(--ds-text-muted);line-height:1.5;margin:0}.tf-radar-inspector-tactic{background:var(--ds-caramel-soft);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:4px}.tf-radar-tactic-badge{font-size:11px;font-weight:800;color:var(--ds-caramel-ink);display:flex;align-items:center;gap:4px}.tf-radar-tactic-text{font-size:12px;color:var(--ds-caramel-ink);line-height:1.5;margin:0}.tf-trap-category-tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.tf-trap-cat-btn{font-size:11px;font-weight:700;padding:4px 10px;border-radius:999px;border:1px solid var(--ds-border);background:var(--ds-surface-sunken);color:var(--ds-text-subtle);cursor:pointer;transition-property:transform,opacity,color,background-color,border-color,box-shadow,fill,stroke;transition-duration:.15s;transition-timing-function:ease}.tf-trap-cat-btn.is-active{background:var(--ds-caramel);color:var(--ds-on-brand);border-color:var(--ds-caramel-ledge)}.tf-trap-mantra-pill{font-size:11px;font-weight:800;color:var(--ds-caramel-ink);background:var(--ds-caramel-soft);padding:3px 8px;border-radius:999px;display:inline-flex;align-items:center;gap:4px}.tf-trap-example-box{background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:8px;padding:8px 12px}.tf-trap-example-text{font-size:12px;line-height:1.5;color:var(--ds-text);margin:4px 0 0;font-family:inherit}.tf-review-trap-card{margin-bottom:16px}.tf-fsrs-weakness-alert{display:flex;gap:10px;background:var(--ds-surface-sunken);border:1px solid var(--ds-border);border-left:4px solid var(--ds-sky);border-radius:10px;padding:10px 14px;align-items:flex-start}.tf-fsrs-alert-icon{font-size:18px;line-height:1;flex-shrink:0}.tf-fsrs-alert-body{display:flex;flex-direction:column;gap:2px}.tf-fsrs-alert-badge{font-size:11px;font-weight:800;color:var(--ds-sky-ink)}.tf-fsrs-alert-text{font-size:12px;color:var(--ds-text);line-height:1.5;margin:0}.tf-rubric-modal-card{background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:18px;padding:20px;margin-top:14px;margin-bottom:20px;box-shadow:var(--ds-shadow-float);display:flex;flex-direction:column;gap:16px}.tf-rubric-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.tf-rubric-title{font-size:18px;font-weight:900;color:var(--ds-text);margin:4px 0 0;display:flex;align-items:center;gap:8px}.tf-rubric-sub{font-size:13px;color:var(--ds-text-muted);line-height:1.5;margin:0}.tf-rubric-hero-score{display:flex;flex-wrap:wrap;gap:16px;background:var(--ds-surface-sunken);border:1px solid var(--ds-border);border-radius:14px;padding:16px;align-items:center}.tf-rubric-score-left{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.tf-rubric-score-lbl{font-size:11px;font-weight:800;color:var(--ds-text-subtle);text-transform:uppercase;letter-spacing:.5px}.tf-rubric-score-val strong{font-size:26px;font-weight:900;color:var(--ds-caramel-ink)}.tf-rubric-score-val span{font-size:13px;color:var(--ds-text-subtle);font-weight:700}.tf-rubric-fox-box{flex:1;min-width:200px;display:flex;gap:10px;align-items:flex-start;background:var(--ds-surface);border:1px solid var(--ds-border);border-left:4px solid var(--ds-caramel);border-radius:10px;padding:10px 14px}.tf-rubric-fox-text{font-size:12px;line-height:1.5;color:var(--ds-text);margin:0}.tf-rubric-dimensions-grid{display:flex;flex-direction:column;gap:14px}.tf-rubric-dim-card{background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:12px}.tf-rubric-dim-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px}.tf-rubric-dim-title{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:800;color:var(--ds-text)}.tf-rubric-dim-code{font-size:12px;color:var(--ds-text-subtle);font-weight:600}.tf-rubric-score-selector{display:flex;gap:4px;background:var(--ds-surface-sunken);padding:2px;border-radius:999px;border:1px solid var(--ds-border)}.tf-rubric-band-btn{font-size:11px;font-weight:700;padding:3px 8px;border-radius:999px;border:none;background:transparent;color:var(--ds-text-subtle);cursor:pointer;transition-property:transform,opacity,color,background-color,border-color,box-shadow,fill,stroke;transition-duration:.15s;transition-timing-function:ease}.tf-rubric-band-btn.is-active{background:var(--ds-caramel);color:var(--ds-surface);box-shadow:var(--ds-shadow-float)}.tf-rubric-desc-box{background:var(--ds-surface-sunken);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:4px}.tf-rubric-band-badge{font-size:11px;font-weight:800;color:var(--ds-caramel-ink)}.tf-rubric-desc-text{font-size:12px;color:var(--ds-text);line-height:1.5;margin:0}.tf-rubric-checkpoints{display:flex;flex-direction:column;gap:6px}.tf-rubric-check-title{font-size:11px;font-weight:800;color:var(--ds-text-subtle)}.tf-rubric-check-row{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ds-text);padding:6px 8px;border-radius:6px;cursor:pointer;transition:background .15s ease}.tf-rubric-check-row:hover{background:var(--ds-surface-sunken)}.tf-rubric-check-row.is-checked{background:var(--ds-caramel-soft);color:var(--ds-caramel-ink);font-weight:600}.tf-rubric-check-text{flex:1}.tf-rubric-target-tag{font-size:10px;font-weight:800;padding:2px 6px;border-radius:4px;background:var(--ds-surface);border:1px solid var(--ds-border);color:var(--ds-text-subtle)}.tf-rubric-tactic-pill{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--ds-mint-ink);background:var(--ds-mint-soft);padding:6px 10px;border-radius:8px;line-height:1.4}.tf-tree-modal-card{background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:18px;padding:20px;margin-top:14px;margin-bottom:20px;box-shadow:var(--ds-shadow-float);display:flex;flex-direction:column;gap:16px}.tf-tree-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.tf-tree-title{font-size:18px;font-weight:900;color:var(--ds-text);margin:4px 0 0;display:flex;align-items:center;gap:8px}.tf-tree-sub{font-size:13px;color:var(--ds-text-muted);line-height:1.5;margin:0}.tf-tree-current-card{background:var(--ds-surface-sunken);border:1px solid var(--ds-border);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:14px}.tf-tree-current-badge{display:flex;align-items:center;gap:12px}.tf-tree-rank-icon{font-size:32px;line-height:1}.tf-tree-rank-tag{font-size:11px;font-weight:800;color:var(--ds-caramel-ink);text-transform:uppercase;letter-spacing:.5px}.tf-tree-rank-name{font-size:20px;font-weight:900;color:var(--ds-text);margin:2px 0 0}.tf-tree-rank-en{font-size:12px;color:var(--ds-text-subtle);font-weight:600}.tf-tree-current-buffs{display:flex;flex-wrap:wrap;gap:10px}.tf-tree-buff-item{display:flex;align-items:center;gap:6px;font-size:12px;padding:6px 10px;border-radius:8px;background:var(--ds-surface);border:1px solid var(--ds-border);color:var(--ds-text)}.tf-tree-next-req{display:flex;flex-direction:column;gap:6px}.tf-tree-next-head{display:flex;justify-content:space-between;font-size:12px;color:var(--ds-text)}.tf-tree-roadmap{display:flex;flex-direction:column;gap:12px}.tf-tree-section-title{font-size:14px;font-weight:900;color:var(--ds-text);margin:0;display:flex;align-items:center;gap:6px}.tf-tree-ranks-list{display:flex;flex-direction:column;gap:14px;position:relative;padding-left:8px}.tf-tree-rank-node{display:flex;gap:14px;align-items:stretch}.tf-tree-node-marker{display:flex;flex-direction:column;align-items:center;width:32px;flex-shrink:0;position:relative}.tf-tree-node-icon{font-size:20px;line-height:1;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:999px;background:var(--ds-surface-sunken);border:2px solid var(--ds-border);z-index:1}.tf-tree-rank-node.is-reached .tf-tree-node-icon{background:var(--ds-caramel-soft);border-color:var(--ds-caramel)}.tf-tree-connector{flex:1;width:2px;background:var(--ds-border);margin-top:4px;margin-bottom:-10px}.tf-tree-rank-node.is-reached .tf-tree-connector{background:var(--ds-caramel)}.tf-tree-node-content{flex:1;background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:6px}.tf-tree-rank-node.is-active .tf-tree-node-content{border-color:var(--ds-caramel);box-shadow:var(--ds-shadow-float)}.tf-tree-node-top{display:flex;justify-content:space-between;align-items:center}.tf-tree-level-pill{font-size:10px;font-weight:800;background:var(--ds-surface-sunken);color:var(--ds-text-subtle);padding:2px 6px;border-radius:4px;margin-right:6px}.tf-tree-node-name{font-size:14px;font-weight:800;color:var(--ds-text)}.tf-tree-multiplier-tag{font-size:11px;font-weight:800;color:var(--ds-caramel-ink);background:var(--ds-caramel-soft);padding:2px 6px;border-radius:4px}.tf-tree-node-desc{font-size:12px;color:var(--ds-text-muted);line-height:1.4;margin:0}.tf-tree-node-perk{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--ds-mint-ink);background:var(--ds-mint-soft);padding:4px 8px;border-radius:6px}.tf-tree-badges-section{display:flex;flex-direction:column;gap:12px}.tf-tree-badges-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px}.tf-tree-badge-card{background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:6px;align-items:center;text-align:center}.tf-tree-badge-card.is-unlocked{border-color:var(--ds-caramel);background:var(--ds-caramel-soft)}.tf-tree-badge-icon-box{position:relative;font-size:24px;line-height:1}.tf-badge-check{position:absolute;bottom:-4px;right:-6px;color:var(--ds-mint);background:var(--ds-surface);border-radius:999px}.tf-badge-lock{position:absolute;bottom:-4px;right:-6px;color:var(--ds-text-subtle);background:var(--ds-surface);border-radius:999px}.tf-tree-badge-name{font-size:13px;font-weight:800;color:var(--ds-text)}.tf-tree-badge-desc{font-size:11px;color:var(--ds-text-muted);line-height:1.4;margin:0}.tf-tree-badge-status{font-size:10px;font-weight:800;padding:2px 6px;border-radius:4px;background:var(--ds-surface);color:var(--ds-text-subtle);border:1px solid var(--ds-border)}.tf-case-docket-card{position:relative;background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:var(--ds-radius-md);padding:16px;display:flex;flex-direction:column;gap:14px}.tf-docket-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.tf-docket-brand{display:flex;flex-direction:column;gap:4px}.tf-docket-tag-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.tf-docket-badge{font-size:11px;font-weight:700;color:var(--ds-caramel-ink);background:var(--ds-caramel-soft);padding:2px 8px;border-radius:var(--ds-radius-pill)}.tf-docket-title{font-size:17px;font-weight:800;color:var(--ds-text);margin:2px 0 0;display:flex;align-items:center;gap:6px}.tf-docket-sub{font-size:12px;color:var(--ds-text-muted);line-height:1.4;margin:0}.tf-docket-progress-badge{display:flex;flex-direction:column;align-items:center;background:var(--ds-caramel-soft);border:1px solid var(--ds-caramel);border-radius:10px;padding:6px 10px;min-width:60px;flex-shrink:0}.tf-docket-progress-num{font-size:16px;font-weight:900;color:var(--ds-caramel-ink);line-height:1.1}.tf-docket-progress-label{font-size:10px;font-weight:700;color:var(--ds-text-muted)}.tf-docket-track-bar{height:6px;background:var(--ds-border);border-radius:var(--ds-radius-pill);overflow:hidden}.tf-docket-track-fill{height:100%;background:var(--ds-caramel);border-radius:var(--ds-radius-pill);transition:width .3s ease}.tf-docket-grid{display:grid;grid-template-columns:1fr;gap:12px}@media(min-width:680px){.tf-docket-grid{grid-template-columns:repeat(3,1fr)}}.tf-docket-item{background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:var(--ds-radius-sm);padding:14px;display:flex;flex-direction:column;gap:8px;transition:transform .15s ease,border-color .15s ease}.tf-docket-item:hover{border-color:var(--ds-caramel)}.tf-docket-item.is-complete{border-color:var(--ds-mint);background:var(--ds-mint-soft)}.tf-docket-item.is-complete .tf-docket-item-num,.tf-docket-item.is-complete .tf-docket-candy-tag{color:var(--ds-mint-ink)}.tf-docket-item-head{display:flex;align-items:center;justify-content:space-between;gap:6px}.tf-docket-item-meta{display:flex;align-items:center;gap:6px}.tf-docket-item-num{font-size:10px;font-weight:900;font-family:monospace;color:var(--ds-text-subtle);letter-spacing:.5px}.tf-docket-candy-tag{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:800;color:var(--ds-caramel-ink)}.tf-docket-status-tag{font-size:11px;font-weight:800;padding:2px 6px;border-radius:4px;display:inline-flex;align-items:center;gap:3px}.tf-docket-status-tag.is-done{background:var(--ds-mint);color:var(--ds-on-ok)}.tf-docket-status-tag.is-wait{background:var(--ds-surface-sunken);color:var(--ds-text-muted)}.tf-docket-status-tag.is-alert{background:var(--ds-bad-soft);color:var(--ds-bad-ink)}.tf-docket-status-tag.is-due{background:var(--ds-caramel-soft);color:var(--ds-caramel-ink)}.tf-docket-item-title{font-size:14px;font-weight:800;color:var(--ds-text);margin:0;line-height:1.3}.tf-docket-item-desc{font-size:12px;color:var(--ds-text-muted);line-height:1.4;margin:0;flex:1}.tf-docket-item-action{margin-top:4px;display:flex;align-items:center}.tf-docket-words-action{display:flex;align-items:center;justify-content:space-between;gap:6px}.tf-docket-flip-card{perspective:800px;height:64px;cursor:pointer;margin:6px 0;transition:transform var(--ds-motion-base) var(--ds-ease-bounce)}.tf-docket-flip-card:active{transform:scale(.97)}.tf-docket-flip-inner{position:relative;width:100%;height:100%;text-align:center;transition:transform .45s cubic-bezier(.34,1.56,.64,1);transform-style:preserve-3d;border-radius:var(--ds-radius-sm)}.tf-docket-flip-card.is-flipped .tf-docket-flip-inner{transform:rotateY(180deg)}.tf-docket-flip-front,.tf-docket-flip-back{position:absolute;width:100%;height:100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:8px;padding:6px;background:var(--ds-surface);border:1px dashed var(--ds-border)}.tf-docket-flip-back{transform:rotateY(180deg);background:var(--ds-caramel-soft);border-color:var(--ds-caramel)}.tf-flip-word{font-size:14px;font-weight:800;color:var(--ds-text)}.tf-flip-speak-btn{display:inline-flex;align-items:center;justify-content:center;padding:2px 4px;background:var(--ds-surface-sunken);border:1px solid var(--ds-border);border-radius:var(--ds-radius-pill);color:var(--ds-caramel-ink);cursor:pointer}.tf-flip-speak-btn:hover{background:var(--ds-caramel-soft);color:var(--ds-caramel)}.tf-flip-meaning{font-size:12px;font-weight:800;color:var(--ds-caramel-ink)}.tf-flip-hint{font-size:9px;color:var(--ds-text-subtle);margin-top:2px}.tf-docket-flip-back .tf-flip-hint{color:var(--ds-caramel-ink)}.tf-flip-word-btn,.tf-flip-hint-btn,.tf-flip-back-btn{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;display:flex;flex-direction:column;align-items:center}.tf-docket-seal-banner{background:var(--ds-caramel-soft);border:1px solid var(--ds-caramel);border-radius:var(--ds-radius-sm);padding:14px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}.tf-wax-seal{width:60px;height:60px;border-radius:var(--ds-radius-pill);background:var(--ds-bad);border:3px double var(--ds-surface);box-shadow:0 4px 12px var(--ds-scrim);display:flex;align-items:center;justify-content:center;color:var(--ds-surface);transform:rotate(-6deg);flex-shrink:0}.tf-wax-seal-ring{width:48px;height:48px;border-radius:var(--ds-radius-pill);border:1px dashed var(--ds-surface);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.tf-wax-seal-text{font-size:7px;font-weight:900;letter-spacing:.5px}.tf-wax-seal-icon{font-size:14px;line-height:1}.tf-wax-seal-sub{font-size:6px;font-weight:800;letter-spacing:.5px}.tf-docket-seal-info{flex:1;min-width:180px}.tf-seal-title-row{display:flex;align-items:center;gap:6px}.tf-gold-star{color:var(--ds-caramel)}.tf-seal-title{font-size:15px;font-weight:900;color:var(--ds-text)}.tf-seal-desc{font-size:12px;color:var(--ds-text-muted);line-height:1.4;margin:3px 0 0}.tf-docket-seal-cta{display:flex;align-items:center}.tf-claimed-badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--ds-radius-pill);background:var(--ds-mint);color:var(--ds-surface);font-size:12px;font-weight:800}.tf-review-acoustic-toggle,.tf-acoustic-head .ds-button,.tf-dictation-hint-toggle,.tf-console-footer .ds-button,.tf-dictation-input{min-height:44px}.tf-acoustic-clinic-card{min-width:0;position:relative;background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:var(--ds-radius-md);padding:16px;display:flex;flex-direction:column;gap:14px}.tf-acoustic-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.tf-acoustic-tag-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.tf-acoustic-badge{font-size:11px;font-weight:700;color:var(--ds-sky-ink);background:var(--ds-sky-soft);padding:2px 8px;border-radius:var(--ds-radius-pill)}.tf-acoustic-title{font-size:17px;font-weight:800;color:var(--ds-text);margin:3px 0 0;display:flex;align-items:center;gap:6px}.tf-acoustic-sub{font-size:12px;color:var(--ds-text-muted);line-height:1.4;margin:0}.tf-acoustic-filters{display:flex;flex-direction:column;gap:4px}.tf-acoustic-console{min-width:0;background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:var(--ds-radius-sm);padding:16px;display:flex;flex-direction:column;gap:14px}.tf-console-meta{display:flex;align-items:center;justify-content:space-between;gap:8px}.tf-console-category-tag{font-size:12px;font-weight:800;color:var(--ds-sky-ink);background:var(--ds-sky-soft);padding:3px 8px;border-radius:var(--ds-radius-pill)}.tf-console-counter{font-size:12px;font-weight:800;color:var(--ds-text-muted)}.tf-acoustic-sentence-box{background:var(--ds-surface-sunken);border:1px solid var(--ds-border);border-radius:var(--ds-radius-sm);padding:14px}.tf-sentence-text{font-size:16px;line-height:1.6;color:var(--ds-text);margin:0;font-weight:600}.tf-acoustic-mark{background:var(--ds-lemon-soft);color:var(--ds-text);font-weight:800;padding:2px 6px;border-radius:4px;border-bottom:2px solid var(--ds-caramel)}.tf-acoustic-player-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.tf-speed-selector{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0}.tf-speed-label{font-size:12px;font-weight:700;color:var(--ds-text-muted)}.tf-speed-pill{min-height:44px;padding:4px 8px;font-size:11px;font-weight:700;border-radius:var(--ds-radius-pill);border:1px solid var(--ds-border);background:var(--ds-surface);color:var(--ds-text);cursor:pointer;transition-property:transform,opacity,color,background-color,border-color,box-shadow,fill,stroke;transition-duration:.15s;transition-timing-function:ease}.tf-speed-pill.is-active{background:var(--ds-sky);color:var(--ds-surface);border-color:var(--ds-sky)}.tf-phonetic-diagnostic{background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:var(--ds-radius-sm);padding:12px;display:flex;flex-direction:column;gap:10px}.tf-phonetic-row{display:flex;align-items:center;gap:8px}.tf-ipa-badge{font-size:11px;font-weight:800;padding:2px 6px;border-radius:4px;background:var(--ds-surface-sunken);color:var(--ds-text-muted)}.tf-ipa-text{font-size:13px;font-weight:800;color:var(--ds-caramel-ink);background:var(--ds-caramel-soft);padding:2px 8px;border-radius:4px}.tf-diagnostic-body{display:flex;flex-direction:column;gap:6px;font-size:12px;line-height:1.5}.tf-rule-item{display:flex;align-items:flex-start;gap:6px;color:var(--ds-text)}.tf-rule-icon{color:var(--ds-caramel);flex-shrink:0;margin-top:2px}.tf-trap-warning-item{display:flex;align-items:flex-start;gap:6px;color:var(--ds-bad-ink);background:var(--ds-bad-soft);padding:6px 10px;border-radius:6px}.tf-trap-icon{color:var(--ds-bad);flex-shrink:0;margin-top:2px}.tf-dictation-box{min-width:0;background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:var(--ds-radius-sm);padding:14px;display:flex;flex-direction:column;gap:10px}.tf-dictation-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.tf-dictation-title{font-size:14px;font-weight:800;color:var(--ds-text);margin:0}.tf-dictation-hint-callout{background:var(--ds-lemon-soft);border:1px solid var(--ds-warn);border-radius:6px;padding:6px 10px}.tf-dictation-hint{font-size:11px;color:var(--ds-text);font-weight:700}.tf-dictation-prompt{font-size:12px;color:var(--ds-text-muted);margin:0}.tf-dictation-input-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.tf-dictation-input{flex:1 1 150px;min-width:0;font-size:14px;padding:8px 12px;border-radius:8px;border:1px solid var(--ds-border);background:var(--ds-surface);color:var(--ds-text)}.tf-dictation-result{padding:12px;border-radius:8px;display:flex;flex-direction:column;gap:8px}.tf-dictation-result.is-correct{background:var(--ds-mint-soft);border:1px solid var(--ds-mint);color:var(--ds-mint-ink)}.tf-dictation-result.is-wrong{background:var(--ds-bad-soft);border:1px solid var(--ds-bad);color:var(--ds-bad-ink)}.tf-result-head{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:800}.tf-ok-icon{color:var(--ds-mint)}.tf-bad-icon{color:var(--ds-bad)}.tf-dictation-diff{display:flex;flex-direction:column;gap:4px;font-size:12px}.tf-diff-label{font-weight:700;margin-right:4px}.tf-target-code{font-weight:800;color:var(--ds-mint-ink)}.tf-user-code{font-weight:800;color:var(--ds-text)}.tf-console-footer{display:flex;align-items:center;justify-content:space-between;gap:8px}.tf-completed-count{font-size:12px;font-weight:800;color:var(--ds-caramel-ink)}.tf-fox-coaching{background:var(--ds-surface-sunken);border:1px solid var(--ds-border);border-radius:var(--ds-radius-sm);padding:12px 14px;display:flex;align-items:flex-start;gap:12px}.tf-fox-body{display:flex;flex-direction:column;gap:2px}.tf-fox-title{font-size:13px;font-weight:800;color:var(--ds-text)}.tf-fox-advice{font-size:12px;color:var(--ds-text-muted);line-height:1.4;margin:0}.tf-growth-dossier-card{position:relative;background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:var(--ds-radius-md);padding:16px;display:flex;flex-direction:column;gap:16px}.tf-dossier-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.tf-dossier-brand{display:flex;flex-direction:column;gap:4px}.tf-dossier-tag-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.tf-dossier-badge{font-size:11px;font-weight:700;color:var(--ds-caramel);background:var(--ds-caramel-soft);padding:2px 8px;border-radius:var(--ds-radius-pill)}.tf-dossier-title{font-size:17px;font-weight:800;color:var(--ds-text);margin:2px 0 0;display:flex;align-items:center;gap:6px}.tf-dossier-sub{font-size:12px;color:var(--ds-text-muted);line-height:1.4;margin:0}.tf-dossier-stats-strip{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}@media(min-width:600px){.tf-dossier-stats-strip{grid-template-columns:repeat(4,1fr)}}.tf-dossier-stat-tile{background:var(--ds-surface-sunken);border:1px solid var(--ds-border);border-radius:var(--ds-radius-sm);padding:10px 12px;display:flex;flex-direction:column;gap:2px}.tf-stat-label{font-size:11px;font-weight:700;color:var(--ds-text-muted)}.tf-stat-value{font-size:16px;font-weight:900;color:var(--ds-text);line-height:1.2}.tf-stat-sub{font-size:10px;color:var(--ds-text-subtle)}.tf-dossier-radar-section{background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:var(--ds-radius-sm);padding:16px;display:flex;flex-direction:column;gap:14px}.tf-radar-section-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.tf-radar-section-title{font-size:14px;font-weight:800;color:var(--ds-text);margin:0;display:flex;align-items:center;gap:6px}.tf-radar-legend{display:flex;align-items:center;gap:12px;font-size:11px;font-weight:700;color:var(--ds-text-muted)}.tf-legend-dot{display:inline-block;width:8px;height:8px;border-radius:var(--ds-radius-pill);margin-right:4px}.tf-legend-dot.is-curr{background:var(--ds-caramel)}.tf-legend-dot.is-base{background:var(--ds-border-strong)}.tf-dossier-radar-wrapper{display:flex;justify-content:center;padding:8px 0}.tf-dossier-dimension-bars{display:flex;flex-direction:column;gap:8px}.tf-dossier-bar-row{display:flex;flex-direction:column;gap:4px}.tf-bar-row-info{display:flex;align-items:center;justify-content:space-between;font-size:12px}.tf-bar-dim-name{font-weight:700;color:var(--ds-text)}.tf-bar-dim-scores{display:flex;align-items:center;gap:6px}.tf-bar-curr-score{font-weight:800;color:var(--ds-text)}.tf-bar-delta{font-size:11px;font-weight:800;color:var(--ds-mint);background:var(--ds-mint-soft);padding:1px 4px;border-radius:4px}.tf-dossier-export-box{background:var(--ds-caramel-soft);border:1px solid var(--ds-caramel);border-radius:var(--ds-radius-sm);padding:14px;display:flex;flex-direction:column;gap:12px}.tf-export-info{display:flex;align-items:flex-start;gap:10px}.tf-export-icon{color:var(--ds-caramel);flex-shrink:0;margin-top:2px}.tf-export-title{font-size:14px;font-weight:800;color:var(--ds-text)}.tf-export-desc{font-size:12px;color:var(--ds-text-muted);line-height:1.4;margin:2px 0 0}.tf-export-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.tf-download-success-notice{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:800;color:var(--ds-mint-ink);background:var(--ds-mint-soft);padding:6px 10px;border-radius:6px}.tf-vault-capsule-box{background:var(--ds-surface-sunken);border:1px solid var(--ds-border);border-radius:var(--ds-radius-sm);padding:10px 14px}.tf-capsule-check-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.tf-capsule-ping-pill{font-size:11px;font-weight:800;color:var(--ds-mint-ink);background:var(--ds-mint-soft);padding:4px 8px;border-radius:var(--ds-radius-pill)}.tf-spin{animation:tf-spin-anim .8s linear infinite}@keyframes tf-spin-anim{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.button:active,.tf-tree-badge-card:active,.tf-docket-item:active{transform:translateY(2px)}.tf-tts-player-card{background:var(--ds-surface-sunken);border:1px solid var(--ds-border);border-radius:var(--ds-radius-sm);padding:12px 14px;display:flex;flex-direction:column;gap:10px;margin-bottom:12px}.tf-tts-player-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.tf-tts-brand-row{display:flex;align-items:center;gap:6px}.tf-tts-icon{color:var(--ds-sky)}.tf-tts-title{font-size:13px;font-weight:800;color:var(--ds-text)}.tf-tts-accent-pills{display:flex;align-items:center;gap:4px}.tf-tts-pill{padding:2px 6px;font-size:11px;font-weight:700;border-radius:var(--ds-radius-pill);border:1px solid var(--ds-border);background:var(--ds-surface);color:var(--ds-text);cursor:pointer;transition-property:transform,opacity,color,background-color,border-color,box-shadow,fill,stroke;transition-duration:.15s;transition-timing-function:ease}.tf-tts-pill.is-active{background:var(--ds-sky);color:var(--ds-surface);border-color:var(--ds-sky)}.tf-tts-player-controls{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.tf-tts-actions-group{display:flex;align-items:center;gap:8px}.tf-tts-soundwave{display:inline-flex;align-items:flex-end;gap:2px;height:14px}.tf-wave-bar{width:3px;height:100%;background:var(--ds-sky);border-radius:2px;animation:tf-soundwave-anim .8s ease-in-out infinite alternate}.tf-wave-bar:nth-child(2){animation-delay:.2s;height:60%}.tf-wave-bar:nth-child(3){animation-delay:.4s;height:80%}.tf-wave-bar:nth-child(4){animation-delay:.1s;height:40%}@keyframes tf-soundwave-anim{0%{height:30%}to{height:100%}}.tf-tts-speed-group{display:flex;align-items:center;gap:4px}.tf-tts-speed-lbl{font-size:11px;font-weight:700;color:var(--ds-text-muted)}.tf-tts-speed-pill{padding:2px 6px;font-size:11px;font-weight:700;border-radius:var(--ds-radius-pill);border:1px solid var(--ds-border);background:var(--ds-surface);color:var(--ds-text);cursor:pointer}.tf-tts-speed-pill.is-active{background:var(--ds-caramel);color:var(--ds-surface);border-color:var(--ds-caramel)}.tf-tts-compact-player{display:inline-flex;align-items:center;gap:6px}.tf-tts-compact-btn{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:var(--ds-radius-pill);border:1px solid var(--ds-border);background:var(--ds-surface);color:var(--ds-text);font-size:11px;font-weight:700;cursor:pointer;transition-property:transform,opacity,color,background-color,border-color,box-shadow,fill,stroke;transition-duration:.15s;transition-timing-function:ease}.tf-tts-compact-btn.is-active{background:var(--ds-sky-soft);color:var(--ds-sky-ink);border-color:var(--ds-sky)}.tf-tts-accent-badge{font-size:10px;font-weight:700;color:var(--ds-text-subtle)}.tf-round-inspector-controls{margin-top:8px;margin-bottom:14px;display:flex;flex-direction:column;gap:8px}.tf-round-inspector-bar{display:flex;align-items:center;justify-content:space-between;gap:8px}.tf-inspector-magnifier-btn{position:relative;display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:var(--ds-radius-pill);color:var(--ds-text);font-size:12px;font-weight:700;cursor:pointer;transition:transform var(--ds-motion-base) var(--ds-ease-bounce),background var(--ds-motion-fast) ease,border-color var(--ds-motion-fast) ease}.tf-inspector-magnifier-btn:hover{background:var(--ds-caramel-soft);border-color:var(--ds-caramel)}.tf-inspector-magnifier-btn:active{transform:scale(.95) translateY(1px)}.tf-inspector-icon{display:inline-block;transition:transform var(--ds-motion-smooth) var(--ds-ease-bounce)}.tf-inspector-magnifier-btn:hover .tf-inspector-icon,.tf-inspector-magnifier-btn.is-active .tf-inspector-icon{transform:scale(1.22) rotate(-8deg)}.tf-inspector-magnifier-btn.is-active{background:var(--ds-caramel);color:var(--ds-on-brand);border-color:var(--ds-caramel-ledge);box-shadow:var(--ds-shadow-float)}.tf-inspector-pill-badge{font-size:10px;font-weight:800;padding:2px 6px;border-radius:var(--ds-radius-pill);background:var(--ds-surface-sunken);color:var(--ds-caramel-ink);transition:background var(--ds-motion-fast) ease,color var(--ds-motion-fast) ease}.tf-inspector-magnifier-btn.is-active .tf-inspector-pill-badge{background:var(--ds-surface);color:var(--ds-caramel-ink)}.tf-inspector-clue-dossier{background:var(--ds-caramel-soft);border:1px dashed var(--ds-caramel);border-radius:var(--ds-radius-card);padding:14px;display:flex;flex-direction:column;gap:8px;animation:tf-drawer-unfold .28s var(--ds-ease-bounce);transform-origin:top center}@keyframes tf-drawer-unfold{0%{opacity:0;transform:scaleY(.85) translateY(-8px)}to{opacity:1;transform:scaleY(1) translateY(0)}}.tf-inspector-clue-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.tf-inspector-trap-title{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ds-caramel-ink);font-weight:800}.tf-inspector-mantra{font-size:12px;font-weight:800;color:var(--ds-text);margin:0;padding:6px 10px;background:var(--ds-surface);border-radius:var(--ds-radius-sm);border:1px solid var(--ds-border)}.tf-inspector-rule-box{display:flex;flex-direction:column;gap:4px}.tf-inspector-rule-text,.tf-inspector-bait-tip{font-size:12px;line-height:1.5;color:var(--ds-text);margin:0}.tf-dossier-tab-switcher{display:flex;gap:8px;margin-bottom:16px;border-bottom:1px solid var(--ds-border);padding-bottom:10px}.tf-dossier-tab-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;font-size:13px;font-weight:800;border-radius:var(--ds-radius-pill);border:1px solid var(--ds-border);background:var(--ds-surface);color:var(--ds-text-muted);cursor:pointer;transition:transform var(--ds-motion-base) var(--ds-ease-bounce),background var(--ds-motion-fast) ease,color var(--ds-motion-fast) ease}.tf-dossier-tab-btn:hover{background:var(--ds-caramel-soft);color:var(--ds-text)}.tf-dossier-tab-btn:active{transform:scale(.95)}.tf-dossier-tab-btn.is-active{background:var(--ds-caramel);color:var(--ds-on-brand);border-color:var(--ds-caramel-ledge)}.tf-gazette-newspaper{background:var(--ds-caramel-soft);border:2px solid var(--ds-caramel);border-radius:var(--ds-radius-card);padding:20px;display:flex;flex-direction:column;gap:16px;position:relative;animation:tf-paper-unfold .35s var(--ds-ease-bounce);transform-origin:top center}@keyframes tf-paper-unfold{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.tf-gazette-masthead{text-align:center;border-bottom:2px solid var(--ds-caramel);padding-bottom:12px;display:flex;flex-direction:column;gap:4px}.tf-gazette-title-en{font-size:22px;font-weight:900;letter-spacing:2px;color:var(--ds-caramel-ink);margin:0;text-transform:uppercase}.tf-gazette-subtitle{font-size:13px;font-weight:800;color:var(--ds-text);margin:0}.tf-gazette-dateline{display:flex;justify-content:space-between;align-items:center;font-size:11px;font-weight:700;color:var(--ds-text-subtle);border-top:1px solid var(--ds-border);padding-top:6px;margin-top:4px}.tf-gazette-hero-article{background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:var(--ds-radius-card);padding:16px;display:flex;flex-direction:column;gap:8px}.tf-gazette-headline{font-size:17px;font-weight:900;color:var(--ds-text);margin:0;line-height:1.4}.tf-gazette-lead{font-size:13px;line-height:1.6;color:var(--ds-text-muted);margin:0}.tf-gazette-bento-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.tf-gazette-column-card{background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:var(--ds-radius-card);padding:14px;display:flex;flex-direction:column;gap:8px;transition:transform var(--ds-motion-base) var(--ds-ease-bounce),border-color var(--ds-motion-fast) ease}.tf-gazette-column-card:hover{transform:translateY(-2px);border-color:var(--ds-caramel)}.tf-gazette-column-title{font-size:14px;font-weight:800;color:var(--ds-caramel-ink);margin:0;display:flex;align-items:center;gap:6px}.tf-gazette-stat-list{display:flex;flex-direction:column;gap:6px}.tf-gazette-stat-item{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--ds-text)}.tf-gazette-quote{font-size:12px;font-style:italic;line-height:1.5;color:var(--ds-text-muted);margin:0;padding:6px 8px;background:var(--ds-caramel-soft);border-radius:var(--ds-radius-sm);border-left:3px solid var(--ds-caramel)}.tf-radar-dim-chip:active,.tf-rubric-band-btn:active,.tf-theme-pill-btn:active,.tf-tts-compact-btn:active,.tf-tts-pill:active,.tf-tts-speed-pill:active{transform:scale(.94)}@media(prefers-reduced-motion:reduce){.tf-docket-flip-inner{transition:none}.tf-inspector-magnifier-btn,.tf-inspector-icon,.tf-dossier-tab-btn,.tf-gazette-column-card,.tf-radar-dim-chip,.tf-rubric-band-btn,.tf-theme-pill-btn,.tf-tts-compact-btn,.tf-tts-pill,.tf-tts-speed-pill{transition:none;transform:none}.tf-inspector-clue-dossier,.tf-gazette-newspaper,.tf-wave-bar{animation:none}}:root[data-exam=ielts] body{background-image:none;font-weight:500}:root[data-exam=ielts] h1,:root[data-exam=ielts] h2,:root[data-exam=ielts] h3,:root[data-exam=ielts] h4{font-weight:700}:root[data-exam=ielts] .ds-button{border-radius:var(--ds-radius-md);font-weight:700;letter-spacing:0}:root[data-exam=ielts] .ds-button--large{min-height:52px;padding:12px 24px;font-size:var(--ds-text-base)}:root[data-exam=ielts] .ds-button--compact{border-radius:var(--ds-radius-sm)}:root[data-exam=ielts] .ds-button:not(.ds-button--primary):not(.ds-button--success):not(.ds-button--danger):not(.ds-button--ghost):not(.ds-button--tertiary){--btn-edge: var(--ds-border-strong)}:root[data-exam=ielts] .ds-button--tertiary{--btn-edge: transparent}:root[data-exam=ielts] .ds-button:active:not(:disabled){transform:scale(.985)}:root[data-exam=ielts] .ds-button--ghost:active:not(:disabled){transform:none}:root[data-exam=ielts] .ds-chip{box-shadow:none;font-weight:600}:root[data-exam=ielts] .ds-chip:active:not(:disabled){transform:scale(.98);box-shadow:none}:root[data-exam=ielts] .ds-card{border-radius:var(--ds-radius-lg);box-shadow:var(--ds-shadow-card)}:root[data-exam=ielts] .tf-app .ds-card[data-tone]{border-color:var(--ds-border);box-shadow:var(--ds-shadow-card)}:root[data-exam=ielts] .ds-tag{font-weight:700}:root[data-exam=ielts] .tf-hud-bar{padding:var(--ds-space-1) 0;border:0;border-radius:0;background:transparent;box-shadow:none}:root[data-exam=ielts] .tf-brand-name{color:var(--ds-text);font-weight:800;letter-spacing:0}:root[data-exam=ielts] .tf-counter{min-height:34px;border:0;background:var(--ds-surface);box-shadow:var(--ds-shadow-card);color:var(--ds-text);font-weight:700}:root[data-exam=ielts] .tf-hero{gap:var(--ds-space-4);padding:var(--ds-space-4)}:root[data-exam=ielts] .tf-hero:before{content:none}:root[data-exam=ielts] .tf-stage-bar{padding-bottom:0;border-bottom:0}:root[data-exam=ielts] .tf-track-chip{border:0 solid transparent;border-block-width:6px;margin-block:-6px;background:var(--ds-surface-sunken);background-clip:padding-box;color:var(--ds-text-muted);font-weight:600}:root[data-exam=ielts] .tf-track-chip span{background:var(--ds-surface);color:var(--ds-brand-ink);font-weight:700}:root[data-exam=ielts] .tf-countdown{min-height:32px;font-weight:600}:root[data-exam=ielts] .tf-page--today .tf-hero-top{order:1;align-items:center;gap:var(--ds-space-4)}:root[data-exam=ielts] .tf-page--today .tf-stage-meter{order:2}:root[data-exam=ielts] .tf-page--today .tf-hero-cta{order:3}:root[data-exam=ielts] .tf-hero-top .tf-mascot-pedestal{padding:0;border:0;background:none;box-shadow:none}@media(max-width:480px){:root[data-exam=ielts] .tf-page--today .tf-hero{grid-template-columns:minmax(0,1fr) auto;column-gap:var(--ds-space-3)}:root[data-exam=ielts] .tf-page--today .tf-hero-top{display:contents}:root[data-exam=ielts] .tf-page--today .tf-stage-bar{grid-column:1;grid-row:1;align-self:center}:root[data-exam=ielts] .tf-page--today .tf-hero-top .tf-mascot-pedestal{grid-column:2;grid-row:1;justify-self:end}:root[data-exam=ielts] .tf-page--today .tf-hero-headline{grid-column:1 / -1;grid-row:2}:root[data-exam=ielts] .tf-page--today .tf-stage-meter{grid-column:1 / -1;grid-row:3}:root[data-exam=ielts] .tf-page--today .tf-hero-cta{grid-column:1 / -1;grid-row:4}}@media(max-width:340px){:root[data-exam=ielts] .tf-page--today .tf-hero-top .tf-mascot-pedestal{display:none}}:root[data-exam=ielts] .tf-bubble{padding:0;border-radius:0;background:none;color:var(--ds-text-muted);font-size:var(--ds-text-sm);font-weight:500}:root[data-exam=ielts] .tf-bubble:before{content:none}:root[data-exam=ielts] .tf-hero-title{font-size:1.625rem;font-weight:700}:root[data-exam=ielts] .tf-hero-sub{color:var(--ds-text-muted);font-weight:500}:root[data-exam=ielts] .tf-stage-meter{height:8px;border:0;border-radius:var(--ds-radius-pill);background:var(--ds-surface-sunken)}:root[data-exam=ielts] .tf-stage-meter-fill{background:var(--ds-brand)}:root[data-exam=ielts] .tf-footprints-card,:root[data-exam=ielts] .tf-dept-stations{border-radius:var(--ds-radius-lg);box-shadow:var(--ds-shadow-card)}:root[data-exam=ielts] .tf-week{border-top:1px solid var(--ds-border)}:root[data-exam=ielts] .tf-week-mark{border-width:1px}:root[data-exam=ielts] .tf-week li[data-today] .tf-week-mark{border-width:2px;border-color:var(--ds-brand)}:root[data-exam=ielts] .tf-rpg-stats{padding:0;border:0;background:none}:root[data-exam=ielts] .tf-rpg-stat-item{border:1px solid var(--ds-border);border-radius:var(--ds-radius-md)}:root[data-exam=ielts] .tf-rpg-bar-fill{height:8px;background:var(--tone, var(--ds-brand))}:root[data-exam=ielts] .tf-rpg-goal-badge{font-weight:700}:root[data-exam=ielts] .tf-nodate-strip{border-top:1px solid var(--ds-border)}:root[data-exam=ielts] .tf-week li[data-done=false]:not([data-saved]) .tf-week-mark>svg{display:none}:root[data-exam=ielts] .tf-week-day{font-weight:600}:root[data-exam=ielts] .tf-week li[data-today] .tf-week-day{color:var(--ds-brand-ink);font-weight:700}:root[data-exam=ielts] .tf-countdown{background:var(--ds-surface-sunken);color:var(--ds-text-muted)}:root[data-exam=ielts] .tf-nav{border-top:1px solid var(--ds-border)}:root[data-exam=ielts] .tf-nav a{font-weight:600}:root[data-exam=ielts] .tf-nav a svg{padding:4px 18px;border:0;border-radius:var(--ds-radius-pill)}:root[data-exam=ielts] .tf-nav a[aria-current=page]{color:var(--ds-brand-ink);font-weight:700}:root[data-exam=ielts] .tf-nav a[aria-current=page] svg{border:0;background:var(--ds-brand-soft);color:var(--ds-brand-ink)}@media(min-width:900px){:root[data-exam=ielts] .tf-app>.tf-nav{border:1px solid var(--ds-border);border-radius:var(--ds-radius-xl);background:var(--ds-surface);box-shadow:var(--ds-shadow-card)}}:root[data-exam=ielts] .tf-round-title{color:var(--ds-text);font-weight:700}:root[data-exam=ielts] .tf-round .tf-meter{height:6px;border:0;border-radius:var(--ds-radius-pill);background:var(--ds-surface-sunken)}:root[data-exam=ielts] .tf-round .tf-meter-fill{background:var(--ds-brand)}:root[data-exam=ielts] .tf-round .tf-meter-fill:before,:root[data-exam=ielts] .tf-round .tf-meter-candy{display:none}:root[data-exam=ielts] .tf-stage-companion{padding:0;border:0;border-radius:0;background:none;box-shadow:none;animation:none}:root[data-exam=ielts] .tf-stage-companion-copy p{color:var(--ds-text-muted);font-size:var(--ds-text-sm);font-weight:500}:root[data-exam=ielts] .tf-item-name{color:var(--ds-text-subtle);font-weight:600}:root[data-exam=ielts] .tf-limit{border-radius:var(--ds-radius-md);background:var(--ds-surface-sunken)}:root[data-exam=ielts] .tf-round--arena .tf-listen{padding:0;border:0;border-radius:0;background:none;box-shadow:none}:root[data-exam=ielts] .tf-listen .tf-play{--btn-bg: var(--ds-brand);--btn-fg: var(--ds-on-brand);--btn-edge: var(--ds-brand);--btn-ledge: var(--ds-brand-ledge)}:root[data-exam=ielts] .tf-round--arena .tf-notes-card,:root[data-exam=ielts] .tf-round--arena .tf-reading,:root[data-exam=ielts] .tf-round--arena .tf-speak-card{border-width:1px;border-radius:var(--ds-radius-lg);box-shadow:none}:root[data-exam=ielts] .tf-round--arena .tf-option{border-width:1px;border-radius:var(--ds-radius-md);box-shadow:none}:root[data-exam=ielts] .tf-round--arena .tf-option-letter{border-width:1px;border-bottom-width:1px;border-radius:var(--ds-radius-sm)}:root[data-exam=ielts] .tf-round--arena .tf-options>li .tf-option:after,:root[data-exam=ielts] .tf-round--arena .tf-options>label.tf-option:after{border:1px solid var(--ds-border-strong);border-radius:6px;background:var(--ds-surface-sunken);box-shadow:none;color:var(--ds-text-subtle);font-weight:600}:root[data-exam=ielts] .tf-round--arena .tf-option:active:after{transform:none}:root[data-exam=ielts] .tf-round--arena .tf-chip,:root[data-exam=ielts] .tf-round--arena .tf-word{border-width:1px;border-bottom-width:1px;border-radius:var(--ds-radius-sm)}:root[data-exam=ielts] .tf-feedback,:root[data-exam=ielts] .tf-feedback[data-result]{--sheet: var(--ds-surface);border-color:var(--ds-border);border-width:1px;border-radius:var(--ds-radius-lg)}:root[data-exam=ielts] .tf-round--arena .tf-feedback{box-shadow:var(--ds-shadow-card)}:root[data-exam=ielts] .tf-round--arena .tf-feedback[data-result=right]{box-shadow:inset 0 3px 0 var(--ds-ok),var(--ds-shadow-card)}:root[data-exam=ielts] .tf-round--arena .tf-feedback[data-result=wrong]{box-shadow:inset 0 3px 0 var(--ds-bad),var(--ds-shadow-card)}:root[data-exam=ielts] .tf-feedback-title{font-size:1.25rem;font-weight:700}:root[data-exam=ielts] .tf-feedback-detail{font-weight:500}:root[data-exam=ielts] .tf-explanation{border:1px solid var(--ds-border);background:var(--ds-surface-sunken)}:root[data-exam=ielts] .tf-feedback-foot{position:sticky;bottom:0;z-index:4;display:flex;flex-direction:column-reverse;align-items:stretch;gap:var(--ds-space-1);margin:0 calc(-1 * var(--ds-space-4)) calc(-1 * var(--ds-space-4));padding:var(--ds-space-3) var(--ds-space-4) calc(var(--ds-space-3) + env(safe-area-inset-bottom));border-radius:0 0 var(--ds-radius-lg) var(--ds-radius-lg);background:linear-gradient(to bottom,transparent,var(--sheet) 28%)}:root[data-exam=ielts] .tf-feedback-foot .tf-next{width:100%}:root[data-exam=ielts] .tf-feedback-foot .tf-report-link{align-self:center;color:var(--ds-text-subtle);font-weight:500}:root[data-exam=ielts] .tf-round{--type: var(--ds-brand);--type-soft: var(--ds-brand-soft);--type-ink: var(--ds-brand-ink);--type-ledge: var(--ds-brand-ledge)}:root[data-exam=ielts] .tf-notes-title{color:var(--ds-text);font-weight:700}:root[data-exam=ielts] .tf-gap-input{border:1px solid var(--ds-border-strong);border-radius:var(--ds-radius-sm);background:var(--ds-surface);font-weight:600}:root[data-exam=ielts] .tf-gap-input:focus{border-color:var(--ds-brand)}:root[data-exam=ielts] .tf-option{min-height:56px;border-radius:var(--ds-radius-md);box-shadow:none;font-weight:600}:root[data-exam=ielts] .tf-option:active{transform:none;box-shadow:none}:root[data-exam=ielts] .tf-option-letter{border:0;border-radius:var(--ds-radius-sm);background:var(--ds-surface-sunken);color:var(--ds-text-muted);font-weight:700}:root[data-exam=ielts] .tf-option:has(input:checked){border-color:var(--ds-brand);background:var(--ds-brand-soft);box-shadow:inset 0 0 0 1px var(--ds-brand)}:root[data-exam=ielts] .tf-option:has(input:checked) .tf-option-letter{background:var(--ds-brand);color:var(--ds-on-brand)}:root[data-exam=ielts] .tf-options .tf-option[data-result=right]{box-shadow:inset 0 0 0 1px var(--ds-ok)}:root[data-exam=ielts] .tf-options .tf-option[data-result=wrong]{box-shadow:inset 0 0 0 1px var(--ds-bad)}:root[data-exam=ielts] .tf-me-row-icon,:root[data-exam=ielts] .tf-me-row-icon[data-tone]{background:var(--ds-surface-sunken);color:var(--ds-text-muted)}:root[data-exam=ielts] .tf-me-row-name{font-weight:700}:root[data-exam=ielts] .tf-me-group-title{font-weight:700}:root[data-exam=ielts] .tf-mascot,:root[data-exam=ielts] .tf-mascot-wrap{--ds-brand: var(--ds-wplus-body);--ds-on-brand: var(--ds-wplus-eyes)}:root[data-exam=ielts] .tf-welcome .tf-benefits li,:root[data-exam=ielts] .tf-benefits li{border:1px solid var(--ds-border);border-radius:var(--ds-radius-lg);box-shadow:var(--ds-shadow-card);font-weight:600}:root[data-exam=ielts] .tf-choice-card{border-radius:var(--ds-radius-lg);box-shadow:none}:root[data-exam=ielts] .tf-choice-card:active{transform:scale(.99);box-shadow:none}:root[data-exam=ielts] .tf-choice-card:has(input:checked){box-shadow:inset 0 0 0 1px var(--ds-brand)}:root[data-exam=ielts] .tf-choice-title{font-weight:700}:root[data-exam=ielts] .tf-step-dots li{height:6px}:root[data-exam=ielts] .tf-step-dots li[data-state=current]{box-shadow:none}:root[data-exam=ielts] .tf-level-scores span{font-weight:700}:root[data-exam=ielts] .ds-chip,:root[data-exam=ielts] .ds-button--compact,:root[data-exam=ielts] .tf-track-chip{min-height:44px}:root[data-exam=ielts] .tf-tts-compact-btn{min-height:44px;padding:0 var(--ds-space-4);font-size:var(--ds-text-sm)}:root[data-exam=ielts] details>summary{box-sizing:border-box;min-height:44px;padding-block:9px;cursor:pointer}:root[data-exam=ielts] .tf-score strong{animation:none;background:none;color:var(--ds-brand-ink)}.tf-cast{display:inline-flex;flex:none;align-items:flex-end;justify-content:center}.tf-cast-letter{position:relative;display:block;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.tf-cast-letter+.tf-cast-letter{margin-inline-start:calc(var(--cast-size) * -.12)}.tf-cast .lt{display:block;overflow:visible}.lt .lt-hop,.lt .lt-squash,.lt .lt-breathe,.lt .lt-acc{transform-box:fill-box;transform-origin:50% 100%}.lt .lt-eye,.lt .lt-feat{transform-box:fill-box;transform-origin:50% 50%}.lt .lt-face{transition:transform var(--ds-motion-fast) var(--ds-ease-out)}.lt-z{position:absolute;pointer-events:none;color:var(--ds-grape);font:900 18px/1 var(--ds-font)}.lt-confetti{position:fixed;inset:0;z-index:30;overflow:hidden;pointer-events:none}.lt-confetti i{position:absolute;top:0;left:0;display:block}.tf-result-cast{display:flex;margin:0 auto var(--ds-space-2)}.tf-welcome>.tf-cast{align-self:center;min-height:calc(var(--cast-size) * 1.1)}:root[data-exam=ielts][data-layout=canvas] .tf-gummy{display:inline-grid;justify-items:center;gap:12px;min-height:calc(var(--gummy-letter, 44px) * 1.5 + 32px)}:root[data-exam=ielts][data-layout=canvas] .tf-gummy--line{--gummy-letter: 20px;display:inline-flex;align-items:flex-end;gap:8px;min-height:calc(var(--gummy-letter) * 1.5);vertical-align:bottom}:root[data-exam=ielts][data-layout=canvas] .tf-gummy[data-shown]{animation:tf-gummy-in var(--ds-motion-smooth) var(--ds-ease-out) both}:root[data-exam=ielts][data-layout=canvas] .tf-gummy-label{color:var(--ds-text-muted);font-size:15px;font-weight:700}:root[data-exam=ielts][data-layout=canvas] .tf-gummy--line .tf-gummy-label{font-size:13px}:root[data-exam=ielts][data-layout=canvas] .tf-gummy-cast{padding-top:calc(var(--cast-size) * .5)}:root[data-exam=ielts][data-layout=canvas] .tf-gummy-cast .tf-cast-letter+.tf-cast-letter{margin-inline-start:calc(var(--cast-size) * .08)}:root[data-exam=ielts][data-layout=canvas] .tf-gummy-cast .tf-cast-letter{isolation:isolate}:root[data-exam=ielts][data-layout=canvas] .tf-gummy-cast .tf-cast-letter:after{content:"";position:absolute;z-index:-1;right:18%;bottom:calc(var(--cast-size) * -.06);left:18%;height:calc(var(--cast-size) * .14);border-radius:50%;background:var(--ds-border-strong)}:root[data-exam=ielts][data-layout=canvas] .tf-gummy-page .tf-empty{padding-block:20px 24px}@keyframes tf-gummy-in{0%{opacity:0}}@media(prefers-reduced-motion:no-preference){:root[data-exam=ielts][data-layout=canvas] .tf-gummy-cast .lt{transform-origin:50% 100%;animation:tf-gummy-hop 1.4s cubic-bezier(.45,0,.55,1) infinite both}:root[data-exam=ielts][data-layout=canvas] .tf-gummy-cast .tf-cast-letter:after{animation:tf-gummy-shadow 1.4s cubic-bezier(.45,0,.55,1) infinite both}:root[data-exam=ielts][data-layout=canvas] .tf-gummy-cast .tf-cast-letter:nth-child(2) .lt,:root[data-exam=ielts][data-layout=canvas] .tf-gummy-cast .tf-cast-letter:nth-child(2):after{animation-delay:.12s}:root[data-exam=ielts][data-layout=canvas] .tf-gummy-cast .tf-cast-letter:nth-child(3) .lt,:root[data-exam=ielts][data-layout=canvas] .tf-gummy-cast .tf-cast-letter:nth-child(3):after{animation-delay:.24s}:root[data-exam=ielts][data-layout=canvas] .tf-gummy-cast .tf-cast-letter:nth-child(4) .lt,:root[data-exam=ielts][data-layout=canvas] .tf-gummy-cast .tf-cast-letter:nth-child(4):after{animation-delay:.36s}:root[data-exam=ielts][data-layout=canvas] .tf-gummy-cast .tf-cast-letter:nth-child(5) .lt,:root[data-exam=ielts][data-layout=canvas] .tf-gummy-cast .tf-cast-letter:nth-child(5):after{animation-delay:.48s}}@keyframes tf-gummy-hop{0%,to{transform:translateY(0) scale(1)}10%{transform:translateY(0) scale(1.16,.82)}26%{transform:translateY(-34%) scale(.88,1.14)}40%{transform:translateY(-44%) scale(1.02,.98)}54%{transform:translateY(-8%) scale(.92,1.1)}60%{transform:translateY(0) scale(1.2,.8)}70%{transform:translateY(0) scale(.92,1.08)}80%{transform:translateY(0) scale(1.05,.95)}90%{transform:translateY(0) scale(.99,1.01)}}@keyframes tf-gummy-shadow{0%,60%,to{transform:scale(1);opacity:1}10%{transform:scaleX(1.12)}40%{transform:scaleX(.6);opacity:.5}}@media(prefers-reduced-motion:no-preference){:root[data-exam=ielts][data-layout=canvas] :is(.tf-canvas-topic,.tf-canvas-more-card,.tf-round-row){--press-scale: 1.03, .93}:root[data-exam=ielts][data-layout=canvas] .ds-button--primary:active:not(:disabled){transform:scale(1.03,.92)}}@media(prefers-reduced-motion:no-preference){:root[data-exam=ielts][data-layout=canvas] .tf-result--canvas .tf-canvas-result-blob{transform-origin:50% 100%;animation:tf-gummy-pop .72s var(--ds-ease-out) .16s both}:root[data-exam=ielts][data-layout=canvas] .tf-canvas-set-result .tf-set-score{transform-origin:50% 100%;animation:tf-gummy-pop .64s var(--ds-ease-out) both}:root[data-exam=ielts][data-layout=canvas] .tf-round[data-canvas] .tf-feedback .tf-feedback-title{transform-origin:0 100%;animation:tf-gummy-pop .64s var(--ds-ease-out) both}}@keyframes tf-gummy-pop{0%,to{transform:scale(1)}18%{transform:scale(1.1,.9)}38%{transform:scale(.95,1.06)}58%{transform:scale(1.03,.97)}78%{transform:scale(.99,1.01)}}:root[data-layout=canvas] body{background:var(--ds-bg)}:root[data-layout=canvas]{--tf-nav-height: 62px;--tf-nav-inset: 12px;--tf-nav-pad: 4px;--tf-nav-bottom: max(12px, calc(env(safe-area-inset-bottom) - 12px) );--tf-nav-clearance: calc(var(--tf-nav-height) + var(--tf-nav-bottom));--tf-nav-spring: cubic-bezier(.3, 1.3, .5, 1)}:root[data-layout=canvas] .tf-app{padding-left:0;padding-bottom:calc(var(--tf-nav-clearance) + 16px)}:root[data-layout=canvas] .tf-app>.tf-nav{--tf-nav-count: 4;inset:auto var(--tf-nav-inset) var(--tf-nav-bottom);width:auto;max-width:calc(560px - 2 * var(--tf-nav-inset));height:var(--tf-nav-height);margin-inline:auto;padding:var(--tf-nav-pad);gap:0;grid-template-columns:none;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;border:.5px solid var(--ds-glass-nav-edge);border-radius:var(--ds-radius-pill);background:var(--ds-glass-nav);box-shadow:var(--ds-glass-nav-shadow);-webkit-backdrop-filter:blur(14px) saturate(180%);backdrop-filter:blur(14px) saturate(180%)}:root[data-layout=canvas] .tf-app>.tf-nav[data-count="5"]{--tf-nav-count: 5}:root[data-layout=canvas] .tf-app>.tf-nav:before{content:"";position:absolute;top:var(--tf-nav-pad);bottom:var(--tf-nav-pad);left:var(--tf-nav-pad);width:calc((100% - 2 * var(--tf-nav-pad)) / var(--tf-nav-count));border-radius:var(--ds-radius-pill);background:var(--ds-glass-nav-lens);box-shadow:var(--ds-glass-nav-lens-shadow);opacity:0;pointer-events:none;transform:translate(calc(var(--tf-nav-at, 0) * 100%));transition:transform .46s var(--tf-nav-spring),opacity .16s ease-out}:root[data-layout=canvas] .tf-app>.tf-nav:has(>a[aria-current=page]):before{opacity:1}:root[data-layout=canvas] .tf-app>.tf-nav:has(>a:nth-child(2)[aria-current=page]){--tf-nav-at: 1}:root[data-layout=canvas] .tf-app>.tf-nav:has(>a:nth-child(3)[aria-current=page]){--tf-nav-at: 2}:root[data-layout=canvas] .tf-app>.tf-nav:has(>a:nth-child(4)[aria-current=page]){--tf-nav-at: 3}:root[data-layout=canvas] .tf-app>.tf-nav:has(>a:nth-child(5)[aria-current=page]){--tf-nav-at: 4}:root[data-layout=canvas] .tf-app>.tf-nav a{position:relative;gap:2px;min-height:44px;padding:0 2px;border-radius:var(--ds-radius-pill);color:var(--ds-glass-nav-ink);font-size:11px;font-weight:500;transition:transform .42s var(--tf-nav-spring),color .2s ease-out}:root[data-layout=canvas] .tf-app>.tf-nav a:active{transform:scale(.9);transition-duration:90ms;transition-timing-function:ease-out}:root[data-layout=canvas] .tf-app>.tf-nav a svg{padding:0;border:0;background:none}:root[data-layout=canvas] .tf-app>.tf-nav a[aria-current=page]{color:var(--ds-nav-active);font-weight:700}:root[data-layout=canvas] .tf-app>.tf-nav a[aria-current=page] svg{border:0;background:none;color:var(--ds-nav-active)}:root[data-layout=canvas] .tf-app>.tf-nav a:focus-visible{outline:3px solid var(--ds-focus);outline-offset:-3px;border-radius:var(--ds-radius-pill)}:root[data-layout=canvas] .tf-app>.tf-nav small{position:absolute;top:3px;left:calc(50% + 4px);min-width:20px;margin:0;padding:1px 6px;box-sizing:border-box;background:var(--ds-badge);color:var(--ds-on-badge);font-size:10px;line-height:16px;text-align:center}@media(prefers-reduced-motion:reduce){:root[data-layout=canvas] .tf-app>.tf-nav:before,:root[data-layout=canvas] .tf-app>.tf-nav a{transition:none}:root[data-layout=canvas] .tf-app>.tf-nav a:active{transform:none;opacity:.6}}@media(prefers-reduced-transparency:reduce){:root[data-layout=canvas] .tf-app>.tf-nav{background:var(--ds-glass-nav-solid);-webkit-backdrop-filter:none;backdrop-filter:none}}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){:root[data-layout=canvas] .tf-app>.tf-nav{background:var(--ds-glass-nav-solid)}}:root[data-layout=canvas][data-keyboard=open] .tf-app>.tf-nav{display:none}.tf-canvas-today{display:flex;flex-direction:column;gap:var(--ds-space-4)}.tf-canvas-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--ds-space-3);padding:var(--ds-space-4) 4px 0}.tf-canvas-date{margin:0;color:var(--ds-text);font-size:26px;font-weight:800;letter-spacing:-.3px;line-height:1.2}.tf-canvas-weekday{margin:2px 0 0;color:var(--ds-text-muted);font-size:15px}.tf-canvas-streak{display:inline-flex;flex:none;align-items:center;gap:5px;padding:7px 12px;border-radius:var(--ds-radius-pill);background:var(--ds-chip);color:var(--ds-text-muted);font-size:13px;font-weight:700;white-space:nowrap}.tf-canvas-streak svg{fill:currentColor}.tf-canvas-streak[data-lit]{background:var(--ds-streak);color:var(--ds-streak-ink)}.tf-canvas-streak[data-lit] svg{color:var(--ds-streak-flame)}:root[data-layout=canvas] .tf-canvas-hero{position:relative;display:grid;grid-template-columns:116px minmax(0,1fr);gap:0 24px;min-height:176px;overflow:hidden;box-sizing:border-box;padding:20px 18px 18px 0;border:0;border-radius:22px;background:var(--ds-hero-fill);box-shadow:none;color:var(--ds-hero-ink)}:root[data-layout=canvas] .tf-canvas-hero:before{content:none}.tf-canvas-hero-cast{position:absolute;bottom:12px;left:12px}.tf-canvas-hero-cast .tf-cast-letter{transform:rotate(-6deg)}.tf-canvas-hero[data-state=new] .tf-canvas-hero-cast{bottom:14px;left:14px}.tf-canvas-hero[data-state=new] .tf-canvas-hero-cast .tf-cast-letter{transform:rotate(-8deg)}.tf-canvas-hero-zzz{position:absolute;top:52px;left:104px;margin:0;color:var(--ds-hero-done-ink);font-size:18px;font-weight:900;opacity:.85;transform:rotate(-10deg)}.tf-canvas-hero-zzz small{font-size:13px;font-weight:inherit}.tf-canvas-hero-zzz small+small{font-size:10px}.tf-canvas-hero .lt-z{color:var(--ds-hero-done-ink);font-size:20px}.tf-canvas-hero-body{position:relative;display:flex;flex-direction:column;grid-column:2;gap:8px;min-width:0}.tf-canvas-hero-eyebrow{margin:0;color:var(--ds-hero-eyebrow);font-size:13px;font-weight:700}:root[data-layout=canvas] .tf-canvas-hero-title{margin:0;color:var(--ds-hero-ink);font-size:24px;font-weight:800;letter-spacing:-.3px;line-height:1.25}.tf-canvas-hero-sub{margin:0;color:var(--ds-hero-ink);font-size:13px;font-weight:600}.tf-canvas-hero-meter{display:block;height:8px;overflow:hidden;border-radius:4px;background:var(--ds-hero-track)}.tf-canvas-hero-meter>span{display:block;height:100%;border-radius:4px;background:var(--ds-hero-bar);transform-origin:left}.tf-canvas-hero .tf-hero-cta{margin-top:auto;padding-top:4px}:root[data-layout=canvas] .tf-canvas-hero .tf-hero-cta .ds-button{width:100%;min-height:44px;border:0;border-radius:12px;background:var(--ds-hero-button);box-shadow:none;color:var(--ds-hero-button-ink);font-size:15px;font-weight:700}:root[data-layout=canvas] .tf-canvas-hero .tf-hero-cta .ds-button:disabled{opacity:.6}:root[data-layout=canvas] .tf-canvas-hero[data-state=done]{grid-template-columns:minmax(0,1fr);min-height:236px;padding:22px 18px 0;background:var(--ds-hero-done-fill);text-align:center}.tf-canvas-hero[data-state=done] .tf-canvas-hero-body{grid-row:1;grid-column:1;align-items:center}:root[data-layout=canvas] .tf-canvas-hero[data-state=done] .tf-canvas-hero-title{color:var(--ds-hero-done-ink);font-size:22px}.tf-canvas-hero[data-state=done] .tf-canvas-hero-sub{color:var(--ds-hero-done-sub);font-size:14px;font-weight:700}.tf-canvas-hero[data-state=done] .tf-hero-cta{margin-top:6px}:root[data-layout=canvas] .tf-canvas-hero[data-state=done] .tf-hero-cta .ds-button{width:auto;min-height:44px;padding-inline:20px}.tf-canvas-chips{display:flex;flex-wrap:wrap;gap:0 8px}.tf-canvas-chip{margin-block:-6px;padding:6px 12px;border:0 solid transparent;border-block-width:6px;border-radius:var(--ds-radius-pill);background:var(--ds-chip);background-clip:padding-box;color:var(--ds-chip-ink);font:inherit;font-size:13px;font-weight:600;line-height:20px;cursor:pointer}.tf-canvas-chip:focus-visible{outline:3px solid var(--ds-focus);outline-offset:-3px}.tf-canvas-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--ds-space-3);margin-bottom:12px}.tf-canvas-section-head h2{margin:0;color:var(--ds-text);font-size:19px;font-weight:700}.tf-canvas-section-head p{margin:0;color:var(--ds-text-muted);font-size:13px}.tf-canvas-tasks ul{display:grid;gap:12px;margin:0;padding:0;list-style:none}.tf-canvas-task{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:68px;box-sizing:border-box;padding:0 16px;border-radius:16px;background:var(--task-fill, var(--ds-surface-sunken));color:var(--ds-task-title)}.tf-canvas-task[data-type=listen-gap]{--task-fill: var(--ds-task-listen-gap);--task-ink: var(--ds-task-listen-gap-ink)}.tf-canvas-task[data-type=listen-choose]{--task-fill: var(--ds-task-listen-choose);--task-ink: var(--ds-task-listen-choose-ink)}.tf-canvas-task[data-type=read-tfng]{--task-fill: var(--ds-task-read-tfng);--task-ink: var(--ds-task-read-tfng-ink)}.tf-canvas-task[data-type=read-gap]{--task-fill: var(--ds-task-read-gap);--task-ink: var(--ds-task-read-gap-ink)}.tf-canvas-task-copy{display:grid;gap:3px}.tf-canvas-task-copy small{color:var(--task-ink, var(--ds-text-muted));font-size:12px;font-weight:600}.tf-canvas-task-copy strong{font-size:16px;font-weight:700}.tf-canvas-tick{display:grid;flex:none;place-items:center;box-sizing:border-box;width:30px;height:30px;border:2px solid var(--ds-tick);border-radius:50%;background:var(--ds-tick-open)}.tf-canvas-tick[data-done]{border:0;background:var(--ds-tick);color:var(--ds-tick-ink)}.tf-canvas-week{padding:16px;border-radius:18px;background:var(--ds-panel)}.tf-canvas-week .tf-canvas-section-head{align-items:center}.tf-canvas-week .tf-canvas-section-head h2{font-size:16px}.tf-canvas-week .tf-link{color:var(--ds-brand);font-size:13px;font-weight:700}.tf-canvas-week ol{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin:0;padding:0;list-style:none}.tf-canvas-week li{display:grid;justify-items:center;gap:6px;color:var(--ds-text-muted);font-size:12px;font-weight:700}.tf-canvas-week-mark{display:grid;place-items:center;box-sizing:border-box;width:34px;height:34px;border:2px dashed var(--ds-border-strong);border-radius:50%;color:var(--ds-on-brand)}.tf-canvas-week li[data-done] .tf-canvas-week-mark{border:0;background:var(--ds-brand)}.tf-canvas-week li[data-before-start] .tf-canvas-week-mark{border-style:solid;border-color:transparent;color:var(--ds-text-muted);font-weight:400}.tf-canvas-week li[data-today]{color:var(--ds-brand)}.tf-canvas-week li[data-today] .tf-canvas-week-mark{outline:2px solid var(--ds-brand);outline-offset:2px}.tf-canvas-more h2{margin:0 0 12px;color:var(--ds-text);font-size:19px;font-weight:700}.tf-canvas-more-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.tf-canvas-more-card{position:relative;display:grid;align-content:start;gap:4px;min-height:112px;overflow:hidden;padding:16px 14px;border:0;border-radius:18px;background:var(--more-fill, var(--ds-panel));color:var(--more-ink, var(--ds-text));font:inherit;text-align:start;cursor:pointer}.tf-canvas-more-card[data-tone=pink]{--more-fill: var(--ds-more-pink);--more-ink: var(--ds-more-pink-ink)}.tf-canvas-more-card[data-tone=lemon]{--more-fill: var(--ds-more-lemon);--more-ink: var(--ds-more-lemon-ink)}.tf-canvas-more-card[data-tone=mint]{--more-fill: var(--ds-more-mint);--more-ink: var(--ds-more-mint-ink)}.tf-canvas-more-card strong{font-size:16px;font-weight:700}.tf-canvas-more-card span{font-size:13px;text-wrap:balance}.tf-canvas-more-card:focus-visible{outline:3px solid var(--ds-focus);outline-offset:2px}.tf-canvas-more-card .tf-canvas-more-cast{position:absolute;right:10px;bottom:8px}.tf-canvas-more-card>span:not(.tf-canvas-more-cast){max-width:calc(100% - 52px)}.tf-canvas-tomorrow{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 12px;padding:12px 8px 12px 16px;border-radius:18px;background:var(--ds-option)}.tf-canvas-tomorrow p{flex:1 1 180px;margin:0}:root[data-layout=canvas] .tf-canvas-tomorrow .ds-button{flex:none;min-height:44px;padding-inline:8px;border-color:transparent;background:none;box-shadow:none;color:var(--ds-brand-ink);font-weight:700}.tf-canvas-hero[data-state=done] .tf-hero-cta{display:flex;flex-direction:column;align-items:center;gap:2px}:root[data-layout=canvas] .tf-canvas-hero .tf-hero-cta .tf-link{min-height:44px;padding-inline:12px;color:var(--ds-hero-done-ink);font-size:14px;font-weight:700}@media(min-width:1280px){:root[data-layout=canvas] .tf-app--wide>.tf-page{max-width:560px;margin-inline:auto}}.tf-canvas-welcome-back{display:flex;align-items:center;gap:10px}.tf-canvas-welcome-back p{margin:0;padding:10px 14px;border-radius:16px 16px 16px 4px;background:var(--ds-bubble);color:var(--ds-chip-ink);font-size:14px;font-weight:600;line-height:1.5}@media(max-width:360px){:root[data-layout=canvas] .tf-canvas-hero:not([data-state=done]){grid-template-columns:92px minmax(0,1fr);gap:0 14px;padding-right:14px}:root[data-layout=canvas] .tf-canvas-hero:not([data-state=done]) .tf-canvas-hero-title{font-size:22px}.tf-canvas-hero-cast svg.lt{width:93px;height:auto}.tf-canvas-hero-zzz{left:82px}:root[data-layout=canvas] .tf-canvas-hero:not([data-state=done]) .tf-hero-cta .ds-button{padding-inline:8px;font-size:14px}}:root[data-layout=canvas] .tf-app:has(.tf-canvas-wb)>.tf-nav{display:none}:root[data-layout=canvas] .tf-page.tf-canvas-wb{position:relative;display:flex;flex-direction:column;align-items:stretch;gap:0;min-height:100dvh;overflow:hidden;box-sizing:border-box;padding:92px 20px 32px}.tf-canvas-wb-arc{position:absolute;top:-120px;right:-60px;left:-60px;height:390px;border-radius:0 0 50% 50%;background:var(--ds-wb-arc)}:root[data-layout=canvas] .tf-canvas-wb-close{position:absolute;top:52px;right:12px;color:var(--ds-text)}.tf-canvas-wb-cast{position:relative;align-self:center}.tf-canvas-wb-cast .tf-cast-letter{transform:rotate(-6deg)}.tf-canvas-wb-copy{position:relative;display:grid;gap:10px;margin-top:44px;padding-inline:8px;text-align:center}:root[data-layout=canvas] .tf-canvas-wb-copy h1{margin:0;font-size:30px;font-weight:900}.tf-canvas-wb-copy p{margin:0;color:var(--ds-chip-ink);font-size:15px;line-height:1.6}.tf-canvas-wb-options{display:grid;gap:12px;margin-top:50px}.tf-canvas-wb-option{display:flex;align-items:center;gap:14px;min-height:84px;box-sizing:border-box;padding:12px 16px;border:2px solid transparent;border-radius:20px;background:var(--ds-surface-sunken);color:var(--ds-text);font:inherit;text-align:start;cursor:pointer}.tf-canvas-wb-option[data-recommended]{border-color:var(--ds-brand);background:var(--ds-brand-soft)}.tf-canvas-wb-option:disabled{cursor:default;opacity:.6}.tf-canvas-wb-option .tf-letter-art{flex:0 0 auto}.tf-canvas-wb-option-copy{display:grid;flex:1 1 auto;gap:3px;min-width:0}.tf-canvas-wb-option-copy strong{font-size:17px;font-weight:800}.tf-canvas-wb-option-copy small{color:var(--ds-text-muted);font-size:13px}.tf-canvas-wb-tag{display:inline-block;margin-left:8px;padding:2px 8px;border-radius:999px;background:var(--ds-brand);color:var(--ds-on-brand);font-size:11px;font-weight:700;vertical-align:2px}:root[data-layout=canvas] .tf-canvas-wb-mistakes{align-self:center;min-height:44px;margin-top:auto;padding-inline:16px;color:var(--ds-brand-ledge);font-size:15px;font-weight:600;text-decoration:none}:root[data-layout=canvas] .ds-card{border:0;border-radius:18px;background:var(--ds-option);box-shadow:none}:root[data-layout=canvas] li.ds-card{border:1px solid var(--ds-word-card-edge);border-radius:16px;background:var(--ds-word-card)}:root[data-layout=canvas] .tf-app .ds-card[data-tone]{border:0;background:var(--tone-soft, var(--ds-option));box-shadow:none}:root[data-layout=canvas] .ds-card[data-tone]>h2:before,:root[data-layout=canvas] .ds-card[data-tone]>.tf-section-head>h2:before{content:none}:root[data-layout=canvas] .ds-card .ds-button--secondary{min-height:44px;border-color:transparent;border-radius:999px;background:var(--ds-surface);box-shadow:none;font-weight:700}:root[data-layout=canvas] li.ds-card .ds-button--secondary{padding-inline:8px;background:none}:root[data-layout=canvas] .ds-card .ds-button--secondary:not(:disabled){color:var(--ds-brand-ink)}:root[data-layout=canvas] .tf-page-head>.ds-button--secondary:first-child{justify-self:start;min-height:44px;margin-inline-start:-8px;padding-inline:8px;border-color:transparent;background:none;box-shadow:none;font-weight:700}:root[data-layout=canvas] .tf-page-head>.ds-button--secondary:first-child:not(:disabled){color:var(--ds-brand-ink)}:root[data-layout=canvas] .tf-page-head>.ds-button--secondary:first-child:before{content:"‹" / "";margin-inline-end:4px;font-size:20px;line-height:1}:root[data-layout=canvas] .tf-canvas-back-head>.ds-icon-button:first-child{justify-self:start;margin-left:-10px;color:var(--ds-text)}:root[data-layout=canvas] [data-type=listen-gap]{--dot: var(--ds-dot-listen-gap)}:root[data-layout=canvas] [data-type=listen-choose]{--dot: var(--ds-dot-listen-choose)}:root[data-layout=canvas] [data-type=read-tfng]{--dot: var(--ds-dot-read-tfng)}:root[data-layout=canvas] [data-type=read-gap]{--dot: var(--ds-dot-read-gap)}:root[data-layout=canvas] [data-type=listen-choose-many]{--dot: var(--ds-dot-listen-choose-many)}:root[data-layout=canvas] [data-type=read-choose]{--dot: var(--ds-dot-read-choose)}:root[data-layout=canvas] [data-type=read-choose-many]{--dot: var(--ds-dot-read-choose-many)}:root[data-layout=canvas] .ds-tag{gap:6px;padding:0;background:none;color:var(--ds-chip-ink);font-size:12px;font-weight:700}:root[data-layout=canvas] .ds-tag:before{content:"";flex:none;width:8px;height:8px;border-radius:50%;background:var(--dot, var(--ds-text-muted))}:root[data-layout=canvas] :is(.tf-item-name,.tf-type-en){display:none}:root[data-layout=canvas] :where(.tf-link){color:var(--ds-brand-ink);font-weight:700;text-decoration:none}:root[data-layout=canvas] :where(.tf-muted,.tf-fineprint){color:var(--ds-text-muted);font-size:13px;line-height:1.55}:root[data-layout=canvas] :where(details:not(.tf-canvas-signin-facts))>summary{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:44px;border-radius:12px;color:var(--ds-text);font-weight:700;text-decoration:none;list-style:none;cursor:pointer}:root[data-layout=canvas] :where(details:not(.tf-canvas-signin-facts))>summary::-webkit-details-marker{display:none}:root[data-layout=canvas] :where(details:not(.tf-canvas-signin-facts))>summary:after{content:"";flex:none;width:8px;height:8px;margin-inline-end:4px;border-right:2px solid var(--ds-text-muted);border-bottom:2px solid var(--ds-text-muted);transform:translateY(-2px) rotate(45deg);transition:transform .2s ease}:root[data-layout=canvas] :where(details[open]:not(.tf-canvas-signin-facts))>summary:after{transform:translateY(2px) rotate(-135deg)}:root[data-layout=canvas] :where(details)>summary:focus-visible{outline:3px solid var(--ds-focus);outline-offset:2px}:root[data-layout=canvas] .tf-form fieldset{gap:8px}:root[data-layout=canvas] .tf-radio{min-height:52px;box-sizing:border-box;padding:0 14px;border:2px solid transparent;border-radius:14px;background:var(--ds-option);box-shadow:inset 0 -3px color-mix(in srgb,var(--ds-text) 8%,transparent);font-weight:600}:root[data-layout=canvas] .tf-radio:has(input:checked){border-color:var(--ds-brand);background:var(--ds-option-picked)}:root[data-layout=canvas] .tf-radio:has(input:focus-visible){outline:3px solid var(--ds-focus);outline-offset:2px}:root[data-layout=canvas] .tf-dialog{border:0;border-radius:24px}:root[data-layout=canvas] .tf-dialog-header{padding:12px 12px 0 24px}:root[data-layout=canvas] .tf-dialog>:not(.tf-dialog-header,form){margin:0;padding-inline:24px}:root[data-layout=canvas] .tf-dialog>p:not(:last-child){padding-block:8px 16px;color:var(--ds-text-muted);line-height:1.6}:root[data-layout=canvas] .tf-dialog>:last-child:not(form){padding-bottom:20px}:root[data-layout=canvas] .tf-empty{padding:28px 20px;border-radius:20px;background:var(--ds-option)}:root[data-layout=canvas] .ds-button{--btn-drop: 0px;border-radius:14px}:root[data-layout=canvas] .ds-button--primary:disabled:not([aria-busy=true]){--btn-bg: var(--ds-brand);--btn-fg: var(--ds-on-brand);--btn-edge: var(--ds-brand);opacity:.42}:root[data-layout=canvas] .tf-round[data-canvas]{display:flex;flex-direction:column;background:var(--ds-bg)}:root[data-layout=canvas] .tf-round[data-canvas] .tf-round-body{display:flex;flex:1;flex-direction:column;gap:18px;width:100%;box-sizing:border-box;padding-bottom:0}:root[data-layout=canvas] .tf-round[data-canvas] .tf-task{display:flex;flex:1;flex-direction:column;gap:16px}:root[data-layout=canvas] .tf-round-bar[data-canvas]{gap:12px;width:100%;box-sizing:border-box;padding-bottom:8px;border:0;background:var(--ds-bg);box-shadow:none}:root[data-layout=canvas] .tf-round-bar[data-canvas] .tf-round-top{grid-template-columns:44px minmax(0,1fr) 44px}:root[data-layout=canvas] .tf-round-bar[data-canvas] .tf-round-title{color:var(--ds-text);font-size:16px;font-weight:700}.tf-round-count{margin:0;color:var(--ds-text-muted);font-size:13px;font-weight:700;text-align:end;font-variant-numeric:tabular-nums;white-space:nowrap}:root[data-layout=canvas] .tf-round .tf-meter--segments{display:flex;gap:6px;height:6px;border:0;border-radius:0;background:none;box-shadow:none}.tf-meter--segments>span{flex:1;border-radius:3px;background:var(--ds-meter-open);transition:background-color .2s ease}.tf-meter--segments>span[data-state=done]{background:var(--ds-brand)}.tf-meter--segments>span[data-state=current]{background:var(--ds-meter-current)}.tf-canvas-task-head{display:grid;grid-template-columns:auto minmax(0,1fr) 44px;align-items:center;gap:10px}.tf-canvas-task-cast{margin:-8px 0 -6px -6px}.tf-canvas-task-name{min-width:0}:root[data-layout=canvas] .tf-canvas-task-head .tf-item-title{margin:0;color:var(--ds-text);font-size:17px;font-weight:800;line-height:1.3}:root[data-layout=canvas] .tf-canvas-task-head .tf-item-name{display:block;margin:2px 0 0;color:var(--ds-text-muted);font-size:13px;font-weight:500;letter-spacing:0;text-transform:none}:root[data-layout=canvas] .tf-canvas-task-head .ds-icon-button[aria-pressed=true]{color:var(--ds-brand)}:root[data-layout=canvas] .tf-round .tf-task>.tf-listen-card{order:-1;display:grid;gap:10px;padding:16px 16px 10px;border:0;border-radius:20px;background:var(--ds-audio-card);box-shadow:none}.tf-listen-card-row{display:flex;align-items:center;gap:14px;min-width:0}:root[data-layout=canvas] .tf-listen-card .tf-listen-card-play{display:grid;flex:none;place-items:center;width:52px;height:52px;padding:0;border:0;border-radius:50%;background:var(--ds-brand);color:var(--ds-on-brand);cursor:pointer;-webkit-tap-highlight-color:transparent}.tf-listen-card-play svg{width:20px;height:20px}.tf-listen-card-play:focus-visible{outline:3px solid var(--ds-focus);outline-offset:3px}.tf-listen-card-wave{display:flex;flex:1;align-items:center;justify-content:space-between;gap:2px;min-width:0;height:36px;overflow:hidden}.tf-listen-card-wave i{flex:0 1 3px;min-width:2px;height:var(--bar);border-radius:2px;background:var(--ds-wave);transition:background-color .2s ease}.tf-listen-card-wave i[data-heard]{background:var(--ds-wave-heard)}.tf-listen-card-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:36px}.tf-listen-card-time{color:var(--ds-text-muted);font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}:root[data-layout=canvas] .tf-round .tf-limit{gap:4px;padding:0;border-radius:0;background:none;font-size:14px}:root[data-layout=canvas] .tf-round .tf-limit span:first-child{color:var(--ds-text);font-weight:700}:root[data-layout=canvas] .tf-round .tf-limit strong{color:inherit;font-weight:800}:root[data-layout=canvas] .tf-round .tf-limit span:last-child{color:var(--ds-text-muted);font-size:12px;font-weight:500}.tf-instruction{margin:0 0 -8px;color:var(--ds-text-muted);font-size:13px;font-weight:600}:root[data-layout=canvas] .tf-round .tf-question{padding:0;border:0;border-radius:0;background:none;color:var(--ds-text);font-size:17px;font-weight:800;line-height:1.4}:root[data-layout=canvas] .tf-round .tf-notes-card{padding:18px;border:1px solid var(--ds-border);border-radius:18px;background:var(--ds-surface);box-shadow:none}:root[data-layout=canvas] .tf-round .tf-notes-title{color:var(--ds-text);font-size:17px;font-weight:800}:root[data-layout=canvas] .tf-round .tf-gap-input{min-height:48px;padding:0 12px;border:2px solid var(--ds-brand);border-radius:12px;background:var(--ds-surface);color:var(--ds-text);font-size:16px;font-weight:700}:root[data-layout=canvas] .tf-round .tf-gap[data-result=right] .tf-gap-input{border-color:var(--ds-right);background:var(--ds-right-fill);color:var(--ds-sheet-right-ink)}:root[data-layout=canvas] .tf-round .tf-gap[data-result=wrong] .tf-gap-input{border-color:var(--ds-wrong);background:var(--ds-wrong-fill)}:root[data-layout=canvas] :is(.tf-round[data-canvas],.tf-canvas-drill) .tf-options{gap:12px}:root[data-layout=canvas] :is(.tf-round[data-canvas],.tf-canvas-drill) .tf-option{min-height:58px;padding:12px 16px;border:2px solid transparent;border-radius:16px;background:var(--ds-option);box-shadow:inset 0 -3px color-mix(in srgb,var(--ds-text) 8%,transparent);color:var(--ds-text);font-size:15px;font-weight:600}:root[data-layout=canvas] :is(.tf-round[data-canvas],.tf-canvas-drill) .tf-options>label.tf-option:after{content:none}:root[data-layout=canvas] :is(.tf-round[data-canvas],.tf-canvas-drill) .tf-option-letter{width:30px;height:30px;border:0;border-radius:50%;background:var(--ds-option-key);color:var(--ds-option-key-ink);font-size:13px;font-weight:800}:root[data-layout=canvas] :is(.tf-round[data-canvas],.tf-canvas-drill) .tf-option-letter--wide{width:auto;min-width:30px;padding:0 8px;border-radius:15px}:root[data-layout=canvas] :is(.tf-round[data-canvas],.tf-canvas-drill) .tf-option .tf-keycap-hint,:root[data-layout=canvas] :is(.tf-round[data-canvas],.tf-canvas-drill) .tf-option .tf-selected-mark{display:none}:root[data-layout=canvas] :is(.tf-round[data-canvas],.tf-canvas-drill) .tf-option:has(input:checked){border-color:var(--ds-brand);background:var(--ds-option-picked);box-shadow:inset 0 -3px color-mix(in srgb,var(--ds-text) 8%,transparent)}:root[data-layout=canvas] :is(.tf-round[data-canvas],.tf-canvas-drill) .tf-option:has(input:checked) .tf-option-letter{background:var(--ds-brand);color:var(--ds-on-brand)}:root[data-layout=canvas] :is(.tf-round[data-canvas],.tf-canvas-drill) .tf-options:disabled .tf-option{opacity:1}:root[data-layout=canvas] :is(.tf-round[data-canvas],.tf-canvas-drill) .tf-options .tf-option[data-result=right]{border-color:var(--ds-right);background:var(--ds-right-fill);box-shadow:none}:root[data-layout=canvas] :is(.tf-round[data-canvas],.tf-canvas-drill) .tf-options .tf-option[data-result=right] .tf-option-letter{background:var(--ds-right);color:var(--ds-on-brand)}:root[data-layout=canvas] :is(.tf-round[data-canvas],.tf-canvas-drill) .tf-options .tf-option[data-result=wrong]{border-color:var(--ds-wrong);background:var(--ds-wrong-fill);box-shadow:none}:root[data-layout=canvas] :is(.tf-round[data-canvas],.tf-canvas-drill) .tf-options .tf-option[data-result=wrong] .tf-option-letter{background:var(--ds-wrong);color:var(--ds-on-brand)}:root[data-layout=canvas] :is(.tf-round[data-canvas],.tf-canvas-drill) .tf-option[data-result=right]>svg{color:var(--ds-right)}:root[data-layout=canvas] :is(.tf-round[data-canvas],.tf-canvas-drill) .tf-option[data-result=wrong]>svg{color:var(--ds-wrong)}:root[data-layout=canvas] .tf-round[data-canvas] .tf-task>.tf-actions{order:1;gap:2px;margin-top:auto;padding-top:16px;background:linear-gradient(to bottom,transparent,var(--ds-bg) 28%)}:root[data-layout=canvas] .tf-round[data-canvas] .tf-task:has(>.tf-listen-card)>.tf-actions{margin-top:0}:root[data-layout=canvas] .tf-round[data-canvas] .tf-task-actions .ds-button--primary{width:100%;font-size:16px;font-weight:800}:root[data-layout=canvas] .tf-round[data-canvas] .tf-task-actions .ds-button--ghost{min-height:44px;color:var(--ds-text-muted);font-size:14px;font-weight:600}:root[data-layout=canvas] .tf-round[data-canvas] .tf-task>.tf-not-heard,:root[data-layout=canvas] .tf-round[data-canvas] .tf-task>.tf-text-mode-notice,:root[data-layout=canvas] .tf-round[data-canvas] .tf-task>.tf-send-hint{order:2;align-self:center;margin-top:-6px;text-align:center}:root[data-layout=canvas] .tf-round[data-canvas] .tf-task>.tf-not-heard{color:var(--ds-brand-ink);font-size:14px;font-weight:800;text-decoration:none}:root[data-layout=canvas] .tf-round[data-canvas] .tf-task>.tf-send-hint{color:var(--ds-text-muted);font-size:12px}:root[data-layout=canvas] .tf-round[data-canvas] .tf-task>.tf-transcript{order:3;border-radius:16px;background:var(--ds-panel)}:root[data-layout=canvas] .tf-round[data-canvas] .tf-transcript span:first-child{color:var(--ds-text-muted)}:root[data-layout=canvas] .tf-round[data-canvas] .tf-feedback{--sheet: var(--ds-sheet-wrong);--sheet-ink: var(--ds-sheet-wrong-ink);position:relative;gap:14px;margin:40px calc(-1 * var(--ds-gutter)) 0;padding:24px var(--ds-gutter) 8px;border:0;border-radius:28px 28px 0 0;background:var(--sheet)}:root[data-layout=canvas] .tf-round[data-canvas] .tf-feedback[data-result=right]{--sheet: var(--ds-sheet-right);--sheet-ink: var(--ds-sheet-right-ink)}:root[data-layout=canvas] .tf-round[data-canvas] .tf-feedback-head{padding-inline-end:100px}:root[data-layout=canvas] .tf-round[data-canvas] .tf-feedback-cast{position:absolute;top:-40px;right:22px;width:92px}:root[data-layout=canvas] .tf-round[data-canvas] .tf-feedback .tf-feedback-title{margin:0;color:var(--sheet-ink);font-size:26px;font-weight:900;letter-spacing:-.3px}:root[data-layout=canvas] .tf-round[data-canvas] .tf-feedback-detail{color:var(--ds-text);font-weight:700}:root[data-layout=canvas] .tf-round[data-canvas] .tf-feedback .tf-evidence{gap:4px;padding:12px 14px;border-radius:14px;background:var(--ds-sheet-quote)}:root[data-layout=canvas] .tf-round[data-canvas] .tf-feedback .tf-evidence h4{font-size:12px;font-weight:700}:root[data-layout=canvas] .tf-round[data-canvas] .tf-feedback .tf-here{color:var(--ds-text-muted);font-size:12px}:root[data-layout=canvas] .tf-round[data-canvas] .tf-feedback .tf-mark{padding:0;background:none;color:var(--sheet-ink);font-weight:700}:root[data-layout=canvas] .tf-round[data-canvas] .tf-feedback .tf-explanation{padding:0;background:none}:root[data-layout=canvas] .tf-round[data-canvas] .tf-feedback .tf-explanation h4{font-size:12px}:root[data-layout=canvas] .tf-round[data-canvas] .tf-feedback .tf-explanation p{font-size:14px;line-height:1.7}.tf-feedback-kept{display:flex;align-items:center;gap:6px;margin:0;color:var(--ds-sheet-wrong-ink);font-size:13px;font-weight:800}.tf-feedback-kept svg{flex:none}:root[data-layout=canvas] .tf-round[data-canvas] .tf-feedback-foot{flex-direction:row;gap:10px;margin:6px 0 0;padding:12px 0 calc(8px + env(safe-area-inset-bottom));border-radius:0;background:linear-gradient(to bottom,transparent,var(--sheet) 30%)}:root[data-layout=canvas] .tf-round[data-canvas] .tf-feedback-foot .tf-next{flex:1;width:auto;font-size:16px;font-weight:800}:root[data-layout=canvas] .tf-round[data-canvas] .tf-feedback[data-result=right] .tf-next{--btn-bg: var(--ds-sheet-right-button);--btn-edge: var(--ds-sheet-right-button);--btn-fg: var(--ds-sheet-right-button-ink)}:root[data-layout=canvas] .tf-round[data-canvas] .tf-replay{--btn-bg: var(--ds-surface);--btn-edge: var(--ds-surface);--btn-fg: var(--ds-sheet-wrong-ink);flex:none;padding-inline:18px;font-size:15px}:root[data-layout=canvas] .tf-round[data-canvas] .tf-feedback>.tf-report-link{align-self:center;margin-top:-8px;color:var(--ds-text-muted);font-size:13px;font-weight:500}.tf-result--canvas{display:flex;flex-direction:column;gap:18px}.tf-canvas-result-head{display:grid;justify-items:center;gap:6px;padding-top:8px;text-align:center}.tf-canvas-result-blob{position:relative;width:min(330px,100%);aspect-ratio:330 / 214;margin-bottom:10px}.tf-canvas-result-blob:before{content:"";position:absolute;inset:calc(22 / 214 * 100%) calc(20 / 330 * 100%) 0;border-radius:50% 50% 46% 54%/60% 56% 44% 40%;background:var(--ds-result-blob)}:root[data-layout=canvas] .tf-canvas-result-blob .tf-result-cast{position:absolute;inset:0;margin:0}:root[data-layout=canvas] .tf-result--canvas .tf-score{display:flex;align-items:baseline;justify-content:center;gap:10px;margin:0;color:var(--ds-text);font-size:38px;font-weight:900;line-height:1.1;letter-spacing:-.5px}:root[data-layout=canvas] .tf-result--canvas .tf-score small,:root[data-layout=canvas] .tf-result--canvas .tf-score strong,:root[data-layout=canvas] .tf-result--canvas .tf-score span{color:inherit;font-size:1em;font-weight:900}.tf-canvas-result-line{margin:0;color:var(--ds-text-muted);font-size:15px}.tf-canvas-result-rows{display:grid;margin:0;padding:0 4px;list-style:none;text-align:start}.tf-canvas-result-rows li{--dot: var(--ds-brand);display:grid;grid-template-columns:8px auto minmax(0,1fr);align-items:center;gap:12px;min-height:40px;color:var(--ds-text);font-size:15px;font-weight:600}.tf-canvas-result-rows li[data-type=listen-gap]{--dot: var(--ds-dot-listen-gap)}.tf-canvas-result-rows li[data-type=listen-choose]{--dot: var(--ds-dot-listen-choose)}.tf-canvas-result-rows li[data-type=read-tfng]{--dot: var(--ds-dot-read-tfng)}.tf-canvas-result-rows li[data-type=read-gap]{--dot: var(--ds-dot-read-gap)}.tf-canvas-result-rows li[data-type=listen-choose-many]{--dot: var(--ds-dot-listen-choose-many)}.tf-canvas-result-rows li[data-type=read-choose]{--dot: var(--ds-dot-read-choose)}.tf-canvas-result-rows li[data-type=read-choose-many]{--dot: var(--ds-dot-read-choose-many)}.tf-canvas-dot{width:8px;height:8px;border-radius:50%;background:var(--dot)}.tf-canvas-result-rows li>span:nth-child(2){white-space:nowrap}.tf-canvas-result-rows .tf-fraction{font-weight:800;font-variant-numeric:tabular-nums;text-align:end}.tf-canvas-result-estimate{display:grid;gap:4px;padding:16px 18px;border-radius:18px;background:var(--ds-panel);text-align:start}.tf-canvas-result-estimate h2{margin:0;color:var(--ds-text);font-size:13px;font-weight:800}.tf-canvas-result-estimate p{margin:0}.tf-canvas-result-estimate strong{color:var(--ds-text);font-size:15px;font-weight:800}.tf-result--canvas>.tf-actions .ds-button{width:100%}:is(.tf-result--canvas,.tf-canvas-set-result) .tf-set-times{display:flex;flex-wrap:wrap;gap:8px}:is(.tf-result--canvas,.tf-canvas-set-result) .tf-set-times li{padding:8px 12px;border-radius:12px;background:var(--ds-option);font-size:14px;font-weight:700}:root[data-layout=canvas] :is(.tf-result--canvas,.tf-canvas-set-result) .tf-result-miss{margin:0;padding:14px 16px;border-radius:16px;color:var(--ds-mint-ink);font-weight:700}:root[data-layout=canvas] .tf-canvas-set-result>.ds-button--primary{width:100%;min-height:52px}:root[data-layout=canvas] .tf-round[data-canvas] .tf-passage-block .tf-reading{padding:16px;border:0;border-radius:16px;background:var(--ds-option);box-shadow:none}:root[data-layout=canvas] .tf-round[data-canvas] .tf-statement{margin:4px 0 0;padding:0;border:0;background:none;box-shadow:none;color:var(--ds-text);font-size:17px;font-weight:700;line-height:1.45}:root[data-layout=canvas] .tf-round[data-canvas] .tf-statement>span:first-child{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}:root[data-layout=canvas] .tf-round[data-canvas] .tf-statement>span:last-child{font-size:inherit;font-weight:inherit}:root[data-layout=canvas] .tf-round[data-canvas] .tf-option:has(.tf-option-letter--wide){min-height:54px;font-size:16px;font-weight:700}:root[data-layout=canvas] .tf-round[data-canvas] .tf-option:has(.tf-option-letter--wide) :is(.tf-option-letter,.tf-option-hint){display:none}:root[data-layout=canvas] .tf-round[data-canvas] .tf-option:has(.tf-option-letter--wide) .tf-selected-mark{display:block;box-sizing:border-box;width:24px;height:24px;margin-left:auto;padding:3px;border:2px solid var(--ds-border-strong);border-radius:50%;color:transparent}:root[data-layout=canvas] .tf-round[data-canvas] .tf-option:has(.tf-option-letter--wide):has(input:checked) .tf-selected-mark{border-color:var(--ds-brand);background:var(--ds-brand);color:var(--ds-on-brand)}:root[data-layout=canvas] .tf-canvas-read-aloud{display:flex;margin:-6px 0 2px}:root[data-layout=canvas] .tf-page-head h1{font-size:32px;font-weight:800;letter-spacing:-.4px}:root[data-layout=canvas] .tf-practice-switch .ds-choice-chips,:root[data-layout=canvas] .tf-canvas-segment .ds-choice-chips{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;padding:4px;border-radius:14px;background:var(--ds-segment)}:root[data-layout=canvas] .tf-practice-switch .ds-chip,:root[data-layout=canvas] .tf-canvas-segment .ds-chip{justify-content:center;min-height:44px;border:0;border-radius:10px;background:transparent;box-shadow:none;color:var(--ds-text-muted);font-size:15px;font-weight:600}:root[data-layout=canvas] .tf-practice-switch .ds-chip[aria-checked=true],:root[data-layout=canvas] .tf-canvas-segment .ds-chip[aria-checked=true]{background:var(--ds-segment-on);box-shadow:var(--ds-segment-shadow);color:var(--ds-text);font-weight:700}:root[data-layout=canvas] .tf-practice-switch .ds-chip svg,:root[data-layout=canvas] .tf-canvas-segment .ds-chip svg{display:none}.tf-canvas-practice .tf-practice-group-title{font-size:17px;font-weight:800}.tf-canvas-practice .tf-type-row{min-height:0;padding:14px 16px}.tf-canvas-practice .tf-type-row .ds-tag{color:var(--ds-text);font-size:15px}.tf-canvas-practice .tf-type-meta{font-size:13px;font-weight:600}.tf-canvas-practice .tf-practice-extra{gap:12px;padding:16px}:root[data-layout=canvas] .tf-canvas-practice .tf-practice-extra .ds-button{width:100%;min-height:52px}.tf-canvas-practice .tf-practice-foot{margin-top:4px}.tf-canvas-topics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none}.tf-canvas-topic,.tf-canvas-topic-page,.tf-canvas-chapter-page{--tile: var(--ds-topic-sky)}:is(.tf-canvas-topic,.tf-canvas-topic-page,.tf-canvas-chapter-page,.tf-canvas-chapter-icon)[data-tone=lemon]{--tile: var(--ds-topic-lemon)}:is(.tf-canvas-topic,.tf-canvas-topic-page,.tf-canvas-chapter-page,.tf-canvas-chapter-icon)[data-tone=sky]{--tile: var(--ds-topic-sky)}:is(.tf-canvas-topic,.tf-canvas-topic-page,.tf-canvas-chapter-page,.tf-canvas-chapter-icon)[data-tone=peach]{--tile: var(--ds-topic-peach)}:is(.tf-canvas-topic,.tf-canvas-topic-page,.tf-canvas-chapter-page,.tf-canvas-chapter-icon)[data-tone=periwinkle]{--tile: var(--ds-topic-periwinkle)}:is(.tf-canvas-topic,.tf-canvas-topic-page,.tf-canvas-chapter-page,.tf-canvas-chapter-icon)[data-tone=grape]{--tile: var(--ds-topic-grape)}:is(.tf-canvas-topic,.tf-canvas-topic-page,.tf-canvas-chapter-page,.tf-canvas-chapter-icon)[data-tone=mint]{--tile: var(--ds-topic-mint)}:is(.tf-canvas-topic,.tf-canvas-topic-page,.tf-canvas-chapter-page,.tf-canvas-chapter-icon)[data-tone=pink]{--tile: var(--ds-topic-pink)}:is(.tf-canvas-topic,.tf-canvas-topic-page,.tf-canvas-chapter-page,.tf-canvas-chapter-icon)[data-tone=rose]{--tile: var(--ds-topic-rose)}.tf-canvas-topic{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:1fr auto auto 1fr;column-gap:8px;row-gap:2px;height:72px;overflow:hidden;box-sizing:border-box;padding:0 14px 0 0;border-radius:16px;background:var(--tile);color:var(--ds-text);text-align:end;text-decoration:none;-webkit-tap-highlight-color:transparent}.tf-canvas-topic:focus-visible{outline:3px solid var(--ds-focus);outline-offset:2px}.tf-canvas-topic-letter{grid-column:1;grid-row:1 / -1;justify-self:center;align-self:end;margin-bottom:-34px;transform:rotate(var(--tilt))}.tf-canvas-topic-letter svg{display:block;width:80px;height:auto}.tf-canvas-topic-name{grid-column:2;grid-row:2;font-size:15px;font-weight:700}.tf-canvas-topic-status{grid-column:2;grid-row:3;color:var(--ds-text-muted);font-size:12px}@media(max-width:360px){.tf-canvas-topic-letter svg{width:62px}.tf-canvas-topic-letter{margin-bottom:-26px}}.tf-canvas-topic-page,.tf-canvas-chapter-page{overflow-x:clip}.tf-canvas-chapter-page .tf-round-start{justify-items:stretch;gap:10px}.tf-canvas-chapter-page .tf-round-start>.ds-button{width:100%}.tf-canvas-chapter-page .tf-round-start .tf-study-mode{justify-self:start}.tf-canvas-topic-head{position:relative;display:grid;justify-items:start;gap:8px;min-height:196px}:root[data-layout=canvas] .tf-canvas-topic-head .ds-icon-button{position:relative;z-index:1;margin-left:-10px;color:var(--ds-text)}.tf-canvas-topic-blob{position:absolute;top:-48px;right:-64px;display:grid;place-items:center;width:220px;height:220px;border-radius:50%;background:var(--tile)}.tf-canvas-topic-cast{transform:translate(-30px,26px) rotate(-6deg)}:root[data-layout=canvas] .tf-canvas-topic-head h1{position:relative;max-width:62%;margin:20px 0 0;font-size:28px;font-weight:800;letter-spacing:-.3px;line-height:1.25}.tf-canvas-topic-blurb{position:relative;max-width:50%;margin:0;color:var(--ds-text-muted);font-size:13px;line-height:1.5}.tf-canvas-topic-chip{margin:4px 0 0;padding:4px 10px;border-radius:8px;background:var(--ds-chip);color:var(--ds-chip-ink);font-size:12px;font-weight:700}.tf-canvas-rounds{display:grid;gap:10px;margin:0;padding:0;list-style:none}:root[data-layout=canvas] .tf-canvas-round{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:56px;padding:10px 16px;border:2px solid transparent;border-radius:14px;background:var(--ds-option);color:var(--ds-text)}.tf-canvas-round:focus-visible{outline:3px solid var(--ds-focus);outline-offset:2px}.tf-canvas-round-text{display:grid;gap:2px;min-width:0}.tf-canvas-round-name{font-size:15px;font-weight:800}.tf-canvas-round-line{color:var(--ds-text-muted);font-size:12px}.tf-canvas-round-next{flex:none;color:var(--ds-brand-ink);font-size:13px;font-weight:800}.tf-canvas-topic-start{display:grid;gap:6px}.tf-canvas-topic-start .ds-button{width:100%}.tf-canvas-topic-words{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:52px;box-sizing:border-box;padding:0 14px 0 16px;border:0;border-radius:14px;background:var(--ds-option);color:var(--ds-text);font:inherit;font-size:15px;font-weight:700;text-align:start;cursor:pointer;-webkit-tap-highlight-color:transparent}.tf-canvas-topic-words>svg{flex:none;color:var(--ds-text-muted)}.tf-canvas-topic-words:focus-visible{outline:3px solid var(--ds-focus);outline-offset:2px}:root[data-layout=canvas] .tf-topic-groups{display:grid;gap:18px}:root[data-layout=canvas] .tf-topic-group{display:grid;gap:8px}:root[data-layout=canvas] .tf-canvas-domain-title{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;color:var(--ds-text);font-size:15px;font-weight:800}:root[data-layout=canvas] .tf-domain-note{margin:0;color:var(--ds-text-muted);font-size:13px;font-weight:600}:root[data-layout=canvas] .tf-canvas-word-topics{display:grid;gap:8px}:root[data-layout=canvas] .tf-canvas-word-topics .tf-me-group-title{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px}:root[data-layout=canvas] .tf-level-chips{display:grid;gap:6px}:root[data-layout=canvas] .tf-level-chips .ds-choice-chips{gap:8px}:root[data-layout=canvas] .tf-level-chips .ds-chip{min-height:44px;padding:0 14px;border:2px solid transparent;border-radius:12px;background:var(--ds-option);box-shadow:none;color:var(--ds-text);font-size:14px;font-weight:700}:root[data-layout=canvas] .tf-level-chips .ds-chip[aria-checked=true]{border-color:var(--ds-brand);background:var(--ds-option-picked);color:var(--ds-text)}:root[data-layout=canvas] .tf-level-chips .ds-chip:active:not(:disabled){transform:scale(.97);box-shadow:none}:root[data-layout=canvas] .tf-level-chips .ds-chip svg{display:none}:root[data-layout=canvas] .tf-level-chips-note{margin:0;color:var(--ds-text-muted);font-size:13px}:root[data-layout=canvas] .tf-canvas-round-dots{display:inline-flex;gap:4px;margin-left:8px;vertical-align:middle}:root[data-layout=canvas] .tf-canvas-round-dot{width:8px;height:8px;border-radius:50%;background:var(--dot, var(--ds-dot-off))}:root[data-layout=canvas] .tf-practice-group-head{display:flex;align-items:center;justify-content:space-between;gap:8px}:root[data-layout=canvas] .tf-practice-chip{display:inline-flex;align-items:center;min-height:26px;padding:0 10px;border-radius:999px;background:var(--ds-chip);color:var(--ds-chip-ink);font-size:12px;font-weight:700;white-space:nowrap}:root[data-layout=canvas] .tf-canvas-practice .tf-type-card{display:flex;align-items:center;gap:12px;min-height:0;padding:14px 12px 14px 14px;border:1px solid var(--ds-border);border-radius:18px;background:var(--ds-surface)}:root[data-layout=canvas] .tf-type-badge{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:14px}:root[data-layout=canvas] :not(.tf-type-card)>.tf-type-badge{background:color-mix(in srgb,var(--dot, var(--ds-text-muted)) 16%,var(--ds-surface));color:var(--dot, var(--ds-text-muted))}:root[data-layout=canvas] .tf-type-body{flex:1 1 auto;min-width:0;display:grid;gap:6px}:root[data-layout=canvas] .tf-type-title{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:800}:root[data-layout=canvas] .tf-canvas-practice .tf-type-card .tf-type-meta{font-size:13px;font-weight:500;line-height:1.4}:root[data-layout=canvas] .tf-canvas-practice .tf-type-suggest{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:999px;background:var(--ds-brand-soft);color:var(--ds-brand-ink);font-size:12px;font-weight:700}:root[data-layout=canvas] .tf-type-bar{display:block;height:6px;border-radius:3px;background:var(--ds-surface-sunken);overflow:hidden}:root[data-layout=canvas] .tf-type-bar>span{display:block;height:100%;border-radius:3px;background:var(--dot, var(--ds-brand))}:root[data-layout=canvas] .tf-type-go{flex:none;color:var(--ds-text-subtle)}:root[data-layout=canvas] .tf-canvas-practice .tf-practice-mixed{display:grid;gap:14px;padding:16px;border:1px solid var(--ds-border);border-radius:20px;background:var(--ds-surface)}:root[data-layout=canvas] .tf-practice-mixed-head{display:flex;align-items:center;gap:14px}:root[data-layout=canvas] .tf-practice-mixed-tile{position:relative;flex:none;display:grid;place-items:center;width:92px;height:72px;border-radius:18px;background:var(--ds-brand-soft);overflow:hidden}:root[data-layout=canvas] .tf-practice-mixed-l,:root[data-layout=canvas] .tf-practice-mixed-r{position:absolute;top:12px}:root[data-layout=canvas] .tf-practice-mixed-l{left:2px;transform:rotate(-6deg)}:root[data-layout=canvas] .tf-practice-mixed-r{right:2px;transform:rotate(6deg)}:root[data-layout=canvas] .tf-practice-mixed[data-locked] .tf-practice-mixed-tile{background:var(--ds-surface-sunken);color:var(--ds-text-subtle)}:root[data-layout=canvas] .tf-practice-mixed-text{flex:1 1 auto;min-width:0;display:grid;gap:4px}:root[data-layout=canvas] .tf-practice-mixed-title{font-size:17px;font-weight:800}:root[data-layout=canvas] .tf-practice-mixed-note{color:var(--ds-text-muted);font-size:13px;line-height:1.5}:root[data-layout=canvas] .tf-practice-mixed-progress{display:grid;gap:6px}:root[data-layout=canvas] .tf-practice-mixed-count{display:flex;align-items:center;justify-content:space-between;color:var(--ds-text-muted);font-size:12px;font-weight:600}:root[data-layout=canvas] .tf-practice-mixed-progress .tf-type-bar>span{background:var(--ds-brand)}.tf-canvas-words-hero{position:relative;display:flex;flex-direction:column;gap:4px;min-height:132px;overflow:hidden;box-sizing:border-box;padding:14px 130px 14px 18px;border-radius:22px;background:var(--ds-words-hero)}.tf-canvas-words-eyebrow{margin:0;color:var(--ds-words-hero-ink);font-size:13px;font-weight:700}:root[data-layout=canvas] .tf-canvas-words-hero h2{margin:0;color:var(--ds-words-hero-title);font-size:21px;font-weight:800}:root[data-layout=canvas] .tf-canvas-words-hero .ds-button{--btn-bg: var(--ds-words-hero-button);--btn-edge: var(--ds-words-hero-button);--btn-fg: var(--ds-words-hero-button-ink);position:relative;z-index:1;align-self:flex-start;min-height:44px;margin-top:auto;padding-inline:20px;border-radius:12px;font-size:15px;font-weight:700}.tf-canvas-words-cast{position:absolute;top:16px;right:12px;transform:rotate(8deg)}.tf-canvas-missed{display:flex;align-items:center;gap:6px;min-height:50px;box-sizing:border-box;padding:0 16px;border:0;border-radius:14px;background:var(--ds-missed);color:var(--ds-text);font:inherit;font-size:15px;font-weight:700;text-align:start;cursor:pointer;-webkit-tap-highlight-color:transparent}.tf-canvas-missed>span:first-child{flex:1;min-width:0}.tf-canvas-missed-count,.tf-canvas-missed>svg{color:var(--ds-missed-ink);font-size:14px}.tf-canvas-missed:focus-visible{outline:3px solid var(--ds-focus);outline-offset:2px}:root[data-layout=canvas] .tf-canvas-words .tf-me-group-title{margin:4px 0 0;color:var(--ds-text);font-size:17px;font-weight:700}:root[data-layout=canvas] .tf-canvas-word-rows{border-radius:0;background:none;box-shadow:none}:root[data-layout=canvas] .tf-canvas-word-rows .tf-me-row{min-height:56px;padding:6px 0;border-bottom:1px solid var(--ds-row-line)}:root[data-layout=canvas] .tf-canvas-word-rows .tf-me-row-name{font-size:15px;font-weight:700}:root[data-layout=canvas] .tf-canvas-word-rows .tf-me-row-value{color:var(--ds-text-muted);font-size:12px}:root[data-layout=canvas] .tf-canvas-word-rows .tf-me-row-icon{width:44px;height:44px;overflow:hidden;border-radius:50%;background:var(--ds-chip);color:var(--ds-text-muted)}:root[data-layout=canvas] .tf-canvas-word-rows .tf-canvas-chapter-icon{display:flex;align-items:flex-start;justify-content:center;background:var(--tile)}.tf-canvas-chapter-icon svg{display:block;width:30px;height:auto;margin-top:6px}.tf-canvas-drill{isolation:isolate;overflow-x:clip}.tf-canvas-drill-head{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;row-gap:8px;margin-inline:-10px 0}:root[data-layout=canvas] .tf-canvas-drill-head .ds-icon-button{color:var(--ds-text)}.tf-canvas-drill-title{margin:0;overflow:hidden;font-size:16px;font-weight:700;text-align:center;text-overflow:ellipsis;white-space:nowrap}.tf-canvas-drill-count{margin:0;color:var(--ds-text-muted);font-size:14px;font-weight:600;text-align:end}.tf-canvas-drill-meter{grid-column:1 / -1;height:6px;margin-inline:10px 0;overflow:hidden;border-radius:3px;background:var(--ds-meter-open)}.tf-canvas-drill-meter>span{display:block;height:100%;background:var(--ds-word-meter);transform:scaleX(var(--done));transform-origin:left;transition:transform .3s ease}:root[data-layout=canvas] .tf-canvas-drill .tf-word-prompt{position:relative;gap:10px;min-height:240px;align-content:center;margin:44px 0 8px;padding:32px 20px 28px;border:2px solid var(--ds-word-card-edge);border-radius:28px;background:var(--ds-word-card);box-shadow:var(--ds-word-card-shadow)}.tf-canvas-drill .tf-word-prompt:before,.tf-canvas-drill .tf-word-prompt:after{content:"";position:absolute;z-index:-1;inset:12px 16px -6px;border-radius:28px}.tf-canvas-drill .tf-word-prompt:before{background:var(--ds-word-stack-back);transform:rotate(-4deg)}.tf-canvas-drill .tf-word-prompt:after{inset:8px 8px -4px;background:var(--ds-word-stack-mid);transform:rotate(3deg)}.tf-canvas-drill-letter{position:absolute;top:-34px;right:-2px;transform:rotate(10deg);pointer-events:none}.tf-canvas-drill-letter svg{display:block;width:74px;height:auto}.tf-canvas-drill-pos{margin:0;padding:4px 10px;border-radius:999px;background:var(--ds-chip);color:var(--ds-chip-ink);font-size:12px;font-weight:700}:root[data-layout=canvas] .tf-canvas-drill .tf-word-ask{color:var(--ds-text-muted);font-size:14px;font-weight:700}:root[data-layout=canvas] .tf-canvas-drill .tf-word-big{flex-direction:column;gap:14px;font-size:40px;font-weight:800;letter-spacing:-.5px}:root[data-layout=canvas] .tf-canvas-drill .tf-word-voice-btn{display:grid;place-items:center;width:52px;height:52px;padding:0;border:0;border-radius:50%;background:var(--ds-brand-soft);box-shadow:none;color:var(--ds-brand);transform:none}:root[data-layout=canvas] .tf-canvas-drill .tf-word-voice-btn svg{width:22px;height:22px}:root[data-layout=canvas] .tf-canvas-drill .tf-word-options{gap:10px}:root[data-layout=canvas] .tf-canvas-drill .tf-word-options .tf-option:disabled:not([data-result]){opacity:.55}:root[data-layout=canvas] .tf-canvas-drill .tf-word-answer{gap:8px;padding:18px;border:0;border-radius:20px;background:var(--ds-option);box-shadow:none;scroll-margin-bottom:calc(var(--tf-nav-clearance) + 16px)}:root[data-layout=canvas] .tf-canvas-drill .tf-word-verdict[data-result=right]{color:var(--ds-sheet-right-ink)}:root[data-layout=canvas] .tf-canvas-drill .tf-word-verdict[data-result=wrong]{color:var(--ds-sheet-wrong-ink)}:root[data-layout=canvas] .tf-canvas-drill .tf-word-answer .ds-button{justify-self:stretch;min-height:52px}@media(max-width:360px){.tf-canvas-words-hero{padding-right:108px}:root[data-layout=canvas] .tf-canvas-drill .tf-word-big{font-size:34px}}:root[data-layout=canvas] .tf-words-start{display:grid;justify-content:stretch;justify-items:stretch;gap:10px}:root[data-layout=canvas] .tf-words-start>.ds-button{width:100%}:root[data-layout=canvas] .tf-words-start .tf-study-mode{justify-self:start}:root[data-layout=canvas] :is(.tf-word-row,.tf-word-title-group) .tf-word-voice-btn{display:grid;flex:none;place-items:center;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:var(--ds-brand-soft);box-shadow:none;color:var(--ds-brand);transform:none}:root[data-layout=canvas] :is(.tf-word-en,.tf-word-row-en){-webkit-hyphens:auto;hyphens:auto}:root[data-layout=canvas] .tf-word-note .tf-fineprint{font-size:12px;font-weight:500}:root[data-layout=canvas] .tf-word-credit{color:var(--ds-text-muted)}:root[data-layout=canvas] .tf-word-credit a{color:var(--ds-brand-ink);font-weight:700;text-decoration:none}:root[data-layout=canvas] .tf-word-credit a:focus-visible{border-radius:4px;outline:3px solid var(--ds-focus);outline-offset:2px}:root[data-layout=canvas] .tf-canvas-wait{display:grid;align-content:start}:root[data-layout=canvas] .tf-canvas-wait .tf-empty h1{margin:0;font-size:20px;font-weight:800}:root[data-layout=canvas] .tf-canvas-words-head{display:flex;align-items:center;justify-content:space-between;gap:12px}:root[data-layout=canvas] .tf-study-mode .ds-choice-chips{grid-template-columns:repeat(2,auto);padding:4px;border-radius:14px}:root[data-layout=canvas] .tf-study-mode .ds-chip{min-width:52px;min-height:44px;padding:0 16px;border-radius:10px;font-size:14px}:root[data-layout=canvas] .tf-round-start .tf-study-mode{align-self:flex-start}.tf-flip-stack{position:relative;margin:44px 0 4px}.tf-flip-stack:before,.tf-flip-stack:after{content:"";position:absolute;z-index:-1;border-radius:28px}.tf-flip-stack:before{inset:12px 16px -6px;background:var(--ds-word-stack-back);transform:rotate(-4deg)}.tf-flip-stack:after{inset:8px 8px -4px;background:var(--ds-word-stack-mid);transform:rotate(3deg)}.tf-flip-stack .tf-canvas-drill-letter{z-index:2}.tf-flip-stack .tf-canvas-drill-letter svg{width:84px}.tf-flip-card{position:relative;perspective:1200px;touch-action:pan-y;cursor:grab;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;transition:transform .34s var(--ds-press-spring),opacity .24s ease;animation:tf-card-in .34s var(--ds-press-spring) backwards}.tf-flip-card[data-dragging=true]{transition:none;cursor:grabbing;will-change:transform}.tf-flip-card[data-leaving]{transition:transform .22s cubic-bezier(.22,.7,.3,1),opacity .22s ease}.tf-flip-card[data-leaving=known]{transform:translate3d(120%,0,0) rotate(14deg);opacity:0}.tf-flip-card[data-leaving=unsure]{transform:translate3d(-120%,0,0) rotate(-14deg);opacity:0}@keyframes tf-card-in{0%{opacity:0;transform:translateY(16px) scale(.96)}}.tf-flip-card-inner{display:grid;transform-style:preserve-3d;transition:transform .5s cubic-bezier(.3,1.25,.5,1)}.tf-flip-card[data-side=back] .tf-flip-card-inner{transform:rotateY(180deg)}.tf-flip-face{grid-area:1 / 1;display:flex;flex-direction:column;align-items:center;gap:12px;min-height:320px;box-sizing:border-box;padding:28px 20px 20px;border:2px solid var(--ds-word-card-edge);border-radius:28px;background:var(--ds-word-card);box-shadow:var(--ds-word-card-shadow);text-align:center;-webkit-backface-visibility:hidden;backface-visibility:hidden}.tf-flip-face[data-face=back]{transform:rotateY(180deg)}.tf-flip-face{transition:visibility 0s linear .25s}.tf-flip-face:not([inert]){transition-delay:0s}.tf-flip-face[inert]{visibility:hidden;pointer-events:none}.tf-flip-face>:first-child{margin-top:auto}.tf-flip-word{margin:0;color:var(--ds-text);font-size:44px;font-weight:800;letter-spacing:-.5px;line-height:1.1;overflow-wrap:anywhere}.tf-flip-word:focus:not(:focus-visible){outline:none}.tf-flip-zh{margin:0;color:var(--ds-text);font-size:32px;font-weight:800;line-height:1.25}.tf-flip-sub{margin:0;color:var(--ds-text-muted);font-size:15px;font-weight:600}.tf-flip-example{display:-webkit-box;margin:2px 0 0;overflow:hidden;color:var(--ds-text-muted);font-size:14px;line-height:1.5;text-align:start;-webkit-box-orient:vertical;-webkit-line-clamp:4}.tf-flip-turn{align-self:stretch;min-height:48px;margin-top:auto;border:0;border-radius:14px;background:var(--ds-option);box-shadow:inset 0 -3px color-mix(in srgb,currentColor 16%,transparent);color:var(--ds-brand);font:inherit;font-size:15px;font-weight:700;cursor:pointer;-webkit-tap-highlight-color:transparent}.tf-flip-turn:focus-visible{outline:3px solid var(--ds-focus);outline-offset:2px}.tf-flip-stamp{position:absolute;z-index:3;top:22px;padding:4px 10px;border:3px solid currentColor;border-radius:10px;font-size:18px;font-weight:800;opacity:0;transition:opacity .15s ease;pointer-events:none}.tf-flip-card[data-dragging=true] .tf-flip-stamp{transition:none}.tf-flip-stamp[data-stamp=known]{left:18px;color:var(--ds-sheet-right-ink);transform:rotate(-10deg)}.tf-flip-stamp[data-stamp=unsure]{right:18px;color:var(--ds-sheet-wrong-ink);transform:rotate(10deg)}.tf-flip-card:is([data-lean=known],[data-leaving=known]) .tf-flip-stamp[data-stamp=known],.tf-flip-card:is([data-lean=unsure],[data-leaving=unsure]) .tf-flip-stamp[data-stamp=unsure]{opacity:1}.tf-flip-rate{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:20px}.tf-flip-rate-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:64px;border:0;border-radius:18px;box-shadow:inset 0 -4px color-mix(in srgb,currentColor 16%,transparent);font:inherit;font-size:17px;font-weight:800;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform var(--press-out, .3s) var(--ds-press-spring)}.tf-flip-rate-btn[data-rating=unsure]{background:var(--ds-sheet-wrong);color:var(--ds-sheet-wrong-ink)}.tf-flip-rate-btn[data-rating=known]{background:var(--ds-sheet-right);color:var(--ds-sheet-right-ink)}.tf-flip-rate-btn:active{transform:scale(.96);transition-duration:.08s}.tf-flip-rate-btn:focus-visible{outline:3px solid var(--ds-focus);outline-offset:2px}.tf-flip-note{margin:12px 0 0;color:var(--ds-text-muted);font-size:13px;text-align:center}.tf-flip-note.tf-flip-hint{margin-top:2px}.tf-canvas-drill-result{display:flex;flex-direction:column;gap:18px}.tf-canvas-drill-result-head{display:flex;flex-direction:column;align-items:center;gap:6px;padding-top:20px;text-align:center}:root[data-layout=canvas] .tf-canvas-drill-result h1{margin:6px 0 0;font-size:26px;font-weight:800}.tf-canvas-drill-result h1:focus:not(:focus-visible){outline:none}.tf-canvas-drill-result-lead{margin:0;color:var(--ds-text-muted);font-size:15px;font-weight:600}.tf-canvas-drill-missed{padding:14px 16px 12px;border-radius:20px;background:var(--ds-missed)}.tf-canvas-drill-missed h2{margin:0 0 4px;color:var(--ds-missed-ink);font-size:15px;font-weight:800}.tf-canvas-drill-missed ul{margin:0;padding:0;list-style:none}.tf-canvas-drill-missed li{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"word say" "zh say";align-items:center;column-gap:10px;min-height:52px;padding:6px 0;border-bottom:1px solid var(--ds-row-line)}.tf-canvas-drill-missed li:last-child{border-bottom:0}.tf-canvas-drill-missed-word{grid-area:word;font-size:16px;font-weight:700}.tf-canvas-drill-missed-zh{grid-area:zh;color:var(--ds-text-muted);font-size:13px}:root[data-layout=canvas] .tf-canvas-drill-missed .tf-word-voice-btn{grid-area:say;display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:var(--ds-word-card);box-shadow:none;color:var(--ds-brand);transform:none}.tf-canvas-drill-missed-note{margin:6px 0 0;color:var(--ds-missed-ink);font-size:13px}.tf-canvas-drill-result-actions{display:grid;gap:10px}:root[data-layout=canvas] .tf-canvas-drill-result-actions .ds-button{width:100%;min-height:52px}@media(prefers-reduced-motion:reduce){.tf-flip-card,.tf-flip-card-inner{animation:none;transition:none}.tf-flip-card[data-side=back] .tf-flip-card-inner,.tf-flip-face[data-face=back]{transform:none}.tf-flip-face{transition:none}}@media(max-width:360px){.tf-flip-word{font-size:36px}.tf-flip-face{min-height:280px}}:root[data-layout=canvas] .tf-review .tf-tabs{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:4px;padding:4px;border-radius:14px;background:var(--ds-segment)}:root[data-layout=canvas] .tf-review .tf-tab{min-height:44px;border:0;border-radius:10px;background:transparent;box-shadow:none;color:var(--ds-text-muted);font-size:15px;font-weight:600}:root[data-layout=canvas] .tf-review .tf-tab[aria-selected=true]{background:var(--ds-segment-on);box-shadow:var(--ds-segment-shadow);color:var(--ds-text);font-weight:700}:root[data-layout=canvas] .tf-review [role=tabpanel]{display:grid;gap:16px}.tf-canvas-review-banner{position:relative;display:flex;align-items:center;min-height:96px;overflow:hidden;box-sizing:border-box;padding:12px 16px 12px 116px;border-radius:20px;background:var(--ds-review-banner)}.tf-canvas-review-cast{position:absolute;top:9px;left:16px;transform:rotate(-6deg)}.tf-canvas-review-banner p{display:grid;gap:4px;margin:0}.tf-canvas-review-banner strong{font-size:16px;font-weight:700;line-height:1.4}.tf-canvas-review-banner span{color:var(--ds-text-muted);font-size:13px}:root[data-layout=canvas] .tf-canvas-mistakes{display:grid;gap:10px;margin:0;padding:0;list-style:none}.tf-canvas-mistake{display:grid;gap:6px;padding:14px 16px;border:1px solid var(--ds-word-card-edge);border-radius:16px}.tf-canvas-mistake p{margin:0}.tf-canvas-mistake[data-type=listen-gap]{--dot: var(--ds-dot-listen-gap)}.tf-canvas-mistake[data-type=listen-choose]{--dot: var(--ds-dot-listen-choose)}.tf-canvas-mistake[data-type=read-tfng]{--dot: var(--ds-dot-read-tfng)}.tf-canvas-mistake[data-type=read-gap]{--dot: var(--ds-dot-read-gap)}.tf-canvas-mistake[data-type=listen-choose-many]{--dot: var(--ds-dot-listen-choose-many)}.tf-canvas-mistake[data-type=read-choose]{--dot: var(--ds-dot-read-choose)}.tf-canvas-mistake[data-type=read-choose-many]{--dot: var(--ds-dot-read-choose-many)}.tf-canvas-mistake-meta{display:flex;align-items:center;gap:8px;color:var(--ds-chip-ink);font-size:12px;font-weight:700}.tf-canvas-mistake-meta>span:last-child{margin-left:-8px;color:var(--ds-text-muted);font-weight:500}.tf-canvas-mistake-dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--dot, var(--ds-text-muted))}.tf-canvas-mistake-preview{font-size:15px;font-weight:600;line-height:1.45;overflow-wrap:anywhere}.tf-canvas-mistake-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--ds-text-muted);font-size:13px}.tf-canvas-mistake-redo{min-width:44px;min-height:44px;margin:-10px -8px -10px 0;padding:0 8px;border:0;border-radius:10px;background:none;color:var(--ds-brand-ink);font:inherit;font-size:14px;font-weight:700;cursor:pointer}.tf-canvas-mistake-redo:focus-visible{outline:3px solid var(--ds-focus);outline-offset:2px}.tf-canvas-mistake[data-cleared] .tf-canvas-mistake-foot>span{color:var(--ds-sheet-right-ink);font-weight:700}:root[data-layout=canvas] .tf-canvas-review-start{width:100%;min-height:54px;font-size:17px}:root[data-layout=canvas] .tf-history-list>li{display:grid;gap:6px;padding:14px 16px}:root[data-layout=canvas] .tf-history-list .tf-item-head{gap:6px}:root[data-layout=canvas] .tf-history-list .tf-item-head>span:not(.ds-tag){color:var(--ds-text-muted);font-size:12px;font-weight:600}:root[data-layout=canvas] .tf-history-list .tf-item-id{display:none}:root[data-layout=canvas] .tf-history-list .tf-mistake-preview{margin:0;font-size:15px;font-weight:600;line-height:1.45}:root[data-layout=canvas] .tf-history-list>li>.ds-button{justify-self:end;margin:-6px -8px -6px 0;font-size:14px}:root[data-layout=canvas] .tf-review .tf-vault-grid>li.ds-card{padding:14px 16px;border:1px solid var(--ds-word-card-edge);border-radius:16px;box-shadow:none}:root[data-layout=canvas] .tf-review .tf-mistakes-won,:root[data-layout=canvas] .tf-review details.tf-section{border:1px solid var(--ds-word-card-edge);border-radius:16px;box-shadow:none}.tf-canvas-me-head{display:grid;justify-items:center;gap:6px;padding-top:12px;text-align:center}.tf-canvas-avatar-wrap{position:relative;width:104px;height:104px}.tf-canvas-avatar{display:flex;justify-content:center;width:96px;height:96px;overflow:hidden;border:4px solid var(--ds-meter-current);border-radius:50%;background:var(--ds-topic-grape)}.tf-canvas-avatar>span{margin-top:8px}.tf-canvas-avatar svg{display:block}.tf-canvas-avatar-edit{position:absolute;right:-6px;bottom:-4px;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;color:var(--ds-on-brand)}.tf-canvas-avatar-edit>span{display:grid;place-items:center;width:36px;height:36px;box-sizing:border-box;border:3px solid var(--ds-bg);border-radius:50%;background:var(--ds-brand)}.tf-canvas-avatar-edit:focus-visible{outline:3px solid var(--ds-focus);outline-offset:2px}:root[data-layout=canvas] .tf-canvas-me-head h1{margin:6px 0 0;font-size:24px;font-weight:800}.tf-canvas-me-head p{margin:0;color:var(--ds-text-muted);font-size:13px}:root[data-layout=canvas] .tf-canvas-me .tf-me-group-title{margin:0 0 4px;color:var(--ds-text-muted);font-size:13px;font-weight:700}:root[data-layout=canvas] .tf-canvas-me-rows{border-radius:0;background:none;box-shadow:none}:root[data-layout=canvas] .tf-canvas-me-rows li:not(:last-child) .tf-me-row{border-bottom:1px solid var(--ds-row-line)}:root[data-layout=canvas] .tf-canvas-me-rows .tf-me-row{grid-template-columns:minmax(0,1fr) auto;gap:10px;min-height:46px;padding:0}:root[data-layout=canvas] .tf-canvas-me-rows .tf-me-row-icon{display:none}:root[data-layout=canvas] .tf-canvas-me-rows .tf-me-row-text{display:flex;align-items:center;justify-content:space-between;gap:12px}:root[data-layout=canvas] .tf-canvas-me-rows .tf-me-row-name{flex:none;font-size:15px;font-weight:500}:root[data-layout=canvas] .tf-canvas-me-rows .tf-me-row-value{min-width:0;color:var(--ds-text-muted);font-size:13px;text-align:end}.tf-canvas-subhead{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;margin-left:-10px}.tf-canvas-subhead:after{content:""}:root[data-layout=canvas] .tf-canvas-subhead .ds-icon-button{color:var(--ds-text)}:root[data-layout=canvas] .tf-canvas-subhead h1{margin:0;overflow:hidden;font-size:16px;font-weight:700;text-align:center;text-overflow:ellipsis;white-space:nowrap}.tf-canvas-avatar-pick{display:grid;justify-items:center;gap:10px}.tf-canvas-avatar--large{width:140px;height:140px;box-sizing:border-box;border-width:5px}.tf-canvas-avatar--large .tf-cast{margin-top:8px}.tf-canvas-avatar--large .tf-cast svg{width:112px;height:auto}.tf-canvas-avatar-pick p{margin:0;color:var(--ds-chip-ink);font-size:15px}.tf-canvas-avatar-pick strong{color:var(--ds-brand-ink);font-weight:800}.tf-canvas-avatar-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}@media(max-width:359px){.tf-canvas-avatar-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}.tf-canvas-avatar-choice{display:flex;align-items:center;justify-content:center;height:56px;padding:0;box-sizing:border-box;border:3px solid transparent;border-radius:16px;background:var(--ds-option);cursor:pointer}.tf-canvas-avatar-choice[aria-pressed=true]{border-color:var(--ds-brand);background:var(--ds-option-picked)}.tf-canvas-avatar-choice:focus-visible{outline:3px solid var(--ds-focus);outline-offset:2px}.tf-canvas-avatar-choice svg{display:block;width:36px;height:auto}:root[data-layout=canvas] .tf-canvas-avatar-save{width:100%;min-height:54px;font-size:17px}:root[data-layout=canvas] .tf-page--about .tf-muted{font-size:14px}:root[data-layout=canvas] .tf-vault-input{min-height:44px;font-size:16px}:root[data-layout=canvas] .tf-about-canvas{display:grid;gap:14px;align-content:start}:root[data-layout=canvas] .tf-about-hero{position:relative;display:block;min-height:132px;padding:18px 16px;border-radius:22px;background:linear-gradient(135deg,var(--ds-brand-soft) 0%,var(--ds-topic-sky) 100%);overflow:hidden}:root[data-layout=canvas] .tf-about-hero-letter{position:absolute;right:12px;bottom:10px;transform:rotate(7deg)}:root[data-layout=canvas] .tf-about-hero-letter svg{display:block}:root[data-layout=canvas] .tf-about-hero-text{position:relative;display:grid;gap:6px;max-width:min(220px,calc(100% - 118px))}:root[data-layout=canvas] .tf-about-hero-text h2{margin:0;font-size:20px;line-height:1.3;font-weight:800;color:var(--ds-hero-ink)}:root[data-layout=canvas] .tf-about-hero-text p{margin:0;font-size:13px;line-height:1.6;font-weight:500;color:var(--ds-hero-ink)}:root[data-layout=canvas] .tf-about-rows{display:grid;border:1px solid var(--ds-border);border-radius:18px;background:var(--ds-surface);overflow:hidden}:root[data-layout=canvas] .tf-about-row{display:flex;align-items:center;gap:12px;width:100%;min-height:68px;padding:12px 16px;box-sizing:border-box;border:0;background:none;color:var(--ds-text);font:inherit;text-align:start}:root[data-layout=canvas] .tf-about-row+.tf-about-row{border-top:1px solid var(--ds-row-line)}:root[data-layout=canvas] button.tf-about-row{cursor:pointer;padding-right:12px}:root[data-layout=canvas] .tf-about-row-text{flex:1 1 auto;min-width:0;display:grid;gap:2px}:root[data-layout=canvas] .tf-about-row-title{font-size:15px;font-weight:700}:root[data-layout=canvas] .tf-about-row-note{color:var(--ds-text-muted);font-size:13px;line-height:1.5;font-weight:500}:root[data-layout=canvas] .tf-about-go{flex:none;color:var(--ds-text-subtle)}:root[data-layout=canvas] .tf-about-badge{flex:none;display:grid;place-items:center;width:40px;height:40px;border-radius:12px}:root[data-layout=canvas] .tf-about-thanks{justify-self:start;display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 12px 0 10px;border-radius:999px;background:var(--ds-sheet-right);color:var(--ds-sheet-right-ink);font-size:13px;font-weight:700}:root[data-layout=canvas] .tf-about-clear{display:grid;gap:10px;padding:18px 16px 16px;border-radius:18px;background:var(--ds-sheet-wrong)}:root[data-layout=canvas] .tf-about-clear-head{display:flex;align-items:center;gap:12px}:root[data-layout=canvas] .tf-about-clear-head h2{margin:0;font-size:18px;font-weight:800}:root[data-layout=canvas] .tf-about-clear-badge{flex:none;display:grid;place-items:center;width:40px;height:40px;border-radius:20px}:root[data-layout=canvas] .tf-about-clear>p{margin:0;color:var(--ds-text-muted);font-size:14px;line-height:1.65;font-weight:500}:root[data-layout=canvas] .tf-about-clear .tf-about-clear-note{display:flex;align-items:flex-start;gap:6px;font-size:13px;line-height:1.6}:root[data-layout=canvas] .tf-about-clear .tf-about-clear-note svg{flex:none;margin-top:3px}:root[data-layout=canvas] .tf-about-clear .tf-actions{justify-content:flex-end;margin-top:4px}:root[data-layout=canvas] .tf-about-confirm{display:grid;gap:14px;padding:16px;border:1px solid var(--ds-border);border-radius:14px;background:var(--ds-surface)}:root[data-layout=canvas] .tf-about-confirm>p{display:flex;align-items:flex-start;gap:10px;margin:0;color:var(--ds-sheet-wrong-ink);font-size:15px;line-height:1.65;font-weight:700}:root[data-layout=canvas] .tf-jelly-warn{flex:none;display:grid;place-items:center;width:32px;height:32px;border-radius:16px}:root[data-layout=canvas] .tf-me-page--backup{display:grid;gap:14px;align-content:start}:root[data-layout=canvas] .tf-backup-hero{position:relative;display:block;min-height:124px;padding:18px 16px;border-radius:22px;background:linear-gradient(135deg,var(--ds-topic-sky) 0%,var(--ds-brand-soft) 100%);overflow:hidden}:root[data-layout=canvas] .tf-backup-hero-letter{position:absolute;right:12px;bottom:10px;width:84px}:root[data-layout=canvas] .tf-backup-hero-text{position:relative;display:grid;gap:6px;max-width:220px}:root[data-layout=canvas] .tf-backup-hero-text h2{margin:0;font-size:20px;line-height:1.3;font-weight:800;color:var(--ds-hero-ink)}:root[data-layout=canvas] .tf-backup-hero-text p{margin:0;font-size:13px;line-height:1.6;font-weight:500;color:var(--ds-hero-ink)}:root[data-layout=canvas] .tf-backup-hint{display:flex;align-items:flex-start;gap:12px;padding:14px 14px 14px 16px;border-radius:18px}:root[data-layout=canvas] .tf-backup-hint-icon{flex:none;display:grid;place-items:center;width:36px;height:36px;border-radius:18px}:root[data-layout=canvas] .tf-backup-hint-body{flex:1 1 auto;min-width:0;display:grid;gap:10px}:root[data-layout=canvas] .tf-backup-hint-body p{margin:0;color:var(--ds-more-mint-ink);font-size:14px;line-height:1.6;font-weight:600}:root[data-layout=canvas] .tf-backup-hint-body .tf-actions{justify-content:flex-start}:root[data-layout=canvas] .tf-backup-hint-body .ds-button{min-height:44px;border:0;border-radius:999px;background:var(--ds-surface);color:var(--ds-brand-ink);font-size:14px;font-weight:700}:root[data-layout=canvas] .tf-backup-canvas{display:grid;gap:14px}:root[data-layout=canvas] .tf-backup-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0}:root[data-layout=canvas] .tf-backup-stat{display:grid;align-content:start;gap:8px;padding:12px;border:1px solid var(--ds-border);border-radius:16px;background:var(--ds-surface)}:root[data-layout=canvas] .tf-backup-stat dt{color:var(--ds-text-muted);font-size:12px;font-weight:600}:root[data-layout=canvas] .tf-backup-stat dd{display:flex;flex-direction:column;gap:2px;margin:0;font-size:18px;font-weight:800}:root[data-layout=canvas] .tf-backup-stat dd small{color:var(--ds-text-muted);font-size:12px;line-height:1.5;font-weight:600}:root[data-layout=canvas] .tf-backup-stat:first-child dd{flex-direction:row;align-items:center;gap:6px}:root[data-layout=canvas] .tf-backup-dot{width:8px;height:8px;border-radius:4px;background:var(--ds-dot-listen-choose-many)}:root[data-layout=canvas] .tf-backup-dot[data-state=ok]{background:var(--ds-right)}:root[data-layout=canvas] .tf-backup-dot[data-state=bad]{background:var(--ds-wrong)}:root[data-layout=canvas] .tf-backup-stat-icon{flex:none;display:grid;place-items:center;width:32px;height:32px;border-radius:10px}:root[data-layout=canvas] .tf-backup-card-head .tf-backup-stat-icon{width:36px;height:36px;border-radius:12px}:root[data-layout=canvas] .tf-backup-check{display:grid;gap:8px}:root[data-layout=canvas] .tf-backup-check .ds-button--secondary{width:100%;min-height:48px;border:1px solid var(--ds-border);border-radius:14px;background:var(--ds-surface);color:var(--ds-brand-ink);font-size:15px;font-weight:700}:root[data-layout=canvas] .tf-backup-why{padding:12px 14px;border-radius:16px;background:var(--ds-surface-sunken)}:root[data-layout=canvas] .tf-backup-why summary{display:flex;align-items:center;gap:8px;min-height:44px;margin:-8px 0;list-style:none;font-size:14px;font-weight:700;cursor:pointer}:root[data-layout=canvas] .tf-backup-why summary span{flex:1 1 auto}:root[data-layout=canvas] .tf-backup-why summary>svg{flex:none;color:var(--ds-text-muted)}:root[data-layout=canvas] .tf-backup-why p{margin:8px 0 0;color:var(--ds-chip-ink);font-size:13px;line-height:1.65;font-weight:500}:root[data-layout=canvas] .tf-backup-status{padding:12px 14px;border-radius:14px;background:var(--ds-brand-soft);color:var(--ds-brand-ink)}:root[data-layout=canvas] .tf-backup-status p{margin:0;font-size:13px;line-height:1.6;font-weight:600}:root[data-layout=canvas] .tf-backup-heading{margin:8px 0 -2px 4px;font-size:17px;font-weight:800}:root[data-layout=canvas] .tf-backup-card{display:grid;gap:14px;padding:16px;border:1px solid var(--ds-border);border-radius:20px;background:var(--ds-surface)}:root[data-layout=canvas] .tf-backup-card-head{display:flex;align-items:center;gap:10px}:root[data-layout=canvas] .tf-backup-card-head h3{flex:1 1 auto;margin:0;font-size:16px;font-weight:800}:root[data-layout=canvas] .tf-backup-tag{display:inline-flex;align-items:center;min-height:24px;padding:0 10px;border-radius:999px;background:var(--ds-chip);color:var(--ds-chip-ink);font-size:12px;font-weight:700;white-space:nowrap}:root[data-layout=canvas] .tf-backup-tag[data-tone=brand]{background:var(--ds-brand-soft);color:var(--ds-brand-ink)}:root[data-layout=canvas] .tf-backup-steps{display:grid;margin:0;padding:0;list-style:none}:root[data-layout=canvas] .tf-backup-steps>li{position:relative;display:flex;gap:12px;padding-bottom:16px}:root[data-layout=canvas] .tf-backup-steps>li:last-child{padding-bottom:0}:root[data-layout=canvas] .tf-backup-steps>li:not(:last-child):before{content:"";position:absolute;left:13px;top:30px;bottom:2px;width:2px;background:var(--ds-border)}:root[data-layout=canvas] .tf-backup-num{flex:none;display:grid;place-items:center;width:28px;height:28px;border-radius:14px;background:var(--ds-brand);color:var(--ds-on-brand);font-size:14px;font-weight:800}:root[data-layout=canvas] .tf-backup-step{flex:1 1 auto;min-width:0;display:grid;justify-items:start;gap:4px}:root[data-layout=canvas] .tf-backup-step>*{margin:0}:root[data-layout=canvas] .tf-backup-step-title{font-size:15px;font-weight:700}:root[data-layout=canvas] .tf-backup-step-note{margin-bottom:6px;color:var(--ds-text-muted);font-size:13px;line-height:1.5;font-weight:500}:root[data-layout=canvas] .tf-backup-step .ds-button--secondary,:root[data-layout=canvas] .tf-backup-step .tf-file-label{min-height:44px;padding:0 18px 0 14px;gap:6px;border:0;border-radius:999px;background:var(--ds-brand-soft);color:var(--ds-brand-ink);font-size:14px;font-weight:700}:root[data-layout=canvas] .tf-backup-step .ds-button--primary{min-height:46px;margin-top:6px;padding:0 20px 0 16px;gap:6px;border-radius:12px;font-size:15px;font-weight:700}:root[data-layout=canvas] .tf-backup-step .tf-vault-input{justify-self:stretch;box-sizing:border-box;min-height:46px;padding:0 14px;border:2px solid var(--ds-border-strong);border-radius:12px;background:var(--ds-surface);color:var(--ds-text);font-size:16px}:root[data-layout=canvas] .tf-backup-hint-line{display:flex;align-items:flex-start;gap:6px;margin:0;color:var(--ds-text-muted);font-size:12px;line-height:1.6;font-weight:500}:root[data-layout=canvas] .tf-backup-hint-line svg{flex:none;margin-top:3px}:root[data-layout=canvas] .tf-backup-confirm{display:grid;gap:12px;padding:16px;border-radius:18px;background:var(--ds-sheet-wrong)}:root[data-layout=canvas] .tf-backup-confirm>p{display:flex;align-items:flex-start;gap:10px;margin:0;color:var(--ds-sheet-wrong-ink);font-size:14px;line-height:1.65;font-weight:700}:root[data-layout=canvas] .tf-backup-compare{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}:root[data-layout=canvas] .tf-backup-compare>div{display:grid;gap:2px;padding:10px 12px;border-radius:12px;background:var(--ds-surface)}:root[data-layout=canvas] .tf-backup-compare span{color:var(--ds-text-muted);font-size:12px;font-weight:600}:root[data-layout=canvas] .tf-backup-compare strong{font-size:15px;font-weight:800}.tf-canvas-blob{position:relative;display:grid;place-items:center;align-self:center;justify-self:center;margin-inline:auto}.tf-canvas-blob:before{content:"";position:absolute;z-index:-1;inset:0;border-radius:58% 42% 55% 45%/46% 58% 42% 54%;background:var(--blob);transform:rotate(-8deg)}.tf-canvas-blob[data-tone=pink]{--blob: var(--ds-blob-pink)}.tf-canvas-blob[data-tone=blue]{--blob: var(--ds-blob-blue)}.tf-canvas-blob[data-tone=mint]{--blob: var(--ds-blob-mint)}.tf-canvas-blob[data-tone=grape]{--blob: var(--ds-blob-grape)}.tf-canvas-blob[data-tone=peach]{--blob: var(--ds-blob-peach)}:root[data-layout=canvas] .tf-onboarding:is(.tf-canvas-welcome,.tf-canvas-intro,.tf-canvas-step,.tf-canvas-placed){isolation:isolate}:root[data-layout=canvas] .tf-canvas-welcome{display:flex;flex-direction:column;gap:0;min-height:100dvh;box-sizing:border-box;padding:0 0 24px;overflow-x:clip;background:var(--ds-welcome-fade)}.tf-canvas-welcome-head{display:grid;gap:16px;padding:max(88px,env(safe-area-inset-top)) 28px 0;margin-bottom:32px}:root[data-layout=canvas] .tf-canvas-welcome-head h1{margin:0;font-size:54px;font-weight:900;letter-spacing:-1.5px;line-height:1.05}.tf-canvas-welcome-head p{margin:0;color:var(--ds-chip-ink);font-size:16px;line-height:1.6}.tf-canvas-welcome-pile{flex:none;width:min(100%,430px);align-self:center;margin-top:auto;margin-bottom:14px}.tf-canvas-welcome-pile:before{content:"";position:absolute;inset:calc(40 / 316 * 100%) calc(25 / 390 * 100%) 0;border-radius:50%;background:radial-gradient(closest-side,var(--ds-letter-glow) 0%,transparent 100%)}.tf-canvas-welcome-actions{display:grid;gap:4px;padding:0 24px}:root[data-layout=canvas] .tf-canvas-welcome-actions .ds-button--primary{box-shadow:0 8px 20px var(--ds-brand-glow)}:root[data-layout=canvas] .tf-canvas-welcome-actions .ds-button--ghost{min-height:44px;color:var(--ds-brand-ink);font-size:15px;font-weight:600}.tf-canvas-welcome-actions .tf-fineprint{margin:4px 0 0;text-align:center}:root[data-layout=canvas] .tf-canvas-intro{display:flex;flex-direction:column;gap:0;min-height:100dvh;box-sizing:border-box;padding-bottom:32px;overflow-x:clip}.tf-canvas-intro-bar{display:flex;justify-content:flex-end;min-height:44px;margin-right:-8px}:root[data-layout=canvas] .tf-canvas-intro-bar .ds-button{color:var(--ds-text-muted);font-size:15px;font-weight:600}.tf-canvas-intro-blob{width:min(300px,78vw);aspect-ratio:300 / 290;margin-top:32px}.tf-canvas-intro-blob[data-tone=blue]:before{border-radius:44% 56% 48% 52%/58% 44% 56% 42%;transform:rotate(6deg)}.tf-canvas-intro-text{display:grid;gap:14px;margin-top:40px;padding:0 8px;text-align:center}:root[data-layout=canvas] .tf-canvas-intro-text h1{margin:0;font-size:27px;font-weight:700;letter-spacing:-.3px;line-height:1.35}.tf-canvas-intro-text p{margin:0;color:var(--ds-text-muted);font-size:15px;line-height:1.6}.tf-canvas-intro-actions{display:grid;gap:28px;margin-top:auto;padding-top:24px}.tf-canvas-dots{display:flex;justify-content:center;gap:6px;margin:0}.tf-canvas-dots span{width:7px;height:7px;border-radius:4px;background:var(--ds-dot-off)}.tf-canvas-dots span[data-on]{width:22px;background:var(--ds-brand)}.tf-canvas-step-bar{display:flex;min-height:44px;margin-left:-10px}:root[data-layout=canvas] .tf-canvas-step-bar .ds-icon-button{color:var(--ds-text)}.tf-canvas-step-blob{width:140px;height:132px;margin-top:-24px}.tf-canvas-step-blob:before{inset:6px 0 0;border-radius:52% 48% 44% 56%/56% 46% 54% 44%;transform:none}.tf-canvas-step-text{display:grid;gap:6px;text-align:center}:root[data-layout=canvas] .tf-canvas-step-text h1{margin:0;font-size:26px;font-weight:700}.tf-canvas-step-text p{margin:0;color:var(--ds-text-muted);font-size:14px}:root[data-layout=canvas] .tf-onboarding .tf-choice-cards{gap:10px}:root[data-layout=canvas] .tf-onboarding .tf-choice-card{min-height:62px;align-content:center;padding:10px 52px 10px 16px;border:2px solid transparent;border-radius:14px;background:var(--ds-option);box-shadow:none}:root[data-layout=canvas] .tf-onboarding .tf-choice-card:active{transform:scale(.99);box-shadow:none}:root[data-layout=canvas] .tf-onboarding .tf-choice-card:has(input:checked){border-color:var(--ds-brand);background:var(--ds-option-picked);box-shadow:none}:root[data-layout=canvas] .tf-onboarding .tf-choice-title{color:var(--ds-text);font-size:16px;font-weight:700}:root[data-layout=canvas] .tf-onboarding .tf-choice-card:has(input:checked) .tf-choice-title{color:var(--ds-text)}:root[data-layout=canvas] .tf-onboarding .tf-choice-hint{font-size:13px}.tf-choice-tag{margin-left:8px;color:var(--ds-text-muted);font-size:13px;font-weight:700}.tf-choice-card:has(input:checked) .tf-choice-tag{color:var(--ds-brand-ink)}:root[data-layout=canvas] .tf-onboarding .tf-choice-card .tf-selected-mark{display:block;box-sizing:border-box;width:24px;height:24px;padding:4px;border:2px solid var(--ds-border-strong);border-radius:50%;color:transparent}:root[data-layout=canvas] .tf-onboarding .tf-choice-card:has(input:checked) .tf-selected-mark{border-color:var(--ds-brand);background:var(--ds-brand);color:var(--ds-on-brand)}.tf-canvas-subhead-title{margin:0;font-size:16px;font-weight:700;text-align:center}:root[data-layout=canvas] .tf-canvas-placement .tf-canvas-subhead{grid-template-columns:44px minmax(0,1fr) 64px;padding:8px var(--ds-gutter) 0}:root[data-layout=canvas] .tf-canvas-placement .tf-canvas-subhead:after{content:none}:root[data-layout=canvas] .tf-canvas-placement .tf-canvas-subhead .ds-button{justify-self:end;color:var(--ds-text-muted);font-size:15px;font-weight:600}.tf-canvas-placement-count{margin:8px var(--ds-gutter) 8px;color:var(--ds-chip-ink);font-size:13px;font-weight:700}.tf-canvas-placement-meter{display:block;height:6px;margin:0 var(--ds-gutter);overflow:hidden;border-radius:3px;background:var(--ds-meter-open)}.tf-canvas-placement-meter>span{display:block;height:100%;background:var(--ds-brand);transform:scaleX(var(--done));transform-origin:left;transition:transform .3s ease}.tf-canvas-placement-coach{display:flex;align-items:center;gap:10px}.tf-canvas-placement-coach p{margin:0;padding:10px 14px;border-radius:16px 16px 16px 4px;background:var(--ds-bubble);color:var(--ds-chip-ink);font-size:13px;line-height:1.5}.tf-canvas-placement-chip{justify-self:start;width:fit-content;margin:0;padding:5px 10px;border-radius:999px;background:var(--ds-placement-chip);color:var(--ds-placement-chip-ink);font-size:13px;font-weight:700}.tf-canvas-placed-blob{width:190px;height:190px;margin-top:24px}.tf-canvas-placed-blob:before{border-radius:52% 48% 44% 56%/50% 46% 54% 50%;transform:none}.tf-canvas-spark{position:absolute;width:22px;height:22px;fill:currentColor;stroke:none}.tf-canvas-spark[data-at="1"]{top:30px;left:-38px;color:var(--ds-spark-amber)}.tf-canvas-spark[data-at="2"]{top:14px;right:-34px;width:16px;height:16px;color:var(--ds-spark-pink)}.tf-canvas-spark[data-at="3"]{right:-40px;bottom:6px;width:24px;height:24px;color:var(--ds-spark-teal)}.tf-canvas-placed-head{display:grid;gap:6px;text-align:center}:root[data-layout=canvas] .tf-canvas-placed-head h1{margin:0;font-size:30px;font-weight:900}.tf-canvas-placed-head p{margin:0;color:var(--ds-chip-ink);font-size:15px}.tf-canvas-placed-head strong{color:var(--ds-brand-ink);font-weight:800}:root[data-layout=canvas] .tf-canvas-placed .tf-choice-card{min-height:74px;border-radius:18px}:root[data-layout=canvas] .tf-canvas-placed .tf-choice-title{font-size:17px;font-weight:800}.tf-canvas-placed-note{margin:0;color:var(--ds-text-muted);font-size:13px;line-height:1.6;text-align:center}.tf-canvas-placed .tf-fineprint{text-align:center}:root[data-layout=canvas] .tf-canvas-login{display:flex;flex-direction:column;min-height:100dvh;box-sizing:border-box}.tf-canvas-login-blob{width:250px;height:170px;margin-top:8px}.tf-canvas-login-blob:before{border-radius:48% 52% 46% 54%/56% 44%;transform:none}.tf-canvas-login-text{display:grid;gap:10px}:root[data-layout=canvas] .tf-canvas-login-text h1{margin:0;font-size:30px;font-weight:900}.tf-canvas-login-text p{margin:0;color:var(--ds-chip-ink);font-size:15px;line-height:1.6}.tf-canvas-signin{display:grid;gap:10px}.tf-canvas-signin p{margin:0;font-size:13px}.tf-canvas-signin-facts{padding:12px 16px;border-radius:14px;background:var(--ds-option);font-size:13px}.tf-canvas-signin-facts summary{color:var(--ds-brand-ink);font-weight:700;cursor:pointer}.tf-canvas-signin-facts .tf-account-facts{margin:10px 0 0;padding-left:18px;line-height:1.6}.tf-canvas-login-later{display:grid;justify-items:center;gap:2px;margin-top:auto;padding-top:24px;text-align:center}.tf-canvas-login-later p{margin:0;color:var(--ds-text-muted);font-size:13px}:root[data-layout=canvas] .tf-canvas-login-later .ds-button{color:var(--ds-brand-ink);font-size:15px;font-weight:600}.tf-canvas-placed-band{justify-self:center;padding:4px 12px;border-radius:999px;background:var(--ds-option-picked);color:var(--ds-brand-ink);font-size:13px;font-weight:700}.tf-canvas-placed-head .tf-muted{font-size:13px;line-height:1.6}:root[data-layout=canvas] .tf-checklist li{padding-left:38px;border:0;border-radius:14px;background:var(--ds-option);font-weight:600}:root[data-layout=canvas] .tf-checklist li:before{left:18px;width:8px;height:8px;border-radius:50%}:root[data-layout=canvas] .tf-canvas-settings{gap:24px}.tf-canvas-set{display:grid;gap:10px;min-width:0}:root[data-layout=canvas] .tf-canvas-set h2{margin:0 4px;color:var(--ds-text-muted);font-size:13px;font-weight:700}.tf-canvas-set-note{margin:0 4px;color:var(--ds-text-muted);font-size:12px;line-height:1.5;text-wrap:pretty}:root[data-layout=canvas] .tf-canvas-set-link{justify-self:start;min-height:44px;margin-top:-6px;padding-inline:4px;font-size:14px;font-weight:700}:root[data-layout=canvas] .tf-canvas-segment[data-count="3"] .ds-choice-chips{grid-template-columns:repeat(3,minmax(0,1fr))}:root[data-layout=canvas] .tf-canvas-settings .tf-canvas-segment .ds-chip{font-size:14px}.tf-canvas-size{display:flex;align-items:center;gap:14px;padding:0 4px}.tf-canvas-size>span{flex:none;font-size:13px;font-weight:700}.tf-canvas-size>span[data-large]{font-size:21px}.tf-canvas-size input{flex:1 1 auto;min-width:0;height:44px;margin:0;background:none;cursor:pointer;-webkit-appearance:none;appearance:none}.tf-canvas-size input::-webkit-slider-runnable-track{height:6px;border-radius:3px;background:linear-gradient(90deg,var(--ds-brand) var(--fill),var(--ds-slider-track) var(--fill))}.tf-canvas-size input::-webkit-slider-thumb{width:24px;height:24px;margin-top:-9px;box-sizing:border-box;border:2px solid var(--ds-brand);border-radius:50%;background:var(--ds-slider-thumb);-webkit-appearance:none;appearance:none}.tf-canvas-size input::-moz-range-track{height:6px;border-radius:3px;background:var(--ds-slider-track)}.tf-canvas-size input::-moz-range-progress{height:6px;border-radius:3px;background:var(--ds-brand)}.tf-canvas-size input::-moz-range-thumb{width:24px;height:24px;box-sizing:border-box;border:2px solid var(--ds-brand);border-radius:50%;background:var(--ds-slider-thumb)}.tf-canvas-size input:focus-visible{border-radius:8px;outline:3px solid var(--ds-focus);outline-offset:2px}:root[data-layout=canvas] .tf-canvas-settings .tf-size-preview{padding:10px 14px;border:0;border-radius:14px;background:var(--ds-option)}.tf-canvas-switches{display:grid;padding-left:4px}.tf-canvas-switch-row{display:flex;align-items:center;gap:12px;min-height:60px;box-sizing:border-box;padding:8px 0;border-bottom:1px solid var(--ds-row-line);cursor:pointer;-webkit-tap-highlight-color:transparent}.tf-canvas-switch-text{display:grid;flex:1 1 auto;gap:2px;min-width:0}.tf-canvas-switch-name{font-size:15px;font-weight:600}.tf-canvas-switch-note{color:var(--ds-text-muted);font-size:12px}.tf-canvas-switch{position:relative;flex:none;width:50px;height:30px;margin:0;border-radius:15px;background:var(--ds-switch-off);cursor:pointer;-webkit-appearance:none;appearance:none;transition:background-color .2s ease}.tf-canvas-switch:before{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:var(--ds-switch-knob);box-shadow:var(--ds-switch-knob-shadow);transition:transform .2s ease}.tf-canvas-switch:checked{background:var(--ds-brand)}.tf-canvas-switch:checked:before{transform:translate(20px)}.tf-canvas-switch:focus-visible{outline:3px solid var(--ds-focus);outline-offset:2px}@media(prefers-reduced-motion:reduce){.tf-canvas-switch,.tf-canvas-switch:before{transition:none}}@media(forced-colors:active){.tf-canvas-switch{border:2px solid ButtonText}.tf-canvas-switch:before{top:1px;left:1px;background:ButtonText}.tf-canvas-switch:checked:before{background:Highlight}}.tf-canvas-goal{display:grid;gap:26px}.tf-canvas-goal-pick{position:relative}.tf-canvas-goal-cast{position:absolute;top:-22px;right:0;transform:rotate(8deg)}.tf-canvas-goal-chips{padding-right:80px}:root[data-layout=canvas] .tf-canvas-goal-chips .ds-choice-chips{gap:8px}:root[data-layout=canvas] .tf-canvas-goal-chips .ds-chip{min-height:44px;padding:0 16px;border:2px solid transparent;background:var(--ds-option);box-shadow:none;color:var(--ds-text);font-size:15px;font-weight:700}:root[data-layout=canvas] .tf-canvas-goal-chips .ds-chip[aria-checked=true]{border-color:var(--ds-brand);background:var(--ds-goal-picked);color:var(--ds-goal-picked-ink)}:root[data-layout=canvas] .tf-canvas-goal-chips .ds-chip:active:not(:disabled){transform:scale(.97);box-shadow:none}:root[data-layout=canvas] .tf-canvas-goal-chips .ds-chip svg{display:none}.tf-canvas-goal-hint{margin:2px 0 0;padding:12px 14px;border-radius:14px;background:var(--ds-goal-hint);color:var(--ds-goal-hint-ink);font-size:14px;line-height:1.5}.tf-canvas-date-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px 14px;padding:16px;border-radius:18px;background:var(--ds-option)}.tf-canvas-date-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;width:52px;height:56px;box-sizing:border-box;padding-top:6px;border-radius:12px;background:var(--ds-date-tile);box-shadow:inset 0 6px 0 var(--ds-date-tile-band)}.tf-canvas-date-tile>span{color:var(--ds-text-muted);font-size:11px;font-weight:700;line-height:1.4}.tf-canvas-date-tile>strong{font-size:20px;font-weight:900;line-height:1.1}.tf-canvas-date-text{display:grid;gap:2px;min-width:0}.tf-canvas-date-text strong{font-size:16px;font-weight:800;line-height:1.35}.tf-canvas-date-text strong>span{display:inline-block}.tf-canvas-date-text>span{color:var(--ds-text-muted);font-size:13px}.tf-canvas-date-text>span[data-wrong]{color:var(--ds-sheet-wrong-ink);font-weight:700}.tf-canvas-date-change{min-height:44px;padding:0 6px;border:0;border-radius:10px;background:none;color:var(--ds-goal-picked-ink);font:inherit;font-size:14px;font-weight:700;cursor:pointer;-webkit-tap-highlight-color:transparent}.tf-canvas-date-change:focus-visible{outline:3px solid var(--ds-focus);outline-offset:2px}.tf-canvas-date-field{grid-column:1 / -1;color:var(--ds-text-muted)}.tf-canvas-date-field input{width:100%;box-sizing:border-box;border-radius:12px}.tf-canvas-goal .tf-canvas-switch-row{min-height:48px;padding:0 0 0 4px;border-bottom:0}.tf-canvas-goal .tf-canvas-switch-name{font-weight:500}.tf-canvas-goal-amount{display:grid;gap:2px;margin:0;padding:14px 16px;border:1px solid var(--ds-border);border-radius:18px}.tf-canvas-goal-amount strong{font-size:16px;font-weight:800}.tf-canvas-goal-amount span{color:var(--ds-text-muted);font-size:13px;line-height:1.5;text-wrap:pretty}:root[data-layout=canvas] .tf-canvas-goal-save{width:100%;min-height:54px;margin-top:6px;border-radius:14px;font-size:17px}:root[data-layout=canvas] .tf-page.tf-canvas-report{gap:12px;padding-inline:20px}.tf-canvas-report-head{display:grid;justify-items:start;gap:4px}:root[data-layout=canvas] .tf-canvas-report-head .ds-icon-button{margin-left:-12px;color:var(--ds-text)}:root[data-layout=canvas] .tf-canvas-report-head h1{margin:0;font-size:28px;font-weight:800;letter-spacing:-.3px}.tf-canvas-calendar{display:grid;gap:4px}.tf-canvas-month{display:flex;align-items:center;justify-content:space-between;margin-inline:-4px}.tf-canvas-month h2{margin:0;color:var(--ds-text);font-size:16px;font-weight:700}:root[data-layout=canvas] .tf-canvas-month .ds-icon-button{color:var(--ds-chip-ink)}:root[data-layout=canvas] .tf-canvas-month .ds-icon-button[aria-disabled=true]{opacity:.3;cursor:default}.tf-canvas-days{width:100%;border-collapse:separate;border-spacing:0 4px;table-layout:fixed}.tf-canvas-days th{height:22px;padding:0;color:var(--ds-text-muted);font-size:12px;font-weight:600;text-align:center}.tf-canvas-days td{padding:0;text-align:center;vertical-align:middle}.tf-canvas-day{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:50%;color:var(--ds-text);font-size:14px;font-variant-numeric:tabular-nums}.tf-canvas-days td[data-out] .tf-canvas-day{color:var(--ds-text-subtle)}.tf-canvas-days td[data-done] .tf-canvas-day{background:var(--ds-cal-done);color:var(--ds-cal-done-ink);font-weight:700}.tf-canvas-days td[data-today] .tf-canvas-day{background:var(--ds-brand);color:var(--ds-on-brand);font-weight:700}.tf-canvas-report-chips{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 0}.tf-canvas-report-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--ds-radius-pill);background:var(--ds-chip);color:var(--ds-chip-ink);font-size:13px;font-weight:600}.tf-canvas-report-key{width:10px;height:10px;box-sizing:border-box;border:1px solid var(--ds-cal-key-edge);border-radius:50%;background:var(--ds-cal-done)}.tf-canvas-report-types{display:grid;margin-top:8px}.tf-canvas-report-rows{margin:0;padding:0 4px;list-style:none}.tf-canvas-report-rows li{--dot: var(--ds-brand);display:grid;grid-template-columns:10px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:40px;color:var(--ds-text);font-size:15px}.tf-canvas-report-rows li:not(:last-child){border-bottom:1px solid var(--ds-row-line)}.tf-canvas-report-rows li[data-type=listen-gap]{--dot: var(--ds-dot-listen-gap)}.tf-canvas-report-rows li[data-type=listen-choose]{--dot: var(--ds-dot-listen-choose)}.tf-canvas-report-rows li[data-type=read-tfng]{--dot: var(--ds-dot-read-tfng)}.tf-canvas-report-rows li[data-type=read-gap]{--dot: var(--ds-dot-read-gap)}.tf-canvas-report-rows li[data-type=listen-choose-many]{--dot: var(--ds-dot-listen-choose-many)}.tf-canvas-report-rows li[data-type=read-choose]{--dot: var(--ds-dot-read-choose)}.tf-canvas-report-rows li[data-type=read-choose-many]{--dot: var(--ds-dot-read-choose-many)}.tf-canvas-report-rows .tf-canvas-dot{width:10px;height:10px}.tf-canvas-report-rows .tf-fraction{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;text-align:end}.tf-canvas-report-legend{margin:4px 0 0;padding:0 4px;color:var(--ds-text-muted);font-size:12px}.tf-canvas-report-types .tf-fineprint{margin-top:4px;padding:0 4px}.tf-canvas-report-estimate{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:16px;background:var(--ds-report-card)}.tf-canvas-report-estimate .tf-letter-art{flex:none}.tf-canvas-report-estimate svg{display:block;width:40px;height:auto}.tf-canvas-report-estimate p{display:grid;gap:2px;min-width:0;margin:0}.tf-canvas-report-estimate strong{color:var(--ds-text);font-size:14px;font-weight:700}.tf-canvas-report-estimate span{color:var(--ds-text-muted);font-size:12px}.tf-canvas-report>.tf-fineprint{padding:0 4px;font-weight:500;line-height:1.5}.tf-canvas-report-next{display:grid;gap:8px}.tf-canvas-report-next p{margin:0;color:var(--ds-text-muted);font-size:13px;line-height:1.5}.tf-ai-hello{display:flex;align-items:flex-end;gap:8px;padding-right:8px}.tf-ai-hello-cast{flex:none}.tf-ai-bubble{min-width:0;margin:0 0 10px;padding:12px 14px;border-radius:16px 16px 16px 4px;background:var(--ds-ai-bubble);color:var(--ds-ai-bubble-ink);font-size:14px;line-height:1.5}.tf-ai-bubble span{display:block;text-wrap:balance}@media(max-width:360px){.tf-ai-hello{padding-right:0}.tf-ai-hello-cast svg{width:46px;height:auto}.tf-ai-bubble{padding:10px 12px}}.tf-ai-summary--canvas{display:grid;gap:12px}:root[data-layout=canvas] .tf-ai-summary--canvas textarea{height:max(13rem,calc(100dvh - 34rem));min-height:0;padding:18px;border:1px solid var(--ds-ai-card-edge);border-radius:20px;background:var(--ds-ai-card);font:400 16px/1.6 var(--ds-font);resize:none}.tf-ai-lock{display:flex;gap:6px;margin:0;padding:0 4px;color:var(--ds-text-muted);font-size:13px;line-height:1.5}.tf-ai-lock svg{flex:none;margin-top:2px}.tf-ai-summary--canvas .tf-ai-copy-status{min-height:4.5rem}.tf-ai-copy-bar{position:sticky;bottom:calc(var(--tf-nav-clearance, 64px + env(safe-area-inset-bottom)) + 8px);z-index:4;padding:8px 4px;background:linear-gradient(to bottom,transparent,var(--ds-bg) 30%)}:root[data-layout=canvas] .tf-ai-copy-bar .ds-button{width:100%;min-height:54px;border-radius:14px;font-size:17px;font-weight:700}:root[data-layout=canvas] .tf-ai-copy-bar .ds-button[data-copied]{--btn-bg: var(--ds-ai-copied);--btn-edge: var(--ds-ai-copied);--btn-fg: var(--ds-ai-copied-ink)}.tf-ai-none{display:grid;justify-items:start;gap:12px;padding:18px;border:1px solid var(--ds-ai-card-edge);border-radius:20px;background:var(--ds-ai-card)}.tf-ai-none p{margin:0;font-size:15px;line-height:1.6}:root[data-layout=canvas] .tf-me-page--ai>.tf-actions .ds-button{width:100%}:root[data-layout=canvas] .tf-page.tf-canvas-analysis{gap:16px;padding-inline:20px}.tf-analysis-chips{margin:0;padding:0;list-style:none}.tf-analysis-note{margin:0;padding:0 4px;color:var(--ds-text-muted);font-size:13px;line-height:1.5}.tf-analysis-next{display:grid;grid-template-columns:52px minmax(0,1fr);align-items:center;gap:12px 14px;padding:16px;border-radius:20px;background:var(--ds-review-banner)}.tf-analysis-next-cast{display:block}.tf-analysis-next-cast svg{display:block;width:52px;height:auto}.tf-analysis-next-text{display:grid;gap:4px;min-width:0;margin:0}.tf-analysis-next-text strong{color:var(--ds-text);font-size:18px;font-weight:800;line-height:1.35}.tf-analysis-next-text>span{color:var(--ds-text-muted);font-size:13px;line-height:1.5}.tf-analysis-next-text>.tf-analysis-eyebrow{color:var(--ds-brand-ink);font-size:12px;font-weight:700}.tf-analysis-next-actions{display:grid;grid-column:1 / -1;gap:8px}:root[data-layout=canvas] .tf-analysis-next-actions .ds-button{width:100%;min-height:48px;font-size:15px}.tf-analysis-section{display:grid;gap:6px}.tf-analysis-section>h2{margin:4px 0 0;padding:0 4px;color:var(--ds-text);font-size:16px;font-weight:700}.tf-analysis-section>.tf-fineprint{margin:2px 0 0;padding:0 4px;line-height:1.5}.tf-analysis-details{display:grid;gap:10px;margin:4px 0 0;padding:0;list-style:none}.tf-analysis-detail{display:grid;gap:6px;padding:14px 16px;border:1px solid var(--ds-word-card-edge);border-radius:16px}.tf-analysis-detail[data-type=listen-gap]{--dot: var(--ds-dot-listen-gap)}.tf-analysis-detail[data-type=listen-choose]{--dot: var(--ds-dot-listen-choose)}.tf-analysis-detail[data-type=read-tfng]{--dot: var(--ds-dot-read-tfng)}.tf-analysis-detail[data-type=read-gap]{--dot: var(--ds-dot-read-gap)}.tf-analysis-detail p{margin:0;color:var(--ds-text);font-size:14px;line-height:1.5}.tf-analysis-detail>p.tf-canvas-mistake-meta{color:var(--ds-chip-ink);font-size:12px}.tf-analysis-detail>p.tf-analysis-muted{color:var(--ds-text-muted);font-size:13px}.tf-analysis-lines{display:grid;gap:2px;margin:0;padding:0;list-style:none;color:var(--ds-text);font-size:14px;font-weight:600;line-height:1.5}.tf-analysis-facts{display:grid;margin:0;padding:0 4px}.tf-analysis-facts>div{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:40px;color:var(--ds-text);font-size:15px}.tf-analysis-facts>div:not(:last-child){border-bottom:1px solid var(--ds-row-line)}.tf-analysis-facts>div[data-sub] dt{padding-left:16px;color:var(--ds-text-muted);font-size:14px}.tf-analysis-facts dd{margin:0;font-weight:700;font-variant-numeric:tabular-nums}.tf-analysis-weeks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:4px 0 0;padding:0 4px;list-style:none}.tf-analysis-weeks li{display:grid;justify-items:center;gap:6px}.tf-analysis-week-count{color:var(--ds-text);font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}.tf-analysis-weeks li[data-empty] .tf-analysis-week-count{color:var(--ds-text-muted);font-weight:500}.tf-analysis-week-track{display:flex;align-items:flex-end;width:28px;height:88px;overflow:hidden;border-radius:8px;background:var(--ds-meter-open)}.tf-analysis-week-bar{width:100%;border-radius:8px;background:var(--ds-brand)}.tf-analysis-week-label{color:var(--ds-text-muted);font-size:12px;font-variant-numeric:tabular-nums}.tf-analysis-entry{display:flex;align-items:center;gap:12px;box-sizing:border-box;width:100%;min-height:64px;padding:12px 14px 12px 16px;border:1px solid var(--ds-word-card-edge);border-radius:16px;background:var(--ds-surface);color:var(--ds-text);font:inherit;text-align:start;cursor:pointer}.tf-analysis-entry:focus-visible{outline:3px solid var(--ds-focus);outline-offset:2px}.tf-analysis-entry-text{display:grid;flex:1 1 auto;gap:2px;min-width:0}.tf-analysis-entry-text strong{font-size:15px;font-weight:700}.tf-analysis-entry-text span{color:var(--ds-text-muted);font-size:13px;line-height:1.4}.tf-analysis-entry svg{flex:none;color:var(--ds-text-muted)}.tf-canvas-mistake-note{color:var(--ds-text-muted);font-size:13px;line-height:1.45}:root[data-layout=canvas] .tf-page.tf-canvas-learning{gap:16px}:root[data-layout=canvas] .tf-learning-hello{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:20px;background:var(--ds-ai-bubble);color:var(--ds-ai-bubble-ink)}:root[data-layout=canvas] .tf-learning-hello p{margin:0;font-size:14px;line-height:1.5}:root[data-layout=canvas] .tf-learning-hello-cast{flex:none}:root[data-layout=canvas] .tf-learning-hello-cast svg{display:block;width:48px;height:auto}:root[data-layout=canvas] .tf-learning-section{display:grid;gap:8px}:root[data-layout=canvas] .tf-learning-section>h2{margin:4px 0 0;padding:0 4px;color:var(--ds-text);font-size:16px;font-weight:700}:root[data-layout=canvas] .tf-learning-empty{margin:0;padding:0 4px;color:var(--ds-text-muted);font-size:13px;line-height:1.5}:root[data-layout=canvas] .tf-learning-cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}:root[data-layout=canvas] .tf-learning-card{display:grid;gap:6px;min-width:0;padding:14px 16px;border:1px solid var(--ds-word-card-edge);border-radius:18px;background:var(--ds-surface)}:root[data-layout=canvas] .tf-learning-card[data-kind=weakness]{border-color:transparent;background:var(--ds-review-banner)}:root[data-layout=canvas] .tf-learning-card[data-direction=down]{border-color:transparent;background:var(--ds-warn-soft)}:root[data-layout=canvas] .tf-learning-card[data-kind=strength],:root[data-layout=canvas] .tf-learning-card[data-direction=up]{border-color:transparent;background:var(--ds-ok-soft)}:root[data-layout=canvas] .tf-learning-card[data-kind=notice]{border-color:var(--ds-ai-card-edge);background:var(--ds-ai-card)}:root[data-layout=canvas] .tf-learning-tag{margin:0;color:var(--ds-brand-ink);font-size:12px;font-weight:700}:root[data-layout=canvas] .tf-learning-card[data-direction=down] .tf-learning-tag{color:var(--ds-warn-ink)}:root[data-layout=canvas] .tf-learning-card[data-kind=strength] .tf-learning-tag,:root[data-layout=canvas] .tf-learning-card[data-direction=up] .tf-learning-tag{color:var(--ds-ok-ink)}:root[data-layout=canvas] .tf-learning-line{margin:0;color:var(--ds-text);font-size:15px;font-weight:600;line-height:1.5;overflow-wrap:anywhere}:root[data-layout=canvas] .tf-learning-detail{margin:0;color:var(--ds-text-muted);font-size:13px;line-height:1.5;overflow-wrap:anywhere}:root[data-layout=canvas] .tf-learning-card .ds-button,:root[data-layout=canvas] .tf-learning-ai-weak .ds-button{width:100%;height:auto;min-height:48px;margin-top:4px;font-size:15px;white-space:normal}:root[data-layout=canvas] .tf-learning-ai-status p{margin:0;padding:0 4px;color:var(--ds-text-muted);font-size:14px;line-height:1.5}:root[data-layout=canvas] .tf-learning-ai-card{display:grid;gap:12px;min-width:0;padding:16px;border:1px solid var(--ds-ai-card-edge);border-radius:20px;background:var(--ds-ai-card)}:root[data-layout=canvas] .tf-learning-ai-card[data-stale]{opacity:.72}:root[data-layout=canvas] .tf-learning-ai-card p{margin:0;overflow-wrap:anywhere}:root[data-layout=canvas] .tf-learning-ai-overview{color:var(--ds-text);font-size:15px;font-weight:600;line-height:1.55}:root[data-layout=canvas] .tf-learning-ai-weak{display:grid;gap:12px;margin:0;padding:0;list-style:none}:root[data-layout=canvas] .tf-learning-ai-weak li{display:grid;gap:4px;padding-top:12px;border-top:1px solid var(--ds-row-line)}:root[data-layout=canvas] .tf-learning-ai-weak strong{color:var(--ds-text);font-size:15px;font-weight:700}:root[data-layout=canvas] .tf-learning-ai-weak p{color:var(--ds-text);font-size:14px;line-height:1.55}:root[data-layout=canvas] .tf-learning-ai-weak .tf-learning-ai-next{color:var(--ds-brand-ink);font-weight:600}:root[data-layout=canvas] .tf-learning-ai-good{display:grid;gap:6px;margin:0;padding:12px 0 0;border-top:1px solid var(--ds-row-line);list-style:none}:root[data-layout=canvas] .tf-learning-ai-good li{display:grid;gap:2px;font-size:14px;line-height:1.5}:root[data-layout=canvas] .tf-learning-ai-good strong{color:var(--ds-ok-ink);font-weight:700}:root[data-layout=canvas] .tf-learning-ai-good span{color:var(--ds-text)}:root[data-layout=canvas] .tf-learning-ai-focus{display:grid;gap:2px;padding:12px 14px;border-radius:14px;background:var(--ds-surface);color:var(--ds-text);font-size:14px;line-height:1.55}:root[data-layout=canvas] .tf-learning-ai-focus strong{color:var(--ds-brand-ink);font-size:12px;font-weight:700}:root[data-layout=canvas] .tf-learning-ai-when{color:var(--ds-text-muted);font-size:12px}:root[data-layout=canvas] .tf-learning-ai .tf-learning-refresh{justify-self:start;gap:6px;min-height:44px}:root[data-layout=canvas] .tf-learning-privacy{margin:0;padding:0 4px;color:var(--ds-text-muted);font-size:12px;line-height:1.5}:root[data-layout=canvas] .tf-learning-fineprint{margin:0;padding:0 4px;line-height:1.5}.tf-canvas-hero-hop{grid-row:2;grid-column:1;justify-self:center;width:min(350px,calc(100% + 36px));margin-top:8px}:root[data-layout=canvas] .tf-canvas-set-result .tf-set-score{position:relative}.tf-set-score-letter{position:absolute;left:18px;bottom:10px;width:76px;height:82px}.tf-canvas-set-result .tf-set-score>:is(strong,span:not(.tf-set-score-letter)){position:relative}@media(max-width:360px){.tf-set-score-letter{left:10px;width:56px;height:61px}}:root[data-layout=canvas] .tf-practice-switch .ds-chip[aria-checked=true],:root[data-layout=canvas] .tf-practice-scope-chips .ds-chip[aria-checked=true]{box-shadow:var(--ds-segment-shadow),inset 0 -3px color-mix(in srgb,var(--ds-brand) 14%,transparent)}:root[data-layout=canvas] .tf-practice-scope{display:grid;gap:6px}:root[data-layout=canvas] .tf-practice-scope-row{display:flex;align-items:center;gap:8px}:root[data-layout=canvas] .tf-practice-scope-chips{flex:1 1 auto;min-width:0}:root[data-layout=canvas] .tf-practice-scope-chips .ds-chip{gap:5px;padding:0 4px;font-size:14px;line-height:1.25;text-align:center;white-space:nowrap}@media(max-width:340px){:root[data-layout=canvas] .tf-practice-scope-chips .ds-chip{gap:4px;font-size:13px}}:root[data-layout=canvas] .tf-practice-scope-chips .ds-chip svg{display:block;flex:none;width:14px;height:14px;stroke-width:2.6}:root[data-layout=canvas] .tf-practice-scope-chips .ds-chip[aria-checked=true]{color:var(--ds-brand-ink)}:root[data-layout=canvas] .tf-practice-scope-edit{flex:none;display:inline-flex;align-items:center;gap:2px;min-height:44px;box-sizing:border-box;padding:0 2px 0 8px;border-radius:8px;color:var(--ds-brand-ink);font-size:14px;font-weight:700;text-decoration:none;-webkit-tap-highlight-color:transparent}:root[data-layout=canvas] .tf-practice-scope-edit:focus-visible{outline:3px solid var(--ds-focus);outline-offset:2px}:root[data-layout=canvas] .tf-practice-scope-hint{margin:0 0 0 4px;color:var(--ds-text-muted);font-size:12px;font-weight:500;line-height:1.5}.tf-canvas-practice-banner{position:relative;display:flex;align-items:center;min-height:88px;box-sizing:border-box;overflow:hidden;padding:0 16px 0 88px;border-radius:20px;background:var(--ds-hero-fill);color:var(--ds-hero-ink)}.tf-canvas-practice-cast{position:absolute;top:9px;left:8px;transform-origin:50% 100%;transition:transform .12s ease-out}.tf-canvas-practice-cast .tf-cast-letter{transform:rotate(-8deg)}.tf-canvas-practice-text{display:grid;gap:3px;min-width:0}:root[data-layout=canvas] .tf-canvas-practice-text h2{margin:0;color:var(--ds-hero-ink);font-size:17px;font-weight:800;line-height:normal;text-wrap:balance}.tf-canvas-practice-text p{margin:0;color:var(--ds-hero-eyebrow);font-size:13px;font-weight:500}:root[data-layout=canvas] .tf-canvas-practice .tf-practice-topics{gap:20px}:root[data-layout=canvas] .tf-canvas-practice .tf-topic-groups{gap:20px}:root[data-layout=canvas] .tf-canvas-practice .tf-topic-group{gap:10px}:root[data-layout=canvas] .tf-canvas-practice .tf-practice-group:not(.tf-practice-topics){margin-top:12px}:root[data-layout=canvas] .tf-canvas-practice .tf-canvas-domain-title{margin-left:4px;gap:4px 8px;font-size:15px}:root[data-layout=canvas] .tf-canvas-practice .tf-domain-note{font-size:12px}.tf-canvas-practice .tf-canvas-topics{gap:9px}.tf-canvas-practice .tf-canvas-topic{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:1px;padding:0 28px 0 72px;text-align:start}.tf-canvas-practice .tf-canvas-topic-letter{position:absolute;top:6px;left:10px;width:54px;height:59px;margin:0;transform:none;transform-origin:50% 100%;transition:transform .12s ease-out}.tf-canvas-practice .tf-canvas-topic-letter svg{display:block;width:54px;height:59px;transform:rotate(var(--tilt))}.tf-canvas-practice .tf-canvas-topic-name,.tf-canvas-practice .tf-canvas-topic-status{max-width:100%;line-height:normal;overflow-wrap:anywhere}.tf-canvas-practice .tf-canvas-topic-name{text-wrap:balance}@media(max-width:360px){.tf-canvas-practice .tf-canvas-topic{padding:0 26px 0 62px}.tf-canvas-practice .tf-canvas-topic-letter{left:6px}}:root[data-layout=canvas] .tf-canvas-practice .tf-practice-group-title{font-size:17px;font-weight:800}.tf-canvas-practice .tf-practice-group-title{margin:0 0 0 4px}.tf-canvas-practice .tf-practice-group-head{margin:0 2px 0 4px}.tf-canvas-practice .tf-practice-group-head .tf-practice-group-title{margin:0}:root[data-layout=canvas] .tf-canvas-practice .tf-practice-chip{gap:4px}:root[data-layout=canvas] .tf-practice-chip svg{flex:none}.tf-canvas-practice .tf-types{gap:10px}:root[data-layout=canvas] .tf-app--wide .tf-canvas-practice .tf-types{grid-template-columns:minmax(0,1fr)}:root[data-layout=canvas] .tf-practice-mixed-tile svg{display:block}.tf-canvas-practice .tf-canvas-topic:active .tf-canvas-topic-letter,.tf-canvas-practice-cast:active{transform:scale(1.08,.9)}@media(prefers-reduced-motion:reduce){.tf-canvas-practice .tf-canvas-topic-letter,.tf-canvas-practice-cast{transition:none}.tf-canvas-practice .tf-canvas-topic:active .tf-canvas-topic-letter,.tf-canvas-practice-cast:active{transform:none}}.tf-hop-stage{position:relative;aspect-ratio:var(--hop-ratio);pointer-events:none}.tf-hop{position:absolute;display:block;aspect-ratio:120 / 130}.tf-hop-body{position:absolute;inset:0;transform-origin:50% 100%;animation:tf-hop-wave 3.6s ease-in-out var(--hop-delay) infinite}.tf-hop-art{display:block;width:100%;height:100%;transform:rotate(var(--tilt))}.tf-hop-art svg{display:block;width:100%;height:100%}.tf-hop-shadow{position:absolute;right:16%;bottom:-5px;left:16%;height:9px;border-radius:50%;background:var(--ds-letter-shadow);animation:tf-hop-shadow-wave 3.6s ease-in-out var(--hop-delay) infinite}.tf-hop-stage[data-hop=cheer] .tf-hop-body{animation:tf-hop-cheer 2.4s ease-in-out var(--hop-delay) infinite}.tf-hop-stage[data-hop=cheer] .tf-hop-shadow{right:18%;left:18%;background:var(--ds-letter-shadow-deep);animation:tf-hop-shadow-cheer 2.4s ease-in-out var(--hop-delay) infinite}@keyframes tf-hop-wave{0%{transform:translateY(0) scale(1)}8%{transform:translateY(2px) scale(1.06,.93)}24%{transform:translateY(-26px) scale(.97,1.05)}40%{transform:translateY(2px) scale(1.07,.92)}50%{transform:translateY(-5px) scale(.99,1.02)}60%{transform:translateY(0) scale(1)}to{transform:translateY(0) scale(1)}}@keyframes tf-hop-shadow-wave{0%{transform:scaleX(1);opacity:1}8%{transform:scaleX(1.06);opacity:1}24%{transform:scaleX(.6);opacity:.45}40%{transform:scaleX(1.08);opacity:1}60%{transform:scaleX(1);opacity:1}to{transform:scaleX(1);opacity:1}}@keyframes tf-hop-cheer{0%{transform:translateY(0) scale(1)}10%{transform:translateY(3px) scale(1.07,.92)}30%{transform:translateY(-24px) scale(.97,1.05)}50%{transform:translateY(3px) scale(1.08,.91)}62%{transform:translateY(-6px) scale(.99,1.02)}74%{transform:translateY(0) scale(1)}to{transform:translateY(0) scale(1)}}@keyframes tf-hop-shadow-cheer{0%{transform:scaleX(1);opacity:1}10%{transform:scaleX(1.06);opacity:1}30%{transform:scaleX(.6);opacity:.4}50%{transform:scaleX(1.1);opacity:1}74%{transform:scaleX(1);opacity:1}to{transform:scaleX(1);opacity:1}}.tf-lm{transform-origin:50% 100%}.tf-lm-letter{display:block;aspect-ratio:120 / 130;pointer-events:none}.tf-lm-slot{position:absolute}.tf-lm-letter>.tf-lm-art{display:block;width:100%;height:100%;transform:rotate(var(--tilt, 0deg))}.tf-lm-art svg{display:block;width:100%;height:100%}.tf-lm-letter:has(>.tf-cast){pointer-events:auto}.tf-lm-letter>.tf-cast{display:flex;width:100%;height:100%}.tf-lm-letter .tf-cast-letter{width:100%;height:100%;transform:rotate(var(--tilt, 0deg))}.tf-lm-letter .tf-cast .lt{width:100%;height:100%}.tf-hop-once{animation:tf-lm-hop .9s ease-out var(--lm-delay, .25s) both}.tf-wiggle-once{animation:tf-lm-wiggle .9s ease-in-out var(--lm-delay, .25s) both}.tf-pop-in{animation:tf-lm-pop .5s cubic-bezier(.3,1.4,.5,1) var(--lm-delay, 0s) both}.tf-breathe{animation:tf-lm-breathe 3.4s ease-in-out var(--lm-delay, 0s) infinite}.tf-wiggle-breathe{animation:tf-lm-wiggle .9s ease-in-out .25s both,tf-lm-breathe 3.4s ease-in-out 1.4s infinite}.tf-hop-loop{animation:tf-lm-hop7 7s ease-in-out 1s infinite}.tf-empty-letter{width:84px}@keyframes tf-lm-hop{0%{transform:translateY(0) scale(1)}14%{transform:translateY(2px) scale(1.06,.93)}38%{transform:translateY(var(--hop, -20px)) scale(.97,1.05)}62%{transform:translateY(2px) scale(1.07,.92)}82%{transform:translateY(-4px) scale(.99,1.02)}to{transform:translateY(0) scale(1)}}@keyframes tf-lm-wiggle{0%{transform:rotate(0)}12%{transform:rotate(-7deg)}28%{transform:rotate(7deg)}44%{transform:rotate(-7deg)}60%{transform:rotate(7deg)}76%{transform:rotate(-7deg)}88%{transform:rotate(4deg)}to{transform:rotate(0)}}@keyframes tf-lm-pop{0%{transform:scale(.6);opacity:0}60%{transform:scale(1.08);opacity:1}to{transform:scale(1);opacity:1}}@keyframes tf-lm-breathe{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-3px) scale(1.04)}}@keyframes tf-lm-hop7{0%{transform:translateY(0) scale(1)}2%{transform:translateY(2px) scale(1.06,.93)}5.5%{transform:translateY(-20px) scale(.97,1.05)}9%{transform:translateY(2px) scale(1.07,.92)}11.5%{transform:translateY(-4px) scale(.99,1.02)}14%{transform:translateY(0) scale(1)}to{transform:translateY(0) scale(1)}}@media(prefers-reduced-motion:reduce){.tf-hop-body,.tf-hop-shadow,.tf-hop-stage[data-hop=cheer] .tf-hop-body,.tf-hop-stage[data-hop=cheer] .tf-hop-shadow,.tf-hop-once,.tf-wiggle-once,.tf-pop-in,.tf-breathe,.tf-wiggle-breathe,.tf-hop-loop{animation:none}}.tf-canvas-avatar-tile-letter{width:36px}:root[data-layout=canvas] .tf-canvas-goal .tf-canvas-switch-row{margin-block:-6px -4px}:root[data-layout=canvas] .tf-goal-day{display:flex;align-items:center;gap:24px;min-height:100px;box-sizing:border-box;padding:6px 18px;border-radius:22px;background:linear-gradient(135deg,var(--ds-topic-grape) 0%,var(--ds-topic-sky) 100%)}:root[data-layout=canvas] .tf-goal-day-tile{position:relative;flex:none;width:66px;height:88px}:root[data-layout=canvas] .tf-goal-day-paper{position:absolute;inset:6px 0 0;display:flex;flex-direction:column;align-items:center;overflow:hidden;border-radius:16px;background:var(--ds-surface);box-shadow:0 3px color-mix(in srgb,var(--ds-brand) 25%,var(--ds-surface)),0 10px 18px color-mix(in srgb,var(--ds-brand) 16%,transparent)}:root[data-layout=canvas] .tf-goal-day-month{display:flex;flex:none;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:24px;padding-top:4px;background:var(--ds-brand);color:var(--ds-on-brand);font-size:12px;font-weight:800}:root[data-layout=canvas] .tf-goal-day-paper>strong{margin-top:5px;font-size:30px;font-weight:900;line-height:1}:root[data-layout=canvas] .tf-goal-day-week{margin-top:3px;color:var(--ds-text-muted);font-size:11px;font-weight:700}:root[data-layout=canvas] .tf-goal-day-ring{position:absolute;top:0;left:14px;width:7px;height:15px;border-radius:4px;background:var(--ds-hero-eyebrow)}:root[data-layout=canvas] .tf-goal-day-ring+.tf-goal-day-ring{right:14px;left:auto}:root[data-layout=canvas] .tf-goal-day-peek{position:absolute;top:-12px;right:-18px;transform:rotate(14deg)}:root[data-layout=canvas] .tf-goal-day-text{display:flex;flex:1 1 auto;flex-direction:column;gap:4px;min-width:0}:root[data-layout=canvas] .tf-goal-day-text>strong{font-size:16px;font-weight:800;line-height:1.3}:root[data-layout=canvas] .tf-goal-day-text>strong>span{display:inline-block}:root[data-layout=canvas] .tf-goal-day-pill{display:inline-flex;align-items:center;align-self:flex-start;gap:5px;box-sizing:border-box;min-height:26px;padding:0 10px 0 8px;border-radius:999px;background:var(--ds-surface);color:var(--ds-brand-ink);font-size:13px;font-weight:700}:root[data-layout=canvas] .tf-goal-day-pill svg{flex:none;width:14px;height:14px;stroke-width:2.4}:root[data-layout=canvas] .tf-goal-day-pill[data-wrong]{color:var(--ds-sheet-wrong-ink)}:root[data-layout=canvas] .tf-goal-day-note{color:var(--ds-text-muted);font-size:13px;line-height:1.5}:root[data-layout=canvas] .tf-goal-cal{box-sizing:border-box;padding:8px 12px 12px;border:1px solid var(--ds-border);border-radius:22px;background:var(--ds-surface)}@media(max-width:359px){:root[data-layout=canvas] .tf-goal-cal{padding-inline:4px}}:root[data-layout=canvas] .tf-goal-cal[data-off] :is(.tf-goal-cal-step,.tf-goal-cal-day){opacity:.4}:root[data-layout=canvas] .tf-goal-cal[data-off] .tf-goal-cal-head h3{color:var(--ds-text-muted)}:root[data-layout=canvas] .tf-goal-cal-head{display:flex;align-items:center;justify-content:space-between;height:44px}:root[data-layout=canvas] .tf-goal-cal-head h3{margin:0;font-size:16px;font-weight:800}:root[data-layout=canvas] .tf-goal-cal-step{display:flex;align-items:center;justify-content:center;flex:none;width:44px;height:44px;padding:0;border:0;border-radius:14px;background:transparent;color:var(--ds-text);cursor:pointer;-webkit-tap-highlight-color:transparent}:root[data-layout=canvas] .tf-goal-cal-step svg{width:20px;height:20px;stroke-width:2.2}:root[data-layout=canvas] .tf-goal-cal-step[aria-disabled=true]{color:var(--ds-text-subtle);opacity:.4;cursor:default}:root[data-layout=canvas] .tf-goal-cal-step:disabled,:root[data-layout=canvas] .tf-goal-cal-day:disabled{cursor:default}:root[data-layout=canvas] .tf-goal-cal-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));align-items:center;height:26px;color:var(--ds-text-muted);font-size:12px;font-weight:700;text-align:center}:root[data-layout=canvas] .tf-goal-cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px 0}:root[data-layout=canvas] .tf-goal-cal-day{position:relative;display:flex;align-items:center;justify-content:center;box-sizing:border-box;height:44px;padding:0;border:0;border-radius:15px;background:transparent;color:var(--ds-text);font:inherit;font-size:15px;font-variant-numeric:tabular-nums;font-weight:600;-webkit-tap-highlight-color:transparent}:root[data-layout=canvas] .tf-goal-cal-day[data-muted]{color:var(--ds-text-subtle);font-weight:500}:root[data-layout=canvas] button.tf-goal-cal-day{cursor:pointer;transition:transform var(--press-out) var(--ds-press-spring)}:root[data-layout=canvas] button.tf-goal-cal-day:active:not(:disabled){transform:scale(var(--press-scale));transition-duration:var(--press-in);transition-timing-function:var(--ds-press-in-ease)}:root[data-layout=canvas] .tf-goal-cal-day[aria-pressed=true]{background:linear-gradient(160deg,color-mix(in srgb,var(--ds-brand) 87%,var(--ds-tick)) 0%,var(--ds-brand) 100%);box-shadow:inset 0 -4px color-mix(in srgb,var(--ds-brand-ledge) 60%,transparent),0 5px 10px var(--ds-brand-glow);color:var(--ds-on-brand);font-size:16px;font-weight:800}:root[data-layout=canvas] .tf-goal-cal-shine{position:absolute;top:5px;left:8px;width:12px;height:6px;border-radius:6px;background:var(--ds-tick-open);transform:rotate(-20deg)}:root[data-layout=canvas] .tf-goal-cal-step:focus-visible,:root[data-layout=canvas] .tf-goal-cal-day:focus-visible{outline:3px solid var(--ds-focus);outline-offset:2px}@media(forced-colors:active){:root[data-layout=canvas] .tf-goal-cal-day[aria-pressed=true]{background:Highlight;color:HighlightText;forced-color-adjust:none}:root[data-layout=canvas] .tf-goal-cal-day[data-muted]{color:GrayText}}@media(min-width:361px){:root[data-layout=canvas] .tf-ai-hello .tf-ai-bubble{margin-bottom:8px;padding:11px 14px}}:root[data-layout=canvas] .tf-aisum-card{display:grid;gap:14px;min-width:0;padding:14px 16px 16px;border:1px solid var(--ds-ai-card-edge);border-radius:22px;background:var(--ds-ai-card)}:root[data-layout=canvas] .tf-aisum-head{display:flex;align-items:center;justify-content:space-between;gap:8px}:root[data-layout=canvas] .tf-aisum-head-title{display:inline-flex;align-items:center;gap:6px;color:var(--ds-brand-ink);font-size:13px;font-weight:700}:root[data-layout=canvas] .tf-aisum-head-note{color:var(--ds-text-muted);font-size:12px;font-weight:600}:root[data-layout=canvas] .tf-aisum-row{display:flex;align-items:flex-start;gap:12px;min-width:0}:root[data-layout=canvas] .tf-aisum-tile{display:flex;flex:none;align-items:center;justify-content:center;width:28px;height:28px;border-radius:9px}:root[data-layout=canvas] .tf-aisum-body{display:grid;flex:1 1 0;gap:2px;min-width:0}:root[data-layout=canvas] .tf-aisum-body h3{margin:0;font-size:14px;font-weight:700;line-height:1.6}:root[data-layout=canvas] .tf-aisum-body p{margin:0;font-size:14px;line-height:1.6;overflow-wrap:anywhere}:root[data-layout=canvas] .tf-aisum-row[data-kind=request]{padding:12px;border-radius:16px;background:var(--ds-ai-bubble);color:var(--ds-ai-bubble-ink)}:root[data-layout=canvas] .tf-aisum-row[data-kind=request] p{font-weight:600}:root[data-layout=canvas] .tf-aisum-privacy{display:flex;align-items:flex-start;gap:8px;margin:0;padding:11px 14px;border-radius:14px;background:var(--ds-topic-mint);color:var(--ds-more-mint-ink);font-size:13px;line-height:1.5}:root[data-layout=canvas] .tf-aisum-privacy svg{flex:none;margin-top:2px}:root[data-layout=canvas] .tf-ai-summary--canvas .tf-ai-copy-status{min-height:0}:root[data-layout=canvas] .tf-ai-hello-letter{display:flex;flex:none;transform-origin:50% 100%}:root[data-layout=canvas] .tf-ai-hop-once{animation:tf-ai-hop .9s ease-out .25s both}@keyframes tf-ai-hop{0%{transform:translateY(0) scale(1)}14%{transform:translateY(2px) scale(1.06,.93)}38%{transform:translateY(var(--hop, -20px)) scale(.97,1.05)}62%{transform:translateY(2px) scale(1.07,.92)}82%{transform:translateY(-4px) scale(.99,1.02)}to{transform:translateY(0) scale(1)}}@media(prefers-reduced-motion:reduce){:root[data-layout=canvas] .tf-ai-hop-once{animation:none}}:root[data-layout=canvas] .tf-page.tf-canvas-analysis{gap:14px}.tf-ma-lede{margin:0;color:var(--ds-text-muted);font-size:13px;line-height:1.5}.tf-ma-tiles{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:8px;margin:0;padding:0;list-style:none}.tf-ma-tiles li{display:flex;flex-direction:column;gap:2px;box-sizing:border-box;min-width:0;padding:12px;border-radius:16px}.tf-ma-tile-label{color:var(--ds-chip-ink);font-size:12px;font-weight:700}.tf-ma-tile-value{font-size:26px;font-weight:900;line-height:1.1;font-variant-numeric:tabular-nums}.tf-ma-tile-unit{margin-left:2px;font-size:13px;font-weight:700}.tf-ma-tiles li[data-tone=open]{background:var(--ds-placement-chip)}.tf-ma-tiles li[data-tone=open] .tf-ma-tile-value{color:var(--ds-placement-chip-ink)}.tf-ma-tiles li[data-tone=cleared]{background:var(--ds-more-mint)}.tf-ma-tiles li[data-tone=cleared] .tf-ma-tile-value{color:var(--ds-more-mint-ink)}.tf-ma-tiles li[data-tone=share]{background:var(--ds-brand-soft)}.tf-ma-tiles li[data-tone=share] .tf-ma-tile-value{color:var(--ds-brand-ink)}.tf-analysis-next{position:relative;display:flex;flex-direction:column;align-items:stretch;gap:8px;min-height:124px;padding:16px 16px 16px 104px;border-radius:20px}.tf-analysis-next-cast{position:absolute;top:20px;left:12px;transform:rotate(-6deg)}.tf-analysis-next-cast svg{width:78px}.tf-analysis-next-text>span:not(.tf-analysis-eyebrow){color:var(--ds-goal-hint-ink);line-height:1.55}.tf-analysis-next-actions{margin-left:-88px}:root[data-layout=canvas] .tf-analysis-next-actions .ds-button{min-height:44px;font-size:15px}:root[data-layout=canvas] .tf-analysis-next-actions .ds-button--primary{min-height:48px;font-size:16px}.tf-ma-section{display:grid;gap:14px}.tf-ma-section>h2{margin:6px 0 -2px 4px;color:var(--ds-text);font-size:18px;font-weight:800}.tf-ma-card{--dot: var(--ds-brand);--s1: color-mix(in srgb, var(--dot) 62%, var(--ds-text));--s2: var(--dot);--s3: color-mix(in srgb, var(--dot) 68%, var(--ds-surface));--s4: color-mix(in srgb, var(--dot) 48%, var(--ds-surface));--s5: color-mix(in srgb, var(--dot) 34%, var(--ds-surface));display:grid;gap:10px;box-sizing:border-box;min-width:0;padding:14px 16px;border:1px solid var(--ds-word-card-edge);border-radius:18px;background:var(--ds-surface)}.tf-ma-card[data-type=listen-gap]{--dot: var(--ds-dot-listen-gap)}.tf-ma-card[data-type=listen-choose]{--dot: var(--ds-dot-listen-choose)}.tf-ma-card[data-type=listen-choose-many]{--dot: var(--ds-dot-listen-choose-many)}.tf-ma-card[data-type=read-tfng]{--dot: var(--ds-dot-read-tfng)}.tf-ma-card[data-type=read-gap]{--dot: var(--ds-dot-read-gap)}.tf-ma-card[data-type=read-choose]{--dot: var(--ds-dot-read-choose)}.tf-ma-card[data-type=read-choose-many]{--dot: var(--ds-dot-read-choose-many)}.tf-ma-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.tf-ma-card-head h3{display:flex;align-items:center;gap:8px;margin:0;color:var(--ds-text);font-size:16px;font-weight:800}.tf-ma-dot{flex:none;width:10px;height:10px;border-radius:50%;background:var(--dot)}.tf-ma-card-count{color:var(--ds-chip-ink);font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;text-align:end}.tf-ma-change{display:flex;align-items:center;gap:4px;margin:-4px 0 0;color:var(--ds-text-muted);font-size:12px;font-weight:600}.tf-ma-change svg{flex:none}.tf-ma-change[data-direction=more]{color:var(--ds-missed-ink)}.tf-ma-change[data-direction=fewer]{color:var(--ds-sheet-right-ink)}.tf-ma-bar{display:flex;gap:2px;height:10px;border-radius:5px;overflow:hidden}.tf-ma-bar[data-thick]{height:12px;border-radius:6px}.tf-ma-bar>span{flex:1 1 0;min-width:3px}.tf-ma-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin:0;padding:0;list-style:none;color:var(--ds-chip-ink);font-size:12px;line-height:1.5}.tf-ma-legend[data-column]{flex-direction:column;flex-wrap:nowrap;gap:5px}.tf-ma-legend b{font-weight:800;font-variant-numeric:tabular-nums}.tf-ma-swatch{display:inline-block;width:10px;height:10px;margin-right:6px;border-radius:3px;vertical-align:-1px}.tf-ma-card [data-tone=s1]{background:var(--s1)}.tf-ma-card [data-tone=s2]{background:var(--s2)}.tf-ma-card [data-tone=s3]{background:var(--s3)}.tf-ma-card [data-tone=s4]{background:var(--s4)}.tf-ma-card [data-tone=s5]{background:var(--s5)}.tf-ma-card [data-tone=cleared]{background:var(--ds-ai-copied)}.tf-ma-card [data-tone=redone]{background:color-mix(in srgb,var(--ds-dot-listen-choose) 62%,var(--ds-surface))}.tf-ma-card [data-tone=waiting]{background:var(--ds-dot-listen-gap)}.tf-ma-card [data-tone=right]{background:var(--ds-dot-read-tfng)}.tf-ma-card [data-tone=wrong]{background:var(--ds-dot-listen-gap)}.tf-ma-tip{margin:0;padding:10px 12px;border-radius:12px;background:var(--ds-bg);color:var(--ds-chip-ink);font-size:13px;line-height:1.55}.tf-ma-tip b{color:var(--ds-brand-ink);font-weight:800}.tf-ma-aside{margin:0;color:var(--ds-text-muted);font-size:12px;line-height:1.55}.tf-ma-footnote{margin:-4px 0 0 4px;color:var(--ds-text-muted);font-size:12px;line-height:1.6}.tf-ma-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:12px}.tf-ma-pair[data-count="1"]{grid-template-columns:minmax(0,1fr)}.tf-ma-pair .tf-ma-card{padding:14px}.tf-ma-pair h3{margin:0;color:var(--ds-text);font-size:14px;font-weight:800}.tf-ma-time{display:grid;gap:4px}.tf-ma-time p{display:flex;justify-content:space-between;margin:0;color:var(--ds-chip-ink);font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}.tf-ma-track{display:block;height:8px;border-radius:4px;background:var(--ds-meter-open);overflow:hidden}.tf-ma-track>span{display:block;height:8px}.tf-ma-weeks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:end;gap:14px;box-sizing:border-box;padding:14px 16px;border:1px solid var(--ds-word-card-edge);border-radius:18px;background:var(--ds-surface)}.tf-ma-weeks>div{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0}.tf-ma-week-share{color:var(--ds-chip-ink);font-size:13px;font-weight:800;font-variant-numeric:tabular-nums}.tf-ma-week-bar{display:block;width:30px;border-radius:8px;background:var(--ds-cal-key-edge)}.tf-ma-weeks>div[data-now] .tf-ma-week-bar{background:var(--ds-brand)}.tf-ma-week-label{color:var(--ds-text-muted);font-size:12px;font-variant-numeric:tabular-nums}.tf-ma-week-count{color:var(--ds-text-muted);font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}.tf-ma-trend-text{margin:-4px 0 0 4px;color:var(--ds-chip-ink);font-size:13px;line-height:1.6}:root[data-layout=canvas] :is(.ds-button--primary,.ds-button--danger,.ds-button--success):not(:disabled,.ds-icon-button){border-color:transparent;background:linear-gradient(160deg,color-mix(in srgb,var(--btn-bg) 86%,var(--ds-jelly-white)) 0%,var(--btn-bg) 100%);box-shadow:inset 0 -4px color-mix(in srgb,var(--btn-bg) 62%,var(--ds-jelly-ink)),0 6px 12px color-mix(in srgb,var(--btn-bg) 30%,transparent)}:root[data-layout=canvas] :is(.ds-button--primary,.ds-button--danger,.ds-button--success).ds-button--large:not(:disabled){box-shadow:inset 0 -5px color-mix(in srgb,var(--btn-bg) 62%,var(--ds-jelly-ink)),0 6px 12px color-mix(in srgb,var(--btn-bg) 30%,transparent)}:root[data-layout=canvas] :is(.ds-button--primary,.ds-button--danger,.ds-button--success):not(:disabled,.ds-icon-button):before{content:"";position:absolute;left:14px;top:6px;width:16px;height:6px;border-radius:6px;background:color-mix(in srgb,var(--ds-jelly-white) 40%,transparent);transform:rotate(-12deg);pointer-events:none}:root[data-layout=canvas] :is(.ds-button--primary,.ds-button--danger,.ds-button--success).ds-button--compact:not(:disabled):before{left:10px;top:5px;width:12px;height:5px}:root[data-layout=canvas] :is(.ds-button--primary,.ds-button--danger,.ds-button--success):active:not(:disabled,.ds-icon-button){transform:translateY(2px);box-shadow:inset 0 -2px color-mix(in srgb,var(--btn-bg) 62%,var(--ds-jelly-ink)),0 2px 4px color-mix(in srgb,var(--btn-bg) 30%,transparent)}:root[data-layout=canvas] .ds-button--secondary:not(:disabled){box-shadow:inset 0 -3px color-mix(in srgb,currentColor var(--edge-mix, 16%),transparent)}:root[data-layout=canvas] .ds-button--secondary:active:not(:disabled){transform:translateY(2px);box-shadow:inset 0 -1px color-mix(in srgb,currentColor var(--edge-mix, 16%),transparent)}:root[data-layout=canvas] li.ds-card .ds-button--secondary:is(:not(:disabled),:active:not(:disabled)){box-shadow:none}:root[data-layout=canvas] :is(.tf-result--canvas>.tf-actions,.tf-canvas-drill-result-actions){--edge-mix: 8%}:root[data-layout=canvas] :is(.tf-canvas-goal-chips,.tf-level-chips) .ds-chip{box-shadow:inset 0 -3px color-mix(in srgb,var(--ds-text) 8%,transparent)}:root[data-layout=canvas] :is(.tf-canvas-goal-chips,.tf-level-chips) .ds-chip[aria-checked=true]{position:relative;border-color:transparent;background:linear-gradient(160deg,color-mix(in srgb,var(--ds-brand) 86%,var(--ds-jelly-white)) 0%,var(--ds-brand) 100%);color:var(--ds-on-brand);box-shadow:inset 0 -3px color-mix(in srgb,var(--ds-brand) 62%,var(--ds-jelly-ink)),0 4px 8px color-mix(in srgb,var(--ds-brand) 28%,transparent)}:root[data-layout=canvas] :is(.tf-canvas-goal-chips,.tf-level-chips) .ds-chip[aria-checked=true]:before{content:"";position:absolute;left:10px;top:5px;width:10px;height:5px;border-radius:5px;background:color-mix(in srgb,var(--ds-jelly-white) 40%,transparent);transform:rotate(-20deg);pointer-events:none}:root[data-layout=canvas] :is(.tf-practice-switch,.tf-canvas-segment) .ds-chip[aria-checked=true],:root[data-layout=canvas] .tf-review .tf-tab[aria-selected=true]{box-shadow:var(--ds-segment-shadow),inset 0 -3px color-mix(in srgb,var(--ds-brand) 14%,transparent)}:root[data-layout=canvas] .tf-survey{gap:20px}:root[data-layout=canvas] .tf-survey fieldset{display:flex;flex-wrap:wrap;gap:8px}:root[data-layout=canvas] .tf-survey legend{margin-bottom:2px;font-size:15px;font-weight:700;line-height:1.45}:root[data-layout=canvas] .tf-survey .tf-radio{position:relative;min-height:44px;padding:0 18px;border:0;border-radius:var(--ds-radius-pill);background:var(--ds-option);box-shadow:inset 0 -3px color-mix(in srgb,var(--ds-text) 8%,transparent);font-size:15px;font-weight:600}:root[data-layout=canvas] .tf-survey .tf-radio input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}:root[data-layout=canvas] .tf-survey .tf-radio:has(input:checked){background:linear-gradient(160deg,color-mix(in srgb,var(--ds-brand) 86%,var(--ds-jelly-white)) 0%,var(--ds-brand) 100%);color:var(--ds-on-brand);font-weight:700;box-shadow:inset 0 -3px color-mix(in srgb,var(--ds-brand) 62%,var(--ds-jelly-ink)),0 4px 8px color-mix(in srgb,var(--ds-brand) 28%,transparent)}:root[data-layout=canvas] .tf-survey .tf-radio:has(input:checked):before{content:"";position:absolute;left:10px;top:5px;width:10px;height:5px;border-radius:5px;background:color-mix(in srgb,var(--ds-jelly-white) 40%,transparent);transform:rotate(-12deg);pointer-events:none}:root[data-layout=canvas] .tf-survey .tf-actions{flex-wrap:nowrap;justify-content:stretch;margin-top:4px}:root[data-layout=canvas] .tf-survey .tf-actions .ds-button--primary{flex:1 1 auto}:root[data-layout=canvas] :is(.tf-survey,.tf-report) .tf-actions .ds-button--ghost{--btn-bg: var(--ds-surface);--btn-edge: var(--ds-border-strong);--btn-fg: var(--ds-text);flex:none;min-height:52px;padding-inline:18px;border-width:1.5px;box-shadow:inset 0 -3px color-mix(in srgb,currentColor 8%,transparent)}:root[data-layout=canvas] :is(.tf-survey,.tf-report) .tf-actions .ds-button--primary{min-height:52px}:root[data-layout=canvas] :where(.tf-backup-stat-icon,.tf-backup-hint-icon,.tf-about-badge,.tf-about-clear-badge,.tf-jelly-warn,.tf-aisum-tile,.tf-type-card>.tf-type-badge){--jt-base: var(--ds-jelly-tone-brand);--jt-top: var(--ds-jelly-tone-brand-top);--jt-edge: 3px;--jt-drop: 2px;--jt-blur: 4px;--jt-gloss-x: 5px;--jt-gloss-y: 4px;--jt-gloss-w: 8px;--jt-gloss-h: 4px;position:relative;background-color:var(--jt-base);background-image:linear-gradient(160deg,var(--jt-top) 0%,var(--jt-base) 100%);color:var(--ds-jelly-glyph);box-shadow:inset 0 calc(var(--jt-edge) * -1) 0 color-mix(in srgb,var(--jt-base) 62%,var(--ds-jelly-tile-ink)),0 var(--jt-drop) var(--jt-blur) color-mix(in srgb,var(--jt-base) 28%,transparent)}:root[data-layout=canvas] :where(.tf-backup-stat-icon,.tf-backup-hint-icon,.tf-about-badge,.tf-about-clear-badge,.tf-jelly-warn,.tf-aisum-tile,.tf-type-card>.tf-type-badge):before{content:"";position:absolute;left:var(--jt-gloss-x);top:var(--jt-gloss-y);width:var(--jt-gloss-w);height:var(--jt-gloss-h);border-radius:var(--jt-gloss-h);background:color-mix(in srgb,var(--ds-jelly-white) 40%,transparent);transform:rotate(-20deg);pointer-events:none}:root[data-layout=canvas] .tf-jelly-warn{--jt-gloss-x: 7px;--jt-gloss-y: 5px}:root[data-layout=canvas] .tf-backup-card-head .tf-backup-stat-icon{--jt-drop: 3px;--jt-blur: 6px;--jt-gloss-x: 7px;--jt-gloss-y: 5px;--jt-gloss-w: 10px;--jt-gloss-h: 5px}:root[data-layout=canvas] .tf-backup-hint-icon{--jt-drop: 3px;--jt-blur: 6px;--jt-gloss-x: 9px;--jt-gloss-y: 6px;--jt-gloss-w: 10px;--jt-gloss-h: 5px}:root[data-layout=canvas] :is(.tf-about-badge,.tf-about-clear-badge,.tf-type-badge){--jt-edge: 4px;--jt-drop: 3px;--jt-blur: 6px;--jt-gloss-x: 7px;--jt-gloss-y: 5px;--jt-gloss-w: 10px;--jt-gloss-h: 5px}:root[data-layout=canvas] .tf-about-clear-badge{--jt-gloss-x: 9px;--jt-gloss-y: 6px}:root[data-layout=canvas] :is(.tf-backup-stat-icon[data-tone=brand],.tf-aisum-row:is([data-kind=goal],[data-kind=intro]) .tf-aisum-tile){--jt-base: var(--ds-jelly-tone-brand);--jt-top: var(--ds-jelly-tone-brand-top)}:root[data-layout=canvas] :is(.tf-about-badge[data-tone=sky],.tf-aisum-row[data-kind=types] .tf-aisum-tile,.tf-type-card:is([data-type=read-gap],[data-type=read-choose])>.tf-type-badge){--jt-base: var(--ds-jelly-tone-sky);--jt-top: var(--ds-jelly-tone-sky-top)}:root[data-layout=canvas] :is(.tf-backup-stat-icon[data-tone=mint],.tf-backup-hint-icon,.tf-about-badge[data-tone=mint],.tf-aisum-row[data-kind=progress] .tf-aisum-tile,.tf-type-card[data-type=read-tfng]>.tf-type-badge){--jt-base: var(--ds-jelly-tone-mint);--jt-top: var(--ds-jelly-tone-mint-top)}:root[data-layout=canvas] :is(.tf-backup-stat-icon[data-tone=pink],.tf-about-badge[data-tone=pink],.tf-aisum-row[data-kind=mistake] .tf-aisum-tile,.tf-type-card[data-type=listen-gap]>.tf-type-badge){--jt-base: var(--ds-jelly-tone-pink);--jt-top: var(--ds-jelly-tone-pink-top)}:root[data-layout=canvas] :is(.tf-backup-stat-icon[data-tone=lemon],.tf-about-badge[data-tone=lemon],.tf-aisum-row[data-kind=request] .tf-aisum-tile,.tf-type-card[data-type=listen-choose]>.tf-type-badge){--jt-base: var(--ds-jelly-tone-amber);--jt-top: var(--ds-jelly-tone-amber-top)}:root[data-layout=canvas] :is(.tf-aisum-row[data-kind=words] .tf-aisum-tile,.tf-type-card[data-type=listen-choose-many]>.tf-type-badge){--jt-base: var(--ds-jelly-tone-amber-deep);--jt-top: var(--ds-jelly-tone-amber-deep-top)}:root[data-layout=canvas] :is(.tf-about-clear-badge,.tf-jelly-warn){--jt-base: var(--ds-jelly-tone-rose);--jt-top: var(--ds-jelly-tone-rose-top)}:root[data-layout=canvas] .tf-type-card[data-type=read-choose-many]>.tf-type-badge{--jt-base: var(--ds-jelly-tone-green);--jt-top: var(--ds-jelly-tone-green-top)}@media(prefers-reduced-motion:reduce){:root[data-layout=canvas] :is(.ds-button--primary,.ds-button--danger,.ds-button--success,.ds-button--secondary):active:not(:disabled){transform:none}}@media(forced-colors:active){:root[data-layout=canvas] :is(.ds-button--primary,.ds-button--danger,.ds-button--success):before,:root[data-layout=canvas] :is(.tf-canvas-goal-chips,.tf-level-chips) .ds-chip[aria-checked=true]:before,:root[data-layout=canvas] .tf-survey .tf-radio:has(input:checked):before{display:none}:root[data-layout=canvas] :where(.tf-backup-stat-icon,.tf-backup-hint-icon,.tf-about-badge,.tf-about-clear-badge,.tf-jelly-warn,.tf-aisum-tile,.tf-type-card>.tf-type-badge):before{display:none}:root[data-layout=canvas] :where(.tf-backup-stat-icon,.tf-backup-hint-icon,.tf-about-badge,.tf-about-clear-badge,.tf-jelly-warn,.tf-aisum-tile,.tf-type-card>.tf-type-badge){background-image:none;color:CanvasText;outline:1px solid ButtonText;outline-offset:-1px}:root[data-layout=canvas] .tf-survey .tf-radio{border:2px solid ButtonText}:root[data-layout=canvas] .tf-survey .tf-radio:has(input:checked){border-color:Highlight}}:root[data-layout=canvas]{--mk-track: color-mix(in srgb, var(--ds-brand) 20%, var(--ds-surface));--mk-done-top: color-mix(in srgb, var(--ds-sheet-right-button) 20%, var(--ds-right));--mk-done-bottom: color-mix(in srgb, var(--ds-sheet-right-button) 80%, var(--ds-right));--mk-done-edge: color-mix(in srgb, var(--ds-sheet-right-button) 60%, var(--ds-on-ok));--mk-done-glow: color-mix(in srgb, var(--ds-sheet-right-button) 30%, transparent);--mk-gloss: color-mix(in srgb, var(--ds-jelly-white) 45%, transparent);--mk-star: color-mix(in srgb, var(--ds-spark-amber) 40%, var(--ds-gold-ledge));--mk-star-off: color-mix(in srgb, var(--ds-text-subtle) 70%, var(--ds-surface))}.tf-unit-mark{display:grid;flex:none;place-items:center;width:22px;height:22px;box-sizing:border-box;pointer-events:none}.tf-unit-mark[data-size=tile]{position:absolute;top:8px;right:10px}.tf-mark-dot{display:block;width:10px;height:10px;box-sizing:border-box;border:2px solid var(--ds-brand);border-radius:50%}.tf-mark-ring{display:block;flex:none;width:22px;height:22px}.tf-mark-ring-track{stroke:var(--mk-track)}.tf-mark-ring-arc{stroke:var(--ds-brand)}.tf-mark-tick{position:relative;display:grid;place-items:center;width:22px;height:22px;border-radius:50%;color:var(--ds-sheet-right-button-ink);background:linear-gradient(160deg,var(--mk-done-top) 0%,var(--mk-done-bottom) 100%);box-shadow:inset 0 -2px 0 var(--mk-done-edge),0 2px 4px var(--mk-done-glow)}.tf-mark-tick:before{content:"";position:absolute;left:4px;top:3px;width:7px;height:3px;border-radius:3px;background:var(--mk-gloss);transform:rotate(-20deg)}.tf-mark-empty{display:block;width:20px;height:20px;box-sizing:border-box;border:2px solid color-mix(in srgb,var(--ds-text-subtle) 55%,var(--ds-surface));border-radius:50%;background:var(--ds-surface)}.tf-unit-mark[data-size=task]{width:30px;height:30px}.tf-unit-mark[data-size=task][data-state=in-progress]{border-radius:50%;background:var(--ds-tick)}.tf-unit-mark[data-size=task] .tf-mark-ring-track{stroke:color-mix(in srgb,var(--ds-tick-ink) 20%,var(--ds-tick))}.tf-unit-mark[data-size=task] .tf-mark-ring-arc{stroke:var(--ds-tick-ink)}.tf-unit-mark[data-size=task] .tf-mark-tick{width:30px;height:30px;box-shadow:inset 0 -3px 0 var(--mk-done-edge),0 2px 4px var(--mk-done-glow),0 0 0 2px var(--ds-tick)}.tf-unit-mark[data-size=task] .tf-mark-tick:before{left:5px;top:4px;width:10px}.tf-unit-mark[data-size=task] .tf-mark-empty{width:26px;height:26px;border-color:var(--ds-tick);background:var(--ds-tick-open)}.tf-canvas-topic[data-state=in-progress]{box-shadow:inset 0 0 0 2px var(--ds-brand)}.tf-canvas-topic[data-state=in-progress] .tf-canvas-topic-status{color:var(--ds-brand-ink);font-weight:700}.tf-canvas-topic[data-state=done]{background:color-mix(in srgb,var(--tile) 80%,var(--ds-bg))}.tf-canvas-words .tf-canvas-topic[data-state]{padding-right:36px}:root[data-layout=canvas] .tf-canvas-round[data-state=in-progress]{border-color:var(--ds-brand);background:var(--ds-option-picked)}.tf-canvas-round[data-state=in-progress] .tf-canvas-round-line{color:var(--ds-brand-ink);font-weight:700}.tf-canvas-round-end{display:inline-flex;flex:none;align-items:center;gap:10px}.tf-canvas-round-times{color:var(--ds-text-muted);font-weight:600}.tf-canvas-chapter-page .tf-round-row[data-mark=in-progress] .tf-round-status{color:var(--ds-brand-ink)}.tf-round-end{display:inline-flex;align-items:center;gap:10px}:root[data-layout=canvas] .tf-canvas-practice .tf-type-card[data-state=in-progress]{border-color:var(--ds-brand);box-shadow:inset 0 0 0 1px var(--ds-brand)}.tf-type-resume{color:var(--ds-brand-ink);font-size:13px;font-weight:700;line-height:1.4}.tf-type-side{display:flex;flex:none;flex-direction:column;align-items:flex-end;justify-content:space-between;align-self:stretch;gap:8px}.tf-type-continue,.tf-continue-go{position:relative;display:inline-flex;flex:none;align-items:center;justify-content:center;height:36px;padding:0 14px;box-sizing:border-box;border-radius:14px;background:linear-gradient(160deg,color-mix(in srgb,var(--ds-brand) 86%,var(--ds-jelly-white)) 0%,var(--ds-brand) 100%);box-shadow:inset 0 -4px color-mix(in srgb,var(--ds-brand) 62%,var(--ds-jelly-ink)),0 4px 8px color-mix(in srgb,var(--ds-brand) 28%,transparent);color:var(--ds-on-brand);font-size:14px;font-weight:700;white-space:nowrap}.tf-type-continue:before,.tf-continue-go:before{content:"";position:absolute;left:10px;top:5px;width:10px;height:5px;border-radius:5px;background:color-mix(in srgb,var(--ds-jelly-white) 40%,transparent);transform:rotate(-12deg)}.tf-type-continue{height:32px;padding:0 12px;font-size:13px}.tf-type-card:active .tf-type-continue,.tf-continue:active .tf-continue-go{transform:translateY(2px)}.tf-continue{display:flex;align-items:center;gap:12px;width:100%;min-height:68px;box-sizing:border-box;padding:0 12px 0 14px;border:0;border-radius:18px;background:var(--ds-surface);box-shadow:inset 0 0 0 2px var(--ds-brand);color:var(--ds-text);font:inherit;text-align:start;cursor:pointer;-webkit-tap-highlight-color:transparent}.tf-continue:focus-visible{outline:3px solid var(--ds-focus);outline-offset:2px}.tf-continue-text{display:grid;flex:1 1 auto;gap:2px;min-width:0}.tf-continue-title{font-size:15px;font-weight:800}.tf-continue-line{color:var(--ds-text-muted);font-size:13px;font-weight:500;line-height:1.4;overflow-wrap:anywhere}.tf-word-mark{display:inline-flex;flex:none;align-items:center;gap:8px}.tf-word-mark-stars{display:inline-flex;font-size:15px;letter-spacing:1px;line-height:1}.tf-word-mark-star{color:var(--mk-star-off)}.tf-word-mark-star[data-filled=true]{color:var(--mk-star)}.tf-word-mark-missed{display:inline-flex;align-items:center;gap:4px;color:var(--ds-placement-chip-ink);font-size:12px;font-weight:700;white-space:nowrap}.tf-word-mark-missed>i{display:block;width:8px;height:8px;border-radius:50%;background:var(--ds-badge)}.tf-word-mark-tick{position:relative;display:grid;flex:none;place-items:center;width:16px;height:16px;border-radius:50%;color:var(--ds-sheet-right-button-ink);background:linear-gradient(160deg,var(--mk-done-top) 0%,var(--mk-done-bottom) 100%);box-shadow:inset 0 -2px 0 var(--mk-done-edge),0 2px 4px var(--mk-done-glow)}.tf-word-mark-tick:before{content:"";position:absolute;left:3px;top:2px;width:5px;height:3px;border-radius:3px;background:var(--mk-gloss);transform:rotate(-20deg)}.tf-item-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--ds-radius-pill);background:var(--ds-chip);color:var(--ds-chip-ink);font-size:12px;font-weight:700;white-space:nowrap}.tf-item-chip[data-tone=right]{background:var(--ds-sheet-right);color:var(--ds-sheet-right-ink)}.tf-item-chip[data-tone=wrong]{background:var(--ds-sheet-wrong);color:var(--ds-sheet-wrong-ink)}.tf-item-chip[data-tone=redone]{background:var(--ds-brand-soft);color:var(--ds-brand-ink)}.tf-item-chip[data-tone=none]{padding-inline:0;background:none;color:var(--ds-text-muted);font-weight:500}.tf-chip-dot{display:block;width:6px;height:6px;border-radius:50%;background:currentColor}.tf-item-chip svg{flex:none}.tf-item-head>.tf-item-chip,.tf-item-head>.tf-item-date{margin-inline-start:auto}.tf-item-date{color:var(--ds-text-muted);font-weight:500}.tf-me-row-text:has(.tf-me-row-note){flex-wrap:wrap;row-gap:0}.tf-me-row-note{flex-basis:100%;order:3;margin-top:1px;color:var(--ds-text-muted);font-size:12px;font-weight:500}@media(prefers-reduced-motion:reduce){.tf-type-card:active .tf-type-continue,.tf-continue:active .tf-continue-go{transform:none}}@media(forced-colors:active){.tf-mark-tick:before,.tf-word-mark-tick:before,.tf-type-continue:before,.tf-continue-go:before{display:none}.tf-mark-ring-track{stroke:GrayText}.tf-mark-ring-arc{stroke:Highlight}.tf-mark-dot{border-color:Highlight}.tf-mark-tick,.tf-word-mark-tick{border:2px solid ButtonText}.tf-continue,.tf-canvas-topic[data-state=in-progress]{outline:2px solid Highlight}.tf-type-continue,.tf-continue-go{border:2px solid ButtonText}}@keyframes tf-nav-fade-in{0%{opacity:0}}@keyframes tf-nav-fade-out{to{opacity:0}}@keyframes tf-nav-in-from-right{0%{opacity:0;transform:translate(8px)}}@keyframes tf-nav-in-from-left{0%{opacity:0;transform:translate(-8px)}}@keyframes tf-nav-rise{0%{opacity:0;transform:translateY(12px)}}@keyframes tf-nav-slide-in{0%{transform:translate(100%)}}@keyframes tf-nav-recede{to{transform:translate(-24%);filter:brightness(.9)}}@keyframes tf-nav-slide-out{to{transform:translate(calc(100% - var(--nav-dx, 0px)))}}@keyframes tf-nav-return{0%{transform:translate(calc(-24% * (1 - var(--nav-p, 0))));filter:brightness(calc(.9 + .1 * var(--nav-p, 0)))}}@keyframes tf-nav-step-out{to{transform:translate(min(0px,calc(-30% - var(--nav-dx, 0px))))}}@keyframes tf-nav-step-return{0%{transform:translate(calc(-30% * (1 - var(--nav-p, 0))))}}:root[data-nav]::view-transition{pointer-events:none}:root[data-nav]::view-transition-old(root),:root[data-nav]::view-transition-new(root){mix-blend-mode:normal;animation-fill-mode:both;animation-duration:0s}:root[data-nav=tab-right]::view-transition-old(root),:root[data-nav=tab-left]::view-transition-old(root),:root[data-nav=fade]::view-transition-old(root){animation:tf-nav-fade-out .12s ease-out both}:root[data-nav=tab-right]::view-transition-new(root){animation:tf-nav-in-from-right .18s ease-out both}:root[data-nav=tab-left]::view-transition-new(root){animation:tf-nav-in-from-left .18s ease-out both}:root[data-nav=fade]::view-transition-new(root){animation:tf-nav-fade-in .18s ease-out both}:root[data-nav=rise]::view-transition-old(root){animation:tf-nav-fade-out .24s ease-out both}:root[data-nav=rise]::view-transition-new(root){animation:tf-nav-rise .24s ease-out both}:root[data-nav=push]::view-transition-old(root){animation:tf-nav-recede .32s var(--ds-ease-out) both}:root[data-nav=push]::view-transition-new(root){animation:tf-nav-slide-in .32s var(--ds-ease-out) both}:root[data-nav=pop]::view-transition-old(root){z-index:1;animation:tf-nav-slide-out .28s var(--ds-ease-out) both}:root[data-nav=pop]::view-transition-new(root){animation:tf-nav-return .28s var(--ds-ease-out) both}:root[data-nav=step-forward]::view-transition-old(root){animation:tf-nav-step-out .32s var(--ds-ease-out) both}:root[data-nav=step-forward]::view-transition-new(root){animation:tf-nav-slide-in .32s var(--ds-ease-out) both}:root[data-nav=step-back]::view-transition-old(root){z-index:1;animation:tf-nav-slide-out .32s var(--ds-ease-out) both}:root[data-nav=step-back]::view-transition-new(root){animation:tf-nav-step-return .32s var(--ds-ease-out) both}:root[data-nav-chrome] .tf-app>.tf-nav{view-transition-name:nav-capsule}:root[data-nav-chrome]::view-transition-group(nav-capsule){animation-duration:0s}:root[data-nav-chrome]::view-transition-old(nav-capsule){display:none}:root[data-nav-chrome]::view-transition-new(nav-capsule){animation:none;mix-blend-mode:normal}:root[data-nav^=step] .tf-canvas-dots,:root[data-nav^=step] .tf-step-dots{view-transition-name:nav-dots}:root[data-nav^=step]::view-transition-group(nav-dots),:root[data-nav^=step]::view-transition-old(nav-dots),:root[data-nav^=step]::view-transition-new(nav-dots){animation-duration:.2s}@keyframes tf-dot-grow{0%{transform:scaleX(.32)}}@media(prefers-reduced-motion:no-preference){:root[data-layout=canvas] .tf-canvas-dots span[data-on]{animation:tf-dot-grow .2s var(--ds-ease-out) backwards}:root[data-layout=canvas] .tf-step-dots li[data-state=current]{animation:tf-dot-grow .2s var(--ds-ease-out) backwards}}:root[data-layout=canvas] #root{touch-action:pan-y pinch-zoom}:root[data-swiping]{user-select:none;-webkit-user-select:none}@keyframes tf-sheet-up{0%{transform:translateY(100%)}}@keyframes tf-sheet-dim{0%{opacity:0}}:root[data-layout=canvas] .tf-dialog{width:min(560px,100%);max-width:100%;margin:auto auto 0;padding-bottom:env(safe-area-inset-bottom);border-radius:28px 28px 0 0;overscroll-behavior:contain}:root[data-layout=canvas] .tf-dialog:before{content:"";display:block;width:36px;height:4px;margin:8px auto 0;border-radius:2px;background:var(--ds-border-strong)}:root[data-layout=canvas] .tf-dialog-header{touch-action:none}@media(prefers-reduced-motion:no-preference){:root[data-layout=canvas] .tf-dialog[open]{animation:tf-sheet-up .28s var(--ds-ease-out) backwards}:root[data-layout=canvas] .tf-dialog[open]::backdrop{animation:tf-sheet-dim .28s var(--ds-ease-out) backwards}}:root[data-layout=canvas] .tf-tab-peek{position:fixed;inset:0;z-index:1;min-height:0;padding-bottom:0;overflow:hidden;pointer-events:none;background:var(--ds-bg);transform:translate3d(100%,0,0)}:root[data-layout=canvas] .tf-tab-peek[data-side=prev]{transform:translate3d(-100%,0,0)}:root[data-layout=canvas] .tf-tab-peek[data-landed]{transform:none}:root[data-swiping=tab] .tf-app:not(.tf-tab-peek){overflow-x:clip}:root[data-layout=canvas] .tf-app>.tf-nav:before{transform:translate(calc((var(--tf-nav-at, 0) + var(--tf-nav-drag, 0)) * 100%))}:root[data-layout=canvas] .tf-app>.tf-nav[data-swipe=drag]:before{transition:none}:root[data-layout=canvas] .tf-app>.tf-nav[data-swipe=settle]:before{transition:transform .22s var(--ds-ease-out),opacity .16s ease-out}:root[data-layout=canvas] .tf-app>.tf-nav[data-leaning] a[aria-current=page]{color:var(--ds-glass-nav-ink);font-weight:500}:root[data-layout=canvas] .tf-app>.tf-nav[data-leaning] a[aria-current=page] svg{color:inherit}:root[data-layout=canvas] .tf-app>.tf-nav a[data-leaning]{color:var(--ds-nav-active);font-weight:700}:root[data-layout=canvas] .tf-app>.tf-nav a[data-leaning] svg{color:var(--ds-nav-active)}@media(prefers-reduced-motion:reduce){:root[data-layout=canvas] .tf-app>.tf-nav[data-swipe]:before{transition:none}}:root[data-layout=canvas]{--press-scale: var(--ds-press-scale);--press-dim: 1;--press-in: var(--ds-press-in);--press-out: var(--ds-press-out);touch-action:manipulation;overscroll-behavior-y:none;-webkit-text-size-adjust:100%;text-size-adjust:100%}@media(prefers-reduced-motion:reduce){:root[data-layout=canvas]{--press-scale: 1;--press-dim: var(--ds-press-dim);--press-in: 0s;--press-out: 0s}}:root[data-layout=canvas] body{overscroll-behavior-y:none;padding-inline:env(safe-area-inset-left) env(safe-area-inset-right)}:root[data-layout=canvas] :is(.tf-option,.tf-canvas-topic,.tf-me-row,.tf-round-row,.tf-canvas-wb-option,.tf-canvas-more-card,.tf-canvas-missed,.tf-canvas-topic-words,.tf-type-row,.tf-canvas-avatar-choice,.tf-canvas-avatar-edit,.tf-choice-card,.tf-canvas-chip,.ds-chip,.tf-tab,.tf-listen-card-play,.tf-word-voice-btn,.tf-canvas-mistake-redo,.tf-canvas-date-change,.tf-canvas-switch-row,.tf-canvas-wb-mistakes,.ds-button,.tf-cast,.tf-letter-art){-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}:root[data-layout=canvas] :is(.tf-option,.tf-canvas-topic,.tf-me-row,.tf-round-row,.tf-canvas-wb-option,.tf-canvas-more-card,.tf-canvas-missed,.tf-canvas-topic-words,.tf-type-row,.tf-canvas-avatar-choice,.tf-canvas-avatar-edit,.tf-onboarding .tf-choice-card,.tf-canvas-chip,.tf-canvas-goal-chips .ds-chip,.tf-canvas-segment .ds-chip,.tf-review .tf-tab,.tf-listen-card .tf-listen-card-play,.tf-canvas-drill .tf-word-voice-btn,.tf-canvas-mistake-redo,.tf-canvas-date-change){transition:transform var(--press-out) var(--ds-press-spring)}:root[data-layout=canvas] :is(.tf-option,.tf-canvas-topic,.tf-me-row,.tf-round-row,.tf-canvas-wb-option,.tf-canvas-more-card,.tf-canvas-missed,.tf-canvas-topic-words,.tf-type-row,.tf-canvas-avatar-choice,.tf-canvas-avatar-edit,.tf-onboarding .tf-choice-card,.tf-canvas-chip,.tf-canvas-goal-chips .ds-chip,.tf-canvas-segment .ds-chip,.tf-review .tf-tab,.tf-listen-card .tf-listen-card-play,.tf-canvas-drill .tf-word-voice-btn,.tf-canvas-mistake-redo,.tf-canvas-date-change):active:not(:disabled,[aria-disabled=true],[data-result],.tf-options:disabled *){transform:scale(var(--press-scale));opacity:var(--press-dim);transition-duration:var(--press-in);transition-timing-function:var(--ds-press-in-ease)}:root[data-layout=canvas] .ds-button{transition:transform var(--press-out) var(--ds-press-spring),box-shadow var(--press-out) var(--ds-press-spring),filter var(--press-in)}:root[data-layout=canvas] .ds-button:active:not(:disabled){transition-duration:var(--press-in);transition-timing-function:var(--ds-press-in-ease)}
