:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--page:#f9f9f7;--surface:#fcfcfb;--surface-raised:#fff;--ink:#0b0b0b;--ink-secondary:#52514e;--ink-muted:#898781;--gridline:#e1e0d9;--border:#0b0b0b1a;--accent:#b5652e;--accent-ink:#fff;--accent-wash:#b5652e21;--status-backlog-bg:#89878129;--status-backlog-dot:#898781;--status-learning-bg:#2f5f8a24;--status-learning-dot:#2f5f8a;--status-consolidating-bg:#eda10029;--status-consolidating-dot:#eda100;--status-maintaining-bg:#00830024;--status-maintaining-dot:#008300;--status-rusty-bg:#d03b3b24;--status-rusty-dot:#d03b3b;--seq-100:#cde2fb;--seq-250:#86b6ef;--seq-400:#3987e5;--seq-550:#1c5cab;--seq-700:#0d366b;--temple-sky-top:#cfe0ee;--temple-sky-bottom:#f3d9c4;--temple-mist:#f9f1e6;--temple-mountain-3:#b9c9d6;--temple-mountain-2:#8ea3b3;--temple-mountain-1:#5d7383;--temple-torii:#a23b2e;--temple-moon:#fff6e0;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--shadow-card:0 1px 2px #0b0b0b0f, 0 8px 24px #0b0b0b0a;--sans:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;font:16px/1.5 var(--sans);color:var(--ink);background:var(--page);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--page:#0d0d0d;--surface:#1a1a19;--surface-raised:#212120;--ink:#fff;--ink-secondary:#c3c2b7;--ink-muted:#898781;--gridline:#2c2c2a;--border:#ffffff1a;--accent:#d9885a;--accent-ink:#1a1108;--accent-wash:#d9885a2e;--status-backlog-bg:#89878133;--status-learning-bg:#5a94c233;--status-learning-dot:#5a94c2;--status-consolidating-bg:#c9850038;--status-consolidating-dot:#c98500;--status-maintaining-bg:#00830038;--status-rusty-bg:#d03b3b38;--temple-sky-top:#10131c;--temple-sky-bottom:#2b2440;--temple-mist:#171426;--temple-mountain-3:#2e3550;--temple-mountain-2:#232840;--temple-mountain-1:#171a2c;--temple-torii:#c0453a;--temple-moon:#f5e6b8;--shadow-card:0 1px 2px #0000004d, 0 8px 24px #0003}}*{box-sizing:border-box}body{margin:0}#root{min-height:100svh}h1,h2,h3{font-family:var(--sans);color:var(--ink);letter-spacing:-.01em;font-weight:600}h1{margin:0;font-size:1.5rem}h2{margin:0;font-size:1.15rem}h3{color:var(--ink-secondary);margin:0;font-size:.95rem}p{margin:0}button{font:inherit;cursor:pointer}button:disabled{cursor:not-allowed}input,select,textarea{font:inherit;color:inherit}kbd{font-family:ui-monospace,Consolas,monospace}.app{max-width:1100px;margin:0 auto;padding:1.5rem 1rem 3rem}.app-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.app-header h1{letter-spacing:.01em;font-family:Iowan Old Style,Palatino Linotype,Palatino,Georgia,serif;font-size:1.5rem;font-weight:500}.app-footer{text-align:center;color:var(--ink-muted);margin-top:3rem;padding-top:1rem;font-size:.85rem}.app-footer a{color:inherit;text-decoration:underline}.app-footer p{margin:.25rem 0 0}.app-footer-legal{font-size:.8rem}.footer-link-btn{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;margin:0;padding:0;text-decoration:underline}.app-title{flex-direction:row;align-items:center;gap:.6rem;display:flex}.app-logo{flex:none;width:2.1rem;height:2.1rem}.app-header nav{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);gap:.25rem;padding:.25rem;display:flex}.app-header nav button{color:var(--ink-secondary);border-radius:var(--radius-sm);background:0 0;border:none;padding:.4rem .9rem;font-weight:500;transition:background-color .15s,color .15s}.app-header nav button:hover{background:var(--accent-wash)}.app-header nav button.active{background:var(--accent);color:var(--accent-ink)}.app-header-actions{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.how-it-works-btn,.install-btn{white-space:nowrap}.install-prompt{position:relative}.install-popover{z-index:20;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-md);width:max-content;max-width:220px;box-shadow:var(--shadow-card);color:var(--ink-secondary);text-align:left;flex-direction:column;gap:.5rem;padding:.75rem .9rem;font-size:.85rem;display:flex;position:absolute;top:calc(100% + .5rem);right:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:1.25rem}.btn{border-radius:var(--radius-sm);border:1px solid #0000;justify-content:center;align-items:center;gap:.4rem;padding:.55rem 1rem;font-weight:500;transition:transform 50ms,background-color .15s,border-color .15s,opacity .15s;display:inline-flex}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;transform:none}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-primary:hover:not(:disabled){filter:brightness(1.08)}.btn-ghost{border-color:var(--border);color:var(--ink);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--accent-wash)}.btn-danger{background:var(--status-rusty-dot);color:#fff}.btn-danger-ghost{border-color:var(--border);color:var(--status-rusty-dot);background:0 0}.btn-danger-ghost:hover:not(:disabled){background:var(--status-rusty-bg)}.btn-block{width:100%}.btn-lg{padding:.8rem 1.25rem;font-size:1.05rem}.icon-button{color:var(--ink-muted);background:0 0;border:none;border-radius:999px;justify-content:center;align-items:center;width:1.5rem;height:1.5rem;line-height:1;transition:background-color .15s,color .15s;display:inline-flex}.icon-button:hover{background:var(--status-rusty-bg);color:var(--status-rusty-dot)}.empty{color:var(--ink-muted);font-style:italic}.status-badge{color:var(--ink-secondary);white-space:nowrap;border-radius:999px;align-items:center;gap:.4rem;padding:.2rem .6rem .2rem .5rem;font-size:.8rem;font-weight:500;display:inline-flex}.status-dot{border-radius:999px;flex:none;width:.5rem;height:.5rem}.status-backlog{background:var(--status-backlog-bg)}.status-backlog .status-dot{background:var(--status-backlog-dot)}.status-learning{background:var(--status-learning-bg)}.status-learning .status-dot{background:var(--status-learning-dot)}.status-consolidating{background:var(--status-consolidating-bg)}.status-consolidating .status-dot{background:var(--status-consolidating-dot)}.status-maintaining{background:var(--status-maintaining-bg)}.status-maintaining .status-dot{background:var(--status-maintaining-dot)}.status-rusty{background:var(--status-rusty-bg)}.status-rusty .status-dot{background:var(--status-rusty-dot)}.field{flex-direction:column;gap:.3rem;display:flex}.field>span:first-child{color:var(--ink-secondary);font-size:.85rem;font-weight:500}.field-hint{color:var(--ink-muted);font-size:.78rem;line-height:1.4}.field-hint-warning{color:var(--status-consolidating-dot)}input,select{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--ink);padding:.5rem .6rem}input:focus,select:focus,.tag-input:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-wash);outline:none}.form-editor,.form-detail{flex-direction:column;gap:1rem;max-width:640px;display:flex}.first-kata-hint{background:var(--accent-wash);border:1px solid var(--accent);border-radius:var(--radius-sm);color:var(--ink);padding:.7rem .9rem;font-size:.9rem}.status-choice{flex-wrap:wrap;gap:.5rem;display:flex}.status-choice-btn{border:1px solid var(--border);background:var(--surface-raised);color:var(--ink-secondary);border-radius:var(--radius-sm);flex:auto;padding:.6rem .9rem;font-weight:500}.status-choice-btn:hover{border-color:var(--accent)}.status-choice-btn.active{background:var(--accent-wash);border-color:var(--accent);color:var(--ink)}.field-more-details summary{cursor:pointer;color:var(--ink-secondary);font-weight:500}.field-more-details{flex-direction:column;display:flex}.field-more-details[open] summary,.field-more-details>.field,.field-more-details>div{margin-bottom:.75rem}.form-actions{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.confirm-text{color:var(--ink-secondary);font-size:.9rem}.tag-input{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-raised);flex-wrap:wrap;gap:.4rem;padding:.4rem;display:flex}.tag-input input{background:0 0;border:none;outline:none;flex:1;min-width:6rem;padding:.2rem}.tag-chip{background:var(--accent-wash);color:var(--ink);border-radius:999px;align-items:center;gap:.3rem;padding:.15rem .3rem .15rem .65rem;font-size:.85rem;display:inline-flex}.tag-list{flex-wrap:wrap;gap:.4rem;padding:0;list-style:none;display:flex}.tag-list li{background:var(--accent-wash);border-radius:999px;padding:.15rem .7rem;font-size:.85rem}.library-page{grid-template-columns:300px minmax(0,1fr);align-items:start;gap:1.5rem;display:grid}@media (width<=640px){.library-page{grid-template-columns:minmax(0,1fr)}.library-page.has-detail .library-list{display:none}}.library-list{flex-direction:column;gap:.75rem;min-height:0;max-height:calc(100vh - 3rem);display:flex;position:sticky;top:1.5rem}@media (width<=640px){.library-list{max-height:none;position:static}}.library-toolbar{gap:.5rem;display:flex}.library-search{flex:1;min-width:0}.library-sort{flex:none;font-size:.85rem}.library-back{display:none}@media (width<=640px){.library-back{margin-bottom:.75rem;display:inline-flex}}.library-groups{flex-direction:column;flex:auto;gap:.85rem;min-height:0;padding-right:.15rem;display:flex;overflow-y:auto}.library-group{flex-direction:column;gap:.3rem;display:flex}.library-group-header{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-muted);align-items:center;gap:.4rem;margin:0;padding:0 .1rem;font-size:.75rem;font-weight:500;display:flex}.library-group-count{color:var(--ink-muted);font-weight:400}.library-list ul{flex-direction:column;gap:.3rem;margin:0;padding:0;list-style:none;display:flex}.library-list li{border-radius:var(--radius-md);background:var(--surface);border:1px solid #0000;flex-direction:row;align-items:flex-start;gap:.5rem;padding:.45rem .65rem;display:flex}.library-list li:hover{border-color:var(--border)}.library-list li.selected{background:var(--accent-wash);border-color:var(--accent)}.library-row-checkbox{cursor:pointer;flex:none;align-items:center;padding-top:.15rem;display:flex}.library-row-content{flex-direction:column;flex:auto;gap:.15rem;min-width:0;display:flex}.library-select-all-row{color:var(--ink-muted);white-space:nowrap;align-items:center;gap:.4rem;font-size:.78rem;display:flex}.library-bulk-bar{background:var(--accent-wash);border:1px solid var(--accent);border-radius:var(--radius-sm);flex-wrap:wrap;align-items:center;gap:.4rem;padding:.3rem .5rem;font-size:.78rem;line-height:1.2;display:flex}.library-bulk-count{white-space:nowrap;font-weight:500}.library-bulk-status{padding:.15rem .3rem;font-size:.75rem}.library-bulk-bar .btn{padding:.2rem .5rem;font-size:.75rem}.library-bulk-bar .link-toggle{align-self:center;font-size:.75rem}.library-bulk-bar .confirm-text{white-space:nowrap}.library-row-main{text-align:left;background:0 0;border:none;width:100%;min-width:0;padding:0;display:block}.library-row-meta{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.library-row-status{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--ink-secondary);flex:none;padding:.2rem .35rem;font-size:.72rem}.library-list .name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:500;display:block;overflow:hidden}.meta-discipline,.meta-stat{color:var(--ink-muted);flex:none;font-size:.78rem}.weak-spots-count{color:var(--ink-secondary);align-items:center;gap:.5rem;margin:.5rem 0;font-size:.85rem;display:flex}.weak-spots-count input{width:4rem}.meta-last-practiced{color:var(--ink-muted);flex:1;font-size:.78rem}.library-row-tags{flex-wrap:wrap;gap:.25rem;margin-top:.2rem;display:flex}.tag-chip-sm{background:var(--accent-wash);color:var(--ink-secondary);border-radius:999px;padding:.05rem .5rem;font-size:.72rem}.backup-controls{border-top:1px solid var(--border);flex-direction:column;gap:.5rem;margin-top:.25rem;padding-top:.6rem;display:flex}.backup-controls-row{flex-wrap:wrap;gap:1rem;display:flex}.link-toggle{color:var(--ink-muted);text-underline-offset:2px;background:0 0;border:none;align-self:flex-start;padding:0;font-size:.8rem;text-decoration:underline}.link-toggle:hover{color:var(--accent)}.backup-confirm{border:1px solid var(--status-rusty-dot);border-radius:var(--radius-md);flex-direction:column;gap:.5rem;padding:.6rem;font-size:.85rem;display:flex}.backup-confirm .btn{align-self:flex-start}.sync-controls{border-top:1px solid var(--border);flex-direction:column;gap:.4rem;margin-top:.25rem;padding-top:.6rem;display:flex}.sync-code{background:var(--gridline);border-radius:var(--radius-sm);word-break:break-all;padding:.1rem .4rem;font-family:ui-monospace,Consolas,monospace;font-size:.78rem}.sync-code-short{align-self:flex-start;padding:.3rem .6rem;font-size:1.1rem}.sync-actions{gap:1rem;display:flex}.sync-pair{flex-wrap:wrap;gap:.5rem;display:flex}.sync-pair input{flex:1;min-width:0}.sync-qr{flex-direction:column;align-items:flex-start;gap:.4rem;display:flex}.qr-code{border-radius:var(--radius-sm);background:#fff;padding:.4rem}.library-main{min-width:0}.library-main>.empty{padding:1.25rem}.form-detail dl{grid-template-columns:auto minmax(0,1fr);gap:.4rem 1rem;font-size:.9rem;display:grid}.form-detail dt{color:var(--ink-muted)}.form-detail header{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.form-stats h3{margin-bottom:.5rem;font-size:.95rem}.form-stats dl{grid-template-columns:auto minmax(0,1fr);gap:.4rem 1rem;font-size:.9rem;display:grid}.form-stats dt{color:var(--ink-muted)}.media-list ul,.review-history ul{flex-direction:column;gap:.4rem;margin:.5rem 0 0;padding:0;list-style:none;display:flex}.media-list li{border-bottom:1px solid var(--border);flex-direction:column;gap:.5rem;padding:.5rem 0;font-size:.9rem;display:flex}.review-history li{border-bottom:1px solid var(--border);align-items:center;gap:.6rem;padding:.35rem 0;font-size:.9rem;display:flex}.media-list li:last-child,.review-history li:last-child{border-bottom:none}.media-row-header{align-items:center;gap:.6rem;display:flex}.media-embed{flex-direction:column;align-items:flex-start;gap:.4rem;display:flex}.media-embed-youtube{aspect-ratio:16/9;width:100%;max-width:480px;position:relative}.media-embed-youtube iframe{border-radius:var(--radius-sm);border:0;width:100%;height:100%;position:absolute;inset:0}.media-open-link{color:var(--accent);font-size:.85rem}.media-kind{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-muted);background:var(--gridline);border-radius:var(--radius-sm);padding:.1rem .4rem;font-size:.75rem}.media-reference{color:var(--ink-secondary);overflow-wrap:anywhere}.media-add{flex-wrap:wrap;gap:.5rem;margin-top:.75rem;display:flex}.review-history .rating{color:var(--ink-secondary)}.review-history .status{color:var(--ink-muted)}.today-page{flex-direction:column;gap:1rem;max-width:480px;display:flex}.today-body,.today-secondary{flex-direction:column;gap:1rem;display:flex}.today-hero{border-radius:var(--radius-lg);border:1px solid var(--border);background:linear-gradient(135deg, var(--accent-wash), transparent 70%);align-items:center;gap:.65rem;padding:.85rem 1.1rem;display:flex}.today-hero-slogan{color:var(--ink-secondary);letter-spacing:.01em;font-family:Iowan Old Style,Palatino Linotype,Palatino,Georgia,serif;font-style:italic;font-weight:500}@media (width>=860px){.today-page{max-width:940px}.today-body{flex-direction:row;align-items:flex-start;gap:1.5rem}.today-body>.due-card,.today-secondary{flex:440px;min-width:0}}.due-card{flex-direction:column;align-items:flex-start;gap:.2rem;display:flex}.due-card-header{justify-content:space-between;align-items:center;gap:.5rem;width:100%;display:flex}.streak-chip{color:var(--ink-secondary);background:var(--accent-wash);white-space:nowrap;border-radius:999px;align-items:center;gap:.25rem;padding:.15rem .55rem;font-size:.8rem;font-weight:500;display:inline-flex}.today-empty-tutorial{flex-direction:column;align-items:stretch;gap:.75rem;max-width:480px;padding-top:0;display:flex;overflow:hidden}.temple-banner{aspect-ratio:600/220;margin:0 -1.25rem;line-height:0}.temple-banner-svg{width:100%;height:100%;display:block}.temple-heading{letter-spacing:.02em;text-align:center;margin-top:.5rem;font-family:Iowan Old Style,Palatino Linotype,Palatino,Georgia,serif;font-size:1.35rem;font-weight:500}.today-empty-tutorial .epigraph{color:var(--ink-secondary);text-align:center;font-family:Iowan Old Style,Palatino Linotype,Palatino,Georgia,serif;font-size:1rem;line-height:1.6}.today-empty-tutorial .epigraph-sub{color:var(--temple-torii);text-align:center;font-family:Iowan Old Style,Palatino Linotype,Palatino,Georgia,serif;font-size:.95rem;font-style:italic}.stat-label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.04em;font-size:.8rem}.stat-value{font-size:2.5rem;font-weight:600;line-height:1.1}.stat-caption{color:var(--ink-secondary);margin-bottom:.9rem}.empty-whimsy{color:var(--ink-muted);margin:-.4rem 0 .9rem;font-size:.9rem;font-style:italic}.trained-today-note{color:var(--ink-secondary);margin:-.4rem 0 .9rem;font-size:.85rem}.queue-filters{flex-wrap:wrap;gap:.5rem;margin:.6rem 0;display:flex}.tag-filter-chips{flex-wrap:wrap;gap:.4rem;display:flex}.tag-filter-chip{border:1px solid var(--border);background:var(--surface-raised);color:var(--ink-secondary);border-radius:999px;padding:.2rem .7rem;font-size:.8rem}.tag-filter-chip:hover{border-color:var(--accent)}.tag-filter-chip.active{background:var(--accent-wash);border-color:var(--accent);color:var(--ink)}.due-card .btn-lg{margin:.5rem 0 .6rem}.due-card .daily-limit{margin-top:.6rem}.learning-proposal{border-color:var(--accent)}.learning-proposal summary{cursor:pointer;font-weight:500}.learning-proposal .field-hint{margin:.5rem 0}.learning-proposal>input{width:100%;margin-bottom:.5rem}.daily-limit{flex-direction:column;gap:.5rem;display:flex}.daily-limit-controls{align-items:center;gap:.75rem;display:flex}.daily-limit-controls label{color:var(--ink-secondary);align-items:center;gap:.5rem;font-size:.85rem;display:flex}.daily-limit-controls input{width:4rem}.advanced-settings summary{cursor:pointer;color:var(--ink-secondary);font-weight:500}.advanced-settings .field-hint{margin:.5rem 0 .9rem}.training-settings{flex-direction:column;gap:.75rem;display:flex}.training-settings-field{flex-direction:column;gap:.25rem;display:flex}.training-settings-field label{color:var(--ink-secondary);justify-content:space-between;align-items:center;gap:.75rem;font-size:.85rem;display:flex}.training-settings-field input{width:4rem}.practice-specific summary{cursor:pointer;font-weight:500}.practice-specific .field-hint{margin:.5rem 0}.practice-specific>input{width:100%;margin-bottom:.5rem}.practice-list{flex-direction:column;gap:.3rem;margin:0;padding:0;list-style:none;display:flex}.practice-list li{border-bottom:1px solid var(--border);align-items:center;gap:.6rem;padding:.4rem 0;display:flex}.practice-list li:last-child{border-bottom:none}.practice-list .name{flex:1;min-width:0;font-weight:500}.training-session{flex-direction:column;gap:1rem;max-width:480px;margin:0 auto;display:flex}.session-progress-track{background:var(--gridline);border-radius:999px;height:6px;overflow:hidden}.session-progress-fill{background:var(--accent);border-radius:999px;height:100%;transition:width .25s}.training-session .progress{color:var(--ink-muted);font-size:.8rem}.session-timer{font-variant-numeric:tabular-nums;color:var(--ink-secondary);align-self:center;font-size:.95rem;font-weight:600}.session-timer-up{color:var(--status-rusty-dot)}.training-hero{border-radius:var(--radius-lg);border:1px solid var(--border);background:linear-gradient(135deg, var(--accent-wash), transparent 70%);text-align:center;flex-direction:column;align-items:center;gap:.5rem;padding:1.35rem 1.1rem 1.1rem;display:flex}.kata-name{letter-spacing:.01em;color:var(--ink);margin:0;font-size:2rem;line-height:1.15}.training-hero-meta{flex-wrap:wrap;justify-content:center;align-items:center;gap:.6rem;display:flex}.training-hero-meta .meta{color:var(--ink-secondary);font-size:.9rem}.training-session .prompt{color:var(--ink-secondary);text-align:center;font-size:.9rem}.notice{color:var(--ink-muted);background:var(--gridline);border-radius:var(--radius-sm);padding:.5rem .75rem;font-style:italic}.rating-options{flex-direction:column;gap:.5rem;display:flex}.rating-btn{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--ink);box-shadow:var(--shadow-card);justify-content:flex-start;align-items:center;gap:.6rem;padding:.7rem .9rem;font-weight:500;transition:border-color .15s,transform 50ms;display:flex}.rating-btn:active{transform:translateY(1px)}.rating-label{flex:1}.rating-preview{color:var(--ink-muted);flex:none;font-size:.78rem;font-weight:400}.rating-btn kbd{border-radius:var(--radius-sm);background:var(--gridline);width:1.4rem;height:1.4rem;color:var(--ink-muted);justify-content:center;align-items:center;font-size:.8rem;display:inline-flex}.rating-btn:hover{border-color:var(--accent)}.rating-forgotten:hover{border-color:var(--status-rusty-dot)}.rating-major-uncertainty:hover{border-color:var(--status-consolidating-dot)}.rating-minor-uncertainty:hover{border-color:var(--status-learning-dot)}.rating-full-recall:hover{border-color:var(--status-maintaining-dot)}.rating-btn:disabled{cursor:default}.rating-btn-pressed{animation:.32s rating-press}.rating-forgotten.rating-btn-pressed{border-color:var(--status-rusty-dot);background:var(--status-rusty-bg)}.rating-major-uncertainty.rating-btn-pressed{border-color:var(--status-consolidating-dot);background:var(--status-consolidating-bg)}.rating-minor-uncertainty.rating-btn-pressed{border-color:var(--status-learning-dot);background:var(--status-learning-bg)}.rating-full-recall.rating-btn-pressed{border-color:var(--status-maintaining-dot);background:var(--status-maintaining-bg)}.rating-acquisition-not-yet:hover{border-color:var(--status-rusty-dot)}.rating-acquisition-improved:hover{border-color:var(--status-learning-dot)}.rating-acquisition-mostly-fluent:hover{border-color:var(--status-maintaining-dot)}.rating-acquisition-not-yet.rating-btn-pressed{border-color:var(--status-rusty-dot);background:var(--status-rusty-bg)}.rating-acquisition-improved.rating-btn-pressed{border-color:var(--status-learning-dot);background:var(--status-learning-bg)}.rating-acquisition-mostly-fluent.rating-btn-pressed{border-color:var(--status-maintaining-dot);background:var(--status-maintaining-bg)}@keyframes rating-press{0%{transform:scale(1)}35%{transform:scale(.93)}70%{transform:scale(1.05)}to{transform:scale(1)}}.skip-today-btn{align-self:center;margin-top:.25rem}.training-session.complete{text-align:center;align-items:center}.complete-check-wrap{display:inline-flex;position:relative}.complete-check{background:var(--status-maintaining-bg);width:2.5rem;height:2.5rem;color:var(--status-maintaining-dot);border-radius:999px;justify-content:center;align-items:center;font-size:1.3rem;animation:.35s ease-out complete-check-pop;display:inline-flex}@keyframes complete-check-pop{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.confetti{width:0;height:0;position:absolute;top:50%;left:50%}.confetti-particle{opacity:0;transform:rotate(var(--angle)) translate(0, 0);font-size:1.1rem;animation:.7s ease-out forwards confetti-burst;position:absolute;top:0;left:0}@keyframes confetti-burst{0%{opacity:1;transform:rotate(var(--angle)) translate(0, 0) scale(.6)}to{opacity:0;transform:rotate(var(--angle)) translate(46px, 0) scale(1)}}@media (prefers-reduced-motion:reduce){.complete-check{animation:none}.confetti-particle{opacity:0;animation:none}}.complete-message{color:var(--temple-torii);font-style:italic}.completed-list{color:var(--ink-secondary);margin:0;padding:0;list-style:none}.reference-media{font-size:.9rem}.reference-media summary{cursor:pointer;color:var(--ink-secondary)}.reference-media ul{flex-direction:column;gap:.3rem;margin:.5rem 0 0;padding:0;list-style:none;display:flex}.reference-media a{color:var(--accent)}.reference-media-empty{display:flex}.reference-add{flex-wrap:wrap;gap:.5rem;width:100%;display:flex}.reference-add input{flex:200px}.progress-page{flex-direction:column;gap:1.25rem;display:flex}.stat-tiles{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.75rem;display:grid}.stat-tile{flex-direction:column;gap:.15rem;display:flex}.stat-tile .stat-value{font-size:1.8rem}.streak-flame{font-size:1.2rem}.stat-nudge{color:var(--ink-muted);font-size:.75rem;font-style:italic}.chart-title{margin-bottom:.9rem}.retention-trend-svg{width:100%;height:auto;display:block}.retention-trend-grid{stroke:var(--gridline);stroke-width:1px}.retention-trend-axis-label{fill:var(--ink-muted);font-size:10px}.retention-trend-line{stroke:var(--accent);stroke-width:2.5px;stroke-linecap:round;stroke-linejoin:round}.retention-trend-dot{fill:var(--surface-raised);stroke:var(--accent);stroke-width:2px}.retention-trend-labels{color:var(--ink-muted);justify-content:space-between;margin-top:.4rem;font-size:.78rem;display:flex}.status-bar-chart{flex-direction:column;gap:.6rem;display:flex}.status-bar-row{grid-template-columns:8.5rem minmax(0,1fr) 2rem;align-items:center;gap:.6rem;display:grid}.status-bar-track{background:var(--gridline);border-radius:var(--radius-sm);height:20px;overflow:hidden}.status-bar-fill{border-radius:var(--radius-sm);height:100%;transition:width .3s}.status-bar-value{color:var(--ink-secondary);text-align:right;font-size:.85rem}.heatmap{gap:3px;padding-bottom:.25rem;display:flex;overflow-x:auto}.heatmap-week{flex-direction:column;gap:3px;display:flex}.heatmap-cell{background:var(--gridline);border:none;border-radius:3px;width:12px;height:12px;padding:0}.heatmap-cell:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.heatmap-legend{color:var(--ink-muted);align-items:center;gap:.3rem;margin-top:.5rem;font-size:.75rem;display:flex}.heatmap-legend .heatmap-cell{width:10px;height:10px}.modal-backdrop{z-index:100;background:#00000080;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal{flex-direction:column;gap:1.1rem;width:100%;max-width:560px;max-height:90vh;display:flex;overflow-y:auto}.modal-header{justify-content:space-between;align-items:center;gap:1rem;display:flex}.modal-title{align-items:center;gap:.5rem;display:flex}.modal-logo{flex:none;width:1.6rem;height:1.6rem}.heading-serif{font-family:Iowan Old Style,Palatino Linotype,Palatino,Georgia,serif;font-weight:500}.modal-tagline{color:var(--ink-secondary);font-size:.95rem;line-height:1.5}.modal-tagline em{color:var(--ink);font-style:normal;font-weight:500}.modal section{flex-direction:column;gap:.6rem;display:flex}.flow-diagram{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.flow-step{align-items:center;gap:.4rem;display:flex}.flow-arrow{color:var(--ink-muted);font-size:.9rem}.flow-chip{background:var(--accent-wash);white-space:nowrap;border-radius:999px;align-items:center;padding:.2rem .7rem;font-size:.85rem;display:inline-flex}.flow-branch{border-left:2px dashed var(--gridline);flex-direction:column;align-items:flex-start;gap:.35rem;margin-left:.5rem;padding:.6rem .75rem;display:flex}.flow-branch-arrow{color:var(--ink-muted);font-size:.8rem}.flow-branch-note,.flow-loop-note{color:var(--ink-secondary);margin:0;font-size:.85rem;line-height:1.5}.modal-footnote{color:var(--ink-muted);border-top:1px solid var(--border);padding-top:.9rem;font-size:.85rem;line-height:1.5}.legal-modal{max-width:640px}.legal-modal-body{color:var(--ink-secondary);flex-direction:column;gap:1.1rem;font-size:.9rem;line-height:1.55;display:flex}.legal-modal-body h3{color:var(--ink);margin:0 0 .4rem;font-size:.95rem}.legal-modal-body p{margin:0 0 .5rem}.legal-modal-body ul{flex-direction:column;gap:.3rem;margin:0 0 .5rem;padding-left:1.2rem;display:flex}.legal-meta{color:var(--ink-muted);font-size:.8rem}
