:root{color:#17342d;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--foreground:#17342d;--muted:#5f716a;--background:#f4f0e7;--primary:#175c4b;--primary-dark:#104c3e;--accent:#a2642a;--accent-soft:#eee0cd;--surface:#fffdf8;--line:#17342d21;--shadow:0 24px 70px #2e473e21;background:#f4f0e7;font-family:Songti SC,Noto Serif SC,Source Han Serif SC,Georgia,serif}*{box-sizing:border-box}html{min-width:320px;overflow-x:hidden}body{background-color:var(--background);background-image:radial-gradient(circle at 8% 12%,#a2642a17,#0000 30rem),linear-gradient(115deg,#0000 0 49.85%,#17342d08 50%,#0000 50.15%);min-width:320px;min-height:100vh;margin:0;overflow-x:hidden}button,input{font:inherit}button{cursor:pointer;letter-spacing:.02em;background:var(--primary);color:#fff;border:0;border-radius:15px;min-height:48px;padding:0 20px;font-weight:700;transition:background-color .16s,box-shadow .16s,transform .16s}button:hover{background:var(--primary-dark);transform:translateY(-1px);box-shadow:0 8px 22px #175c4b26}button:active{transform:translateY(0)}button:focus-visible,input:focus-visible,a:focus-visible,h1:focus-visible,h2:focus-visible{outline:3px solid var(--accent);outline-offset:3px}button:disabled{cursor:default;opacity:.62;box-shadow:none;transform:none}button.secondary{color:var(--foreground);background:#e4ece7;box-shadow:inset 0 0 0 1px #17342d1a}button.secondary:hover{background:#d8e4dc}.app-shell{place-items:center;min-height:100dvh;padding:clamp(20px,6vw,48px);display:grid}.today-card{background:var(--surface);width:min(100%,480px);box-shadow:var(--shadow);border:1px solid #17342d14;border-radius:28px;gap:16px;padding:clamp(28px,8vw,48px);animation:.38s ease-out both page-arrival;display:grid;position:relative;overflow:hidden}.today-card:before{content:"";background:var(--accent);width:5px;position:absolute;inset-block:0;inset-inline-start:0}.today-card:after{content:"01";color:#a2642a2e;font-size:3.6rem;font-weight:700;line-height:1;position:absolute;inset-block-start:24px;inset-inline-end:28px}.today-card h1,.today-card p,.session-header h1,.session-header p,.exercise-card h2,.exercise-card p,.hint-list{margin:0}.today-card h1{letter-spacing:-.04em;max-width:7em;font-size:clamp(2rem,10vw,3.5rem);font-weight:700;line-height:1.08;position:relative}.today-card>p:not(.eyebrow){color:#17342dc2;margin-block-end:12px;font-size:1.0625rem;line-height:1.75}.today-card>.recovery-note{border-inline-start:3px solid var(--primary);color:var(--foreground);background:#e4ece7b8;margin-block-end:2px;padding:10px 12px;font-size:.9375rem;font-weight:700;line-height:1.6}.eyebrow,.phase-label{color:var(--accent);letter-spacing:.14em;font-size:.8125rem;font-weight:700}.session-shell{align-items:start}.session-view{width:min(100%,680px);margin-block:clamp(4px,5vh,64px);animation:.32s ease-out both page-arrival}.session-header{justify-content:space-between;align-items:flex-start;gap:20px;margin-block-end:clamp(24px,7vw,42px);padding-inline:clamp(4px,2vw,12px);display:flex}.session-header .eyebrow{margin-block:10px 8px}.session-header h1{letter-spacing:-.035em;font-size:clamp(1.9rem,7vw,3rem);font-weight:700;line-height:1.18}.rescue-badge{color:#764617;background:var(--accent-soft);letter-spacing:.06em;border:1px solid #a2642a3d;border-radius:999px;align-items:center;min-height:30px;padding:3px 12px;font-size:.8125rem;font-weight:700;display:inline-flex}.focus-mark{width:54px;height:54px;color:var(--accent);background:#fffdf894;border:1px solid #a2642a57;border-radius:50%;flex:none;place-items:center;font-size:1.35rem;display:grid;transform:rotate(5deg);box-shadow:inset 0 0 0 5px #f4f0e7a8}.exercise-card{border:1px solid var(--line);background:linear-gradient(90deg, var(--accent) 0 72px, transparent 72px) top left / 100% 4px no-repeat, var(--surface);box-shadow:var(--shadow);border-radius:28px 28px 22px 22px;padding:clamp(26px,7vw,48px);position:relative;overflow:hidden}.exercise-card:after{content:"";background:linear-gradient(90deg, var(--line), transparent);height:1px;position:absolute;inset-block-end:18px;inset-inline:clamp(26px,7vw,48px)}.phase-label{align-items:center;gap:9px;display:flex;margin-block-end:18px!important}.phase-label span{background:currentColor;width:22px;height:1px}.exercise-card h2{max-width:18em;color:var(--foreground);letter-spacing:-.015em;font-size:clamp(1.35rem,5vw,2rem);font-weight:700;line-height:1.55}.speaking-step{gap:22px;display:grid}.speaking-step .phase-label,.speaking-step h2,.speaking-step p{margin:0}.speaking-sentence{overflow-wrap:anywhere;border-inline-start:4px solid var(--accent);color:var(--foreground);background:#eee0cd61;padding:16px 18px;font-size:clamp(1.2rem,6vw,1.7rem);font-weight:700;line-height:1.5}.speaking-actions{gap:10px;display:grid}.speaking-actions button{width:100%;min-height:48px}.speaking-review{border-block:1px solid var(--line);color:var(--muted);gap:14px;padding-block:18px;line-height:1.7;display:grid}.speaking-review span[lang=en]{overflow-wrap:anywhere;color:var(--foreground);font-weight:700}.speaking-review button{width:100%;min-height:52px}.speaking-step>.feedback{min-height:24px}.exercise-card form{gap:14px;margin-block-start:clamp(28px,7vw,42px);display:grid}.exercise-card label{color:var(--muted);letter-spacing:.08em;font-size:.875rem;font-weight:700}.exercise-card input{width:100%;min-width:0;min-height:58px;color:var(--foreground);background:#fffefa;border:1px solid #17342d33;border-radius:12px;padding:12px 15px;font-size:max(1rem,16px);line-height:1.5;box-shadow:inset 0 2px 8px #17342d0a}.exercise-card input:focus{border-color:var(--primary)}.exercise-card input:disabled{color:#17342db8;-webkit-text-fill-color:#17342db8;opacity:1;background:#f2f0e9}.hint-controls{gap:12px;display:grid}.hint-button{min-height:44px;color:var(--accent);text-underline-offset:5px;background:0 0;border-radius:0;justify-self:start;padding:4px 2px;-webkit-text-decoration:underline #a2642a47;text-decoration:underline #a2642a47}.hint-button:hover,.hint-button:disabled{color:#754418;box-shadow:none;background:0 0}.hint-list{gap:8px;padding:0;list-style:none;display:grid}.hint-list:empty{display:none}.hint-list li{border-inline-start:2px solid var(--accent-soft);color:#4f625b;background:#eee0cd61;grid-template-columns:28px minmax(0,1fr);gap:10px;padding:10px 12px;font-size:.9375rem;line-height:1.65;animation:.18s ease-out both hint-arrival;display:grid}.hint-list li span{color:var(--accent);letter-spacing:.08em;font-size:.75rem;font-weight:700}.feedback{color:#8a3e2c;min-height:28px;font-size:.9375rem;font-weight:700;line-height:1.6}.feedback--success{color:var(--primary)}.feedback--saving{color:var(--muted)}.feedback--error{color:#8a3e2c}.primary-action{width:100%;min-height:52px;margin-block-end:14px;box-shadow:0 10px 24px #175c4b29}.completion-card{border:1px solid var(--line);background:linear-gradient(135deg, #eee0cd70, transparent 48%), var(--surface);width:min(100%,500px);box-shadow:var(--shadow);border-radius:30px;gap:18px;padding:clamp(30px,8vw,52px);animation:.32s ease-out both page-arrival;display:grid;position:relative;overflow:hidden}.completion-card:before{content:"";background:var(--primary);width:5px;position:absolute;inset-block:0;inset-inline-start:0}.empty-card:before{background:var(--accent)}.completion-card h1,.completion-card p{margin:0}.completion-card h1{letter-spacing:-.04em;font-size:clamp(2.1rem,10vw,3.5rem);line-height:1.12}.completion-card>p:not(.eyebrow){color:var(--muted);margin-block-end:10px;font-size:1.0625rem;line-height:1.8}.completion-mark{width:66px;height:66px;color:var(--primary);background:#e4ece7;border:1px solid #175c4b33;border-radius:50%;place-items:center;font-size:1.8rem;font-weight:700;display:grid;box-shadow:inset 0 0 0 6px #fffdf89e}.rescue-reminder{color:#684218;background:linear-gradient(90deg,#eee0cd7a,#0000);border-block:1px solid #a2642a2e;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px 14px;margin-block:2px 6px;padding-block:14px;display:grid}.rescue-reminder p{margin:0;font-size:.9375rem;font-weight:700;line-height:1.6}.reminder-dismiss{min-width:44px;min-height:44px;color:var(--accent);text-underline-offset:4px;background:0 0;border-radius:0;padding:4px 2px;font-size:.8125rem;text-decoration:underline}.reminder-dismiss:hover{color:#684218;box-shadow:none;background:0 0}.view-shell{width:min(100%,820px);min-height:100dvh;padding:clamp(28px, 7vw, 64px) clamp(16px, 5vw, 38px) calc(112px + env(safe-area-inset-bottom));margin-inline:auto;animation:.32s ease-out both page-arrival}.view-header{border-block-end:1px solid var(--line);max-width:610px;margin-block-end:clamp(28px,7vw,48px);padding-block-end:20px}.view-header h1,.view-header p{margin:0}.view-header h1{letter-spacing:-.055em;margin-block:8px 12px;font-size:clamp(2.2rem,10vw,4.6rem);line-height:1.05}.view-header>p:not(.eyebrow){max-width:35em;color:var(--muted);line-height:1.75}.app-data-status{z-index:30;width:min(100% - 28px,520px);margin:max(10px, env(safe-area-inset-top)) auto 0;color:var(--muted);text-align:center;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffdf8f0;border:1px solid #17342d24;border-radius:999px;padding:9px 16px;font-size:.8125rem;font-weight:700;line-height:1.5;position:relative;box-shadow:0 10px 30px #2e473e1a}.update-prompt{z-index:40;border:1px solid #17342d2e;border-inline-start:5px solid var(--accent);width:min(100% - 24px,560px);color:var(--foreground);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#fffdf8f7;border-radius:16px 16px 8px;justify-content:space-between;align-items:center;gap:14px;padding:12px 13px 12px 16px;animation:.22s ease-out both update-prompt-arrival;display:flex;position:fixed;inset-block-end:calc(84px + max(8px, env(safe-area-inset-bottom)));inset-inline-start:50%;transform:translate(-50%);box-shadow:0 18px 48px #17342d3d}.update-prompt p{min-width:0;margin:0;font-size:.9375rem;font-weight:700;line-height:1.55}.update-prompt__actions{flex:none;gap:8px;display:flex}.update-prompt__actions button{border-radius:11px;min-height:44px;padding-inline:14px;font-size:.8125rem}.course-save-error{color:#743626;background:#fffdf8e0;border-inline-start:4px solid #8a3e2c;justify-content:space-between;align-items:center;gap:12px;margin-block:-16px 22px;padding:14px 16px;display:flex}.course-save-error p{margin:0;font-size:.9375rem;font-weight:700;line-height:1.55}.course-save-error button{background:#743626;border-radius:10px;flex:none;min-height:44px;font-size:.8125rem}.course-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.lesson-tile{width:100%;min-width:0;min-height:86px;color:var(--foreground);text-align:start;background:#fffdf8e0;border:1px solid #17342d1f;border-radius:12px 12px 6px;align-content:space-between;justify-items:start;gap:7px;padding:13px 14px 12px;display:grid;box-shadow:0 8px 24px #2e473e0f}.lesson-tile:hover{color:#fff;background:var(--primary)}.lesson-tile>span{color:var(--accent);font-variant-numeric:tabular-nums;font-size:1.55rem;line-height:1}.lesson-tile small{color:var(--muted);letter-spacing:.06em;font-size:.75rem;font-weight:700}.lesson-tile:hover>span,.lesson-tile:hover small{color:#fff}.lesson-tile--watched{background:linear-gradient(135deg, #175c4b14, transparent 56%), var(--surface);box-shadow:inset 4px 0 0 var(--primary);border-color:#175c4b47}.lesson-tile:disabled{color:#17342d8f;box-shadow:none;background:#f4f0e794;border-style:dashed}.lesson-tile:disabled>span,.lesson-tile:disabled small{color:#5f716aab}.progress-hero{border:1px solid var(--line);color:#fff;background:radial-gradient(circle at 88% 12%, #ffffff1a, transparent 38%), var(--primary);border-radius:22px 22px 10px;gap:10px;padding:clamp(24px,7vw,38px);display:grid;box-shadow:0 18px 45px #175c4b2b}.progress-hero span{color:#ffffffb8;letter-spacing:.12em;font-size:.8125rem;font-weight:700}.progress-hero strong{letter-spacing:-.045em;font-size:clamp(2rem,10vw,3.8rem);line-height:1.1}.goal-track{background:#ffffff2e;height:5px;margin-block-start:10px;overflow:hidden}.goal-track i{background:#dba563;height:100%;display:block}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-block:10px 0;display:grid}.metric-grid>div{border:1px solid var(--line);background:var(--surface);flex-direction:column;justify-content:space-between;min-width:0;min-height:118px;padding:18px;display:flex}.metric-grid dt{color:var(--muted);letter-spacing:.08em;font-size:.8125rem;font-weight:700}.metric-grid dd{overflow-wrap:anywhere;color:var(--foreground);margin:0;font-size:clamp(1.35rem,6vw,2rem);font-weight:700;line-height:1.25}.metric-grid .level-metric{border-inline-start:4px solid var(--accent);background:linear-gradient(90deg, #eee0cd9e, transparent 65%), var(--surface);grid-column:1/-1;min-height:105px}.weak-point-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.weak-point-list li{border:1px solid var(--line);background:var(--surface);grid-template-columns:38px minmax(0,1fr);gap:12px;min-width:0;padding:20px;display:grid;box-shadow:0 10px 30px #2e473e0d}.list-index{color:var(--accent);font-variant-numeric:tabular-nums;letter-spacing:.08em;font-size:.8125rem;font-weight:700}.weak-point-list div{gap:7px;min-width:0;display:grid}.weak-point-list strong{overflow-wrap:anywhere;font-size:1.0625rem;line-height:1.5}.weak-point-list div span{color:var(--primary);font-weight:700}.weak-point-list time{overflow-wrap:anywhere;color:var(--muted);grid-column:2;font-size:.75rem;line-height:1.5}.empty-note{border-inline-start:4px solid var(--accent);color:var(--muted);background:var(--surface);margin:0;padding:24px;line-height:1.7}.private-access-card,.sync-status-card{border:1px solid var(--line);background:var(--surface);border-radius:24px 24px 16px;gap:18px;width:min(100%,620px);padding:clamp(22px,6vw,34px);display:grid;box-shadow:0 18px 48px #2e473e1a}.private-access-card h2,.private-access-card p,.sync-status-card h2,.sync-status-card p{margin:0}.private-access-card h2,.sync-status-card h2{margin-block-start:7px;font-size:clamp(1.35rem,6vw,1.85rem)}.private-access-card form{gap:12px;display:grid}.private-access-card label{color:var(--muted);font-size:.875rem;font-weight:700}.private-access-card input{width:100%;min-height:54px;color:var(--foreground);background:#fffefa;border:1px solid #17342d33;border-radius:12px;padding:12px 15px;font-size:max(1rem,16px)}.privacy-note,.connection-message,.sync-status-card p:not(.eyebrow){min-height:24px;color:var(--muted);font-size:.875rem;line-height:1.65}.sync-status-card{border-inline-start:5px solid var(--accent);grid-template-columns:minmax(0,1fr) auto;align-items:center;margin-block-start:16px}.sync-status-card button{min-width:112px}.bottom-nav{z-index:20;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#fffdf8f0;border:1px solid #17342d21;border-radius:18px;grid-template-columns:repeat(5,minmax(0,1fr));width:min(100% - 16px,620px);min-height:66px;padding:5px;display:grid;position:fixed;inset-block-end:max(8px, env(safe-area-inset-bottom));inset-inline-start:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 18px 46px #17342d30}.bottom-nav a{min-width:0;min-height:54px;color:var(--muted);border-radius:13px;flex-direction:column;justify-content:center;align-items:center;gap:6px;font-size:clamp(.6875rem,3.5vw,.8125rem);font-weight:700;text-decoration:none;transition:color .16s,background-color .16s;display:flex}.bottom-nav a>span{background:#5f716a59;width:18px;height:2px}.bottom-nav a:hover{color:var(--foreground);background:#e4ece7b8}.bottom-nav a.active{color:var(--primary);background:#e4ece7}.bottom-nav a.active>span{background:var(--accent)}.app-shell{padding-block-end:calc(clamp(100px, 16vh, 130px) + env(safe-area-inset-bottom))}@keyframes page-arrival{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes hint-arrival{0%{opacity:0;transform:translate(-4px)}to{opacity:1;transform:translate(0)}}@keyframes update-prompt-arrival{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@media (width<=359px){.app-shell{padding-inline:12px}.today-card,.completion-card,.exercise-card{border-radius:22px;padding-inline:22px}.today-card:after{font-size:3rem;inset-inline-end:18px}.session-header{gap:10px;padding-inline:2px}.focus-mark{width:46px;height:46px}.exercise-card:after{inset-inline:22px}.rescue-reminder{grid-template-columns:1fr}.reminder-dismiss{justify-self:start}.view-shell,.lesson-tile{padding-inline:12px}.course-save-error{flex-direction:column;align-items:stretch}.course-save-error button{width:100%}.metric-grid>div{padding:15px}.weak-point-list li{padding-inline:14px}.update-prompt{flex-direction:column;align-items:stretch;gap:9px}.update-prompt__actions button{flex:1}}@media (width>=620px){.course-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.weak-point-list li{grid-template-columns:42px minmax(0,1fr) auto;align-items:center}.weak-point-list time{text-align:end;grid-column:auto}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
