@import"https://fonts.googleapis.com/css2?family=M+PLUS+1p:wght@400;500;600;700;800;900&family=Noto+Sans+JP:wght@400..900&family=Noto+Sans+KR:wght@400..900&display=swap";@keyframes marching-ants{0%{background-position:0 0,0 100%,0 0,100% 0}to{background-position:20px 0,-20px 100%,0 -20px,100% 20px}}:root{--rc-drag-handle-size: 12px;--rc-drag-handle-mobile-size: 24px;--rc-drag-handle-bg-colour: rgba(0, 0, 0, .2);--rc-drag-bar-size: 6px;--rc-border-color: rgba(255, 255, 255, .7);--rc-focus-color: #0088ff}.ReactCrop{position:relative;display:inline-block;cursor:crosshair;max-width:100%}.ReactCrop *,.ReactCrop *:before,.ReactCrop *:after{box-sizing:border-box}.ReactCrop--disabled,.ReactCrop--locked{cursor:inherit}.ReactCrop__child-wrapper{overflow:hidden;max-height:inherit}.ReactCrop__child-wrapper>img,.ReactCrop__child-wrapper>video{display:block;max-width:100%;max-height:inherit}.ReactCrop:not(.ReactCrop--disabled) .ReactCrop__child-wrapper>img,.ReactCrop:not(.ReactCrop--disabled) .ReactCrop__child-wrapper>video{touch-action:none}.ReactCrop:not(.ReactCrop--disabled) .ReactCrop__crop-selection{touch-action:none}.ReactCrop__crop-mask{position:absolute;inset:0;pointer-events:none;width:calc(100% + .5px);height:calc(100% + .5px)}.ReactCrop__crop-selection{position:absolute;top:0;left:0;transform:translateZ(0);cursor:move}.ReactCrop--disabled .ReactCrop__crop-selection{cursor:inherit}.ReactCrop--circular-crop .ReactCrop__crop-selection{border-radius:50%}.ReactCrop--circular-crop .ReactCrop__crop-selection:after{pointer-events:none;content:"";position:absolute;inset:-1px;border:1px solid var(--rc-border-color);opacity:.3}.ReactCrop--no-animate .ReactCrop__crop-selection{outline:1px dashed white}.ReactCrop__crop-selection:not(.ReactCrop--no-animate .ReactCrop__crop-selection){animation:marching-ants 1s;background-image:linear-gradient(to right,#fff 50%,#444 50%),linear-gradient(to right,#fff 50%,#444 50%),linear-gradient(to bottom,#fff 50%,#444 50%),linear-gradient(to bottom,#fff 50%,#444 50%);background-size:10px 1px,10px 1px,1px 10px,1px 10px;background-position:0 0,0 100%,0 0,100% 0;background-repeat:repeat-x,repeat-x,repeat-y,repeat-y;color:#fff;animation-play-state:running;animation-timing-function:linear;animation-iteration-count:infinite}.ReactCrop__crop-selection:focus{outline:2px solid var(--rc-focus-color);outline-offset:-1px}.ReactCrop--invisible-crop .ReactCrop__crop-mask,.ReactCrop--invisible-crop .ReactCrop__crop-selection{display:none}.ReactCrop__rule-of-thirds-vt:before,.ReactCrop__rule-of-thirds-vt:after,.ReactCrop__rule-of-thirds-hz:before,.ReactCrop__rule-of-thirds-hz:after{content:"";display:block;position:absolute;background-color:#fff6}.ReactCrop__rule-of-thirds-vt:before,.ReactCrop__rule-of-thirds-vt:after{width:1px;height:100%}.ReactCrop__rule-of-thirds-vt:before{left:33.3333333333%}.ReactCrop__rule-of-thirds-vt:after{left:66.6666666667%}.ReactCrop__rule-of-thirds-hz:before,.ReactCrop__rule-of-thirds-hz:after{width:100%;height:1px}.ReactCrop__rule-of-thirds-hz:before{top:33.3333333333%}.ReactCrop__rule-of-thirds-hz:after{top:66.6666666667%}.ReactCrop__drag-handle{position:absolute;width:var(--rc-drag-handle-size);height:var(--rc-drag-handle-size);background-color:var(--rc-drag-handle-bg-colour);border:1px solid var(--rc-border-color)}.ReactCrop__drag-handle:focus{background:var(--rc-focus-color)}.ReactCrop .ord-nw{top:0;left:0;transform:translate(-50%,-50%);cursor:nw-resize}.ReactCrop .ord-n{top:0;left:50%;transform:translate(-50%,-50%);cursor:n-resize}.ReactCrop .ord-ne{top:0;right:0;transform:translate(50%,-50%);cursor:ne-resize}.ReactCrop .ord-e{top:50%;right:0;transform:translate(50%,-50%);cursor:e-resize}.ReactCrop .ord-se{bottom:0;right:0;transform:translate(50%,50%);cursor:se-resize}.ReactCrop .ord-s{bottom:0;left:50%;transform:translate(-50%,50%);cursor:s-resize}.ReactCrop .ord-sw{bottom:0;left:0;transform:translate(-50%,50%);cursor:sw-resize}.ReactCrop .ord-w{top:50%;left:0;transform:translate(-50%,-50%);cursor:w-resize}.ReactCrop__disabled .ReactCrop__drag-handle{cursor:inherit}.ReactCrop__drag-bar{position:absolute}.ReactCrop__drag-bar.ord-n{top:0;left:0;width:100%;height:var(--rc-drag-bar-size);transform:translateY(-50%)}.ReactCrop__drag-bar.ord-e{right:0;top:0;width:var(--rc-drag-bar-size);height:100%;transform:translate(50%)}.ReactCrop__drag-bar.ord-s{bottom:0;left:0;width:100%;height:var(--rc-drag-bar-size);transform:translateY(50%)}.ReactCrop__drag-bar.ord-w{top:0;left:0;width:var(--rc-drag-bar-size);height:100%;transform:translate(-50%)}.ReactCrop--new-crop .ReactCrop__drag-bar,.ReactCrop--new-crop .ReactCrop__drag-handle,.ReactCrop--fixed-aspect .ReactCrop__drag-bar,.ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-n,.ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-e,.ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-s,.ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-w{display:none}@media(pointer:coarse){.ReactCrop .ord-n,.ReactCrop .ord-e,.ReactCrop .ord-s,.ReactCrop .ord-w{display:none}.ReactCrop__drag-handle{width:var(--rc-drag-handle-mobile-size);height:var(--rc-drag-handle-mobile-size)}}:root{color-scheme:light dark;--font-sans: "M PLUS 1p", "Noto Sans JP", "Noto Sans KR", "Hiragino Sans", "Yu Gothic UI", "Apple SD Gothic Neo", "Malgun Gothic", "PingFang SC", system-ui, sans-serif;--font-display: "M PLUS 1p", "Noto Sans JP", "Noto Sans KR", "Hiragino Sans", "Yu Gothic", sans-serif;--font-mono: ui-monospace, "SFMono-Regular", Consolas, monospace;--font-serif: var(--font-display);--font-ui: var(--font-sans);--font-reading: var(--font-display);--font-broadcast-label: var(--font-sans);--type-xs: .75rem;--type-sm: .875rem;--type-md: 1rem;--type-lg: 1.125rem;--type-xl: clamp(1.25rem, 2vw, 1.5rem);--type-display: clamp(2rem, 5vw, 4rem);--leading-tight: 1.15;--leading-body: 1.55;--canvas: #f1f4f2;--canvas-deep: #e1e8e4;--paper: #fbfdfc;--paper-warm: #f5e8c8;--ink: #142722;--ink-secondary: #435b54;--ink-muted: #647870;--action: #176b5b;--action-hover: #105446;--action-soft: #dcece6;--action-focus: #d69a28;--correction: #b84035;--correction-soft: #f4dfdc;--annotation: #2e675d;--paper-line: #cbd6d1;--paper-line-strong: #82968e;--program-navy: #142722;--on-program-navy: #f4f8f6;--program-navy-muted: #b7c8c1;--chapter-reading: #267568;--chapter-writing: #b84035;--chapter-free: #3b7567;--chapter-free-soft: #deece7;--canvas-grid-line: transparent;--overlay-backdrop: rgba(9, 24, 19, .66);--overlay-dim: rgba(9, 24, 19, .52);--overlay-handwriting: rgba(9, 24, 19, .46);--loading-scrim: rgba(251, 253, 252, .9);--surface: var(--paper);--surface-raised: var(--paper);--surface-subtle: var(--paper-warm);--text-primary: var(--ink);--text-secondary: var(--ink-secondary);--text-disabled: var(--ink-muted);--border-subtle: var(--paper-line);--border-strong: var(--paper-line-strong);--action-primary: var(--action);--action-primary-hover: var(--action-hover);--on-action: #f4f8f6;--success: #26725a;--success-soft: #dcece5;--warning: #845b0d;--warning-soft: #f5e8c8;--danger: var(--correction);--danger-soft: var(--correction-soft);--info: var(--annotation);--info-soft: var(--action-soft);--focus-outline: var(--action-primary);--focus-halo: color-mix(in srgb, var(--action-focus) 62%, transparent);--space-2: 2px;--space-4: 4px;--space-8: 8px;--space-12: 12px;--space-16: 16px;--space-20: 20px;--space-24: 24px;--space-32: 32px;--space-48: 48px;--space-64: 64px;--radius-8: 8px;--radius-12: 12px;--radius-16: 16px;--radius-24: 16px;--radius-pill: 12px;--shadow-paper: 0 10px 28px rgba(20, 39, 34, .12);--shadow-paper-compact: 0 3px 10px rgba(20, 39, 34, .1);--shadow-action: 0 4px 12px rgba(23, 107, 91, .24);--shadow-overlay: 0 22px 56px rgba(9, 24, 19, .3);--shadow-card: var(--shadow-paper-compact);--shadow-raised: var(--shadow-paper);--shadow-dialog: var(--shadow-overlay);--control-44: 44px;--control-48: 48px;--control-56: 56px;--content-reading-max: 42rem;--content-workspace-max: 76rem;--content-browser-max: 80rem;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px);--sheet-mobile-top-gap: var(--space-8);--motion-fast: .1s;--motion-normal: .18s;--motion-slow: .26s;--motion-reduced: .01ms;--ease-standard: cubic-bezier(.22, 1, .36, 1);--ease-spring: var(--ease-standard);--bg-main: var(--canvas);--bg-color: var(--canvas);--card-bg: var(--surface-raised);--text-main: var(--text-primary);--text-muted: var(--text-secondary);--accent: var(--action-primary);--accent-soft: var(--action-soft);--error: var(--danger);--line: var(--border-subtle);--ring: var(--action-focus);--shadow: var(--shadow-card);--washi: var(--paper)}@media(prefers-color-scheme:dark){:root{color-scheme:dark;--canvas: #101815;--canvas-deep: #17231f;--paper: #1b2924;--paper-warm: #493b1e;--ink: #edf4f0;--ink-secondary: #bdccc5;--ink-muted: #91a59c;--action: #70c7b0;--action-hover: #8bd8c4;--on-action: #10211b;--action-soft: #234037;--action-focus: #d8a542;--correction: #ff8d81;--correction-soft: #542d2b;--annotation: #88cdbb;--paper-line: #3d5149;--paper-line-strong: #7d9389;--program-navy: #0b1411;--on-program-navy: #edf4f0;--program-navy-muted: #a8bbb2;--chapter-reading: #70c7b0;--chapter-writing: #ff8d81;--chapter-free: #87c7b3;--chapter-free-soft: #223f36;--overlay-backdrop: rgba(2, 8, 6, .8);--overlay-dim: rgba(2, 8, 6, .66);--overlay-handwriting: rgba(2, 8, 6, .62);--loading-scrim: rgba(27, 41, 36, .92);--success: #73cfaa;--success-soft: #203d33;--warning: #f1c56e;--warning-soft: #493b1e;--focus-halo: color-mix(in srgb, var(--action-focus) 58%, transparent);--shadow-paper: 0 12px 30px rgba(0, 0, 0, .34);--shadow-paper-compact: 0 4px 12px rgba(0, 0, 0, .3);--shadow-action: 0 4px 14px rgba(0, 0, 0, .36);--shadow-overlay: 0 24px 60px rgba(0, 0, 0, .54)}}@media(prefers-reduced-motion:reduce){:root{--motion-fast: var(--motion-reduced);--motion-normal: var(--motion-reduced);--motion-slow: var(--motion-reduced)}}*{box-sizing:border-box;-webkit-font-smoothing:antialiased}.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}html,body,#root,.app-container{height:100dvh}body{margin:0;padding:0;overflow:hidden;background:var(--canvas);color:var(--text-primary);font-family:var(--font-ui);font-size:var(--type-md);line-height:var(--leading-body)}#root{background:inherit}.app-container{background:transparent}::selection{background:var(--action-soft);color:var(--text-primary)}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--focus-outline);outline-offset:3px;box-shadow:0 0 0 3px var(--focus-halo)}.app-container{width:100%;max-width:none;margin:0;padding:0;display:flex;flex-direction:column;overflow:hidden;position:relative}.app-container--practice{width:100%}.page-frame{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden}.page-frame--practice{overflow:hidden}.sheet-shell{display:flex;flex-direction:column;min-height:0}.sheet-header{z-index:2}.sheet-content{flex:1;min-height:0}.sheet-footer{z-index:2}.content-container{width:100%;min-width:0;margin-inline:auto;padding-left:max(var(--space-16),var(--safe-left));padding-right:max(var(--space-16),var(--safe-right))}.content-container--reading{max-width:var(--content-reading-max)}.content-container--workspace{max-width:var(--content-workspace-max)}.content-container--browser{max-width:var(--content-browser-max)}.content-container--full{max-width:none}@media(min-width:640px){.content-container{padding-left:max(var(--space-24),var(--safe-left));padding-right:max(var(--space-24),var(--safe-right))}}.setting-label{font-size:var(--type-sm);font-weight:700;color:var(--text-secondary);margin-bottom:var(--space-4)}.setting-hint{margin-bottom:var(--space-8);color:var(--text-disabled);font-size:var(--type-xs);line-height:var(--leading-body)}.chip-select{display:flex;gap:var(--space-8);margin-bottom:var(--space-16);flex-wrap:wrap}.chip-item{min-width:52px;min-height:var(--control-44);padding:var(--space-8) var(--space-12);flex:1;border:1px solid var(--border-strong);border-radius:var(--radius-12);background:var(--surface-raised);color:var(--text-primary);font-family:inherit;font-size:var(--type-sm);font-weight:800;line-height:1.2;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard),opacity var(--motion-fast) var(--ease-standard)}.chip-item.selected{border-color:var(--action-primary);background:var(--action-primary);color:var(--on-action);box-shadow:var(--shadow-action)}@media(hover:hover){.chip-item:not(.selected,:disabled):hover{border-color:var(--action-primary);background:var(--action-soft)}.chip-item.selected:not(:disabled):hover{background:var(--action-primary-hover)}}.chip-item:disabled{box-shadow:none;opacity:.55;cursor:not-allowed}.chip-item:not(:disabled):active{transform:translateY(1px);box-shadow:0 2px 8px color-mix(in srgb,var(--action-primary) 18%,transparent)}@media(min-width:640px){.chip-item{font-size:var(--type-sm)}}.primary-btn{display:flex;align-items:center;justify-content:center;width:100%;min-height:var(--control-48);padding:var(--space-12) var(--space-16);background:var(--action-primary);color:var(--on-action);border:1px solid transparent;border-radius:var(--radius-12);box-shadow:var(--shadow-action);font-size:var(--type-md);font-weight:800;letter-spacing:0;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard),opacity var(--motion-normal) var(--ease-standard)}@media(hover:hover){.primary-btn:not(:disabled):hover{background:var(--action-primary-hover)}}.primary-btn:disabled{box-shadow:none;opacity:.55;cursor:not-allowed}.primary-btn:not(:disabled):active{transform:translateY(1px);box-shadow:0 2px 8px color-mix(in srgb,var(--action-primary) 18%,transparent)}.ui-icon-button{width:var(--control-44);height:var(--control-44);min-width:var(--control-44);min-height:var(--control-44);display:inline-grid;place-items:center;padding:0;border:1px solid var(--border-subtle);border-radius:var(--radius-12);background:var(--surface-raised);color:var(--text-primary);box-shadow:none;font:inherit;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard),opacity var(--motion-fast) var(--ease-standard)}@media(hover:hover){.ui-icon-button:not(:disabled):hover{background:var(--action-soft);color:var(--action-primary-hover)}}.ui-icon-button:not(:disabled):active{transform:translateY(1px);box-shadow:none}.ui-icon-button:disabled{box-shadow:none;opacity:.55;cursor:not-allowed}.adaptive-dialog-portal{position:relative;z-index:200}.adaptive-dialog-backdrop{position:fixed;inset:0;display:flex;align-items:flex-end;justify-content:center;padding:calc(var(--safe-top) + var(--space-8)) var(--safe-right) var(--safe-bottom) var(--safe-left);background:var(--overlay-backdrop);overscroll-behavior:contain}.adaptive-dialog{width:100%;max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - var(--space-8));border:1px solid var(--border-subtle);border-radius:var(--radius-16) var(--radius-16) 0 0;background:var(--surface);color:var(--text-primary);box-shadow:var(--shadow-dialog);outline:none}.adaptive-dialog__title{margin:0}@media(min-width:640px){.adaptive-dialog-backdrop{align-items:center;padding:var(--space-32)}.adaptive-dialog{width:min(100%,32rem);max-height:min(90dvh,48rem);border-radius:var(--radius-24)}}@media(prefers-reduced-motion:reduce){.chip-item:not(:disabled):active,.primary-btn:not(:disabled):active,.ui-icon-button:not(:disabled):active{transform:none}}.home-page{flex:1;min-height:0;overflow-y:auto;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;scroll-padding-bottom:calc(var(--control-56) + var(--space-48) + var(--safe-bottom));background:transparent}.home-workspace{min-height:100%;padding-top:max(var(--space-16),var(--safe-top));padding-bottom:calc(var(--control-56) + var(--space-48) + var(--safe-bottom))}.home-layout,.home-primary,.home-secondary{display:flex;min-width:0;flex-direction:column}.home-layout,.home-primary,.home-secondary{gap:var(--space-16)}.home-header{display:grid;margin-bottom:var(--space-24);padding-bottom:var(--space-16);grid-template-areas:"brand utility" "language language";grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--space-12) var(--space-8);border-bottom:1px solid var(--border-subtle)}.home-brand{display:flex;min-width:0;grid-area:brand;align-items:center;gap:var(--space-12)}.home-logo{display:grid;width:var(--control-44);height:var(--control-44);flex:0 0 auto;place-items:center;border-radius:var(--radius-12);background:var(--program-navy);color:var(--on-program-navy);font-family:var(--font-display);font-size:1.35rem;font-weight:900}.home-title{display:flex;min-width:0;margin:0;flex-direction:column;color:var(--text-primary);font-family:var(--font-display);font-size:1.05rem;font-weight:900;letter-spacing:-.02em;line-height:1.15}.home-title small{margin-top:var(--space-4);color:var(--text-secondary);font-family:var(--font-ui);font-size:.7rem;font-weight:700;letter-spacing:.03em}.home-title>span,.home-title small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.home-top-controls{display:contents}.home-utility-actions,.home-preferences{display:grid;min-width:0;align-items:center;gap:var(--space-8)}.home-utility-actions{grid-area:utility;grid-auto-flow:column;grid-auto-columns:var(--control-44)}.home-preferences{width:100%;grid-area:language}.home-help-btn{display:inline-flex;width:var(--control-44);min-width:var(--control-44);min-height:var(--control-44);padding:0;align-items:center;justify-content:center;gap:var(--space-8);border:1px solid var(--border-subtle);border-radius:var(--radius-8);background:var(--surface-raised);box-shadow:none;color:var(--text-secondary);font:inherit;font-size:.8rem;font-weight:800;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard)}.home-help-btn span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.home-lang{display:grid;width:100%;min-width:0;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:var(--space-8);color:var(--text-secondary);font-size:.75rem}.home-lang select{width:100%;min-width:0;min-height:var(--control-44);padding:var(--space-8) var(--space-12);overflow:hidden;border:1px solid var(--border-subtle);border-radius:var(--radius-8);background:var(--surface-raised);box-shadow:none;color:var(--text-primary);font-family:var(--font-ui);font-size:.875rem;font-weight:700;text-overflow:ellipsis}.home-today{position:relative;width:100%;padding:var(--space-24);overflow:hidden;border:1px solid var(--border-subtle);border-radius:var(--radius-16);background:var(--surface-raised);box-shadow:var(--shadow-raised);text-align:left}.home-today:after{position:absolute;inset:0 0 auto;height:var(--space-8);background:var(--action-primary);content:""}.home-today[data-entry-kind=free]:after{background:var(--chapter-free)}.home-today h2{max-width:18ch;margin:0;color:var(--text-primary);font-family:var(--font-display);font-size:clamp(2rem,9vw,3.25rem);font-weight:900;letter-spacing:-.035em;line-height:1.02;text-wrap:balance}.home-today>span{display:block;max-width:65ch;margin-top:var(--space-12);color:var(--text-secondary);font-size:.875rem;font-weight:600;line-height:1.55}.home-program-metrics{display:grid;margin-top:var(--space-24);padding-top:var(--space-16);grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-8);border-top:1px solid var(--border-subtle)}.home-program-metrics span{display:flex;min-width:0;margin:0;flex-direction:column;gap:var(--space-4);color:var(--text-secondary);font-size:.7rem;font-weight:700;line-height:1.25;overflow-wrap:anywhere}.home-program-metrics strong{color:var(--text-primary);font-family:var(--font-display);font-size:1.15rem;font-weight:900;line-height:1}.mode-card-set{display:flex;flex-direction:column;gap:var(--space-8)}.mode-card{position:relative;display:flex;width:100%;min-height:var(--control-56);padding:var(--space-12) var(--space-16);align-items:center;gap:var(--space-12);border:1px solid var(--border-subtle);border-radius:var(--radius-12);background:var(--surface-raised);box-shadow:none;color:inherit;font:inherit;text-align:left;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard),opacity var(--motion-fast) var(--ease-standard)}.mode-card:after{width:var(--space-12);height:var(--space-12);margin-left:auto;flex:0 0 auto;border:1px solid var(--border-strong);border-radius:var(--radius-pill);background:var(--surface-raised);content:""}.mode-card.selected{border-color:var(--action-primary);background:var(--action-soft)}.mode-card.selected:after{background:var(--action-primary)}.mode-card:not(:disabled):active{transform:translateY(1px)}.mode-card-icon{display:grid;width:var(--control-44);height:var(--control-44);flex:0 0 auto;place-items:center;border-radius:var(--radius-8);background:var(--action-soft);color:var(--action-primary);font-family:var(--font-display);font-size:1.35rem;font-weight:900}.mode-card:nth-of-type(2) .mode-card-icon{background:var(--correction-soft);color:var(--danger)}.mode-card:nth-of-type(3) .mode-card-icon{background:var(--chapter-free-soft);color:var(--chapter-free)}.mode-card-text{min-width:0;flex:1}.mode-card-text strong{display:block;color:var(--text-primary);font-family:var(--font-display);font-size:1rem;font-weight:900;letter-spacing:-.02em}.mode-card-text p{margin:var(--space-4) 0 0;color:var(--text-secondary);font-size:.8rem;font-weight:600;line-height:1.45}.mode-card:disabled{box-shadow:none;opacity:.55;cursor:not-allowed}.home-persistence-status{display:flex;width:100%;min-height:var(--control-44);margin:0 0 var(--space-16);padding:var(--space-12) var(--space-16);align-items:center;justify-content:space-between;gap:var(--space-12);border:1px solid var(--danger);border-radius:var(--radius-12);background:var(--correction-soft);color:var(--text-primary);font-size:.8rem;font-weight:700}.home-persistence-status button{min-height:var(--control-44);padding:0 var(--space-8);border:0;background:transparent;color:var(--danger);font:inherit;font-weight:800;text-decoration:underline;cursor:pointer}.home-reading-scope{display:grid;padding:var(--space-16);grid-template-columns:minmax(0,1fr);gap:var(--space-12);border:1px solid var(--border-subtle);border-radius:var(--radius-12);background:var(--surface-raised)}.home-reading-scope h2{margin:0;color:var(--text-primary);font-family:var(--font-display);font-size:1rem;font-weight:900;letter-spacing:-.02em}.home-reading-scope p{margin:var(--space-4) 0 0;color:var(--text-secondary);font-size:.75rem;font-weight:600;line-height:1.45}.home-reading-scope .chip-select{margin-bottom:0}.free-settings{overflow:hidden}.free-settings-inner{padding:var(--space-16);border:1px solid var(--chapter-free);border-radius:var(--radius-12);background:var(--chapter-free-soft)}.custom-checkboxes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-8)}.custom-checkbox{display:flex;min-height:var(--control-44);padding:var(--space-8) var(--space-12);align-items:center;gap:var(--space-8);border:1px solid var(--border-subtle);border-radius:var(--radius-8);background:var(--surface-raised);color:var(--text-primary);font-size:.8rem;font-weight:800;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard),opacity var(--motion-fast) var(--ease-standard)}.custom-checkbox:has(input:checked){border-color:var(--action-primary);background:var(--action-soft);box-shadow:inset 0 0 0 1px var(--action-primary)}.custom-checkbox input{width:var(--space-20);height:var(--space-20);accent-color:var(--action-primary);flex:0 0 auto}.custom-checkbox:has(input:disabled){box-shadow:none;opacity:.55;cursor:not-allowed}.free-settings-warning{margin:var(--space-8) 0 0;color:var(--danger);font-size:.75rem;font-weight:700}.library-summary-card{display:flex;width:100%;min-width:0;min-height:var(--control-44);padding:var(--space-16);overflow:hidden;align-items:center;justify-content:space-between;border:1px solid var(--border-subtle);border-radius:var(--radius-12);background:var(--surface-raised);box-shadow:none;color:inherit;font:inherit;text-align:left;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard),opacity var(--motion-fast) var(--ease-standard)}.library-summary-info{display:flex;min-width:0;flex:1;flex-direction:column;gap:var(--space-4)}.library-summary-eyebrow{color:var(--action-primary);font-family:var(--font-ui);font-size:.75rem;font-weight:800;letter-spacing:.03em}.library-summary-names{overflow:hidden;color:var(--text-primary);font-family:var(--font-display);font-size:1.15rem;font-weight:900;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.library-summary-meta{display:flex;min-width:0;flex-wrap:wrap;align-items:center;gap:var(--space-4) var(--space-12)}.library-summary-difficulty{display:inline-flex;align-items:baseline;gap:var(--space-4);color:var(--text-secondary);font-size:.8rem}.library-summary-difficulty strong{color:var(--info);font-size:.9rem}.library-summary-count{color:var(--text-secondary);font-size:.8rem}.library-progress-stats{display:grid;margin-top:var(--space-8);padding-top:var(--space-12);grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-8);border-top:1px solid var(--border-subtle)}.library-progress-stat{display:flex;min-width:0;flex-direction:column;gap:var(--space-4);text-align:left}.library-progress-stat strong{color:var(--text-primary);font-family:var(--font-display);font-size:1rem;line-height:1}.library-progress-stat span{color:var(--text-secondary);font-size:.65rem;font-weight:700;line-height:1.2;overflow-wrap:anywhere}.library-summary-chevron{flex:0 0 auto;margin-left:var(--space-8);color:var(--action-primary);transition:transform var(--motion-normal) var(--ease-standard)}.library-summary-card[aria-expanded=true]{border-color:var(--action-primary);background:var(--action-soft)}.library-summary-card[aria-expanded=true] .library-summary-chevron{transform:rotate(90deg)}.library-summary-card:disabled{opacity:.55;cursor:not-allowed}.home-version{display:flex;max-width:100%;margin-top:auto;padding-top:var(--space-8);flex-wrap:wrap;justify-content:center;gap:var(--space-4) var(--space-8);color:var(--text-disabled);font-size:.7rem;font-variant-numeric:tabular-nums;line-height:1.45;overflow-wrap:anywhere}.home-action-dock{position:fixed;right:0;bottom:0;left:0;z-index:20;padding:var(--space-12) calc(var(--space-12) + var(--safe-right)) calc(var(--space-12) + var(--safe-bottom)) calc(var(--space-12) + var(--safe-left));border-top:1px solid var(--border-subtle);background:var(--canvas);pointer-events:none}.home-fab{position:static;width:100%;min-height:var(--control-56);padding:var(--space-12) var(--space-16);border:1px solid var(--action-primary);border-radius:var(--radius-12);background:var(--action-primary);box-shadow:var(--shadow-action);color:var(--on-action);font:inherit;font-size:1rem;font-weight:900;cursor:pointer;pointer-events:auto;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard),opacity var(--motion-normal) var(--ease-standard)}.home-fab:not(:disabled):active{transform:translateY(1px);box-shadow:none}.home-fab:disabled{border-color:var(--border-subtle);background:var(--canvas-deep);box-shadow:none;color:var(--text-disabled);cursor:default}@media(hover:hover){.home-help-btn:hover{border-color:var(--border-strong);background:var(--action-soft);color:var(--text-primary)}.custom-checkbox:has(input:not(:disabled)):hover{border-color:var(--action-primary)}.mode-card:not(:disabled):hover,.library-summary-card:not(:disabled):hover{border-color:var(--action-primary);background:var(--action-soft)}.home-fab:not(:disabled):hover{background:var(--action-primary-hover)}}@media(max-width:430px){.home-workspace{padding-top:max(var(--space-12),var(--safe-top))}.home-header{margin-bottom:var(--space-16)}.home-brand,.home-header,.home-utility-actions{gap:var(--space-4)}.home-title{font-size:1rem}.home-today{padding:var(--space-20) var(--space-16)}.home-today h2{font-size:2rem}.home-program-metrics{margin-top:var(--space-16)}.custom-checkboxes{grid-template-columns:minmax(0,1fr)}.library-summary-card{padding-inline:var(--space-12)}}@media(min-width:640px){.home-workspace{padding-top:max(var(--space-24),var(--safe-top))}.home-header{grid-template-areas:"brand utility language";grid-template-columns:minmax(0,1fr) auto auto}.home-preferences{width:auto}.home-lang{width:auto;grid-template-columns:auto minmax(var(--space-64),9rem)}.home-help-btn{width:auto;padding:var(--space-8) var(--space-12)}.home-help-btn span{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip-path:none;white-space:nowrap}.home-utility-actions{grid-auto-columns:max-content}.home-logo{width:var(--control-48);height:var(--control-48);font-size:1.5rem}.home-title{font-size:1.2rem}.home-today{padding:var(--space-32)}.home-today h2{font-size:3.25rem}.mode-card-set{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.mode-card{min-height:8rem;align-items:flex-start;flex-direction:column}.mode-card:after{position:absolute;top:var(--space-16);right:var(--space-16)}.free-settings{grid-column:1 / -1}.home-reading-scope{grid-template-columns:minmax(0,1fr) minmax(13rem,18rem);align-items:center}}@media(min-width:960px){.home-page{scroll-padding-bottom:0}.home-workspace{display:flex;min-height:100%;padding-top:max(var(--space-32),var(--safe-top));padding-bottom:max(var(--space-32),var(--safe-bottom));flex-direction:column;justify-content:flex-start}.home-layout{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(18rem,.9fr);align-items:start;gap:var(--space-16) var(--space-32)}.home-primary,.home-secondary{min-width:0}.home-primary{grid-column:1;grid-row:1}.home-secondary{min-height:100%;grid-column:2;grid-row:1 / span 2;gap:var(--space-16)}.home-action-dock{position:static;padding:0;grid-column:1;grid-row:2;border-top:0;background:transparent;pointer-events:auto}.home-today h2{font-size:3rem}.home-reading-scope{grid-template-columns:minmax(0,1fr)}.mode-card{min-height:7.5rem}}@media(prefers-reduced-motion:reduce){.home-help-btn,.custom-checkbox,.mode-card,.library-summary-card,.library-summary-chevron,.home-fab{transition-duration:var(--motion-reduced)}.mode-card:not(:disabled):active,.home-fab:not(:disabled):active{transform:none}}.library-modal-overlay{z-index:100;align-items:flex-end;padding:calc(var(--safe-top) + var(--space-8)) var(--safe-right) var(--safe-bottom) var(--safe-left);background:var(--overlay-backdrop)}.library-modal{position:relative;width:100%;max-height:min(92dvh,calc(100dvh - var(--safe-top) - var(--safe-bottom) - var(--space-8)));overflow:hidden;border:1px solid var(--border-subtle);border-bottom:0;border-radius:var(--radius-16) var(--radius-16) 0 0;background:var(--surface);box-shadow:var(--shadow-dialog);isolation:isolate}.library-modal:before{display:none;content:none}.tour-library-preview-portal{position:relative;z-index:199}.tour-library-preview{position:fixed;inset:0;display:flex;align-items:flex-end;justify-content:center;padding:calc(var(--safe-top) + var(--space-8)) 0 0;pointer-events:none}.library-modal--tour-preview{pointer-events:none;-webkit-user-select:none;user-select:none}.library-modal-header{position:relative;z-index:4;display:flex;flex:0 0 auto;min-height:var(--space-64);align-items:center;justify-content:space-between;gap:var(--space-16);padding:var(--space-12) var(--space-16);border-bottom:1px solid var(--border-subtle);background:var(--surface)}.library-modal-header h2{margin:0;color:var(--text-primary);font-family:var(--font-display);font-size:var(--type-lg);font-weight:800;letter-spacing:-.02em;line-height:1.3}.library-modal-header h2:before{display:none;content:none}.library-modal-close{flex:0 0 var(--control-44);border-radius:var(--radius-12);color:var(--text-secondary);transition:color var(--motion-fast) var(--ease-standard),background-color var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard)}.library-modal-summary{position:relative;z-index:4;flex:0 0 auto;padding:var(--space-8) var(--space-16);border-bottom:1px solid var(--border-subtle);background:var(--action-soft);color:var(--text-primary);font-size:var(--type-sm);font-weight:700;line-height:1.5}.library-modal-dedup{margin-left:var(--space-4);color:var(--text-secondary);font-weight:500}.library-modal-tabs{position:relative;z-index:4;flex:0 0 auto;padding:var(--space-8) var(--space-16);border-bottom:1px solid var(--border-subtle);background:var(--surface)}.library-tabs{display:grid;min-height:var(--control-44);grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-4);padding:var(--space-4);border-radius:var(--radius-12);background:var(--canvas)}.library-tab{position:relative;min-width:0;min-height:var(--control-44);padding:0 var(--space-8);border:1px solid transparent;border-radius:var(--radius-8);background:transparent;color:var(--text-secondary);font:inherit;font-size:var(--type-sm);font-weight:700;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard)}.library-tab:after{display:none;content:none}.library-tab.active,.library-tab[aria-selected=true]{border-color:var(--border-subtle);background:var(--surface);color:var(--action-primary);box-shadow:var(--shadow-card)}.library-tab.active:after,.library-tab[aria-selected=true]:after{display:none}.library-modal-body{position:relative;z-index:1;flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior-y:contain;padding:var(--space-16);background:var(--canvas);scrollbar-color:var(--border-strong) transparent;scrollbar-width:thin;-webkit-overflow-scrolling:touch}.library-tab-panel,.library-group,.practice-settings{display:flex;min-height:0;flex-direction:column}.library-tab-panel{gap:var(--space-16)}.library-group,.practice-settings{gap:var(--space-8)}.privacy-notices{display:grid;gap:var(--space-8);margin:var(--space-4) 0;padding:var(--space-12) var(--space-16);border:1px solid var(--border-subtle);border-radius:var(--radius-12);background:var(--surface-subtle);color:var(--text-secondary);font-size:var(--type-sm);line-height:1.55}.privacy-notices-title{color:var(--text-primary);font-size:var(--type-sm);font-weight:750}.privacy-notices ul{display:grid;gap:var(--space-4);margin:0;padding-left:var(--space-20)}.library-section-header,.library-group-label{color:var(--text-secondary);font-size:var(--type-sm);font-weight:750}.library-section-header{margin:var(--space-4) 0 var(--space-8);padding-bottom:var(--space-8);border-bottom:1px solid var(--border-subtle);color:var(--action-primary)}.library-group-label{display:flex;min-height:var(--space-24);align-items:center;gap:var(--space-8);color:var(--text-primary)}.library-group-label:before{content:"";width:var(--space-4);height:var(--space-16);border-radius:var(--radius-pill);background:var(--action-primary)}.library-row-container{min-width:0}.library-row{position:relative;display:flex;min-width:0;min-height:var(--control-56);align-items:center;padding:var(--space-4);border:1px solid var(--border-subtle);border-radius:var(--radius-12);background:var(--surface);transition:border-color var(--motion-fast) var(--ease-standard),background-color var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard)}.library-row:before{display:none;content:none}.library-row.checked{border-color:color-mix(in srgb,var(--action-primary) 42%,var(--border-subtle));background:color-mix(in srgb,var(--action-primary) 5%,var(--surface))}.library-row.highlighted{box-shadow:0 0 0 3px var(--focus-halo),var(--shadow-card)}.library-row-checkbox{width:var(--space-24);height:var(--space-24);margin:0 0 0 var(--space-8);flex:0 0 auto;accent-color:var(--action-primary);cursor:pointer}.library-row-checkbox:disabled{opacity:.5;cursor:default}.library-row-label{display:flex;min-width:0;flex:1 1 auto;align-self:stretch;align-items:center;padding:var(--space-8);cursor:pointer}.library-row-main{display:flex;min-width:0;flex:1 1 auto;flex-direction:column;gap:var(--space-4);line-height:1.35}.library-row-name{overflow:hidden;color:var(--text-primary);font-size:var(--type-sm);font-weight:700;text-overflow:ellipsis;white-space:nowrap}.library-row.checked .library-row-name{color:var(--action-primary)}.library-row-gain{color:var(--text-secondary);font-size:var(--type-xs);line-height:1.4}.library-row-count{margin-left:var(--space-8);color:var(--text-secondary);font-variant-numeric:tabular-nums;font-size:var(--type-xs)}.library-row-actions{display:flex;flex:0 0 auto;align-items:center;gap:var(--space-4)}.library-row-info-btn,.library-row-action-btn,.library-row-manage{min-width:var(--control-44);min-height:var(--control-44);padding:0 var(--space-8);border:1px solid transparent;border-radius:var(--radius-8);background:transparent;color:var(--text-secondary);font:inherit;font-size:var(--type-xs);font-weight:700;cursor:pointer;touch-action:manipulation;transition:color var(--motion-fast) var(--ease-standard),background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard)}.library-row-info-btn.active{color:var(--action-primary);background:var(--action-soft);transform:rotate(180deg)}.library-row-description{overflow:hidden;margin:var(--space-4) var(--space-8) 0;border:1px solid var(--border-subtle);border-radius:var(--radius-12);background:var(--surface-subtle)}.library-row-description-inner{padding:var(--space-12) var(--space-16);color:var(--text-secondary);font-size:var(--type-sm);line-height:var(--leading-body);overflow-wrap:anywhere}.library-link{color:var(--action-primary);text-underline-offset:3px}.library-modal-footer{position:relative;z-index:4;display:grid;flex:0 0 auto;grid-template-columns:minmax(0,1fr) minmax(8rem,36%);align-items:center;gap:var(--space-12);padding:var(--space-12) var(--space-16) calc(var(--space-12) + var(--safe-bottom));border-top:1px solid var(--border-subtle);background:var(--surface)}.library-modal-footer p{margin:0;color:var(--text-secondary);font-size:var(--type-xs);line-height:var(--leading-body)}.library-modal-confirm{min-height:var(--control-48);border:1px solid var(--action-primary);border-radius:var(--radius-12);background:var(--action-primary);color:var(--on-action);font:inherit;font-weight:750;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard),opacity var(--motion-fast) var(--ease-standard)}.library-modal-confirm:disabled{opacity:.5;cursor:default}.library-manage-dialog-backdrop{z-index:140;align-items:center;padding:max(var(--space-12),var(--safe-top)) max(var(--space-12),var(--safe-right)) max(var(--space-12),var(--safe-bottom)) max(var(--space-12),var(--safe-left));background:var(--overlay-backdrop)}.library-manage-popup{position:relative;width:min(100%,30rem);max-height:min(90dvh,34rem);overflow:auto;overscroll-behavior:contain;border:1px solid var(--border-subtle);border-radius:var(--radius-16);background:var(--surface);box-shadow:var(--shadow-dialog)}.library-manage-popup:before{display:none;content:none}.library-manage-popup>.adaptive-dialog__title{margin:0;padding:var(--space-24) var(--space-24) var(--space-16);border-bottom:1px solid var(--border-subtle);color:var(--text-primary);font-family:var(--font-display);font-size:var(--type-lg);letter-spacing:-.01em}.library-manage-body{display:grid;gap:var(--space-16);padding:var(--space-16) var(--space-24) calc(var(--space-24) + var(--safe-bottom))}.library-manage-rename,.library-delete-confirmation{display:grid;gap:var(--space-12)}.library-manage-rename label{color:var(--text-primary);font-size:var(--type-sm);font-weight:700}.library-manage-rename>div,.library-manage-actions{display:flex;min-width:0;gap:var(--space-8)}.import-name-input{width:100%;min-width:0;min-height:var(--control-44);flex:1 1 auto;padding:0 var(--space-12);border:1px solid var(--border-strong);border-radius:var(--radius-8);background:var(--surface);color:var(--text-primary);font:inherit}.library-manage-btn{min-height:var(--control-44);min-width:0;flex:1 1 0;padding:0 var(--space-12);border:1px solid var(--border-strong);border-radius:var(--radius-8);background:var(--surface);color:var(--text-primary);font:inherit;font-size:var(--type-sm);font-weight:700;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard)}.library-manage-btn.preview{border-color:var(--action-primary);color:var(--action-primary);background:var(--action-soft)}.library-manage-btn.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 42%,var(--border-subtle));background:color-mix(in srgb,var(--danger) 6%,var(--surface))}.library-manage-btn:disabled{opacity:.5;cursor:default}.library-delete-confirmation p{margin:0;color:var(--text-secondary);line-height:1.65}.import-panel{display:grid;gap:var(--space-8);margin-top:var(--space-8);padding:var(--space-12);border:1px solid var(--border-subtle);border-radius:var(--radius-12);background:var(--surface)}.import-controls{display:flex;flex-direction:column;gap:var(--space-8)}.import-btn{min-height:var(--control-44);display:inline-flex;align-items:center;justify-content:center;padding:0 var(--space-12);border:1px solid var(--action-primary);border-radius:var(--radius-8);color:var(--action-primary);background:transparent;font:inherit;font-weight:700;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard)}.import-btn input{display:none}.import-status{margin:0;padding:var(--space-8) var(--space-12);border:1px solid currentColor;border-radius:var(--radius-8);background:var(--surface);font-size:var(--type-sm);line-height:var(--leading-body)}.import-status.done{color:var(--success);background:color-mix(in srgb,var(--success) 8%,var(--surface))}.import-status.error{color:var(--danger);background:color-mix(in srgb,var(--danger) 8%,var(--surface))}.library-impact-status{display:grid;gap:var(--space-8)}.import-status.impact{color:var(--action-primary);background:color-mix(in srgb,var(--action-primary) 8%,var(--surface))}.import-status.impact.guard{color:var(--danger);background:color-mix(in srgb,var(--danger) 8%,var(--surface))}@media(hover:hover){.library-modal-close:hover,.library-row-info-btn:hover,.library-row-action-btn:hover,.library-row-manage:hover{border-color:var(--border-subtle);background:var(--action-soft);color:var(--action-primary)}.library-tab:hover{background:color-mix(in srgb,var(--action-primary) 7%,transparent);color:var(--action-primary)}.library-row:hover{border-color:color-mix(in srgb,var(--action-primary) 42%,var(--border-subtle));box-shadow:var(--shadow-card)}.library-modal-confirm:hover{background:var(--action-primary-hover)}.library-manage-btn:hover{border-color:var(--action-primary)}.import-btn:hover{background:var(--action-soft)}}@media(min-width:640px){.library-modal-overlay,.tour-library-preview{align-items:center;padding:var(--space-32)}.library-modal{width:min(100%,42rem);max-height:min(88dvh,52rem);border-bottom:1px solid var(--border-subtle);border-radius:var(--radius-16)}.library-modal-header{padding-inline:var(--space-24)}.library-modal-summary,.library-modal-tabs,.library-modal-body,.library-modal-footer{padding-left:var(--space-24);padding-right:var(--space-24)}.import-controls{flex-direction:row}}@media(max-width:430px){.library-manage-body{padding-inline:var(--space-16)}.library-manage-rename>div,.library-manage-actions{flex-wrap:wrap}.library-manage-rename .import-name-input,.library-manage-rename .library-manage-btn{flex-basis:100%}.library-row{align-items:stretch;flex-wrap:wrap}.library-row-label{min-width:0}.library-row-actions{width:100%;justify-content:flex-end;border-top:1px solid var(--border-subtle)}.library-row-action-btn{flex:1 1 auto}.library-modal-footer{grid-template-columns:1fr}.library-modal-footer p{text-align:center}}@media(max-width:430px)and (max-height:760px){.library-modal.sheet-shell--mobile-full{height:calc(100dvh - var(--safe-top) - var(--space-4));max-height:none}.library-modal.sheet-shell--mobile-full .library-modal-tabs{padding:var(--space-8) var(--space-12) var(--space-4)}.library-modal.sheet-shell--mobile-full .library-modal-body{padding:var(--space-12)}.library-modal.sheet-shell--mobile-full .library-modal-header{min-height:var(--control-56);padding-block:var(--space-8)}}@media(max-height:560px)and (orientation:landscape){.library-modal-overlay{align-items:stretch;padding:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left)}.library-modal{height:100%;max-height:none;border-radius:0}.library-modal-header{min-height:var(--control-48);padding-block:var(--space-4)}.library-modal-summary{padding-block:var(--space-4)}.library-modal-tabs{padding:var(--space-4) var(--space-16) var(--space-8)}.library-modal-footer{grid-template-columns:1fr minmax(8rem,28%);padding-block:var(--space-8)}}@media(prefers-reduced-motion:reduce){.library-modal-close,.library-tab,.library-row,.library-row-info-btn,.library-row-action-btn,.library-row-manage,.library-modal-confirm,.library-manage-btn{transition-duration:var(--motion-reduced)}.library-row-info-btn.active,.library-modal-confirm:active{transform:none}}.browser-page{position:fixed;inset:0;z-index:50;display:flex;min-width:0;flex-direction:column;overflow:hidden;background:var(--canvas);color:var(--text-primary)}.browser-header,.browser-search-wrapper{position:relative;z-index:10;flex:0 0 auto;border-bottom:1px solid var(--border-subtle);background:var(--surface)}.browser-header-content{display:flex;min-height:var(--space-64);align-items:center;gap:var(--space-12);padding-top:max(var(--space-8),var(--safe-top));padding-bottom:var(--space-8)}.browser-back{flex:0 0 var(--control-44);border-radius:var(--radius-12);color:var(--text-secondary)}.browser-title-group{display:flex;min-width:0;flex:1 1 auto;align-items:baseline;justify-content:space-between;gap:var(--space-12);line-height:1.35}.browser-title-group h1{overflow:hidden;margin:0;color:var(--text-primary);font-family:var(--font-display);font-size:clamp(1.125rem,2vw,1.375rem);font-weight:800;letter-spacing:-.025em;text-overflow:ellipsis;white-space:nowrap}.browser-title-group span{flex:0 0 auto;color:var(--text-secondary);font-size:var(--type-sm);font-weight:700;font-variant-numeric:tabular-nums}.browser-search-content{display:grid;gap:var(--space-12);padding-block:var(--space-12)}.browser-search-bar{display:flex;min-height:var(--control-48);align-items:center;gap:var(--space-8);padding-left:var(--space-12);border:1px solid var(--border-strong);border-radius:var(--radius-12);background:var(--surface);transition:border-color var(--motion-fast) var(--ease-standard),background-color var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard)}.browser-search-bar:focus-within{border-color:var(--action-primary);box-shadow:0 0 0 3px var(--focus-halo)}.browser-search-bar input{min-width:0;height:var(--control-48);flex:1 1 auto;border:0;outline:0;background:transparent;color:var(--text-primary);font:inherit;font-size:var(--type-md)}.browser-search-bar input::placeholder{color:var(--text-disabled)}.search-icon,.clear-icon{color:var(--text-secondary)}.clear-icon{flex:0 0 var(--control-44);border-radius:var(--radius-8)}.browser-filter-surface{display:grid;min-width:0;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-8) var(--space-12);align-items:start}.browser-progress-filters{display:flex;min-width:0;gap:var(--space-8);overflow-x:auto;overscroll-behavior-x:contain;scrollbar-color:var(--border-strong) transparent;scrollbar-width:thin}.browser-progress-filters--primary{grid-column:1;grid-row:1}.browser-filter-disclosure{grid-column:2;grid-row:1;min-height:var(--control-44);padding:0 var(--space-12);border:1px solid var(--border-strong);border-radius:var(--radius-8);background:var(--surface);color:var(--text-secondary);font:inherit;font-size:var(--type-sm);font-weight:700;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard)}.browser-filter-disclosure[aria-expanded=true]{border-color:var(--action-primary);background:var(--action-soft);color:var(--action-primary)}.browser-advanced-filters{display:flex;min-width:0;grid-column:1 / -1;flex-wrap:wrap;gap:var(--space-8);padding-top:var(--space-4);border-top:1px solid var(--border-subtle)}.browser-advanced-filters[hidden]{display:none}.browser-progress-filter{min-height:var(--control-44);flex:0 0 auto;padding:0 var(--space-12);border:1px solid var(--border-subtle);border-radius:var(--radius-8);background:var(--surface);color:var(--text-secondary);font:inherit;font-size:var(--type-sm);font-weight:700;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard)}.browser-progress-filter:after{display:none;content:none}.browser-progress-filter.active,.browser-progress-filter[aria-pressed=true]{border-color:var(--action-primary);background:var(--action-primary);color:var(--on-action);box-shadow:var(--shadow-action)}.browser-filter-explanation{min-width:0;grid-column:1 / -1;margin:0;color:var(--text-secondary);font-size:var(--type-sm);line-height:var(--leading-body)}.browser-main{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior-y:contain;scroll-behavior:smooth;scrollbar-color:var(--border-strong) transparent;scrollbar-width:thin}.browser-content-wrapper{position:relative;min-height:100%;padding-top:var(--space-24);padding-bottom:max(var(--space-64),calc(var(--safe-bottom) + var(--space-24)))}.browser-grid-content{min-width:0;padding-right:var(--space-64)}.browser-section{margin-bottom:var(--space-32);scroll-margin-top:var(--space-8)}.browser-section-header{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:var(--space-8);margin:0 0 var(--space-12);padding:var(--space-8) 0;border-bottom:1px solid var(--border-subtle);background:var(--canvas);color:var(--text-primary);font-family:var(--font-ui);font-size:var(--type-sm);font-weight:800}.browser-section-header:before{content:"";width:var(--space-8);height:var(--space-8);border-radius:var(--radius-pill);background:var(--action-primary)}.browser-kanji-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--control-56),1fr));gap:var(--space-8)}.browser-kanji-card{position:relative;display:flex;min-width:var(--control-56);min-height:var(--control-56);aspect-ratio:1;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-4);overflow:hidden;padding:var(--space-4);border:1px solid var(--border-subtle);border-radius:var(--radius-12);background:var(--surface);color:var(--text-primary);font:inherit;font-family:var(--font-display);font-size:var(--type-xl);font-weight:750;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard)}.browser-kanji-card:after{display:none;content:none}.browser-kanji-card small{color:var(--text-secondary);font-family:var(--font-ui);font-size:var(--type-xs);font-weight:700;line-height:1}.browser-kanji-card--learning{border-color:color-mix(in srgb,var(--info) 42%,var(--border-subtle));background:color-mix(in srgb,var(--info) 4%,var(--surface))}.browser-kanji-card--mastered{border-color:color-mix(in srgb,var(--success) 46%,var(--border-subtle));background:color-mix(in srgb,var(--success) 6%,var(--surface));color:var(--success)}.browser-kanji-card--mastered small{color:var(--success)}.browser-empty{min-height:18rem;display:grid;place-content:center;justify-items:center;gap:var(--space-16);padding:var(--space-24);border:1px solid var(--border-subtle);border-radius:var(--radius-16);background:var(--surface);box-shadow:var(--shadow-card);color:var(--text-primary);font-weight:650;text-align:center}.browser-empty p{max-width:32rem;margin:0;line-height:1.6}.browser-empty-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-8)}.browser-empty button{min-height:var(--control-44);padding:0 var(--space-16);border:1px solid var(--action-primary);border-radius:var(--radius-8);background:var(--surface);color:var(--action-primary);font:inherit;font-weight:700;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard)}.browser-empty button:last-child{background:var(--action-primary);color:var(--on-action)}.browser-index-bar{position:fixed;right:max(var(--space-8),var(--safe-right));top:50%;z-index:8;display:flex;max-height:calc(100dvh - var(--space-32));flex-direction:column;align-items:center;overflow-y:auto;transform:translateY(-50%);padding:var(--space-4);border:1px solid var(--border-subtle);border-radius:var(--radius-16);background:var(--surface);box-shadow:var(--shadow-raised);touch-action:none;-webkit-user-select:none;user-select:none;scrollbar-width:none}.index-item{width:var(--control-44);min-width:var(--control-44);height:var(--control-44);min-height:var(--control-44);flex:0 0 var(--control-44);border:0;border-radius:var(--radius-8);background:transparent;color:var(--action-primary);font:inherit;font-family:var(--font-display);font-size:var(--type-sm);font-weight:750;cursor:pointer;transform-origin:center right;transition:color var(--motion-fast) var(--ease-standard),background-color var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard)}.index-item.current{background:var(--action-primary);color:var(--on-action)}.index-item:disabled{color:var(--text-disabled);cursor:default;opacity:.42}.index-label-bubble{position:fixed;right:calc(max(var(--space-8),var(--safe-right)) + var(--space-64));top:50%;z-index:9;width:var(--control-56);height:var(--control-56);display:grid;place-items:center;transform:translateY(-50%);border-radius:var(--radius-16);background:var(--action-primary);color:var(--on-action);box-shadow:var(--shadow-raised);font-family:var(--font-display);font-size:var(--type-xl);font-weight:800}.kanji-detail-overlay{z-index:120;align-items:flex-end;padding:calc(var(--safe-top) + var(--space-8)) 0 0;background:var(--overlay-backdrop)}.kanji-detail-card{position:relative;width:100%;max-height:calc(100dvh - var(--safe-top) - var(--space-8));display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--border-subtle);border-bottom:0;border-radius:var(--radius-16) var(--radius-16) 0 0;background:var(--surface);box-shadow:var(--shadow-dialog)}.kanji-detail-card:before{display:none;content:none}.detail-header{position:relative;z-index:4;display:flex;flex:0 0 auto;align-items:flex-start;justify-content:space-between;padding:var(--space-20) var(--space-20) var(--space-16);border-bottom:1px solid var(--border-subtle);background:var(--surface)}.detail-header>div{display:flex;min-width:0;align-items:center;gap:var(--space-12)}.detail-close{flex:0 0 var(--control-44);border-radius:var(--radius-12);color:var(--text-secondary)}.detail-kanji{width:4.5rem;height:4.5rem;display:grid;place-items:center;border:1px solid var(--border-subtle);border-radius:var(--radius-12);background:var(--canvas);color:var(--text-primary);font-family:var(--font-display);font-size:var(--type-display);font-weight:750;line-height:1}.kanji-progress-badge{padding:var(--space-4) var(--space-8);border:1px solid color-mix(in srgb,var(--info) 42%,var(--border-subtle));border-radius:var(--radius-8);background:color-mix(in srgb,var(--info) 7%,var(--surface));color:var(--info);font-size:var(--type-sm);font-weight:750}.kanji-progress-badge--mastered{border-color:color-mix(in srgb,var(--success) 42%,var(--border-subtle));background:color-mix(in srgb,var(--success) 8%,var(--surface));color:var(--success)}.detail-body{position:relative;z-index:1;flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior-y:contain;padding:var(--space-20);scrollbar-color:var(--border-strong) transparent;scrollbar-width:thin}.detail-info{display:grid;gap:var(--space-20)}.detail-section{display:grid;gap:var(--space-4)}.detail-section h3{margin:0;color:var(--text-secondary);font-size:var(--type-sm);font-weight:750}.detail-section p{margin:0;color:var(--text-primary);font-size:var(--type-md);font-weight:600}.detail-section .meanings{color:var(--text-secondary);font-weight:500;line-height:1.65}.progress-stats-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-8)}.progress-stats-grid span{min-width:0;padding:var(--space-8);border:1px solid var(--border-subtle);border-radius:var(--radius-8);background:var(--surface-subtle);color:var(--text-secondary);font-size:var(--type-sm);font-weight:700;text-align:center;overflow-wrap:anywhere}.review-skill-status{display:grid;border-top:1px solid var(--border-subtle)}.review-skill-status>div{min-height:var(--control-44);display:grid;grid-template-columns:4.5rem minmax(0,1fr) auto;align-items:center;gap:var(--space-8);border-bottom:1px solid var(--border-subtle);color:var(--text-secondary);font-size:var(--type-sm)}.review-skill-status strong{color:var(--text-primary);font-family:var(--font-display)}.detail-meta{display:flex;flex-wrap:wrap;gap:var(--space-8)}.detail-meta span{padding:var(--space-4) var(--space-8);border:1px solid var(--border-subtle);border-radius:var(--radius-8);background:var(--surface-subtle);color:var(--text-secondary);font-size:var(--type-sm);font-weight:700}.detail-no-data{padding:var(--space-32) 0;color:var(--text-secondary);text-align:center}.detail-footer{position:relative;z-index:4;flex:0 0 auto;padding:var(--space-12) var(--space-20) calc(var(--space-12) + var(--safe-bottom));border-top:1px solid var(--border-subtle);background:var(--surface)}.detail-progress-action{width:100%;min-height:var(--control-48);display:inline-flex;align-items:center;justify-content:center;gap:var(--space-8);border:1px solid var(--action-primary);border-radius:var(--radius-12);background:var(--action-primary);color:var(--on-action);font:inherit;font-weight:750;cursor:pointer;touch-action:manipulation;transition:color var(--motion-fast) var(--ease-standard),background-color var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard)}.detail-progress-action.restore{background:var(--surface);color:var(--action-primary)}@media(hover:hover){.browser-back:hover,.clear-icon:hover,.detail-close:hover{color:var(--action-primary);background:var(--action-soft)}.browser-filter-disclosure:hover,.browser-progress-filter:hover{border-color:var(--action-primary);color:var(--action-primary)}.browser-kanji-card:hover{border-color:var(--action-primary);background:var(--action-soft);box-shadow:var(--shadow-card)}.browser-empty button:hover,.detail-progress-action.restore:hover{background:var(--action-soft)}.browser-empty button:last-child:hover,.detail-progress-action:not(.restore):hover{background:var(--action-primary-hover)}}@media(min-width:640px){.browser-search-content{grid-template-columns:minmax(16rem,.75fr) minmax(0,1.25fr);align-items:start}.browser-grid-content{padding-right:5rem}.browser-kanji-grid{grid-template-columns:repeat(auto-fill,4.5rem);gap:var(--space-12)}.browser-index-bar{right:max(var(--space-24),calc((100vw - var(--content-browser-max)) / 2 + var(--space-24)))}.kanji-detail-overlay{align-items:center;padding:var(--space-32)}.kanji-detail-card{width:min(100%,34rem);max-height:min(88dvh,46rem);border-bottom:1px solid var(--border-subtle);border-radius:var(--radius-16)}}@media(max-width:430px){.browser-header-content{min-height:var(--control-56)}.browser-search-content{padding-block:var(--space-8)}.browser-filter-surface{grid-template-columns:minmax(0,1fr) auto}.browser-content-wrapper{padding-top:var(--space-16)}.browser-grid-content{padding-right:var(--control-56)}.browser-kanji-grid{grid-template-columns:repeat(auto-fill,minmax(var(--control-56),1fr))}.browser-index-bar{border-radius:var(--radius-12)}}@media(max-height:640px)and (orientation:landscape){.browser-header-content{min-height:var(--control-48);padding-block:var(--space-4)}.browser-search-content{grid-template-columns:minmax(12rem,.8fr) minmax(0,1.2fr);align-items:center;gap:var(--space-12);padding-block:var(--space-4)}.browser-index-bar{top:auto;right:max(var(--space-8),var(--safe-right));bottom:max(var(--space-8),var(--safe-bottom));left:max(var(--space-8),var(--safe-left));max-height:none;flex-direction:row;justify-content:center;overflow-x:auto;overflow-y:hidden;transform:none}.browser-grid-content{padding-right:0;padding-bottom:var(--space-64)}}@media(prefers-reduced-motion:reduce){.browser-main{scroll-behavior:auto}.browser-search-bar,.browser-progress-filter,.browser-filter-disclosure,.browser-kanji-card,.index-item,.detail-progress-action{transition-duration:var(--motion-reduced)}.detail-progress-action:active{transform:none}.index-item{transform:none!important}}.data-control-page{min-height:100%;overflow-y:auto;background:var(--canvas);color:var(--text-primary)}.data-control-shell{width:min(100% - var(--space-32),48rem);margin:0 auto;padding:max(var(--space-24),var(--safe-top)) 0 calc(var(--space-48) + var(--safe-bottom))}.data-control-header{display:grid;gap:var(--space-12);margin-bottom:var(--space-24);padding-bottom:var(--space-24);border-bottom:1px solid var(--border-subtle)}.data-control-back{display:inline-flex;width:fit-content;min-height:var(--control-44);align-items:center;gap:var(--space-8);padding:0 var(--space-12);border:1px solid var(--border-strong);border-radius:var(--radius-8);background:var(--surface);color:var(--text-primary);font:inherit;font-weight:700;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard)}.data-control-header h1{margin:0;color:var(--text-primary);font-family:var(--font-display);font-size:clamp(2rem,6vw,3rem);font-weight:800;letter-spacing:-.035em;line-height:1.05}.data-control-header p{max-width:42rem;margin:var(--space-8) 0 0;color:var(--text-secondary);line-height:1.6}.data-control-status,.data-control-actions,.data-control-clear{margin-top:var(--space-16);padding:var(--space-20);border:1px solid var(--border-subtle);border-radius:var(--radius-16);background:var(--surface);box-shadow:var(--shadow-card)}.data-control-section-heading{display:flex;align-items:center;gap:var(--space-8);color:var(--action-primary)}.data-control-section-heading h2,.data-control-actions h2{margin:0;color:var(--text-primary);font-family:var(--font-display);font-size:var(--type-lg);font-weight:800;letter-spacing:-.015em}.data-control-status>p,.data-control-clear>p{margin:var(--space-12) 0;color:var(--text-secondary);line-height:1.55}.data-control-counts,.data-control-preview-list{display:grid;margin:var(--space-12) 0 0;padding:0;border-top:1px solid var(--border-subtle);list-style:none}.data-control-counts li,.data-control-preview-list li{display:flex;min-height:var(--control-44);align-items:center;justify-content:space-between;gap:var(--space-16);padding:var(--space-8);border-bottom:1px solid var(--border-subtle);color:var(--text-secondary)}.data-control-counts strong,.data-control-preview-list strong{color:var(--text-primary);font-variant-numeric:tabular-nums}.data-control-action-grid{display:grid;margin-top:var(--space-12);grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-12)}.data-control-action{display:flex;min-height:var(--space-64);align-items:flex-start;gap:var(--space-12);padding:var(--space-12);border:1px solid var(--border-strong);border-radius:var(--radius-12);background:var(--surface);color:var(--text-primary);font:inherit;font-weight:700;text-align:left;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard),opacity var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard)}.data-control-action strong,.data-control-action small{display:block}.data-control-action small{margin-top:var(--space-4);color:var(--text-secondary);font-size:var(--type-sm);font-weight:500;line-height:var(--leading-body)}.data-control-action--primary{border-color:var(--action-primary);background:var(--action-primary);color:var(--on-action);box-shadow:var(--shadow-action)}.data-control-action--primary small{color:var(--on-action);opacity:.86}.data-control-action:disabled{box-shadow:none;cursor:not-allowed;opacity:.52}.data-control-file{display:none}.data-control-degraded{color:var(--danger)!important;font-weight:700}.data-control-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4) var(--space-16)}.data-control-checks label{display:flex;min-height:var(--control-44);align-items:center;gap:var(--space-8);color:var(--text-secondary);cursor:pointer}.data-control-checks input{width:var(--space-20);height:var(--space-20);accent-color:var(--action-primary)}.data-control-clear-button,.data-control-dialog-actions button{min-height:var(--control-44);padding:0 var(--space-16);border:1px solid var(--border-strong);border-radius:var(--radius-8);background:var(--surface);color:var(--text-primary);font:inherit;font-weight:700;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard),opacity var(--motion-fast) var(--ease-standard)}.data-control-clear-button{margin-top:var(--space-12);border-color:color-mix(in srgb,var(--danger) 44%,var(--border-subtle));color:var(--danger)}.data-control-clear-button:disabled{cursor:not-allowed;opacity:.52}.data-control-danger{border-color:var(--danger)!important;background:var(--danger)!important;color:var(--on-action)!important}.data-control-notice{margin:var(--space-16) 0 0;padding:var(--space-12) var(--space-16);border:1px solid color-mix(in srgb,var(--danger) 42%,var(--border-subtle));border-radius:var(--radius-12);background:color-mix(in srgb,var(--danger) 7%,var(--surface));color:var(--danger);font-weight:650;line-height:1.55}.data-control-dialog-content{display:grid;gap:var(--space-16)}.data-control-dialog-content p{margin:0;color:var(--text-secondary);line-height:1.55}.data-control-dialog-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-8);padding-top:var(--space-8);border-top:1px solid var(--border-subtle)}@media(hover:hover){.data-control-back:hover,.data-control-action:not(:disabled):hover,.data-control-clear-button:not(:disabled):hover,.data-control-dialog-actions button:not(:disabled):hover{border-color:var(--action-primary);background:var(--action-soft);color:var(--action-primary)}.data-control-action--primary:not(:disabled):hover{background:var(--action-primary-hover);color:var(--on-action)}.data-control-action--primary:not(:disabled):hover small{color:var(--on-action)}.data-control-clear-button:not(:disabled):hover{border-color:var(--danger);background:color-mix(in srgb,var(--danger) 7%,var(--surface));color:var(--danger)}.data-control-danger:not(:disabled):hover{background:color-mix(in srgb,var(--danger) 86%,var(--text-primary))!important;color:var(--on-action)!important}}@media(max-width:34rem){.data-control-shell{width:min(100% - var(--space-16),48rem)}.data-control-status,.data-control-actions,.data-control-clear{padding:var(--space-16)}.data-control-action-grid,.data-control-checks{grid-template-columns:minmax(0,1fr)}.data-control-dialog-actions{justify-content:stretch}.data-control-dialog-actions button{flex:1 1 10rem}}@media(prefers-reduced-motion:reduce){.data-control-action,.data-control-back,.data-control-clear-button,.data-control-dialog-actions button{transition-duration:var(--motion-reduced)}.data-control-action:active,.data-control-back:active,.data-control-clear-button:active,.data-control-dialog-actions button:active{transform:none}}.ocr-panel{gap:var(--space-16)}.ocr-panel-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-12);padding-bottom:var(--space-12);border-bottom:1px solid var(--border-subtle)}.ocr-panel-title{color:var(--text-primary);font-family:var(--font-display);font-size:var(--type-md);font-weight:800;letter-spacing:-.015em}.ocr-panel-title:before{display:none;content:none}.ocr-step-label{flex:0 0 auto;padding:var(--space-4) var(--space-8);border:1px solid color-mix(in srgb,var(--action-primary) 34%,var(--border-subtle));border-radius:var(--radius-8);background:var(--action-soft);color:var(--action-primary);font-size:var(--type-sm);font-weight:700}.ocr-step{display:flex;min-height:0;flex-direction:column;gap:var(--space-12)}.ocr-step-scroll{min-height:0}.ocr-upload{position:relative;display:flex;min-height:16rem;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-12);overflow:hidden;padding:var(--space-24) var(--space-16);border:1px dashed color-mix(in srgb,var(--action-primary) 58%,var(--border-subtle));border-radius:var(--radius-16);background:color-mix(in srgb,var(--action-primary) 4%,var(--surface));text-align:center;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard)}.ocr-upload:before{display:none;content:none}.ocr-upload.drag-over{border-style:solid;border-color:var(--action-primary);background:var(--action-soft);box-shadow:0 0 0 3px var(--focus-halo)}.ocr-upload-icon{color:var(--action-primary)}.ocr-upload-text{color:var(--text-primary);font-family:var(--font-display);font-size:var(--type-lg);font-weight:800;letter-spacing:-.015em}.ocr-upload-hint{max-width:28rem;color:var(--text-secondary);font-size:var(--type-sm);line-height:var(--leading-body)}.ocr-upload-button{position:relative;min-height:var(--control-48);display:inline-flex;align-items:center;justify-content:center;padding:0 var(--space-20);border:1px solid var(--action-primary);border-radius:var(--radius-12);background:var(--action-primary);box-shadow:var(--shadow-action);color:var(--on-action);font-size:var(--type-sm);font-weight:750;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard),opacity var(--motion-fast) var(--ease-standard)}.ocr-file-input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}.ocr-upload:focus-within{border-style:solid;border-color:var(--action-primary);box-shadow:0 0 0 3px var(--focus-halo)}.ocr-upload:has(.ocr-file-input:disabled){background:var(--surface-subtle)}.ocr-upload:has(.ocr-file-input:disabled) .ocr-upload-button{box-shadow:none;opacity:.5;cursor:default}.ocr-notice-title{color:var(--text-primary);font-size:var(--type-sm);font-weight:750}.ocr-privacy-notices,.ocr-notices{display:grid;gap:var(--space-8);margin:0;padding:var(--space-12) var(--space-16) var(--space-12) var(--space-32);border:1px solid var(--border-subtle);border-radius:var(--radius-12);background:var(--surface-subtle);color:var(--text-secondary);font-size:var(--type-sm);line-height:var(--leading-body)}.ocr-turnstile-status{display:flex;flex-wrap:wrap;gap:var(--space-4) var(--space-8);align-items:baseline;padding:var(--space-8) var(--space-12);border:1px solid var(--border-subtle);border-radius:var(--radius-8);background:var(--surface);color:var(--text-secondary);font-size:var(--type-sm);line-height:var(--leading-body)}.ocr-turnstile-status strong{color:var(--text-primary);font-weight:700}.ocr-impact-notice{margin:0;padding:var(--space-8) var(--space-12);border:1px solid color-mix(in srgb,var(--action-primary) 26%,var(--border-subtle));border-radius:var(--radius-8);background:color-mix(in srgb,var(--action-primary) 5%,var(--surface));color:var(--text-secondary);font-size:var(--type-sm);line-height:var(--leading-body)}.ocr-crop-modal-hint{min-height:6rem;display:grid;place-items:center;border:1px dashed var(--border-strong);border-radius:var(--radius-12);background:var(--surface-subtle);color:var(--text-secondary)}.ocr-crop-modal-overlay{z-index:220;align-items:flex-end;padding:calc(var(--safe-top) + var(--space-4)) var(--safe-right) var(--safe-bottom) var(--safe-left);background:var(--overlay-backdrop)}.ocr-crop-modal{position:relative;width:100%;max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - var(--space-4));display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--border-subtle);border-bottom:0;border-radius:var(--radius-16) var(--radius-16) 0 0;background:var(--surface);box-shadow:var(--shadow-dialog)}.ocr-crop-modal:before{display:none;content:none}.ocr-crop-modal-header{position:relative;z-index:4;display:flex;min-height:var(--space-64);flex:0 0 auto;align-items:center;justify-content:space-between;padding:var(--space-8) var(--space-16);border-bottom:1px solid var(--border-subtle);background:var(--surface)}.ocr-crop-modal-title{margin:0;color:var(--text-primary);font-family:var(--font-display);font-size:var(--type-lg);font-weight:800;letter-spacing:-.015em}.ocr-crop-modal-close{flex:0 0 var(--control-44);border-radius:var(--radius-12);color:var(--text-secondary)}.ocr-crop-modal-body{position:relative;z-index:1;flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior-y:contain;padding:var(--space-12) var(--space-16) calc(var(--space-16) + var(--safe-bottom));scrollbar-color:var(--border-strong) transparent;scrollbar-width:thin}.ocr-cropper{display:grid;min-height:0;gap:var(--space-12)}.ocr-cropper-hint{margin:0;padding:var(--space-12);border-radius:var(--radius-8);background:var(--surface-subtle);color:var(--text-secondary);font-size:var(--type-sm);line-height:var(--leading-body)}.ocr-cropper-area{min-height:clamp(17.5rem,52dvh,35rem);display:flex;align-items:center;justify-content:center;overflow:hidden;border:1px solid var(--border-subtle);border-radius:var(--radius-12);background:var(--text-primary)}.ocr-cropper-area .ReactCrop{--rc-drag-handle-mobile-size: var(--control-44)}.ocr-cropper-area .ReactCrop__crop-selection{border:1px solid var(--surface);box-shadow:0 0 0 9999em color-mix(in srgb,var(--text-primary) 58%,transparent)}.ocr-step-processing{min-height:15rem}.ocr-processing{min-height:15rem;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-16);color:var(--text-secondary);font-size:var(--type-sm);font-weight:700}.ocr-spinner{width:var(--space-32);height:var(--space-32);border:2px solid var(--border-subtle);border-top-color:var(--action-primary);border-radius:var(--radius-pill);animation:ocr-spin .8s linear infinite}@keyframes ocr-spin{to{transform:rotate(360deg)}}.ocr-validation{display:grid;gap:var(--space-12)}.ocr-validation-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-8)}.ocr-validation-header h3{margin:0;color:var(--text-primary);font-family:var(--font-display);font-size:var(--type-md);font-weight:800;letter-spacing:-.015em}.ocr-validation-count{flex:0 0 auto;padding:var(--space-4) var(--space-8);border-radius:var(--radius-8);background:var(--action-soft);color:var(--action-primary);font-size:var(--type-sm);font-weight:700;font-variant-numeric:tabular-nums}.ocr-validation-hint{margin:0;color:var(--text-secondary);font-size:var(--type-sm);line-height:var(--leading-body)}.ocr-validation-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--control-44),1fr));gap:var(--space-8);padding:var(--space-12);border:1px solid var(--border-subtle);border-radius:var(--radius-12);background:var(--surface)}.ocr-validation-char{position:relative;width:100%;min-width:var(--control-44);height:var(--control-44);display:grid;place-items:center;overflow:hidden;border:1px solid color-mix(in srgb,var(--action-primary) 36%,var(--border-subtle));border-radius:var(--radius-8);background:var(--action-soft);color:var(--text-primary);font:inherit;font-family:var(--font-display);font-size:var(--type-xl);font-weight:750;cursor:pointer;touch-action:manipulation;transition:opacity var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard),background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard)}.ocr-validation-char:after{display:none;content:none}.ocr-validation-char.removed,.ocr-validation-char[aria-pressed=false]{border-color:var(--border-subtle);background:var(--surface-subtle);color:var(--text-disabled);opacity:.58;text-decoration:line-through}.ocr-add-row{display:flex;gap:var(--space-8)}.ocr-add-input,.ocr-name-input,.ocr-target-select{width:100%;min-width:0;min-height:var(--control-44);padding:0 var(--space-12);border:1px solid var(--border-strong);border-radius:var(--radius-8);background:var(--surface);color:var(--text-primary);font:inherit}.ocr-add-input{flex:1 1 auto}.ocr-append-hint{margin:0;padding:var(--space-8) var(--space-12);border:1px solid var(--border-subtle);border-radius:var(--radius-8);background:var(--action-soft);color:var(--text-secondary);font-size:var(--type-sm);line-height:var(--leading-body)}.ocr-action-btn{min-height:var(--control-44);display:inline-flex;align-items:center;justify-content:center;padding:0 var(--space-16);border:1px solid var(--border-strong);border-radius:var(--radius-8);background:var(--surface);color:var(--text-primary);font:inherit;font-size:var(--type-sm);font-weight:700;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard),opacity var(--motion-fast) var(--ease-standard)}.ocr-action-btn.primary{min-height:var(--control-48);border-color:var(--action-primary);background:var(--action-primary);box-shadow:var(--shadow-action);color:var(--on-action)}.ocr-action-btn:disabled{box-shadow:none;opacity:.45;cursor:default}.ocr-sticky-actions{display:grid;gap:var(--space-8);padding-top:var(--space-12);border-top:1px solid var(--border-subtle);background:transparent}.ocr-sticky-actions label{color:var(--text-primary);font-size:var(--type-sm);font-weight:700}.ocr-error,.ocr-api-key-notice{display:grid;justify-items:center;gap:var(--space-8);padding:var(--space-16);border:1px solid color-mix(in srgb,var(--danger) 42%,var(--border-subtle));border-radius:var(--radius-12);background:color-mix(in srgb,var(--danger) 7%,var(--surface));color:var(--text-secondary);text-align:center}.ocr-error-text{color:var(--danger);font-size:var(--type-sm);line-height:var(--leading-body)}.ocr-api-key-notice-title{color:var(--danger);font-size:var(--type-sm);font-weight:750}.ocr-api-key-notice-hint{font-size:var(--type-sm);line-height:var(--leading-body)}@media(hover:hover){.ocr-crop-modal-close:hover{color:var(--action-primary);background:var(--action-soft)}.ocr-upload:not(:has(.ocr-file-input:disabled)):hover{border-style:solid;border-color:var(--action-primary);background:var(--action-soft)}.ocr-action-btn:not(:disabled):hover{border-color:var(--action-primary);background:var(--action-soft);color:var(--action-primary)}.ocr-action-btn.primary:not(:disabled):hover{background:var(--action-primary-hover);color:var(--on-action)}.ocr-validation-char:hover{border-color:var(--action-primary);background:color-mix(in srgb,var(--action-primary) 14%,var(--surface))}}@media(min-width:640px){.ocr-crop-modal-overlay{align-items:center;padding:var(--space-24)}.ocr-crop-modal{width:min(100%,45rem);max-height:min(92dvh,48rem);border-bottom:1px solid var(--border-subtle);border-radius:var(--radius-16)}.ocr-crop-modal-body{padding:var(--space-16) var(--space-20) var(--space-20)}.ocr-validation-grid{grid-template-columns:repeat(auto-fill,minmax(var(--control-48),1fr))}}@media(max-width:430px){.ocr-add-row{display:grid;grid-template-columns:minmax(0,1fr)}.ocr-add-row .ocr-action-btn{width:100%}}@media(max-width:430px)and (max-height:760px){.ocr-upload{min-height:12rem;padding:var(--space-16) var(--space-12);gap:var(--space-8)}.ocr-cropper-area{min-height:clamp(15rem,48dvh,26rem)}.ocr-validation-grid{padding:var(--space-8)}}@media(max-height:560px)and (orientation:landscape){.ocr-upload{min-height:11rem;display:grid;grid-template-columns:auto minmax(10rem,1fr) minmax(12rem,auto);text-align:left}.ocr-upload-button{grid-column:3}.ocr-crop-modal-overlay{align-items:stretch;padding:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left)}.ocr-crop-modal{height:100%;max-height:none;border-radius:0}.ocr-crop-modal-header{min-height:var(--control-48);padding-block:var(--space-4)}.ocr-cropper-area{min-height:65dvh}}@media(prefers-reduced-motion:reduce){.ocr-upload,.ocr-validation-char,.ocr-action-btn{transition-duration:var(--motion-reduced)}.ocr-spinner{animation:none;border-color:var(--border-strong);border-top-color:var(--action-primary)}.ocr-validation-char:active,.ocr-action-btn:active:not(:disabled){transform:none}}.tour-dialog-backdrop{z-index:1000;display:block;padding:0;background:transparent;pointer-events:auto}.tour-dialog-backdrop:before{content:"";position:fixed;inset:0;pointer-events:none}.tour-overlay--entering{background:var(--overlay-dim)}.tour-decoration{position:fixed;inset:0;z-index:1001;overflow:hidden;pointer-events:none}.tour-dim-panel,.tour-spotlight{position:fixed;top:0;left:0;width:1px;height:1px;transform-origin:0 0;will-change:transform;pointer-events:none}.tour-dim-panel{background:var(--overlay-dim)}.tour-spotlight{border-radius:var(--radius-12)}.tour-tooltip{position:fixed;z-index:1002;width:max-content;min-width:min(18rem,calc(100vw - var(--space-32)));max-height:calc(100dvh - var(--space-32) - var(--safe-top) - var(--safe-bottom));overflow-y:auto;padding:0;border:1px solid var(--border-subtle);border-radius:var(--radius-16);background:var(--surface);box-shadow:var(--shadow-dialog);outline:none;scrollbar-color:var(--border-strong) transparent;scrollbar-width:thin}.tour-tooltip:before{display:none;content:none}.tour-tooltip--entering{width:1px;min-width:1px;height:1px;overflow:hidden;opacity:0}.tour-tooltip-content{position:relative;padding:var(--space-16) var(--space-20)}.tour-copy{opacity:1;transition:opacity var(--motion-fast)}.tour-tooltip--measuring .tour-copy{opacity:0}.tour-tooltip-content:before{display:none;content:none}.tour-title{margin:0 0 var(--space-8);color:var(--text-primary);font-family:var(--font-display);font-size:var(--type-lg);font-weight:800;letter-spacing:-.02em;line-height:var(--leading-tight)}.tour-body{margin:0 0 var(--space-16);color:var(--text-secondary);font-size:var(--type-sm);line-height:var(--leading-body)}.tour-footer{display:flex;align-items:center;justify-content:space-between;gap:var(--space-12);padding-top:var(--space-12);border-top:1px solid var(--border-subtle)}.tour-dots{display:flex;align-items:center;gap:var(--space-4)}.tour-dot{width:var(--space-8);height:var(--space-8);border-radius:var(--radius-pill);background:var(--border-subtle);transition:background-color var(--motion-fast)}.tour-dot.active{width:var(--space-24);background:var(--action-primary)}.tour-actions{display:flex;align-items:center;gap:var(--space-8)}.tour-skip,.tour-next{min-height:var(--control-44);padding:0 var(--space-12);border:1px solid var(--border-strong);border-radius:var(--radius-8);background:var(--surface);color:var(--text-secondary);font:inherit;font-size:var(--type-sm);font-weight:750;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast),border-color var(--motion-fast),color var(--motion-fast),transform var(--motion-fast)}.tour-next{border-color:var(--action-primary);background:var(--action-primary);box-shadow:var(--shadow-action);color:var(--on-action)}@media(hover:hover){.tour-skip:hover{border-color:var(--action-primary);background:var(--action-soft);color:var(--action-primary)}.tour-next:hover{background:var(--action-primary-hover)}}@media(max-width:359px){.tour-tooltip-content{padding:var(--space-12)}.tour-footer{align-items:stretch;flex-direction:column}.tour-dots{justify-content:center}.tour-actions>button{flex:1 1 0}}@media(max-height:520px){.tour-tooltip{max-height:calc(100dvh - var(--space-16) - var(--safe-top) - var(--safe-bottom))}.tour-tooltip-content{padding:var(--space-12) var(--space-16)}.tour-body{margin-bottom:var(--space-8);line-height:1.5}.tour-footer{padding-top:var(--space-8)}}@media(max-height:420px)and (orientation:landscape){.tour-tooltip-content{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-8) var(--space-16)}.tour-title,.tour-body{grid-column:1}.tour-footer{grid-column:2;grid-row:1 / span 2;align-self:stretch;flex-direction:column;justify-content:center;border-top:0;border-left:1px solid var(--border-subtle);padding:0 0 0 var(--space-12)}.tour-actions{flex-direction:column}.tour-actions>button{width:100%}}@media(prefers-reduced-motion:reduce){.tour-copy,.tour-dot,.tour-skip,.tour-next{transition-duration:var(--motion-reduced)}.tour-next:active{transform:none}.tour-dim-panel,.tour-spotlight{transition:none!important}}.practice-view{position:relative;display:flex;flex:1;min-height:0;flex-direction:column;overflow:hidden;background:var(--canvas);color:var(--text-primary);--practice-keyboard-inset: 0px;--practice-header-offset: calc(var(--control-56) + var(--space-16) + var(--safe-top));--practice-content-gutter: clamp(var(--space-12), 3vw, var(--space-24));--practice-fab-min-height: var(--control-56);--practice-fab-edge-gap: var(--space-16);--practice-fab-offset: calc(max(var(--safe-bottom), 0px) + var(--practice-keyboard-inset) + var(--practice-fab-edge-gap));--practice-fab-clearance: calc(var(--practice-fab-min-height) + var(--practice-fab-offset) + var(--space-16))}.practice-view:before{display:none;content:none}.practice-floating-topbar{position:relative;z-index:18;flex:0 0 auto;padding:calc(var(--safe-top) + var(--space-8)) 0 var(--space-8);border-bottom:1px solid var(--border-subtle);background:var(--surface-raised);box-shadow:var(--shadow-card)}.practice-topbar-content,.practice-scroll-status,.practice-core{padding-inline:max(var(--practice-content-gutter),var(--safe-left))}.practice-scroll{position:relative;z-index:1;flex:1;min-height:0;padding:var(--space-16) 0 var(--practice-fab-clearance);overflow-y:auto;overscroll-behavior-y:contain;scroll-padding:var(--practice-header-offset) 0 var(--practice-fab-clearance);scrollbar-gutter:stable;-webkit-overflow-scrolling:touch}.practice-scroll--locked{overflow-y:hidden;overscroll-behavior-y:none;scrollbar-gutter:auto;-webkit-overflow-scrolling:auto}.practice-scroll-content,.practice-core,.practice-scroll-status{display:flex;min-height:min-content;flex-direction:column}.practice-scroll-content{gap:var(--space-12)}.practice-scroll-status{gap:var(--space-8)}.practice-core{gap:var(--space-16)}.practice-action-header{display:grid;width:100%;grid-template-columns:var(--control-44) minmax(5rem,1fr) auto;align-items:center;gap:var(--space-8)}.practice-action-header__spacer{display:none}.practice-action-header__actions{display:grid;min-width:0;grid-column:3;grid-template-columns:repeat(3,var(--control-44));gap:var(--space-4)}.practice-action-more{position:relative;min-width:0}.practice-action-more>.practice-action-button{width:100%}.practice-action-button{position:relative;display:inline-flex;min-width:var(--control-44);min-height:var(--control-44);padding:var(--space-8);align-items:center;justify-content:center;gap:var(--space-4);border:1px solid transparent;border-radius:var(--radius-8);background:transparent;color:var(--text-secondary);font:inherit;font-size:.8rem;font-weight:700;line-height:1.2;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard),opacity var(--motion-fast) var(--ease-standard)}.practice-action-button--exit{justify-self:start}.practice-action-button__label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.practice-action-button[aria-pressed=true]{border-color:var(--border-subtle);background:var(--action-soft);color:var(--action-primary)}.practice-action-button:disabled{color:var(--text-disabled);cursor:default;opacity:.5}.practice-action-button:focus-visible,.practice-action-more__item:focus-visible{outline:3px solid var(--action-focus);outline-offset:2px}.practice-action-progress{display:grid;width:min(9.5rem,100%);justify-self:center;gap:var(--space-4);color:var(--text-secondary);font-size:.78rem;font-variant-numeric:tabular-nums;font-weight:800;line-height:1;text-align:center}.practice-action-progress__track{width:100%;height:var(--space-8);overflow:hidden;border-radius:var(--radius-pill);background:var(--canvas-deep)}.practice-action-progress__track>span{display:block;width:100%;height:100%;transform:scaleX(0);transform-origin:left center;border-radius:inherit;background:var(--action-primary);transition:transform var(--motion-normal) var(--ease-standard)}.practice-action-more__menu{position:absolute;top:calc(100% + var(--space-8));right:0;z-index:32;display:grid;width:min(15rem,calc(100vw - var(--space-24)));gap:var(--space-4);padding:var(--space-8);border:1px solid var(--border-subtle);border-radius:var(--radius-12);background:var(--surface-raised);box-shadow:var(--shadow-dialog)}.practice-action-more__item{display:flex;min-height:var(--control-44);padding:var(--space-8) var(--space-12);align-items:center;gap:var(--space-8);border:0;border-radius:var(--radius-8);background:transparent;color:var(--text-primary);font:inherit;font-size:.875rem;font-weight:700;text-align:start;cursor:pointer;touch-action:manipulation}.practice-action-more__item:disabled{color:var(--text-disabled);cursor:default;opacity:.5}.status-text,.practice-persistence-warning{width:100%;margin:0;padding:var(--space-12) var(--space-16);border:1px solid var(--border-subtle);border-radius:var(--radius-12);background:var(--surface-raised);color:var(--text-primary);font-size:.875rem;font-weight:700;line-height:1.5}.status-text.error{border-color:var(--danger);background:var(--correction-soft);color:var(--danger)}.status-text.done{border-color:var(--success);color:var(--success)}.status-text.loading{border-color:var(--info);color:var(--info)}.practice-persistence-warning{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-8)}.practice-persistence-warning button,.practice-mastery-undo button{min-height:var(--control-44);padding-inline:var(--space-8);border:0;border-radius:var(--radius-8);background:transparent;color:var(--action-primary);font:inherit;font-weight:800;text-decoration:underline;text-underline-offset:.18em;cursor:pointer}.practice-dev-panel{border:1px dashed var(--border-strong);border-radius:var(--radius-8);background:var(--surface-raised)}.practice-dev-panel summary{min-height:var(--control-44);padding:var(--space-12);color:var(--text-secondary);font-size:.75rem;font-weight:700;list-style:none;cursor:pointer}.practice-dev-panel summary::-webkit-details-marker{display:none}.practice-dev-panel[open] summary{border-bottom:1px dashed var(--border-subtle)}.practice-dev-stats-panel{padding:var(--space-8) var(--space-12);color:var(--text-secondary);font-size:.75rem}.dev-stats{display:flex;flex-wrap:wrap;gap:var(--space-8)}.dev-stats__chip{padding:var(--space-4) var(--space-8);border-radius:var(--radius-8);background:var(--surface-subtle)}.practice-primary-fab{position:fixed;right:calc(var(--practice-content-gutter) + max(var(--safe-right),0px));bottom:var(--practice-fab-offset);z-index:28;display:inline-flex;min-height:var(--practice-fab-min-height);padding:var(--space-12) var(--space-20);align-items:center;justify-content:center;gap:var(--space-8);border:1px solid var(--action-primary);border-radius:var(--radius-12);background:var(--action-primary);box-shadow:var(--shadow-action);color:var(--on-action);font:inherit;font-size:.95rem;font-weight:800;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard)}.practice-primary-fab:active:not(:disabled){transform:translateY(1px);box-shadow:var(--shadow-card)}.practice-primary-fab:disabled{background:var(--canvas-deep);color:var(--text-disabled);cursor:default;box-shadow:none}.practice-primary-fab--retry{border-color:var(--warning)}.practice-primary-fab:focus-visible{outline:3px solid var(--action-focus);outline-offset:3px}.practice-mastery-undo{position:fixed;left:50%;bottom:calc(var(--practice-fab-offset) + var(--practice-fab-min-height) + var(--space-12));z-index:25;display:flex;width:min(calc(100% - var(--safe-left) - var(--safe-right) - (2 * var(--practice-content-gutter))),32rem);padding:var(--space-8) var(--space-12);align-items:center;justify-content:space-between;gap:var(--space-12);translate:-50% 0;border:1px solid var(--success);border-radius:var(--radius-12);background:var(--surface-raised);box-shadow:var(--shadow-raised);color:var(--text-primary)}.practice-report-dialog-backdrop,.practice-mark-known-dialog-backdrop{align-items:center;padding:max(var(--space-12),var(--safe-top)) max(var(--space-12),var(--safe-right)) max(var(--space-12),var(--safe-bottom)) max(var(--space-12),var(--safe-left))}.practice-report-dialog,.practice-mark-known-dialog{display:grid;width:min(100%,32rem);padding:var(--space-24);gap:var(--space-16);border-radius:var(--radius-16)}.practice-report-dialog__description,.practice-mark-known-dialog__description{margin:0;color:var(--text-secondary);font-size:.9375rem;line-height:1.6}.practice-report-dialog__options{display:grid;gap:var(--space-8);margin:0;padding:0;border:0}.practice-report-dialog__option{display:flex;min-height:var(--control-48);padding:var(--space-8) var(--space-12);align-items:center;gap:var(--space-8);border:1px solid var(--border-subtle);border-radius:var(--radius-8);color:var(--text-primary);cursor:pointer}.practice-report-dialog__option:has(input:checked){border-color:var(--action-primary);background:var(--action-soft)}.practice-report-dialog__actions,.practice-mark-known-dialog__actions{display:flex;justify-content:flex-end;gap:var(--space-8)}.practice-report-dialog__actions button,.practice-mark-known-dialog__actions button{min-height:var(--control-44);padding:0 var(--space-16);border:1px solid var(--border-strong);border-radius:var(--radius-8);background:transparent;color:var(--text-primary);font:inherit;font-weight:800;cursor:pointer}.practice-report-dialog__actions button:last-child,.practice-mark-known-dialog__actions button:last-child{border-color:var(--action-primary);background:var(--action-primary);color:var(--on-action)}.practice-report-dialog__actions button:disabled{cursor:default;opacity:.5}@media(hover:hover){.practice-action-button:hover:not(:disabled),.practice-action-more__item:hover:not(:disabled){background:var(--action-soft);color:var(--action-primary)}.practice-primary-fab:hover:not(:disabled),.practice-report-dialog__actions button:last-child:not(:disabled):hover,.practice-mark-known-dialog__actions button:last-child:hover{background:var(--action-primary-hover)}.practice-report-dialog__option:hover,.practice-report-dialog__actions button:not(:disabled):hover,.practice-mark-known-dialog__actions button:hover{border-color:var(--action-primary)}}@media(min-width:640px){.practice-action-header{grid-template-columns:minmax(var(--control-44),1fr) auto minmax(0,1fr);gap:var(--space-12)}.practice-action-progress{grid-column:2;grid-row:1}.practice-action-header__actions{grid-column:3;grid-row:1;grid-template-columns:repeat(3,minmax(var(--control-44),auto));justify-self:end}.practice-action-button__label{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto;white-space:nowrap}}@media(max-width:359px){.practice-view{--practice-header-offset: calc((2 * var(--control-44)) + var(--space-24) + var(--safe-top))}.practice-action-header{grid-template-columns:var(--control-44) minmax(0,1fr) var(--control-44)}.practice-action-header__spacer{display:block}.practice-action-header__actions{grid-column:1 / -1;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-8)}.practice-action-header__actions .practice-action-button__label{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto;white-space:normal}}@media(max-width:259px){.practice-view{--practice-header-offset: calc((3 * var(--control-44)) + (4 * var(--space-8)) + var(--safe-top))}.practice-action-header__actions{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:180px){.practice-view{--practice-header-offset: calc((4 * var(--control-44)) + (5 * var(--space-8)) + var(--safe-top))}.practice-action-header__actions{grid-template-columns:minmax(0,1fr)}}.practice-view--keyboard-open .practice-floating-topbar{padding-block:calc(var(--safe-top) + var(--space-4)) var(--space-4)}.practice-view--keyboard-open .practice-dev-panel{display:none}.practice-view--keyboard-open{--practice-fab-edge-gap: var(--space-12)}@media(prefers-reduced-motion:reduce){.practice-action-button,.practice-action-progress__track>span,.practice-primary-fab,.practice-action-more__item,.practice-report-dialog__option,.practice-mark-known-dialog__actions button{transition-duration:var(--motion-reduced)}.practice-primary-fab:active:not(:disabled){transform:none}}.question-card-wrap{position:relative;margin-bottom:var(--space-8);scroll-margin-top:calc(var(--practice-header-offset) + var(--space-8));overflow:visible}.question-card{position:relative;display:flex;flex-direction:column;gap:var(--space-16);padding:clamp(var(--space-20),4vw,var(--space-32));border:1px solid var(--border-subtle);border-radius:var(--radius-16);background:var(--surface-raised);box-shadow:var(--shadow-raised);text-align:center}.question-card:before{display:none;content:none}.question-card__hero,.question-card__meta,.question-card__answer{position:relative;width:100%;min-width:0}.question-card__hero{display:flex;min-height:clamp(8rem,22vh,12rem);padding:var(--space-16) var(--space-8) var(--space-24);align-items:center;justify-content:center;border-bottom:1px solid var(--border-subtle)}.question-card__meta{display:grid;gap:var(--space-12)}.question-card__meta-status{display:flex;flex-direction:column;gap:var(--space-8)}.question-card__meta-status>*{width:100%}.question-card__meta:empty,.question-card__meta-status:empty,.question-card__hero:empty{display:none}.word-display{display:flex;width:100%;min-width:0;flex-direction:column;gap:var(--space-8)}.sentence-display{color:var(--text-primary);font-family:var(--font-reading);font-size:clamp(1.35rem,4.5vw,2rem);font-weight:750;letter-spacing:-.015em;line-height:1.7;text-align:center;text-wrap:pretty;word-break:break-word}.underlined-target{position:relative;display:inline-block;margin-inline:var(--space-4);padding:1.25rem var(--space-4) var(--space-4);border-bottom:3px solid var(--action-primary);color:var(--action-primary);font-weight:850}.type-badge{position:absolute;top:0;left:50%;padding:.12rem var(--space-8);transform:translate(-50%);border:1px solid var(--border-strong);border-radius:var(--radius-pill);background:var(--surface-subtle);color:var(--text-secondary);font-family:var(--font-ui);font-size:.68rem;font-weight:800;letter-spacing:.03em;line-height:1.35;white-space:nowrap;pointer-events:none}.underlined-target ruby{ruby-position:over}.underlined-target ruby rt{color:var(--text-secondary);font-size:.62rem;font-weight:650;text-align:center}.feedback-inline,.hint-inline,.sentence-meaning-inline{display:flex;width:100%;min-height:var(--control-44);padding:var(--space-12) var(--space-16);align-items:flex-start;gap:var(--space-8);border:1px solid var(--border-subtle);border-radius:var(--radius-12);font-family:var(--font-ui);font-size:.9rem;line-height:1.55;text-align:left;overflow-wrap:anywhere}.feedback-inline{position:relative;padding-right:var(--space-48);background:var(--surface-subtle);color:var(--text-primary);font-weight:750}.feedback-inline:after{position:absolute;top:50%;right:var(--space-16);transform:translateY(-50%);font-size:1rem;font-weight:900;pointer-events:none}.feedback-inline.success{border-color:var(--success);background:color-mix(in srgb,var(--success) 10%,var(--surface-raised));color:var(--success)}.feedback-inline.success:after{content:"✓"}.feedback-inline.error{border-color:var(--danger);background:var(--correction-soft);color:var(--danger)}.feedback-inline.error:after{content:"×"}.feedback-inline.skill{border-style:dashed;color:var(--text-secondary)}.hint-inline-motion{display:grid;width:100%;grid-template-rows:0fr;overflow:hidden;opacity:0;transform:translateY(calc(-1 * var(--space-4)));transition:grid-template-rows var(--motion-normal) var(--ease-standard),opacity var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard)}.hint-inline-motion--open{grid-template-rows:1fr;opacity:1;transform:translateY(0)}.hint-inline-motion--inactive{display:none}.hint-inline{min-height:0;overflow:hidden;border-color:var(--warning);background:color-mix(in srgb,var(--action-focus) 24%,var(--surface-raised));color:var(--text-primary);font-weight:700}.sentence-meaning-inline{position:relative;background:var(--surface-subtle);color:var(--text-secondary);font-weight:600;word-break:normal}.sentence-meaning-inline:before{content:"訳";flex-shrink:0;color:var(--info);font-size:.72rem;font-weight:800;line-height:1.9;pointer-events:none}.sentence-meaning-inline__content{display:block;flex:1;min-width:0}.sentence-meaning-inline:empty{display:none}.meaning-highlight{padding-inline:.12rem;background:var(--action-soft);color:var(--info);font-weight:750}.question-answer-card{display:flex;width:100%;min-width:0;padding:clamp(var(--space-16),3vw,var(--space-24));flex-direction:column;gap:var(--space-16);border:1px solid var(--border-subtle);border-radius:var(--radius-12);background:var(--surface-subtle);text-align:left}.question-answer-card--combined{background:var(--action-soft)}.question-answer-card__hero-summary,.question-answer-card__hero-main{display:grid;min-width:0;gap:var(--space-4);align-items:start}.question-answer-card__value{color:var(--text-primary);font-family:var(--font-display);font-size:clamp(1.8rem,6vw,2.7rem);font-weight:850;letter-spacing:-.03em;line-height:1.15;overflow-wrap:anywhere}.question-answer-card__subtitle{color:var(--text-secondary);font-size:1rem;font-weight:750;line-height:1.45;overflow-wrap:anywhere}.target-kanji-highlight{padding-inline:.12rem;border-bottom:2px solid var(--action-primary);color:var(--action-primary)}.question-answer-card__details{display:grid;gap:var(--space-8) var(--space-12)}.question-answer-card__details--grid{grid-template-columns:minmax(0,1fr)}.question-answer-card__knowledge{padding-top:var(--space-12)}.question-answer-card__row{display:grid;min-width:0;grid-template-columns:minmax(4.25rem,auto) minmax(0,1fr);align-items:start;gap:var(--space-8)}.question-answer-card__label,.question-answer-card__detail{min-width:0}.question-answer-card__label{display:inline-flex;padding-top:.08rem;align-items:flex-start}.question-answer-card__detail{width:100%;color:var(--text-secondary);font-size:.92rem;line-height:1.55;overflow-wrap:anywhere}.question-answer-card__row--meaning .question-answer-card__detail{color:var(--text-primary)}.reading-info-label{display:inline-block;flex-shrink:0;padding:.16rem var(--space-8);border:1px solid currentColor;border-radius:var(--radius-8);background:var(--surface-raised);font-size:.72rem;font-weight:800;letter-spacing:.02em;white-space:nowrap}.reading-info-label.onyomi{color:var(--info)}.reading-info-label.kunyomi{color:var(--action-primary)}.reading-info-label.meaning{color:var(--warning)}.reading-info-values{display:block;width:100%;color:inherit;line-height:1.5;overflow-wrap:anywhere}.reading-highlighted{color:var(--action-primary);font-weight:850;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:.18em;white-space:nowrap}.question-answer-card__row--onyomi .reading-highlighted{color:var(--info)}.question-answer-card__row--meaning .reading-highlighted{color:var(--warning)}.hw-char-progress{display:flex;width:100%;padding:var(--space-4);align-items:center;justify-content:center;gap:var(--space-8)}.hw-char{position:relative;display:inline-flex;width:var(--control-44);height:var(--control-44);align-items:center;justify-content:center;border:1px solid var(--border-subtle);border-radius:var(--radius-8);background:var(--surface-raised);color:var(--text-secondary);font-family:var(--font-display);font-size:1.15rem;font-weight:800;transition:background-color var(--motion-normal),color var(--motion-normal),border-color var(--motion-normal)}.hw-char.done{border-color:var(--success);background:color-mix(in srgb,var(--success) 10%,var(--surface-raised));color:var(--success)}.hw-char.done:after{content:"✓";position:absolute;right:2px;bottom:0;font-size:.58rem}.hw-char.active{border:2px solid var(--action-primary);color:var(--action-primary)}.hw-char.pending{border-style:dashed;color:var(--text-disabled)}.question-loading-overlay{position:absolute;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-16);background:var(--loading-scrim);pointer-events:none}.question-loading-chip{padding:var(--space-8) var(--space-12);border:1px solid var(--border-subtle);border-radius:var(--radius-8);background:var(--surface-raised);box-shadow:var(--shadow-card);color:var(--text-primary);font-size:.875rem;font-weight:750;animation:practice-pulse 1.1s var(--ease-standard) infinite}.question-card.skeleton{width:100%;min-height:14rem;justify-content:center}.skeleton-line{height:var(--space-16);border-radius:var(--radius-8);background:var(--canvas-deep);animation:practice-pulse 1.4s var(--ease-standard) infinite}.skeleton-line.w60{width:60%}.skeleton-line.w80{width:80%}.skeleton-line.w40{width:40%}.skeleton-loading-caption{margin:var(--space-4) 0 0;color:var(--text-secondary);font-size:.875rem;animation:practice-pulse 1.4s var(--ease-standard) infinite}.skeleton-center{display:flex;flex:1;padding-inline:var(--practice-content-gutter);align-items:center;justify-content:center}@keyframes practice-pulse{0%,to{opacity:1}50%{opacity:.46}}@media(min-width:640px){.question-card-wrap{margin-bottom:var(--space-12)}.question-answer-card__details--grid{grid-template-columns:repeat(2,minmax(0,1fr))}.question-answer-card__row--word-meaning{grid-column:1 / -1}}@media(max-width:430px){.question-card{gap:var(--space-12);padding:var(--space-16)}.question-card__hero{min-height:7rem;padding:var(--space-12) var(--space-4) var(--space-20)}.sentence-display{font-size:1.15rem;line-height:1.72}.question-answer-card{padding:var(--space-12);gap:var(--space-12)}.question-answer-card__row{grid-template-columns:minmax(3.25rem,auto) minmax(0,1fr)}}.practice-view--keyboard-open .question-card{padding:var(--space-12) var(--space-16);gap:var(--space-8)}.practice-view--keyboard-open .question-card__hero{min-height:5.5rem;padding-block:var(--space-8) var(--space-12)}.practice-view--keyboard-open .sentence-display{font-size:1.05rem;line-height:1.6}@media(prefers-reduced-motion:reduce){.hint-inline-motion,.hw-char{transition-duration:var(--motion-reduced);transform:none}.question-loading-chip,.skeleton-line,.skeleton-loading-caption{animation-duration:var(--motion-reduced)}}.input-container{display:grid;min-height:0;grid-template-rows:0fr;scroll-margin-top:calc(var(--practice-header-offset) + var(--space-8));opacity:0;transform:translateY(var(--space-8));transition:grid-template-rows var(--motion-normal) var(--ease-standard),opacity var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard)}.input-container--open{grid-template-rows:1fr;opacity:1;transform:translateY(0)}.input-container--closed{pointer-events:none}.input-container__viewport{min-height:0;overflow:hidden}.input-container__content{min-height:0;container-type:inline-size}.input-stack,.kana-input-area{display:flex;flex-direction:column;gap:var(--space-12)}.input-mode-toggle,.kana-type-toggle{display:inline-flex;width:fit-content;padding:var(--space-4);align-items:center;gap:var(--space-4);border:1px solid var(--border-subtle);border-radius:var(--radius-12);background:var(--surface-raised)}.input-mode-toggle button,.kana-type-toggle button{min-width:var(--control-44);min-height:var(--control-44);padding:var(--space-8) var(--space-12);border:0;border-radius:var(--radius-8);background:transparent;color:var(--text-secondary);font:inherit;font-size:.84rem;font-weight:750;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard)}.input-mode-toggle button.active,.kana-type-toggle button.active{background:var(--action-primary);color:var(--on-action)}.input-area{display:flex;padding:var(--space-4);gap:var(--space-8);border:1px solid var(--border-strong);border-radius:var(--radius-12);background:var(--surface-raised);box-shadow:var(--shadow-card);transition:border-color var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard)}.input-area:focus-within{border-color:var(--action-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--action-focus) 45%,transparent)}.input-area input,.kana-display{flex:1 1 auto;width:100%;min-width:var(--control-44);min-height:var(--control-48);padding:var(--space-12);border:0;outline:0;background:transparent;color:var(--text-primary);font-family:var(--font-reading);font-size:1rem;line-height:1.4}.input-area input::placeholder{color:var(--text-disabled);opacity:1}.kana-display{display:flex;align-items:center}.submit-btn{display:flex;width:var(--control-48);min-width:var(--control-48);min-height:var(--control-48);padding:0;align-items:center;justify-content:center;border:1px solid var(--action-primary);border-radius:var(--radius-8);background:var(--action-primary);box-shadow:var(--shadow-action);color:var(--on-action);cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard),opacity var(--motion-fast) var(--ease-standard)}.submit-btn:active:not(:disabled){transform:translateY(1px);box-shadow:none}.submit-btn:disabled{border-color:var(--border-subtle);background:var(--canvas-deep);box-shadow:none;color:var(--text-disabled);cursor:default;opacity:.7}.hw-tip{margin-bottom:var(--space-8);padding:var(--space-8) var(--space-12);border:1px solid var(--warning);border-radius:var(--radius-8);background:color-mix(in srgb,var(--action-focus) 22%,var(--surface-raised));color:var(--text-primary);font-size:.84rem;font-weight:700;line-height:1.5;text-align:left}.handwriting-section{padding:var(--space-12);border:1px solid var(--border-subtle);border-radius:var(--radius-16);background:var(--surface-raised);box-shadow:var(--shadow-card);user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.handwriting-section.hw-error{border-color:var(--danger)}.handwriting-section.hw-error .hw-tip{border-color:var(--danger);background:var(--correction-soft);color:var(--danger)}.canvas-wrapper.hw-error{border-color:var(--danger);box-shadow:0 0 0 3px color-mix(in srgb,var(--danger) 18%,transparent)}.handwriting-toolbar{display:grid;margin-bottom:var(--space-8);grid-template-columns:repeat(3,var(--control-44)) minmax(0,1fr);align-items:start;gap:var(--space-8);container:handwriting-toolbar / inline-size}.handwriting-toolbar-actions{display:grid;grid-row:1;grid-column:1 / span 3;grid-template-columns:repeat(3,var(--control-44));gap:var(--space-8)}.handwriting-toolbar-actions .ui-icon-button{border:1px solid var(--border-subtle);border-radius:var(--radius-8);background:var(--surface-raised);color:var(--text-secondary);box-shadow:none}.handwriting-toolbar-actions .ui-icon-button:disabled{color:var(--text-disabled);cursor:default;opacity:.5}.handwriting-strictness{display:grid;min-width:0;grid-row:1;grid-column:1 / -1;grid-template-columns:subgrid;grid-template-rows:var(--control-44) auto;pointer-events:none}.handwriting-strictness summary{display:grid;min-width:0;min-height:var(--control-44);margin:0;padding:0 var(--space-12);grid-row:1;grid-column:4;pointer-events:auto;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:var(--space-8);overflow:hidden;border:1px solid var(--action-primary);border-radius:var(--radius-8);background:var(--surface-subtle);color:var(--text-secondary);font-size:.8rem;font-weight:700;cursor:pointer;transition:background-color var(--motion-normal) var(--ease-standard),border-color var(--motion-normal) var(--ease-standard)}.handwriting-strictness summary::-webkit-details-marker{display:none}.handwriting-strictness summary::marker{content:""}.handwriting-strictness summary:after{content:"";width:.45rem;height:.45rem;border-right:2px solid var(--action-primary);border-bottom:2px solid var(--action-primary);transform:rotate(45deg) translateY(-2px)}.handwriting-strictness[open] summary{border-color:var(--action-primary);background:var(--action-soft)}.handwriting-strictness[open] summary:after{transform:rotate(225deg) translate(-2px,-2px)}.handwriting-strictness-label,.handwriting-strictness-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.handwriting-strictness-value{color:var(--action-primary);font-weight:800}.handwriting-strictness::details-content{display:grid;min-width:0;grid-row:2;grid-column:1 / -1;grid-template-columns:subgrid;pointer-events:auto}.handwriting-strictness .chip-select{display:grid;width:100%;min-width:0;margin:var(--space-8) 0 0;grid-column:1 / -1;grid-template-columns:repeat(3,minmax(var(--control-44),1fr));gap:var(--space-8)}.handwriting-strictness .chip-item{width:100%;min-width:0;min-height:var(--control-44);padding-inline:var(--space-8);font-size:.8rem}@container handwriting-toolbar (max-width: 250px){.handwriting-strictness{grid-template-rows:var(--control-44) var(--control-44) auto}.handwriting-strictness summary{margin-top:var(--space-8);grid-row:2;grid-column:1 / -1}.handwriting-strictness::details-content{grid-row:3}}.handwriting-container,.handwriting-container *,.practice-view--hw .question-card,.practice-view--hw .question-card *{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.handwriting-container{position:relative;width:100%;max-width:450px;margin-inline:auto}.canvas-wrapper{position:relative;width:100%;overflow:hidden;aspect-ratio:1 / 1;border:1px solid var(--border-strong);border-radius:var(--radius-12);background:var(--surface-raised);cursor:crosshair;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.canvas-wrapper:before,.canvas-wrapper:after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none}.canvas-wrapper:before{background:linear-gradient(to right,transparent calc(50% - .5px),color-mix(in srgb,var(--danger) 22%,transparent) 50%,transparent calc(50% + .5px)),linear-gradient(to bottom,transparent calc(50% - .5px),color-mix(in srgb,var(--danger) 22%,transparent) 50%,transparent calc(50% + .5px)),linear-gradient(45deg,transparent calc(50% - .5px),color-mix(in srgb,var(--danger) 10%,transparent) 50%,transparent calc(50% + .5px)),linear-gradient(-45deg,transparent calc(50% - .5px),color-mix(in srgb,var(--danger) 10%,transparent) 50%,transparent calc(50% + .5px))}.canvas-wrapper:after{inset:var(--space-8);border:1px solid color-mix(in srgb,var(--danger) 16%,transparent);border-radius:var(--radius-8)}.canvas-wrapper canvas{position:relative;z-index:1;display:block;width:100%;height:100%;aspect-ratio:1 / 1;background:transparent;cursor:crosshair;touch-action:none}.recognize-hint{position:absolute;left:var(--space-8);bottom:var(--space-8);z-index:2;padding:var(--space-4) var(--space-8);border:1px solid var(--border-subtle);border-radius:var(--radius-8);background:var(--surface-raised);color:var(--text-secondary);font-size:.7rem;pointer-events:none}.recognize-hint.active{border-color:var(--info);color:var(--info);font-weight:800}.handwriting-dialog-backdrop{align-items:center;padding:max(var(--space-12),var(--safe-top)) max(var(--space-12),var(--safe-right)) max(var(--space-12),var(--safe-bottom)) max(var(--space-12),var(--safe-left));overflow:auto;background:var(--overlay-handwriting);-webkit-overflow-scrolling:touch}.handwriting-dialog{display:grid;width:min(100%,36rem);max-height:calc(100dvh - max(var(--space-24),var(--safe-top)) - max(var(--space-24),var(--safe-bottom)));padding:clamp(var(--space-12),2vw,var(--space-16));overflow:auto;border:1px solid var(--border-subtle);border-radius:var(--radius-16);background:var(--surface-raised);box-shadow:var(--shadow-dialog)}.handwriting-dialog-body{display:grid;min-width:0;min-height:0;grid-template-areas:"context" "feedback" "toolbar" "canvas";grid-template-rows:auto auto auto minmax(0,1fr);gap:var(--space-8);user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.handwriting-dialog-context{display:grid;grid-area:context;justify-items:center;gap:var(--space-4);color:var(--text-primary);text-align:center}.handwriting-dialog-prompt{max-width:100%;overflow-wrap:anywhere;font-family:var(--font-reading);font-size:clamp(1.15rem,4vw,1.5rem);font-weight:750;line-height:1.35}.handwriting-dialog-blanks{min-height:1.5rem;color:var(--text-secondary);font-family:var(--font-reading);font-size:1.1rem;letter-spacing:.08em;line-height:1.2}.handwriting-dialog-progress{display:inline-flex;gap:var(--space-4)}.handwriting-dialog-blank{display:inline-flex;min-width:1.25rem;justify-content:center;border-bottom:1px solid var(--border-strong)}.handwriting-dialog-blank.done{border-color:var(--success);color:var(--success)}.handwriting-dialog-blank.active{border-color:var(--action-primary);color:var(--action-primary)}.handwriting-dialog-blank.pending{opacity:.65}.handwriting-dialog-feedback{display:flex;grid-area:feedback;min-height:var(--control-44);padding:var(--space-8) var(--space-12);align-items:center;gap:var(--space-8);border:1px solid var(--border-subtle);border-radius:var(--radius-8);background:var(--surface-subtle);color:var(--text-secondary);font-size:.875rem;font-weight:700}.handwriting-dialog-feedback.error{border-color:var(--danger);background:var(--correction-soft);color:var(--danger)}.handwriting-dialog-feedback.success{border-color:var(--success);background:color-mix(in srgb,var(--success) 10%,var(--surface-raised));color:var(--success)}.handwriting-dialog-body .handwriting-toolbar{grid-area:toolbar;width:100%;margin:0}.handwriting-dialog-canvas{display:grid;min-width:0;min-height:0;grid-area:canvas;place-items:center}.handwriting-dialog-canvas .handwriting-container{width:min(100%,30rem,calc(100dvh - 13rem));max-width:100%}@media(max-width:639px),(max-height:560px){.handwriting-section>.handwriting-container{width:min(100%,max(6rem,calc(100svh - var(--practice-header-offset) - 7rem)))}}@media(max-height:560px)and (orientation:landscape){.handwriting-dialog{width:min(100%,42rem)}.handwriting-dialog-body{grid-template-areas:"context canvas" "feedback canvas" "toolbar canvas";grid-template-columns:minmax(12rem,1fr) minmax(0,1.35fr);grid-template-rows:auto auto minmax(0,1fr)}.handwriting-dialog-canvas .handwriting-container{width:min(100%,calc(100dvh - var(--space-32)))}}@media(hover:hover){.submit-btn:not(:disabled):hover{background:var(--action-primary-hover)}.input-mode-toggle button:not(.active):hover,.kana-type-toggle button:not(.active):hover,.handwriting-toolbar-actions .ui-icon-button:not(:disabled):hover{background:var(--action-soft);color:var(--action-primary)}}@media(prefers-reduced-motion:reduce){.input-container,.input-mode-toggle button,.kana-type-toggle button,.submit-btn,.handwriting-toolbar-actions .ui-icon-button,.handwriting-strictness summary{transition-duration:var(--motion-reduced)}.submit-btn:active:not(:disabled){transform:none}}.kana-pad{display:flex;padding:var(--space-12);flex-direction:column;gap:var(--space-8);border:1px solid var(--border-subtle);border-radius:var(--radius-16);background:var(--surface-raised);box-shadow:var(--shadow-card)}.kana-type-toggle button{padding-inline:var(--space-12);font-size:.82rem}.kana-flick-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-8)}.kana-flick-key{position:relative;min-height:52px;border:1px solid var(--border-subtle);border-radius:var(--radius-8);background:var(--surface-raised);color:var(--text-primary);font-family:var(--font-reading);font-size:1rem;font-weight:800;cursor:pointer;touch-action:none;user-select:none;-webkit-user-select:none;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard)}.kana-flick-key:active:not(:disabled){transform:translateY(1px)}.kana-flick-key:disabled{border-style:dashed;color:var(--text-disabled);cursor:default;opacity:.6}.kana-center{font-size:1rem;font-weight:800}.kana-hint{position:absolute;color:var(--text-secondary);font-size:.58rem;opacity:.8;pointer-events:none}.kana-hint.up{top:var(--space-4);left:50%;transform:translate(-50%)}.kana-hint.down{bottom:var(--space-4);left:50%;transform:translate(-50%)}.kana-hint.left{left:var(--space-4);top:50%;transform:translateY(-50%)}.kana-hint.right{right:var(--space-4);top:50%;transform:translateY(-50%)}.kana-flick-overlay{position:absolute;top:calc(-1 * var(--space-8));left:50%;z-index:2;display:none;width:7.5rem;height:7.5rem;transform:translate(-50%,-100%) scale(.96);border:1px solid var(--action-primary);border-radius:50%;background:var(--surface-raised);box-shadow:var(--shadow-raised);pointer-events:none}.kana-flick-overlay.active{display:block;transform:translate(-50%,-100%) scale(1)}.kana-overlay{position:absolute;color:var(--action-primary);font-size:.8rem;font-weight:800;pointer-events:none}.kana-overlay.active{padding:.1rem var(--space-4);border:1px solid var(--action-primary);border-radius:var(--radius-8);background:var(--action-soft);text-decoration:underline}.kana-overlay.up{top:var(--space-8);left:50%;transform:translate(-50%)}.kana-overlay.down{bottom:var(--space-8);left:50%;transform:translate(-50%)}.kana-overlay.left{left:var(--space-12);top:50%;transform:translateY(-50%)}.kana-overlay.right{right:var(--space-12);top:50%;transform:translateY(-50%)}.kana-overlay.center{top:50%;left:50%;transform:translate(-50%,-50%);color:var(--text-primary);font-size:1rem}.kana-actions{display:flex;gap:var(--space-8)}.kana-action-btn{flex:1;min-height:var(--control-44);padding-inline:var(--space-8);border:1px solid var(--border-subtle);border-radius:var(--radius-8);background:var(--surface-raised);color:var(--text-primary);font:inherit;font-size:.82rem;font-weight:750;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard)}.kana-action-btn:disabled{border-style:dashed;color:var(--text-disabled);cursor:default;opacity:.55}.kana-action-btn:active:not(:disabled){transform:translateY(1px)}.candidates-bar{display:flex;min-height:var(--control-48);margin-bottom:var(--space-8);padding:var(--space-8);flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--space-8);border:1px solid var(--border-subtle);border-radius:var(--radius-12);background:var(--surface-subtle)}.candidate-btn{display:flex;min-width:var(--control-44);min-height:var(--control-44);padding:0 var(--space-12);align-items:center;justify-content:center;border:1px solid var(--border-subtle);border-radius:var(--radius-8);background:var(--surface-raised);color:var(--text-primary);font-family:var(--font-reading);font-size:1.1rem;font-weight:800;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard)}.candidate-btn:active:not(:disabled){transform:translateY(1px)}.mcq-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-12);padding:var(--space-4)}.mcq-choice{position:relative;display:flex;min-height:var(--control-56);padding:var(--space-12) var(--space-48) var(--space-12) var(--space-16);align-items:center;justify-content:flex-start;border:1px solid var(--border-subtle);border-radius:var(--radius-12);background:var(--surface-raised);box-shadow:var(--shadow-card);color:var(--text-primary);font-family:var(--font-reading);font-size:1.05rem;font-weight:800;line-height:1.4;text-align:left;overflow-wrap:anywhere;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard),opacity var(--motion-normal) var(--ease-standard)}.mcq-choice:after{position:absolute;right:var(--space-16);font-family:var(--font-ui);font-size:1rem;font-weight:900;pointer-events:none}.mcq-choice:active:not(:disabled){transform:translateY(1px);box-shadow:none}.mcq-choice.correct{border-color:var(--success);background:color-mix(in srgb,var(--success) 10%,var(--surface-raised));color:var(--success)}.mcq-choice.correct:after{content:"✓"}.mcq-choice.wrong{border-color:var(--danger);background:var(--correction-soft);color:var(--danger);text-decoration:line-through}.mcq-choice.wrong:after{content:"×"}.mcq-choice:disabled{cursor:default;box-shadow:none;opacity:.76}.mcq-choice:disabled:not(.correct):not(.wrong){color:var(--text-disabled);opacity:.55}@media(hover:hover){.kana-flick-key:not(:disabled):hover,.kana-action-btn:not(:disabled):hover,.candidate-btn:not(:disabled):hover,.mcq-choice:not(:disabled):hover{border-color:var(--action-primary);background:var(--action-soft);color:var(--action-primary)}}@container (max-width: 360px){.mcq-grid{grid-template-columns:minmax(0,1fr);gap:var(--space-8)}}@media(max-width:360px){.mcq-grid{grid-template-columns:minmax(0,1fr);gap:var(--space-8)}}@media(min-width:640px){.kana-flick-key{min-height:64px;font-size:1.05rem}.kana-hint{font-size:.62rem}.mcq-choice{min-height:64px;font-size:1.12rem}}@media(prefers-reduced-motion:reduce){.kana-type-toggle button,.kana-flick-key,.kana-action-btn,.candidate-btn,.mcq-choice{transition-duration:var(--motion-reduced)}.kana-flick-key:active:not(:disabled),.kana-action-btn:active:not(:disabled),.candidate-btn:active:not(:disabled),.mcq-choice:active:not(:disabled){transform:none}}.page-frame:has(>.practice-summary){overflow-y:auto;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch}.practice-summary{width:100%;min-height:100%;flex:0 0 auto;background:var(--canvas);color:var(--text-primary)}.practice-summary__content{container-type:inline-size;display:flex;min-height:100%;padding-top:max(var(--space-32),var(--safe-top));padding-bottom:max(var(--space-48),var(--safe-bottom));flex-direction:column;align-items:stretch;justify-content:flex-start;gap:var(--space-16)}.practice-summary__mark{display:grid;width:var(--control-48);height:var(--control-48);place-items:center;border-radius:50%;background:color-mix(in srgb,var(--success) 12%,var(--surface-raised));color:var(--success)}.practice-summary__mark:after{display:none;content:none}.practice-summary__eyebrow{margin:0;color:var(--text-secondary);font-size:.875rem;font-weight:700}.practice-summary h1{max-width:18ch;margin:0;color:var(--text-primary);font-family:var(--font-display);font-size:clamp(2rem,7vw,3.5rem);font-weight:850;letter-spacing:-.035em;line-height:1.02;text-wrap:balance}.practice-summary__metrics{display:grid;width:100%;grid-template-columns:repeat(2,minmax(0,1fr));margin:var(--space-8) 0 0;padding:0;overflow:hidden;border:1px solid var(--border-subtle);border-radius:var(--radius-16);background:var(--surface-raised);box-shadow:var(--shadow-card)}.practice-summary__metrics>div{display:flex;min-height:6.25rem;padding:var(--space-16);flex-direction:column;justify-content:space-between;gap:var(--space-8);border-right:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle)}.practice-summary__metrics>div:nth-child(2n){border-right:0}.practice-summary__metrics dt{margin:0;color:var(--text-secondary);font-size:.78rem;font-weight:700;line-height:1.35}.practice-summary__metrics dd{order:-1;margin:0;color:var(--text-primary);font-family:var(--font-display);font-size:clamp(1.65rem,7vw,2.35rem);font-variant-numeric:tabular-nums;font-weight:850;line-height:1}.practice-summary__next-step{width:100%;margin:var(--space-8) 0 0;padding:var(--space-16);border:1px solid var(--action-primary);border-radius:var(--radius-12);background:var(--action-soft);color:var(--text-primary);font-size:.95rem;font-weight:750;line-height:1.55}.practice-summary__actions{display:grid;width:100%;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-8);margin-bottom:0}.practice-summary__primary,.practice-summary__retry,.practice-summary__continue,.practice-summary__progress,.practice-summary__home{display:inline-flex;min-height:var(--control-48);padding:var(--space-8) var(--space-16);align-items:center;justify-content:center;gap:var(--space-8);border:1px solid var(--border-strong);border-radius:var(--radius-12);background:var(--surface-raised);color:var(--text-primary);font:inherit;font-size:.9rem;font-weight:800;line-height:1.3;cursor:pointer;touch-action:manipulation;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard)}.practice-summary__primary{grid-column:1 / -1;min-height:var(--control-56);border-color:var(--action-primary);background:var(--action-primary);box-shadow:var(--shadow-action);color:var(--on-action);font-size:1rem}.practice-summary__primary:active,.practice-summary__retry:active,.practice-summary__continue:active,.practice-summary__progress:active,.practice-summary__home:active{transform:translateY(1px);box-shadow:none}.practice-summary__detail{display:grid;width:100%;margin:0;padding:var(--space-12) 0;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);align-items:baseline;gap:var(--space-16);border-bottom:1px solid var(--border-subtle)}.practice-summary__detail:first-of-type{border-top:1px solid var(--border-subtle)}.practice-summary__detail span,.practice-summary__note{color:var(--text-secondary);font-size:.875rem;line-height:1.5}.practice-summary__detail strong{color:var(--text-primary);font-weight:800;text-align:right;overflow-wrap:anywhere}.practice-summary__note{margin:0}.practice-summary__tail-retry-note,.practice-summary__delivery-note,.practice-summary__content>.practice-persistence-warning{width:100%;margin:0;padding:var(--space-12) var(--space-16);border:1px solid var(--border-subtle);border-radius:var(--radius-12);background:var(--surface-raised);color:var(--text-primary);font-size:.875rem;font-weight:700;line-height:1.55}.practice-summary__delivery-note{border-color:var(--danger);background:var(--correction-soft)}.practice-summary__delivery-note h2{margin:0;color:var(--danger);font-size:.95rem}.practice-summary__delivery-note ul{margin:var(--space-8) 0 0;padding-inline-start:var(--space-20)}.practice-summary__content>.practice-persistence-warning{justify-content:space-between}@media(hover:hover){.practice-summary__retry:hover,.practice-summary__continue:hover,.practice-summary__progress:hover,.practice-summary__home:hover{border-color:var(--action-primary);background:var(--action-soft);color:var(--action-primary)}.practice-summary__primary:hover{background:var(--action-primary-hover)}}@media(min-width:640px){.practice-summary__content{padding-top:max(var(--space-48),var(--safe-top))}.practice-summary__metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.practice-summary__metrics>div:nth-child(2n){border-right:1px solid var(--border-subtle)}.practice-summary__metrics>div:nth-child(3n){border-right:0}.practice-summary__actions{grid-template-columns:repeat(3,minmax(0,1fr))}.practice-summary__primary{grid-column:1 / -1}}@container (max-width: 320px){.practice-summary__metrics,.practice-summary__actions{grid-template-columns:minmax(0,1fr)}.practice-summary__metrics>div{border-right:0}.practice-summary__actions>button{width:100%}.practice-summary__detail{grid-template-columns:minmax(0,1fr);gap:var(--space-4)}.practice-summary__detail strong{text-align:left}}@media(max-width:320px){.practice-summary__metrics{grid-template-columns:minmax(0,1fr)}.practice-summary__metrics>div{border-right:0}}@media(max-width:430px)and (max-height:760px){.practice-summary__content{gap:var(--space-12);padding-top:max(var(--space-24),var(--safe-top))}.practice-summary__mark{width:var(--control-44);height:var(--control-44)}.practice-summary h1{font-size:1.8rem}.practice-summary__next-step{margin-top:0;padding:var(--space-12)}.practice-summary__metrics{margin-top:0}.practice-summary__metrics>div{min-height:5.25rem;padding:var(--space-12)}}@media(prefers-reduced-motion:reduce){.practice-summary__primary,.practice-summary__retry,.practice-summary__continue,.practice-summary__progress,.practice-summary__home{transition-duration:var(--motion-reduced)}.practice-summary__primary:active,.practice-summary__retry:active,.practice-summary__continue:active,.practice-summary__progress:active,.practice-summary__home:active{transform:none}}
