html{--mat-sys-background: #faf9fd;--mat-sys-error: #ba1a1a;--mat-sys-error-container: #ffdad6;--mat-sys-inverse-on-surface: #f2f0f4;--mat-sys-inverse-primary: #abc7ff;--mat-sys-inverse-surface: #2f3033;--mat-sys-on-background: #1a1b1f;--mat-sys-on-error: #ffffff;--mat-sys-on-error-container: #93000a;--mat-sys-on-primary: #ffffff;--mat-sys-on-primary-container: #00458f;--mat-sys-on-primary-fixed: #001b3f;--mat-sys-on-primary-fixed-variant: #00458f;--mat-sys-on-secondary: #ffffff;--mat-sys-on-secondary-container: #3e4759;--mat-sys-on-secondary-fixed: #131c2b;--mat-sys-on-secondary-fixed-variant: #3e4759;--mat-sys-on-surface: #1a1b1f;--mat-sys-on-surface-variant: #44474e;--mat-sys-on-tertiary: #ffffff;--mat-sys-on-tertiary-container: #0000ef;--mat-sys-on-tertiary-fixed: #00006e;--mat-sys-on-tertiary-fixed-variant: #0000ef;--mat-sys-outline: #74777f;--mat-sys-outline-variant: #c4c6d0;--mat-sys-primary: #005cbb;--mat-sys-primary-container: #d7e3ff;--mat-sys-primary-fixed: #d7e3ff;--mat-sys-primary-fixed-dim: #abc7ff;--mat-sys-scrim: #000000;--mat-sys-secondary: #565e71;--mat-sys-secondary-container: #dae2f9;--mat-sys-secondary-fixed: #dae2f9;--mat-sys-secondary-fixed-dim: #bec6dc;--mat-sys-shadow: #000000;--mat-sys-surface: #faf9fd;--mat-sys-surface-bright: #faf9fd;--mat-sys-surface-container: #efedf0;--mat-sys-surface-container-high: #e9e7eb;--mat-sys-surface-container-highest: #e3e2e6;--mat-sys-surface-container-low: #f4f3f6;--mat-sys-surface-container-lowest: #ffffff;--mat-sys-surface-dim: #dbd9dd;--mat-sys-surface-tint: #005cbb;--mat-sys-surface-variant: #e0e2ec;--mat-sys-tertiary: #343dff;--mat-sys-tertiary-container: #e0e0ff;--mat-sys-tertiary-fixed: #e0e0ff;--mat-sys-tertiary-fixed-dim: #bec2ff;--mat-sys-neutral-variant20: #2d3038;--mat-sys-neutral10: #1a1b1f;--mat-sys-level0: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-sys-level1: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-sys-level2: 0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12);--mat-sys-level3: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mat-sys-level4: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-sys-level5: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mat-sys-body-large: 400 1rem / 1.5rem Roboto;--mat-sys-body-large-font: Roboto;--mat-sys-body-large-line-height: 1.5rem;--mat-sys-body-large-size: 1rem;--mat-sys-body-large-tracking: .031rem;--mat-sys-body-large-weight: 400;--mat-sys-body-medium: 400 .875rem / 1.25rem Roboto;--mat-sys-body-medium-font: Roboto;--mat-sys-body-medium-line-height: 1.25rem;--mat-sys-body-medium-size: .875rem;--mat-sys-body-medium-tracking: .016rem;--mat-sys-body-medium-weight: 400;--mat-sys-body-small: 400 .75rem / 1rem Roboto;--mat-sys-body-small-font: Roboto;--mat-sys-body-small-line-height: 1rem;--mat-sys-body-small-size: .75rem;--mat-sys-body-small-tracking: .025rem;--mat-sys-body-small-weight: 400;--mat-sys-display-large: 400 3.562rem / 4rem Roboto;--mat-sys-display-large-font: Roboto;--mat-sys-display-large-line-height: 4rem;--mat-sys-display-large-size: 3.562rem;--mat-sys-display-large-tracking: -.016rem;--mat-sys-display-large-weight: 400;--mat-sys-display-medium: 400 2.812rem / 3.25rem Roboto;--mat-sys-display-medium-font: Roboto;--mat-sys-display-medium-line-height: 3.25rem;--mat-sys-display-medium-size: 2.812rem;--mat-sys-display-medium-tracking: 0;--mat-sys-display-medium-weight: 400;--mat-sys-display-small: 400 2.25rem / 2.75rem Roboto;--mat-sys-display-small-font: Roboto;--mat-sys-display-small-line-height: 2.75rem;--mat-sys-display-small-size: 2.25rem;--mat-sys-display-small-tracking: 0;--mat-sys-display-small-weight: 400;--mat-sys-headline-large: 400 2rem / 2.5rem Roboto;--mat-sys-headline-large-font: Roboto;--mat-sys-headline-large-line-height: 2.5rem;--mat-sys-headline-large-size: 2rem;--mat-sys-headline-large-tracking: 0;--mat-sys-headline-large-weight: 400;--mat-sys-headline-medium: 400 1.75rem / 2.25rem Roboto;--mat-sys-headline-medium-font: Roboto;--mat-sys-headline-medium-line-height: 2.25rem;--mat-sys-headline-medium-size: 1.75rem;--mat-sys-headline-medium-tracking: 0;--mat-sys-headline-medium-weight: 400;--mat-sys-headline-small: 400 1.5rem / 2rem Roboto;--mat-sys-headline-small-font: Roboto;--mat-sys-headline-small-line-height: 2rem;--mat-sys-headline-small-size: 1.5rem;--mat-sys-headline-small-tracking: 0;--mat-sys-headline-small-weight: 400;--mat-sys-label-large: 500 .875rem / 1.25rem Roboto;--mat-sys-label-large-font: Roboto;--mat-sys-label-large-line-height: 1.25rem;--mat-sys-label-large-size: .875rem;--mat-sys-label-large-tracking: .006rem;--mat-sys-label-large-weight: 500;--mat-sys-label-large-weight-prominent: 700;--mat-sys-label-medium: 500 .75rem / 1rem Roboto;--mat-sys-label-medium-font: Roboto;--mat-sys-label-medium-line-height: 1rem;--mat-sys-label-medium-size: .75rem;--mat-sys-label-medium-tracking: .031rem;--mat-sys-label-medium-weight: 500;--mat-sys-label-medium-weight-prominent: 700;--mat-sys-label-small: 500 .688rem / 1rem Roboto;--mat-sys-label-small-font: Roboto;--mat-sys-label-small-line-height: 1rem;--mat-sys-label-small-size: .688rem;--mat-sys-label-small-tracking: .031rem;--mat-sys-label-small-weight: 500;--mat-sys-title-large: 400 1.375rem / 1.75rem Roboto;--mat-sys-title-large-font: Roboto;--mat-sys-title-large-line-height: 1.75rem;--mat-sys-title-large-size: 1.375rem;--mat-sys-title-large-tracking: 0;--mat-sys-title-large-weight: 400;--mat-sys-title-medium: 500 1rem / 1.5rem Roboto;--mat-sys-title-medium-font: Roboto;--mat-sys-title-medium-line-height: 1.5rem;--mat-sys-title-medium-size: 1rem;--mat-sys-title-medium-tracking: .009rem;--mat-sys-title-medium-weight: 500;--mat-sys-title-small: 500 .875rem / 1.25rem Roboto;--mat-sys-title-small-font: Roboto;--mat-sys-title-small-line-height: 1.25rem;--mat-sys-title-small-size: .875rem;--mat-sys-title-small-tracking: .006rem;--mat-sys-title-small-weight: 500;--mat-sys-corner-extra-large: 28px;--mat-sys-corner-extra-large-top: 28px 28px 0 0;--mat-sys-corner-extra-small: 4px;--mat-sys-corner-extra-small-top: 4px 4px 0 0;--mat-sys-corner-full: 9999px;--mat-sys-corner-large: 16px;--mat-sys-corner-large-end: 0 16px 16px 0;--mat-sys-corner-large-start: 16px 0 0 16px;--mat-sys-corner-large-top: 16px 16px 0 0;--mat-sys-corner-medium: 12px;--mat-sys-corner-none: 0;--mat-sys-corner-small: 8px;--mat-sys-dragged-state-layer-opacity: .16;--mat-sys-focus-state-layer-opacity: .12;--mat-sys-hover-state-layer-opacity: .08;--mat-sys-pressed-state-layer-opacity: .12}:root{color-scheme:light;--app-bg: #f3f6fb;--app-paper: #fbf7ef;--app-paper-strong: #f3eadc;--app-surface: #ffffff;--app-surface-soft: #fffaf2;--app-border: #ded3c2;--app-border-strong: #c8bca9;--app-text: #211d1a;--app-muted: #756b5f;--app-primary: #253b78;--app-primary-strong: #182957;--app-primary-soft: #e9eefb;--app-accent: #0f6f78;--app-sage: #6f8b75;--app-sage-soft: #eef5ee;--app-vermilion: #b84a35;--app-vermilion-soft: #fff0ea;--app-success: #187449;--app-success-soft: #edf8f2;--app-danger: #ba1a1a;--app-danger-soft: #fff1f1;--app-warning: #8a5b00;--app-warning-soft: #fff7e6;--app-radius-sm: 10px;--app-radius: 14px;--app-radius-lg: 18px;--app-shadow-sm: 0 14px 34px rgba(54, 38, 20, .08);--app-shadow-md: 0 22px 54px rgba(54, 38, 20, .14)}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{position:relative;overflow-x:hidden;background:radial-gradient(circle at 12% 4%,rgba(184,74,53,.08),transparent 28%),radial-gradient(circle at 84% 0%,rgba(15,111,120,.1),transparent 24%),linear-gradient(180deg,#fffaf2 0%,var(--app-paper) 46%,#f4efe6 100%);color:var(--app-text);font-family:Inter,Roboto,Helvetica Neue,Arial,sans-serif}body:before{position:fixed;inset:0;z-index:0;pointer-events:none;content:"";background-image:repeating-linear-gradient(90deg,rgba(37,59,120,.025) 0 1px,transparent 1px 7px),repeating-linear-gradient(0deg,rgba(117,107,95,.035) 0 1px,transparent 1px 9px);opacity:.55}app-root{position:relative;z-index:1;display:block}a{color:inherit;text-decoration:none}.page{display:grid;gap:24px}.page-header{position:relative;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding-bottom:6px}.page-header>*{min-width:0}.page-header:before{position:absolute;left:-14px;top:4px;width:4px;height:calc(100% - 10px);min-height:48px;border-radius:999px;background:linear-gradient(180deg,var(--app-primary),var(--app-vermilion));content:""}.page-title{margin:0;color:var(--app-text);font-size:30px;font-weight:700;line-height:1.12}.page-subtitle{margin:6px 0 0;max-width:720px;color:var(--app-muted);line-height:1.45}.toolbar-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px}.icon-label{display:inline-flex;align-items:center;gap:8px}.muted{color:var(--app-muted)}.error-box{border:1px solid #f0b8b8;border-radius:var(--app-radius);background:var(--app-danger-soft);color:var(--app-danger);padding:14px 16px;box-shadow:0 8px 22px #ba1a1a0f}.empty-state{border:1px dashed var(--app-border-strong);border-radius:var(--app-radius-lg);background:#ffffffd6;color:var(--app-muted);padding:28px;text-align:center;box-shadow:var(--app-shadow-sm)}.session-size-panel{display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between;margin-top:18px;border:1px solid var(--app-border);border-radius:var(--app-radius-lg);background:#fffaf2b8;padding:14px 16px}.session-size-panel h2{margin:0 0 4px;color:var(--app-primary-strong);font-size:17px}.quick-size-row{display:flex;flex-wrap:wrap;gap:8px}.quick-size-button{min-width:54px;border:1px solid var(--app-border);border-radius:999px;background:var(--app-surface);color:var(--app-primary-strong);font:inherit;font-weight:760;padding:8px 14px;cursor:pointer}.quick-size-button:hover,.quick-size-button.active{border-color:#9aabe1;background:var(--app-primary-soft)}.failed-list{display:grid;gap:12px;margin-top:18px;border:1px solid var(--app-border);border-radius:var(--app-radius-lg);background:var(--app-surface);padding:18px}.failed-list h3{margin:0}.failed-list div{display:flex;justify-content:space-between;gap:12px;border-top:1px solid #e4ebf5;padding-top:10px}.failed-list small{color:var(--app-muted)}.loading-row{display:flex;align-items:center;justify-content:center;min-height:180px}.table-wrap{overflow:auto;border:1px solid var(--app-border);border-radius:var(--app-radius-lg);background:linear-gradient(135deg,rgba(37,59,120,.025),transparent 42%),#fffdf8eb;box-shadow:var(--app-shadow-sm)}.full-width{width:100%}button svg,a svg{flex:0 0 auto}.jp{font-family:Yu Gothic,Hiragino Sans,Meiryo,sans-serif}.jlpt-badge{display:inline-flex;min-width:44px;min-height:28px;align-items:center;justify-content:center;border:1px solid #cfdaf0;border-radius:999px;background:var(--app-primary-soft);color:var(--app-primary-strong);font-size:13px;font-weight:700;padding:4px 10px}.jlpt-n5{border-color:#b8d6b8;background:#edf7ed;color:#24683b}.jlpt-n4{border-color:#9bd4d2;background:#e8f7f6;color:#075f66}.jlpt-n3{border-color:#acc2ef;background:#edf3ff;color:#244c95}.jlpt-n2{border-color:#c7b8ed;background:#f2edff;color:#533c90}.jlpt-n1{border-color:#e2aaa1;background:var(--app-vermilion-soft);color:#853322}.jlpt-unknown{border-color:#d9d0c4;background:#f6f1e8;color:#756b5f}.word-type-chip.mat-mdc-chip{border-color:#d8cdbb!important;background:#faf3e6!important;color:#5b4934!important}.word-type-nom.mat-mdc-chip,.word-type-nom-suru.mat-mdc-chip{border-color:#b7d0be!important;background:var(--app-sage-soft)!important;color:#315b3b!important}.word-type-verbe.mat-mdc-chip{border-color:#9dcfd2!important;background:#e8f6f6!important;color:#075f66!important}.word-type-adjectif.mat-mdc-chip{border-color:#d0b8e7!important;background:#f5effb!important;color:#674386!important}.word-type-expression.mat-mdc-chip{border-color:#e0b5a6!important;background:#fff1ea!important;color:#8a3a25!important}.word-type-grammar.mat-mdc-chip{border-color:#b8c8e8!important;background:#eef3ff!important;color:#243f7c!important}.tag-chip.mat-mdc-chip{border-color:#ddd3c6!important;background:#fff9ef!important;color:#695646!important}.action-button.mat-mdc-icon-button{border:1px solid transparent;border-radius:12px!important;transition:border-color .14s ease,background-color .14s ease,color .14s ease,transform .14s ease}.action-button.mat-mdc-icon-button:hover{transform:translateY(-1px)}.action-view.mat-mdc-icon-button{color:#0f6f78!important}.action-view.mat-mdc-icon-button:hover{border-color:#9bd4d2;background:#e8f7f6!important}.action-edit.mat-mdc-icon-button{color:var(--app-primary-strong)!important}.action-edit.mat-mdc-icon-button:hover{border-color:#b8c8e8;background:var(--app-primary-soft)!important}.action-delete.mat-mdc-icon-button{color:var(--app-vermilion)!important}.action-delete.mat-mdc-icon-button:hover{border-color:#e2aaa1;background:var(--app-vermilion-soft)!important}.mat-mdc-card{border:1px solid var(--app-border)!important;border-radius:var(--app-radius-lg)!important;background:linear-gradient(180deg,#fffdf8,#fffaf2)!important;box-shadow:var(--app-shadow-sm)!important}.mat-mdc-card-content{padding:22px!important}.mat-mdc-card-title{color:var(--app-text);font-weight:700!important}.mat-mdc-card-subtitle{color:var(--app-muted)!important}.mat-mdc-button-base{border-radius:var(--app-radius-sm)!important;font-weight:650!important}.mat-mdc-unelevated-button:not(:disabled){background:linear-gradient(135deg,var(--app-primary),#315194)!important;color:#fff!important;box-shadow:0 10px 22px #253b783d}.mat-mdc-outlined-button:not(:disabled){border-color:var(--app-border-strong)!important;background:#fffaf2c2;color:var(--app-primary-strong)!important}.mat-mdc-button:not(:disabled){color:var(--app-primary-strong)!important}.mat-mdc-icon-button{color:#5d6680!important}.mat-mdc-icon-button:hover{background:var(--app-primary-soft)!important;color:var(--app-primary-strong)!important}.mat-mdc-form-field{--mdc-outlined-text-field-container-shape: var(--app-radius);--mdc-outlined-text-field-outline-color: var(--app-border-strong);--mdc-outlined-text-field-hover-outline-color: #8fa3cf;--mdc-outlined-text-field-focus-outline-color: var(--app-primary)}.mat-mdc-select-panel,.mat-mdc-autocomplete-panel{border-radius:var(--app-radius)!important}.mat-mdc-chip{min-height:28px!important;border:1px solid #d9d0c4!important;border-radius:999px!important;background:#f7f1e8!important;color:#4c4034!important;font-weight:600!important}table.mat-mdc-table{background:transparent}.mat-mdc-header-row{background:#f8f1e7}.mat-mdc-header-cell{color:#6b5c4d;font-weight:700}.mat-mdc-row{transition:background-color .14s ease}.mat-mdc-row:hover{background:#fffaf2}.mat-mdc-cell,.mat-mdc-header-cell{border-bottom-color:#ece2d3!important}.mat-mdc-dialog-surface{border-radius:20px!important;background:#fffdf8!important;box-shadow:var(--app-shadow-md)!important;overflow:hidden!important}.mat-mdc-dialog-title{color:var(--app-text);font-weight:750!important}.quiz-page .question-stage{position:relative;overflow:hidden;border:1px solid #d6c9b6;border-radius:24px;background:radial-gradient(circle at 88% 18%,rgba(184,74,53,.1),transparent 26%),linear-gradient(135deg,#fffaf2,#f4eadb);padding:24px}.quiz-page .question-stage:before{position:absolute;left:20px;top:18px;width:42px;height:4px;border-radius:999px;background:var(--app-vermilion);content:""}.quiz-page .question-stage .question-heading{padding-left:54px}.quiz-page .question-stage .question-text{margin:24px 0 4px;color:var(--app-primary-strong);font-size:clamp(48px,9vw,86px)}.quiz-page .mode-card{width:100%;border:1px solid var(--app-border);border-radius:var(--app-radius);background:#fffaf2db;color:inherit;font:inherit;text-align:left;padding:12px;cursor:pointer;transition:border-color .14s ease,background-color .14s ease,box-shadow .14s ease}.quiz-page .mode-card:hover{border-color:#9aabe1;background:#fffaf2;box-shadow:0 8px 20px #3f51b514}.quiz-page .mode-card.active{border-color:#9aabe1;background:var(--app-primary-soft);box-shadow:0 8px 20px #3f51b51a}.quiz-page .mode-card strong,.quiz-page .mode-card span{display:block}.quiz-page .mode-card span{margin-top:4px;color:var(--app-muted);font-size:13px}.quiz-page .choice-list{display:grid;gap:12px;margin-top:28px;margin-bottom:18px}.quiz-page .choice-list mat-radio-button{display:flex;width:100%;min-height:64px;align-items:center;border:1px solid var(--app-border);border-radius:var(--app-radius);background:var(--app-surface);padding:12px 16px;cursor:pointer;font-size:17px;-webkit-user-select:none;user-select:none;transition:border-color .14s ease,background-color .14s ease,box-shadow .14s ease}.quiz-page .choice-list mat-radio-button:not(.mat-mdc-radio-disabled):hover{border-color:#9aabe1;background:var(--app-primary-soft);box-shadow:0 8px 20px #3f51b514}.quiz-page .choice-list mat-radio-button.mat-mdc-radio-disabled{cursor:default}.quiz-page .result-panel>p:last-child{display:inline-flex;width:fit-content;align-items:center;border:1px solid #c8d7c8;border-radius:999px;background:var(--app-sage-soft);color:#315b3b;font-weight:700;padding:8px 12px}@media(max-width:560px){.quiz-page .choice-list mat-radio-button{min-height:58px}}@media(max-width:640px){.quiz-page,.kanji-quiz-page{max-width:100%}.quiz-page .question-stage,.kanji-quiz-page .question-stage{border-radius:18px;padding:18px}.quiz-page .question-stage .question-heading{padding-left:0}.quiz-page .question-stage:before{display:none}.quiz-page .question-stage .question-text{font-size:clamp(42px,16vw,68px)}.kanji-quiz-page .kanji-question{font-size:clamp(86px,34vw,128px)}.quiz-page .choice-list{margin-top:22px}.quiz-page .choice-list mat-radio-button{min-height:64px;padding:12px 14px;font-size:16px}.quiz-page .quiz-actions,.kanji-quiz-page .quiz-actions{bottom:calc(10px + env(safe-area-inset-bottom));margin:14px 0;padding:10px}.quiz-page .quiz-actions button,.kanji-quiz-page .quiz-actions button{min-height:48px}}@media(max-width:720px){.page-header{align-items:stretch;flex-direction:column}.toolbar-actions{justify-content:flex-start}.page-title{font-size:25px}}@media(max-width:640px){.page{gap:18px}.page-subtitle{font-size:14px}.toolbar-actions{width:100%}.toolbar-actions>button,.toolbar-actions>a,.empty-actions>button,.empty-actions>a{flex:1 1 100%;min-height:46px;justify-content:center}.mat-mdc-card-content{padding:16px!important}.empty-state{padding:20px 16px}.session-size-panel{align-items:stretch;flex-direction:column;padding:14px}.quick-size-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}.quick-size-button{min-width:0;min-height:44px}.failed-list div{align-items:flex-start;flex-direction:column}.table-wrap{border-radius:var(--app-radius)}}@media(display-mode:standalone){body{background-attachment:fixed}}
