@font-face{font-family:JP;src:url(assets/KanjiDaily.woff) format('woff');font-display:swap}
:root{--forest:#254e3c;--paper:#fffef8;--ink:#233f34;--muted:#7c8b71;--line:#d9e1d0;--blue:#376c7e;--amber:#b17b36;--nav:72px}.daily-app{font:14px/1.6 Arial,JP,sans-serif;background:#f5f4ed;color:var(--ink);-webkit-tap-highlight-color:transparent}.daily-app button,.daily-app .button,.daily-app select{min-height:44px}.daily-app button:disabled{opacity:.4}.daily-app main{max-width:920px;padding:19px 18px calc(var(--nav) + env(safe-area-inset-bottom) + 28px);outline:none}.daily-app header{border:0}.app-header{display:flex;justify-content:space-between;align-items:center;max-width:920px;padding:18px 19px 10px;margin:0 auto;gap:10px}.app-brand{display:flex;align-items:center;gap:10px;text-decoration:none;font:17px/1.2 Georgia,serif}.app-brand img{border-radius:8px;width:32px;height:32px}.app-brand small{font:10px/1.5 Arial;color:#8b967d;display:block;margin-top:4px}.connection{border:0!important;background:transparent!important;color:#8b967d;padding:6px 0!important;min-height:36px!important;font-size:10px!important;white-space:nowrap}.connection:before{content:'';display:inline-block;width:5px;height:5px;border-radius:50%;background:#8eaa78;margin-right:6px}.connection.offline:before{background:#c29c55}.app-pane[hidden]{display:none!important}.pane-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:5px 0 18px}.pane-heading h1{font:34px/1.15 Georgia,serif;font-weight:400;margin:0}.pane-heading p{font-size:11px;color:var(--muted);margin:6px 0 0}.streak-pill{font-size:10px;color:#9b793f;border:1px solid #ddcfb2;border-radius:18px;padding:6px 10px;white-space:nowrap}.today-grid{display:grid;gap:14px}.daily-panel{border:1px solid var(--line);border-radius:13px;background:var(--paper);padding:20px}.panel-kicker{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:#7d8e70;display:flex;justify-content:space-between;gap:10px}.daily-panel h2{font:29px/1.18 Georgia,serif;font-weight:400;margin:9px 0}.daily-panel p{font-size:12px;line-height:1.7;color:#748269;margin:8px 0 14px}.learn-panel{background:#eaf0e1;border-color:#cbd9bb;position:relative;overflow:hidden}.learn-panel .primary{margin-top:12px}.preview-glyphs{display:flex;gap:7px;margin:17px 0 7px}.preview-glyph{width:47px;height:54px;background:#fffef9b8;border:1px solid #d0dcc3;border-radius:6px;padding:5px 7px;display:flex;align-items:center;justify-content:center}.preview-glyph .glyph{width:38px;height:38px;stroke:#527348}.review-panel{background:#edf3f5;border-color:#cedfe3}.review-panel .panel-kicker{color:#73929c}.review-panel h2{color:#3c6877}.daily-panel .primary{width:100%}.primary{background:var(--forest)!important;color:#fffef7!important;border:1px solid var(--forest)!important;border-radius:7px;padding:12px 16px;min-height:48px;font-size:13px;font-weight:500;display:flex;align-items:center;justify-content:space-between;gap:12px;text-decoration:none}.primary.blue{background:#3d7181!important;border-color:#3d7181!important}.secondary{background:#fffef9;border:1px solid #ccd7c0;border-radius:7px;min-height:44px;padding:10px 14px;font-size:12px}.wide{width:100%;display:block;text-align:center}.button-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.button-row>*{flex:1;white-space:nowrap}.text-button{border:0;background:transparent;font-size:11px;color:#73866b;padding:6px 0;text-decoration:underline;text-underline-offset:4px;min-height:36px!important}.session-banner{background:#f7f1e3;border:1px solid #dfd1ad;border-radius:9px;padding:12px 15px;display:flex;gap:12px;align-items:center;justify-content:space-between;margin-bottom:14px}.session-banner b{display:block;font-size:12px;font-weight:500}.session-banner small{font-size:10px;color:#9b885f}.session-banner button{min-height:36px;font-size:11px;padding:6px 11px}.course-progress{margin-top:20px}.course-progress h3,.small-heading{font:17px Georgia,serif;font-weight:400;margin:0 0 9px}.progress-line{height:5px;border-radius:9px;background:#e0e7d6;overflow:hidden}.progress-line>span{display:block;height:100%;background:#648454;border-radius:9px}.progress-caption{display:flex;justify-content:space-between;font-size:10px;color:#8b977d;margin-top:7px}.week-strip{display:flex;justify-content:space-between;gap:6px;margin-top:18px}.week-day{display:flex;flex-direction:column;align-items:center;gap:7px;font-size:9px;color:#9aa38e}.week-day b{font:11px Arial;font-weight:400;border:1px solid #dce3d3;width:29px;height:29px;border-radius:50%;display:grid;place-items:center;color:#9aa38e;background:#f8f8ef}.week-day.active b{background:#648454;border-color:#648454;color:white}.week-day.today b{outline:1px solid #9cae88;outline-offset:3px}.study-tip{font-size:11px;color:#8b977d;line-height:1.75;margin:17px 2px 0}.app-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:920px;z-index:20;background:#fbfaf4f5;border-top:1px solid #d9e1d0;display:grid;grid-template-columns:repeat(4,1fr);padding:7px 10px calc(7px + env(safe-area-inset-bottom));backdrop-filter:blur(14px)}.app-nav>a{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:9px;text-decoration:none;min-height:48px;justify-content:center;color:#8e9b7f;border-radius:8px}.app-nav>a.active{color:#315a42;background:#e8efdd}.app-icon{width:20px;height:20px;display:block;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.app-search{display:flex;align-items:center;gap:9px;border:1px solid #d1dcc6;border-radius:8px;background:#fffef9;padding:9px 12px;margin-bottom:12px}.app-search input{width:100%;min-width:0;border:0;outline:0;background:transparent;font-size:14px;color:var(--ink);min-height:25px}.app-search .app-icon{color:#99a48c;width:18px;height:18px;flex:none}.filter-row{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:0 -2px 14px;padding:2px}.filter-row button{white-space:nowrap;font-size:10px;padding:7px 12px;min-height:34px!important;border-radius:18px;background:transparent}.filter-row button.active{background:#2e5740;color:white;border-color:#2e5740}.filter-count{font-size:10px;color:#8e9b7e;margin:7px 1px 12px}.kanji-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.kanji-tile{position:relative;background:#fffef9;padding:13px 6px 10px;text-align:center;border:1px solid #d9e2ce;border-radius:8px;min-width:0;overflow:hidden}.tile-symbol{font:32px/1.4 JP,sans-serif;display:block}.tile-name{font-size:9px;line-height:1.4;color:#849277;display:block;margin:5px 0 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tile-status{width:5px;height:5px;border-radius:50%;display:block;position:absolute;top:8px;right:8px;background:#dce4d3}.kanji-tile.due{border-color:#dfc59a;background:#fffaf0}.kanji-tile.due .tile-status{background:#bf914a}.kanji-tile.learning .tile-status{background:#82a0ac}.kanji-tile.review .tile-status,.kanji-tile.settled .tile-status{background:#799b60}.kanji-tile.settled{background:#f0f5e8}.kanji-tile.saved:after{content:'·';position:absolute;left:8px;top:1px;color:#b79a60;font-size:25px}.empty-state{text-align:center;padding:40px 16px;border:1px dashed #cbd8bd;border-radius:12px;background:#fafaf2}.empty-state h2{font:25px Georgia,serif;font-weight:400;margin:6px 0}.empty-state p{font-size:12px;color:#89967d;max-width:320px;margin:10px auto 20px}.empty-symbol{font:55px JP,sans-serif;color:#a1b391}.settings-card{border:1px solid #d4dfc9;border-radius:10px;background:#fffef8;padding:17px;margin:12px 0}.settings-card h2{font:21px Georgia,serif;font-weight:400;margin:0 0 14px}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:11px 0;border-top:1px solid #e5eadc}.setting-row:first-of-type{border:0}.setting-row label{font-size:12px;flex:1}.setting-row small{display:block;font-size:10px;color:#8b977d;margin-top:3px}.setting-row select{font-size:12px;max-width:58%;min-width:72px;padding:8px}.settings-card>p{font-size:11px;color:#8b977d;line-height:1.8}.settings-link{display:flex;align-items:center;justify-content:space-between;font-size:12px;padding:9px 0;text-decoration:none;min-height:44px;border-top:1px solid #e2e8d9}.setting-status{font-size:10px;color:#869778;margin-top:10px}.storage-note{font-size:11px;color:#89967d;margin-top:15px;line-height:1.8}.stat-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:13px 0}.stat-card{border:1px solid #d4dfc9;border-radius:9px;padding:15px 10px;background:#fffef8}.stat-card strong{font:30px Georgia,serif;font-weight:400;display:block}.stat-card small{font-size:10px;color:#8a977b}.forecast{display:flex;gap:8px;align-items:flex-end;margin-top:18px;min-height:125px}.forecast-column{flex:1;display:flex;flex-direction:column;align-items:center;gap:7px;font-size:9px;color:#8d997e}.forecast-column b{font:10px Arial;font-weight:400}.forecast-column>span{display:block;width:100%;max-width:40px;border-radius:4px;background:#d8e5ca;min-height:4px}.forecast-column.current>span{background:#a9c0c7}.progress-categories{display:flex;flex-wrap:wrap;gap:10px 15px;font-size:10px;color:#829174;margin-top:15px}.progress-categories i{width:6px;height:6px;background:var(--dot);border-radius:50%;display:inline-block;margin-right:5px}.summary-panel{text-align:center;border:1px solid #cbdabe;background:#edf3e5;border-radius:14px;padding:30px 22px;margin:15px 0}.summary-mark{width:65px;height:65px;border:1px solid #b8cda8;border-radius:50%;display:grid;place-items:center;margin:0 auto 18px;background:#f8faf2;color:#668650;font:30px Georgia}.summary-panel h1{font:32px Georgia,serif;font-weight:400;margin:8px 0}.summary-panel p{font-size:12px;color:#7e8e70;line-height:1.8}.summary-panel .button-row{margin-top:24px}.session-glyphs{display:flex;flex-wrap:wrap;justify-content:center;gap:9px;margin:22px 0}.session-glyphs button{font:26px JP,sans-serif;width:49px;height:52px;padding:5px;background:#fffef9;border-color:#cddbbf}.family-app-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:16px}.family-app-grid button{padding:12px;font-size:11px;background:#fffef8;min-width:0}.family-app-grid .glyph{width:65px;height:65px;margin:0 auto 7px}.family-app-grid small{font-size:9px;color:#859575;display:block;margin-top:4px}.family-app-title{display:flex;align-items:center;gap:18px;margin:20px 0}.family-app-title>.glyph{width:80px;height:80px;flex:none}.family-app-title h1{font:28px Georgia,serif;font-weight:400;margin:0}.family-app-title p{font-size:12px;color:#869678;margin:6px 0}.deck-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 12px}.deck-top>div{flex:1;text-align:center}.deck-top>div>span{display:block;font-size:11px;color:#637b59}.deck-top small{display:block;font-size:9px;color:#99a58c;margin-top:2px}.icon-button{background:transparent;border:1px solid #d2deC6;padding:8px 11px;border-radius:50%;width:40px;height:40px;min-height:40px!important;display:grid;place-items:center}.icon-button .app-icon{width:17px;height:17px}.icon-button[aria-pressed=true]{color:#a17a33;background:#fbf1dc;border-color:#decba4}.icon-button[aria-pressed=true] .app-icon{fill:#e8ce92}.deck-track{height:2px;background:#e1e8d6;margin:0 0 15px;border-radius:4px;overflow:hidden}.deck-track>span{height:100%;background:#83a171;display:block}.daily-app.is-deck main{max-width:750px;padding:10px 13px calc(110px + env(safe-area-inset-bottom))}.daily-app.is-deck .app-header{max-width:750px;padding:12px 15px 5px}.daily-app.is-deck .connection{display:none}.daily-app.is-deck .app-brand{font-size:14px}.daily-app.is-deck .app-brand small{display:none}.daily-app.is-deck .app-brand img{width:25px;height:25px}.daily-app.is-deck .app-nav{display:none}.daily-app .slide-shell{border-radius:10px;padding:18px}.daily-app .model-tools button{min-height:29px;font-size:10px}.daily-app .memory-chip{min-height:36px}.daily-app .piece-button{min-height:38px}.daily-app .memory-heading button,.daily-app .slide-foot button{min-height:28px}.daily-app .slide-heading h2{font-size:33px}.daily-app .slide-foot #notebookLayout{display:none}.daily-note{border:1px solid #d8e2cc;border-radius:8px;background:#edf2e5;padding:12px 14px;margin-top:12px}.daily-note label{font:16px Georgia,serif;display:block;margin-bottom:7px}.daily-note textarea{font-size:14px;line-height:1.7;min-height:75px}.daily-note small{display:block;font-size:9px;color:#92a080;margin-top:3px}.deck-caption{font-size:10px;color:#9aa58c;text-align:center;padding:14px 3px}.deck-controls{position:fixed;bottom:0;left:50%;transform:translateX(-50%);z-index:25;width:100%;max-width:750px;border-top:1px solid #d4dfc7;background:#f9f8f1f7;padding:9px 13px calc(9px + env(safe-area-inset-bottom));backdrop-filter:blur(14px)}.deck-button-row{display:flex;align-items:center;gap:8px}.deck-button-row>.primary{flex:1;justify-content:center}.deck-button-row>.secondary{padding:8px 13px}.deck-control-caption{text-align:center;color:#97a285;font-size:9px;margin:0 0 7px}.grade-buttons{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.grade-buttons button{font-size:12px;min-height:53px;border-radius:6px;padding:7px 2px;background:#fffef9;border-color:#d6dfcd}.grade-buttons button small{display:block;font-size:9px;color:#8e9b80;margin-top:3px}.grade-buttons .again{border-color:#dfb9a6;color:#ab6b4e;background:#fff8f2}.grade-buttons .hard{color:#ac8a4d}.grade-buttons .good{background:#eaf2df;border-color:#b7cda5;color:#50723b}.grade-buttons .easy{color:#4a798a;background:#eff5f6;border-color:#c3d9e0}.undo-rating{position:absolute;right:13px;top:-35px;min-height:29px!important;padding:4px 9px;border-radius:15px;font-size:10px;background:#fffef8e8;color:#8b977a}.recall-card{border:1px solid #d0ddc4;background:#fffef8;border-radius:13px;min-height:390px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:35px 20px;text-align:center}.recall-card .recall-type{font-size:9px;letter-spacing:1.5px;text-transform:uppercase;color:#a3ac96}.recall-card>.glyph{width:210px;height:210px;margin:18px auto}.recall-card h1{font:38px Georgia,serif;font-weight:400;margin:35px 0 14px}.recall-card p{font-size:12px;color:#91a07e;max-width:250px;margin:8px 0;line-height:1.8}.recall-card .writing-meaning{font-size:14px;color:#7c906b}.recall-instruction{text-align:center;font-size:11px;color:#8d9d7c;line-height:1.8;margin:20px 20px 0}.recall-mode{text-align:center;font-size:10px;color:#a0aa93;margin-top:12px}.skip-link{position:absolute;top:-60px;background:#fffef9;padding:10px;z-index:80}.skip-link:focus{top:0}#toast{position:fixed;left:50%;bottom:calc(var(--nav) + env(safe-area-inset-bottom) + 14px);transform:translateX(-50%);background:#294c3c;color:#fffef5;font-size:12px;padding:11px 16px;border-radius:8px;z-index:80;max-width:calc(100% - 30px);box-shadow:0 6px 25px #213c3420}.is-deck #toast{bottom:calc(110px + env(safe-area-inset-bottom))}#saveError{position:fixed;top:0;left:0;right:0;background:#f4d7bd;color:#805b37;padding:8px 12px;font-size:11px;text-align:center;z-index:100}.daily-app #heisigRefDialog{max-height:88dvh}.daily-app [data-model-stroke]{cursor:pointer}.daily-app .comparison-pieces button{min-height:44px}.motion-next #cardAnswer,.motion-next #recallPrompt{animation:slide-next .18s ease-out}.motion-prev #cardAnswer,.motion-prev #recallPrompt{animation:slide-prev .18s ease-out}@keyframes slide-next{from{transform:translateX(12px);opacity:.5}to{transform:translateX(0);opacity:1}}@keyframes slide-prev{from{transform:translateX(-12px);opacity:.5}to{transform:translateX(0);opacity:1}}#deckPane{touch-action:pan-y pinch-zoom}.settings-backup-info{font-size:10px;color:#91a17f;margin:9px 0}.dark-count{font-size:12px;color:#668154}.stage-label{font-size:10px;color:#8c9c7d}.activity-total{font:36px Georgia,serif;color:#6f8c57}
@media(min-width:700px){.today-grid{grid-template-columns:1.15fr 1fr;align-items:stretch}.learn-panel{grid-column:1;grid-row:1}.review-panel{grid-column:2;grid-row:1}.daily-panel{padding:25px}.preview-glyphs{gap:9px}.preview-glyph{width:56px;height:64px}.preview-glyph .glyph{width:45px;height:45px}.daily-panel .primary{margin-top:22px}.course-progress{margin-top:28px}.kanji-grid{grid-template-columns:repeat(8,minmax(0,1fr));gap:9px}.tile-symbol{font-size:36px}.pane-heading h1{font-size:38px}.daily-app main{padding-top:25px}.daily-app .app-nav{border-radius:13px 13px 0 0}.family-app-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.progress-columns{display:grid;grid-template-columns:1fr 1fr;gap:14px}.app-header{padding-top:25px}.daily-app.is-deck .slide-shell{padding:23px}.recall-card{min-height:430px}}
@media(max-width:360px){.daily-app main{padding-left:12px;padding-right:12px}.app-header{padding-left:13px;padding-right:13px}.daily-panel{padding:16px}.preview-glyphs{gap:5px}.preview-glyph{width:43px;height:51px}.kanji-grid{gap:6px}.tile-symbol{font-size:29px}.tile-name{font-size:8px}.daily-app.is-deck main{padding-left:9px;padding-right:9px}.daily-app .slide-shell{padding:13px}.daily-app .recognition{grid-template-columns:119px minmax(0,1fr);gap:10px}.daily-app .big-glyph{width:99px;height:99px}.daily-app .model-tools button{font-size:9px;padding:3px 4px}.daily-app .standard-form{font-size:21px}.daily-app .slide-heading h2{font-size:29px}.grade-buttons{gap:4px}.grade-buttons button{font-size:11px}.grade-buttons button small{font-size:8px}.recall-card>.glyph{width:180px;height:180px}.recall-card{min-height:345px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

.daily-app .deck-top{position:sticky;top:0;z-index:12;background:#f5f4edf5;backdrop-filter:blur(12px);padding:6px 0;margin-top:-6px}

@media(max-width:699px){.today-grid.has-due .review-panel{order:-1}.daily-app input,.daily-app textarea,.daily-app .setting-row select{font-size:16px}}

.daily-app .filter-count{display:flex;justify-content:space-between;align-items:center;gap:10px}.daily-app .set-practice{border:0;background:transparent;min-height:30px;font-size:10px;color:#728966;padding:3px 0}

.kanji-tile .tile-symbol{width:38px;height:46px;margin:auto;stroke-width:3}.session-glyphs button>.glyph{width:34px;height:34px;margin:auto}@media(max-width:360px){.kanji-tile .tile-symbol{width:33px;height:42px}}
.ink-canvas{width:100%;max-width:340px;aspect-ratio:1;display:block;margin:8px auto;border:1px solid #d0dec5;border-radius:8px;background:#fffef9;touch-action:none;user-select:none;cursor:crosshair}.ink-controls{display:flex;flex-wrap:wrap;gap:5px;justify-content:center}.daily-app .ink-controls button{font-size:10px;padding:6px 9px;min-height:36px}.ink-controls button[aria-pressed=true]{background:#e2edda}.ink-actions{display:flex;align-items:center;gap:10px;margin:12px 0}.ink-actions .primary{font-size:12px;min-height:43px;flex:1;justify-content:center}.ink-count{font-size:10px;color:#899a79;white-space:nowrap}.ink-feedback{font-size:12px;line-height:1.7}.ink-feedback button{display:block;font-size:11px;padding:5px 0;border:0;background:transparent;color:#956a36;min-height:30px}.ink-feedback small{font-size:9px;display:block;color:#9ba58e;margin-top:8px}.writing-prompt-pad .ink-canvas{max-width:300px}.writing-prompt-pad{width:100%;margin-top:12px}.recall-card.has-pad{padding:22px 17px}.recall-card.has-pad h1{margin:15px 0 8px;font-size:30px}.recall-card.has-pad .writing-meaning{margin:4px}.writing-prompt-pad .ink-feedback{font-size:11px}.stroke-actions{margin-left:auto;display:flex;gap:8px}.daily-app .stroke-actions button{min-height:30px;font-size:10px;padding:4px 8px;color:#698263}.speak-button{border:0!important;background:transparent!important;color:#688a98;min-height:28px!important;padding:2px 5px;font-size:11px}.word .speak-button{grid-column:3;grid-row:1/3;align-self:center}.word:has(.speak-button){grid-template-columns:83px minmax(0,1fr) 28px}.speak-button.playing{color:#b27c36}.reading .speak-button{margin-left:2px}

@media(min-width:451px){.word{position:relative;padding-right:27px}.word>.speak-button{position:absolute;right:0;top:3px}}

.ink-stepper{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px;font-size:10px;color:#8c9c7d}.daily-app .ink-stepper button{font-size:10px;min-height:32px;padding:4px 8px;background:transparent}
