:root{color-scheme:light;--paper: #f4f0e4;--paper-raised: #fffff0;--paper-sunken: #eae4d3;--paper-inset: #e0d9c6;--ink: #333333;--ink-soft: #666666;--ink-faint: #8c8c8c;--ink-inverse: #fffff0;--border: #141414;--border-hairline: #cccccc;--accent: #8bbde4;--accent-hover: #8bbde4;--accent-deep: #245d94;--accent-soft: #e3f0fa;--focus-ring: #5b9bd5;--correct: var(--accent);--correct-soft: var(--accent-soft);--danger: #c8261b;--danger-strong: #a81f16;--danger-soft: #fbe3e1;--incorrect: var(--danger);--incorrect-soft: var(--danger-soft);--font-mono: "Space Mono", "Noto Sans Mono JP", ui-monospace, "Cascadia Mono", Consolas, monospace;--font-display: var(--font-mono);--text-hero: clamp(2.6rem, 2.1rem + 2.6vw, 4.2rem);--text-heading: clamp(1.9rem, 1.6rem + 1.8vw, 3rem);--text-section: clamp(1.35rem, 1.2rem + .6vw, 1.7rem);--text-word: clamp(1.75rem, 1.45rem + 1.3vw, 2.4rem);--text-subheading: clamp(1.15rem, 1.05rem + .5vw, 1.35rem);--text-body: .95rem;--leading-tight: 1.15;--leading-normal: 1.55;--tracking-label: .09em;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--space-8: 4rem;--radius-s: 0px;--radius-m: 2px;--radius-l: 4px;--shadow-1: 2px 2px 0 var(--border);--shadow-2: 4px 4px 0 var(--border);--shadow-3: 6px 6px 0 var(--border);--shadow-pressed: 0px 0px 0 var(--border);--on-accent: #141414;--footer-bg: #26333f;--footer-ink: #fffff0;--footer-ink-soft: rgba(255, 255, 240, .74);--footer-ink-faint: rgba(255, 255, 240, .58);--footer-border: rgba(255, 255, 240, .22);--footer-accent: #8bbde4;--dot-color: rgba(20, 20, 20, .12);--dot-size: 22px;--transition: .12s steps(2, end);--nav-height: 3.25rem;--shell-max: 72rem;--measure: 68ch}:root[data-theme=dark]{color-scheme:dark;--paper: #101013;--paper-raised: #1a1a1e;--paper-sunken: #0c0c0f;--paper-inset: #08080a;--ink: #e9e5db;--ink-soft: #a6a29a;--ink-faint: #7c7871;--ink-inverse: #101013;--border: #45454b;--border-hairline: rgba(233, 229, 219, .16);--accent: #5b8fc9;--accent-hover: #6d9dd4;--accent-deep: #9dc2ea;--accent-soft: #212631;--focus-ring: #9dc2ea;--on-accent: #0d0d10;--danger: #d95448;--danger-strong: #e5685c;--danger-soft: #331f1c;--footer-bg: #0a0a0c;--footer-ink: #e9e5db;--footer-ink-soft: rgba(233, 229, 219, .72);--footer-ink-faint: rgba(233, 229, 219, .55);--footer-border: rgba(233, 229, 219, .18);--footer-accent: #9dc2ea;--dot-color: rgba(233, 229, 219, .09)}*,*:before,*:after{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;background-color:var(--paper);background-image:radial-gradient(var(--dot-color) 1px,transparent 1px);background-size:var(--dot-size) var(--dot-size);background-position:-1px -1px;color:var(--ink);font-family:var(--font-mono);font-size:var(--text-body);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased;transition:background-color .16s ease,color .16s ease}h1,h2,h3{font-weight:700;line-height:var(--leading-tight);letter-spacing:-.02em;margin:0;text-transform:uppercase}h1,h2{font-family:var(--font-display);font-weight:600;letter-spacing:.01em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}h1{font-size:var(--text-heading)}h2{font-size:var(--text-section)}h3{font-family:var(--font-display);font-size:var(--text-subheading)}p{margin:0;max-width:var(--measure)}a{color:var(--accent-deep);text-decoration-thickness:1px;text-underline-offset:3px}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--border);outline-offset:2px;box-shadow:0 0 0 5px var(--focus-ring)}input:focus-visible,textarea:focus-visible,select:focus-visible{box-shadow:none}code,kbd{font-family:var(--font-mono);font-size:.92em;background:var(--paper-sunken);padding:.1em .35em;border:1px solid var(--border-hairline)}.shell{max-width:var(--shell-max);margin-inline:auto;padding-inline:var(--space-5)}.page{padding-block:var(--space-6) var(--space-8);display:flex;flex-direction:column;gap:var(--space-6)}.stack{display:flex;flex-direction:column;gap:var(--space-4)}.stack-tight{display:flex;flex-direction:column;gap:var(--space-2)}.row{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.measure{max-width:var(--measure)}.muted{color:var(--ink-soft)}.faint{color:var(--ink-faint);font-size:var(--text-body)}.label{font-family:var(--font-mono);font-size:var(--text-body);font-weight:700;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-soft)}.rule{border:0;border-top:1px solid var(--border-hairline);margin:0}.rule-dashed{border:0;border-top:1px dashed var(--border-hairline);margin:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-header{position:sticky;top:0;z-index:10;background:var(--paper);border-bottom:2px solid var(--border);padding-bottom:var(--space-3)}.app-header-inner{position:relative;min-height:var(--nav-height);display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}.app-nav-floating{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:var(--space-2);background:var(--paper-raised);border:2px solid var(--border);border-radius:999px;box-shadow:var(--shadow-2);padding:var(--space-1) var(--space-5)}.app-nav{display:flex;align-items:center;gap:var(--space-2)}.nav-link{display:inline-flex;align-items:center;text-decoration:none;color:var(--ink);line-height:1.1;padding:var(--space-1) var(--space-4);border:2px solid transparent;border-radius:999px;font-weight:700;font-size:var(--text-body);text-transform:uppercase;letter-spacing:var(--tracking-label);transition:transform var(--transition),border-color var(--transition),background var(--transition),box-shadow var(--transition)}.nav-link:hover{border-color:var(--border);transform:translateY(-2px);box-shadow:var(--shadow-1)}.nav-link:active{transform:translateY(1px);box-shadow:none}.nav-link.is-active{background:var(--accent);border-color:var(--border);color:var(--on-accent)}.nav-link.is-active:hover{transform:translateY(-2px);box-shadow:var(--shadow-2)}.app-nav-drawer{position:absolute;top:calc(100% + var(--space-2));right:0;display:flex;flex-direction:column;gap:var(--space-1);min-width:13rem;background:var(--paper-raised);border:2px solid var(--border);border-radius:var(--radius-l);box-shadow:var(--shadow-2);padding:var(--space-3)}.app-nav-drawer .nav-link{border-radius:var(--radius-l);text-align:left}.nav-toggle{border:2px solid var(--border);background:var(--paper-raised);box-shadow:var(--shadow-1);padding:var(--space-2) var(--space-3);cursor:pointer;font-weight:700;text-transform:uppercase;font-size:var(--text-body)}.nav-toggle:active{transform:translate(2px,2px);box-shadow:var(--shadow-pressed)}.session-shell{padding-block:var(--space-3)}.app-main{flex:1}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border:2px solid var(--border);border-radius:var(--radius-s);background:var(--paper-raised);color:var(--ink);padding:.55em 1.1em;font-family:var(--font-mono);font-weight:700;font-size:var(--text-body);letter-spacing:.04em;text-transform:uppercase;cursor:pointer;text-decoration:none;box-shadow:var(--shadow-1);transition:transform var(--transition),box-shadow var(--transition),background var(--transition)}.btn:hover:not(:disabled){transform:translate(-1px,-1px);box-shadow:var(--shadow-2)}.btn:active:not(:disabled){transform:translate(2px,2px);box-shadow:var(--shadow-pressed)}.btn:disabled{background:var(--paper-sunken);color:var(--ink-faint);border-style:dashed;box-shadow:none;cursor:not-allowed}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-secondary{background:var(--paper-raised)}.btn-ghost{background:transparent;border-style:dashed;box-shadow:none;color:var(--ink-soft)}.btn-danger{background:var(--danger);color:var(--ink-inverse)}.btn-danger:hover:not(:disabled){background:var(--danger-strong)}.btn-danger-outline{background:var(--paper-raised);border-color:var(--danger);color:var(--danger)}.btn-danger-outline:hover:not(:disabled){background:var(--danger-soft)}.btn-ghost:hover:not(:disabled){border-style:solid;color:var(--ink);background:var(--paper-raised)}.btn-small{padding:.35em .7em;font-size:var(--text-body)}.btn-block{width:100%}.link-button{background:none;border:0;padding:0;color:var(--accent-deep);font-family:var(--font-mono);font-weight:700;cursor:pointer;text-decoration:underline;text-underline-offset:3px}.panel{background:var(--paper-raised);border:2px solid var(--border);border-radius:var(--radius-m);box-shadow:var(--shadow-2);padding:var(--space-5)}.panel-inset{background:var(--paper-sunken);border:1.5px solid var(--border-hairline);box-shadow:none}.row-space{justify-content:space-between}.deck-grid{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(min(100%,17rem),1fr))}.deck-card-item{display:flex}button.deck-card{display:flex;flex-direction:column;justify-content:space-between;gap:var(--space-4);width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer;appearance:none}button.deck-card:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-3)}button.deck-card:active{transform:translate(2px,2px);box-shadow:var(--shadow-pressed)}.deck-card.is-selected{box-shadow:var(--shadow-3),inset 0 0 0 3px var(--accent)}.deck-title{display:block;font-size:var(--text-subheading);font-weight:700}.deck-meta{border-top:1px dashed var(--border-hairline);padding-top:var(--space-3)}.chip{display:inline-flex;align-items:baseline;gap:var(--space-1);font-size:var(--text-body);font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:.2em .55em;border-radius:var(--radius-s);border:1.5px solid var(--border);background:var(--paper-raised);color:var(--ink-soft);white-space:nowrap}.chip-accent{background:var(--accent);border-color:var(--border);color:var(--on-accent)}.chip-correct{background:var(--correct);border-color:var(--border);color:var(--ink)}.chip-incorrect{background:var(--incorrect);border-color:var(--border);color:var(--ink-inverse)}.chip-code{font-size:.9em;opacity:.75}.state{border:2px dashed var(--border);border-radius:var(--radius-m);padding:var(--space-6);display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-3);background:var(--paper-sunken)}.state-error{border-color:var(--incorrect);background:var(--incorrect-soft)}.notice{border:2px solid var(--border);border-left-width:6px;border-left-color:var(--correct);background:var(--correct-soft);color:var(--ink);font-size:var(--text-body);padding:var(--space-3)}.notice-error{border-left-color:var(--incorrect);background:var(--incorrect-soft)}.notice ul,.stack ul{margin:0;padding-left:var(--space-4)}.spinner{display:inline-flex;align-items:center;gap:var(--space-3)}.spinner-mark{width:1rem;height:1rem;border:2px solid var(--border);border-top-color:var(--accent);animation:spin .8s steps(4,end) infinite}@keyframes spin{to{transform:rotate(360deg)}}.progress{display:flex;align-items:center;gap:var(--space-3);flex:1;min-width:10rem}.progress-track{flex:1;height:14px;background:var(--paper-inset);border:2px solid var(--border)}.progress-fill{height:100%;background:var(--accent);transition:width var(--transition)}.progress-label{white-space:nowrap}.segmented{display:inline-flex;border:2px solid var(--border);border-radius:var(--radius-s);background:var(--paper-raised);box-shadow:var(--shadow-1);flex-wrap:wrap}.segmented-option{border:0;background:transparent;padding:.5em .9em;cursor:pointer;font-weight:700;font-size:var(--text-body);text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);display:inline-flex;align-items:center;gap:var(--space-2)}.segmented-option+.segmented-option{border-left:2px solid var(--border)}.segmented-option.is-active{background:var(--accent);color:var(--on-accent)}.segmented-hint{font-weight:400;font-size:var(--text-body);text-transform:none;letter-spacing:0}.session-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.session-stats{display:flex;gap:var(--space-3);margin:0;flex-wrap:wrap}.session-stat{display:flex;flex-direction:column;gap:.1rem;border:1.5px solid var(--border);background:var(--paper-raised);padding:var(--space-2) var(--space-3);box-shadow:var(--shadow-1)}.session-stat dd{margin:0;font-weight:700;font-size:var(--text-body)}.session-bar-empty{font-size:var(--text-body)}.mode-grid{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(min(100%,15rem),1fr))}.mode-card{display:flex;flex-direction:column;gap:var(--space-2);height:100%;padding:var(--space-5);border:2px solid var(--border);border-radius:var(--radius-m);background:var(--paper-raised);box-shadow:var(--shadow-2);text-decoration:none;color:var(--ink);transition:transform var(--transition),box-shadow var(--transition)}.mode-card:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-3)}.mode-name{font-family:var(--font-display);font-size:var(--text-subheading);font-weight:700;text-transform:uppercase}.mode-blurb{font-size:var(--text-body)}.form-grid{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr))}.span-2{grid-column:span 2}input,textarea,select{background:var(--paper-raised);border:2px solid var(--border);border-radius:var(--radius-s);padding:.45em .6em;width:100%}input::placeholder,textarea::placeholder{color:var(--ink-faint)}input:focus,textarea:focus,select:focus{border-color:var(--border)}.entry-row{display:grid;grid-template-columns:1fr 1fr 1fr 1fr auto auto;gap:var(--space-2);align-items:center}.custom-deck-actions{list-style:none;margin:0;padding:0}.import-panel textarea{font-size:var(--text-body);resize:vertical}.pair-filter select{width:auto}@media(max-width:640px){.app-header-inner{position:relative;justify-content:center;padding-inline:var(--space-2)}.app-nav-floating{position:static;transform:none;flex-wrap:nowrap;justify-content:center;align-items:center;max-width:100%;width:100%;margin-inline:0;overflow-x:auto;white-space:nowrap;scrollbar-width:none;gap:var(--space-2);padding:var(--space-2) var(--space-3)}.app-nav-floating::-webkit-scrollbar{display:none}.app-nav-floating .nav-link{flex:0 0 auto;white-space:nowrap;padding:.4rem .7rem;font-size:.85rem;letter-spacing:.05em}.app-nav-floating .theme-toggle{flex:0 0 auto;width:1.75rem;height:1.75rem;margin-left:0}.entry-row{grid-template-columns:1fr}.session-stats{gap:var(--space-2)}.btn,.option,.match-item,.segmented-option,.nav-link{min-height:44px}.panel{box-shadow:var(--shadow-1)}}@media(max-width:380px){.app-nav-floating{gap:var(--space-1);padding:var(--space-1) var(--space-2)}.app-nav-floating .nav-link{font-size:.8rem;padding:.35rem .6rem}}.mode-nav{display:flex;gap:var(--space-1);flex-wrap:wrap}.mode-link{text-decoration:none;color:var(--ink-soft);font-weight:700;font-size:var(--text-body);text-transform:uppercase;letter-spacing:.04em;padding:var(--space-2) var(--space-3);border:2px solid var(--border);background:var(--paper-raised);box-shadow:var(--shadow-1);transition:transform var(--transition),box-shadow var(--transition),background var(--transition)}.mode-link:hover{color:var(--ink);transform:translate(-1px,-1px);box-shadow:var(--shadow-2)}.mode-link.is-active{background:var(--accent);color:var(--on-accent)}.flashcard{gap:var(--space-4)}.flashcard-face{padding:var(--space-2)}.flashcard-face .label{border-bottom:1px dotted var(--border-hairline);padding-bottom:var(--space-2);display:inline-block}.flashcard-word{font-family:var(--font-display);font-size:var(--text-word);font-weight:700;line-height:1.25;margin:0;overflow-wrap:anywhere;word-break:break-word}.flashcard-face-front .flashcard-word,.flashcard-face-back .flashcard-word{font-size:var(--text-word);line-height:1.25}.flashcard-translation{background:var(--accent);color:var(--on-accent);border:2px solid var(--border);padding:.1rem .45rem;display:block;width:fit-content;max-width:100%}.flashcard-face-back .flashcard-translation{margin-top:var(--space-2)}.flashcard-native{font-size:var(--text-subheading);font-weight:700;margin:var(--space-2) 0 0;overflow-wrap:anywhere}.option-text{display:block}.option-script,.match-script{display:block;font-size:.9em;opacity:.8;overflow-wrap:anywhere}.match-script{margin-top:.15rem}.summary{gap:var(--space-3)}.quiz-prompt,.typing-prompt{gap:var(--space-2)}.option-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-2)}.option{width:100%;text-align:left;background:var(--paper-raised);border:2px solid var(--border);border-radius:var(--radius-s);box-shadow:var(--shadow-1);padding:var(--space-3) var(--space-4);cursor:pointer;font-weight:400;overflow-wrap:anywhere;transition:transform var(--transition),box-shadow var(--transition),background var(--transition)}.option:hover:not(:disabled){transform:translate(-1px,-1px);box-shadow:var(--shadow-2)}.option.is-selected{background:var(--accent);color:var(--on-accent)}.option:disabled{cursor:default;opacity:1}.option.option-correct{background:var(--accent);border-color:var(--border);color:var(--on-accent)}.option.option-incorrect{background:var(--incorrect);border-color:var(--border);color:var(--ink-inverse)}.match-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.match-column{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-2)}.match-item{width:100%;text-align:left;background:var(--paper-raised);border:2px solid var(--border);border-radius:var(--radius-s);box-shadow:var(--shadow-1);padding:var(--space-3);cursor:pointer;overflow-wrap:anywhere;transition:transform var(--transition),box-shadow var(--transition),background var(--transition)}.match-item:hover:not(:disabled){transform:translate(-1px,-1px);box-shadow:var(--shadow-2)}.match-item.is-selected{background:var(--accent);color:var(--on-accent);box-shadow:var(--shadow-2)}.match-item.is-complete{background:var(--accent);border-color:var(--border);color:var(--on-accent);cursor:default}.match-item.is-incorrect{background:var(--incorrect);border-color:var(--incorrect);color:var(--ink-inverse);cursor:default}.match-feedback{min-height:2.5rem}.checkbox{width:auto;accent-color:var(--accent-deep)}.import-preview{border-top:2px dashed var(--border-hairline);padding-top:var(--space-4)}.preview-entries{list-style:none;margin:0;padding:0;font-size:var(--text-body)}.preview-entries li{border-left:2px solid var(--border-hairline);padding-left:var(--space-3)}.entry-id{font-size:var(--text-body);border:1px solid var(--border-hairline);padding:0 var(--space-1);background:var(--paper-sunken)}.hero{align-items:center;text-align:center;padding-block:var(--space-8) var(--space-7);gap:var(--space-5)}.hero-title{font-size:var(--text-hero);line-height:1.05}.hero-description{max-width:56ch;font-size:var(--text-subheading);text-align:center;line-height:var(--leading-normal)}@media(max-width:640px){.hero{padding-block:var(--space-7) var(--space-6)}}.session-summary{border-top:2px dashed var(--border-hairline);padding-top:var(--space-4)}.nav-link.is-active,.mode-link.is-active,.segmented-option.is-active,.segmented-option.is-active .segmented-hint,.chip-accent,.btn-primary,.match-item.is-selected,.match-item.is-complete,.flashcard-translation{color:var(--ink)}.practice-column{width:100%;max-width:60rem;margin-inline:auto;display:flex;flex-direction:column;gap:var(--space-5)}.section{display:flex;flex-direction:column;gap:var(--space-5)}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.section-note{font-size:var(--text-body);color:var(--ink-soft)}.quiz-feedback,.typing-feedback{min-height:6rem;align-content:start}.quiz-submit-row{min-height:3rem}.btn,.mode-link{min-height:2.5rem}.deck-card{min-height:12.5rem}.mode-card{min-height:9.5rem}.option,.match-item{min-height:3rem}.deck-action-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap;padding:var(--space-3) var(--space-4)}.deck-action-row .row{gap:var(--space-2)}.entry-row{grid-template-columns:repeat(4,minmax(0,1fr)) auto}@media(max-width:1024px){.entry-row{grid-template-columns:repeat(2,minmax(0,1fr))}.entry-row .btn,.entry-row .entry-id{justify-self:start}}.play-back{align-self:flex-start}.play-meta{gap:var(--space-2)}.play-description{max-width:var(--measure)}.preview-entries li+li{margin-top:var(--space-1)}.lang-text{overflow-wrap:anywhere;word-break:break-word}.manage-heading{font-size:var(--text-subheading)}.manage-list{list-style:none;margin:0;padding:0;border:2px solid var(--border);background:var(--paper-raised);box-shadow:var(--shadow-2)}.manage-list>li+li{border-top:1px solid var(--border-hairline)}.manage-name{font-weight:700;overflow-wrap:anywhere}.about-header{padding-block:var(--space-8) var(--space-6);border-bottom:2px solid var(--border);margin-bottom:var(--space-7)}.about-hero{text-align:center;max-width:64ch;margin:0 auto var(--space-7)}.about-label{display:inline-block;font-family:var(--font-mono);font-size:var(--text-body);font-weight:700;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--accent-deep);background:var(--accent-soft);padding:var(--space-1) var(--space-3);border:2px solid var(--border);border-radius:var(--radius-s);margin-bottom:var(--space-4);box-shadow:var(--shadow-1)}.hero-title{font-size:var(--text-hero);line-height:1.05;font-weight:700;color:var(--ink);margin:0 0 var(--space-4)}.hero-description{max-width:56ch;margin:0 auto;font-size:var(--text-subheading);line-height:var(--leading-normal);color:var(--ink-soft)}.about-toc{display:flex;justify-content:center;flex-wrap:wrap;gap:var(--space-2) var(--space-4);padding-top:var(--space-5);border-top:1px dashed var(--border-hairline)}.about-toc ul{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-2) var(--space-4);list-style:none;margin:0;padding:0}.about-toc a{font-family:var(--font-mono);font-size:var(--text-body);color:var(--ink-soft);text-decoration:none;padding:var(--space-1) var(--space-2);border:1px solid transparent;border-radius:var(--radius-s);transition:color var(--transition),border-color var(--transition),background var(--transition)}#about-what,#about-how-to-use,#about-modes,#about-decks,#about-details{scroll-margin-top:calc(var(--nav-height) + var(--space-5))}.about-toc a:hover,.about-toc a:focus{color:var(--accent-deep);border-color:var(--accent-deep);background:var(--accent-soft);outline:none}.about-toc a:focus-visible{box-shadow:var(--focus-ring) 0 0 0 2px}@media(max-width:640px){.about-header{padding-block:var(--space-7) var(--space-5)}.about-hero{margin-bottom:var(--space-6)}.about-label{font-size:var(--text-body);padding:var(--space-1) var(--space-2)}.hero-title{font-size:clamp(2.2rem,1.8rem + 3vw,3.2rem)}.hero-description{font-size:var(--text-body)}.about-toc{gap:var(--space-2) var(--space-3);padding-top:var(--space-4)}.about-toc ul{gap:var(--space-2) var(--space-3)}.about-toc a{font-size:.85rem;padding:var(--space-1) var(--space-1)}}.about-steps{margin:0;padding-left:var(--space-5);display:flex;flex-direction:column;gap:var(--space-3)}.about-steps li::marker{font-weight:700;color:var(--accent-deep)}.about-cards{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr))}.about-card{height:100%}.about-columns{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr))}.about-details{display:flex;flex-direction:column;gap:var(--space-2)}.direction-toggle{align-items:center;gap:var(--space-3)}.swap-button{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:2px solid var(--border);border-radius:var(--radius-s);background:var(--paper-raised);box-shadow:var(--shadow-1);cursor:pointer;font-size:var(--text-body);line-height:1;transition:transform var(--transition),box-shadow var(--transition),background var(--transition)}.swap-button:hover{transform:translate(-1px,-1px);box-shadow:var(--shadow-2);background:var(--accent-soft)}.swap-button:active{transform:translate(1px,1px);box-shadow:var(--shadow-pressed)}.swap-button[aria-pressed=true]{background:var(--accent);color:var(--on-accent)}.hero{padding-block:var(--space-8) var(--space-6)}.page>.rule{margin-block:var(--space-2)}.section-head{margin-bottom:var(--space-2)}.deck-grid{gap:var(--space-5)}.practice-panel{border:2px solid var(--border);border-radius:var(--radius-m);background:var(--paper-raised);box-shadow:var(--shadow-2);padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-6);scroll-margin-top:calc(var(--nav-height) + var(--space-5))}.practice-panel:focus{outline:none}.practice-head{display:flex;flex-direction:column;gap:var(--space-3)}.practice-meta{align-items:center;gap:var(--space-3)}.practice-intro{border-top:1px dashed var(--border-hairline);padding-top:var(--space-4);max-width:var(--measure)}.practice-panel .mode-grid{gap:var(--space-4)}.practice-panel .mode-card{min-height:11.5rem;padding:var(--space-5);gap:var(--space-3)}@media(min-width:720px){.practice-head{flex-direction:row;align-items:baseline;justify-content:space-between;gap:var(--space-5)}}.app-footer{margin-top:var(--space-8);background:var(--footer-bg);color:var(--footer-ink);border-top:2px solid var(--border);background-image:radial-gradient(rgba(255,255,240,.07) 1px,transparent 1px);background-size:var(--dot-size) var(--dot-size)}.footer-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:var(--space-6);padding-block:var(--space-7) var(--space-6)}.footer-brand{display:flex;flex-direction:column;gap:var(--space-3);max-width:34rem}.footer-brand-link{text-decoration:none;color:var(--footer-ink)}.footer-brand-link:hover{color:var(--footer-accent)}.footer-brand-name{font-family:var(--font-display);font-weight:700;font-size:var(--text-subheading);text-transform:uppercase;letter-spacing:.02em;margin:0;line-height:1.2}.footer-brand-text{color:var(--footer-ink-soft);font-size:var(--text-body);line-height:var(--leading-normal);max-width:42ch}.footer-column{display:flex;flex-direction:column;gap:var(--space-3)}.footer-heading{font-family:var(--font-display);font-size:var(--text-body);font-weight:700;text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--footer-ink);margin:0}.footer-links{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.footer-links a{color:var(--footer-ink-soft);text-decoration:none;font-size:var(--text-body);line-height:1.4;padding-block:var(--space-1);display:inline-flex;align-items:center;gap:var(--space-2);overflow-wrap:anywhere;transition:color var(--transition)}.footer-icon{flex:none;width:1em;height:1em}.footer-links a:hover{color:var(--footer-accent);text-decoration:underline;text-underline-offset:3px}.footer-bottom{border-top:1px solid var(--footer-border)}.footer-bottom-inner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap;padding-block:var(--space-4)}.footer-note{color:var(--footer-ink-faint);font-size:.78rem;max-width:none}.footer-top-link{color:var(--footer-ink-soft);font-size:var(--text-body);text-decoration:none;background:none;border:0;padding:var(--space-1) 0;cursor:pointer;font-family:inherit;transition:color var(--transition)}.footer-top-link:hover{color:var(--footer-accent);text-decoration:underline;text-underline-offset:3px}@media(max-width:1024px){.footer-grid{grid-template-columns:1fr;gap:var(--space-5)}.footer-brand{max-width:46ch}}@media(max-width:640px){.app-footer{margin-top:var(--space-7)}.footer-grid{grid-template-columns:1fr;gap:var(--space-5);padding-block:var(--space-6) var(--space-5)}.footer-bottom-inner{flex-direction:column;align-items:flex-start;gap:var(--space-2)}}#decks,#modes,.practice-panel{scroll-margin-top:calc(var(--nav-height) + var(--space-5))}.play-title-row{align-items:baseline;gap:var(--space-4)}.play-meta{align-items:center;gap:var(--space-2)}.play-meta-note{margin:0}.round-controls{align-items:center;gap:var(--space-3) var(--space-4)}.round-size{align-items:center;gap:var(--space-2)}.round-size select{width:auto;min-width:4rem}.round-size-input{width:4.5rem;text-align:center;-moz-appearance:textfield}.round-size-input::-webkit-outer-spin-button,.round-size-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.round-size-highlight{border:2px dashed var(--accent-deep);border-radius:var(--radius-s);background:var(--accent-soft);padding:var(--space-1) var(--space-2);animation:round-size-glow 1.6s ease-in-out 2}.round-size-tip{font-family:var(--font-mono);font-size:.75rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--accent-deep);white-space:nowrap}@keyframes round-size-glow{0%,to{box-shadow:none}50%{box-shadow:var(--shadow-2)}}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin-left:var(--space-1);border:2px solid var(--border);border-radius:999px;background:var(--paper-raised);color:var(--ink);cursor:pointer;transition:transform var(--transition),box-shadow var(--transition),background var(--transition)}.theme-toggle:hover{transform:translateY(-2px);box-shadow:var(--shadow-1);background:var(--accent-soft)}.theme-toggle:active{transform:translateY(1px);box-shadow:none}.theme-icon{display:block}.drawer-row{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.app-nav-drawer[hidden]{display:none}.flashcard-flip{perspective:1200px;min-height:14rem}.flashcard-flipper{position:relative;transform-style:preserve-3d;transition:transform .32s ease}.flashcard-flip.is-revealed .flashcard-flipper{transform:rotateY(180deg)}.flashcard-face{backface-visibility:hidden;-webkit-backface-visibility:hidden;min-height:12rem}.flashcard-face-back{position:absolute;inset:0;transform:rotateY(180deg)}.feedback-pulse{animation:feedback-pulse .34s ease}.feedback-shake{animation:feedback-shake .36s ease}@keyframes feedback-pulse{0%{transform:scale(1)}50%{transform:scale(1.04)}to{transform:scale(1)}}@keyframes feedback-shake{0%,to{transform:translate(0)}20%{transform:translate(-5px)}40%{transform:translate(5px)}60%{transform:translate(-5px)}80%{transform:translate(5px)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){.flashcard-flipper,.flashcard-flip.is-revealed .flashcard-flipper{transition:none;transform:none}.flashcard-face-back{position:static;transform:none}.flashcard-flip.is-revealed .flashcard-face-front{display:none}.feedback-pulse,.feedback-shake{animation:none}.mode-card:hover{transform:none}}@media(max-width:640px){.match-grid{grid-template-columns:1fr}.option-list{gap:var(--space-2)}.flashcard-face-back{inset:0}}@media(min-width:641px)and (max-width:1024px){.deck-grid,.mode-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,13rem),1fr))}}
