:root{font-family:Avenir,Avenir Next,Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#17211b;background:#f4f0e6;font-synthesis:none;text-rendering:optimizeLegibility;--ink: #17211b;--forest: #314638;--moss: #6e8268;--paper: #f4f0e6;--cream: #fffdf7;--gold: #d69d45;--line: rgba(23, 33, 27, .13);--muted: #687269}*{box-sizing:border-box}html{min-height:100%;background:var(--ink)}body,#root{min-height:100%}body{margin:0;min-width:320px;min-height:100vh;min-height:100dvh;background:var(--paper)}button,textarea,input{font:inherit}button{-webkit-tap-highlight-color:transparent}button:focus-visible,textarea:focus-visible{outline:3px solid rgba(214,157,69,.5);outline-offset:2px}h1,h2,h3,p{margin-top:0}h1{margin-bottom:0;font-size:clamp(1.25rem,4vw,1.65rem);letter-spacing:-.04em}h2{margin-bottom:.5rem;font-size:clamp(1.45rem,5vw,2.15rem);letter-spacing:-.045em;line-height:1.05}h3{margin-bottom:.25rem;font-size:1rem}code{font-family:DM Mono,monospace;font-size:.85em;background:#17211b14;padding:.12rem .35rem;border-radius:4px}.app-shell{min-height:100vh;min-height:100dvh;padding-bottom:calc(76px + env(safe-area-inset-bottom,0px))}.app-header{min-height:82px;padding:calc(14px + env(safe-area-inset-top,0px)) calc(18px + env(safe-area-inset-right,0px)) 14px calc(18px + env(safe-area-inset-left,0px));display:flex;align-items:center;gap:12px;color:#fffdf7;background:var(--ink)}.brand-mark{width:44px;height:44px;flex:0 0 44px;border-radius:13px;display:grid;place-items:center;font-size:1.7rem;color:var(--ink);background:var(--gold);transform:rotate(-3deg)}.app-header .eyebrow{color:#aebaae;margin-bottom:2px}.position-count{margin-left:auto;padding:7px 10px;border:1px solid rgba(255,255,255,.14);border-radius:99px;color:#cbd4ca;font-size:.72rem;white-space:nowrap}main{width:min(1180px,100%);margin:0 auto;padding:22px calc(16px + env(safe-area-inset-right,0px)) 28px calc(16px + env(safe-area-inset-left,0px))}.eyebrow{margin-bottom:6px;color:var(--moss);font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.68rem;font-weight:500;text-transform:uppercase;letter-spacing:.13em}.muted{color:var(--muted)}.compact{font-size:.82rem;line-height:1.55}.panel{border:1px solid var(--line);border-radius:16px;background:#fffdf7cc;box-shadow:0 12px 30px #17211b0e}.button{border:0;border-radius:10px;min-height:44px;padding:0 17px;cursor:pointer;font-weight:700;transition:transform .15s ease,background .15s ease}.button:active{transform:scale(.98)}.button:disabled{opacity:.4;cursor:not-allowed}.button.primary{color:#fff;background:var(--forest)}.button.secondary{color:var(--ink);background:#e4dece}.button.ghost{color:var(--muted);background:transparent;border:1px solid var(--line)}.button.danger{color:#fff;background:#9b3d34}.compact-button{min-height:38px;padding:0 12px;font-size:.82rem}.text-button{padding:8px 2px;border:0;color:var(--forest);background:none;cursor:pointer;font-size:.82rem;font-weight:700}.library-layout{display:grid;gap:24px}.library-heading,.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:18px}.library-tools{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.position-list{display:grid;gap:10px}.position-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:stretch;overflow:hidden;border:1px solid var(--line);border-radius:14px;background:var(--cream);transition:border .15s ease,transform .15s ease,box-shadow .15s ease}.position-card-open{display:flex;min-width:0;min-height:68px;align-items:center;gap:12px;padding:14px 6px 14px 12px;border:0;color:inherit;cursor:pointer;background:transparent;text-align:left}.position-card-open:active{background:#6e826814}.position-card.selected{border-color:var(--moss);box-shadow:inset 3px 0 var(--moss)}.position-number{color:#9b9c92;font-family:DM Mono,monospace;font-size:.7rem}.position-copy{display:block;flex:1;min-width:0}.position-title-row{display:flex;align-items:center;gap:8px}.position-title{overflow:hidden;font-size:1rem;font-weight:700;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.position-copy>p{margin:0 0 7px;color:var(--muted);font-size:.75rem}.position-meta{display:flex;gap:12px;color:#8a8f88;font-family:DM Mono,monospace;font-size:.62rem}.due-pill{flex:0 0 auto;padding:3px 7px;border-radius:99px;color:var(--muted);background:#e9e6dc;font-size:.6rem;font-weight:700}.due-pill.is-due{color:#704916;background:#f5dba9}.line-editor{padding:18px}.fen-chip{padding:5px 8px;border-radius:6px;color:var(--moss);background:#e5e9df;font-family:DM Mono,monospace;font-size:.6rem}.move-editor-list{display:grid;gap:2px;margin-top:16px}.move-editor-row{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:9px;padding:10px 0;border-top:1px solid var(--line)}.move-index{color:#9a9e97;font-family:DM Mono,monospace;font-size:.65rem}.move-detail{min-width:0}.move-detail strong{font-family:DM Mono,monospace;font-size:.88rem}.move-detail small{display:block;margin-top:2px;overflow:hidden;color:var(--muted);font-size:.66rem;text-overflow:ellipsis;white-space:nowrap}.move-detail small.variation{color:#9a6d2a}.segmented{display:flex;padding:2px;border-radius:8px;background:#e8e4d9}.segmented button{min-height:30px;padding:0 8px;border:0;border-radius:6px;color:var(--muted);cursor:pointer;background:transparent;font-size:.66rem;font-weight:700}.segmented button.active{color:#fff;background:var(--forest);box-shadow:0 2px 5px #17211b2e}.practice-layout{display:grid;gap:16px}.practice-topbar{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-family:DM Mono,monospace;font-size:.68rem}.board-column{width:100%;max-width:620px;margin:0 auto}.board-frame{padding:7px;border-radius:12px;background:#243229}.feedback{display:flex;align-items:center;gap:12px;min-height:68px;margin:10px 2px 0;padding:11px 13px;border:1px solid var(--line);border-radius:12px;background:var(--cream)}.feedback.success{border-color:#94af91;background:#eef5e9}.feedback.error{border-color:#d6a49b;background:#fbefec}.feedback strong{font-size:.82rem}.feedback p{margin:2px 0 0;color:var(--muted);font-size:.72rem}.turn-dot{font-size:1.3rem}.practice-panel{padding:20px}.current-task{margin:18px 0;padding:14px;border-left:3px solid var(--gold);border-radius:0 9px 9px 0;background:#f3ebdc}.current-task p{margin:9px 0 0;font-size:.82rem;line-height:1.5}.mode-label{display:inline-block;padding:4px 7px;border-radius:5px;font-family:DM Mono,monospace;font-size:.58rem;font-weight:500;text-transform:uppercase;letter-spacing:.08em}.mode-label.trainable{color:#fff;background:var(--forest)}.mode-label.demo{color:#6d4a15;background:#ebce95}.variation-note{color:#8c6121}.practice-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:20px}.line-preview{display:flex;flex-wrap:wrap;gap:6px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}.line-preview span{padding:4px 7px;border-radius:5px;color:var(--muted);background:#ece8dc;font-family:DM Mono,monospace;font-size:.68rem}.line-preview span.played{color:#fff;background:var(--moss)}.line-preview span.current{box-shadow:inset 0 0 0 2px var(--gold)}.schedule-note{margin:16px 0 0;color:#969b94;font-size:.68rem}.review-box{margin-top:22px}.review-box p{color:var(--muted);font-size:.78rem}.grade-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.grade{min-height:46px;border:0;border-radius:9px;cursor:pointer;text-transform:capitalize;font-size:.72rem;font-weight:800}.grade.again{color:#8d3b32;background:#f2d3cf}.grade.hard{color:#805f22;background:#f1dfb9}.grade.good{color:#315a38;background:#d6e8d3}.grade.easy{color:#2a5361;background:#cfe5ea}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:calc(20px + env(safe-area-inset-top,0px)) calc(20px + env(safe-area-inset-right,0px)) calc(20px + env(safe-area-inset-bottom,0px)) calc(20px + env(safe-area-inset-left,0px));background:#0d1410b8;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.promotion-dialog{width:min(360px,100%);padding:22px;border-radius:16px;background:var(--cream);box-shadow:0 24px 70px #00000047}.promotion-dialog p{margin-bottom:13px;font-weight:700;text-align:center}.promotion-options{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.promotion-options button{aspect-ratio:1;border:1px solid var(--line);border-radius:10px;cursor:pointer;color:var(--ink);background:#eee8d8;font-size:2.25rem}.import-layout{max-width:900px;margin:0 auto}.import-hero{margin:10px 0 24px}.import-hero>p:last-child{max-width:680px;color:var(--muted);line-height:1.65}.import-grid{display:grid;gap:12px}.drop-card,.paste-card{padding:22px}.drop-card{text-align:center}.drop-icon{width:54px;height:54px;display:grid;place-items:center;margin:0 auto 13px;border-radius:50%;color:var(--forest);background:#e2e8df;font-size:1.5rem}.drop-card p{color:var(--muted);font-size:.78rem;line-height:1.5}.paste-card{display:flex;flex-direction:column}.paste-card label{margin-bottom:9px;font-size:.78rem;font-weight:800}.paste-card textarea{min-height:150px;resize:vertical;margin-bottom:10px;padding:12px;border:1px solid var(--line);border-radius:9px;color:var(--ink);background:#f8f5ed;font-family:DM Mono,monospace;font-size:.7rem;line-height:1.5}.import-status{margin-top:12px;padding:12px 14px;border-radius:9px;color:#28563a;background:#dbe9d9;font-size:.8rem}.import-loading{display:flex;align-items:center;gap:10px;margin-top:12px;padding:12px;border-radius:9px;color:var(--forest);background:#e8e4d9;font-size:.75rem;font-weight:700}.import-loading span{width:16px;height:16px;flex:0 0 16px;border:2px solid #b7b9ad;border-top-color:var(--forest);border-radius:50%;animation:import-spin .8s linear infinite}.import-preview{margin-top:16px;padding:18px}.import-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;overflow:hidden;margin:12px 0;border:1px solid var(--line);border-radius:10px;background:var(--line)}.import-summary>div{min-width:0;padding:10px;background:var(--cream)}.import-summary dt{color:var(--muted);font-size:.61rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.import-summary dd{overflow:hidden;margin:3px 0 0;color:var(--forest);font-size:.78rem;font-weight:800;text-overflow:ellipsis}.import-warning{margin:12px 0;padding:11px 12px;border-left:3px solid var(--gold);color:#6e6047;background:#f3ebdc;font-size:.72rem;line-height:1.5}.import-confirm-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}.import-confirm-actions.three{grid-template-columns:1fr}.restore-target{display:grid;gap:6px;color:var(--muted);font-size:.68rem;font-weight:800}.restore-target select{min-height:42px;padding:0 9px;border:1px solid var(--line);border-radius:8px;color:var(--ink);background:var(--cream)}@keyframes import-spin{to{transform:rotate(360deg)}}.ios-tip{margin-top:20px;padding:14px 16px;border:1px dashed #c6aa74;border-radius:12px;color:#695b42;font-size:.75rem;line-height:1.55}.ios-tip span{display:block;margin-bottom:3px;color:#8b611e;font-family:DM Mono,monospace;font-size:.6rem;font-weight:500;text-transform:uppercase;letter-spacing:.09em}.bottom-nav{position:fixed;z-index:10;right:0;bottom:0;left:0;height:calc(64px + env(safe-area-inset-bottom,0px));display:grid;grid-template-columns:repeat(3,1fr);padding:4px calc(16px + env(safe-area-inset-right,0px)) env(safe-area-inset-bottom,0px) calc(16px + env(safe-area-inset-left,0px));border-top:1px solid rgba(255,255,255,.08);background:#17211bf5;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.bottom-nav button{border:0;color:#96a197;cursor:pointer;background:transparent;font-size:.62rem;font-weight:700}.bottom-nav button span{display:block;margin-bottom:2px;font-size:1rem}.bottom-nav button.active{color:#f4cf8f}.empty-state{max-width:520px;margin:8vh auto;padding:34px 24px;text-align:center}.empty-state p{color:var(--muted);line-height:1.6}.empty-icon{display:block;margin-bottom:10px;color:var(--gold);font-size:3.4rem}.loading-screen{min-height:100vh;min-height:100dvh;display:grid;place-content:center;padding:calc(20px + env(safe-area-inset-top,0px)) calc(20px + env(safe-area-inset-right,0px)) calc(20px + env(safe-area-inset-bottom,0px)) calc(20px + env(safe-area-inset-left,0px));text-align:center;color:#dbe2d8;background:var(--ink)}.loading-screen span{color:var(--gold);font-size:3rem;animation:pulse 1.2s ease-in-out infinite alternate}.loading-screen p{margin-top:10px;font-size:.78rem}@keyframes pulse{to{transform:translateY(-4px);opacity:.65}}.book-grid{display:grid;gap:14px}.card-shell{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center}.card-shell>.delete-menu{position:relative;z-index:3;grid-column:2;grid-row:1;align-self:center;margin-right:7px}.card-shell>.book-card,.card-shell>.chapter-card{grid-column:1 / -1;grid-row:1}.card-shell .book-card,.card-shell .chapter-card{padding-right:52px}.book-card{width:100%;display:grid;grid-template-columns:74px minmax(0,1fr) 20px;align-items:center;gap:15px;padding:15px;border:1px solid var(--line);border-radius:16px;color:var(--ink);cursor:pointer;text-align:left;background:var(--cream);box-shadow:0 10px 24px #17211b0e;transition:transform .15s ease,border-color .15s ease}.book-card:active{transform:scale(.99)}.book-card:hover{border-color:var(--moss)}.book-cover{aspect-ratio:3 / 4;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:12px 7px 8px;border-radius:6px 10px 10px 6px;color:#f5e6c4;background:var(--forest);box-shadow:inset 4px 0 #ffffff14,3px 5px 10px #17211b2e}.book-cover span{font-size:1.6rem}.book-cover small{font-family:ui-monospace,monospace;font-size:.55rem;letter-spacing:.12em}.book-copy{min-width:0}.book-copy h3{margin-bottom:7px;font-size:1.02rem;line-height:1.25}.book-copy>p:not(.eyebrow){margin-bottom:9px;color:var(--muted);font-size:.7rem}.book-copy>small{display:block;margin-top:4px;color:#8b918a;font-size:.6rem}.card-arrow{color:#9da29b;font-size:1.5rem}.progress-track{height:5px;overflow:hidden;border-radius:99px;background:#e3dfd3}.progress-track span{height:100%;display:block;border-radius:inherit;background:var(--gold)}.overview-progress{display:grid;gap:11px;margin:0 0 18px;padding:16px}.overview-progress>div{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 14px}.overview-progress p{width:100%;margin:0}.overview-progress strong{color:var(--forest);font-size:1.05rem}.overview-progress span{color:var(--muted);font-size:.7rem}.breadcrumb{margin:-8px 0 14px}.editable-title{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.editable-title h2{max-width:850px}.rename-form{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:12px}.rename-form input{min-width:min(100%,360px);flex:1;min-height:42px;padding:0 11px;border:1px solid var(--moss);border-radius:9px;color:var(--ink);background:var(--cream);font-weight:700}.book-source{margin:0 0 22px;color:var(--muted);font-size:.72rem}.chapter-list{display:grid;gap:10px}.chapter-card{width:100%;display:grid;grid-template-columns:35px minmax(0,1fr) auto 14px;align-items:center;gap:12px;padding:15px;color:var(--ink);cursor:pointer;text-align:left}.chapter-card h3{margin-bottom:5px;line-height:1.3}.chapter-card p{margin-bottom:8px;color:var(--muted);font-size:.7rem}.chapter-ordinal{color:#a0a39d;font-family:ui-monospace,monospace;font-size:.65rem}.chapter-progress{display:grid;gap:2px;color:var(--forest);font-family:ui-monospace,monospace;text-align:right}.chapter-progress strong{font-size:.7rem}.chapter-progress small{color:var(--muted);font-size:.55rem;white-space:nowrap}.chapter-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:14px 0 8px}.chapter-actions.three{grid-template-columns:1fr}.session-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:-8px 0 22px}.queue-note{margin:8px 0 20px;color:var(--muted);font-size:.72rem}.entry-groups{display:grid;gap:22px;margin-top:22px}.section-label{margin:0;color:var(--moss);font-family:ui-monospace,monospace;font-size:.66rem;text-transform:uppercase;letter-spacing:.12em}.section-progress{display:grid;grid-template-columns:minmax(0,1fr) minmax(150px,32%);align-items:end;gap:12px;margin:0 5px 9px}.section-progress>div{display:grid;gap:4px}.section-progress>div>span{color:var(--muted);font-family:ui-monospace,monospace;font-size:.58rem;text-align:right}.entry-badge{display:inline-block;flex:0 0 auto;padding:3px 7px;border-radius:99px;color:#6f6f68;background:#ebe7dc;font-size:.56rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em}.entry-badge.status-new{color:#5f665f;background:#e6e6df}.entry-badge.status-learning{color:#2e5735;background:#d9ead7}.entry-badge.status-review{color:#7a4d12;background:#f4d79f}.entry-badge.status-mastered{color:#f8f2e5;background:var(--forest)}.entry-badge.tragicomedy{color:#7b3d32;background:#f2d8d1}.entry-badge.extra{color:#3b5870;background:#dbe7ef}.entry-badge.reading{color:#64532e;background:#eee1c5}.entry-badge.position{color:#53626b;background:#dfe7e9}.entry-actions{position:relative;z-index:2;display:flex;flex-wrap:nowrap;align-items:center;padding:8px 7px 8px 0}@media (hover: hover){.position-card:has(.position-card-open:hover){border-color:#31463857;box-shadow:0 7px 18px #17211b14;transform:translateY(-1px)}}.editor-wrap{margin-top:25px}.chapter-select{display:grid;gap:5px;margin:14px 0;color:var(--muted);font-size:.68rem;font-weight:700}.chapter-select select{min-height:42px;padding:0 9px;border:1px solid var(--line);border-radius:8px;color:var(--ink);background:#f8f5ed}.reading-note{margin-top:16px;padding:14px;border:1px dashed #c8ad79;border-radius:10px;color:#6e6047;font-size:.76rem;line-height:1.55}.reader-layout{display:grid;gap:16px}.reading-page{min-height:380px;padding:30px 24px;white-space:pre-line}.reading-page p{color:#3f493f;font-family:Georgia,Times New Roman,serif;font-size:.95rem;line-height:1.75}.reading-glyph{display:block;margin-bottom:18px;color:var(--gold);font-family:Georgia,serif;font-size:2rem}.reader-controls{display:grid;grid-template-columns:.8fr 1.2fr;gap:8px;margin-top:22px}.error-copy{color:#983f35;font-size:.75rem;line-height:1.5}.resume-button{margin:0 0 20px}.textbook-shell{display:grid;gap:14px}.textbook-header{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:14px;padding-bottom:4px}.textbook-header>div{min-width:0;text-align:center}.textbook-header p{margin:0;overflow:hidden;color:var(--muted);font-size:.66rem;text-overflow:ellipsis;white-space:nowrap}.textbook-header strong{display:block;overflow:hidden;font-size:.78rem;text-overflow:ellipsis;white-space:nowrap}.textbook-header>span{color:var(--muted);font-family:ui-monospace,monospace;font-size:.62rem;white-space:nowrap}.textbook-board-area{width:100%;max-width:680px;margin:0 auto}.board-frame{touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.board-toolbar{display:grid;grid-template-columns:1fr 1fr auto;gap:7px;margin-top:9px}.board-toolbar button,.move-navigation button{min-height:40px;padding:0 9px;border:1px solid var(--line);border-radius:8px;color:var(--forest);cursor:pointer;background:#ece8dc;font-size:.7rem;font-weight:700}.board-toolbar button:disabled,.move-navigation button:disabled{opacity:.36;cursor:not-allowed}.textbook-panel{min-width:0;padding:19px}.reading-heading{position:relative;padding-right:88px}.reading-heading h2{margin-bottom:8px}.reading-heading>span{position:absolute;top:2px;right:0;padding:4px 7px;border-radius:5px;color:var(--forest);background:#e1e7de;font-size:.58rem;font-weight:800;text-transform:uppercase}.delete-menu{position:relative;flex:0 0 auto}.more-button{width:44px;height:44px;border:0;border-radius:10px;color:var(--muted);cursor:pointer;background:#f4f0e6eb;font-size:1.3rem;font-weight:800;line-height:1}.more-button:disabled{opacity:.45;cursor:not-allowed}.menu-popover{position:absolute;z-index:12;top:calc(100% + 3px);right:0;min-width:154px;padding:5px;border:1px solid var(--line);border-radius:10px;background:var(--cream);box-shadow:0 14px 35px #17211b33}.portal-menu{z-index:1000;width:min(230px,calc(100vw - 16px));max-height:calc(100vh - 16px);overflow-y:auto;overscroll-behavior:contain}.menu-label{padding:8px 11px 5px;color:var(--muted);font-family:ui-monospace,monospace;font-size:.6rem;font-weight:800;text-transform:uppercase;letter-spacing:.09em}.danger-menu-item{width:100%;min-height:42px;padding:0 11px;border:0;border-radius:7px;color:#91382f;cursor:pointer;text-align:left;background:transparent;font-size:.75rem;font-weight:800}.menu-item{width:100%;min-height:42px;display:grid;grid-template-columns:18px 1fr;align-items:center;gap:3px;padding:0 11px;border:0;border-radius:7px;color:var(--forest);cursor:pointer;text-align:left;background:transparent;font-size:.75rem;font-weight:800}.menu-item:hover{background:#e7ebdf}.menu-item:focus-visible,.danger-menu-item:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}.menu-item:disabled{opacity:.38;cursor:not-allowed}.menu-check{color:var(--moss);font-weight:900;text-align:center}.menu-divider{height:1px;margin:5px;background:var(--line)}.danger-menu-item:hover{background:#f5e2df}.confirm-dialog{width:min(430px,100%);padding:22px;border-radius:16px;background:var(--cream);box-shadow:0 24px 70px #0000004d}.confirm-dialog h2{font-size:1.35rem}.confirm-dialog>p{color:var(--muted);font-size:.82rem;line-height:1.6}.confirm-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:20px}.toast{position:fixed;z-index:30;top:calc(10px + env(safe-area-inset-top,0px));right:calc(12px + env(safe-area-inset-right,0px));left:calc(12px + env(safe-area-inset-left,0px));display:flex;max-width:460px;min-height:46px;align-items:center;gap:12px;margin-left:auto;padding:10px 9px 10px 14px;border-radius:10px;color:#fff;background:var(--forest);box-shadow:0 12px 34px #17211b40;font-size:.78rem;opacity:1;transform:translateY(0);transition:opacity .18s ease,transform .18s ease}.toast>span{flex:1;min-width:0;line-height:1.4}.toast.info{background:#3b5870}.toast.warning{background:#8b611e}.toast.error{background:#9b3d34}.toast.fade-out{opacity:0;transform:translateY(-5px);pointer-events:none}.toast-dismiss{width:34px;height:34px;flex:0 0 34px;padding:0;border:0;border-radius:8px;color:#fff;cursor:pointer;background:#ffffff21;font-size:1.1rem;line-height:1}.toast-dismiss:hover{background:#ffffff38}.pwa-update-notice{position:fixed;z-index:25;right:calc(12px + env(safe-area-inset-right,0px));bottom:calc(70px + env(safe-area-inset-bottom,0px));left:calc(12px + env(safe-area-inset-left,0px));display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;max-width:720px;margin:0 auto;padding:12px 12px 12px 15px;border:1px solid rgba(255,255,255,.12);border-radius:13px;color:#fff;background:#17211bfa;box-shadow:0 14px 40px #0d14104d}.pwa-update-notice>div{min-width:0}.pwa-update-notice strong,.pwa-update-notice span{display:block}.pwa-update-notice strong{margin-bottom:2px;font-size:.78rem}.pwa-update-notice span{color:#cbd4ca;font-size:.68rem;line-height:1.4}.pwa-update-notice .button{color:var(--ink);background:var(--gold)}.pwa-update-notice .text-button{color:#e6ece4}.instruction-box{margin:13px 0;padding:12px 14px;border-left:3px solid var(--gold);background:#f3ebdc}.instruction-box p{margin:0;font-size:.78rem;line-height:1.55}.instruction-box p+p{margin-top:7px}.training-message{margin:12px 0;padding:9px 11px;border-radius:8px;color:#604f32;background:#eee4cf;font-size:.72rem;line-height:1.45}.training-message.success{color:#315a38;background:#dcebd9}.training-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:13px}.commentary-area{max-height:230px;overflow-y:auto;margin:12px 0;padding-right:5px;color:#3e473f;font-family:Georgia,Times New Roman,serif;font-size:.84rem;line-height:1.68}.commentary-area p{margin:0 0 10px}.notation-heading{display:flex;align-items:center;justify-content:space-between;padding-top:12px;border-top:1px solid var(--line)}.notation-heading h3{margin:0;font-size:.78rem}.notation-panel{max-height:190px;overflow-y:auto;margin:9px 0 12px;padding:10px 11px;border-radius:8px;background:#f0ece2}.notation-mainline{color:#27332b;font-family:Georgia,Times New Roman,serif;font-size:.88rem;line-height:1.9;-webkit-user-select:text;user-select:text}.notation-unit{display:inline}.move-number{margin-right:3px;color:#848a83;font-family:ui-monospace,monospace;font-size:.64rem}.notation-move{margin-right:8px;padding:1px 2px;border-radius:3px;cursor:default}.notation-move[role=button]{cursor:pointer}.notation-move.completed{color:#526457}.notation-move.current{background:#e8c98f;box-shadow:0 0 0 2px #e8c98f}.notation-variation{display:inline-block;margin:0 8px 3px 0;padding-left:9px;color:#776343;font-size:.78rem}.notation-variation .notation-move{margin-right:6px}.notation-empty{color:var(--muted);font-size:.72rem}.move-navigation{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}.move-navigation.five{grid-template-columns:repeat(5,1fr)}.completion-strip{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0;padding:10px;border:1px solid #a8bea3;border-radius:10px;background:#e5efe1}.completion-strip>strong{margin-right:auto;color:#315a38;font-size:.72rem;letter-spacing:.04em}.engine-panel{margin:12px 0;padding:13px;border:1px solid #aeb9ab;border-radius:10px;background:#eef1eb}.engine-summary{display:flex;align-items:center;gap:11px}.engine-summary>div{display:grid;gap:2px}.engine-summary strong{font-size:.76rem}.engine-summary small{color:var(--muted);font-size:.66rem}.engine-eval{min-width:58px;padding:8px 6px;border-radius:7px;color:#fff;background:var(--forest);font-family:ui-monospace,monospace;font-size:1rem;font-weight:800;text-align:center}.engine-pv{margin:11px 0;color:#39443c;font-family:Georgia,serif;font-size:.76rem;line-height:1.6}.engine-pv b{margin-right:5px;color:var(--moss);font-family:ui-monospace,monospace;font-size:.62rem}.engine-actions{display:grid;grid-template-columns:.7fr .7fr 1.4fr;gap:6px}.engine-actions button{min-height:38px;border:1px solid var(--line);border-radius:7px;color:var(--forest);cursor:pointer;background:var(--cream);font-size:.68rem;font-weight:800}.engine-note{margin:9px 0 0;color:var(--muted);font-size:.63rem}.pending-advance{margin-top:10px;padding:9px;border-radius:7px;color:#315a38;background:#dcebd9;font-size:.7rem}.reading-complete-button{width:100%;margin-top:10px}.session-summary{margin-bottom:16px;padding:18px;border:1px solid #a8bea3;border-radius:12px;background:#e5efe1}.session-summary h2{margin-bottom:7px;color:var(--forest)}.session-summary>p:not(.eyebrow){color:var(--muted);font-size:.76rem;line-height:1.5}.session-summary-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:9px}.session-summary .button{width:100%}.pending-advance button{border:0;color:#315a38;cursor:pointer;background:transparent;font-weight:800;text-decoration:underline}.study-settings{margin-top:14px;padding-top:10px;border-top:1px solid var(--line);color:var(--muted);font-size:.68rem}.study-settings summary{cursor:pointer;font-weight:800}.study-settings label{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:9px}.study-settings input[type=number]{width:62px;min-height:32px;padding:0 6px;border:1px solid var(--line);border-radius:6px}.inference-card{margin:12px 0;padding:12px;border:1px solid #b7c8b4;border-radius:9px;background:#edf3e9}.inference-card.review{border-color:#d3b475;background:#f5ead5}.inference-card>div{display:flex;align-items:center;justify-content:space-between;gap:8px}.inference-card strong{text-transform:capitalize}.inference-card span{color:var(--muted);font-size:.62rem;text-transform:uppercase}.inference-card p{margin:7px 0 2px;color:#536057;font-size:.7rem;line-height:1.45}.editor-fieldset{margin:13px 0;padding:10px;border:1px solid var(--line);border-radius:9px}.editor-fieldset legend{padding:0 5px;color:var(--muted);font-size:.68rem;font-weight:800}.editor-fieldset small{display:block;margin-top:6px;color:var(--muted);font-size:.62rem;text-transform:capitalize}.color-choice button{flex:1}.solution-toggle{min-height:34px;padding:0 8px;border:1px solid var(--line);border-radius:7px;color:var(--muted);cursor:pointer;background:#ece8dd;font-size:.64rem;font-weight:800}.solution-toggle.active{color:#fff;border-color:var(--forest);background:var(--forest)}.alternative-form{display:grid;gap:7px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}.alternative-form h3{margin:0}.alternative-form input,.alternative-form select{min-height:39px;padding:0 9px;border:1px solid var(--line);border-radius:7px;background:#f8f5ed;font-size:.72rem}@media (min-width: 760px){.app-shell{padding-bottom:0}.app-header{padding-right:max(28px,calc((100vw - 1140px)/2),calc(18px + env(safe-area-inset-right,0px)));padding-left:max(28px,calc((100vw - 1140px)/2),calc(18px + env(safe-area-inset-left,0px)))}main{padding:38px max(24px,env(safe-area-inset-right,0px)) 48px max(24px,env(safe-area-inset-left,0px))}.bottom-nav{position:static;width:320px;height:58px;margin:0 auto 26px;border:0;border-radius:18px;padding:3px 10px}.library-layout{grid-template-columns:minmax(340px,.85fr) minmax(400px,1.15fr);align-items:start}.line-editor{position:sticky;top:22px;max-height:calc(100vh - 44px);overflow:auto}.import-grid{grid-template-columns:1fr 1fr}.practice-layout,.reader-layout{grid-template-columns:minmax(450px,620px) minmax(260px,340px);align-items:start;justify-content:center;column-gap:28px}.textbook-shell{grid-template-columns:minmax(500px,1.2fr) minmax(330px,.8fr);align-items:start;column-gap:24px}.textbook-header{grid-column:1 / -1}.textbook-panel{position:sticky;top:16px;max-height:calc(100vh - 32px);overflow-y:auto}.toast{top:auto;bottom:18px;left:auto;width:min(460px,calc(100vw - 32px))}.pwa-update-notice{right:18px;bottom:18px;left:auto;width:min(720px,calc(100vw - 36px))}.practice-topbar{grid-column:1 / -1}.practice-panel{position:sticky;top:22px}.book-grid,.chapter-list{grid-template-columns:repeat(2,minmax(0,1fr))}.chapter-actions.three,.import-confirm-actions.three{grid-template-columns:repeat(3,1fr)}}@media (max-width: 560px){.pwa-update-notice{grid-template-columns:minmax(0,1fr) auto}.pwa-update-notice>div{grid-column:1 / -1}.section-progress{grid-template-columns:1fr;gap:5px}.section-progress>div>span{text-align:left}}@media (display-mode: standalone){.position-count{display:none}}
