:root{--bg: #f3eee4;--paper: #fffdf8;--paper-warm: #faf4e8;--ink: #241f19;--muted: #6c5f4e;--line: #e1d5c2;--line-strong: #d3c3a8;--accent: #b23a2f;--accent-dark: #8c2a22;--accent-soft: #f7e4dd;--green: #2f5d50;--green-soft: #e4efe9;--gold: #a8791f;--shadow: 0 16px 40px rgba(50, 38, 22, .1);--shadow-sm: 0 6px 18px rgba(50, 38, 22, .07);--jp: "Hiragino Sans", "Yu Gothic", "Noto Sans JP", sans-serif;--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, "Hiragino Sans", "Yu Gothic", "Noto Sans JP", sans-serif}*{box-sizing:border-box}html{font-size:17px;background:var(--bg);scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{margin:0;min-width:320px;background:radial-gradient(circle at 88% -8%,rgba(210,185,146,.35),transparent 36rem),radial-gradient(circle at -10% 40%,rgba(178,58,47,.05),transparent 30rem),linear-gradient(180deg,#f6f1e7,#f1ebe0);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button,input{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible,[role=button]:focus-visible{outline:2px solid var(--accent);outline-offset:3px}::selection{background:#f0d3a2;color:#241f19}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:30;min-height:72px;padding:10px clamp(16px,4vw,40px);display:flex;align-items:center;justify-content:space-between;gap:18px;background:#f6f1e7db;border-bottom:1px solid rgba(225,213,194,.9);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.brand{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;padding:0;display:inline-flex;align-items:center;gap:11px;cursor:pointer;text-align:left}.brand-mark{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;background:var(--ink);color:#f8ead2;font-family:var(--jp);font-size:1.25rem;font-weight:700;box-shadow:inset 0 -2px #ffffff1a}.brand-copy{display:flex;flex-direction:column;line-height:1.15}.brand-copy strong{font-size:.98rem;letter-spacing:.01em}.brand-copy small{color:var(--muted);font-size:.8rem;letter-spacing:.04em}.topbar-actions{display:flex;align-items:center;gap:9px}.net-pill,.installed-pill{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;border:1px solid var(--line);background:#fffdf8bf;color:var(--muted);font-size:.78rem;font-weight:700;letter-spacing:.03em;white-space:nowrap}.net-pill i{width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px #2f5d501f}.net-pill.offline i{background:var(--accent);box-shadow:0 0 0 3px #b23a2f1f}.font-control{position:relative;flex:0 0 auto}.font-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;height:38px;min-width:42px;padding:0 9px;border-radius:10px;border:1px solid var(--line);background:var(--paper);color:var(--ink);font-size:.78rem;font-weight:800;letter-spacing:-.02em;cursor:pointer}.font-btn:hover{border-color:var(--gold);background:#fffaf0}.font-popover{position:absolute;right:0;top:calc(100% + 8px);z-index:90;width:240px;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--paper);box-shadow:var(--shadow)}.font-popover-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:7px;font-size:.78rem;font-weight:700}.font-popover-head b{color:var(--accent-dark)}.font-range{width:100%;accent-color:var(--accent);cursor:pointer}.font-range-labels{display:flex;justify-content:space-between;margin-top:1px;color:var(--muted);font-size:.66rem}.font-presets{display:flex;flex-wrap:wrap;gap:5px;margin-top:10px}.font-presets button{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:4px 7px;border:1px solid var(--line);border-radius:6px;background:#fbf6ec;color:var(--muted);font-size:.66rem;font-weight:700;cursor:pointer}.font-presets button:hover{border-color:var(--gold)}.font-presets button.active{border-color:var(--ink);background:var(--ink);color:#f8ead2}.install-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:999px;border:1px solid var(--ink);background:var(--ink);color:#f8ead2;font-size:.84rem;font-weight:700;cursor:pointer;transition:transform .16s ease,background .16s ease}.install-btn:hover{transform:translateY(-1px);background:#3b3227}.installed-pill{color:var(--green);border-color:#c9ded3;background:var(--green-soft)}.home{width:min(1180px,100%);margin:0 auto;padding:34px clamp(16px,4vw,40px) 80px;flex:1}.hero{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr);align-items:center;gap:clamp(26px,5vw,64px);padding:20px 0 48px}.eyebrow{display:inline-block;margin:0 0 8px;color:var(--accent);font-size:.76rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase}.hero h1{margin:0 0 18px;font-size:clamp(2.45rem,5.7vw,4.8rem);line-height:1.04;letter-spacing:-.045em;font-weight:800}.hero h1 em{color:var(--accent);font-style:normal}.lede{max-width:620px;margin:0 0 24px;color:var(--muted);font-size:clamp(.96rem,1.25vw,1.08rem);line-height:1.8}.hero-actions,.lesson-actions,.finish-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;border-radius:999px;padding:11px 18px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:.92rem;font-weight:700;cursor:pointer;transition:transform .16s ease,background .16s ease,border-color .16s ease;white-space:nowrap}.btn:hover{transform:translateY(-1px)}.btn.primary{background:var(--accent);color:#fff8ee;border-color:var(--accent);box-shadow:0 8px 20px #b23a2f33}.btn.primary:hover{background:var(--accent-dark);border-color:var(--accent-dark)}.btn.ghost{background:#fffdf8b3;border-color:var(--line-strong);color:var(--ink)}.btn.ghost:hover{background:var(--paper);border-color:var(--gold)}.hero-stats{display:flex;flex-wrap:wrap;gap:22px 30px;margin-top:34px;padding-top:20px;border-top:1px solid var(--line)}.hero-stats span{display:flex;flex-direction:column;gap:1px;color:var(--muted);font-size:.8rem;letter-spacing:.02em}.hero-stats b{color:var(--ink);font-size:1.35rem;line-height:1.1;letter-spacing:-.03em}.hero-preview{position:relative;min-height:360px;perspective:1200px}.preview-shadow{position:absolute;top:18%;right:8%;bottom:2%;left:8%;border-radius:50%;background:radial-gradient(ellipse,rgba(40,30,20,.22),transparent 68%);filter:blur(18px)}.preview-card{position:absolute;width:min(330px,88%);aspect-ratio:1.42 / 1;border-radius:20px;padding:24px;display:flex;flex-direction:column;justify-content:center;align-items:center;border:1px solid var(--line);box-shadow:0 26px 50px #281e1429}.preview-card.front{right:9%;top:12%;z-index:2;background:linear-gradient(145deg,rgba(255,255,255,.4),transparent 42%),var(--paper);transform:rotate(-7deg)}.preview-card.back{left:2%;top:27%;background:linear-gradient(145deg,rgba(255,255,255,.45),transparent 45%),linear-gradient(150deg,#f7fbf7,#e8f1eb);transform:rotate(8deg);z-index:1}.preview-label{position:absolute;top:16px;left:19px;color:var(--muted);font-size:.64rem;font-weight:800;letter-spacing:.16em}.preview-word{font-family:var(--jp);font-size:clamp(2.4rem,5vw,3.5rem);font-weight:700;line-height:1.1;letter-spacing:.01em}.preview-hint{position:absolute;right:19px;bottom:16px;color:var(--muted);font-size:.73rem}.preview-meaning{margin-top:7px;color:var(--green);font-size:.98rem;font-weight:700}.dashboard{padding-top:26px}.dash-head{display:flex;align-items:flex-end;justify-content:space-between;gap:22px;padding:2px 0 20px;border-bottom:1px solid var(--line)}.dash-title h1{margin:0 0 4px;font-size:clamp(1.8rem,3.4vw,2.65rem);line-height:1.12;letter-spacing:-.04em}.dash-title .eyebrow{margin-bottom:4px}.dash-sub{margin:0;color:var(--muted);font-size:.9rem}.dash-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.overview-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:12px;margin-top:16px}.overview-card,.overview-progress-card{background:#fffdf8c7;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-sm)}.overview-card{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));padding:15px 18px}.overview-stat{display:flex;flex-direction:column;gap:2px;padding:1px 16px;border-right:1px solid var(--line)}.overview-stat:first-child{padding-left:0}.overview-stat:last-child{border-right:0;padding-right:0}.overview-stat span{color:var(--muted);font-size:.76rem;letter-spacing:.02em}.overview-stat b{font-size:1.45rem;line-height:1.15;letter-spacing:-.035em}.overview-progress-card{padding:15px 18px;display:flex;flex-direction:column;justify-content:center}.overview-progress-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:8px;color:var(--muted);font-size:.8rem;font-weight:700}.overview-progress-head b{color:var(--green);font-size:.98rem}.overview-progress-card p{margin:7px 0 0;color:var(--muted);font-size:.76rem}.section-title-row{display:flex;align-items:baseline;gap:9px}.section-count{color:var(--muted);font-size:.78rem}.overall{display:flex;align-items:center;gap:22px;padding:18px 20px;background:#fffdf8bd;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-sm)}.overall-copy{display:flex;flex-direction:column;min-width:190px}.overall-copy .eyebrow{margin-bottom:1px;font-size:.68rem}.overall-copy strong{font-size:1rem}.overall-note{color:var(--muted);font-size:.8rem}.overall-meter{flex:1;height:7px;border-radius:999px;background:#ebe0cf;overflow:hidden}.overall-meter i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--green),#619480);transition:width .35s ease}.overall-percent{min-width:44px;text-align:right;color:var(--green);font-size:.9rem;font-weight:800}.lesson-section{margin-top:38px}.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:16px}.section-head h2{margin:0;font-size:clamp(1.25rem,2.2vw,1.65rem);line-height:1.25;letter-spacing:-.025em}.section-head .eyebrow{margin-bottom:3px}.search-box{position:relative;width:min(280px,100%)}.search-box input{width:100%;padding:10px 34px 10px 13px;border:1px solid var(--line);border-radius:10px;background:#fffdf8db;color:var(--ink);font-size:.9rem;outline:none}.search-box input:focus{border-color:var(--gold);box-shadow:0 0 0 3px #a8791f21}.search-box button{position:absolute;right:5px;top:50%;transform:translateY(-50%);width:25px;height:25px;border:0;border-radius:7px;background:transparent;color:var(--muted);cursor:pointer;font-size:1rem}.lesson-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(205px,1fr));gap:12px}.lesson-card{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;min-height:170px;padding:16px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(150deg,rgba(255,255,255,.65),transparent 55%),#fffdf8d1;text-align:left;display:flex;flex-direction:column;cursor:pointer;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.lesson-card:hover{transform:translateY(-3px);border-color:#cbb18a;box-shadow:var(--shadow-sm)}.lesson-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.lesson-number{color:var(--accent);font-size:1.35rem;font-weight:800;line-height:1;letter-spacing:-.04em}.lesson-total{color:var(--muted);font-size:.75rem;white-space:nowrap}.lesson-title{margin-top:13px;font-family:var(--jp);font-size:1.02rem;font-weight:700;line-height:1.4;letter-spacing:.005em}.lesson-theme{margin-top:3px;color:var(--muted);font-size:.82rem;line-height:1.45}.lesson-meter{height:4px;margin-top:auto;padding-top:14px;border-radius:999px;background:#ece2d2;background-clip:content-box;overflow:hidden}.lesson-meter i{display:block;height:4px;border-radius:inherit;background:var(--green)}.lesson-bottom{display:flex;justify-content:space-between;gap:8px;margin-top:7px;color:var(--muted);font-size:.72rem}.empty-state{display:flex;align-items:center;gap:10px;padding:30px 18px;border:1px dashed var(--line-strong);border-radius:14px;color:var(--muted);font-size:.94rem}.empty-state p{margin:0}.lesson-view{width:min(1120px,100%);margin:0 auto;padding:26px clamp(16px,4vw,40px) 80px;flex:1}.back-link{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;padding:3px 0;display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:.86rem;cursor:pointer}.back-link:hover{color:var(--accent-dark)}.lesson-hero{display:flex;align-items:flex-start;gap:clamp(16px,3vw,30px);margin-top:15px;padding:clamp(22px,4vw,34px);border:1px solid var(--line);border-radius:20px;background:radial-gradient(circle at 92% 10%,rgba(178,58,47,.08),transparent 13rem),var(--paper);box-shadow:var(--shadow-sm)}.lesson-big-number{color:var(--accent);font-size:clamp(3rem,7vw,5.3rem);font-weight:800;line-height:.9;letter-spacing:-.06em}.lesson-hero-copy{min-width:0;flex:1}.lesson-hero-copy h1{margin:1px 0 4px;font-family:var(--jp);font-size:clamp(1.45rem,3.1vw,2.35rem);line-height:1.25;letter-spacing:-.02em}.lesson-hero-copy p{margin:0;color:var(--muted);font-size:.96rem}.lesson-progress-line{display:flex;align-items:center;gap:10px;margin-top:16px;color:var(--muted);font-size:.8rem}.mini-meter{width:min(220px,40vw);height:5px;border-radius:999px;background:#ece2d2;overflow:hidden}.mini-meter i{display:block;height:100%;border-radius:inherit;background:var(--green)}.lesson-actions{margin-top:16px}.action-note,.section-note{color:var(--muted);font-size:.8rem}.vocab-section{margin-top:38px}.section-head.compact{align-items:flex-end}.section-head.compact h2{font-size:1.15rem}.vocab-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.vocab-row{display:flex;align-items:center;gap:10px;padding:9px 10px;border:1px solid transparent;border-bottom-color:var(--line);border-radius:9px;background:#fffdf880;transition:background .15s ease,border-color .15s ease}.vocab-row:hover{background:var(--paper);border-color:var(--line)}.vocab-row.is-known{background:#e4efe98c}.known-check{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex:0 0 25px;width:25px;height:25px;border-radius:50%;border:1px solid var(--line-strong);background:var(--paper);color:var(--muted);display:grid;place-items:center;font-size:.73rem;font-weight:700;cursor:pointer}.known-check.checked{border-color:var(--green);background:var(--green);color:#fff}.vocab-text{min-width:0;flex:1}.vocab-main{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px}.vocab-kanji{font-family:var(--jp);font-size:.98rem;font-weight:700;line-height:1.4}.vocab-kana{color:var(--muted);font-family:var(--jp);font-size:.86rem}.vocab-meaning{margin-top:1px;color:var(--muted);font-size:.81rem;line-height:1.4;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.type-badge{flex:0 0 auto;padding:2px 6px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:.63rem;font-weight:700;letter-spacing:.02em}.audio-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex:0 0 auto;width:36px;height:36px;border-radius:50%;border:1px solid var(--line);background:var(--paper);color:var(--accent-dark);display:grid;place-items:center;cursor:pointer;transition:background .16s ease,color .16s ease,transform .16s ease}.audio-btn:hover{background:var(--accent-soft);border-color:#e4b9b0;transform:scale(1.04)}.audio-btn.is-active{background:var(--accent);border-color:var(--accent);color:#fff;animation:audioPulse .9s ease-in-out infinite}.row-audio{width:30px;height:30px}@keyframes audioPulse{0%,to{box-shadow:0 0 #b23a2f40}50%{box-shadow:0 0 0 6px #b23a2f00}}body.is-studying{overflow:hidden;overscroll-behavior:none}.study{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;width:100%;height:100vh;height:100dvh;min-height:0;margin:0;padding:0 clamp(10px,2.5vw,28px) max(8px,env(safe-area-inset-bottom));display:flex;flex-direction:column;overflow:hidden;background:radial-gradient(circle at 88% -8%,rgba(210,185,146,.35),transparent 36rem),linear-gradient(180deg,#f6f1e7,#f1ebe0)}.study-topbar{flex:0 0 auto;display:flex;align-items:center;gap:11px;padding:max(8px,env(safe-area-inset-top)) 0 6px}.study-back,.round-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:42px;height:42px;flex:0 0 42px;border-radius:50%;border:1px solid var(--line);background:var(--paper);color:var(--ink);display:grid;place-items:center;cursor:pointer}.study-back:hover,.round-btn:hover:not(:disabled){border-color:var(--gold);background:#fffaf0}.round-btn:disabled{opacity:.35;cursor:default}.study-title{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.3}.study-title strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--jp);font-size:.98rem}.study-title small{color:var(--muted);font-size:.76rem}.shuffle-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;gap:5px;padding:8px 11px;border:1px solid var(--line);border-radius:999px;background:var(--paper);color:var(--muted);font-size:.78rem;font-weight:700;cursor:pointer}.shuffle-btn:hover{border-color:var(--gold);color:var(--accent-dark)}.study-progress{flex:0 0 auto;margin:2px 2px 0}.study-progress-copy{display:flex;justify-content:space-between;color:var(--muted);font-size:.78rem;margin-bottom:6px}.study-progress-copy b{color:var(--ink)}.study-meter{height:5px;border-radius:999px;background:#eaddc9;overflow:hidden}.study-meter i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),#d78b58);transition:width .25s ease}.card-stage{flex:1 1 auto;min-height:0;display:grid;place-items:center;padding:6px 0;perspective:1500px}.flashcard-wrap{position:relative;width:min(880px,100%);height:100%;max-height:min(100%,640px);transform-style:preserve-3d}.card-audio{position:absolute;z-index:6;top:17px;right:17px;width:43px;height:43px;box-shadow:0 5px 14px #3226161a}.flashcard{width:100%;height:100%;cursor:pointer;outline:none}.flashcard-inner{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform .55s cubic-bezier(.2,.72,.2,1)}.flashcard-wrap.is-flipped .flashcard-inner{transform:rotateY(180deg)}.card-face{position:absolute;top:0;right:0;bottom:0;left:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:24px;border:1px solid var(--line);box-shadow:var(--shadow);padding:38px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;overflow:hidden}.card-front{background:radial-gradient(circle at 20% 0%,rgba(255,255,255,.9),transparent 38%),linear-gradient(145deg,#fffdf8,#f6ecdc)}.card-front:before,.card-back:before{content:"";position:absolute;left:0;top:0;width:5px;height:100%;background:var(--accent);opacity:.9}.card-back{transform:rotateY(180deg);background:radial-gradient(circle at 80% 0%,rgba(255,255,255,.85),transparent 40%),linear-gradient(145deg,#fbfdf9,#e8f1ea)}.card-back:before{background:var(--green)}.face-label{position:absolute;top:21px;left:25px;color:var(--muted);font-size:.67rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase}.word-context{max-width:90%;margin-bottom:10px;padding:2px 9px;border-radius:999px;background:#fffdf8b3;border:1px solid rgba(225,213,194,.9);color:var(--muted);font-family:var(--jp);font-size:.88rem}.word-main{max-width:100%;font-family:var(--jp);font-size:clamp(2.6rem,7vw,6.3rem);font-weight:700;line-height:1.14;letter-spacing:.005em;overflow-wrap:anywhere}.reading-word{color:#1e3f35;font-size:clamp(2.5rem,6.8vw,5.8rem)}.word-main.word-long{font-size:clamp(1.9rem,4.8vw,4.2rem);line-height:1.2}.word-main.word-very-long{font-size:clamp(1.45rem,3.6vw,3.1rem);line-height:1.28}.word-type{margin-top:16px;padding:3px 9px;border-radius:999px;background:#fffdf8b8;border:1px solid var(--line);color:var(--muted);font-size:.73rem;font-weight:700}.card-hint{position:absolute;bottom:19px;left:50%;transform:translate(-50%);color:#8b7c68;font-size:.75rem;white-space:nowrap}.meaning-area{flex:0 0 auto;width:min(90%,520px);min-height:74px;margin-top:18px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px}.meaning-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--ink);border-radius:999px;padding:9px 15px;display:inline-flex;align-items:center;gap:6px;background:var(--ink);color:#f8ead2;font-size:.86rem;font-weight:700;cursor:pointer}.meaning-toggle:hover{background:#3b3227}.meaning-toggle.subtle{padding:2px 7px;border:0;background:transparent;color:var(--muted);font-size:.76rem;text-decoration:underline;text-underline-offset:3px}.meaning-text{flex:0 0 auto;max-width:100%;max-height:min(22vh,160px);overflow:auto;margin:0;padding:11px 14px;border:1px solid #cfe0d6;border-radius:11px;background:#fffdf8db;color:#2b493f;font-size:.98rem;line-height:1.55}.study-controls{flex:0 0 auto;display:flex;align-items:center;justify-content:center;gap:13px;margin-top:4px}.flip-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:190px;padding:11px 17px;border-radius:999px;border:1px solid var(--ink);background:var(--ink);color:#f8ead2;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:.9rem;font-weight:700;cursor:pointer}.flip-btn:hover{background:#3b3227}.key-cap{display:inline-grid;place-items:center;min-width:19px;height:19px;padding:0 4px;border-radius:5px;border:1px solid rgba(255,255,255,.24);background:#ffffff14;font-size:.66rem;line-height:1}.study-bottom{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:6px}.known-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;gap:7px;padding:8px 13px;border-radius:999px;border:1px solid var(--line-strong);background:var(--paper);color:var(--muted);font-size:.84rem;font-weight:700;cursor:pointer}.known-toggle.is-known{border-color:#9cc4b3;background:var(--green-soft);color:var(--green)}.key-hint{display:inline-flex;align-items:center;flex-wrap:wrap;gap:5px;color:#8b7c68;font-size:.74rem}.key-hint .key-cap{border-color:var(--line);background:#fffdf8bf;color:var(--muted)}.finished-card{flex:1 1 auto;min-height:0;margin-top:8px;padding:clamp(20px,4vh,40px) 24px;border:1px solid var(--line);border-radius:24px;background:var(--paper);box-shadow:var(--shadow);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;overflow:hidden}.finish-icon{width:66px;height:66px;margin-bottom:13px;border-radius:50%;display:grid;place-items:center;background:var(--green);color:#fff;box-shadow:0 10px 22px #2f5d5033}.finished-card h2{margin:2px 0 8px;font-size:clamp(1.45rem,3vw,2rem);letter-spacing:-.03em}.finished-card p{max-width:460px;margin:0 0 20px;color:var(--muted);font-size:.96rem}.footer{margin-top:auto;padding:22px clamp(16px,4vw,40px) 30px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:18px;color:var(--muted);font-size:.76rem}.footer strong{display:block;color:var(--ink);font-size:.86rem}.footer-note{display:flex;flex-direction:column;gap:2px;text-align:right}.toast{position:fixed;left:50%;bottom:max(22px,env(safe-area-inset-bottom));z-index:100;transform:translate(-50%);max-width:min(92vw,520px);padding:9px 15px;border:1px solid #4b4034;border-radius:10px;background:#29231c;color:#f8ead2;box-shadow:0 12px 30px #1e181147;font-size:.88rem;line-height:1.5;text-align:center;animation:toastIn .2s ease both}@keyframes toastIn{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@media(max-width:900px){.hero{grid-template-columns:1fr;gap:14px;padding-top:10px}.hero-preview{min-height:280px;order:-1;max-width:430px;width:100%;margin:0 auto}.preview-card{width:min(280px,78%)}.preview-card.front{right:10%;top:8%}.preview-card.back{left:4%;top:24%}.vocab-grid{grid-template-columns:1fr}}@media(max-width:640px){.topbar{min-height:64px;padding-inline:14px}.brand-mark{width:37px;height:37px;font-size:1.1rem}.brand-copy strong{font-size:.98rem}.brand-copy small{font-size:.73rem}.net-pill{display:none}.install-btn{padding:7px 10px;font-size:.78rem}.home{padding:24px 14px 58px}.dashboard{padding-top:18px}.dash-head{display:block;padding-bottom:15px}.dash-title h1{font-size:1.9rem}.dash-actions{justify-content:flex-start;margin-top:13px}.dash-actions .btn{padding:9px 14px;font-size:.86rem}.overview-grid{grid-template-columns:1fr;gap:8px}.overview-card{padding:13px 14px}.overview-stat{padding:0 9px}.overview-stat b{font-size:1.18rem}.overview-stat span{font-size:.69rem}.overview-progress-card{padding:13px 14px}.section-title-row{gap:7px}.hero h1{font-size:clamp(2.25rem,12vw,3.2rem)}.lede{font-size:.98rem}.hero-stats{gap:17px 22px;margin-top:26px}.hero-stats b{font-size:1.18rem}.overall{display:block;padding:14px}.overall-copy{min-width:0}.overall-meter{margin-top:10px}.overall-percent{display:block;text-align:left;margin-top:3px}.section-head{display:block}.search-box{width:100%;margin-top:9px}.lesson-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.lesson-card{min-height:158px;padding:13px}.lesson-title{font-size:.98rem}.lesson-theme{font-size:.76rem}.lesson-total{font-size:.68rem}.lesson-view{padding:20px 14px 60px}.lesson-hero{gap:13px;padding:18px}.lesson-big-number{font-size:2.9rem}.lesson-hero-copy h1{font-size:1.35rem}.lesson-progress-line{display:block}.mini-meter{display:block;width:100%;margin-bottom:5px}.lesson-actions{align-items:stretch}.lesson-actions .btn{flex:1}.action-note{flex-basis:100%}.vocab-section{margin-top:28px}.section-head.compact{display:flex}.section-note{display:none}.vocab-row{gap:7px;padding:8px}.type-badge{display:none}.study{padding-inline:11px}.study-topbar{padding:max(6px,env(safe-area-inset-top)) 0 4px}.study-title strong{font-size:.94rem}.shuffle-btn span{display:none}.shuffle-btn{width:39px;height:39px;justify-content:center;padding:0}.card-stage{min-height:0;padding:4px 0}.flashcard-wrap{height:100%;max-height:100%}.card-face{padding:31px 18px;border-radius:20px}.word-main{font-size:clamp(2.25rem,11vw,4.4rem)}.reading-word{font-size:clamp(2.15rem,10.5vw,4.2rem)}.card-audio{top:12px;right:12px;width:39px;height:39px}.face-label{top:16px;left:18px}.card-hint{bottom:14px;font-size:.7rem}.meaning-area{min-height:68px;margin-top:13px}.study-controls{gap:9px}.round-btn{width:40px;height:40px;flex-basis:40px}.flip-btn{min-width:0;flex:1;padding:11px 12px}.study-bottom{flex-direction:column;align-items:stretch;gap:9px}.known-toggle,.key-hint{justify-content:center}.footer{display:block;padding-inline:14px}.footer-note{margin-top:7px;text-align:left}}@media(orientation:landscape)and (max-height:680px){.study{padding:0 14px max(4px,env(safe-area-inset-bottom))}.study-topbar{padding:max(2px,env(safe-area-inset-top)) 0 2px;gap:8px}.study-back{width:34px;height:34px;flex-basis:34px}.study-title strong{font-size:.9rem}.study-title small{display:none}.shuffle-btn{width:33px;height:33px;justify-content:center;padding:0}.shuffle-btn span{display:none}.study-progress-copy{margin-bottom:2px;font-size:.68rem}.study-meter{height:3px}.card-stage{padding:3px 0}.flashcard-wrap{max-width:min(920px,100%);max-height:100%}.card-face{padding:21px 20px;border-radius:18px}.face-label{top:11px;left:16px;font-size:.6rem}.card-audio{top:8px;right:8px;width:34px;height:34px}.word-main{font-size:clamp(2.1rem,11vh,5rem)}.reading-word{font-size:clamp(2rem,10.5vh,4.8rem)}.word-context{margin-bottom:4px;font-size:.74rem}.word-type{margin-top:8px;font-size:.66rem}.card-hint{bottom:8px;font-size:.66rem}.meaning-area{min-height:36px;margin-top:6px}.meaning-text{max-height:18vh;padding:6px 9px;font-size:.72rem;line-height:1.4}.meaning-toggle{padding:6px 10px;font-size:.76rem}.study-controls{margin-top:2px;gap:8px}.round-btn{width:34px;height:34px;flex-basis:34px}.flip-btn{min-width:145px;padding:7px 12px;font-size:.8rem}.study-bottom{flex-direction:row;align-items:center;margin-top:2px}.known-toggle{padding:5px 9px;font-size:.72rem}.key-hint{display:none}.finished-card{margin-top:4px;padding:13px}.finish-icon{width:38px;height:38px;margin-bottom:5px}.finished-card h2{margin-bottom:3px;font-size:1.1rem}.finished-card p{margin-bottom:8px;font-size:.83rem}.finish-actions .btn{padding:7px 11px;font-size:.76rem}}@media(max-width:380px){.lesson-grid{grid-template-columns:1fr}.hero-preview{min-height:240px}.preview-card{width:min(250px,82%)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
