:root{color:#193732;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--ink:#193732;--ink-muted:#566965;--accent-strong:#176b5b;--focus:#b36b00;--surface:#fffdf8;--surface-muted:#e7e6de;--border:#ccd4cc;background:#f3f0e8;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html{background:#f3f0e8;min-width:20rem;min-height:100%}body{min-width:20rem;min-height:100vh;margin:0;line-height:1.6}.app-shell{flex-direction:column;gap:clamp(1.25rem,3vw,2rem);width:min(100% - 2rem,54rem);min-height:100vh;margin:0 auto;padding:clamp(1.75rem,7vw,4.75rem) 0 3.5rem;display:flex}.app-header{max-width:43rem}.phase-label,.content-pack-label,.placeholder-label,.view-label,.layer-label,.card-kind{color:var(--accent-strong);letter-spacing:.11em;text-transform:uppercase;margin:0 0 .65rem;font-size:.75rem;font-weight:800}.app-header h1{color:var(--ink);letter-spacing:-.06em;margin:0;font-size:clamp(2.35rem,8vw,4.75rem);line-height:1.02}.status-text{max-width:38rem;color:var(--ink-muted);margin:1.1rem 0 0;font-size:clamp(1rem,2.5vw,1.12rem)}.content-pack-info{border:1px solid var(--border);background:#fffdf8c2;border-radius:1rem;padding:1.15rem 1.4rem 1.15rem 1.65rem;position:relative;overflow:hidden}.content-pack-info:before{background:var(--accent-strong);content:"";width:.32rem;position:absolute;inset:0 auto 0 0}.content-pack-info h2{color:var(--ink);margin:0;font-size:1.1rem;line-height:1.45}.content-pack-info>p:last-child{color:var(--ink-muted);margin:.35rem 0 0;font-size:.92rem}.primary-nav{border:1px solid var(--border);background:var(--surface-muted);border-radius:1rem;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem;padding:.42rem;display:grid}.primary-nav button{min-width:0;min-height:2.75rem;color:var(--ink-muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:.7rem;padding:.65rem .5rem;font-weight:750}.primary-nav button:hover:not(:disabled){color:var(--ink)}.primary-nav button[aria-pressed=true]{color:var(--accent-strong);background:var(--surface);box-shadow:0 .2rem .8rem #1937321a}.primary-nav button:disabled{cursor:wait;opacity:.62}.secondary-tools{justify-content:flex-end;margin-top:-.85rem;display:flex}.secondary-entry{min-height:2.75rem;color:var(--accent-strong);font:inherit;cursor:pointer;background:0 0;border:0;border-bottom:1px solid;padding:.45rem 0;font-weight:800}.secondary-entry:hover:not(:disabled){color:var(--ink)}.secondary-entry:disabled{cursor:wait;opacity:.62}.primary-nav button:focus-visible,.secondary-entry:focus-visible,.button:focus-visible,.text-button:focus-visible,[tabindex="-1"]:focus-visible{outline:3px solid var(--focus);outline-offset:3px}main{min-width:0}.today-panel,.learning-card,.completed-panel,.placeholder-panel,.library-panel,.loading-panel,.error-panel{border:1px solid var(--border);background:var(--surface);border-radius:1.3rem;min-width:0;padding:clamp(1.4rem,5vw,2.6rem);box-shadow:0 1.25rem 3.5rem #19373214}.today-panel h2,.completed-panel h2,.placeholder-panel h2,.library-panel h2,.loading-panel h2,.error-panel h2,.learning-card h2{overflow-wrap:anywhere;color:var(--ink);letter-spacing:-.04em;margin:0;font-size:clamp(1.75rem,5vw,2.55rem);line-height:1.16}.today-date{color:var(--ink-muted);font-variant-numeric:tabular-nums;margin:.65rem 0 0}.today-stats,.completion-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:.7rem;margin:1.75rem 0 0;display:grid}.today-stats>div,.completion-stats>div{border:1px solid var(--border);background:#f8f7f1;border-radius:.85rem;min-width:0;padding:1rem}.today-stats dt,.completion-stats dt{color:var(--ink-muted);font-size:.78rem;font-weight:700;line-height:1.35}.today-stats dd,.completion-stats dd{color:var(--ink);font-variant-numeric:tabular-nums;margin:.35rem 0 0;font-size:clamp(1.4rem,4vw,2rem);font-weight:800;line-height:1}.overview-actions,.completion-summary{margin-top:1.5rem}.overview-actions p,.completion-summary p,.placeholder-panel>p:last-child,.loading-panel>p:last-child,.error-panel p{max-width:40rem;color:var(--ink-muted);margin:0 0 1.15rem}.button{min-height:2.9rem;font:inherit;cursor:pointer;border:1px solid #0000;border-radius:.78rem;padding:.72rem 1.15rem;font-weight:800;line-height:1.35}.button:disabled{cursor:wait;opacity:.6}.button-primary{color:#fff;background:var(--accent-strong);box-shadow:0 .55rem 1.2rem #176b5b2e}.button-primary:hover:not(:disabled){background:#105b4d}.button-secondary{color:var(--ink);border-color:var(--border);background:#f8f7f1}.button-secondary:hover:not(:disabled){background:#f1f2eb;border-color:#91a79f}.learning-card{flex-direction:column;display:flex}.card-heading{border-bottom:1px solid var(--border);padding-bottom:1.4rem}.card-primary-name{flex-wrap:nowrap;align-items:baseline;gap:.25rem .5rem;min-width:0;display:flex}.card-primary-name h2{overflow-wrap:anywhere;min-width:0}.card-identity-label,.card-chinese-name span,.card-full-name span{color:var(--ink-muted);letter-spacing:.08em;font-size:.72rem;font-weight:800}.card-identity-label{flex:none}.card-chinese-name{overflow-wrap:anywhere;color:var(--accent-strong);margin:.6rem 0 0;font-size:1.08rem;font-weight:750}.card-full-name{overflow-wrap:anywhere;color:var(--ink-muted);margin:.65rem 0 0}.card-chinese-name span,.card-full-name span{margin-right:.4rem;display:inline}.recall-prompt{border-left:.25rem solid var(--focus);background:#fbf3e5;border-radius:.3rem .8rem .8rem .3rem;margin:1.4rem 0;padding:1.05rem 1.15rem}.recall-prompt p{color:#5d574b;margin:0}.revealed-content{gap:1rem;margin:1.35rem 0;display:grid}.revealed-content>section{border:1px solid var(--border);background:#fbfaf5;border-radius:.95rem;min-width:0;padding:1.2rem}.revealed-content h3{color:var(--ink);margin:0;font-size:1.2rem;line-height:1.35}.content-fields,.metadata-grid{margin:1rem 0 0}.content-fields>div+div,.metadata-grid>div+div{border-top:1px solid #dde2dc;margin-top:1rem;padding-top:1rem}.content-fields dt,.metadata-grid dt{color:var(--accent-strong);font-size:.78rem;font-weight:800}.content-fields dd,.metadata-grid dd{overflow-wrap:anywhere;color:var(--ink);margin:.25rem 0 0}.source-list{border-top:1px solid #dde2dc;margin-top:1.15rem;padding-top:1rem}.source-list h4{color:var(--ink);margin:0;font-size:.9rem}.source-list ul{color:var(--ink-muted);margin:.55rem 0 0;padding-left:1.2rem}.source-list li{overflow-wrap:anywhere}.source-list li+li{margin-top:.4rem}.operation-status{color:var(--accent-strong);margin:0 0 1rem;font-weight:700}.inline-error{color:#702f24;background:#fff2ee;border:1px solid #d5a095;border-radius:.8rem;margin-bottom:1rem;padding:1rem}.inline-error p{margin:0 0 .75rem}.rating-actions,.button-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;display:grid}.text-button{min-height:2.75rem;color:var(--ink-muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:.45rem;align-self:flex-start;margin-top:1rem;padding:.55rem 0;font-weight:750}.text-button:hover:not(:disabled){color:var(--accent-strong)}.text-button:disabled{cursor:wait;opacity:.6}.completion-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.completion-copy{border-top:1px solid var(--border);padding:1rem 0 0}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.today-search{border-top:1px solid var(--border);gap:.85rem;margin-top:1.65rem;padding-top:1.35rem;display:grid}.today-search label,.library-search label{color:var(--ink);font-weight:800}.today-search p{color:var(--ink-muted);margin:.25rem 0 0;font-size:.9rem}.library-intro{color:var(--ink-muted);margin:.75rem 0 0}.library-search{gap:.55rem;margin-top:1.5rem;display:grid}.search-controls{grid-template-columns:minmax(0,1fr) auto auto;gap:.65rem;display:grid}.today-search .search-controls{grid-template-columns:minmax(0,1fr) auto}.search-controls input{border:1px solid var(--border);min-width:0;min-height:2.9rem;color:var(--ink);font:inherit;background:#fff;border-radius:.78rem;padding:.65rem .8rem}.search-controls input:focus-visible,.category-filter button:focus-visible,.library-card-actions button:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.filter-block{border-top:1px solid var(--border);margin-top:1.55rem;padding-top:1.25rem}.filter-block h3{color:var(--ink);margin:0;font-size:1rem}.category-filter{flex-wrap:wrap;gap:.55rem;margin-top:.8rem;display:flex}.category-filter button{border:1px solid var(--border);min-height:2.75rem;color:var(--ink-muted);font:inherit;cursor:pointer;background:#f8f7f1;border-radius:999px;padding:.55rem .85rem;font-weight:750;line-height:1.25}.category-filter button[aria-pressed=true]{color:#fff;border-color:var(--accent-strong);background:var(--accent-strong)}.category-filter button:disabled{cursor:wait;opacity:.6}.filter-actions{flex-wrap:wrap;gap:1rem;display:flex}.filter-actions .text-button+.text-button{margin-left:0}.result-count{color:var(--accent-strong);font-variant-numeric:tabular-nums;margin:1.35rem 0 0;font-weight:800}.library-card-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:1rem 0 0;padding:0;list-style:none;display:grid}.library-card-item{border:1px solid var(--border);background:#fbfaf5;border-radius:1rem;flex-direction:column;min-width:0;height:100%;padding:1.15rem;display:flex}.library-card-item header{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.library-card-item h3{overflow-wrap:anywhere;color:var(--ink);margin:0;font-size:1.2rem;line-height:1.2}.learning-status{color:var(--accent-strong);white-space:nowrap;background:#eaf4ef;border-radius:999px;flex:none;padding:.3rem .55rem;font-size:.75rem;font-weight:800}.library-card-summary{overflow-wrap:anywhere;color:var(--ink-muted);margin:1rem 0}.library-card-meta{border-top:1px solid #dde2dc;gap:.65rem;margin:auto 0 0;padding-top:.9rem;display:grid}.library-card-meta>div{min-width:0}.library-card-meta dt{color:var(--accent-strong);font-size:.75rem;font-weight:800}.library-card-meta dd{overflow-wrap:anywhere;color:var(--ink);margin:.15rem 0 0;font-size:.9rem}.library-card-actions,.detail-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;margin-top:1rem;display:grid}.button-favorite{color:var(--accent-strong);background:#edf6f2;border-color:#9db8af}.button-favorite[aria-pressed=true]{color:#fff;border-color:var(--accent-strong);background:var(--accent-strong)}.compact-error{margin:1rem 0 0}.empty-state{background:#fbfaf5;border:1px dashed #aab7b1;border-radius:.95rem;margin-top:1rem;padding:1.2rem}.empty-state h3{color:var(--ink);margin:0;font-size:1.15rem}.empty-state p{color:var(--ink-muted);margin:.45rem 0 0}.empty-state-actions{flex-wrap:wrap;gap:.65rem;margin-top:1rem;display:flex}.detail-back{margin:0 0 1rem}.detail-learning-status{color:var(--ink-muted);margin:.8rem 0 0}.learning-favorite-action{margin:0 0 1rem;display:flex}.pwa-notices{gap:.7rem;display:grid}.activity-warning{overflow-wrap:anywhere;color:#702f24;background:#fff2ee;border:1px solid #d5a095;border-radius:.9rem;margin:0;padding:.9rem 1rem}.pwa-banner{border:1px solid var(--border);color:var(--ink);background:var(--surface);border-radius:.9rem;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.7rem 1rem;padding:.9rem 1rem;display:flex}.pwa-banner p{overflow-wrap:anywhere;flex:20rem;margin:0}.inline-error{overflow-wrap:anywhere}.pwa-banner .text-button{margin:0}.pwa-banner-offline{background:#fff6e7;border-color:#c8954e}.pwa-banner-ready{background:#edf7f2;border-color:#86ad9f}.pwa-banner-error{background:#fff2ee;border-color:#d5a095}.pwa-banner-update{background:#eff5fb;border-color:#8ca8c8}.pwa-action-row{flex-wrap:wrap;flex:0 auto;gap:.65rem;display:flex}.pwa-update-boundary{color:#75511e;font-weight:800}.pwa-panel-header{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.pwa-panel-close{flex:none;margin:0}.pwa-status-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem;margin-top:1.5rem;display:grid}.pwa-status-item{border:1px solid var(--border);background:#fbfaf5;border-radius:.9rem;min-width:0;padding:1.05rem}.pwa-status-item h3,.pwa-manual-instructions h3{color:var(--ink);margin:0;font-size:1.05rem}.pwa-state{overflow-wrap:anywhere;color:var(--ink-muted);margin:.5rem 0 0}.pwa-version-list{gap:.55rem;margin:.75rem 0 0;display:grid}.pwa-version-list>div{grid-template-columns:minmax(0,1fr) auto;gap:.75rem;display:grid}.pwa-version-list dt{color:var(--ink-muted)}.pwa-version-list dd{overflow-wrap:anywhere;color:var(--ink);font-variant-numeric:tabular-nums;text-align:right;margin:0;font-weight:800}.pwa-status-item .button,.pwa-status-item .pwa-action-row{margin-top:.8rem}.pwa-status-item .inline-error{margin:.8rem 0 0}.pwa-manual-instructions,.pwa-boundary-note{border-top:1px solid var(--border);margin-top:1.25rem;padding-top:1.25rem}.pwa-manual-instructions ul{color:var(--ink-muted);margin:.75rem 0 0;padding-left:1.3rem}.pwa-manual-instructions li+li{margin-top:.65rem}.pwa-boundary-note{color:var(--ink-muted);font-size:.92rem}.pwa-boundary-note p{margin:0}.pwa-boundary-note p+p{margin-top:.65rem}.local-usage-summary{border-top:1px solid var(--border);margin-top:1.4rem;padding-top:1.4rem}.local-usage-summary h3{color:var(--ink);margin:0;font-size:1.2rem}.local-summary-state{color:var(--accent-strong);margin:.65rem 0 0;font-weight:800}.local-summary-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin:1rem 0 0;display:grid}.local-summary-metrics>div{border:1px solid var(--border);background:#fbfaf5;border-radius:.85rem;min-width:0;padding:.9rem}.local-summary-metrics dt{color:var(--ink-muted);font-size:.82rem;font-weight:750}.local-summary-metrics dd{overflow-wrap:anywhere;color:var(--ink);font-variant-numeric:tabular-nums;margin:.35rem 0 0;font-size:1.2rem;font-weight:800}.local-summary-privacy{color:var(--ink-muted);margin-top:1rem;font-size:.92rem}.local-summary-privacy p,.local-summary-error{margin:0}.local-summary-privacy p+p{margin-top:.5rem}@media (width<=42rem){.today-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.library-card-list,.pwa-status-list{grid-template-columns:1fr}}@media (width<=30rem){.app-shell{gap:1.1rem;width:min(100% - 1.1rem,54rem);padding-top:1.35rem}.app-header h1{font-size:clamp(2.25rem,14vw,3.35rem)}.content-pack-info,.today-panel,.learning-card,.completed-panel,.placeholder-panel,.library-panel,.loading-panel,.error-panel{padding:1.15rem}.primary-nav{gap:.2rem}.primary-nav button{padding-inline:.25rem}.today-stats{gap:.5rem}.today-stats>div,.completion-stats>div,.revealed-content>section{padding:.9rem}.rating-actions,.button-row,.search-controls,.today-search .search-controls,.library-card-actions,.detail-actions,.pwa-action-row,.local-summary-metrics{grid-template-columns:1fr}.pwa-action-row{width:100%;display:grid}.button{width:100%}}
