:root{--font-size-word: 3.5rem;--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: .75rem;--transition: .15s ease;--z-chrome: 2;--z-overlay: 3;--z-dialog: 4;--z-menu: 5;--translate-max-width: min(10rem, 25%);--syllable-progress-padding: .5rem;--modal-gap: 1rem;--modal-padding: 1.5rem;--modal-min-width: min(90vw, 22rem);--modal-max-width: min(92vw, 34rem);--modal-max-height: 75vh;--modal-word-font-size: 2rem;--modal-backdrop-blur: blur(5px);--chrome-blur: blur(8px);--card-gap: 1.5rem;--card-word-head-gap: .5rem;--card-variant-font-size: 2.5rem;--card-sentence-font-size: 1.5rem;--card-question-gap: 2rem;--card-buttons-gap: .5rem;--weight-position: .35rem;--weight-gap: .2rem;--weight-font-size: 1.25rem;--weight-transition-duration: .28s;--syllable-font-size: 1.1rem;--syllable-slot-padding: .25rem .5rem;--syllable-slot-min-height: 1.5rem;--syllable-delete-padding: .25rem .75rem;--syllable-delete-min-width: 2.5rem;--syllable-columns: 4;--syllable-inactive-opacity: .3;--tones-gap: .75rem;--translate-long-font-size: .9rem;--action-bar-gap: 1rem;--action-bar-clearance: calc( var(--next-button-size) + 3.5rem + env(safe-area-inset-bottom, 0px) );--next-button-size: 3rem;--next-button-font-size: 1.5rem;--next-inactive-opacity: .25;--search-button-size: 3rem;--search-button-font-size: 2.25rem;--search-overlay-padding: .4rem;--search-input-height: 3rem;--search-results-max-height: 70vh;--search-result-padding: .75rem 1rem;--search-result-gap: .5rem}:root{--color-bg: #202428;--color-surface: #2a3036;--color-text: #e0e1e0;--color-subtle-text: rgba(224, 225, 224, .75);--color-border: rgba(128, 128, 128, .4);--color-overlay: rgba(18, 21, 24, .6);--color-chrome-tint: rgba(32, 36, 40, .7);--color-accent: rgba(255, 166, 0, .9);--color-accent-soft: rgba(245, 222, 179, .2);--color-text-secondary: rgba(224, 225, 224, .6);--color-bg-secondary: #2a3036;--color-bg-hover: rgba(255, 255, 255, .08);--color-positive: rgba(187, 240, 107, .55);--color-positive-text: rgba(187, 240, 107, .9);--color-positive-bg: rgba(187, 240, 107, .1);--color-positive-border: rgba(187, 240, 107, .8);--color-positive-glow: rgba(187, 240, 107, .4);--color-negative: rgba(240, 115, 70, .55);--color-negative-text: rgba(240, 115, 70, 1);--color-negative-bg: rgba(240, 115, 70, .1);--color-negative-border: rgba(240, 115, 70, .8);--color-negative-glow: rgba(240, 115, 70, .4);--color-selection-border: rgba(100, 149, 237, .8);--color-selection-glow: rgba(100, 149, 237, .4);--color-danger: rgba(254, 103, 103, .85);--color-danger-border: rgba(254, 103, 103, .85);--dialog-confirm-danger-bg: rgba(255, 0, 0, .5);--color-weight: rgba(187, 240, 107, .9);--color-weight-shadow: rgba(187, 240, 107, .5);--color-btn-primary: rgba(254, 187, 62, 1);--color-btn-primary-bg: transparent;--color-btn-primary-border: var(--color-border);--shadow-elevated: 0 1.75rem 3.75rem rgba(0, 0, 0, .35);--modal-bg: rgba(0, 0, 0, .55);--modal-backdrop-bg: rgba(0, 0, 0, .3);--hanzi-outline-color: rgba(224, 225, 224, .2);--draw-quiz-drawing-color: rgba(255, 166, 0, .7);--loading-bg: rgba(32, 36, 40, .95);--loading-text: #e0e1e0;--loading-spinner-track: rgba(224, 225, 224, .2);--loading-spinner-active: var(--color-accent);--theme-color: #202428;--heatmap-l0: #161b22;--heatmap-l1: #0e4429;--heatmap-l2: #006d32;--heatmap-l3: #26a641;--heatmap-l4: #39d353;--heatmap-cell-border: transparent}.fill-row--vocab{background:var(--color-surface)}@media (prefers-color-scheme: light){:root{--color-bg: #fff;--color-surface: #f3f4f6;--color-text: #2f3439;--color-subtle-text: rgba(47, 52, 57, .6);--color-border: rgba(47, 52, 57, .1);--color-overlay: rgba(255, 255, 255, .6);--color-chrome-tint: rgba(255, 255, 255, .7);--color-accent: rgba(0, 103, 205, .8);--color-accent-soft: rgba(151, 174, 217, .16);--color-text-secondary: rgba(47, 52, 57, .55);--color-bg-secondary: #f3f4f6;--color-bg-hover: rgba(0, 0, 0, .05);--color-positive: rgba(46, 125, 50, .55);--color-positive-text: rgba(46, 125, 50, 1);--color-positive-bg: rgba(46, 125, 50, .1);--color-positive-border: rgba(46, 125, 50, .8);--color-positive-glow: rgba(46, 125, 50, .3);--color-negative: rgba(198, 40, 40, .55);--color-negative-text: rgba(198, 40, 40, 1);--color-negative-bg: rgba(198, 40, 40, .1);--color-negative-border: rgba(198, 40, 40, .8);--color-negative-glow: rgba(198, 40, 40, .25);--color-selection-border: rgba(30, 90, 180, .8);--color-selection-glow: rgba(30, 90, 180, .3);--color-danger: rgba(198, 40, 40, .9);--color-danger-border: rgba(198, 40, 40, .4);--dialog-confirm-danger-bg: rgba(201, 0, 0, .85);--color-weight: rgba(46, 125, 50, 1);--color-weight-shadow: rgba(46, 125, 50, .4);--color-btn-primary: rgb(255, 255, 255);--color-btn-primary-bg: rgba(0, 103, 205, .6);--color-btn-primary-border: rgba(0, 103, 205, .6);--shadow-elevated: 0 1.75rem 3.75rem rgba(0, 0, 0, .15);--modal-bg: rgba(255, 255, 255, .75);--modal-backdrop-bg: rgba(0, 0, 0, .3);--hanzi-outline-color: rgba(47, 52, 57, .15);--draw-quiz-drawing-color: rgba(0, 103, 205, .6);--loading-bg: rgba(255, 255, 255, .95);--loading-text: #2f3439;--loading-spinner-track: rgba(47, 52, 57, .15);--loading-spinner-active: var(--color-accent);--theme-color: #ffffff;--heatmap-l0: #d0d7de;--heatmap-l1: #9be9a8;--heatmap-l2: #40c463;--heatmap-l3: #30a14e;--heatmap-l4: #216e39;--heatmap-cell-border: rgba(27, 31, 36, .06)}body{background-color:var(--color-bg);color:var(--color-text)}.fill-row--vocab{border:1px solid var(--color-border);background:none}button{background-color:var(--color-surface);color:inherit}.menu-action{border:1px solid;border-color:var(--color-danger-border);color:var(--color-danger);background-color:var(--color-bg)}}@media (hover: hover){button:hover{filter:brightness(1.25)}@media (prefers-color-scheme: light){button:hover{filter:brightness(.95)}}.menu-toggle:hover:not(.is-open) .menu-toggle__icon{transform:rotate(30deg)}.menu-action:hover{background-color:var(--color-accent-soft)}.search-button:hover,.next-button[data-state=hint]:hover{color:var(--color-text);border-color:var(--color-text)}.next-button[data-state=next]:hover{filter:brightness(1.1)}.fill-row:has(.fill-slot.filled) .backspace-btn:hover{color:var(--color-accent)}.search-close:hover{color:var(--color-text)}.search-result:hover{background:var(--color-accent-soft)}}.rotate-device-overlay{display:none}@keyframes rotate-device-hint{0%,40%,to{transform:rotate(-90deg)}60%,80%{transform:rotate(0)}}@media (orientation: landscape) and (max-height: 500px){.rotate-device-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-menu);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;padding:2rem;background-color:var(--color-bg);color:var(--color-text);text-align:center}.rotate-device-icon{width:4rem;height:4rem;opacity:.7;animation:rotate-device-hint 2.4s ease-in-out infinite}.rotate-device-message{font-size:1.125rem;line-height:1.4;max-width:22rem;margin:0}body{overflow:hidden}}@media (prefers-reduced-motion: reduce){.rotate-device-icon{animation:none}}@media (max-width: 480px){:root{--font-size-word: 3rem;--translate-max-width: min(10rem, 45%);--syllable-progress-padding: .3rem}.search-result{flex-wrap:wrap}.search-result-translation{min-width:50%;white-space:normal;text-overflow:clip;text-align:left}}@font-face{font-family:NotoSansSC;src:url(../fonts/NotoSansSC-Subset.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Open Sans;src:url(../fonts/OpenSans-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:JetBrainsMono;src:url(../fonts/JetBrainsMono-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{height:100%;overflow:hidden;overscroll-behavior:none}body{position:fixed;width:100%;height:100svh;overflow:hidden;overscroll-behavior:none;-webkit-overflow-scrolling:auto}dialog:focus{outline:none}body{display:flex;flex-direction:column;gap:1rem;overflow:hidden;padding:2.5% 4% 0;font-family:NotoSansSC,system-ui,sans-serif;line-height:1.5;letter-spacing:.025rem;background-color:var(--color-bg);color:var(--color-text)}.top-bar{position:absolute;top:0;left:0;right:0;z-index:var(--z-chrome);display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1.25rem 4% .5rem;font-size:.75rem;backdrop-filter:var(--chrome-blur);-webkit-backdrop-filter:var(--chrome-blur);background-color:var(--color-chrome-tint);pointer-events:none}.top-bar>*{pointer-events:auto}.counter{color:var(--color-subtle-text);font-family:Open Sans,system-ui,sans-serif;font-variant-numeric:tabular-nums}.repeat-counter,.top-bar-level{color:var(--color-subtle-text);font-family:Open Sans,system-ui,sans-serif;opacity:.65;margin-left:auto;font-variant-numeric:tabular-nums}.slot{position:relative;display:inline-block;overflow:hidden;height:1em;line-height:1;vertical-align:baseline}.slot__cell{display:block}.slot__cell--out{position:absolute;top:0;right:0;bottom:0;left:0;text-align:inherit}.slot[data-dir=up] .slot__cell--in{animation:slot-in-up .32s ease-out forwards}.slot[data-dir=up] .slot__cell--out{animation:slot-out-up .32s ease-out forwards}.slot[data-dir=down] .slot__cell--in{animation:slot-in-down .32s ease-out forwards}.slot[data-dir=down] .slot__cell--out{animation:slot-out-down .32s ease-out forwards}@keyframes slot-in-up{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slot-out-up{0%{transform:translateY(0);opacity:1}to{transform:translateY(-100%);opacity:0}}@keyframes slot-in-down{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slot-out-down{0%{transform:translateY(0);opacity:1}to{transform:translateY(100%);opacity:0}}@media (prefers-reduced-motion: reduce){.slot__cell--in,.slot__cell--out{animation:none}.slot__cell--out{display:none}}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:.3rem .75rem;border-radius:var(--radius-sm);border:1px solid var(--color-border);background-color:var(--color-surface);color:inherit;font-family:inherit;cursor:pointer}button{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;font-family:Open Sans,system-ui,sans-serif;font-size:1rem;padding:.5rem .75rem;border-radius:var(--radius-sm);border:1px solid var(--color-border);background-color:var(--color-surface);color:inherit;cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:active{transform:translateY(0)}.selected{border-color:var(--color-selection-border);box-shadow:0 0 6px var(--color-selection-glow)}button.correct,.translate.correct{border-color:var(--color-positive-border);box-shadow:0 0 6px var(--color-positive-glow);background:var(--color-positive-bg)}button.incorrect,.translate.incorrect{border-color:var(--color-negative-border);box-shadow:0 0 6px var(--color-negative-glow)}main{flex-grow:1;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;display:flex;flex-direction:column;margin:0 auto;width:min(100%,37.5rem);padding-top:2.5rem;padding-bottom:var(--action-bar-clearance)}main[hidden]{display:none}main:has(.draw-card){overflow:hidden}.spinner{width:3rem;height:3rem;border-radius:50%;border:.3125rem solid var(--color-surface);border-top-color:var(--color-accent);animation:spin 1s linear infinite}.empty-state{text-align:center;color:var(--color-subtle-text)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.update-banner{position:fixed;bottom:5rem;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--color-surface);border:1px solid var(--color-accent);border-radius:var(--radius-md);box-shadow:var(--shadow-elevated);z-index:var(--z-dialog);max-width:calc(100vw - 2rem)}.update-banner__content{display:flex;flex-direction:column;gap:.5rem}.update-banner__message{display:flex;flex-direction:column;gap:.125rem}.update-banner__title{font-family:Open Sans,system-ui,sans-serif;font-size:.875rem;font-weight:600;color:var(--color-text)}.update-banner__warning{font-family:Open Sans,system-ui,sans-serif;font-size:.75rem;color:var(--color-accent)}.update-banner__actions{display:flex;gap:.5rem}.update-banner__later,.update-banner__backup,.update-banner__update{padding:.375rem .75rem;font-size:.75rem;font-weight:600;border-radius:var(--radius-sm);cursor:pointer}.update-banner__later,.update-banner__backup{background:transparent;border:1px solid var(--color-border);color:var(--color-text)}.update-banner__update{background:var(--color-accent);border:1px solid var(--color-accent);color:var(--color-bg)}.update-banner__dismiss{flex-shrink:0;padding:0;width:1.5rem;height:1.5rem;background:transparent;border:none;color:var(--color-subtle-text);font-size:1.25rem;line-height:1;cursor:pointer}@media (max-width: 400px){.update-banner{bottom:4.5rem;flex-direction:column;align-items:stretch}.update-banner__dismiss{position:absolute;top:.5rem;right:.5rem}}.sense__tag-pill{padding:.0625rem .375rem;border-radius:var(--radius-sm);background:var(--color-accent-light, rgba(127, 127, 127, .15));color:var(--color-text-secondary);font-size:.6875rem;line-height:1.4;vertical-align:baseline}.sense__russian .sense__tag-pill{margin-inline-start:.25rem}.sense-tag-pills{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.25rem}.modal[open]{position:relative;display:block;margin:auto;padding:0;border-radius:var(--radius-lg);border:none;background-color:var(--modal-bg);color:inherit;min-width:var(--modal-min-width);max-width:var(--modal-max-width);max-height:var(--modal-max-height);overflow:hidden}.modal .hanzi-writer-container{display:flex;justify-content:center;align-items:center}.modal .hanzi-writer-container:empty{display:none}.modal .character-group{display:flex;align-items:baseline;gap:.5rem}.modal .character-group:empty{display:none}.modal .character-group .word{font-size:var(--modal-word-font-size);color:var(--color-accent)}.modal .character-group .traditional{font-size:1.75rem;opacity:.6}.modal .character-group .traditional:empty{display:none}.modal .character-group .forms{font-size:1.25rem;opacity:.6}.modal .character-group .forms:empty{display:none}.modal::backdrop{background:var(--modal-backdrop-bg);-webkit-backdrop-filter:var(--modal-backdrop-blur);backdrop-filter:var(--modal-backdrop-blur)}.modal .components{display:flex;flex-direction:column}.modal .components:empty{display:none}.modal .components .character{font-size:1rem}.modal .readings-stack{display:flex;flex-direction:column;gap:1rem;width:100%}.modal .readings-stack:empty{display:none}.modal .reading{display:flex;flex-direction:column;gap:.75rem}.modal .reading[hidden]{display:none}.modal .readings-tabs{display:flex;flex-wrap:wrap;justify-content:center;gap:1rem;width:100%;padding:1rem 0}.modal .readings-tab{margin:0;padding:.15rem .75rem;font:inherit;font-size:1.1rem;font-weight:500;color:var(--color-text-secondary);background-color:transparent;border:1px solid var(--color-accent-soft);border-radius:var(--radius-sm);touch-action:manipulation;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}.modal button.readings-tab{cursor:pointer}@media (hover: hover){.modal button.readings-tab:hover{background-color:var(--color-accent-soft)}}.modal .readings-tab--active{color:var(--color-accent);background-color:var(--color-accent-soft);border-color:transparent}.modal .sense{display:flex;flex-direction:column;gap:.25rem}.modal .sense__russian{margin:0;line-height:1.4}.modal .sense__note{display:flex;flex-direction:column;gap:.375rem;color:var(--color-text-secondary)}.modal .note-paragraph{margin:0;line-height:1.5}.modal .note-paragraph strong{font-weight:500}.modal .note-list{margin:0;padding-left:1.25rem;display:flex;flex-direction:column;gap:.25rem}.modal .note-list li{line-height:1.5}.modal .note-quote{margin:0;padding:.375rem .75rem;border-left:.1875rem solid var(--color-accent);color:var(--color-text-secondary);line-height:1.5}.modal code{padding:.0625rem .25rem;border-radius:var(--radius-sm);background:var(--color-bg-secondary, rgba(127, 127, 127, .15));font-family:monospace;font-size:.875em}.modal .readings-stack .character{cursor:pointer}.modal .examples-section{display:flex;flex-direction:column;width:100%;padding-top:1rem}.modal .examples-section .entry-clickable{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.modal .examples-heading{font-size:.875rem}.modal .component-usages,.modal .word-usages{display:flex;flex-direction:column}.modal .component-usages:empty,.modal .word-usages:empty{display:none}.modal .frequency:empty{display:none}.modal .modal-header{position:absolute;width:100%;display:flex;justify-content:space-between;z-index:1}.modal .modal-content{display:flex;flex-direction:column;align-items:center;gap:var(--modal-gap);padding:var(--modal-padding);padding-top:2.5rem;width:100%;max-height:var(--modal-max-height);overflow-y:auto;overscroll-behavior:contain;box-sizing:border-box}.modal .icon-btn{padding:.8rem}.card{display:grid;flex-direction:column;gap:var(--card-gap);position:relative;contain:layout style}.word-head{display:flex;flex-direction:column;align-items:center;gap:var(--card-word-head-gap)}.word{display:flex;align-items:center;font-size:var(--font-size-word);font-weight:300}.word .traditional,.word .form{color:var(--color-subtle-text);font-size:var(--card-variant-font-size)}.character{cursor:pointer;color:var(--color-accent);touch-action:manipulation;-webkit-tap-highlight-color:transparent}.examples{display:flex;justify-content:center;gap:var(--card-gap)}.sentence{display:flex;justify-content:flex-end;align-items:center;font-size:var(--card-sentence-font-size);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.weight{position:absolute;top:var(--weight-position);right:var(--weight-position);display:inline-flex;align-items:center;gap:var(--weight-gap);font-size:var(--weight-font-size);font-family:JetBrainsMono,monospace;font-weight:600;color:var(--color-weight);text-shadow:0 0 .625rem var(--color-weight-shadow);opacity:0;transform:translateY(-.625rem);transition:opacity var(--weight-transition-duration) ease,transform var(--weight-transition-duration) ease;pointer-events:none;overflow:visible}.weight[data-weight="0"]:before{content:""}.weight[data-weight="0"]{opacity:0}.weight:before,.weight:after{display:inline-flex;color:inherit;opacity:0}.card[data-answered=correct] .weight{opacity:1;transform:translateY(0)}.card[data-answered=correct] .weight:before{opacity:.9}.question{display:flex;flex-direction:column;gap:var(--card-question-gap)}.tones,.translates{display:grid;gap:var(--card-buttons-gap)}.tones{font-family:NotoSansSC,system-ui,sans-serif;display:flex;flex-direction:column;gap:var(--tones-gap)}.syllable-buttons{display:grid;grid-template-columns:repeat(var(--syllable-columns),minmax(0,1fr));gap:var(--card-buttons-gap)}@keyframes syllable-pulse{0%{transform:scale(1);box-shadow:0 0 0 0 var(--color-accent-soft)}50%{transform:scale(.95);box-shadow:0 0 0 .25rem var(--color-accent-soft)}to{transform:scale(1);box-shadow:0 0 0 0 transparent}}.syllable.pulse{animation:syllable-pulse .15s ease-out}.translates{display:flex;flex-wrap:wrap;gap:var(--card-buttons-gap)}.translate{flex:1 1 0;min-width:fit-content;max-width:var(--translate-max-width)}.translate.long{flex-grow:2;max-width:100%;font-size:var(--translate-long-font-size)}.grammar-card{display:flex;flex-direction:column;gap:var(--card-gap);align-items:center;text-align:center;overscroll-behavior:contain;padding-block-start:clamp(1.5rem,14dvh,8rem);position:relative}.grammar-card .dislike-btn{position:absolute;top:.5rem;right:.5rem}.grammar-target{font-size:var(--card-sentence-font-size);color:var(--color-text)}.grammar-result{min-height:1.5rem;font-size:1.25rem;color:var(--color-text-secondary)}.grammar-textarea,.grammar-input{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);font-family:inherit;-webkit-user-select:text;user-select:text;-webkit-touch-callout:none;touch-action:manipulation;overscroll-behavior:contain;transition:border-color .15s ease,color .15s ease}.grammar-textarea{width:min(36rem,92%);font-size:var(--card-sentence-font-size);line-height:1.4;padding:.625rem .875rem;resize:none;text-align:center}.grammar-textarea:focus,.grammar-input:focus{outline:none;border-color:var(--color-accent)}.grammar-textarea.correct,.grammar-input.correct{border-color:var(--color-positive-border);color:var(--color-positive-text)}.grammar-textarea.incorrect,.grammar-input.incorrect{border-color:var(--color-negative-border);color:var(--color-negative-text)}.grammar-textarea.giveup,.grammar-input.giveup{border-color:var(--color-subtle-text);color:var(--color-text-secondary)}.grammar-fill .fill-blank-input{font-size:inherit;padding:.125rem .5rem;text-align:center;color:var(--color-accent);min-width:2.5rem}.grammar-rule{display:none;max-width:30rem;padding:.75rem 1rem;border-radius:var(--radius-md);background-color:var(--color-bg-secondary);color:var(--color-text-secondary);font-size:1rem;line-height:1.4}.grammar-rule.visible{display:flex;flex-direction:column;gap:.5rem;align-items:center}.tutor-btn{font-size:.9rem;padding:.4rem .75rem;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.grammar-rule.verdict-correct{color:var(--color-positive-text)}.grammar-rule.verdict-wrong{color:var(--color-negative-text)}.grammar-fill .fill-sentence{display:flex;flex-wrap:wrap;gap:.25rem;justify-content:center;align-items:baseline;font-size:2rem}.fill-blank-input{font-size:inherit;padding:.125rem .5rem;text-align:center;color:var(--color-accent);min-width:2.5rem}.translate-sentence{font-size:2.5rem;color:var(--color-text)}.translate-pinyin{min-height:1.25rem;font-size:1.1rem;color:var(--color-subtle-text)}.translate-reference{display:none;font-size:1.25rem;color:var(--color-text)}.translate-reference.visible{display:block}.grammar-rule-card{gap:1rem}.grammar-rule-title{font-size:2rem;color:var(--color-text)}.grammar-explanation{max-width:32rem;font-size:1.1rem;line-height:1.5;color:var(--color-text-secondary)}.modal.grammar-explanation .modal-header{justify-content:flex-end}.modal.grammar-explanation .modal-content{align-items:stretch;text-align:left}.grammar-explanation-loading,.grammar-explanation-error{color:var(--color-text-secondary);text-align:center}.grammar-explanation-confirmed{padding:.5rem .75rem;border-radius:var(--radius-sm);background:var(--color-positive-bg);color:var(--color-positive-text);font-size:.95rem;text-align:center}.grammar-explanation-retry{align-self:center;margin-top:.5rem;padding:.375rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);font-size:.875rem;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.grammar-explanation-retry:hover{color:var(--color-text);border-color:var(--color-text-secondary)}.menu-panel:focus{outline:none}.menu-toggle{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;padding:0;border:none;background:none}.menu-toggle__icon{display:block;width:100%;height:100%;background-color:var(--color-subtle-text);-webkit-mask:center/100% no-repeat url("data:image/svg+xml,%3Csvg xmlns%3D%22http%3A//www.w3.org/2000/svg%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 stroke%3D%22black%22 stroke-width%3D%221.6%22 stroke-linecap%3D%22round%22 stroke-linejoin%3D%22round%22%3E%3Ccircle cx%3D%2212%22 cy%3D%2212%22 r%3D%223.5%22/%3E%3Cpath d%3D%22M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09a1.65 1.65 0 0 0-1-1.51 1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09a1.65 1.65 0 0 0 1.51-1 1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33h.02a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51h.02a1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82v.02a1.65 1.65 0 0 0 1.51 1H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1Z%22/%3E%3C/svg%3E");mask:center/100% no-repeat url("data:image/svg+xml,%3Csvg xmlns%3D%22http%3A//www.w3.org/2000/svg%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 stroke%3D%22black%22 stroke-width%3D%221.6%22 stroke-linecap%3D%22round%22 stroke-linejoin%3D%22round%22%3E%3Ccircle cx%3D%2212%22 cy%3D%2212%22 r%3D%223.5%22/%3E%3Cpath d%3D%22M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09a1.65 1.65 0 0 0-1-1.51 1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09a1.65 1.65 0 0 0 1.51-1 1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33h.02a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51h.02a1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82v.02a1.65 1.65 0 0 0 1.51 1H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1Z%22/%3E%3C/svg%3E");transform-origin:center;transition:transform .12s ease-out}.menu-toggle.is-open .menu-toggle__icon{opacity:0}.menu-toggle:focus-visible:not(.is-open) .menu-toggle__icon{transform:rotate(30deg)}.menu-layer{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;justify-content:flex-start;align-items:flex-start;padding:clamp(1rem,5vw,3rem);opacity:0;transition:opacity var(--transition);z-index:var(--z-menu)}.menu-layer:not([inert]){opacity:1}.menu-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--color-overlay)}.menu-panel{position:relative;display:flex;flex-direction:column;gap:2rem;width:min(90vw,20rem);padding:1.5rem;border-radius:var(--radius-lg);border:1px solid var(--color-border);background-color:var(--color-surface);box-shadow:var(--shadow-elevated);transform:translateY(-.75rem);opacity:0;transition:transform var(--transition),opacity var(--transition);z-index:1}.menu-layer:not([inert]) .menu-panel{transform:translateY(0);opacity:1}.menu-section{display:flex;align-items:center;justify-content:space-between;gap:1rem}.menu-label{font-size:.9rem;color:var(--color-accent);font-family:Open Sans,system-ui,sans-serif;cursor:pointer}.menu-hint{margin:0;font-size:.85rem;line-height:1.4;color:var(--color-subtle-text)}.menu-link{color:var(--color-accent);font-size:.9rem;font-family:Open Sans,system-ui,sans-serif;text-decoration:none;transition:opacity var(--transition)}.menu-link:hover{opacity:.7}.menu-version{margin-top:auto;padding-top:.75rem;border-top:1px solid var(--color-border)}.version-label{font-size:.7rem;color:var(--color-subtle-text);font-family:JetBrains Mono,monospace;background:transparent;border:none;padding:0;cursor:pointer;text-align:left}.version-label:hover{color:var(--color-text)}.version-label:disabled{cursor:default;opacity:.6}.action-bar{position:absolute;left:0;right:0;bottom:2rem;z-index:var(--z-chrome);display:flex;justify-content:space-between;align-items:center;padding:0 2rem;gap:var(--action-bar-gap);pointer-events:none}.action-bar>*{pointer-events:auto}.fab{display:flex;align-items:center;justify-content:center;padding:0;border-radius:50%;cursor:pointer;box-shadow:var(--shadow-elevated);will-change:transform;transform:translateZ(0);transition:transform var(--transition),opacity var(--transition),color var(--transition),background-color var(--transition),border-color var(--transition)}.fab:active{transform:scale(.95)}.next-button{width:var(--next-button-size);height:var(--next-button-size);border:none;font-size:var(--next-button-font-size)}.next-button[data-state=hint]{background-color:var(--color-surface);color:var(--color-subtle-text);border:1px solid var(--color-border)}.next-button[data-state=next]{background-color:var(--color-accent);color:var(--color-bg);pointer-events:none;opacity:var(--next-inactive-opacity)}.card.ready~.action-bar .next-button[data-state=next],.next-button[data-state=next].active{pointer-events:auto;opacity:1}.next-button[data-state=theory]{background-color:var(--color-surface);color:var(--color-accent);border:1px solid var(--color-border);box-shadow:0 .125rem .5rem #00000026}.search-button{width:var(--search-button-size);height:var(--search-button-size);border:1px solid var(--color-border);font-size:var(--search-button-font-size);background-color:var(--color-surface);color:var(--color-subtle-text)}.search-button svg{width:1.25rem;height:1.25rem;transform:scaleX(-1)}.search-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-overlay);display:flex;flex-direction:column;overflow:hidden;overscroll-behavior:none}.search-layer[inert]{opacity:0;pointer-events:none}.search-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--color-overlay);backdrop-filter:var(--modal-backdrop-blur);-webkit-backdrop-filter:var(--modal-backdrop-blur);touch-action:none}.search-panel{position:relative;display:flex;flex-direction:column;width:100%;max-width:37.5rem;max-height:100%;margin:0 auto;overflow:hidden;transform:translateZ(0)}.search-header{display:flex;align-items:center;padding:var(--search-overlay-padding)}.search-input{flex:1;height:var(--search-input-height);padding:0 1rem;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-bg);color:var(--color-text);font-size:1rem;outline:none;transition:border-color var(--transition)}.search-input:focus{border-color:var(--color-accent)}.search-input::placeholder{color:var(--color-subtle-text)}.search-close{display:flex;align-items:center;justify-content:center;width:var(--search-input-height);height:var(--search-input-height);padding:0;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-accent);font-size:1.5rem;cursor:pointer;transition:color var(--transition)}.search-results{flex:1;display:flex;flex-direction:column;gap:var(--search-result-gap);padding:var(--search-overlay-padding);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.search-results:empty:before{content:attr(data-empty-text);display:flex;align-items:center;justify-content:center;height:10rem;color:var(--color-subtle-text);font-size:1rem}.search-hint{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;height:10rem;color:var(--color-subtle-text);text-align:center}.search-hint-icon{font-size:2rem;opacity:.5}.search-result{display:flex;flex-direction:column;gap:.5rem;padding:var(--search-result-padding);background:var(--color-surface);border-radius:var(--radius-lg);cursor:pointer;transition:background var(--transition);touch-action:manipulation;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}.search-result:active{background:var(--color-accent-soft)}.search-result__header{display:flex;align-items:baseline;gap:.75rem}.search-result__chinese{font-size:1.5rem;color:var(--color-text)}.search-result__pinyin{font-size:.9rem;color:var(--color-accent)}.search-result__senses{display:flex;flex-direction:column;gap:.5rem;padding-left:.5rem}.search-result__reading{display:flex;flex-direction:column;gap:.25rem;counter-reset:sense-num}.search-result__reading-pinyin{font-size:.9rem;color:var(--color-accent)}.search-result__sense{padding-left:.75rem;counter-increment:sense-num}.search-result__translation{font-size:.9rem;color:var(--color-subtle-text)}.search-result__sense:not(:only-of-type):before{content:counter(sense-num) ". ";color:var(--color-subtle-text)}.search-result__sense .sense__tag-pill{margin-inline-start:.25rem}.search-add-prompt{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:var(--search-result-padding);background:var(--color-surface);border-radius:var(--radius-lg);cursor:pointer;transition:background var(--transition);touch-action:manipulation;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}.search-add-prompt:active{background:var(--color-accent-soft)}.search-add-prompt>span{color:var(--color-subtle-text);font-size:.9rem}.search-add-query{color:var(--color-accent);font-weight:500}.search-add-action{color:var(--color-accent);font-size:.9rem;font-weight:500;white-space:nowrap}.cooldown-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem;text-align:center;color:var(--color-subtle-text)}.cooldown-state__title{font-size:1.25rem;color:var(--color-text)}.cooldown-state__timer{font-size:1.1rem;font-family:JetBrainsMono,monospace;color:var(--color-accent)}.cooldown-state__counter{font-size:.875rem}.cooldown-state__groups{display:flex;flex-direction:column;align-items:center;gap:.75rem;margin-top:1rem;padding-top:1.5rem;border-top:1px solid var(--color-border);width:100%}.cooldown-state__groups-label{font-size:.875rem}.cooldown-state__select{min-width:10rem;padding:.6rem 1rem;font-size:1rem;border-radius:var(--radius-sm);border:1px solid var(--color-border);background-color:var(--color-surface);color:var(--color-text);cursor:pointer}.loading-indicator{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--loading-bg);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:var(--z-dialog);color:var(--loading-text)}.loading-spinner{width:3.125rem;height:3.125rem;border:.25rem solid var(--loading-spinner-track);border-top-color:var(--loading-spinner-active);border-radius:50%;animation:loading-spin 1s linear infinite}@keyframes loading-spin{to{transform:rotate(360deg)}}.loading-message{margin-top:1.5rem;font-size:1.1rem;text-align:center}.error-modal{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--loading-bg);display:flex;align-items:center;justify-content:center;z-index:var(--z-dialog);padding:1rem}.error-content{background:var(--color-bg);padding:2rem;border-radius:.5rem;max-width:25rem;text-align:center}.error-content h3{color:var(--color-negative-text);margin:0 0 1rem;font-size:1.5rem}.error-content p{margin:0 0 1.5rem;color:var(--color-text);line-height:1.5}.error-dismiss{background:var(--color-accent);color:var(--loading-text);border:none;padding:.75rem 2rem;border-radius:.25rem;font-size:1rem;cursor:pointer;transition:opacity .2s}.error-dismiss:hover{opacity:.9}.editor-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-overlay);display:flex;flex-direction:column;overflow:hidden;overscroll-behavior:none}.editor-layer[inert]{opacity:0;pointer-events:none}.editor-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--modal-backdrop-bg);backdrop-filter:var(--modal-backdrop-blur);-webkit-backdrop-filter:var(--modal-backdrop-blur);touch-action:none}.editor-panel{position:relative;margin:0 auto;width:min(96vw,36rem);max-height:100%;display:flex;flex-direction:column;border-radius:var(--radius-lg);background:var(--modal-bg);color:var(--color-text);overflow:hidden}.editor-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;padding:.5rem .75rem}.editor-chinese{margin:0 auto;font-size:1.75rem;color:var(--color-accent)}.editor-form{display:flex;flex-direction:column;gap:1rem;flex:1;min-height:0;padding:1rem 1.25rem 1.25rem;overflow-y:auto;overscroll-behavior:contain}.editor-readings{display:flex;flex-direction:column;gap:3rem}.reading-block{display:flex;flex-direction:column;gap:1rem}.reading-block__header{display:flex;align-items:flex-start;gap:.5rem}.reading-block__header>.tag-field{flex:1;min-width:0}.reading-block__senses{display:flex;flex-direction:column;gap:1rem}.reading-block__add-sense{align-self:flex-start;display:inline-flex;align-items:center;gap:.25rem;padding:.375rem .625rem;border:1px dashed var(--color-border);border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);font-size:.8125rem;cursor:pointer;transition:all .15s ease;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.reading-block__add-sense:hover{border-color:var(--color-accent);color:var(--color-accent)}.editor-add-reading{align-self:flex-start;display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .875rem;border:1px solid var(--color-accent);border-radius:var(--radius-md);background:var(--color-accent-soft);color:var(--color-accent);font-size:.875rem;cursor:pointer;transition:all .15s ease;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.editor-add-reading:hover{background:var(--color-accent);color:var(--color-bg)}.sense-block{border:1px solid var(--color-border);border-radius:var(--radius-sm)}.sense-block__summary{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;padding:.5rem .625rem;list-style:none;cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:manipulation}.sense-block__summary::-webkit-details-marker{display:none}.sense-block__caret{flex-shrink:0;color:var(--color-text-secondary);transition:transform .15s ease}.sense-block[open]>.sense-block__summary>.sense-block__caret{transform:rotate(90deg)}.sense-block__summary>.archive-pill{margin-right:auto}.sense-block__body{display:flex;flex-direction:column;gap:.75rem;padding:.625rem;border-top:1px solid var(--color-border)}.editor-field{display:flex;flex-direction:column;gap:.375rem;overscroll-behavior:contain}.editor-label{font-size:.8125rem;font-weight:500;color:var(--color-text-secondary)}.editor-label-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.editor-label-row__lead,.editor-label-row__trail{display:flex;align-items:center;gap:.5rem}.editor-textarea{width:100%;min-height:2.25rem;padding:.5rem .625rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);font-size:.9375rem;line-height:1.4;font-family:inherit;resize:none;-webkit-user-select:text;user-select:text;-webkit-touch-callout:none;touch-action:manipulation;overscroll-behavior:contain;transition:border-color .15s ease}.editor-textarea:focus{outline:none;border-color:var(--color-accent)}.note-editor{display:flex;flex-direction:column;gap:.375rem}.note-editor__toggle{padding:.1875rem .5rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);font-size:.75rem;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.note-editor__toggle:hover{border-color:var(--color-accent);color:var(--color-accent)}.note-editor__preview:not([hidden]){padding:.5rem .625rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);font-size:.9375rem;line-height:1.4;display:flex;flex-direction:column;gap:.5rem}.note-editor__preview .note-paragraph{margin:0}.note-editor__preview .note-list{margin:0;padding-left:1.25rem;display:flex;flex-direction:column;gap:.25rem}.note-editor__preview .note-quote{margin:0;padding:.25rem .625rem;border-left:.1875rem solid var(--color-accent);color:var(--color-text-secondary)}.note-editor__preview code{padding:.0625rem .25rem;border-radius:var(--radius-sm);background:var(--color-bg-secondary, rgba(127, 127, 127, .15));font-family:monospace;font-size:.875em}.note-editor__preview .character{cursor:pointer;color:var(--color-accent)}.tag-chips{display:flex;flex-wrap:wrap;gap:.375rem}.tag-chips__chip{padding:.25rem .625rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);font-size:.75rem;cursor:pointer;transition:all .15s ease;touch-action:manipulation;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}.tag-chips__chip:hover{border-color:var(--color-accent)}.tag-chips__chip--active{border-color:var(--color-accent);background:var(--color-accent);color:#fff}.editor-section{display:flex;flex-direction:column;gap:.5rem}.editor-section[hidden]{display:none}.editor-section__label{font-size:.875rem;font-weight:500;color:var(--color-text-secondary)}.groups-field{display:flex;flex-wrap:wrap;gap:.5rem}.groups-field__item{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .625rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:transparent;font-size:.875rem;cursor:pointer;transition:all .15s ease;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.groups-field__item:has(input:checked){border-color:var(--color-accent);background:var(--color-accent-light, rgba(var(--color-accent-rgb), .1))}.groups-field__item input{margin:0;cursor:pointer}.groups-field__add{display:inline-flex;align-items:center;gap:.25rem;padding:.375rem .625rem;border:1px dashed var(--color-border);border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);font-size:.875rem;cursor:pointer;transition:all .15s ease;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.groups-field__add:hover{border-color:var(--color-accent);color:var(--color-accent)}.editor-errors{flex-shrink:0;display:flex;flex-direction:column;gap:.25rem;padding:0 1.25rem}.editor-errors:empty{display:none}.editor-error{margin:0;padding:.375rem .625rem;border-radius:var(--radius-sm);background:var(--color-danger-light, rgba(239, 68, 68, .1));color:var(--color-danger, #ef4444);font-size:.875rem}.editor-actions{flex-shrink:0;display:flex;justify-content:space-between;gap:.75rem;padding:.75rem 1.25rem 1.25rem;border-top:1px solid var(--color-border)}.editor-actions-left,.editor-actions-right{display:flex;gap:.5rem;flex-wrap:wrap}.editor-btn{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;padding:.5rem .875rem;border:1px solid transparent;border-radius:var(--radius-md);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .15s ease;touch-action:manipulation;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}.editor-btn[hidden]{display:none}.editor-btn--primary{background:var(--color-accent);color:#fff}.editor-btn--primary:hover{opacity:.9}.editor-btn--secondary{border-color:var(--color-border);background:transparent;color:var(--color-text)}.editor-btn--secondary:hover{background:var(--color-bg-hover)}.editor-btn--danger{border-color:var(--color-danger, #ef4444);background:transparent;color:var(--color-danger, #ef4444)}.editor-btn--danger:hover{background:var(--color-danger, #ef4444);color:#fff}.editor-btn:disabled{opacity:.5;cursor:not-allowed}@media (max-width: 480px){.editor-panel{width:100vw;max-width:100vw;border-radius:0}.editor-actions{flex-direction:column-reverse}.editor-actions-left,.editor-actions-right{width:100%}.editor-btn{flex:1}}.archive-pill{display:inline-flex;align-items:center;gap:.375rem;border-radius:var(--radius-sm);color:var(--color-text-secondary);cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:color .2s ease,background-color .2s ease}.archive-pill:focus-visible{outline:.125rem solid var(--color-accent);outline-offset:.125rem}.archive-pill input{position:absolute;width:0;height:0;margin:0;opacity:0;pointer-events:none}.archive-pill__mark{flex-shrink:0}.archive-pill:has(input:checked){color:var(--color-accent)}.archive-pill--icon-rotate .archive-pill__mark{transform:rotate(-180deg);transform-origin:center;transition:transform .5s ease}.archive-pill--icon-rotate:has(input:checked) .archive-pill__mark{transform:rotate(0)}.archive-pill--icon-reveal .archive-pill__mark{display:none;transition:opacity .2s ease}.archive-pill--icon-reveal:has(input:checked) .archive-pill__mark{display:inline-flex}.archive-pill--compact{padding:.25rem .5rem;font-size:.75rem}.dialog-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-dialog);display:flex;flex-direction:column;overflow:hidden;overscroll-behavior:none}.dialog-layer[inert]{opacity:0;pointer-events:none}.dialog-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--modal-backdrop-bg);backdrop-filter:var(--modal-backdrop-blur);-webkit-backdrop-filter:var(--modal-backdrop-blur);touch-action:none}.dialog-panel{position:relative;margin:auto;width:min(90vw,24rem);max-height:100%;padding:1.25rem;border-radius:var(--radius-lg);background:var(--modal-bg);color:var(--color-text);display:flex;flex-direction:column;gap:1rem;overflow:hidden;transform:translateZ(0)}.dialog-message{margin:0;font-size:1rem;line-height:1.4;white-space:pre-wrap}.dialog-input-wrap{display:block;overscroll-behavior:contain}.dialog-input-wrap[hidden]{display:none}.dialog-input{width:100%;padding:.625rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);color:var(--color-text);font-size:1rem;font-family:inherit;-webkit-user-select:text;user-select:text;touch-action:manipulation;overscroll-behavior:contain;transition:border-color .15s ease}.dialog-input:focus{outline:none;border-color:var(--color-accent)}.dialog-actions{display:flex;justify-content:flex-end;gap:.5rem}.editor-btn.dialog-confirm--danger{background:var(--dialog-confirm-danger-bg);border-color:var(--dialog-confirm-danger-bg);color:#fff}@media (max-width: 480px){.dialog-actions{flex-direction:column-reverse}.dialog-actions .editor-btn{width:100%}}.conflict-banner{position:fixed;top:0;left:0;right:0;z-index:var(--z-dialog);padding:.75rem 1rem;background:var(--color-warning-bg, #fef3c7);border-bottom:1px solid var(--color-warning-border, #f59e0b);animation:slideDown .3s ease-out}@keyframes slideDown{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}.conflict-banner-content{display:flex;align-items:center;gap:.75rem;max-width:37.5rem;margin:0 auto}.conflict-banner-icon{font-size:1.25rem;flex-shrink:0}.conflict-banner-text{flex:1}.conflict-banner-text strong{display:block;color:var(--color-warning-text, #92400e);font-size:.9rem}.conflict-banner-text p{margin:.25rem 0 0;color:var(--color-warning-text, #92400e);font-size:.8rem;opacity:.9}.conflict-banner-actions{display:flex;gap:.5rem;flex-shrink:0}.conflict-banner-btn{padding:.4rem .75rem;border-radius:var(--radius-sm);font-size:.8rem;font-weight:500;cursor:pointer;transition:all .15s ease}.conflict-banner-btn--primary{background:var(--color-warning-text, #92400e);color:#fff;border:none}.conflict-banner-btn--primary:hover{opacity:.9}.conflict-banner-btn--secondary{background:transparent;color:var(--color-warning-text, #92400e);border:1px solid var(--color-warning-text, #92400e)}.conflict-banner-btn--secondary:hover{background:#92400e1a}.resolver-dialog{position:fixed;max-width:31.25rem;width:90vw;max-height:85vh;padding:0;border:none;border-radius:var(--radius-lg);background:var(--modal-bg);color:var(--color-text);overflow:hidden}.resolver-dialog::backdrop{background:var(--modal-backdrop-bg);-webkit-backdrop-filter:var(--modal-backdrop-blur);backdrop-filter:var(--modal-backdrop-blur)}.resolver-header{display:flex;align-items:center;gap:1rem;padding:1rem 1.25rem;border-bottom:1px solid var(--color-border)}.resolver-title{margin:0;font-size:1.1rem;font-weight:600;flex:1}.resolver-counter{font-size:.85rem;color:var(--color-text-secondary);background:var(--color-bg-secondary);padding:.25rem .5rem;border-radius:var(--radius-sm)}.resolver-content{padding:1.25rem;overflow-y:auto;max-height:calc(85vh - 10rem)}.resolver-character{text-align:center;font-size:3rem;font-family:Noto Sans SC,system-ui,sans-serif;margin-bottom:.75rem}.resolver-message{text-align:center;color:var(--color-text-secondary);font-size:.9rem;margin:0 0 1rem}.resolver-comparison{margin-top:1rem}.resolver-table{width:100%;border-collapse:collapse;font-size:.9rem}.resolver-table th,.resolver-table td{padding:.5rem .75rem;text-align:left;border-bottom:1px solid var(--color-border)}.resolver-table th{font-weight:500;color:var(--color-text-secondary);font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}.resolver-field-name{font-weight:500;width:25%}.resolver-value{word-break:break-word;white-space:pre-wrap}.resolver-value--yours{background:#ef44440d}.resolver-value--new{background:#22c55e0d}.resolver-actions{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;border-top:1px solid var(--color-border);gap:1rem}.resolver-actions-left,.resolver-actions-right{display:flex;gap:.5rem}.resolver-btn{padding:.5rem 1rem;border-radius:var(--radius-md);font-size:.85rem;font-weight:500;cursor:pointer;transition:all .15s ease}.resolver-btn--primary{background:var(--color-accent);color:#fff;border:none}.resolver-btn--primary:hover{opacity:.9}.resolver-btn--secondary{background:var(--color-bg-secondary);color:var(--color-text);border:1px solid var(--color-border)}.resolver-btn--secondary:hover{background:var(--color-bg-hover)}.resolver-btn--outline{background:transparent;color:var(--color-text-secondary);border:1px solid var(--color-border);font-size:.8rem;padding:.4rem .75rem}.resolver-btn--outline:hover{border-color:var(--color-accent);color:var(--color-accent)}.resolver-btn:disabled{opacity:.5;cursor:not-allowed}@media (max-width: 480px){.conflict-banner-content{flex-wrap:wrap}.conflict-banner-actions{width:100%;justify-content:flex-end;margin-top:.5rem}.resolver-dialog{width:100vw;max-width:100vw;max-height:100vh;border-radius:0}.resolver-content{max-height:calc(100vh - 10rem)}.resolver-actions{flex-direction:column}.resolver-actions-left,.resolver-actions-right{width:100%;justify-content:center}}@keyframes particle-fly{0%{transform:translate(0) scale(.5);opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(var(--scale));opacity:0}}.particle{position:absolute;top:50%;left:50%;color:var(--color-positive-text);font-size:inherit;font-weight:700;pointer-events:none;opacity:0;animation:particle-fly .8s var(--delay) ease-out forwards}.icon-btn{display:flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);cursor:pointer}.icon-btn[hidden]{display:none}.icon-btn:focus{outline:none}.icon-btn svg{width:1.25rem;height:1.25rem;flex-shrink:0}.icon-btn--ghost{padding:.5rem;opacity:.5;transition:opacity .15s ease}.icon-btn--ghost:hover{opacity:1}.icon-btn--ghost:active{opacity:.8}.icon-btn--subtle{width:2rem;height:2rem;transition:background .15s ease,color .15s ease}.icon-btn--subtle:hover{background:var(--color-bg-hover);color:var(--color-text)}.icon-btn--subtle:active{opacity:.8}.icon-btn--danger{padding:.25rem;color:var(--color-danger);opacity:.7;transition:opacity .15s ease}.icon-btn--danger:hover{opacity:1}.icon-btn--danger:active{opacity:.85}.backspace-btn{margin-left:auto;padding:var(--syllable-delete-padding);min-width:var(--syllable-delete-min-width);font-size:var(--weight-font-size);color:var(--color-subtle-text);background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;transition:opacity var(--transition),color var(--transition),transform var(--transition);opacity:var(--syllable-inactive-opacity);pointer-events:none}.backspace-btn[data-state=action][data-action-state=loading]{pointer-events:none}.backspace-btn[data-state=action][data-action-state=loading]>svg{animation:backspace-action-spin .8s linear infinite}.backspace-btn[data-state=action][data-action-state=success]{color:var(--color-positive-text);border-color:var(--color-positive-text)}.backspace-btn[data-state=action][data-action-state=error]{color:var(--color-negative-text);border-color:var(--color-negative-text)}.backspace-btn[data-state=action]>svg{width:1.25rem;height:1.25rem}@keyframes backspace-action-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fill-row{display:flex;align-items:center;gap:var(--card-buttons-gap)}.fill-slot{padding:var(--syllable-slot-padding);text-align:center;color:var(--color-text-secondary)}.fill-slot.filled{color:var(--color-accent)}.fill-slot.correct{color:var(--color-positive-text)}.fill-slot.incorrect{color:var(--color-negative-text)}.fill-row:has(.fill-slot.filled) .backspace-btn{opacity:1;pointer-events:auto}.fill-row:has(.fill-slot.filled) .backspace-btn:active{transform:scale(.95)}.fill-row.validated .backspace-btn{pointer-events:none;opacity:var(--syllable-inactive-opacity)}.fill-row--vocab{font-size:var(--syllable-font-size);padding:var(--syllable-progress-padding);border-radius:var(--radius-sm)}.fill-row--vocab .fill-slot{min-height:var(--syllable-slot-min-height)}.dislike-btn{opacity:.45;transition:opacity .15s ease,color .15s ease}.dislike-btn:hover{opacity:1}.dislike-btn[data-active=true]{opacity:1;color:var(--color-danger)}.dislike-btn[data-active=true] svg{fill:currentColor}.menu-zoom-controls{display:flex;align-items:center;justify-content:space-between;gap:1rem}.zoom-controls-group{display:flex;align-items:center;gap:.5rem}.zoom-button{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-size:1.25rem;font-weight:500;cursor:pointer;transition:var(--transition);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.zoom-button:hover:not(:disabled){background:var(--color-hover);border-color:var(--color-accent)}.zoom-button:active:not(:disabled){transform:scale(.95)}.zoom-button:disabled{opacity:.4;cursor:not-allowed}.zoom-display{min-width:3rem;text-align:center;font-size:.875rem;font-variant-numeric:tabular-nums;color:var(--color-text-secondary)}.zoom-label{font-size:.9rem;color:var(--color-accent)}.tag-field{position:relative;display:flex;align-items:center;flex-wrap:wrap;gap:var(--card-buttons-gap);padding:var(--syllable-progress-padding);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);min-height:2.5rem;cursor:text;transition:border-color var(--transition)}.tag-field:focus-within{border-color:var(--color-accent)}.tag-field__item{display:inline-flex;align-items:center;padding:var(--syllable-slot-padding);min-height:var(--syllable-slot-min-height);border-radius:var(--radius-sm);color:var(--color-accent);font-size:var(--syllable-font-size)}.tag-field__input{flex:1;min-width:3rem;padding:.25rem;border:none;background:transparent;color:var(--color-text);font-size:var(--syllable-font-size);font-family:inherit;outline:none}.tag-field__input::placeholder{color:var(--color-subtle-text);opacity:.6}.tag-field__input--error{animation:tag-shake .3s ease}@keyframes tag-shake{0%,to{transform:translate(0)}25%{transform:translate(-.25rem)}75%{transform:translate(.25rem)}}.tag-field:has(.tag-field__item) .backspace-btn,.tag-field .backspace-btn[data-state=action]{opacity:1;pointer-events:auto}.tag-field:has(.tag-field__item) .backspace-btn:hover,.tag-field .backspace-btn[data-state=action]:hover{color:var(--color-accent)}.tag-field:has(.tag-field__item) .backspace-btn:active,.tag-field .backspace-btn[data-state=action]:active{transform:scale(.95)}.tag-field .backspace-btn{display:flex;align-items:center;justify-content:center;min-height:2.5rem}.tag-field__suggestions{display:none;gap:.25rem;position:absolute;top:100%;left:0;right:0;margin-top:.25rem;padding:.375rem;background:var(--modal-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);box-shadow:0 .25rem .75rem #00000026;z-index:var(--z-chrome)}.tag-field__suggestions--visible{display:flex}.tag-field__suggestion{flex:1;padding:.375rem .5rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);font-size:.9375rem;cursor:pointer;transition:border-color var(--transition)}.tag-field__suggestion:hover{border-color:var(--color-accent)}.tag-field--readonly{background:var(--color-bg-secondary);cursor:not-allowed}.tag-field--readonly .tag-field__input,.tag-field--readonly .backspace-btn{display:none}.field-ai-btn{display:flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);cursor:pointer;transition:color var(--transition),opacity var(--transition);flex-shrink:0;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.field-ai-btn:hover:not(:disabled){color:var(--color-text)}.field-ai-btn:disabled{cursor:not-allowed}.field-ai-btn__icon{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem}.field-ai-btn--loading{pointer-events:none}.field-ai-btn--loading .field-ai-btn__icon{animation:field-ai-spin .8s linear infinite}.field-ai-btn--success{color:var(--color-positive-text)}.field-ai-btn--error{color:var(--color-negative-text)}@keyframes field-ai-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.groups-manager[open]{position:relative;display:block;margin:auto;padding:0;border-radius:var(--radius-lg);border:none;background-color:var(--modal-bg);color:inherit;width:min(96vw,30rem);max-height:80vh;overflow:hidden}.groups-manager::backdrop{background:var(--modal-backdrop-bg);backdrop-filter:var(--modal-backdrop-blur);-webkit-backdrop-filter:var(--modal-backdrop-blur)}.groups-manager__header{position:sticky;top:0;z-index:1;display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.75rem 1rem;background:var(--modal-bg);border-bottom:1px solid var(--color-border)}.groups-manager__title{margin:0;font-size:1rem;font-weight:500;color:var(--color-text)}.groups-manager__close{border:none;background:transparent;color:var(--color-text-secondary);cursor:pointer;padding:.25rem;border-radius:var(--radius-sm);touch-action:manipulation;-webkit-tap-highlight-color:transparent}.groups-manager__close:hover{color:var(--color-text)}.groups-manager__content{padding:.5rem;max-height:calc(80vh - 3.5rem);overflow-y:auto;overscroll-behavior:contain}.groups-manager__section+.groups-manager__section{margin-top:1rem}.groups-manager__section-title{margin:.75rem .75rem .25rem;font-size:.75rem;font-weight:500;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em}.groups-manager__section-empty{margin:.5rem .75rem;color:var(--color-text-secondary);font-size:.875rem;opacity:.75}.groups-manager__list{list-style:none;margin:0;padding:0}.groups-manager__row{display:grid;grid-template-columns:1fr auto auto auto;align-items:center;gap:.5rem;padding:.625rem .75rem;border-bottom:1px solid var(--color-border)}.groups-manager__row:last-child{border-bottom:none}.groups-manager__name{font-size:.9375rem;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.groups-manager__count{font-size:.8125rem;color:var(--color-text-secondary);padding:.125rem .5rem;background:var(--color-bg-secondary, rgba(127, 127, 127, .1));border-radius:999rem;min-width:1.5rem;text-align:center}.groups-manager__action{display:inline-flex;align-items:center;gap:.25rem;padding:.375rem .625rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:transparent;color:var(--color-text);font-size:.8125rem;cursor:pointer;transition:all .15s ease;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.groups-manager__action:hover{border-color:var(--color-accent);color:var(--color-accent)}.groups-manager__delete:hover{border-color:var(--color-danger, #d9534f);color:var(--color-danger, #d9534f)}.groups-manager__action:disabled{opacity:.5;cursor:not-allowed}.groups-field__manage{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;border:1px dashed var(--color-border);border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);font-size:.8125rem;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.groups-field__manage:hover{border-color:var(--color-accent);color:var(--color-accent)}.groups-context-menu{position:fixed;z-index:var(--z-dialog);display:flex;flex-direction:column;min-width:8rem;padding:.25rem;border-radius:var(--radius-sm);background:var(--modal-bg);border:1px solid var(--color-border);box-shadow:0 .25rem .75rem #00000040}.groups-context-menu__item{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .75rem;border:none;background:transparent;color:var(--color-text);font-size:.875rem;cursor:pointer;text-align:left;border-radius:var(--radius-sm);touch-action:manipulation;-webkit-tap-highlight-color:transparent}.groups-context-menu__item:hover{background:var(--color-bg-secondary, rgba(127, 127, 127, .1))}.groups-context-menu__item--danger{color:var(--color-danger, #d9534f)}.ai-fill-btn{padding:.5rem;border-radius:50%;background:transparent;color:var(--color-text-secondary);cursor:pointer;transition:color var(--transition),opacity var(--transition)}.ai-fill-btn:hover:not(:disabled){color:var(--color-text)}.ai-fill-btn:disabled{cursor:not-allowed}.ai-fill-btn__icon{flex-shrink:0}.ai-fill-btn--loading{pointer-events:none;animation:ai-fill-glow 1.5s ease-in-out infinite}.ai-fill-btn--loading .ai-fill-btn__icon{animation:ai-fill-pulse 1.3s ease-in-out infinite}.ai-fill-btn--success{color:var(--color-positive-text)}.ai-fill-btn--error{color:var(--color-negative-text)}@keyframes ai-fill-pulse{0%,to{filter:brightness(.3)}50%{filter:brightness(2)}}@keyframes ai-fill-glow{0%,to{box-shadow:0 0 .25rem var(--color-accent-soft)}50%{box-shadow:0 0 1rem var(--color-accent)}}.ai-icon{flex-shrink:0;vertical-align:middle;color:var(--color-text, inherit)}
