@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@400;500;600;700&family=Noto+Serif+JP:wght@400;600&display=swap');
:root{--paper:#f7f6f0;--ink:#253f36;--green:#2e5949;--muted:#7a8278;--line:#e1e3d9;--accent:#d6aa65}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px 'Noto Sans TC',system-ui,sans-serif}button,a,input{ -webkit-tap-highlight-color:transparent}button,input{font:inherit}button,a{touch-action:manipulation}a{color:inherit;text-decoration:none}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--accent);outline-offset:4px}header{height:91px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 5%}.brand{display:flex;align-items:center;gap:12px;font-family:Georgia,serif;font-size:26px;font-weight:bold}.brand-icon{background:var(--green);color:white;padding:6px 10px;border-radius:10px;font:21px 'Noto Serif JP',serif}.beta{font:9px system-ui;letter-spacing:1px;border:1px solid #c8cebf;padding:5px;border-radius:4px}.tagline{font-size:12px;color:var(--muted);letter-spacing:2px}.layout{display:grid;grid-template-columns:210px 1fr;max-width:1400px;margin:auto;min-height:calc(100vh - 152px)}aside{padding:42px 24px;border-right:1px solid var(--line)}.nav-label,.eyebrow{font-size:11px;letter-spacing:2px;color:var(--muted);margin-bottom:22px}nav{display:grid;gap:9px}nav a{padding:15px;border-radius:9px;display:flex;gap:14px;color:#758077}nav a.active{background:#e7ece2;color:var(--green);font-weight:600}.aside-note{margin-top:100px;font-size:11px;line-height:2;color:var(--muted)}.aside-note p{font-size:13px}.stamp{display:inline-block;border:1px solid #ba7d69;color:#ba7d69;padding:7px 12px;line-height:1.5;transform:rotate(-8deg);margin-top:15px}main{padding:40px 5%;max-width:1150px;width:100%;margin:auto}h1{font-size:30px;font-weight:500;letter-spacing:1px;margin:8px 0 12px}h2{font-size:19px;font-weight:500;margin:0}h3{font-size:17px;font-weight:500}p{line-height:1.8}.subtle{color:var(--muted);font-size:13px}.heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}.date{font-size:12px;color:var(--muted)}.hero{border-radius:17px;background:#e6eadd;display:grid;grid-template-columns:1.2fr 1fr;overflow:hidden;min-height:285px;margin:24px 0}.hero-copy{padding:35px}.pill{display:inline-block;padding:6px 10px;border-radius:5px;background:#ffffff90;font-size:10px;letter-spacing:1px}.hero h2{font-size:29px;line-height:1.5;margin:15px 0}.primary,.secondary{border:0;padding:13px 22px;border-radius:7px;background:var(--green);color:white;display:inline-flex;gap:15px;align-items:center;justify-content:center}.secondary{background:transparent;color:var(--green);border:1px solid #ccd4c5}.hero-art{position:relative;display:grid;place-items:center;background:radial-gradient(ellipse at center,#f7f5e9 0,transparent 65%)}.cup{position:relative;width:132px;height:101px;background:#f9f4e5;border-radius:7px 7px 55px 55px;box-shadow:inset -18px 0 #e9e1cb,0 24px 0 -15px #b9c1a6;transform:rotate(-7deg)}.cup:before{content:'';position:absolute;width:48px;height:49px;border:12px solid #e9e1cb;border-radius:50%;right:-36px;top:11px;z-index:-1}.cup:after{content:'';position:absolute;left:8px;right:8px;top:-8px;height:25px;border-radius:50%;background:#6d5140;border:6px solid #f9f4e5}.steam{position:absolute;top:30px;font:50px Georgia;color:#b6bda4;letter-spacing:13px}.art-caption{position:absolute;bottom:29px;font:15px 'Noto Serif JP',serif;letter-spacing:4px}.section-title{display:flex;justify-content:space-between;align-items:center;margin:30px 0 17px}.text-link{font-size:12px;color:var(--green)}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.card{background:#fffdf7;border:1px solid var(--line);border-radius:12px;padding:22px;text-align:left;color:var(--ink)}button.card:hover{border-color:#7c947a;transform:translateY(-2px)}.scene-icon{font-size:28px;display:block;margin-bottom:12px}.card h3{margin:10px 0}.card p{font-size:12px;color:var(--muted);margin:0}.card-bottom{margin-top:20px;font-size:11px;display:flex;justify-content:space-between;color:var(--muted)}.progress{height:5px;border-radius:5px;background:#e7e9df;overflow:hidden;margin-top:12px}.progress span{display:block;height:100%;background:#789371}.daily-phrase{margin-top:25px;border-top:1px solid var(--line);padding:22px 0;display:flex;justify-content:space-between;align-items:center;gap:20px}.jp{font-family:'Noto Serif JP',serif;font-size:24px;line-height:1.9}.icon-btn{border:1px solid var(--line);background:transparent;border-radius:50%;width:43px;height:43px;color:var(--green);font-size:17px;flex-shrink:0}.note{padding:12px 15px;background:#eeeee5;border-radius:7px;font-size:11px;color:#727869;line-height:1.7;margin:20px 0}.lesson{max-width:760px;margin:auto}.back{border:0;background:transparent;color:var(--muted);padding:0 0 22px}.steps{display:flex;gap:8px;margin:25px 0}.steps span{height:4px;background:#e0e4d8;flex:1}.steps span.done{background:var(--green)}.lesson-panel{border:1px solid var(--line);background:#fffdf7;padding:30px;border-radius:14px;margin:20px 0}.speaker{font-size:11px;color:var(--muted);letter-spacing:1px}.dialogue{display:flex;gap:18px;align-items:center;margin:20px 0}.dialogue .jp{flex:1}.translation{color:#7c8276;font-size:14px}.controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:24px}.controls label{font-size:12px;display:flex;gap:5px;align-items:center}.lesson-actions{display:flex;justify-content:space-between;gap:12px;margin:25px 0}.options{display:grid;gap:10px;margin-top:20px}.option{border:1px solid var(--line);background:#fffdf7;border-radius:9px;text-align:left;padding:18px;color:var(--ink)}.option.selected{border-color:var(--green);background:#e7eddf}.feedback{padding:17px;border-radius:8px;background:#e6eddc;line-height:1.8;margin-top:20px}.feedback.wrong{background:#f2e7d9}.finish{text-align:center;padding:35px 0}.finish-symbol{font-size:55px;color:var(--green)}.phrase-row{padding:22px 0;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px}.phrase-row .words{flex:1}.phrase-row .jp{font-size:20px}.saved{background:#e7ecdf;color:#8a6936}.search{width:100%;padding:14px 17px;border:1px solid var(--line);border-radius:8px;background:#fffdf7;color:var(--ink);margin:20px 0}.filter{display:flex;gap:10px}.filter button{padding:8px 15px;border-radius:20px;border:1px solid var(--line);background:transparent;color:var(--ink)}.filter .active{background:var(--green);color:white}#toast{position:fixed;bottom:85px;left:50%;transform:translateX(-50%);background:var(--ink);color:white;padding:12px 20px;border-radius:8px;display:none;max-width:90%;z-index:10;font-size:13px}footer{padding:20px 5%;border-top:1px solid var(--line);font-size:11px;color:var(--muted);display:flex;justify-content:space-between}.empty{padding:40px;text-align:center;color:var(--muted)}@media(min-width:1450px){main{padding-top:55px}.hero{min-height:325px}}@media(max-width:760px){header{height:76px;padding:0 20px}.brand{font-size:23px;gap:8px}.tagline{display:none}.layout{display:block}aside{border:0;padding:0;position:fixed;bottom:0;left:0;right:0;background:#f7f6f0f5;backdrop-filter:blur(10px);z-index:5;border-top:1px solid var(--line)}.nav-label,.aside-note{display:none}nav{display:flex;justify-content:space-around;gap:0}nav a{flex:1;display:grid;gap:2px;text-align:center;padding:10px 3px;border-radius:0;font-size:18px}nav a span{font-size:11px}main{padding:28px 20px 35px}h1{font-size:25px}.heading{margin-bottom:18px}.date{display:none}.hero{grid-template-columns:1.5fr 1fr;min-height:250px}.hero-copy{padding:24px 20px}.hero h2{font-size:23px}.hero-copy p{font-size:12px}.hero .primary{padding:12px;font-size:12px}.cup{width:83px;height:70px}.cup:before{width:32px;height:32px;right:-25px;border-width:9px}.steam{font-size:35px;top:28px}.art-caption{font-size:10px;letter-spacing:2px;bottom:30px}.grid{grid-template-columns:1fr}.card{padding:20px;position:relative}.scene-icon{float:left;margin:0 17px 0 0;font-size:32px}.card h3{margin:0 0 7px}.card-bottom{margin-top:15px}.jp{font-size:21px}.lesson-panel{padding:22px 18px}.lesson-actions .primary,.lesson-actions .secondary{padding:12px 15px}.dialogue{gap:9px}footer{margin-bottom:68px}footer span{display:none}.eyebrow{margin-bottom:12px}.phrase-row .jp{font-size:17px}}
.study-line+ .study-line{border-top:1px solid var(--line);padding-top:22px;margin-top:24px}.task-banner{background:#e6eadd;padding:18px 22px;border-radius:10px;margin:24px 0}.task-banner p{margin:7px 0 0}.self-assess{display:grid;gap:10px}.text-button{border:0;background:transparent;color:var(--green);padding:16px 0;text-decoration:underline}.lesson-panel hr{border:0;border-top:1px solid var(--line);margin:25px 0}.assessment{display:grid;gap:10px;margin:25px}.assessment strong{font-size:36px}.assessment span{font-size:13px;color:var(--muted)}button:disabled{cursor:default;opacity:.65}.lesson .grid{grid-template-columns:1fr}.lesson .card p{line-height:1.8}
ruby{ruby-position:over;ruby-align:center}rt{font-family:"Noto Sans TC",system-ui,sans-serif;font-size:.46em;font-weight:400;color:#65796b;letter-spacing:.04em} .jp:has(ruby){line-height:2.5}
.grammar{border:1px solid var(--line);border-radius:9px;margin:18px 0;background:#f6f7ef}.grammar summary{padding:15px;cursor:pointer;font-size:14px;font-weight:500}.grammar summary span{font-size:11px;color:var(--muted);font-weight:400;display:block;margin:5px 0 0 17px}.grammar-body{padding:0 18px 18px;font-size:13px;line-height:1.9}.grammar h4{margin:20px 0 8px;font-size:12px;color:var(--green)}.grammar dl{margin:0}.grammar dl>div{padding:10px 0;border-bottom:1px solid var(--line)}.grammar dt{font-weight:500;font-size:16px}.grammar dd{margin:5px 0;color:#677165}.grammar .pattern{background:#e6eadd;padding:12px;border-radius:5px}.grammar-example{padding:9px 0}.grammar-example div{font-size:16px}.grammar-example span{font-size:12px;color:var(--muted)}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:25px 0}.stats>div{padding:18px;background:#eeefe5;border-radius:9px;display:grid;gap:6px}.stats strong{font-size:24px;font-weight:500}.stats span{font-size:11px;color:var(--muted)}.resume{display:flex;justify-content:space-between;gap:15px;align-items:center;background:#e6eddd;padding:20px;border-radius:12px}.resume p{font-size:12px;margin-bottom:0}.unit-grid{margin:22px 0}.phrase-entry{border-bottom:1px solid var(--line);padding:30px 0}.phrase-entry .dialogue{margin:12px 0}.filter{flex-wrap:wrap}.file-button{cursor:pointer}.file-button input{display:none}select{max-width:100%;padding:12px;border:1px solid var(--line);border-radius:7px;background:var(--paper);color:var(--ink);margin-top:12px}dialog{border:1px solid var(--line);border-radius:15px;padding:28px;max-width:480px;width:90%;color:var(--ink);background:var(--paper)}dialog::backdrop{background:#183c3566}summary:focus-visible{outline:3px solid var(--accent)}.dialogue .jp{min-width:0;overflow-wrap:anywhere}@media(max-width:760px){nav a{font-size:16px}nav a span{font-size:10px}.resume{align-items:stretch;flex-direction:column}.stats{gap:8px}.stats>div{padding:12px}.stats strong{font-size:21px}.hero{grid-template-columns:1.7fr 1fr}.hero h2{font-size:22px}.hero-copy{padding:24px 16px}.lesson-actions{flex-wrap:wrap} .unit-grid{grid-template-columns:1fr}.grammar dt{overflow-wrap:anywhere}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
