.word-lens{display:inline-block;position:relative}.word-lens .word{margin-bottom:3px}.word-lens-panel{z-index:2;border:1px solid var(--line);background:var(--surface);width:min(360px,100vw - 48px);box-shadow:var(--shadow-pop);opacity:0;pointer-events:none;border-radius:7px;flex-direction:column;align-items:flex-start;gap:12px;padding:13px 16px;transition:opacity .14s,transform .14s;display:flex;position:absolute;top:calc(100% - 3px);left:50%;transform:translate(-50%,-4px)}.word-lens:hover .word-lens-panel,.word-lens:focus-within .word-lens-panel{opacity:1;pointer-events:auto;transform:translate(-50%)}.word-lookup{color:var(--green);white-space:nowrap;font-size:13px}.dictionary-credit{color:var(--muted);font-size:10px}.dictionary-preview{width:100%;font-size:13px;line-height:1.55}.dictionary-entry+.dictionary-entry{border-top:1px solid var(--line);margin-top:10px;padding-top:10px}.dictionary-entry strong{color:var(--ink);font-size:16px;font-weight:500;display:block}.dictionary-entry span{color:var(--muted);font-size:12px;display:block}.dictionary-entry p{margin:3px 0 0}.kanji-links{gap:7px;display:flex}.kanji-chip{border:1px solid var(--line);width:38px;height:38px;color:var(--green);background:var(--field);border-radius:6px;justify-content:center;align-items:center;font-family:Hiragino Mincho ProN,Yu Mincho,serif;font-size:21px;text-decoration:none;display:inline-flex;position:relative}.kanji-chip:hover,.kanji-chip:focus{background:#eef2e8}.kanji-tooltip{z-index:3;color:#fff;white-space:normal;background:var(--ink);opacity:0;pointer-events:none;border-radius:4px;width:250px;padding:9px 10px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:11px;line-height:1.45;transition:opacity .12s,transform .12s;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%,3px)}.kanji-chip:hover .kanji-tooltip,.kanji-chip:focus .kanji-tooltip{opacity:1;transform:translate(-50%)}.kanji-entry{display:block}.kanji-entry+.kanji-entry{border-top:1px solid #ffffff3a;margin-top:7px;padding-top:7px}.kanji-entry strong,.kanji-entry span{display:block}.kanji-entry strong{font-family:Hiragino Mincho ProN,Yu Mincho,serif;font-size:15px;font-weight:500}@media (max-width:700px){.word-lens-panel{min-width:0;left:0;transform:translateY(-4px)}.word-lens:hover .word-lens-panel,.word-lens:focus-within .word-lens-panel{transform:translate(0)}}.vocab-mark{cursor:help;border-bottom:1px dotted #9ba88d}.vocab-mark:hover,.vocab-mark:focus{background:var(--light);outline:none}.vocab-tip{z-index:10;border:1px solid var(--line);background:var(--surface);width:320px;box-shadow:var(--shadow-pop);color:var(--ink);text-align:left;pointer-events:none;border-radius:7px;padding:12px 15px;font:13px/1.55 -apple-system,BlinkMacSystemFont,sans-serif;position:fixed}.vocab-tip>strong{margin-right:8px;font-size:18px;font-weight:500}.vocab-tip>span{color:var(--muted)}.vocab-tip>p{margin:4px 0 0}.vocab-tip-dictionary{border-top:1px solid var(--line);margin-top:9px;padding-top:8px}.vocab-tip-dictionary small{color:var(--muted);letter-spacing:1.2px;font-size:9px}.vocab-tip-dictionary p{margin:3px 0 0}.vocab-tip-dictionary span{color:var(--muted)}.word-picker{color:var(--muted);align-items:center;gap:16px;margin:-20px 0 20px;font-size:13px;display:flex}.word-picker .secondary{padding:8px 13px}.word-lookup-plain{margin-top:4px;display:inline-block}.speak-button{vertical-align:middle;color:var(--muted);background:0 0;border:0;margin-left:10px;padding:6px;font-size:.4em;line-height:0}.speak-button:hover:not(:disabled){color:var(--green)}.word-picker .speak-button{margin:0;font-size:18px}
.delete-lesson{color:var(--error-ink);margin-top:20px}.phrase-submit{gap:12px;display:flex}.error.floating{z-index:20;width:min(600px,100vw - 32px);margin:0;position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #283c3426}.feedback.understood,.read-aloud-result.matched{animation:.5s cubic-bezier(.3,1.6,.5,1) celebrate-pop}@keyframes celebrate-pop{0%{transform:scale(.94)}60%{transform:scale(1.03)}to{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.feedback.understood,.read-aloud-result.matched{animation:none}}.skip-known{color:var(--muted);cursor:pointer;justify-content:flex-end;align-items:center;gap:6px;margin-top:10px;font-size:12px;display:flex}.skip-known input{accent-color:var(--green);margin:0}.lesson-level{color:var(--muted);margin:-8px 0 18px;font-size:13px;line-height:1.6}.lesson-level b{color:var(--green);margin-right:4px}.lesson-level span{display:block}.follow-up{border-top:1px solid #00000012;margin-top:14px;padding-top:12px}.follow-up-question{font-weight:500}.follow-up-question:before{content:"You: ";color:var(--muted);font-weight:400}.follow-up-form{gap:10px;margin-top:14px;display:flex}.follow-up-form input{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:6px;flex:1;padding:9px 12px}.follow-up p:last-child{white-space:pre-line}.follow-up-model{color:var(--muted);margin-top:6px;font-size:11px;display:block}.translate-note{color:var(--green)}.assign-to{border:1px solid var(--line);border-radius:6px;flex-wrap:wrap;align-items:center;gap:8px 16px;margin:0 0 14px;padding:10px 14px;font-size:13px;display:flex}.assign-to legend{color:var(--muted);padding:0 4px;font-size:11px}.assign-to label{align-items:center;gap:5px;display:flex}.assign-folder input{font:inherit;border:1px solid var(--line);background:var(--field);color:var(--ink);border-radius:5px;width:160px;padding:5px 8px}.assign-note{color:var(--green)}.tutoring{padding-top:40px}.tutoring h1{margin:0 0 12px;font-size:40px}.tutoring h2{margin:32px 0 10px}.tutoring-list{margin:0;padding:0;list-style:none}.tutoring-list li{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:10px 0;font-size:14px;display:flex}.tutoring-ask{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.tutoring-ask label{color:var(--muted);flex-direction:column;gap:6px;font-size:12px;display:flex}.tutoring-ask input,.tutoring-ask select{font:inherit;border:1px solid var(--line);background:var(--field);color:var(--ink);border-radius:6px;padding:9px 11px;font-size:14px}.tutoring-requests{flex-direction:column;gap:10px;margin-top:20px;display:flex}.tutoring-request{background:#eef0e2;border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;font-size:14px;line-height:1.6;display:flex}.tutoring-request>span:last-child{gap:10px;display:flex}.move-on-confirm{background:var(--warn-bg);color:var(--warn-ink);border-radius:6px;margin:8px 0 0;padding:10px 14px;font-size:13px}.tab-progress.finished .tab-bar{animation:1.2s ease-out tab-bar-glow}.tab-progress.finished .tab-percent{color:var(--green);font-weight:700;animation:.6s cubic-bezier(.3,1.8,.5,1) tab-percent-pop;display:inline-block}.tabs button:has(.tab-progress.finished){animation:1.2s ease-out tab-pulse}@keyframes tab-percent-pop{0%{transform:scale(.6)}50%{transform:scale(1.7)}to{transform:scale(1)}}@keyframes tab-bar-glow{0%,to{box-shadow:none}30%{box-shadow:0 0 0 3px var(--light), 0 0 10px var(--kanji-seen)}}@keyframes tab-pulse{0%{box-shadow:0 0 0 0 var(--kanji-seen)}to{box-shadow:0 0 0 12px #0000}}@media (prefers-reduced-motion:reduce){.tab-progress.finished .tab-bar,.tab-progress.finished .tab-percent{animation:none}.tabs button:has(.tab-progress.finished){animation:none}}.tab-check{color:var(--green);font-weight:700}.tabs button:has(.tab-progress.finished) .tab-check{animation:.6s cubic-bezier(.3,1.8,.5,1) tab-percent-pop;display:inline-block}.romaji{color:var(--muted);letter-spacing:.3px;font-size:13px;font-style:italic;display:block}.starter-panel{margin-bottom:24px}.starter-bands{flex-wrap:wrap;gap:10px;margin-top:14px;display:flex}.starter-bands button{text-align:left;gap:4px;min-width:180px;display:grid}.starter-bands small{color:var(--muted);font-size:11px}.starter-panel.compact{margin:28px 0}.starter-panel.compact h2{margin:0}.report-open{padding:0}.report{text-align:left;background:var(--field);border:1px solid var(--line);border-radius:8px;gap:10px;margin:14px 0;padding:16px 18px;font-size:14px;display:grid}.report fieldset{border:0;gap:6px;margin:0;padding:0;display:grid}.report legend{margin-bottom:6px;font-weight:500}.report textarea{min-height:70px;margin:0;padding:12px}.report p{margin:0;line-height:1.6}.report .actions{justify-content:flex-end;margin-top:0}.move-on-confirm{animation:.7s ease-in-out 2 move-on-pulse}@keyframes move-on-pulse{0%,to{box-shadow:0 0 #0000}50%{background:#f2dcb5;box-shadow:0 0 0 3px #d9a44a}}@media (prefers-reduced-motion:reduce){.move-on-confirm{animation:none;box-shadow:0 0 0 2px #d9a44a}}.reading-help .report-open{color:var(--muted);padding:6px 0 0;font-size:12px;display:block}.report{position:relative}.report:has(.report-close){padding-right:40px}.report-close{color:var(--muted);padding:2px 6px;font-size:20px;line-height:1;position:absolute;top:6px;right:10px}
.read-aloud{border:1px solid var(--line);background:#f7f8f2;border-radius:8px;margin:30px 0;padding:22px}.read-aloud h2{margin:0;font-size:18px;font-weight:500}.read-aloud>p{color:var(--muted);line-height:1.7}.recording-status{color:var(--orange)!important}.read-aloud-result{border-top:1px solid var(--line);margin-top:20px;padding-top:18px;line-height:1.65}.read-aloud-result h3{margin:0 0 10px;font-size:14px;font-weight:500}.read-aloud-result .japanese{font-size:18px}.read-aloud-result ul{margin:10px 0;padding-left:20px}.translated-from{white-space:pre-wrap;color:var(--muted);line-height:1.8}.record-countdown{z-index:30;background:var(--ink);color:#fff;border-radius:999px;padding:10px 22px;font-size:16px;position:fixed;top:18px;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #283c3430}.record-countdown.go{background:var(--green);font-weight:600}.read-done{color:var(--muted)}.continue-mark{color:var(--orange);vertical-align:middle;margin:0 .2em;font-size:.6em}.read-from-start{margin-left:16px}.reading-now{background:var(--light);color:inherit;box-shadow:0 0 0 3px var(--light);border-radius:4px;transition:background .3s}.read-aloud-result.checking{color:var(--muted);align-items:center;gap:12px;display:flex}.spinner{border:2px solid var(--line);border-top-color:var(--green);border-radius:50%;flex-shrink:0;width:20px;height:20px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2.4s}}.reading-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.listen{align-items:center;gap:12px;display:flex}.listen .secondary{padding:8px 14px}.heard-match{background:#e3eedb;border-radius:3px}.heard-different{background:var(--warn-bg);color:var(--warn-ink);border-radius:3px;box-shadow:0 0 0 1px #e8cfa3}.heard-missing{color:#c48a2c;cursor:help;padding:0 1px;font-weight:600}.heard-legend{margin-top:-6px}.heard-legend span{padding:0 3px}.read-finish{flex-wrap:wrap;align-items:flex-start;gap:12px;margin-top:30px;display:flex}.read-finish>.secondary,.read-finish>.primary{margin-top:0}.coaching{border-radius:8px;flex-basis:100%;gap:8px;padding:16px 18px;line-height:1.6;display:grid}.coaching.good{background:#e3eedb}.coaching.needs_work{background:var(--warn-bg)}.coaching p,.coaching ul{margin:0}.coaching ul{padding-left:20px}.coaching audio{width:100%}
.shelf-list{flex:1;min-height:0;overflow-y:auto}.shelf.current{background:var(--light)}.folder{border-top:0;margin:0;padding-top:0}.folder>summary{border-bottom:1px solid var(--line);color:var(--ink);cursor:pointer;justify-content:space-between;padding:14px 10px;font-size:14px;display:flex}.folder>summary span{color:var(--muted);font-size:11px}.folder>summary:before{content:"▸";color:var(--muted);margin-right:8px}.folder[open]>summary:before{content:"▾"}.folder>summary::-webkit-details-marker{display:none}.folder>summary>span{margin-left:auto}.folder .shelf{padding-left:26px}.lesson-tools{flex-wrap:wrap;align-items:center;gap:24px;margin-top:20px;display:flex}.lesson-tools .delete-lesson{margin-top:0}.folder-picker{color:var(--muted);font-size:13px}.folder-picker select{font:inherit;color:var(--ink);border:1px solid var(--line);background:0 0;border-radius:6px;margin-left:8px;padding:6px 8px}.shelf-controls{color:var(--muted);gap:10px;margin:-8px 9px 10px;font-size:11px;display:grid}.shelf-controls label{grid-template-columns:34px minmax(0,1fr);align-items:center;gap:6px;display:grid}.shelf-filter-toggle{color:var(--muted);background:0 0;border:0;padding:4px 8px;font-size:15px}@media (max-width:700px){.sidebar-label.shelf-label{margin:18px 9px;display:flex}}.shelf-controls select{width:100%;min-width:0;font:inherit;color:var(--ink);border:1px solid var(--line);background:0 0;border-radius:5px;padding:3px 4px}.shelf-level{border:1px solid var(--line);color:var(--green);border-radius:4px;margin-right:7px;padding:0 5px;font-size:10px;display:inline-block}.mini-map-icon{vertical-align:-4px;margin-right:9px}.mini-map-icon .known{fill:var(--kanji-known)}.mini-map-icon .seen{fill:var(--kanji-seen)}.mini-map-icon .unseen{fill:#dcdbd0}.lesson-tools .report{flex-basis:100%;order:9}.shelf-filtered{letter-spacing:1px;color:var(--green);font-size:10px}.folder-delete{color:var(--muted);margin:6px 10px 10px;padding:4px 0;font-size:11px;display:block}.folder-delete:hover:not(:disabled){color:var(--error-ink)}
.today{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-top:24px;display:grid}.today-item{border:1px solid var(--line);background:var(--surface);border-radius:12px;flex-direction:column;align-items:flex-start;gap:8px;padding:20px 22px;display:flex}.today-item small{letter-spacing:1.3px;color:var(--muted);font-size:9px}.today-item strong{font-family:Georgia,serif;font-size:20px;font-weight:400}.today-item span{color:var(--muted);font-size:12px;line-height:1.6}.today-item button{margin-top:6px}.review{text-align:center}.review-stage{color:var(--muted);letter-spacing:.5px;margin:22px 0 0;font-size:11px}.review .word{margin:18px 0 6px;font-size:56px}.review-sentence{color:var(--muted);margin:6px 0 2px;font-size:17px;line-height:1.8}.review-source{margin:0 auto;display:block}.review-sentence mark{color:var(--ink);background:#eef0e2;border-radius:3px;padding:0 2px}.typed-answer{flex-wrap:wrap;justify-content:center;align-items:flex-end;gap:12px;margin:22px 0;display:flex}.typed-answer label{color:var(--muted);text-align:left;flex-direction:column;gap:6px;font-size:12px;display:flex}.typed-answer input{font:inherit;border:1px solid var(--line);background:var(--field);color:var(--ink);border-radius:6px;min-width:200px;padding:10px 12px;font-size:16px}.review h3{margin:30px 0 10px;font-weight:500}@media (max-width:700px){.review .word{font-size:44px}.typed-answer input{width:100%;min-width:0}.typed-answer label{width:100%}}.answer-correct{animation:.45s ease-out answer-correct}.review .answer-unmatched{background:var(--warn-bg);color:var(--warn-ink)}.submitted-answer{white-space:pre-wrap;overflow-wrap:anywhere}@keyframes answer-correct{0%,to{background:var(--light)}45%{box-shadow:0 0 0 2px var(--green);background:#c5e5c8}}@media (prefers-reduced-motion:reduce){.answer-correct{background:#c5e5c8;animation:none}}
.kanji-map{--kanji-unseen:#f1f0e9;--kanji-burned:#1c3529;--kanji-learning:#93b58a;padding:40px 0 60px}.kanji-map h1{margin:0 0 12px;font-size:42px}.kanji-map-summary{color:var(--muted);margin:0 0 18px}.kanji-map-summary b{color:var(--ink)}.kanji-legend{color:var(--muted);flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:18px;font-size:12px;display:flex}.kanji-legend>span{align-items:center;gap:6px;display:inline-flex}.kanji-legend-note{margin-left:auto}.kanji-swatch{border-radius:3px;width:12px;height:12px;display:inline-block}.kanji-table{border-collapse:collapse;width:100%;margin-bottom:26px;font-size:13px}.kanji-table th,.kanji-table td{text-align:left;border-bottom:1px solid var(--line);padding:8px 10px 8px 0;font-weight:400}.kanji-table thead th{color:var(--muted);letter-spacing:.5px;font-size:11px}.kanji-table tbody th{color:var(--green);width:48px;font-weight:600}.kanji-table td:nth-child(2){width:50%}.kanji-table td:nth-child(n+3){font-variant-numeric:tabular-nums;white-space:nowrap;width:70px}.kanji-table small{color:var(--muted)}.kanji-bar{border-radius:4px;gap:2px;height:10px;display:flex;overflow:hidden}.kanji-bar>span{flex-basis:0;min-width:2px}.kanji-swatch.burned,.kanji-bar .burned{background:var(--kanji-burned)}.kanji-swatch.known,.kanji-bar .known{background:var(--kanji-known)}.kanji-swatch.learning,.kanji-bar .learning{background:var(--kanji-learning)}.kanji-swatch.seen,.kanji-bar .seen{background:var(--kanji-seen)}.kanji-swatch.unseen,.kanji-bar .unseen{background:var(--kanji-unseen);box-shadow:inset 0 0 0 1px var(--line)}.kanji-level{border-top:1px solid var(--line);margin:0;padding:14px 0}.kanji-level>summary{color:var(--muted);font-size:13px}.kanji-level>summary b{color:var(--ink);margin-right:6px}.kanji-grid{grid-template-columns:repeat(auto-fill,minmax(26px,1fr));gap:2px;margin-top:12px;display:grid}.kanji-cell{aspect-ratio:1;border-radius:4px;justify-content:center;align-items:center;font:15px Hiragino Mincho ProN,Yu Mincho,serif;text-decoration:none;display:flex}.kanji-cell.burned{background:var(--kanji-burned);color:#fff}.kanji-cell.known{background:var(--kanji-known);color:#fff}.kanji-cell.learning{background:var(--kanji-learning);color:var(--ink)}.kanji-cell.seen{background:var(--kanji-seen);color:var(--ink)}.kanji-cell.unseen{background:var(--kanji-unseen);color:var(--muted)}.kanji-cell:hover,.kanji-cell:focus-visible{outline:2px solid var(--ink);outline-offset:1px}.kanji-tip{z-index:10;border:1px solid var(--line);background:var(--surface);width:280px;box-shadow:var(--shadow-pop);color:var(--ink);pointer-events:none;border-radius:7px;padding:10px 13px;font-size:13px;line-height:1.5;position:fixed}.kanji-tip strong{margin-right:4px;font-size:20px;font-weight:500}.kanji-tip p{color:var(--muted);margin:4px 0 0}@media (max-width:700px){.kanji-legend-note{margin-left:0}.kanji-table td:nth-child(2){width:35%}}.practice-bar{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px 16px;margin-bottom:16px;font-size:12px;display:flex}.practice-bar input{width:240px;font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:6px;margin-left:6px;padding:6px 9px}.kanji-map .error{margin:0 0 16px}.practice-button{white-space:nowrap;padding:6px 10px;font-size:12px}.level-done{color:var(--green);font-size:12px}.kanji-table td:last-child{text-align:right;width:1%;padding-right:0}.kanji-map-credit{color:var(--muted);margin:28px 0 10px;font-size:11px;line-height:1.6}.practice-bar .sentence-count{vertical-align:middle;background:0 0;border:0;width:120px;padding:0}.example-words{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px;margin:12px 0;padding:0;list-style:none;display:grid}.example-words li{border-left:4px solid var(--line);background:var(--surface);border-radius:6px;gap:2px;padding:8px 10px;display:grid}.example-words li.seen{border-left-color:var(--kanji-seen)}.example-words li.learning{border-left-color:var(--kanji-learning)}.example-words a{color:var(--ink);font-size:16px;text-decoration:none}.example-words small{color:var(--muted);font-size:11px;line-height:1.4}.map-views{border:1px solid var(--line);border-radius:7px;margin:28px 0 0;display:inline-flex;overflow:hidden}.map-views button{color:var(--muted);background:0 0;border:0;padding:8px 14px;font-size:13px}.map-views button.selected{background:var(--light);color:var(--green);font-weight:500}
.reading-sources{border-bottom:1px solid var(--line);margin:0 0 24px;padding:14px 0}.reading-sources>summary{font-size:15px}.sources-beta{background:var(--light);color:var(--muted);border-radius:8px;margin-left:6px;padding:1px 7px;font-size:11px;display:inline-block}.source-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:16px 0;display:grid}.source-card{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:18px;font-size:14px;line-height:1.6}.source-card h3{margin:0;font-size:17px}.source-card .caption{margin:6px 0}.source-domain{color:var(--muted);overflow-wrap:anywhere;margin-top:6px;display:block}@media (max-width:600px){.source-cards{grid-template-columns:1fr}}
