:root{font-family:Pretendard,Noto Sans KR,system-ui,-apple-system,Segoe UI,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html,body,#root{margin:0;width:100%;min-height:100%}body{min-width:320px;background:#f5f5f7;color:#1d1d1f}:root{--bg: #F4F4F6;--surface: #FFFFFF;--surface-2: rgba(255,255,255,.88);--nav-bg: rgba(244,244,246,.82);--border: rgba(0,0,0,.08);--border-mid: rgba(0,0,0,.14);--border-focus: rgba(109,68,255,.42);--ink-1: #0A0A0F;--ink-2: #636278;--ink-3: #A8A5B8;--accent: #6D44FF;--accent-h: #5B35E8;--accent-dim: rgba(109,68,255,.1);--blue: #2563EB;--blue-bg: rgba(37,99,235,.08);--green: #16A34A;--green-bg: rgba(22,163,74,.08);--amber: #B45309;--amber-bg: rgba(180,83,9,.09);--red: #DC2626;--red-bg: rgba(220,38,38,.08);--neutral: #71717A;--neutral-bg:rgba(113,113,122,.09);--blue-bd: rgba(37,99,235,.18);--green-bd: rgba(22,163,74,.2);--amber-bd: rgba(180,83,9,.2);--red-bd: rgba(220,38,38,.18);--sh0: 0 1px 3px rgba(0,0,0,.06);--sh1: 0 2px 10px rgba(0,0,0,.07), 0 1px 3px rgba(0,0,0,.04);--sh2: 0 8px 28px rgba(0,0,0,.09), 0 2px 8px rgba(0,0,0,.04);--sh3: 0 20px 52px rgba(0,0,0,.12), 0 6px 16px rgba(0,0,0,.05);--sh4: 0 32px 80px rgba(0,0,0,.16), 0 8px 24px rgba(0,0,0,.07);--r-s: 6px;--r-m: 10px;--r-l: 14px;--r-xl: 18px;--r-2xl:24px;--pill: 9999px;--nav-h: 54px;--rail-w: 296px;--px: 24px;color-scheme:light}:root[data-theme=dark]{--bg: #0C0C0F;--surface: #18181C;--surface-2: rgba(28,28,34,.9);--nav-bg: rgba(12,12,15,.84);--border: rgba(255,255,255,.07);--border-mid: rgba(255,255,255,.12);--border-focus: rgba(160,130,255,.46);--ink-1: #F0EFFF;--ink-2: #9896AB;--ink-3: #5E5C70;--accent: #9D80FF;--accent-h: #B09DFF;--accent-dim: rgba(157,128,255,.14);--blue: #60A5FA;--blue-bg: rgba(96,165,250,.12);--green: #4ADE80;--green-bg: rgba(74,222,128,.11);--amber: #FBB040;--amber-bg: rgba(251,176,64,.12);--red: #F87171;--red-bg: rgba(248,113,113,.12);--neutral: #A0A0AA;--neutral-bg:rgba(160,160,170,.12);--blue-bd: rgba(96,165,250,.24);--green-bd: rgba(74,222,128,.22);--amber-bd: rgba(251,176,64,.24);--red-bd: rgba(248,113,113,.22);--sh0: 0 1px 3px rgba(0,0,0,.32);--sh1: 0 2px 10px rgba(0,0,0,.44), 0 1px 3px rgba(0,0,0,.26);--sh2: 0 8px 28px rgba(0,0,0,.52), 0 2px 8px rgba(0,0,0,.3);--sh3: 0 20px 52px rgba(0,0,0,.6), 0 6px 16px rgba(0,0,0,.36);--sh4: 0 32px 80px rgba(0,0,0,.68), 0 8px 24px rgba(0,0,0,.42);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink-1);font-family:Pretendard,Noto Sans KR,system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased}.page,.app-nav,.question-card,.passage-card,.practice-sidebar,.answer-input,.answer-review-box,.result-card,.answer-box,.btn,.list-item,.pub-btn{transition:background-color .24s ease,color .2s ease,border-color .24s ease,box-shadow .24s ease}.page{min-height:100vh;background:var(--bg);padding-bottom:64px}.app-nav{position:sticky;top:0;z-index:50;height:var(--nav-h);display:flex;align-items:center;gap:12px;padding:0 var(--px);background:var(--nav-bg);backdrop-filter:saturate(160%) blur(20px);-webkit-backdrop-filter:saturate(160%) blur(20px);border-bottom:1px solid var(--border);transform:translateY(0);transition:transform .28s cubic-bezier(.32,.72,0,1),background-color .24s ease,border-color .24s ease}.app-nav.is-hidden{transform:translateY(-100%);pointer-events:none}.nav-start{flex-shrink:0}.site-logo{height:26px;width:auto;display:block;flex-shrink:0;color:var(--ink-1)}.nav-home-btn{background:none;border:none;padding:0;margin:0;font-family:inherit;font-size:17px;font-weight:700;letter-spacing:-.04em;color:var(--ink-1);cursor:pointer;line-height:1;transition:opacity .15s ease;display:flex;align-items:center;gap:7px}.nav-home-btn:hover{opacity:.6}.nav-center{flex:1;display:flex;align-items:center;gap:6px;justify-content:center;min-width:0;overflow:hidden}.nav-passage-title{font-size:13.5px;font-weight:600;color:var(--ink-1);letter-spacing:-.015em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}.nav-dot{width:3px;height:3px;border-radius:50%;background:var(--ink-3);flex-shrink:0}.nav-pos{font-size:12.5px;font-weight:500;color:var(--ink-2);white-space:nowrap}.nav-end{flex-shrink:0;display:flex;align-items:center;gap:8px}.nav-stat{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border:1px solid var(--border-mid);border-radius:var(--pill);background:var(--surface);font-size:12px;font-weight:600;color:var(--ink-1);letter-spacing:-.01em;box-shadow:var(--sh0);white-space:nowrap;transition:background-color .24s ease,border-color .24s ease}.nav-stat-sep{color:var(--ink-3);font-weight:400}.theme-btn{height:32px;padding:0 11px;border:1px solid var(--border-mid);border-radius:var(--r-m);background:var(--surface);color:var(--ink-2);font-family:inherit;font-size:12.5px;font-weight:500;display:inline-flex;align-items:center;gap:5px;cursor:pointer;box-shadow:var(--sh0);white-space:nowrap;transition:color .15s ease,border-color .15s ease,box-shadow .15s ease,background-color .24s ease}.theme-btn:hover{color:var(--ink-1);box-shadow:var(--sh1);border-color:var(--border-mid)}.theme-icon{font-size:13px;line-height:1}.theme-label{font-size:12px}.nav-menu-btn{width:34px;height:34px;padding:0;border:1px solid var(--border-mid);border-radius:var(--r-m);background:var(--surface);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:4.5px;cursor:pointer;box-shadow:var(--sh0);position:relative;transition:background-color .24s ease,border-color .24s ease,transform .15s ease,box-shadow .15s ease;flex-shrink:0}.nav-menu-btn:hover{transform:scale(1.05);box-shadow:var(--sh1)}.hb-line{display:block;width:14px;height:1.5px;border-radius:var(--pill);background:var(--ink-1);transform-origin:center;position:absolute}.hb-line:nth-of-type(1){transform:translateY(-5px)}.hb-line:nth-of-type(2){transform:translateY(0)}.hb-line:nth-of-type(3){transform:translateY(5px)}.nav-menu-btn.is-ready .hb-line{transition:transform .26s cubic-bezier(.32,.72,0,1),opacity .18s ease}.nav-menu-btn.is-open .hb-line:nth-of-type(1){transform:translateY(0) rotate(45deg)}.nav-menu-btn.is-open .hb-line:nth-of-type(2){opacity:0;transform:scaleX(.1)}.nav-menu-btn.is-open .hb-line:nth-of-type(3){transform:translateY(0) rotate(-45deg)}.home-view{max-width:1120px;margin:0 auto;padding:36px var(--px) 0;display:flex;flex-direction:column;gap:24px;animation:fadeUp .36s cubic-bezier(.32,.72,0,1) both}.home-header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;flex-wrap:wrap}.home-header-text{flex:1;min-width:0}.home-title{margin:0;font-size:clamp(22px,3.5vw,34px);font-weight:700;letter-spacing:-.03em;line-height:1.15;color:var(--ink-1)}.home-subtitle{margin:8px 0 0;font-size:14.5px;line-height:1.6;color:var(--ink-2)}.pub-filter{display:flex;flex-wrap:wrap;gap:6px;align-items:flex-start;flex-shrink:0}.pub-btn{height:32px;padding:0 14px;border:1px solid var(--border-mid);border-radius:var(--pill);background:var(--surface);color:var(--ink-2);font-family:inherit;font-size:13px;font-weight:500;cursor:pointer;box-shadow:var(--sh0);transition:all .15s ease}.pub-btn:hover{color:var(--ink-1);box-shadow:var(--sh1);transform:translateY(-1px)}.pub-btn.is-active{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 2px 10px #6d44ff47}.passage-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:14px;animation:fadeUp .28s cubic-bezier(.32,.72,0,1) both}.passage-card{display:flex;flex-direction:column;gap:10px;padding:20px;min-height:190px;border:1px solid var(--border);border-radius:var(--r-xl);background:var(--surface);box-shadow:var(--sh0);color:var(--ink-1);text-align:left;cursor:pointer;position:relative;overflow:hidden;transition:transform .18s cubic-bezier(.32,.72,0,1),box-shadow .18s ease,border-color .15s ease,background-color .24s ease}.passage-card:hover{transform:translateY(-3px);box-shadow:var(--sh2);border-color:#6d44ff38}.passage-card:active{transform:translateY(-1px);box-shadow:var(--sh0)}.passage-card.is-selected{border-color:#6d44ff52;box-shadow:var(--sh1),0 0 0 3px var(--accent-dim)}.pc-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.pc-pub{padding:3px 8px;border-radius:var(--r-s);background:var(--accent-dim);color:var(--accent);font-size:10.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase}.pc-count{font-size:11.5px;font-weight:600;color:var(--ink-3)}.pc-title{font-size:16px;font-weight:700;line-height:1.35;letter-spacing:-.02em;color:var(--ink-1);flex:1}.pc-desc{margin:0;font-size:13px;line-height:1.58;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;flex:1}.pc-bottom{display:flex;align-items:center;gap:10px;margin-top:auto}.pc-bar{flex:1;height:4px;border-radius:var(--pill);background:var(--border);overflow:hidden}.pc-bar-fill{height:100%;border-radius:var(--pill);background:var(--accent);opacity:.75;transition:width .5s cubic-bezier(.32,.72,0,1)}.pc-avg{font-size:11.5px;font-weight:600;color:var(--ink-3);white-space:nowrap;flex-shrink:0}.practice-view{position:relative}.practice-layout{max-width:860px;margin:0 auto;padding:24px var(--px)}.practice-main{animation:fadeUp .34s cubic-bezier(.32,.72,0,1) both}.question-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-2xl);box-shadow:var(--sh1);padding:28px}.chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:18px}.chip{display:inline-flex;align-items:center;padding:3px 9px;border-radius:var(--pill);font-size:11.5px;font-weight:600;letter-spacing:-.01em;border:1px solid var(--blue-bd);background:var(--blue-bg);color:var(--blue)}.chip-muted{background:var(--neutral-bg);color:var(--ink-2);border-color:var(--border)}.chip-perfect,.chip-great{background:var(--blue-bg);color:var(--blue);border-color:var(--blue-bd)}.chip-good{background:var(--green-bg);color:var(--green);border-color:var(--green-bd)}.chip-okay{background:var(--amber-bg);color:var(--amber);border-color:var(--amber-bd)}.chip-retry{background:var(--red-bg);color:var(--red);border-color:var(--red-bd)}.chip-empty{background:var(--neutral-bg);color:var(--neutral);border-color:var(--border)}.prompt-wrap{overflow:hidden;transition:height .26s cubic-bezier(.32,.72,0,1);will-change:height;margin-bottom:20px}.prompt{margin:0;font-size:22px;font-weight:500;line-height:1.72;letter-spacing:-.015em;color:var(--ink-1)}.answer-divider{height:1px;background:var(--border);margin-bottom:16px}.answer-input,.answer-review-box{display:block;width:100%;padding:14px 16px;border:1px solid var(--border-mid);border-radius:var(--r-l);background:var(--bg);color:var(--ink-1);font-family:inherit;font-size:15.5px;line-height:1.65;transition:border-color .15s ease,box-shadow .15s ease,background-color .24s ease}.answer-input{resize:none;min-height:0;max-height:360px;overflow-y:hidden;transition:height .2s cubic-bezier(.32,.72,0,1),border-color .15s ease,box-shadow .15s ease,background-color .24s ease;animation:fadeIn .18s ease both}.answer-review-box{min-height:94px;cursor:default;animation:revealUp .24s cubic-bezier(.32,.72,0,1) both}.answer-input:focus,.answer-review-box:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.answer-input::placeholder{color:var(--ink-3)}.answer-review-line{display:flex;flex-wrap:wrap;gap:5px;align-items:center}.answer-token{padding:3px 9px;border-radius:var(--pill);font-size:13.5px;border:1px solid transparent;animation:tokenBounce .22s cubic-bezier(.34,1.36,.64,1) both}.answer-token-correct{background:var(--blue-bg);border-color:var(--blue-bd);color:var(--blue)}.answer-token-misplaced,.answer-token-wrong{background:var(--amber-bg);border-color:var(--amber-bd);color:var(--amber)}.answer-token-neutral{background:var(--neutral-bg);border-color:var(--border);color:var(--ink-2)}.answer-token-missing{background:var(--red-bg);border-color:var(--red-bd);color:var(--red);font-weight:600}.btn{height:38px;padding:0 16px;border-radius:var(--r-m);border:1px solid transparent;font-family:inherit;font-size:13.5px;font-weight:600;letter-spacing:-.01em;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:5px;transition:transform .14s cubic-bezier(.32,.72,0,1),box-shadow .14s ease,background-color .14s ease,opacity .14s ease,border-color .14s ease,color .14s ease}.btn:hover:not(:disabled){transform:translateY(-1px)}.btn:active:not(:disabled){transform:translateY(0) scale(.97)}.btn:disabled{opacity:.38;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:0 2px 10px #6d44ff42}.btn-primary:hover:not(:disabled){background:var(--accent-h);border-color:var(--accent-h);box-shadow:0 4px 16px #6d44ff57}.btn-ghost{background:var(--surface);border-color:var(--border-mid);color:var(--ink-1);box-shadow:var(--sh0)}.btn-ghost:hover:not(:disabled){border-color:var(--border-focus);box-shadow:var(--sh1)}.btn-ghost.is-saved{color:var(--amber);border-color:var(--amber-bd);background:var(--amber-bg)}.btn-danger:hover:not(:disabled){color:var(--red);border-color:var(--red-bd);background:var(--red-bg)}.btn-nav{gap:4px;font-weight:500;color:var(--ink-2)}.btn-nav:hover:not(:disabled){color:var(--ink-1)}.full{width:100%;height:40px;border-radius:var(--r-l);margin-top:8px}.full:first-child{margin-top:0}.actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:16px}.nav-row{display:flex;align-items:center;gap:10px;margin-top:20px}.nav-counter{flex:1;text-align:center;font-size:12.5px;font-weight:600;color:var(--ink-3);letter-spacing:.02em}.result-wrap{overflow:hidden;transition:max-height .28s cubic-bezier(.32,.72,0,1),opacity .2s ease,margin-top .2s ease}.result-wrap.is-visible{max-height:640px;opacity:1;margin-top:16px}.result-wrap.is-hidden{max-height:0;opacity:0;margin-top:0;pointer-events:none}.result-card{padding:18px;border:1px solid var(--border);border-radius:var(--r-l);background:var(--bg);animation:revealUp .24s cubic-bezier(.32,.72,0,1) both;transition:background-color .24s ease,border-color .24s ease}.result-top{display:flex;align-items:center;gap:10px;margin-bottom:8px}.result-score{font-size:38px;font-weight:800;letter-spacing:-.05em;color:var(--ink-1);line-height:1}.result-unit{font-size:18px;font-weight:600;letter-spacing:-.02em;margin-left:1px}.result-message{margin:0;font-size:14px;line-height:1.5;color:var(--ink-2)}.diff{margin:10px 0 0;font-size:12.5px;color:var(--ink-3);display:flex;flex-wrap:wrap;gap:6px;align-items:center}.diff-chars{display:inline-flex;gap:4px;align-items:center}.diff code{padding:1px 5px;border-radius:4px;background:var(--surface);border:1px solid var(--border-mid);font-family:SF Mono,Consolas,monospace;font-size:11.5px;color:var(--ink-1)}.token-grid{margin-top:14px;display:grid;grid-template-columns:1fr 1fr;gap:12px}.token-label{margin:0 0 7px;font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3)}.tokens{display:flex;flex-wrap:wrap;gap:5px}.token{padding:3px 8px;border-radius:var(--pill);border:1px solid var(--border);background:var(--surface);font-size:12px;font-weight:500;color:var(--ink-2)}.token-miss{background:var(--red-bg);border-color:var(--red-bd);color:var(--red)}.token-extra{background:var(--amber-bg);border-color:var(--amber-bd);color:var(--amber)}.answer-box-toggle{overflow:hidden;transition:max-height .28s cubic-bezier(.32,.72,0,1),opacity .2s ease,margin-top .2s ease}.answer-box-toggle.is-visible{max-height:300px;opacity:1;margin-top:12px}.answer-box-toggle.is-hidden{max-height:0;opacity:0;margin-top:0;pointer-events:none}.answer-box{padding:14px 16px;border:1px solid var(--green-bd);background:var(--green-bg);border-radius:var(--r-l);font-size:15px;line-height:1.66;color:var(--green);transition:background-color .24s ease,border-color .24s ease,color .2s ease}.practice-sidebar{background:var(--surface);border:1px solid var(--border);box-shadow:var(--sh3);overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:var(--border-mid) transparent;transition:transform .32s cubic-bezier(.32,.72,0,1),background-color .24s ease,border-color .24s ease;position:fixed;top:var(--nav-h);right:0;bottom:0;width:320px;border-radius:var(--r-2xl) 0 0 var(--r-2xl);border-width:1px 0 1px 1px;transform:translate(110%);z-index:40}.practice-sidebar.is-open{transform:translate(0)}.practice-sidebar::-webkit-scrollbar{width:4px}.practice-sidebar::-webkit-scrollbar-thumb{background:var(--border-mid);border-radius:var(--pill)}.sidebar-inner{padding:20px;display:flex;flex-direction:column;gap:0}.sheet-handle{display:none}.sidebar-section{padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid var(--border)}.sidebar-section:last-child{padding-bottom:0;margin-bottom:0;border-bottom:none}.sidebar-passage-info{display:flex;flex-direction:column;gap:5px}.sidebar-passage-label{margin:0;font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3)}.sidebar-passage-title{font-size:14px;font-weight:700;letter-spacing:-.02em;line-height:1.35;color:var(--ink-1)}.sidebar-passage-desc{margin:0;font-size:12px;line-height:1.55;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.sidebar-progress-row{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}.sidebar-label{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}.sidebar-count{font-size:14px;font-weight:700;color:var(--ink-1);letter-spacing:-.02em}.sidebar-bar{height:4px;border-radius:var(--pill);background:var(--border);overflow:hidden;margin-bottom:12px}.sidebar-bar-fill{height:100%;border-radius:var(--pill);background:var(--accent);opacity:.82;transition:width .44s cubic-bezier(.32,.72,0,1)}.sidebar-score-row{display:flex;justify-content:space-between;align-items:center}.sidebar-score-val{font-size:20px;font-weight:800;letter-spacing:-.04em;color:var(--ink-1)}.sidebar-actions{display:flex;flex-direction:column;gap:0}.sidebar-list-title{margin:0 0 12px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}.list-grid{display:flex;flex-direction:column;gap:5px}.list-item{display:grid;grid-template-rows:auto auto auto;gap:3px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-m);background:var(--bg);text-align:left;cursor:pointer;color:var(--ink-1);position:relative;overflow:hidden;transition:transform .15s cubic-bezier(.32,.72,0,1),box-shadow .15s ease,border-color .15s ease,background-color .24s ease}.list-item:hover{transform:translate(2px);box-shadow:var(--sh1)}.list-item:active{transform:scale(.994)}.list-item span,.list-item small{font-size:11px;font-weight:600;color:var(--ink-3);letter-spacing:.01em}.list-item strong{font-size:12.5px;line-height:1.4;font-weight:500;color:var(--ink-1);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.list-item[class*=status-]:before{content:"";position:absolute;left:0;top:14%;bottom:14%;width:2.5px;border-radius:var(--pill)}.list-item.status-perfect,.list-item.status-great{background:var(--blue-bg);border-color:var(--blue-bd)}.list-item.status-good{background:var(--green-bg);border-color:var(--green-bd)}.list-item.status-okay{background:var(--amber-bg);border-color:var(--amber-bd)}.list-item.status-retry{background:var(--red-bg);border-color:var(--red-bd)}.list-item.status-empty{background:var(--neutral-bg);border-color:var(--border)}.list-item.status-perfect:before,.list-item.status-great:before{background:var(--blue)}.list-item.status-good:before{background:var(--green)}.list-item.status-okay:before{background:var(--amber)}.list-item.status-retry:before{background:var(--red)}.list-item.status-empty:before{background:var(--neutral);opacity:.5}.list-item.status-perfect small,.list-item.status-great small{color:var(--blue)}.list-item.status-good small{color:var(--green)}.list-item.status-okay small{color:var(--amber)}.list-item.status-retry small{color:var(--red)}.list-item.status-empty small{color:var(--neutral)}.list-item.active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-dim)}.list-item.saved:after{content:"★";position:absolute;top:7px;right:8px;font-size:9.5px;color:var(--amber)}.sheet-backdrop{position:fixed;inset:0;z-index:38;border:none;background:#00000047;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);cursor:pointer;animation:fadeIn .22s ease both}.app-footer{margin-top:40px;padding:0 var(--px);display:flex;justify-content:center;align-items:center;gap:8px;font-size:12px;color:var(--ink-3)}.footer-brand{display:flex;align-items:center;gap:5px}.footer-logo{height:12px;opacity:.6}@keyframes fadeUp{0%{opacity:0;transform:translateY(12px) scale(.988)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes revealUp{0%{opacity:0;transform:translateY(6px) scale(.994)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes tokenBounce{0%{opacity:0;transform:scale(.78) translateY(5px)}60%{opacity:1;transform:scale(1.08) translateY(-1px)}80%{transform:scale(.96)}to{transform:scale(1) translateY(0)}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.chip-enter{animation:fadeIn .18s ease both}.prompt-enter{animation:fadeUp .22s cubic-bezier(.32,.72,0,1) both}@media(min-width:961px){.app-nav{padding:0 32px}.home-view,.practice-layout{padding-left:32px;padding-right:32px}}@media(max-width:960px){:root{--px: 16px;--nav-h: 52px}.practice-layout{padding-top:16px;padding-bottom:16px}.practice-sidebar{inset:auto 0 0;width:auto;max-height:78vh;border-radius:var(--r-2xl) var(--r-2xl) 0 0;border-width:1px 0 0 0;box-shadow:var(--sh4);transform:translateY(110%)}.practice-sidebar.is-open{transform:translateY(0)}.sheet-handle{display:block;width:36px;height:4px;border-radius:var(--pill);background:var(--border-mid);margin:0 auto 16px}.question-card{padding:20px;border-radius:var(--r-xl)}.prompt{font-size:19px;line-height:1.66}.answer-input,.answer-review-box{font-size:15px}.answer-review-box{min-height:80px}.answer-input{max-height:300px}.btn{height:42px}.actions .btn{flex:1 1 calc(50% - 4px)}.nav-row .btn{flex:1 1 0}.token-grid{grid-template-columns:1fr}.home-view{padding-top:24px;gap:18px}.home-header{flex-direction:column;gap:14px}.passage-grid{grid-template-columns:1fr}.app-footer{margin-top:20px;padding-bottom:env(safe-area-inset-bottom,0)}.nav-stat,.theme-label{display:none}.theme-btn{padding:0 8px}}@media(max-width:560px){:root{--px: 14px}.home-title{font-size:20px}.chips{gap:5px}.chip{font-size:10.5px;padding:2px 8px}.actions .btn,.nav-row .btn{flex:1 1 100%}.nav-passage-title{max-width:120px}}
