:root{--paper:#faf7f0;--white:#fffdf8;--ink:#2e3633;--muted:#747b73;--line:#e5ddd0;--clay:#b55f44;--clay-dark:#904530;--sage:#6f8269;--blue:#446b73;--radius:20px;font-family:Arial,Helvetica,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:var(--blue);text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid #b8cfd0;outline-offset:4px}button{border:0}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:Georgia,'Times New Roman',serif;font-weight:400;line-height:1.15}h1{font-size:clamp(34px,3.5vw,52px);letter-spacing:-1.5px}h2{font-size:32px;letter-spacing:-.7px}h3{font-size:24px}p{line-height:1.7;color:var(--muted)}small,.small{font-size:13px;line-height:1.55;color:var(--muted)}.eyebrow{font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--clay);font-weight:700}.pill{display:inline-flex;align-items:center;gap:7px;padding:7px 11px;border-radius:30px;font-size:12px;background:#eee9df;color:#526953}.pill.blue{background:#e8eff0;color:var(--blue)}.pill.clay{background:#f4e6da;color:var(--clay)}
.testbar{text-align:center;background:#eae4d9;color:#686258;font-size:11px;padding:7px 15px;letter-spacing:.4px}.header{max-width:1240px;padding:25px 42px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:flex;align-items:center;gap:10px;color:var(--ink);font:27px Georgia,serif;letter-spacing:-1px}.sun{color:var(--clay);font-size:30px}.nav{display:flex;align-items:center;gap:28px}.nav a{font-size:13px;color:var(--muted);padding:8px 0}.nav a.active{color:var(--clay);border-bottom:2px solid var(--clay)}.tools{display:flex;gap:12px;align-items:center}.tools select{max-width:140px;background:transparent;border:1px solid var(--line);padding:9px 24px 9px 10px;font-size:12px}.avatar{width:36px;height:36px;border-radius:50%;background:#e9dfce;color:var(--blue);display:grid;place-items:center}.wrap{max-width:1110px;padding:36px 28px 64px;margin:auto}.narrow{max-width:770px}.heading{display:flex;align-items:flex-end;justify-content:space-between;gap:25px;margin-bottom:32px}.heading p{margin-top:12px;max-width:580px}.footer{max-width:1110px;margin:0 auto;padding:25px 28px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:20px;font-size:11px;color:var(--muted)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:12px;padding:15px 24px;background:var(--clay);color:white;border-radius:9px;min-height:48px;font-size:14px;line-height:1.4;transition:background .15s,transform .15s}.btn:hover{background:var(--clay-dark);transform:translateY(-1px)}.btn.secondary{background:transparent;color:var(--ink);border:1px solid #cec8bc}.btn.secondary:hover{background:#f1ece3}.btn.blue{background:var(--blue)}.btn.small{padding:9px 14px;min-height:38px;font-size:12px}.btn.full{width:100%}.link{background:transparent;color:var(--blue);padding:8px 0;text-align:left;font-size:13px}.row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.between{justify-content:space-between}.stack{display:grid;gap:18px}.gap{margin-top:24px}.muted{color:var(--muted)}.card{padding:28px;border:1px solid var(--line);background:var(--white);border-radius:var(--radius)}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.three{grid-template-columns:repeat(3,minmax(0,1fr))}.notice{padding:14px 18px;background:#f1ecdf;border-radius:10px;font-size:13px;line-height:1.6;color:#766443}.notice.error{background:#f7e7df;color:#8d4433}.empty{text-align:center;padding:55px 24px}.divider{height:1px;background:var(--line);margin:24px 0}
.onboard{max-width:1150px;margin:28px auto 50px;display:grid;grid-template-columns:1.03fr 1fr;min-height:630px;border:1px solid var(--line);border-radius:25px;overflow:hidden;background:var(--white)}.onboard-content{padding:47px 58px;display:flex;flex-direction:column;justify-content:center}.onboard h1{font-size:39px;max-width:440px;margin:20px 0 18px}.onboard .intro{font-size:14px;margin-bottom:28px}.onboard .actions{margin-top:30px;display:flex;align-items:center;justify-content:space-between}.art{position:relative;background:#e6d9c1;overflow:hidden;min-height:530px}.art svg{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}.art-copy{position:absolute;bottom:35px;left:36px;right:35px;background:rgba(255,250,237,.86);padding:20px 24px;border-radius:14px;backdrop-filter:blur(8px)}.art-copy strong{font:28px Georgia,serif;display:block;margin-bottom:5px}.art-copy span{font-size:12px;color:#656b61}.step-track{display:flex;gap:6px;margin-bottom:10px}.step-track span{width:28px;height:3px;border-radius:5px;background:#e4ded2}.step-track span.done{background:var(--clay)}label{display:grid;gap:9px;font-size:13px}.field,input:not([type=checkbox]):not([type=radio]),select,textarea{width:100%;border:1px solid #d9d2c5;border-radius:8px;padding:13px 14px;color:var(--ink);background:#fffdfa;outline:none}input:focus,textarea:focus,select:focus{border-color:var(--clay);box-shadow:0 0 0 3px #b55f4418}textarea{resize:vertical;min-height:80px}input[type=checkbox]{accent-color:var(--clay);width:17px;height:17px;flex-shrink:0}.check{display:flex;align-items:flex-start;gap:10px;font-size:12px;line-height:1.6}.choices{display:grid;grid-template-columns:1fr 1fr;gap:10px}.choice{border:1px solid var(--line);border-radius:10px;padding:15px;text-align:left;background:var(--white);font-size:14px;color:var(--ink);min-height:52px}.choice.selected{border-color:var(--clay);background:#f8eee5;box-shadow:inset 0 0 0 1px var(--clay)}.choice small{display:block;margin-top:5px;font-size:11px}.choices.single{grid-template-columns:1fr}.preview{padding:20px;border-radius:12px;background:#f3eee4;margin:6px 0 24px}.preview h3{font-size:24px;margin:9px 0}.form-error{color:#984630;line-height:1.5;font-size:13px;min-height:20px;margin-top:14px}
.hero{display:grid;grid-template-columns:1.3fr .7fr;overflow:hidden;padding:0;margin-bottom:25px}.hero-body{padding:40px;display:grid;gap:20px}.hero h2{font-size:38px;max-width:500px}.hero .art{min-height:330px}.hero .art svg{height:auto;top:-75px}.meter{height:7px;background:#e9e5dc;border-radius:7px;overflow:hidden;margin:16px 0 12px}.meter>span{display:block;height:100%;background:var(--sage);border-radius:7px}.balance{font:34px Georgia,serif;letter-spacing:-.8px}.balance small{font:13px Arial,sans-serif;letter-spacing:0}.days{display:flex;gap:9px;margin:17px 0}.day{width:31px;height:31px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;font-size:11px;color:var(--muted)}.day.done{background:#dce5d7;color:#506d52;border-color:transparent}.stage-row{display:grid;grid-template-columns:45px 1fr auto;gap:20px;align-items:center;padding:25px 0;border-bottom:1px solid var(--line)}.stage-number{height:44px;width:44px;display:grid;place-items:center;border-radius:50%;background:#ece6da;color:var(--muted);font-family:Georgia,serif;font-size:20px}.stage-row.current .stage-number{background:var(--clay);color:white}.stage-row.completed .stage-number{background:#dce6d8;color:#537151}.stage-row h3{font-size:24px;margin:5px 0 8px}.stage-row.locked{opacity:.65}.lesson-list{margin:0;padding:0;list-style:none}.lesson-list li{padding:17px 0;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:15px}.phrase{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:18px 0;border-bottom:1px solid var(--line)}.phrase strong{font:22px Georgia,serif;display:block;margin-bottom:6px}.phrase p{font-size:13px}.icon-btn{background:#f0e9dc;color:var(--blue);border-radius:50%;width:38px;height:38px}.session{text-align:center;padding:45px 20px}.orb{width:145px;height:145px;margin:32px auto;background:radial-gradient(circle at 32% 25%,#e8bd8d,#bd775d 50%,#708c88);border-radius:50%;box-shadow:0 0 0 17px #f2e9dd,0 0 0 34px #f7f0e5}.orb.live{animation:breathe 2.8s infinite ease-in-out}.session-clock{font:36px Georgia,serif;margin:24px 0}.session .row{justify-content:center}.session-status{margin-top:55px}.transcript{max-height:250px;overflow:auto;text-align:left;padding:15px;background:#f4f0e7;border-radius:12px;margin-top:15px}.transcript p{padding:8px;font-size:13px}.review-card{min-height:240px;display:grid;place-items:center;text-align:center;background:#f6eee1;border:1px solid var(--line);border-radius:20px;padding:35px;margin:25px 0}.review-card h2{font-size:32px}.price-card{display:flex;flex-direction:column;gap:20px;position:relative}.price-card.featured{border-color:var(--clay);background:#fbf1e7}.price{font:45px Georgia,serif;letter-spacing:-1px}.price small{font:13px Arial,sans-serif;letter-spacing:0}.price-card ul{padding-left:18px;line-height:2;font-size:13px;color:var(--muted);flex:1}.price-card h2{font-size:27px}.admin-nav{display:flex;gap:7px;flex-wrap:wrap;margin:25px 0}.admin-nav a{font-size:12px;padding:10px 14px;border:1px solid var(--line);border-radius:7px}.admin-nav a.active{background:var(--blue);color:white}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:13px;text-align:left}th{color:var(--muted);font-size:11px;font-weight:400;text-transform:uppercase;letter-spacing:1px}td,th{padding:16px 12px;border-bottom:1px solid var(--line);vertical-align:top}td:first-child,th:first-child{padding-left:0}.metric strong{font:39px Georgia,serif;display:block;margin:15px 0}.metric span{font-size:12px;color:var(--muted)}details summary{cursor:pointer;color:var(--blue);font-size:13px;padding:12px 0}pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;line-height:1.7;background:#f1ede4;padding:20px;border-radius:12px}.pending{color:#977440}.success{color:#4e7255}#toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,20px);background:#334c45;color:white;border-radius:12px;padding:15px 24px;box-shadow:0 8px 30px #0002;opacity:0;pointer-events:none;transition:.2s;max-width:90vw;z-index:100;font-size:13px}#toast.show{opacity:1;transform:translate(-50%,0)}.loading{text-align:center;padding:100px 20px;color:var(--muted)}@keyframes breathe{50%{transform:scale(1.05);box-shadow:0 0 0 20px #f2e9dd,0 0 0 40px #f7f0e5}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media(max-width:950px){.header{padding:20px}.nav{gap:15px}.onboard{margin:20px;grid-template-columns:1fr 42%}.onboard-content{padding:38px 30px}.tools select{max-width:110px}.three{grid-template-columns:1fr}.price-card ul{margin:0}.hero-body{padding:30px}.hero h2{font-size:31px}}
@media(max-width:680px){.header{flex-wrap:wrap;gap:15px}.brand{font-size:24px}.nav{order:3;width:100%;justify-content:space-between;gap:12px}.nav a{font-size:12px}.tools select{max-width:105px;padding:9px 5px}.onboard{display:block;min-height:0;margin:10px 15px 25px}.onboard-content{padding:30px 25px}.onboard h1{font-size:34px}.onboard .art{display:none}.wrap{padding:25px 20px 45px}.heading{align-items:flex-start}.heading h1{font-size:36px}.grid{grid-template-columns:1fr}.hero{grid-template-columns:1fr}.hero .art{min-height:155px}.hero .art svg{top:-230px;opacity:.9}.hero-body{padding:27px}.card{padding:23px}.hero.card{padding:0}.stage-row{grid-template-columns:34px 1fr;gap:13px}.stage-row .btn{grid-column:2;justify-self:start}.stage-number{width:34px;height:34px}.stage-row h3{font-size:23px}.footer{padding:22px}.choices{gap:8px}.choice{padding:13px;font-size:13px}.session{padding:20px 0}.row .btn{flex-grow:1}.art-copy{display:none}}
[hidden]{display:none!important}
@media(max-width:950px){.header{flex-wrap:wrap}.nav{order:3;width:100%;justify-content:center}.tools{margin-left:auto}.tools select{max-width:150px}}@media(max-width:680px){.nav{justify-content:space-between}.tools select{max-width:145px}.header:has(#spanish-variant) .tools{width:100%;margin:0}.header:has(#spanish-variant) .tools select{flex:1}}

/* Approved Spanish tutor theme: ivory, terracotta, ceramic blue and detailed local artwork. */
:root{--paper:#fcf9f3;--white:#fffdf8;--ink:#172523;--muted:#58615f;--line:#dacebe;--clay:#b7472c;--clay-dark:#95361f;--blue:#315d7c;--radius:13px}
body{font-size:16px}h1,h2,h3{font-weight:500;letter-spacing:-.035em}h1{font-size:clamp(38px,4.4vw,66px)}h2{font-size:clamp(30px,3vw,44px)}h3{font-size:28px}p{line-height:1.6}small,.small{font-size:14px;color:var(--muted)}.eyebrow{font-size:11px;letter-spacing:2px;color:#355669}.gap{margin-top:22px}.testbar{background:#eee8dd;color:#665e50;font-size:11px;padding:5px 15px;letter-spacing:.2px}
.header{max-width:1510px;margin:auto;padding:19px 48px;gap:30px;border-bottom:1px solid var(--line)}.brand{font-size:32px;white-space:nowrap;gap:11px;letter-spacing:-1.3px}.terracotta-sun{color:var(--clay);width:49px;height:49px;display:block;flex-shrink:0}.brand span{color:var(--ink)}.nav{gap:10px}.nav a,.account-button{display:inline-flex;justify-content:center;align-items:center;gap:10px;padding:11px 18px;min-height:46px;border:1.5px solid #ac9681;border-radius:10px;font-size:15px;color:var(--ink);background:var(--white);white-space:nowrap;transition:background .15s,border-color .15s}.nav a.active{border:1.5px solid var(--clay);background:#f7e4d7;color:#973b24}.nav a:hover,.account-button:hover{background:#f4eadd;border-color:var(--clay)}.tools{gap:12px}.header-picker{display:flex;align-items:center;gap:8px;border:1.5px solid #ac9681;padding:0 8px 0 12px;background:var(--white);border-radius:10px;min-height:46px}.header-picker svg{flex-shrink:0}.header-picker select{border:0!important;border-radius:0;background:transparent;font-size:14px;padding:10px 24px 10px 0;max-width:128px;min-width:70px;box-shadow:none!important;cursor:pointer}.variant-picker select{max-width:185px}.header-picker:focus-within{outline:3px solid #adcbd5;outline-offset:3px}.tools .account-button{padding:10px 13px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.wrap{max-width:1280px;padding:46px 44px 65px}.narrow{max-width:840px}.heading{margin-bottom:32px}.heading p{max-width:700px}.footer{max-width:1414px;padding:24px 44px;align-items:center;font-size:12px;line-height:1.5}.footer-link{border:1px solid #af9e8a;border-radius:8px;padding:9px 17px;color:var(--ink);background:var(--white);min-height:40px;display:inline-flex;align-items:center}.footer-link:hover{background:#f1e7da}
.btn{font-size:16px;padding:15px 24px;min-height:50px;border-radius:9px;border:1.5px solid transparent;box-shadow:none;font-weight:500}.btn.secondary{background:var(--white);border:1.5px solid #a68e77;color:var(--ink)}.btn.secondary:hover{background:#f2e6d7;border-color:var(--clay)}.btn.small{font-size:14px;min-height:43px;padding:10px 16px}.btn svg{flex-shrink:0}.link{display:inline-flex;justify-content:center;align-items:center;gap:9px;border:1.5px solid #b09b86;border-radius:8px;background:var(--white);color:var(--ink);padding:10px 16px;min-height:44px;font-size:14px;line-height:1.4;vertical-align:middle}.link:hover:not(:disabled){background:#f2e8dc;border-color:var(--clay)}.link:disabled{background:transparent;opacity:.4}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid #a68e77;background:var(--white);flex-shrink:0}.icon-btn:hover{background:#f2e8dc}.btn:focus-visible,.link:focus-visible,.nav a:focus-visible,.account-button:focus-visible,.footer-link:focus-visible,.choice:focus-visible{outline:3px solid #87b1c5;outline-offset:4px}.card{background:var(--white);padding:30px;border:1px solid #d5c8b8;border-radius:13px}.grid{gap:24px}.notice{color:#655340;background:#f1e7d6;padding:16px 20px}.recovery-notice{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:22px}.form-error{color:#9d3524;min-height:0}.form-error:empty{display:none}
.onboard{max-width:1414px;margin:34px auto 52px;grid-template-columns:1fr 1.04fr;gap:8%;padding:0 44px;border:0;border-radius:0;background:transparent;overflow:visible;min-height:650px}.onboard-content{order:2;padding:35px 0 25px;max-width:590px;justify-content:center}.onboard .art{order:1;min-height:650px;border:3px solid #ead4b7;border-radius:48% 48% 0 0 / 30% 30% 0 0;align-self:stretch;background:#e4d3ba;box-shadow:none}.art .scene-image{width:100%;height:100%;display:block;object-fit:cover;object-position:center;position:absolute;inset:0}.onboard .art-copy{display:none}.onboard h1{font-size:clamp(37px,3.55vw,55px);max-width:600px;margin:23px 0 20px;font-weight:500;line-height:1.12}.onboard .intro{font-size:17px;line-height:1.6;margin-bottom:27px;color:#45504b;max-width:540px}.step-track{margin-bottom:22px;gap:7px}.step-track span{flex:1;width:auto;height:6px;background:#e8ded0}.step-track span.done{background:var(--clay)}.onboard .actions{margin-top:29px;gap:18px}.onboard .actions .btn{min-width:180px;flex:1}.onboard .actions .link{min-width:85px}.onboard .actions .link:disabled{display:none}.onboard label{font-size:15px}.onboard input:not([type=checkbox]):not([type=radio]){min-height:55px;font-size:17px}.choice{font-size:16px;border:1.5px solid #b4a18e;border-radius:9px;min-height:55px;padding:15px 18px;background:var(--white);position:relative}.choice:hover{border-color:var(--clay);background:#faf1e6}.choice.selected{background:#f9e8da;border-color:var(--clay);box-shadow:inset 0 0 0 .5px var(--clay)}button.choice.selected::after{content:'✓';position:absolute;right:15px;top:16px;color:var(--clay);font-weight:700}button.choice.selected{padding-right:37px}.choice small{font-size:13px;line-height:1.5;color:#5e635c}.choices{gap:12px}.preview{background:#f5ecdf;border:1px solid #deceb9;padding:22px}.check{font-size:14px;line-height:1.55;align-items:flex-start}.check input{margin-top:3px;min-width:18px}input[type=radio]{accent-color:var(--clay)}input:not([type=checkbox]):not([type=radio]),select,textarea{border-color:#b3a28f;background:var(--white);font-size:15px}.onboard textarea{min-height:76px}
.today-page{max-width:1500px;padding:28px 48px 38px}.today-hero{display:grid;grid-template-columns:.9fr 1fr;gap:40px;align-items:stretch}.today-copy{padding:22px 0 34px;display:flex;flex-direction:column;justify-content:space-between;gap:50px}.today-welcome h1{font-size:clamp(45px,5.3vw,82px);font-weight:500;letter-spacing:-.045em;line-height:1.08;overflow-wrap:anywhere}.today-welcome p{font-size:clamp(17px,1.6vw,23px);line-height:1.5;margin-top:16px;max-width:610px;color:var(--ink)}.next-conversation h2{font-size:clamp(35px,4.1vw,65px);line-height:1.1;font-weight:500;margin:15px 0 13px;max-width:610px}.lesson-outcome{font-size:clamp(19px,1.8vw,26px);color:var(--ink);max-width:560px;line-height:1.5}.lesson-meta{margin-top:16px;font-size:15px;color:#3d5a6b}.start-speaking{margin-top:26px;min-width:290px;min-height:61px;padding:16px 35px;font-size:21px;gap:26px}.start-speaking svg{width:27px;height:27px}.today-art{min-height:550px;border:3px solid #edd7b9;border-radius:58% 16px 16px 16px / 52% 16px 16px 16px;background:#eadac2}.today-art .scene-image{object-position:center 57%}.today-bottom{margin-top:24px;gap:22px}.today-bottom .card{padding:23px 28px}.quick-practice h3{font-size:30px;margin:10px 0 7px;letter-spacing:-.025em}.quick-practice .btn{margin-top:18px;min-height:44px;padding:11px 22px;font-size:15px}.balance{font:500 31px/1.2 Georgia,serif;letter-spacing:-.035em;margin-top:10px}.meter{height:12px;margin:15px 0;background:#e6e0d6}.meter>span{background:#397cae}.allowance-bottom{display:flex;justify-content:space-between;align-items:center;gap:18px}.allowance-bottom p{max-width:310px}.allowance-bottom .btn{flex-shrink:0}
.stage-row{padding:28px 0}.stage-row h3{font-size:28px;line-height:1.2}.stage-row.current{background:#fbf1e5;margin:0 -20px;padding:28px 20px;border-radius:13px;border:1px solid #d7b49a}.stage-row.locked{opacity:1}.stage-row.locked .stage-number{background:#ece4d8;color:#6a6c64}.stage-row.locked h3{color:#656c65}.lesson-list li{padding:25px 0}.lesson-list .btn{flex-shrink:0}.review-card{background:#f6ecdd;min-height:295px}.review-card h2{font-size:40px}.review-card>div>p{font-size:20px}.phrase strong{font-size:25px}.phrase small{display:block}
.lesson-prep{display:grid;grid-template-columns:1.05fr .95fr;gap:50px;align-items:center;max-width:1260px}.lesson-prep .art{min-height:650px;border-radius:47% 47% 14px 14px / 30% 30% 14px 14px;border:3px solid #ecd5b5}.prep-content h1{margin-top:15px;font-size:clamp(40px,4vw,57px)}.prep-outcome{font-size:21px;color:var(--ink);margin-top:18px}.prep-details{margin:22px 0;display:flex;gap:9px;flex-wrap:wrap}.prep-help{margin-top:20px}.voice-privacy{padding-top:22px;margin-top:24px;border-top:1px solid var(--line)}.privacy-notice{font-size:13px;line-height:1.65;color:#59615d;margin-top:15px}.consent-saved{display:flex;align-items:center;gap:8px;font-size:14px;color:#536a4c}.prep-actions{margin-top:24px;display:flex;gap:12px;flex-wrap:wrap}.prep-actions .btn{flex:1}.permission-hint{font-size:12px;margin-top:14px;color:#686e66}.session-layout{display:grid;grid-template-columns:.8fr 1fr;gap:32px;max-width:1250px;align-items:stretch}.session-layout .art{border-radius:48% 48% 12px 12px / 32% 32% 12px 12px;min-height:680px;border:3px solid #ecd5b5}.session-layout .session{padding:37px 32px}.session h2{font-size:39px}.tutor-sun{display:grid;place-items:center;width:196px;height:196px;margin:30px auto 18px;border-radius:50%;background:#fcf0da;position:relative}.tutor-sun::before{content:'';position:absolute;inset:8px;border:1px solid #d6ad7d;border-radius:50%;opacity:.45}.tutor-sun .terracotta-sun{height:149px;width:149px;transform:scale(var(--voice-scale,1));transition:transform .13s ease-out;filter:none}.tutor-sun.is-speaking .sun-rays{animation:sun-rays-breathe 1.5s ease-in-out infinite;transform-origin:50px 50px}.tutor-sun.is-speaking::before{animation:sun-ring-breathe 1.7s ease-in-out infinite}.tutor-sun.is-connecting .terracotta-sun{opacity:.6}.session-status{margin-top:12px;font-size:17px;color:var(--ink);min-height:28px}.session-clock{font:38px/1.2 Georgia,serif;margin:20px 0 6px;font-variant-numeric:tabular-nums}.session .row{gap:12px}.session .row .btn{flex:1}.session .privacy-notice{text-align:left}.session details{text-align:left}.transcript{background:#f6ede1}.paused-sun{width:125px;height:125px;margin:15px auto;color:var(--clay)}.paused-sun .terracotta-sun{width:100%;height:100%;opacity:.75}.orb{display:none}
.price-card{padding:30px 27px;gap:17px}.price-card.featured{background:#fcf0e3;border:1.5px solid var(--clay)}.price-card h2{font-size:34px}.price-card .price{font-size:49px}.price-card ul{line-height:1.7;font-size:15px;display:grid;gap:12px;margin:5px 0 15px}.programme-estimate{font-size:14px;line-height:1.55;color:#31546d;border-top:1px solid #dbcfbc;padding-top:15px}.estimate-note{font-size:13px;color:#58615c;margin:20px 0 30px;max-width:850px}.price-card .btn{font-size:15px}.price-card p{font-size:15px}details summary{border:1px solid #b9a58e;background:#fcf7ed;border-radius:8px;padding:13px 16px;color:var(--ink);font-size:14px;min-height:44px}details[open]>summary{margin-bottom:18px;background:#f4e8d7}details.card{padding:22px}.admin-nav{gap:9px}.admin-nav a{border:1.5px solid #ad9780;background:var(--white);color:var(--ink);min-height:43px;padding:11px 17px;font-size:14px}.admin-nav a.active{background:var(--clay);border-color:var(--clay);color:white}.admin-nav a:hover{background:#f0e1cc;color:var(--ink)}td,th{padding:16px 14px}.table-wrap{max-width:100%}td{line-height:1.6}.metric strong{font-size:48px}.metric .eyebrow{line-height:1.6}.metric span{font-size:13px}.footer a:focus-visible{outline:3px solid #87b1c5;outline-offset:3px}
@keyframes sun-rays-breathe{0%,100%{opacity:.72;transform:scale(.97)}50%{opacity:1;transform:scale(1.055)}}@keyframes sun-ring-breathe{0%,100%{transform:scale(.97);opacity:.2}50%{transform:scale(1.05);opacity:.65}}
@media(min-width:1500px){.onboard{min-height:720px}.onboard .art{min-height:720px}.today-art{min-height:605px}.today-copy{gap:65px}}
@media(max-width:1190px){.header{padding:18px 30px;gap:20px;flex-wrap:wrap}.brand{font-size:28px}.nav{gap:8px}.nav a{padding:10px 14px}.tools{margin-left:auto}.header:has(.variant-picker) .nav{order:3;width:100%;justify-content:center}.today-page{padding:28px 32px 40px}.today-hero{gap:28px}.today-art{min-height:500px}.today-copy{gap:38px}.today-welcome h1{font-size:60px}.next-conversation h2{font-size:47px}.onboard{gap:6%;padding:0 32px;min-height:620px}.onboard .art{min-height:620px}.onboard h1{font-size:42px}.allowance-bottom{align-items:flex-start;flex-wrap:wrap}.balance{font-size:27px}.lesson-prep{gap:35px}.session-layout{gap:25px}}
@media(max-width:950px){.header .nav{order:3;width:100%;justify-content:center}.header .tools{margin-left:auto}.onboard{grid-template-columns:.8fr 1fr;margin:28px 0 40px}.onboard-content{padding:22px 0}.onboard h1{font-size:37px}.onboard .art{min-height:660px}.today-hero{grid-template-columns:1fr .85fr}.today-welcome h1{font-size:51px}.today-copy{padding:15px 0 25px;gap:35px}.today-welcome p{font-size:18px}.today-art{min-height:470px}.next-conversation h2{font-size:41px}.lesson-outcome{font-size:20px}.start-speaking{min-width:240px;font-size:18px}.today-bottom .card{padding:24px}.three{grid-template-columns:1fr}.price-card{max-width:640px;width:100%;margin:auto}.price-card ul{margin:0}.lesson-prep{grid-template-columns:1fr .75fr;gap:26px}.lesson-prep .art{min-height:680px}.session-layout{grid-template-columns:.6fr 1fr}.session-layout .session{padding:30px 24px}.session-layout .art{min-height:650px}}
@media(max-width:680px){.header{padding:14px 19px;gap:16px}.brand{font-size:24px;gap:7px}.brand .terracotta-sun{width:36px;height:36px}.header .tools{gap:7px}.header .nav{gap:8px;justify-content:stretch}.nav a{flex:1;font-size:14px;padding:10px 12px}.account-button{font-size:14px}.tools .account-button{padding:10px}.account-button svg{display:none}.header-picker{padding:0 4px 0 8px}.header-picker svg{width:16px;height:16px}.header-picker select{font-size:13px;max-width:102px;padding-right:12px}.header:has(.variant-picker) .tools{width:100%;flex-wrap:wrap}.variant-picker{flex:1}.variant-picker select{max-width:100%;width:100%}.tools .variant-picker+label{flex:1}.wrap,.today-page{padding:26px 21px 40px}.onboard{display:flex;flex-direction:column;padding:0 22px;margin:23px 0 35px;gap:26px;min-height:0}.onboard .art{display:block;order:0;min-height:210px;height:210px;max-width:100%;border-radius:100px 100px 12px 12px / 90px 90px 12px 12px}.onboard .scene-image{object-position:center 46%}.onboard-content{order:1;padding:0;width:100%;max-width:none}.onboard h1{font-size:38px;max-width:550px;margin-top:17px}.onboard .intro{font-size:16px;margin-bottom:22px}.step-track{margin-bottom:16px}.onboard .actions{margin-top:24px}.choice{padding:15px;font-size:15px}.choice small{font-size:13px}.today-hero{grid-template-columns:1fr;gap:25px}.today-copy{gap:30px;padding:0}.today-welcome h1{font-size:55px}.today-welcome p{font-size:18px;max-width:440px}.next-conversation h2{font-size:43px}.lesson-outcome{font-size:21px}.today-art{min-height:250px;max-height:300px;height:270px;border-radius:140px 12px 12px 12px / 140px 12px 12px 12px}.today-art .scene-image{object-position:center 67%}.start-speaking{width:100%;font-size:20px;min-height:57px}.today-bottom{grid-template-columns:1fr;gap:16px}.today-bottom .card{padding:24px}.quick-practice h3{font-size:29px}.allowance-bottom{align-items:center}.balance{font-size:29px}.card{padding:25px}.grid{grid-template-columns:1fr}.heading h1{font-size:39px}.heading{gap:16px}.heading .pill{flex-shrink:0}.stage-row{grid-template-columns:38px 1fr}.stage-row h3{font-size:25px}.stage-row .btn{grid-column:2;justify-self:start}.stage-row.current{margin:0 -8px;padding:24px 8px}.lesson-list li{align-items:flex-start;flex-wrap:wrap}.footer{padding:20px 22px}.footer span{max-width:235px}.lesson-prep{display:flex;flex-direction:column;align-items:stretch;gap:28px}.lesson-prep .art{min-height:240px;height:240px;order:-1;border-radius:100px 100px 12px 12px / 90px 90px 12px 12px}.lesson-prep .scene-image{object-position:center 60%}.prep-content h1{font-size:41px}.prep-actions{gap:10px}.prep-actions .btn{min-width:150px}.session-layout{display:block}.session-layout .art{display:none}.session-layout .session{padding:28px 22px}.session h2{font-size:35px}.tutor-sun{width:174px;height:174px}.tutor-sun .terracotta-sun{width:134px;height:134px}.session .row{flex-wrap:wrap}.session .row .btn{min-width:160px}.session .privacy-notice{font-size:12px}.price-card{padding:28px}.price-card .price{font-size:45px}.price-card p{font-size:16px}.recovery-notice{align-items:flex-start;flex-direction:column}.row .btn{flex-grow:0}.row{gap:12px}}
@media(max-width:390px){.brand{font-size:23px}.header .tools{width:100%;justify-content:space-between}.header-picker{flex:1}.header-picker select{max-width:100%;width:100%}.tools .account-button{min-width:110px}.onboard h1{font-size:34px}.choices{grid-template-columns:1fr}.today-welcome h1{font-size:45px}.next-conversation h2{font-size:38px}.allowance-bottom .btn{width:100%}.review-card{padding:25px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.tutor-sun .terracotta-sun{transform:none!important}}

/* The approved ivory, terracotta, ceramic blue and Spanish courtyard theme. */
:root{--paper:#fffdf8;--white:#fffefa;--ink:#111918;--muted:#476079;--line:#ded5c9;--clay:#b94329;--clay-dark:#96331f;--blue:#315d80}
body{background:var(--paper)}h1,h2,h3{font-weight:600}p{color:#25332f}.small,small{color:#49627a}.header{max-width:1580px;padding:18px 4%;gap:24px}.brand{font-size:33px;letter-spacing:-1.2px;font-weight:700}.nav a{min-width:92px;padding:13px 19px}.wrap{max-width:1440px;padding:42px 4% 62px}.narrow{max-width:840px}.btn:not(.secondary){background:var(--clay);color:#fff!important}.btn:not(.secondary):hover{background:var(--clay-dark)}.btn[disabled]{opacity:.5}.nav a.active{background:#f9e6d8;border-color:var(--clay);color:#a4361d}.card{background:rgba(255,254,250,.82);border-radius:11px}.intro{font-size:20px;line-height:1.6;margin:20px 0 28px;max-width:760px}.art{border:1px solid #dcc4a6;background:#f3e5d0;overflow:hidden}.scene-image{width:100%;height:100%;object-fit:cover}.today-page{padding-top:32px}.today-hero{grid-template-columns:1fr 1.08fr;gap:40px}.today-copy{padding:22px 0 12px;gap:47px}.today-welcome h1{font-size:clamp(50px,5.3vw,82px);font-weight:600}.today-welcome p{font-size:21px;max-width:610px}.next-conversation h2{font-size:clamp(37px,4.7vw,65px);line-height:1.08;margin:16px 0 14px}.lesson-outcome{font-size:24px}.lesson-meta{font-size:17px;color:var(--blue);margin:22px 0}.start-speaking{font:600 24px Georgia,serif;min-width:300px;min-height:62px;justify-content:space-between}.today-art{min-height:540px;border-radius:250px 15px 15px 15px / 250px 15px 15px 15px}.today-bottom{margin-top:24px;gap:24px}.today-bottom .card{padding:28px}.quick-practice h3{font-size:32px}.balance{font-family:Georgia,serif;font-weight:600;font-size:32px}.meter{height:13px;margin:17px 0;background:#ece5de}.blue-meter>span{background:#3378aa}.allowance-bottom{margin-top:16px}.plan-page,.words-page{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(260px,.8fr);gap:48px;align-items:start}.plan-page h1,.words-page h1{font-size:clamp(40px,4.5vw,62px)}.plan-art,.words-art{position:sticky;top:24px;height:720px;border-radius:190px 14px 14px 14px / 180px 14px 14px 14px}.words-art{height:690px}.plan-art img{object-position:50% 30%}.stage-list{margin-top:30px}.stage-row{padding:21px 0;grid-template-columns:40px 1fr auto;gap:16px}.stage-row.current{border:1px solid #d5ae91;background:#fff2e5;padding:22px 16px;border-radius:12px;margin:8px -16px}.stage-row.current .btn{color:#fff!important;background:var(--clay)!important}.stage-row h3{font-size:24px}.stage-number{width:35px;height:35px;background:#eff2f3;color:var(--blue);font:20px Georgia,serif}.stage-row.current .stage-number{background:var(--clay);color:white}.word-list .phrase{padding:24px 0;gap:25px}.word-list h3{font-size:25px;letter-spacing:-.02em}.word-list .btn{flex-shrink:0}.pricing-heading{display:flex;justify-content:space-between;gap:32px;align-items:start;margin-bottom:32px}.pricing-heading h1{max-width:850px;font-size:55px}.pricing-heading label{min-width:140px}.pricing-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,.38fr);gap:30px}.pricing-art{height:690px;border-radius:140px 12px 12px 12px / 140px 12px 12px 12px}.price-card{display:flex;flex-direction:column;gap:17px}.price-card h2{font-size:32px}.price-card .btn{margin-top:auto}.price-card .price,.price{font:600 48px Georgia,serif;color:var(--ink)}.price-card ul{padding-left:20px;line-height:1.8}.topup-card{display:flex;align-items:center;gap:22px;flex-wrap:wrap}.topup-card>div{flex:1}.topup-card h3{font-size:30px;margin-top:10px}.topup-price{font:600 31px Georgia,serif}.auth-page{min-height:640px}.auth-page .onboard-content{max-width:500px}.auth-page h1{font-size:52px}.grow{flex:1}.break-word{overflow-wrap:anywhere}.admin-shell{display:grid;grid-template-columns:240px minmax(0,1fr);max-width:1540px;margin:auto;min-height:80vh}.admin-sidebar{border-right:1px solid var(--line);padding:32px 22px}.admin-sidebar nav{display:grid;gap:8px;margin-top:24px}.admin-sidebar nav a{display:flex;align-items:center;gap:13px;padding:14px 12px;border-radius:10px;color:#193f60;font-size:16px;border:1px solid transparent}.admin-sidebar nav a:hover{border-color:#d1bca6;background:#f8f0e5}.admin-sidebar nav a.active{background:#fcece3;color:#aa3b23}.admin-art{margin-top:28px;width:100%;height:330px;border-radius:110px 110px 8px 8px}.admin-main{min-width:0;padding:42px 35px 65px}.admin-main h1{font-size:clamp(40px,4.4vw,60px)}.admin-main h2{font-size:34px}.admin-main h3{font-size:28px}.admin-main .metric strong{display:block;font:600 62px Georgia,serif;margin:20px 0 0}.admin-main .three{grid-template-columns:repeat(3,minmax(0,1fr))}.admin-main th,.admin-main td{font-size:14px;padding:17px 12px}.admin-main table{width:100%}.admin-main thead{background:#f7f3ed}.admin-account-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,1fr);gap:20px}.admin-account-grid .card{padding:20px}.admin-account-grid .grid{grid-template-columns:1fr}.activity-item{border-bottom:1px solid var(--line);padding-bottom:16px}.danger{color:#a33123!important;border-color:#b85239!important}.admin-main pre{white-space:pre-wrap;overflow-wrap:anywhere;font:14px/1.65 Arial,sans-serif}.admin-main input,.admin-main select{min-width:0;max-width:100%}table tr[hidden]{display:none}.check input{flex-shrink:0}.lesson-list .small{max-width:610px}[hidden]{display:none!important}
@media(max-width:1200px){.header{flex-wrap:wrap}.header .nav{order:3;width:100%;justify-content:center}.header .tools{margin-left:auto}.pricing-layout{grid-template-columns:minmax(0,1fr)}.pricing-art{display:none}.admin-shell{grid-template-columns:205px minmax(0,1fr)}.admin-main{padding:32px 24px}.admin-account-grid{grid-template-columns:minmax(0,1fr)}.admin-sidebar{padding:25px 14px}.admin-main .three{grid-template-columns:1fr 1fr 1fr}.metric .eyebrow{letter-spacing:1px}.plan-page,.words-page{gap:28px}.plan-art,.words-art{height:660px}.today-hero{gap:28px}.today-art{min-height:520px}}
@media(max-width:900px){.plan-page,.words-page{grid-template-columns:1fr}.plan-art,.words-art{display:none}.admin-shell{grid-template-columns:1fr}.admin-sidebar{border-right:0;border-bottom:1px solid var(--line);padding:20px}.admin-sidebar nav{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.admin-sidebar nav a{border:1px solid var(--line);padding:10px;font-size:14px}.admin-art{display:none}.admin-main{padding:28px 20px}.admin-main h1{font-size:43px}.today-copy{gap:25px}.today-art{min-height:500px}.today-welcome p{font-size:18px}.start-speaking{min-width:240px}.today-welcome h1{font-size:53px}.next-conversation h2{font-size:43px}.lesson-outcome{font-size:21px}.allowance-bottom .btn{flex-shrink:0}.today-bottom .card{padding:22px}.balance{font-size:27px}.quick-practice h3{font-size:27px}}
@media(max-width:680px){.header{padding:15px 20px;gap:15px}.brand{font-size:25px}.nav a{min-width:0;flex:1;padding:10px 8px;font-size:13px}.header .nav{gap:6px}.header .tools{gap:6px}.header-picker select{max-width:93px}.account-button{font-size:13px}.wrap{padding:26px 21px 42px}.today-hero{grid-template-columns:1fr}.today-copy{gap:30px;padding:0}.today-welcome h1{font-size:55px}.today-welcome p{font-size:18px}.next-conversation h2{font-size:42px}.start-speaking{width:100%}.today-art{height:265px;min-height:265px;border-radius:140px 12px 12px 12px}.today-bottom{grid-template-columns:1fr}.plan-page h1,.words-page h1{font-size:43px}.stage-row{grid-template-columns:35px 1fr}.stage-row .btn{grid-column:2}.stage-row h3{font-size:24px}.word-list .phrase{align-items:flex-start;flex-wrap:wrap}.word-list h3{font-size:25px}.pricing-heading{display:block}.pricing-heading h1{font-size:43px}.pricing-heading label{max-width:160px;display:block;margin-top:20px}.pricing-layout .grid{grid-template-columns:1fr}.price-card{max-width:none}.topup-card .btn{width:100%}.admin-main .three{grid-template-columns:1fr}.admin-main .grid{grid-template-columns:1fr}.admin-main th,.admin-main td{white-space:normal;min-width:100px}.admin-main h1{font-size:38px}.admin-main .heading{align-items:start;flex-direction:column}.auth-page h1{font-size:40px}.header .tools{margin-left:0}.header .brand{margin-right:auto}.footer{flex-wrap:wrap}.footer .row{gap:8px}}

.music-control{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:42px;padding:8px 11px;border:1px solid #cbb7a3;border-radius:22px;background:#fff8ed;color:#674938;font:600 12px/1.2 Arial,sans-serif;white-space:nowrap;cursor:pointer}.music-control b{font-size:21px;font-weight:400;color:#a33e29}.music-control[aria-pressed=true]{background:#f7e5d6;border-color:#af7253}.music-control:hover{background:#f3dfcd}.music-control:focus-visible{outline:3px solid #315d80;outline-offset:3px}.header .tools{flex-wrap:wrap}@media(max-width:680px){.music-control{min-height:38px;font-size:11px;padding:7px 9px}.header .tools{width:100%;justify-content:space-between}}
/* 2.6.7: the pricing column never grows wider than the screen; the stage table scrolls inside its card if it must. */
.pricing-layout>section{min-width:0}.stage-prices .table-scroll{overflow-x:auto;margin-top:14px}.stage-prices .table-scroll table{margin-top:0}
@media(max-width:680px){.stage-prices.card{padding:22px 14px}.stage-prices thead th{white-space:normal;vertical-align:bottom;letter-spacing:.3px}.stage-prices tbody th,.stage-prices tfoot th{text-transform:none;letter-spacing:0;font-size:13px}.stage-prices th,.stage-prices td{padding:8px 3px}}
.account-table{container-type:inline-size}@container (max-width:640px){.account-table table,.account-table tbody{display:block}.account-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.account-table tr[data-account-row]:not([hidden]){display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;grid-template-areas:"who who who act" "where state stage act";gap:8px 14px;align-items:center;padding:16px 0;border-bottom:1px solid var(--line)}.account-table tr[data-account-row]>td{display:block;min-width:0;padding:0;border:0}.account-table td:nth-child(1){grid-area:who}.account-table td:nth-child(2){grid-area:where}.account-table td:nth-child(3){grid-area:state}.account-table td:nth-child(4){grid-area:stage;white-space:nowrap}.account-table td:nth-child(5){grid-area:act}.account-table td .small{overflow-wrap:anywhere}}

/* New experiences keep the approved courtyard palette and generous whitespace. */
.art{position:relative}.art>img{width:100%;height:100%;object-fit:cover}.discover-link{position:absolute;bottom:0;left:0;right:0;padding:35px 25px 23px;color:#fff;background:linear-gradient(transparent,rgba(32,29,23,.86));display:flex;justify-content:space-between;gap:15px;align-items:end}.discover-link span{font:25px Georgia,serif}.discover-link strong{font-size:13px;text-decoration:underline;text-underline-offset:5px}.discover-link:hover{color:#fff4ca}.mini-sun{color:var(--clay);width:48px;flex-shrink:0}.mini-sun svg{width:48px;height:48px}.experience-row{display:flex;gap:14px;flex-wrap:wrap;margin-top:28px}.referral-card{display:flex;align-items:center;justify-content:space-between;gap:28px;margin-top:28px;padding:26px;background:#fbf4ea}.referral-card h3{font-size:28px;margin:10px 0}.referral-card .btn{flex-shrink:0}.referral-card p{max-width:740px}.welcome-back{display:flex;gap:20px;align-items:center;margin-top:24px}.welcome-back>div{flex:1}.segmented{display:flex;gap:8px;margin:24px 0}.stamp-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-top:30px}.passport-stamp{min-height:185px;border:1px dashed #c3c7c4;border-radius:45% 45% 8px 8px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:15px 8px;color:#697473;background:#f7f5ef;gap:8px}.passport-stamp strong{font:17px Georgia,serif}.passport-stamp small{font-size:11px;letter-spacing:1px}.passport-stamp>span:last-child{font-size:11px}.passport-stamp.earned{color:#984025;border:2px double #b5704d;background:#fff0df}.passport-stamp:nth-child(even).earned{color:#315d80;border-color:#55748c;background:#eaf0f1}.stamp-symbol{font-size:38px}.passport-stamp:hover{outline:2px solid var(--blue);outline-offset:3px}.price-breakdown{font-size:13px}.price-breakdown summary{color:var(--blue);font-weight:600;text-decoration:underline;text-underline-offset:4px;cursor:pointer}.price-breakdown dl{margin:18px 0}.price-breakdown dl>div{display:flex;justify-content:space-between;gap:16px;padding:7px 0}.price-breakdown dd{white-space:nowrap;margin:0}.price-breakdown .total{border-top:1px solid var(--line);margin-top:5px;font-weight:700}.gift-tag{display:inline-block;color:#8b3923;background:#fae7d6;border:1px solid #dcba9d;border-radius:20px;padding:6px 10px;font-size:12px;margin-top:8px}.stage-row.promoted{background:#fff6ec;border-left:3px solid #c4774f;padding-left:15px}.stage-row .promo-caption{margin:7px 0;color:#935234}.cultural-page h1{font-size:52px}.paper-experience{background:#faf0dd;border:1px solid #d6b994;padding:40px;text-align:center;box-shadow:4px 5px 0 #eee0cb;border-radius:7px}.paper-experience>span{display:block;font:700 20px Georgia,serif;letter-spacing:3px;color:#7c4f30;border-bottom:2px solid #a47958;padding-bottom:18px}.paper-experience>p{font:25px/1.9 Georgia,serif;margin:18px 0}.paper-experience small{font-size:12px}.postcard{display:grid;grid-template-columns:1fr 1fr;border:1px solid #d8c5ac;border-radius:14px;overflow:hidden;background:#fff7e8;box-shadow:0 10px 35px #6955390c}.postcard>img{width:100%;height:550px;object-fit:cover}.postcard>div{padding:50px 45px;position:relative;display:flex;flex-direction:column;justify-content:center;align-items:start}.postcard h2{font:42px/1.2 Georgia,serif;margin:20px 0 0}.postmark{align-self:flex-end;border:2px dashed #8e7760;border-radius:50%;padding:15px;margin-bottom:35px;transform:rotate(-12deg);font-size:12px;letter-spacing:2px}.seasonal-card{max-width:850px}.verification-note{padding:14px 18px;background:#f6f0e5;border-radius:10px;margin:20px 0}.verification-note .row{margin-top:10px}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--blue);outline-offset:4px}.plan-page .intro{margin-bottom:18px}
@media(max-width:1100px){.stamp-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.referral-card{align-items:start}.referral-card .btn{font-size:14px}}
@media(max-width:680px){.referral-card,.welcome-back{flex-direction:column;align-items:start}.experience-row .btn{width:100%}.postcard{grid-template-columns:1fr}.postcard>img{height:280px}.postcard>div{padding:30px}.postcard h2{font-size:34px}.postmark{margin-bottom:18px}.cultural-page h1{font-size:40px}.paper-experience{padding:25px 15px}.paper-experience>p{font-size:22px}.discover-link span{font-size:21px}.discover-link strong{font-size:11px}.passport-stamp{min-height:175px}}
@media(prefers-reduced-motion:reduce){.scene-image,.passport-stamp{transition:none!important}}
@media(max-width:900px){.discover-page .plan-art{display:block;position:relative;top:auto;order:-1;height:min(560px,110vw);border-radius:150px 14px 14px 14px}}

/* Approved visual direction: vivid artwork, confident typography, warm paper. */
:root{--paper:#fffaf1;--white:#fffdf8;--ink:#111a1c;--muted:#3b5060;--line:#d9bc9c;--clay:#bd3e22;--clay-dark:#922b15;--blue:#125c98}
body{background:var(--paper);color:var(--ink);font-size:17px}h1,h2,h3{font-weight:700;letter-spacing:-.035em}p{color:#273b40}.small,small{color:#39566a}.eyebrow{color:var(--blue);font-size:12px;letter-spacing:1.6px;font-weight:800}.header{background:#fffdf8;border-bottom:1px solid #ddc4a8}.brand{color:#101a1c}.nav a{font-weight:700;border:1px solid transparent}.nav a.active{color:#a43016;background:#ffe6cf;border-color:#bf472a;box-shadow:0 2px 0 #e5b28b}.nav a:hover{background:#fbe8d3;border-color:#d3a179}.btn{font-weight:750;border-radius:10px;min-height:48px;box-shadow:0 3px 0 #8b2c17;transition:transform .15s,background .15s}.btn:hover{transform:translateY(-1px)}.btn.secondary{color:var(--blue);background:#fffdf7;border:1.5px solid var(--blue);box-shadow:0 2px 0 #c8dce8}.btn.secondary:hover{background:#e7f1f8}.btn.small{min-height:42px;font-weight:750}.btn:disabled{box-shadow:none}.link,.footer-link{color:#15598d;font-weight:700;text-decoration:underline;text-underline-offset:4px}.link:not(:disabled):hover{color:var(--clay)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #1676bf;outline-offset:4px}.card{background:#fffdf7;border:1px solid #d9bb99;box-shadow:0 3px 0 #eeddc8}.choice{border-color:#ca9a73;background:#fffdf7}.choice:hover,.choice.selected{border-color:var(--clay);background:#ffe8d3}.choice.selected{box-shadow:0 2px 0 #d2a17b}.choice strong{font-weight:750}.art{border:2px solid #e7b786;box-shadow:0 7px 22px #70411613}.scene-image{filter:saturate(1.12) contrast(1.035)}.step-track .done{background:var(--clay)}.music-control{border:1.5px solid #ba633b;background:#fff4e2;color:#8b361d;font-size:13px}.music-control[aria-pressed=true]{background:#ffe4c1;border-color:#bc3d20;color:#9e2e15}.music-control b{color:var(--clay)}.gift-tag{color:#8f2b12;background:#ffdfb6;border-color:#c98248;font-weight:700}.stage-row.current{border:2px solid #be4a28;background:#fff0dc}.stage-row.promoted{border-left-color:#cc521f;background:#fff1d6}.stage-number{background:#d9eafa;font-weight:700}.pill{font-weight:700}.price-card .price{color:#a93219;font-weight:700}.price-card.featured{border:2px solid #bd3e22;background:#fff0dc}.meter{background:#e8dfd3}.blue-meter>span{background:#1679bf}.admin-sidebar nav a.active{background:#ffe7cf;color:#9d3019;border:1px solid #c06a3c;font-weight:750}.admin-main thead{background:#e8f0f8}.admin-main .metric strong{color:#165b91}.admin-main .metric:nth-child(2) strong{color:#ae381d}.passport-stamp.earned{background:#ffe5bc;border:2px solid #b74420;color:#a63519;box-shadow:0 3px 0 #dfb889}.passport-stamp:nth-child(even).earned{background:#dfeefa;border-color:#286f9f;color:#164f7b}
.today-page{padding-top:22px}.today-hero{grid-template-columns:1fr 1.1fr;gap:42px;align-items:stretch}.today-copy{padding:8px 0 0;gap:28px;display:flex;flex-direction:column}.today-welcome h1{font-weight:700;font-size:clamp(52px,5.7vw,85px);line-height:1.04}.today-welcome p{font:600 clamp(18px,2vw,25px)/1.35 Georgia,serif;margin-top:9px}.next-conversation h2{font-size:clamp(38px,4.5vw,64px);font-weight:700}.lesson-outcome{font:600 24px/1.35 Georgia,serif}.lesson-meta{font-size:16px;margin:17px 0}.start-speaking{font-weight:700;max-width:420px;min-height:58px}.today-art{min-height:570px;border-radius:240px 16px 16px 16px}.today-allowance{margin-top:auto;padding-top:4px}.today-allowance .eyebrow{letter-spacing:.4px;text-transform:none;font-size:15px}.today-allowance .balance{font:700 19px/1.4 'Segoe UI',sans-serif;color:var(--blue);margin:5px 0}.today-allowance .meter{height:12px;margin:9px 0}.today-allowance .allowance-bottom{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:9px}.today-allowance .small{margin:0;max-width:330px;font-size:13px}.today-allowance .btn{box-shadow:none;min-height:34px;padding:6px 11px;font-size:12px}.today-discoveries{margin-top:28px}.today-discoveries>h2{font-size:38px;margin:0 0 16px}.discovery-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.discovery-card{display:block;text-decoration:none;border:1px solid #d9b185;border-radius:12px;padding:7px;background:#fffdf7;box-shadow:0 5px 15px #653a1910;transition:transform .18s,box-shadow .18s;overflow:hidden}.discovery-card:hover{transform:translateY(-4px);box-shadow:0 9px 20px #653a1926;border-color:var(--clay)}.discovery-image{position:relative;overflow:hidden;border-radius:8px;aspect-ratio:2.1}.discovery-image>img{width:100%;height:100%;object-fit:cover;object-position:center 55%}.discovery-body{position:relative;padding:12px 53px 12px 11px}.discovery-body h3{font-size:29px;margin:0 0 6px;line-height:1.2;color:var(--ink)}.discovery-body p{font-size:15px;line-height:1.4;color:#205784;margin:0}.discovery-arrow{position:absolute;right:6px;top:15px;border:1.5px solid #c54724;color:#bd3e22;border-radius:50%;width:36px;height:36px;display:grid;place-items:center;font-size:24px}.mini-postage{position:absolute;right:14px;top:15px;padding:8px;background:#fff0d4;border:2px dashed #b86538;transform:rotate(11deg);font:700 11px/1.5 Georgia,serif;color:#984820;box-shadow:2px 3px 8px #432c2c3d}.today-review{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:22px 0;margin-top:14px;border-bottom:1px solid #dbc3a4}.today-review p{font-size:14px;margin:0}.today-review strong{color:#174e7e}.referral-card.compact{background:transparent;box-shadow:none;border:0;padding:10px 0;margin-top:14px}.referral-card.compact h3{font-size:24px}.referral-card.compact .eyebrow{display:none}.referral-card.compact p{font-size:13px}.referral-card.compact .btn{font-size:14px}
.moment-page>.heading{align-items:center;margin-bottom:32px;gap:24px}.moment-page h1{font-size:clamp(35px,4vw,56px);margin-top:12px;max-width:790px}.moment-layout{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:stretch}.moment-activity{min-width:0;display:flex;flex-direction:column;padding:12px 0}.moment-activity>h2{font-size:43px;margin:23px 0 12px}.moment-question{font-size:23px;margin:0 0 20px}.moment-instruction{font-size:15px;font-weight:700;margin:0 0 12px}.moment-choices{display:grid;gap:14px}.moment-choice{display:flex;align-items:center;gap:16px;text-align:left;border:2px solid #c15a32;border-radius:12px;padding:16px;background:#fffdf8;color:#172027;box-shadow:0 4px 0 #e6b187;min-height:72px;cursor:pointer}.moment-choice>span{width:33px;height:33px;display:grid;place-items:center;background:var(--blue);color:white;border-radius:8px;font:800 14px Arial;flex:none}.moment-choice strong{font:700 25px/1.25 Georgia,serif}.moment-choice:hover{background:#ffead0;transform:translateY(-1px)}.moment-choice.wrong{background:#fff1c4;border-color:#bc8018}.moment-feedback{padding:12px;background:#fff0c9;border-left:4px solid #bb7e19;font-weight:600;color:#63410b}.moment-scene{margin:0;min-height:620px;position:relative;overflow:hidden;border:2px solid #e5af7f;border-radius:210px 16px 16px 16px}.moment-scene img{position:absolute;width:100%;height:100%;object-fit:cover;filter:saturate(1.1) contrast(1.03)}.moment-scene figcaption{position:absolute;bottom:0;inset-inline:0;padding:60px 28px 25px;background:linear-gradient(transparent,#26180cbd);font:700 27px Georgia;color:white}.moment-next{display:flex;align-items:center;gap:15px;flex-wrap:wrap;margin-top:28px}.moment-next .link{font-size:13px;background:transparent;border:0;cursor:pointer}.moment-success-label{color:#165e95;font-size:19px;font-weight:750;margin:20px 0 12px}.moment-success h2{font-size:37px}.moment-phrase{padding:25px;background:#155d91;border-radius:12px;color:white;box-shadow:0 5px 0 #093f68;margin:26px 0}.moment-phrase p:first-child{font:700 31px/1.25 Georgia,serif;color:#fff7e9;margin:0 0 12px}.moment-phrase p:last-child{color:#ffe7b0;font-size:18px;margin:0}.moment-success h3{margin:28px 0 7px;font-size:28px}.moment-success>p{margin:8px 0}.moment-artifact{padding:20px;background:#fff0d3;border:2px solid #cb9f6e;border-radius:8px;font:700 19px/1.8 Georgia,serif;margin-bottom:25px}
.postal-page{max-width:1300px}.postal-page>.heading{margin-bottom:28px;gap:20px;align-items:center}.postal-page h1{font-size:clamp(36px,4.3vw,56px);margin:12px 0}.postal-count{border:2px solid #b64121;border-radius:50%;background:#ffedc8;transform:rotate(5deg);padding:20px;min-width:130px;text-align:center;font:700 27px Georgia;color:#a23419}.postal-count small{font:700 13px 'Segoe UI',sans-serif;color:#924027}.postal-card{display:grid;grid-template-columns:1.08fr 1fr;background:#fff8ea;border:1px solid #d4b88e;padding:13px 13px 25px;position:relative;box-shadow:0 10px 28px #50331421}.postal-card.small-art{grid-template-columns:minmax(0,440px) minmax(0,1fr)}.small-art .postal-picture{max-width:440px;width:100%;justify-self:center;margin-inline:auto}.postal-card:after{content:'';position:absolute;inset-inline:0;bottom:0;height:12px;background:repeating-linear-gradient(135deg,#bf3f23 0 23px,#fff8ea 23px 41px,#185391 41px 64px,#fff8ea 64px 82px)}.postal-picture{position:relative;min-width:0;overflow:hidden;aspect-ratio:1}.postal-picture>img{width:100%;height:100%;object-fit:cover}.postal-caption{position:absolute;inset-inline:0;bottom:0;background:linear-gradient(transparent,#111d2bde);padding:50px 22px 23px;display:flex;align-items:end;justify-content:space-between;gap:12px;color:#fff}.postal-caption strong{font:700 29px Georgia}.postal-caption span{border:1px solid #fff8;padding:6px;font:700 11px Arial;letter-spacing:1.4px}.postal-letter{padding:18px 34px;display:flex;flex-direction:column;align-items:start;background:radial-gradient(#8e735010 .8px,transparent .8px) 0 0/5px 5px}.postal-mail{display:flex;justify-content:space-between;width:100%;align-items:center;margin-bottom:15px}.postal-mark{width:94px;height:94px;border:2px solid #53728ea6;color:#466a89;border-radius:50%;display:grid;place-content:center;text-align:center;font:700 10px/1.7 Arial;letter-spacing:1.4px;transform:rotate(-12deg)}.postal-stamp{display:block;width:75px;padding:4px;background:#fff;outline:2px dashed #b39368;outline-offset:2px;transform:rotate(6deg)}.postal-stamp img{width:100%;aspect-ratio:1;object-fit:cover;display:block}.postal-stamp b{display:block;text-align:center;font:700 10px Georgia;letter-spacing:1.2px;color:#164e7c;margin-top:4px}.postal-greeting{font:italic 23px Georgia;color:#245b8d;margin:8px 0}.postal-letter h2{font:700 clamp(29px,3vw,43px)/1.1 Georgia,serif;color:#194e83;margin:0 0 22px}.postal-message{font:21px/1.65 Georgia,'Microsoft YaHei',serif;color:#203f50;margin:0 0 18px}.postal-wish{font:italic 23px Georgia;color:#b44021;margin:8px 0 20px}.postal-lines{margin-top:auto;width:90%}.postal-lines i{display:block;height:15px;border-bottom:1px solid #b9a38155}.postal-footer{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:22px 0 12px}.postal-footer p{display:grid;gap:6px;font-size:13px;margin:0}.postal-footer strong{color:#194d77;font-size:14px}.postal-footer .btn{flex-shrink:0}.postal-art-note{font-size:12px;color:#4d5a60;margin:3px 0 20px}.postal-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px}.postal-tile{background:#fffdf6;border:1px solid #d4b88f;padding:9px;border-radius:8px;box-shadow:0 4px 12px #58351915;text-decoration:none;display:flex;flex-direction:column;transition:transform .15s}.postal-tile:hover{transform:translateY(-3px);border-color:var(--clay)}.postal-tile img{width:100%;height:auto;aspect-ratio:1;object-fit:cover;border-radius:4px;margin-bottom:17px}.postal-tile h2{font-size:27px;margin:8px 4px 0}.postal-tile p{font-size:14px;margin:7px 4px}.postal-tile .eyebrow{font-size:10px;margin:0 4px}.postal-tile>strong{font-size:13px;color:#155e95;background:#e9f1f8;border-radius:6px;padding:10px;margin:8px 4px;align-self:start}.postcard-settings{margin-top:30px;padding:23px}.postcard-settings small{display:block;font-size:14px;line-height:1.5;margin-top:6px}.postcard-settings input{accent-color:var(--clay);width:20px;height:20px}.postal-empty{display:flex;align-items:center;gap:36px;padding:28px;background:#fff0d5;border:1px solid #d6ae7f;border-radius:12px}.postal-empty>img{width:220px;height:220px;object-fit:cover;transform:rotate(-3deg);padding:7px;background:white;box-shadow:0 4px 10px #5e3c1c23}.postal-empty h2{font-size:34px;margin-top:0}.postal-empty p{max-width:540px;line-height:1.6}.postal-dialog{width:min(1080px,calc(100% - 32px));max-height:calc(100dvh - 36px);padding:24px;border:1px solid #c69d72;border-radius:14px;background:#fffaf1;box-shadow:0 24px 80px #17232b5c;overflow:auto;color:var(--ink)}.postal-dialog::backdrop{background:#17252a75;backdrop-filter:blur(9px)}.postal-dialog-top{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}.postal-dialog-top h2{font-size:27px;margin:8px 0 0}.postal-dialog-top button{flex-shrink:0}.postal-dialog .postal-message{font-size:19px}.postal-dialog .postal-letter{padding:14px 27px}.postal-dialog .postal-mark{width:75px;height:75px;font-size:9px}.postal-dialog .postal-stamp{width:61px}.postal-dialog .postal-lines{display:none}.postal-dialog-bottom{display:flex;justify-content:flex-end}.postal-dialog:focus{outline:none}
@media(max-width:1100px){.today-hero{gap:28px}.today-art{min-height:570px}.discovery-body h3{font-size:25px}.discovery-body{padding-right:43px}.discovery-arrow{width:31px;height:31px;font-size:22px}.discovery-body p{font-size:14px}.moment-layout{gap:30px}.moment-scene{min-height:650px}.postal-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.postal-message{font-size:18px}.postal-letter{padding:15px 23px}.postal-mark{width:78px;height:78px}.postal-stamp{width:62px}}
@media(max-width:760px){.today-hero,.moment-layout{grid-template-columns:1fr}.today-copy{gap:26px}.today-art{min-height:320px;height:320px;border-radius:160px 14px 14px 14px}.today-discoveries>h2{font-size:33px}.discovery-cards{grid-template-columns:1fr;gap:16px}.discovery-card{display:grid;grid-template-columns:38% 1fr;align-items:center;gap:8px}.discovery-image{aspect-ratio:1.1;height:100%}.discovery-body h3{font-size:28px}.discovery-body p{font-size:15px}.discovery-body{padding:12px 44px 12px 7px}.discovery-arrow{top:18px}.mini-postage{font-size:8px;padding:5px;right:8px;top:10px}.today-review{flex-wrap:wrap}.today-review p{max-width:400px}.today-welcome h1{font-size:57px}.today-allowance .allowance-bottom{gap:12px}.today-allowance .small{max-width:240px}.moment-page>.heading{align-items:start;flex-direction:column;margin-bottom:20px}.moment-page h1{font-size:39px}.moment-activity>h2{font-size:36px}.moment-choice strong{font-size:23px}.moment-question{font-size:21px}.moment-scene{min-height:330px;max-height:370px;border-radius:130px 15px 15px 15px}.moment-scene img{object-position:center 65%}.postal-card{display:block;padding:10px 10px 24px}.postal-letter{padding:23px 18px 15px}.postal-picture{aspect-ratio:1.15}.postal-letter h2{font-size:37px}.postal-message,.postal-dialog .postal-message{font-size:20px;line-height:1.7}.postal-greeting{font-size:23px}.postal-footer{align-items:stretch;flex-direction:column;gap:16px}.postal-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.postal-tile h2{font-size:23px}.postal-count{min-width:85px;padding:15px;font-size:22px}.postal-page>.heading{align-items:start}.postal-page .intro{font-size:17px}.postal-empty{align-items:start;flex-direction:column;gap:24px}.postal-empty>img{width:165px;height:165px}.postal-empty h2{font-size:30px}.postal-dialog{padding:16px;width:calc(100% - 20px);max-height:calc(100dvh - 20px)}.postal-dialog-top{align-items:start;gap:10px}.postal-dialog-top h2{font-size:23px}.postal-dialog-top .btn{font-size:12px;padding:7px 10px}.postal-dialog .postal-letter{padding:20px 16px}.postal-dialog .postal-picture{aspect-ratio:1.5}.postal-dialog-bottom .btn{width:100%}.postal-lines{display:none}.referral-card.compact{gap:15px}.postal-page .heading .eyebrow{font-size:10px}}
@media(prefers-reduced-motion:reduce){.btn,.discovery-card,.postal-tile,.moment-choice{transition:none;transform:none!important}}

.today-copy{justify-content:flex-start}.start-speaking{margin-top:6px}.discovery-card[href="#moment/cafe"] .discovery-image>img{object-position:center 92%}.discovery-card[href="#postcard"] .discovery-image>img{object-position:center 22%}
@media(max-width:760px){.discovery-card{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr)}.discovery-image{width:100%;min-width:0;aspect-ratio:auto;min-height:118px}.discovery-image>img{position:absolute;inset:0;display:block;width:100%;height:100%}.discovery-body{min-width:0}.discovery-body h3{font-size:26px;overflow-wrap:anywhere}.discovery-body p{overflow-wrap:anywhere}}
.pricing-layout>section>.grid:has(>.price-card:only-child){grid-template-columns:1fr}.pricing-layout .price-card:only-child .btn{max-width:430px}

.postal-navigation{display:flex;flex-wrap:wrap;gap:14px;margin:0 0 26px}.postal-navigation .btn{min-width:180px}.postal-navigation [aria-current="page"]{box-shadow:0 3px 0 #8b2c17}@media(max-width:500px){.postal-navigation .btn{flex:1;min-width:140px}}

/* Immediate sound control, shown only while the ambient track is audible. */
.floating-music-mute{position:fixed;right:calc(8px + env(safe-area-inset-right,0px));bottom:calc(10px + env(safe-area-inset-bottom,0px));z-index:80;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:62px;min-height:64px;max-width:120px;padding:8px 10px;border:1.5px solid #8b2c17;border-radius:18px;background:#b63c20;color:#fffaf1;box-shadow:0 2px 0 #7e2816,0 3px 9px #51261926;cursor:pointer;touch-action:manipulation}
.floating-music-mute[hidden]{display:none!important}.floating-music-mute>span{display:block;font:750 13px/1.2 'Segoe UI',Arial,sans-serif;overflow-wrap:anywhere}.floating-music-mute svg{width:24px;height:24px;flex:none}.floating-music-mute:hover{background:#922d16}.floating-music-mute:focus-visible{outline:3px solid #edb94d;outline-offset:3px}.floating-music-mute:active{transform:translateY(1px);box-shadow:0 1px 0 #7e2816}.footer{padding-bottom:100px}

.moments-page{--cream:#fff9ef;--ink:#18221f;--clay:#bf3d20;--dark-clay:#932b13;--blue:#155c8e;--gold:#edb94d;--line:#dbc2a3;--serif:Georgia,'Times New Roman',serif;--sans:'Segoe UI',Arial,sans-serif;color:var(--ink)}
.moments-page *{box-sizing:border-box}
.moments-page button,.moments-page select{font:inherit}
.moments-page button,.moments-page a,.moments-page select{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.moments-page button{cursor:pointer}
.moments-page button:disabled{cursor:default}
.moments-page a{color:inherit;text-decoration:none}
.moments-page button:focus-visible,.moments-page a:focus-visible,.moments-page select:focus-visible{outline:3px solid #287cad;outline-offset:4px}
.moments-page h1,.moments-page h2,.moments-page h3,.moments-page p,.moments-page figure{margin:0}
.moments-page h1,.moments-page h2,.moments-page h3{font-family:var(--serif);line-height:1.12;letter-spacing:-.035em}
.moments-page h1{font-size:clamp(42px,5vw,68px)}
.moments-page h2{font-size:clamp(31px,3.5vw,47px)}
.moments-page h3{font-size:29px}
.moments-page [hidden]{display:none!important}
.moments-page .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.moments-page{max-width:1380px;margin:auto;padding:27px 46px 38px}
.moments-page .toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:24px}
.moments-page .button{display:inline-flex;align-items:center;justify-content:center;gap:10px;border:1.5px solid transparent;border-radius:10px;min-height:49px;padding:11px 20px;font:700 16px/1.3 var(--sans);text-decoration:none;transition:transform .15s,background .15s;white-space:normal}
.moments-page .button svg{width:20px;height:20px;flex:none}
.moments-page .button:hover{transform:translateY(-1px)}
.moments-page .button.primary{background:var(--clay);color:#fffdf6;box-shadow:0 3px 0 var(--dark-clay)}
.moments-page .button.primary:hover{background:var(--dark-clay)}
.moments-page .button.secondary{background:#fffdf7;color:var(--blue);border-color:var(--blue);box-shadow:0 2px 0 #d2e0e8}
.moments-page .button.secondary:hover{background:#eaf3fa}
.moments-page .button.back{background:#fff1dd;color:var(--dark-clay);border-color:#c8643a;box-shadow:0 2px 0 #e9c5a1;min-height:44px;padding:9px 17px}
.moments-page .button.compact{min-height:40px;padding:8px 13px;font-size:14px;box-shadow:none}
.moments-page .intro{display:flex;justify-content:space-between;align-items:flex-end;gap:25px;margin-bottom:31px}
.moments-page .eyebrow{font-size:11px;font-weight:850;letter-spacing:2px;text-transform:uppercase;color:var(--clay);margin-bottom:8px}
.moments-page .lead{font-size:20px;color:#32493f;margin-top:10px;max-width:780px}
.moments-page .moment-layout{display:grid;grid-template-columns:minmax(0,1.03fr) minmax(0,1fr);gap:52px;align-items:start}
.moments-page .activity{min-width:0;padding-top:10px}
.moments-page .context{display:flex;align-items:center;gap:10px;font-size:12px;font-weight:800;color:var(--blue);letter-spacing:1px;margin-bottom:16px}
.moments-page .context:before{content:'';width:9px;height:9px;background:var(--clay);border-radius:50%}
.moments-page .question{font-size:22px;line-height:1.45;margin-top:15px}
.moments-page .choice-toolbar{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-top:22px;margin-bottom:12px}
.moments-page .choice-toolbar p{font-size:15px;font-weight:650}
.moments-page .choices{display:grid;gap:13px}
.moments-page .choice-wrap{border:1.5px solid #be663c;border-radius:12px;background:#fffefb;box-shadow:0 4px 0 #e6b68e;overflow:hidden}
.moments-page .answer{width:100%;display:flex;align-items:center;gap:15px;padding:17px 18px;text-align:left;background:transparent;border:0;min-height:72px;color:var(--ink)}
.moments-page .answer:not(:disabled):hover{background:#ffead0}
.moments-page .answer .letter{background:var(--blue);color:#fff;width:31px;height:31px;flex:none;display:grid;place-items:center;border-radius:7px;font-size:13px;font-weight:850}
.moments-page .answer strong{font:700 clamp(21px,2vw,28px)/1.25 var(--serif);letter-spacing:-.02em}
.moments-page .choice-wrap.wrong{background:#fff0cf;border-color:#b0792a}
.moments-page .choice-wrap.right{background:#eef4df;border:2px solid #62772e;box-shadow:0 4px 0 #ccd7aa}
.moments-page .choice-wrap.right .letter{background:#526d2a}
.moments-page .meaning{border-top:1px solid #ddc7a8;padding:12px 18px 14px 64px;color:var(--blue);font-size:17px;line-height:1.45}
.moments-page .meaning .fit-label{display:block;font-weight:800;text-transform:uppercase;font-size:10px;letter-spacing:1.1px;color:#4a6928;margin-bottom:6px}
.moments-page .meaning .usage{font-size:12px;display:block;margin-top:6px;color:#5f685e}
.moments-page .feedback{margin-top:19px;padding:13px 17px;border-radius:9px;background:#ffe9bc;border-left:4px solid #c58b25;color:#6a4105;font-size:16px}
.moments-page .success-banner{display:flex;align-items:center;gap:14px;background:#e8f0f6;border:1px solid #78a0bd;border-radius:11px;padding:16px 18px;margin:0 0 19px;color:var(--blue)}
.moments-page .success-banner>span{display:grid;place-items:center;flex:none;background:var(--blue);color:#fff;border-radius:50%;height:31px;width:31px;font-size:18px}
.moments-page .success-banner strong{display:block;font-size:20px}
.moments-page .success-banner p{font-size:14px;margin-top:3px}
.moments-page .actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:25px}
.moments-page .quiet-note{margin-top:27px;font-size:13px;color:#435548;display:flex;gap:8px;align-items:center}
.moments-page .quiet-note span{color:var(--clay);font-size:20px}
.moments-page .scene{position:sticky;top:24px;min-height:580px;border-radius:225px 18px 18px 18px;overflow:hidden;border:3px solid #e1b47f;background:#efc475;box-shadow:0 7px 24px #71462316}
.moments-page .scene img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 58%;filter:saturate(1.1) contrast(1.025)}
.moments-page .scene:after{content:'';position:absolute;inset:65% 0 0;background:linear-gradient(transparent,#291909d4);pointer-events:none}
.moments-page .scene figcaption{position:absolute;bottom:25px;left:27px;right:20px;z-index:1;color:#fff7e7;font:700 28px/1.2 var(--serif);text-shadow:0 2px 6px #0009}
.moments-page .artifact{background:#fff0d6;border:1.5px solid #c18548;border-radius:10px;padding:17px 22px;margin:18px 0;font-size:18px;line-height:1.65;white-space:pre-line;font-weight:650}
.moments-page .history-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:25px}
.moments-page .history-card{background:#fffdf6;border:1px solid #cfab80;border-radius:14px;overflow:hidden;box-shadow:0 5px 0 #ecdbc3}
.moments-page .history-image{height:225px;position:relative;overflow:hidden}
.moments-page .history-image img{width:100%;height:100%;object-fit:cover;object-position:center 75%}
.moments-page .history-stamp{position:absolute;right:14px;top:14px;padding:6px 10px;background:#fff3cf;border:1px solid #bb7737;border-radius:8px;color:#6d4b18;font-size:12px;font-weight:750;box-shadow:0 2px 6px #4d280633}
.moments-page .history-body{padding:22px;display:flex;flex-direction:column;gap:13px}
.moments-page .history-body .phrase{font:700 22px/1.3 var(--serif);color:var(--blue);min-height:56px}
.moments-page .history-body .meaning-line{font-size:16px}
.moments-page .history-meta{font-size:12px;color:#596d62;margin-top:3px}
.moments-page .history-actions{display:grid;gap:11px;margin-top:5px}
.moments-page .review-intro{font-size:18px;line-height:1.5;margin:15px 0 22px}
.moments-page .review-phrase{padding:18px 20px;font:700 25px/1.25 var(--serif)}
.moments-page .review-phrase .letter{display:inline-flex;align-items:center;justify-content:center;width:29px;height:29px;border-radius:7px;font:700 12px var(--sans);background:var(--blue);color:#fff;margin-right:13px;vertical-align:middle}
.moments-page .review-title{font-size:40px}
.moments-page .empty{max-width:640px;padding:30px 0}
.moments-page .empty .button{margin-top:22px}
.moments-page .history-note{font-size:13px;color:#617064;margin-top:24px}
@media(min-width:1500px){.moments-page .scene{min-height:630px}
.moments-page{padding-top:33px}
}
@media(max-width:1000px){.moments-page{padding-left:28px;padding-right:28px}
.moments-page .moment-layout{gap:30px}
.moments-page .scene{min-height:550px}
.moments-page .history-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.moments-page .answer{padding:16px 13px;gap:12px}
.moments-page .meaning{padding-left:56px}
}
@media(max-width:730px){.moments-page{padding:22px 20px 29px}
.moments-page .toolbar{margin-bottom:25px}
.moments-page .button{font-size:15px;padding:11px 15px}
.moments-page .button.back{font-size:14px}
.moments-page .intro{margin-bottom:23px}
.moments-page .lead{font-size:18px}
.moments-page .eyebrow{font-size:10px}
.moments-page .moment-layout{display:flex;flex-direction:column;gap:29px}
.moments-page .activity{width:100%;padding-top:0}
.moments-page .question{font-size:20px}
.moments-page .choice-toolbar{flex-wrap:wrap;gap:10px}
.moments-page .choice-toolbar p{font-size:14px}
.moments-page .answer strong{font-size:23px}
.moments-page .answer{min-height:71px}
.moments-page .meaning{font-size:16px}
.moments-page .scene{position:relative;top:0;width:100%;min-height:330px;border-radius:130px 15px 15px 15px}
.moments-page .scene img{object-position:center 80%}
.moments-page .scene figcaption{font-size:26px;left:23px;bottom:21px}
.moments-page .actions .primary{flex:1}
.moments-page .history-grid{grid-template-columns:1fr;gap:24px}
.moments-page .history-image{height:230px}
.moments-page .history-body .phrase{min-height:0}
.moments-page .history-actions{grid-template-columns:1fr 1fr;gap:10px}
.moments-page .history-actions .button{padding:12px 9px;font-size:14px}
.moments-page .review-phrase{font-size:22px;padding:17px 14px}
.moments-page .review-title{font-size:36px}
.moments-page .success-banner{padding:13px}
.moments-page .success-banner strong{font-size:19px}
}
@media(prefers-reduced-motion:reduce){.moments-page *{transition:none!important;scroll-behavior:auto!important}
}
.moments-page .page-heading{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:24px;row-gap:9px;margin:10px 0 32px;padding-bottom:26px;border-bottom:2px solid #e8cba5}
.moments-page .heading-main{display:flex;align-items:center;gap:17px;min-width:0}
.moments-page .heading-main h1{font-size:clamp(38px,4.6vw,61px)}
.moments-page .heading-main .eyebrow{margin-bottom:6px}
.moments-page .page-heading>.lead{grid-column:1/-1;margin-top:0}
.moments-page .heading-action{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.moments-page .heading-action .button{min-height:46px}
.moments-page .moment-actions{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:14px;margin-top:27px;padding-top:21px;border-top:1px solid var(--line)}
.moments-page .continue-actions{display:flex;align-items:flex-start;justify-content:flex-end;flex-wrap:wrap;gap:12px;flex:1}
.moments-page .moment-actions .button{min-height:46px;padding:11px 15px}
.moments-page .moment-actions .exit-back{flex:none}
.moments-page .moments-library{display:flex;align-items:center;gap:14px;width:100%;padding:14px 19px;margin:0 0 30px;background:#155c8e;color:#fffdf5;border:2px solid #104870;border-radius:12px;box-shadow:0 4px 0 #103f5c;transition:background .15s,transform .15s}
.moments-page .moments-library:hover{background:#104b76;transform:translateY(-2px)}
.moments-page .moments-library:focus-visible{outline:3px solid var(--gold);outline-offset:5px}
.moments-page .library-symbol{display:grid;place-items:center;flex:none;width:43px;height:43px;border-radius:10px;background:#f5cc68;color:#173e5b;box-shadow:0 2px 0 #af842d}
.moments-page .library-symbol svg{width:26px;height:26px}
.moments-page .library-copy{display:grid;gap:3px;min-width:0}
.moments-page .library-copy strong{font:700 26px/1.15 var(--serif);letter-spacing:-.02em}
.moments-page .library-copy>span{font-size:14px;line-height:1.35;color:#fff2d9}
.moments-page .library-arrow{margin-left:auto;flex:none;display:flex}
.moments-page .library-arrow svg{width:24px;height:24px}
.moments-page .activity-meta{display:flex;align-items:center;justify-content:space-between;gap:15px;flex-wrap:wrap;margin-bottom:16px}
.moments-page .activity-meta .context{margin-bottom:0}
.moments-page .practice-badge{display:inline-flex;align-items:center;gap:7px;background:#e8f2f8;color:#125582;border:1px solid #80a9c1;border-radius:30px;padding:6px 12px;font-size:13px;font-weight:750}
.moments-page .practice-badge svg{width:17px;height:17px}
.moments-page .intention{margin-top:14px;padding:16px 20px;border-left:4px solid var(--clay);border-radius:0 9px 9px 0;background:#fff0d8;font:700 24px/1.4 var(--serif);color:#733719}
@media(max-width:730px){.moments-page .page-heading{grid-template-columns:1fr;margin:2px 0 24px;gap:13px;padding-bottom:22px}
.moments-page .heading-main h1{font-size:clamp(34px,7.5vw,46px)}
.moments-page .page-heading>.lead{grid-row:2}
.moments-page .heading-action{grid-row:3}
.moments-page .heading-action .button{min-height:42px;padding:9px 15px}
.moments-page .intention{font-size:22px}
.moments-page .activity-meta{gap:9px}
}
@media(max-width:450px){.moments-page .moment-actions{display:grid;grid-template-columns:auto minmax(0,1fr)}
.moments-page .continue-actions{display:contents}
.moments-page .moment-actions [data-next]{grid-row:1;grid-column:2;justify-self:end}
.moments-page .moment-actions [data-again]{grid-row:2;grid-column:1/-1;justify-self:end}
}
@media(max-width:450px){.moments-page .moments-library{padding:12px 13px;gap:11px}
.moments-page .library-symbol{width:39px;height:39px}
.moments-page .library-copy strong{font-size:24px}
.moments-page .library-copy>span{font-size:13px}
.moments-page .library-arrow svg{width:20px;height:20px}
}

.moments-page .moment-secondary-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px}.experience-actions{display:flex;align-items:center;gap:14px;margin-top:27px;padding-top:21px;border-top:1px solid #dbc2a3}.experience-back{display:inline-flex;align-items:center;gap:10px;min-height:46px;padding:11px 15px;border:1.5px solid #155c8e;border-radius:10px;background:#fffdf7;color:#155c8e;font:700 16px/1.3 'Segoe UI',Arial,sans-serif;box-shadow:0 2px 0 #d2e0e8;text-decoration:none}.experience-back:hover{background:#eaf3fa}.experience-back svg{width:20px;height:20px}.experience-back:focus-visible{outline:3px solid #287cad;outline-offset:4px}

/* Spanish tutor 2.4 — first visit, daily plan, rhythm, pricing clarity, accessibility.
   Loaded last, so these rules refine the earlier theme layers. */

/* ——— Accessibility basics ——— */
.skip-link{position:fixed;left:14px;top:-80px;z-index:200;background:var(--ink);color:#fff;padding:12px 18px;border-radius:10px;font-weight:700;text-decoration:none;box-shadow:0 6px 20px #0003;transition:top .15s}
.skip-link:focus{top:14px;outline:3px solid #87b1c5;outline-offset:2px}
main[tabindex="-1"]:focus,h1[tabindex="-1"]:focus{outline:none}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #6f9fbd;outline-offset:3px}
p .link,li .link,.legal-note .link,.signin-line .link,.faq .link,.price-note .link{display:inline;border:0;background:none;padding:0;min-height:0;font-size:inherit;color:var(--blue);text-decoration:underline;text-underline-offset:3px;vertical-align:baseline}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

/* ——— Header and footer ——— */
.nav a svg{display:none}
.account-button.active{border-color:var(--clay);background:#f7e4d7;color:#973b24}
.footer{display:flex;align-items:center;justify-content:space-between;gap:16px 28px;flex-wrap:wrap;border-top:1px solid var(--line);padding:26px 4% 34px;max-width:none;color:var(--muted);font-size:13px}
.footer-brand{display:flex;flex-direction:column;gap:4px}
.footer-brand small{font-size:12px;color:var(--muted)}
.footer-links{display:flex;flex-wrap:wrap;gap:6px 22px}
.footer .footer-link{border:0;background:none;padding:6px 0;min-height:32px;font-size:14px;font-weight:600;color:var(--ink);text-decoration:underline;text-decoration-color:#c9a989;text-underline-offset:4px}
.footer .footer-link:hover{color:var(--clay);text-decoration-color:var(--clay)}

/* ——— Shared pieces ——— */
.card-title{font-size:24px;margin:0}
.icon-button{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:50%;border:1.5px solid #c9b29a;background:var(--white);color:var(--blue);cursor:pointer;flex:none;transition:background .15s,border-color .15s}
.icon-button:hover{background:#eef4f8;border-color:var(--blue)}
.icon-button svg{width:19px;height:19px}
.listen-pair{display:inline-flex;align-items:center;gap:8px;flex:none}
.listen-pair .btn{margin:0;min-width:0;flex:none}
.learn-list{list-style:none;margin:18px 0 0;padding:0}
.learn-list .phrase{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px 0;border-bottom:1px solid #ead9c3}
.learn-list .phrase:last-child{border-bottom:0}
.learn-list h3{font-size:24px;margin:0 0 4px}
.learn-list strong{display:block;font:600 21px/1.3 Georgia,serif;color:var(--ink)}
.learn-list small,.learn-list p{display:block;color:var(--muted);font-size:15px;margin:3px 0 0}
.learn-list.compact .phrase{padding:11px 0}
.learn-list.compact h3{font-size:21px}
.progress-line{height:6px;border-radius:6px;background:#f0e2cd;overflow:hidden;margin-top:12px}
.progress-line span{display:block;height:100%;background:var(--clay);border-radius:6px;transition:width .3s}
.review-prompt{font:600 clamp(22px,2.4vw,30px)/1.3 Georgia,serif;color:var(--ink);margin:0}
.lock-label{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600;color:var(--muted);flex:none;white-space:nowrap}
.lock-label svg{width:17px;height:17px;flex:none}
.notice .link{margin-left:6px}

/* ——— Today ——— */
.today-hero{align-items:start;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr)}
.today-copy{gap:22px;padding-top:4px;min-width:0}
.today-welcome h1{margin:0}
.streak-line{display:inline-flex;align-items:center;gap:10px;margin-top:12px;font:600 clamp(17px,1.5vw,20px)/1.35 Georgia,serif;color:var(--ink)}
.today-welcome .streak-line{font-family:Georgia,serif}
.streak-line svg{color:var(--clay);width:24px;height:24px;flex:none}
.today-art{position:sticky;top:18px;min-height:0;height:min(860px,calc(100vh - 36px));align-self:start}
.today-plan{padding:26px 28px 20px;border-radius:18px;border:1px solid #e3c9a8;background:var(--white);box-shadow:0 12px 34px #7a4a2312}
.today-plan.complete{background:linear-gradient(160deg,#fff3df,#fffdf8 55%)}
.plan-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start}
.plan-head h2{font-size:clamp(23px,2.1vw,30px);line-height:1.15;margin:6px 0 6px}
.plan-lead{color:var(--muted);font-size:15px;line-height:1.5;margin:0;max-width:480px}
.plan-ring{flex:none;width:76px;height:76px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:conic-gradient(var(--clay) calc(var(--progress) * 360deg),#f2e2cb 0);position:relative}
.plan-ring::before{content:'';position:absolute;inset:7px;border-radius:50%;background:var(--white)}
.plan-ring>*{position:relative}
.plan-ring strong{font:700 27px/1 Georgia,serif;color:var(--ink)}
.plan-ring small{font-size:12px;color:var(--muted);margin-top:2px}
.plan-ring .plan-sun{width:48px;height:48px;color:var(--clay)}
.plan-steps{list-style:none;margin:18px 0 0;padding:0}
.plan-steps>li{display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:14px;align-items:center;padding:14px 0;border-top:1px solid #eedfca}
.plan-steps>li.plan-featured{grid-template-columns:38px minmax(0,1fr);align-items:start;padding:18px 0 20px}
.step-check{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;border:2px solid #d5b896;font:700 15px/1 Arial,sans-serif;color:var(--muted);background:var(--white)}
.plan-featured .step-check{border-color:var(--clay);color:var(--clay);margin-top:2px}
.plan-steps li.done .step-check{background:#2f7a4c;border-color:#2f7a4c;color:#fff}
.step-check svg{width:18px;height:18px}
.featured-body .eyebrow{display:block}
.featured-title{font-size:clamp(28px,2.7vw,40px);line-height:1.08;margin:8px 0 8px}
.featured-body .lesson-outcome{font:600 clamp(17px,1.5vw,20px)/1.4 Georgia,serif;margin:0;color:var(--ink)}
.featured-body .lesson-meta{margin:8px 0 0;color:var(--blue);font-size:14.5px}
.featured-actions{display:flex;flex-wrap:wrap;gap:12px 18px;align-items:center;margin:18px 0 10px}
.featured-actions .btn{margin:0;flex:none;min-width:0;padding:13px 20px;font-size:16px}
.featured-actions .btn.start-speaking{font:700 19px/1.2 Georgia,serif;padding:15px 24px}
.featured-body>.small{margin:0;color:var(--muted)}
.featured-actions .small-link,.small-link{border:0;background:none;padding:4px 0;min-height:0;font-size:14.5px;font-weight:600;color:var(--blue);text-decoration:underline;text-underline-offset:4px}
/* Once today's lesson step is done its button becomes a light secondary button; the text must stay blue
   (an older rule forces white text on primary buttons with !important). */
.plan-featured.done .featured-actions .btn{background:var(--white);color:var(--blue)!important;border:1.5px solid var(--blue);box-shadow:0 2px 0 #c8dce8}
.step-done{display:flex;align-items:center;gap:6px;color:#2f7a4c;font-weight:700;font-size:14px;margin:10px 0 0}
.step-done svg{width:17px;height:17px}
.step-copy strong{display:block;font-size:16.5px;color:var(--ink)}
.step-copy small{display:block;color:var(--muted);font-size:13.5px;line-height:1.4;margin-top:3px}
.step-copy small b{color:#2f7a4c}
.plan-steps .btn.small{margin:0;flex:none;min-width:0}
.week-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;padding-top:16px;border-top:1px solid #eedfca}
.week-label{font-weight:700;font-size:14px;color:var(--ink)}
.week-dots{list-style:none;display:flex;gap:7px;margin:0;padding:0}
.week-dots li{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font:700 12px/1 Arial,sans-serif;color:var(--muted);background:#f6ead9;border:2px solid transparent}
.week-dots li.active{background:var(--clay);color:#fff}
.week-dots li.today{border-color:var(--clay)}
.week-dots li.future{background:transparent;border:2px dashed #e0c9ab}
.week-dots li.today.future{border-style:solid}
.week-score{font-size:13.5px;color:var(--muted)}
.today-allowance{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.today-allowance .allowance{border:1px solid var(--line);border-radius:14px;padding:16px 18px;background:var(--white)}
.today-allowance .balance{font-size:22px;margin:6px 0 10px}
.today-allowance .allowance-bottom{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px}
.today-allowance .allowance-bottom .small{margin:0;font-size:12.5px}
.today-allowance .btn{margin:0;min-width:0;flex:none}

/* Rhythm: days, time and reminders */
.rhythm-card{margin-top:30px;display:grid;grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr);gap:24px 44px;padding:32px;border-radius:18px;border:1px solid #e3c9a8;background:linear-gradient(135deg,#fff1dc,#fffdf8 60%);position:relative}
.rhythm-card h2{font-size:clamp(26px,2.4vw,34px);margin:6px 0 10px}
.rhythm-card p{color:var(--muted);line-height:1.55}
.rhythm-card>.link[data-action="dismiss-rhythm"]{position:absolute;top:14px;right:16px;border:0;background:none;min-height:0;padding:6px;color:var(--muted);text-decoration:underline}
.rhythm-form fieldset{border:0;padding:0;margin:0;min-width:0}
.rhythm-form legend{font-weight:700;font-size:15px;margin-bottom:10px;padding:0;color:var(--ink)}
.rhythm-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.rhythm-choice{position:relative;display:block;cursor:pointer;font-size:15px}
.rhythm-choice input{position:absolute;inset:0;width:100%;height:100%;opacity:0;margin:0;cursor:pointer}
.rhythm-choice span{display:block;height:100%;border:1.5px solid #d3b796;border-radius:12px;padding:12px 14px;background:var(--white);transition:border-color .15s,background .15s}
.rhythm-choice strong{display:block;color:var(--ink)}
.rhythm-choice small{display:block;color:var(--muted);font-size:13px;margin-top:3px;line-height:1.35}
.rhythm-choice:hover span{border-color:var(--clay)}
.rhythm-choice input:checked+span{border-color:var(--clay);background:#fbe6d8;box-shadow:inset 0 0 0 1px var(--clay)}
.rhythm-choice input:focus-visible+span{outline:3px solid #6f9fbd;outline-offset:2px}
.rhythm-row{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:flex-end;margin-top:16px}
.time-field{display:grid;gap:6px;font-weight:700;font-size:14px;color:var(--ink)}
.time-field input{width:150px;min-height:46px;padding:8px 12px;border:1.5px solid #c9ad8d;border-radius:10px;background:var(--white);font-size:16px}
.rhythm-row .check{display:flex;align-items:flex-start;gap:10px;font-size:14.5px;max-width:420px;line-height:1.4}
.rhythm-row .check input{margin-top:3px;width:18px;height:18px;flex:none}
.rhythm-actions{margin-top:18px;gap:12px}
.rhythm-actions .btn{margin:0;min-width:0;flex:none}
.rhythm-form>.small{margin:12px 0 0;color:var(--muted)}
.rhythm-form.compact .rhythm-choices{grid-template-columns:repeat(3,minmax(0,1fr))}

/* Progress at a glance */
.progress-strip{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:26px 0 8px}
.progress-strip div{border:1px solid var(--line);border-radius:14px;background:var(--white);padding:14px 12px;text-align:center}
.progress-strip strong{display:block;font:700 28px/1.1 Georgia,serif;color:var(--clay)}
.progress-strip span{display:block;font-size:12.5px;color:var(--muted);margin-top:4px;line-height:1.3}

/* Celebrations */
.celebration{text-align:center;padding:44px 32px}
.celebration-sun{width:92px;height:92px;margin:0 auto 10px;color:var(--clay)}
.celebration-sun svg{width:100%;height:100%;animation:sun-turn 18s linear infinite}
@keyframes sun-turn{to{transform:rotate(360deg)}}
.celebration h1{font-size:clamp(34px,4vw,50px)}
.celebration-stats{list-style:none;display:flex;justify-content:center;flex-wrap:wrap;gap:14px;padding:0;margin:26px 0 6px}
.celebration-stats li{min-width:130px;border:1px solid var(--line);border-radius:14px;background:var(--white);padding:14px 16px}
.celebration-stats strong{display:block;font:700 30px/1.1 Georgia,serif;color:var(--clay)}
.celebration-stats span{display:block;font-size:13px;color:var(--muted);margin-top:4px}
.celebration-actions{justify-content:center}
.celebration-actions .btn{flex:none;min-width:0}

/* ——— Landing page ——— */
.landing{max-width:1280px;margin:0 auto;padding:0 4% 40px}
.invite-banner{display:flex;align-items:center;gap:16px;margin:22px 0 0;padding:16px 20px;border-radius:14px;background:#fbe6d8;border:1px solid #efc5a8}
.invite-banner .mini-sun{width:44px;height:44px;flex:none;color:var(--clay)}
.invite-banner p{margin:0;line-height:1.5}
.landing-hero{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:52px;align-items:center;padding:44px 0 30px}
.landing-hero h1{font-size:clamp(44px,5.4vw,78px);line-height:1.02;margin:14px 0 18px}
.landing-hero .intro{margin:0 0 26px;font-size:clamp(18px,1.5vw,21px);line-height:1.55;color:#2a3b45}
.hero-actions{display:flex;flex-wrap:wrap;gap:14px;align-items:center}
.hero-actions .btn{margin:0;flex:none;min-width:0}
.hero-start{font:700 20px/1.2 Georgia,serif;padding:17px 28px;min-height:58px}
.trust-list{list-style:none;display:flex;flex-wrap:wrap;gap:8px 22px;padding:0;margin:22px 0 0}
.trust-list li{display:flex;align-items:center;gap:7px;font-weight:700;font-size:15px;color:var(--ink)}
.trust-list svg{color:#2f7a4c;width:19px;height:19px}
.signin-line{margin:18px 0 0;color:var(--muted)}
.landing-art{min-height:600px;border-radius:240px 18px 18px 18px;border:3px solid #ecd2ae}
.landing section{scroll-margin-top:20px}
.landing-steps{padding:54px 0 20px}
.landing-steps h2,.landing-path h2,.landing-pricing h2,.faq h2,.landing-final h2,.sample-lesson h2{font-size:clamp(30px,3.2vw,46px);line-height:1.1;margin:10px 0 0}
.landing-steps ol{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;padding:0;margin:30px 0 0}
.landing-steps li{position:relative;background:var(--white);border:1px solid var(--line);border-radius:18px;padding:26px 24px}
.step-icon{display:grid;place-items:center;width:52px;height:52px;border-radius:14px;background:#fbe6d8;color:var(--clay)}
.step-icon svg{width:26px;height:26px}
.step-number{position:absolute;top:22px;right:24px;font:700 44px/1 Georgia,serif;color:#f0dcc3}
.landing-steps h3{font-size:25px;margin:18px 0 8px}
.landing-steps p{color:var(--muted);line-height:1.55;margin:0}
.sample-lesson{margin:40px 0 0;padding:36px;border-radius:22px;background:linear-gradient(170deg,#f3f8fb,#fffdf8 70%);border:1px solid #cddde8}
.sample-lesson>p{color:var(--muted);max-width:720px;line-height:1.55}
.dialogue{list-style:none;display:grid;gap:12px;padding:0;margin:24px 0 18px;max-width:760px}
.dialogue li{display:grid;grid-template-columns:70px minmax(0,1fr) auto;gap:12px;align-items:center}
.dialogue .speaker{font-size:12px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:var(--blue)}
.dialogue li.you .speaker{color:var(--clay)}
.dialogue .bubble{background:var(--white);border:1px solid #d6e2ea;border-radius:16px 16px 16px 4px;padding:12px 16px}
.dialogue li.you .bubble{background:#fff3e8;border-color:#efcdb3;border-radius:16px 16px 4px 16px}
.dialogue .bubble p{margin:0;font:600 19px/1.35 Georgia,serif;color:var(--ink)}
.dialogue .bubble small{display:block;color:var(--muted);font-size:14px;margin-top:3px}
.listen-button{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;border:1.5px solid #c3d4e0;background:var(--white);color:var(--blue);cursor:pointer}
.listen-button:hover{background:#eef4f8}
.listen-button svg{width:19px;height:19px}
.landing-features{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;margin:44px 0 0}
.landing-features article{padding:24px 22px;border-radius:18px;background:var(--white);border:1px solid var(--line)}
.feature-icon{display:grid;place-items:center;width:46px;height:46px;border-radius:12px;background:#e8f0f6;color:var(--blue)}
.feature-icon svg{width:23px;height:23px}
.landing-features h3{font-size:22px;margin:16px 0 8px}
.landing-features p{color:var(--muted);line-height:1.55;margin:0;font-size:15.5px}
.landing-path{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:40px;align-items:center;margin:56px 0 0;padding:38px;border-radius:22px;background:#173b50;color:#fff}
.landing-path .eyebrow{color:#f3c98f}
.landing-path h2{color:#fff}
.landing-path p{color:#d8e4ea;line-height:1.6}
.path-list{list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:0;margin:0}
.path-list li{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:12px;background:#ffffff12;border:1px solid #ffffff26;font-weight:600;font-size:15px}
.path-list span{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#f3c98f;color:#173b50;font:700 15px Georgia,serif;flex:none}
.landing-pricing{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px 40px;align-items:center;margin:56px 0 0;padding:36px;border-radius:22px}
.landing-pricing p{color:var(--muted);line-height:1.55}
.landing-pricing>.btn{grid-column:1/-1;justify-self:start;margin:0;flex:none}
.price-points{list-style:none;display:grid;gap:10px;padding:0;margin:0}
.price-points li{display:flex;align-items:baseline;justify-content:space-between;gap:14px;padding:14px 18px;border-radius:12px;border:1px solid var(--line);background:var(--white)}
.price-points strong{font:700 24px/1.1 Georgia,serif;color:var(--ink);flex:none}
.price-points span{color:var(--muted);text-align:right;font-size:15px}
.price-points li.best{border:2px solid var(--clay);background:#fff4ec}
.faq{margin:56px auto 0;max-width:860px}
.faq h2{margin-bottom:18px}
.faq details{border:0;border-bottom:1px solid var(--line);border-radius:0;background:none;padding:4px 0;margin:0}
.faq summary{cursor:pointer;list-style:none;border:0;background:none;border-radius:0;box-shadow:none;margin:0;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px 4px;font:600 20px/1.3 Georgia,serif;color:var(--ink)}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:'+';font:400 28px/1 Arial,sans-serif;color:var(--clay);flex:none;transition:transform .2s}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq details p{margin:0 4px 18px;color:#2a3b45;line-height:1.6;max-width:760px}
.landing-final{text-align:center;margin:60px 0 10px;padding:46px 24px;border-radius:24px;background:linear-gradient(170deg,#fbe2cf,#fff6ea 70%)}
.final-sun{width:74px;height:74px;margin:0 auto 6px;color:var(--clay)}
.landing-final h2{max-width:720px;margin:6px auto 24px}
.landing-final .btn{flex:none;min-width:0;margin:0}

/* Legal pages */
.legal-page h1{margin:10px 0 6px}
.legal-summary{margin:22px 0;padding:20px 22px;border-radius:14px;background:#eef4f8;border:1px solid #cddde8}
.legal-summary h2{font-size:21px;margin:0 0 10px}
.legal-summary ul{margin:0;padding-left:20px;line-height:1.6}
.legal-text{margin-top:20px;line-height:1.7;color:#22313a}
.legal-text h2{font-size:24px;margin:30px 0 8px}
.legal-text p{margin:0 0 12px}
.legal-page>p .btn{margin-right:10px}

/* ——— Sign-up, sign-in and onboarding ——— */
.password-wrap{position:relative}
.password-wrap input{padding-right:84px}
.reveal-password{position:absolute;right:8px;bottom:7px;min-height:34px;padding:6px 12px;border-radius:8px;border:1px solid #c9b29a;background:var(--white);color:var(--blue);font-weight:700;font-size:13px;cursor:pointer}
.legal-note{margin:18px 0 0;color:var(--muted);line-height:1.5}
.choice{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:3px;text-align:left}
.choice .choice-label{font-weight:700}
.choice small{font-size:13.5px;color:var(--muted);font-weight:400;line-height:1.4}
.choice.selected{border-color:var(--clay);background:#fbe6d8;box-shadow:inset 0 0 0 1px var(--clay)}
.choice-check{position:absolute;top:10px;right:10px;display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--clay);color:#fff}
.choice-check svg{width:15px;height:15px}
.choice:not(.selected):hover{border-color:var(--clay);background:#fff6ef}
.hello-list .phrase{padding:14px 0}
.onboard .signin-line{margin-top:22px}

/* ——— My plan, stages and passport ——— */
.stage-page .lesson-list li.done h3::after{content:' ✓';color:#2f7a4c}
.unlock-card{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;background:#fff4ec;border-color:#efc5a8}
.unlock-card h3{margin:0 0 6px}
.unlock-card .btn{margin:0;flex:none;min-width:0}
.passport-stamp.current{border-color:var(--clay)}
.passport-stamp.current span:last-child{color:var(--clay);font-weight:700}

/* ——— Lessons and practice ——— */
.prep-phrases{margin:24px 0 8px;padding:20px 22px;border-radius:16px;background:var(--white);border:1px solid var(--line)}
.prep-phrases h2{font-size:22px;margin:0}
.how-steps{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:0;margin:18px 0}
.how-steps li{display:flex;gap:12px;align-items:flex-start;padding:14px;border-radius:14px;background:#f3f8fb;border:1px solid #d4e2ec}
.how-steps li>span{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:var(--white);color:var(--blue);flex:none}
.how-steps svg{width:19px;height:19px}
.how-steps strong{display:block;font-size:14.5px;color:var(--ink)}
.how-steps small{display:block;font-size:13px;color:var(--muted);margin-top:3px;line-height:1.4}
.prep-actions .btn svg{width:20px;height:20px}
.session-phrases ul{margin-top:10px}
.session-phrases li{padding:6px 0;list-style:none}
.transcript{max-height:260px;overflow:auto}
.solo-page .learn-list{margin-top:6px}
.review-page .review-card,.solo-page .review-card{gap:10px}
.reflection-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;border:0;padding:0;margin:0}
.reflection-choices .choice{flex-direction:row;align-items:center;justify-content:flex-start;gap:12px;cursor:pointer;min-height:60px}
.reflection-choices .choice input{width:20px;height:20px;margin:0;flex:none;accent-color:var(--clay)}
.reflection-choices .choice:has(input:checked){border-color:var(--clay);background:#fbe6d8;box-shadow:inset 0 0 0 1px var(--clay)}
.reflection-page .card .phrase{padding:14px 0}

/* ——— My words ——— */
.words-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px;margin-top:6px}
.words-actions .btn{margin:0;flex:none;min-width:0}
.words-actions .small{margin:0;max-width:520px;color:var(--muted)}
.word-list{list-style:none;padding:0}
.word-list .phrase h3{font-size:24px;margin:0 0 4px}
.word-list .phrase p{margin:0;color:#2a3b45}
.word-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:8px!important;font-size:13px;color:var(--muted)!important}
.strength{display:inline-flex;align-items:center;padding:3px 10px;border-radius:20px;font-weight:700;font-size:12px}
.strength.new{background:#eef4f8;color:var(--blue)}
.strength.growing{background:#fff1d6;color:#8a5a00}
.strength.strong{background:#e3f1e8;color:#2f7a4c}

/* ——— Pricing ——— */
.pricing-promises{list-style:none;display:flex;flex-wrap:wrap;gap:10px 24px;padding:0;margin:0 0 26px}
.pricing-promises li{display:flex;align-items:center;gap:7px;font-weight:700;font-size:15px}
.pricing-promises svg{color:#2f7a4c;width:19px;height:19px}
.price-grid{align-items:stretch}
.price-card{position:relative;display:flex;flex-direction:column}
.price-card>.btn{margin-top:auto}
.price-card h2{font-size:clamp(24px,2.2vw,30px);line-height:1.15;margin:8px 0 12px}
.price-line{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 14px}
.price-before{font:400 22px Georgia,serif;color:var(--muted);text-decoration-thickness:2px}
.price-note{margin:4px 0 0;color:var(--muted)}
.save-badge{position:absolute;top:-14px;right:20px;background:#2f7a4c;color:#fff;font-weight:800;font-size:13px;letter-spacing:.3px;padding:7px 12px;border-radius:20px;box-shadow:0 4px 12px #2f7a4c40}
.course-card{border:2px solid #2f7a4c}
.included,.price-card .included{list-style:none;display:grid;gap:9px;padding:0;margin:18px 0}
.included li{display:flex;gap:9px;align-items:flex-start;line-height:1.4}
.included svg{color:#2f7a4c;width:18px;height:18px;flex:none;margin-top:2px}
.price-breakdown .saving dd,.price-breakdown .saving dt{color:#2f7a4c;font-weight:700}
.payment-help{border:1px solid var(--line);border-radius:14px;padding:14px 18px;background:var(--white)}
.payment-help summary{cursor:pointer;font-weight:700}
.payment-help p{margin:10px 0 0}
.payment-help .row{margin-top:10px}
.pricing-faq{margin:46px 0 0}
.checkout-page .price-line{margin:4px 0}

/* ——— Account ——— */
.settings-page .progress-strip{margin-top:18px}
.account-links{gap:10px 16px}
.danger-zone{border-color:#e9b9a8;margin-top:22px}
.danger-zone summary{cursor:pointer;font-weight:700;color:#9b2c14}
.danger-zone>div{margin-top:16px}
.btn.danger{background:#9b2c14;box-shadow:0 3px 0 #6c1e0d;color:#fff}
.btn.danger:hover{background:#7f230f}
/* Outlined danger button (studio › Delete account): dark red on cream, never red on red. */
.btn.danger.secondary{background:#fffdf7;color:#9b2c14!important;border:1.5px solid #b85239;box-shadow:0 2px 0 #ecc9bd}
.btn.danger.secondary:hover{background:#fbebe5}
.danger-zone .btn{justify-self:start;flex:none;min-width:0}

/* ——— Studio insights ——— */
.insights{margin-top:24px}
.insight-grid{gap:26px}
.insight-grid h3{font-size:20px;margin:0 0 12px}
.insight-list{list-style:none;padding:0;margin:0;display:grid;gap:10px}
.insight-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;align-items:center;font-size:14px}
.insight-list strong{font:700 20px Georgia,serif;color:var(--ink)}
.insight-list small{grid-column:1/-1;color:var(--muted);font-size:12px}
.insight-bar{grid-column:1/-1;height:6px;border-radius:6px;background:#f2e5d3;overflow:hidden}
.insight-bar span{display:block;height:100%;background:var(--clay);border-radius:6px}

/* ——— Word play page ——— */
.game-main{display:block}

/* ——— Tablets ——— */
@media(max-width:1100px){
 .landing-features{grid-template-columns:repeat(2,minmax(0,1fr))}
 .rhythm-card{grid-template-columns:1fr}
}
@media(max-width:950px){
 .today-art{display:none}
 .today-hero{grid-template-columns:1fr}
 .landing-hero{grid-template-columns:1fr;gap:28px}
 .landing-art{min-height:300px;height:340px;border-radius:170px 16px 16px 16px;order:-1}
 .landing-path,.landing-pricing{grid-template-columns:1fr}
 .landing-steps ol{grid-template-columns:1fr}
 .how-steps{grid-template-columns:1fr}
 .progress-strip{grid-template-columns:repeat(3,minmax(0,1fr))}
}

/* ——— Phones: bottom tab bar ——— */
@media(max-width:700px){
 #app.signed-in{padding-bottom:calc(74px + env(safe-area-inset-bottom))}
 #app.signed-in .header .nav{position:fixed;left:0;right:0;bottom:0;z-index:60;order:0;width:auto;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;margin:0;padding:6px 6px calc(6px + env(safe-area-inset-bottom));background:var(--white);border-top:1px solid var(--line);box-shadow:0 -6px 20px #5a3a1a14}
 #app.signed-in .header .nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:0;min-height:54px;padding:6px 2px;border:0;border-radius:12px;background:none;font-size:11.5px;font-weight:700;color:var(--muted);white-space:nowrap;box-shadow:none}
 #app.signed-in .header .nav a svg{display:block;width:22px;height:22px}
 #app.signed-in .header .nav a.active{background:#fbe6d8;color:var(--clay)}
 #app.signed-in .header .nav a span{overflow:hidden;text-overflow:ellipsis;max-width:100%}
 .floating-music-mute{bottom:calc(86px + env(safe-area-inset-bottom))!important}
 .footer{flex-direction:column;align-items:flex-start;padding:22px 21px 30px}
 .today-copy{gap:18px}
 .today-plan{padding:20px 16px 16px;border-radius:16px}
 .plan-head{gap:12px}
 .plan-ring{width:62px;height:62px}
 .plan-ring strong{font-size:22px}
 .plan-steps>li{grid-template-columns:32px minmax(0,1fr);gap:10px 12px}
 .plan-steps>li>.btn{grid-column:2;justify-self:start}
 .step-check{width:30px;height:30px;font-size:14px}
 .featured-title{font-size:30px}
 .featured-actions{gap:10px 16px}
 .featured-actions .btn{width:100%}
 .week-dots{gap:5px}
 .week-dots li{width:28px;height:28px}
 .today-allowance{grid-template-columns:1fr}
 .rhythm-card{padding:24px 18px;margin-top:22px}
 .rhythm-choices,.rhythm-form.compact .rhythm-choices{grid-template-columns:1fr}
 .rhythm-actions .btn{width:100%}
 .progress-strip{grid-template-columns:repeat(2,minmax(0,1fr))}
 .progress-strip div:last-child{grid-column:1/-1}
 .landing{padding:0 18px 30px}
 .landing-hero{padding:22px 0 10px}
 .landing-hero h1{font-size:42px}
 .hero-actions .btn{width:100%}
 .landing-art{height:240px;min-height:240px;border-radius:120px 14px 14px 14px}
 .landing-features{grid-template-columns:1fr}
 .sample-lesson,.landing-path,.landing-pricing{padding:24px 18px}
 .dialogue li{grid-template-columns:minmax(0,1fr) auto}
 .dialogue .speaker{grid-column:1/-1;margin-bottom:-6px}
 .path-list{grid-template-columns:1fr}
 .price-points li{flex-direction:column;align-items:flex-start;gap:2px}
 .price-points span{text-align:left}
 .faq summary{font-size:18px}
 .reflection-choices{grid-template-columns:1fr}
 .learn-list .phrase{flex-wrap:wrap}
 .word-list .phrase{flex-wrap:wrap}
 .lock-label{white-space:normal}
 .celebration{padding:32px 18px}
 .celebration-stats li{min-width:0;flex:1 1 40%}
 .unlock-card .btn{width:100%}
 .prep-actions .btn{flex:1 1 100%}
}
.faq details[open]>summary{margin-bottom:0;background:none}
.payment-help summary,.danger-zone summary{border:0;background:none;padding:4px 0;min-height:0;font-size:15px}
.payment-help[open]>summary,.danger-zone[open]>summary{margin-bottom:0;background:none}
.verify-banner{background:#fff6e8;border-bottom:1px solid #e3c9a8;color:var(--ink)}
.verify-banner-inner{max-width:1180px;margin:0 auto;padding:10px 24px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px;font-size:14px;font-weight:600}
.verify-banner-actions{display:flex;flex-wrap:wrap;gap:8px}
@media (max-width:640px){.verify-banner-inner{padding:10px 16px}.verify-banner-actions{width:100%}.verify-banner-actions .btn{flex:1 1 auto}}
.text-link{color:var(--blue);font-weight:600;font-size:14px;text-decoration:underline;text-underline-offset:4px}
.voice-privacy{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px}
.variant-inline select{min-height:34px;padding:5px 30px 5px 12px;border-radius:30px;border:1.5px solid #9fbad0;background-color:#eef4f8;color:var(--blue);font-weight:700;font-size:12.5px}
.prep-details{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.reflection-page label.check.phrase{display:flex;justify-content:flex-start;align-items:flex-start;gap:14px;cursor:pointer;font-size:15px}
.reflection-page label.check.phrase input{width:20px;height:20px;margin:4px 0 0;flex:none;accent-color:var(--clay)}
.reflection-page label.check.phrase span{display:grid;gap:3px;text-align:left}
.reflection-page label.check.phrase strong{font:600 21px/1.3 Georgia,serif;color:var(--ink)}
.reflection-page label.check.phrase small{font-size:14px;color:var(--muted)}
.reflection-page .card .phrase:last-child{border-bottom:0}
/* Answers stay readable after the moment is solved (browsers grey out disabled buttons). */
.moments-page .answer:disabled{color:var(--ink);opacity:1}
.moments-page .choice-wrap.right .answer:disabled strong{color:#1f5135}
.moments-page .choice-wrap:not(.right) .answer:disabled strong{color:#33454f}
/* Keep the signed-in header on one row on laptop screens, also with longer translations. */
@media(max-width:1480px) and (min-width:701px){
 .header .nav a{min-width:0;padding:10px 13px}
 .header .nav{gap:6px}
 .music-control span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
 .music-control{width:46px;height:46px;padding:0;border-radius:50%}
 .header-picker select{max-width:118px}
}
@media(max-width:1180px) and (min-width:701px){
 .header .nav a{padding:9px 10px;font-size:14px}
 .account-button span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
}

/* ——— 2.5: clearer lessons, habits and practice ——— */
/* Back links: one quiet style everywhere. */
.back-link{display:inline-flex;align-items:center;gap:6px;margin-bottom:6px;padding:6px 2px;font-size:15px;font-weight:700;color:var(--blue);text-decoration:none;border:0;background:none}
.back-link svg{width:18px;height:18px}
.back-link:hover{text-decoration:underline;text-underline-offset:4px}
/* Phone tab bar and desktop navigation: active label meets 4.5:1 contrast. */
#app.signed-in .header .nav a.active{color:#9a2f17}
@media(max-width:700px){#app.signed-in .header .nav a.active{background:#fbe6d8;color:#9a2f17}}
/* Today: lesson phrases, adaptation note, tomorrow, rest days, weekly goal. */
.lesson-phrases{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 2px}
.lesson-phrases span{display:inline-block;padding:4px 10px;border-radius:999px;background:#fdf0e3;border:1px solid #efd3b6;font:600 15px/1.35 Georgia,serif;color:#5b2c1b}
.adapt-note,.plan-tomorrow,.next-up,.recall-score{display:flex;align-items:flex-start;gap:8px;margin:12px 0 0;font-size:14.5px;color:#2b4a5e}
.adapt-note svg,.plan-tomorrow svg,.next-up svg,.recall-score svg{flex:none;width:18px;height:18px;margin-top:2px;color:var(--blue)}
.plan-tomorrow{font-weight:600}
.rest-note{margin:6px 0 0;font-size:12.5px;color:#4a5f6e}
.week-score.goal-met{display:inline-flex;align-items:center;gap:5px;color:#21603c;font-weight:700}
.week-score.goal-met svg{width:16px;height:16px}
/* Discovery cards: passport progress and the learner's own Spanish. */
.next-milestone{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;margin:8px 0 0;font-size:13px;color:#33495a}
.mini-meter{display:block;height:6px;border-radius:6px;background:#f0e2d0;overflow:hidden}
.mini-meter span{display:block;height:100%;border-radius:6px;background:var(--clay)}
.variety-art{display:flex;flex-direction:column;justify-content:center;gap:6px;padding:16px 22px;background:radial-gradient(circle at 85% 20%,#ffffff1f 0 18%,transparent 19%),radial-gradient(circle at 92% 78%,#ffffff14 0 12%,transparent 13%),linear-gradient(135deg,#0f4f84 0%,#125c98 55%,#2a7fb4 100%);color:#fffaf1}
.variety-art span{display:flex;align-items:baseline;gap:10px}
.variety-art b{font:700 25px/1.1 Georgia,serif;letter-spacing:-.01em}
.variety-art i{font:italic 15px/1.1 Georgia,serif;color:#ffd9a6}
.variety-art i::before{content:'≈ ';color:#ffffff99;font-style:normal}
/* Stage page: one status notice, lessons with what you will be able to do. */
.stage-goal{margin-top:10px;font-size:17px;color:#253b48}
.stage-goal strong{color:var(--ink)}
.stage-notice{display:flex;align-items:flex-start;gap:10px;font-size:14.5px;color:#4f3c27}
.stage-notice svg{flex:none;width:18px;height:18px;margin-top:2px}
.stage-page .lesson-list{list-style:none;padding:0;margin:18px 0 0}
.stage-page .lesson-list li.lesson-row{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:start;gap:6px 18px;padding:20px 0;border-bottom:1px solid var(--line)}
.stage-page .lesson-list li.done h3::after{content:none}
.lesson-number{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;border:1.5px solid #d6b894;font:700 17px Georgia,serif;color:#7a4a2a;background:var(--white)}
.lesson-row.done .lesson-number{background:#e5f2e8;border-color:#5f9c75;color:#21603c}
.lesson-number svg{width:18px;height:18px}
.lesson-kind{font-size:13px;color:#3f5869}
.lesson-copy h3{margin:6px 0 4px;font-size:25px}
.lesson-copy>p{margin:0;color:#2b3c45}
.done-tag{display:inline-block;margin-left:6px;padding:3px 9px;border-radius:999px;background:#e5f2e8;color:#21603c;font:700 12px/1.4 system-ui,sans-serif;vertical-align:middle}
.lesson-action{display:flex;flex-direction:column;align-items:flex-end;gap:8px;padding-top:4px}
.lesson-action .small-link{font-size:14px;font-weight:700}
.lock-icon{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#f3ebe0;color:#6e5a43}
.lock-icon svg{width:16px;height:16px}
.lesson-row.locked h3{color:#3a3f3f}
.stage-aim{margin:2px 0 4px;font-size:14.5px;color:#2b4a5e}
/* Practice on your own: record and compare, build the phrase from memory. */
.phrase-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.icon-button.record{color:#9a2f17;border-color:#d9a58f}
.icon-button.record.live{background:#9a2f17;color:#fff;border-color:#9a2f17;animation:recPulse 1.2s ease-in-out infinite}
@keyframes recPulse{50%{box-shadow:0 0 0 6px #9a2f1726}}
.record-note{display:flex;align-items:flex-start;gap:8px;margin-top:14px}
.record-note svg{flex:none;width:16px;height:16px;margin-top:2px;color:#9a2f17}
.recall-card{display:grid;gap:14px;text-align:left}
.review-pill{justify-self:start;background:#e8f0f7;color:#124a75}
.review-pill svg{width:15px;height:15px}
.build-hint{margin:0;font-size:15px;color:#3b5060}
.answer-line{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-height:62px;padding:10px 12px;border:2px dashed #d7bfa3;border-radius:14px;background:#fffdf8}
.answer-line.right{border-style:solid;border-color:#5f9c75;background:#f1f8f3}
.answer-line.wrong{border-style:solid;border-color:#d39a86;background:#fdf3ef}
.answer-placeholder{font-size:14px;color:#6a7a83}
.tile-bank,.choose-options{display:flex;flex-wrap:wrap;gap:10px}
.tile{min-height:46px;padding:9px 16px;border-radius:12px;border:1.5px solid #c9a985;background:#fff;box-shadow:0 3px 0 #e6d2b8;font:600 20px/1.2 Georgia,serif;color:var(--ink);cursor:pointer;transition:transform .12s,box-shadow .12s}
.tile:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 0 #dcc2a2}
.tile:disabled{opacity:.35;box-shadow:none;cursor:default}
.tile.placed{background:#fdf0e3;border-color:#d7a77f}
.tile.placed:disabled{opacity:1}
.tile.choose{flex:1 1 100%;text-align:left}
.tile.choose.right{border-color:#5f9c75;background:#f1f8f3;opacity:1}
.tile.choose.wrong{border-color:#d39a86;background:#fdf3ef;opacity:1}
.solo-feedback{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;padding:12px 14px;border-radius:12px;font-size:15px}
.solo-feedback strong{font:700 20px Georgia,serif}
.solo-feedback.right{background:#e5f2e8;color:#1d5434}
.solo-feedback.retry{background:#fff4df;color:#6b4610}
.solo-feedback.wrong{background:#fdeee8;color:#7d2e1a}
.solo-answer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}
.solo-answer h2{margin:0;font-size:32px}
.solo-controls{justify-content:flex-end;gap:12px;margin-top:16px}
/* Celebrations: phrase results, new milestones and a gentle sun burst. */
.celebration-sun{position:relative}
.celebration-rays{position:absolute;inset:-18px;border-radius:50%;background:radial-gradient(circle,#fbd9a866 0%,#fbd9a800 70%);animation:celebrate 1.6s ease-out 1}
@keyframes celebrate{from{transform:scale(.6);opacity:0}40%{opacity:1}to{transform:scale(1.15);opacity:0}}
@media(prefers-reduced-motion:reduce){.celebration-rays,.icon-button.record.live{animation:none}}
.result-list{margin:18px auto 0;max-width:520px;text-align:left}
.result-list ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.result-list li{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;background:#fffaf1;border:1px solid #efdcc5}
.result-list li span[lang]{font:600 18px Georgia,serif;color:var(--ink)}
.result-list li small{font-size:12.5px;color:#4a5f6e;text-align:right}
.result-mark{display:grid;place-items:center;width:26px;height:26px;border-radius:50%}
.result-list li.ok .result-mark{background:#e5f2e8;color:#21603c}
.result-list li.again .result-mark{background:#fff1dc;color:#8a5212}
.result-mark svg{width:15px;height:15px}
.new-milestones{display:grid;gap:10px;margin:18px auto 0;max-width:520px}
.new-milestone{display:flex;align-items:center;gap:14px;padding:12px 16px;border-radius:14px;background:linear-gradient(90deg,#fff1dc,#fffaf1);border:1px solid #f0cf9f;text-align:left}
.new-milestone strong{display:block;font:700 20px Georgia,serif}
.new-milestone small{display:block;color:#4a4f45}
.next-up{justify-content:center;margin-top:16px}
/* Milestone medallions and passport stamps (art.js). */
.badge-art{flex:none;display:block}
.badge-track{fill:none;stroke:#eadccb;stroke-width:4}
.badge-progress{fill:none;stroke:#d39a5f;stroke-width:4;stroke-linecap:round}
.badge-face{fill:#fbf6ee}
.badge-motif{stroke:#9aa3a5;stroke-width:2.4}
.badge-art.earned .badge-progress{stroke:#bd3e22}
.badge-art.earned .badge-face{fill:#fde7cf}
.badge-art.earned .badge-motif{stroke:#9a2f17}
.milestones{margin-top:34px}
.milestones-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}
.milestones-head h2{font-size:30px;margin:0}
.milestones-head p{margin:0;font-weight:700;color:#2b4a5e}
.milestone-grid{list-style:none;padding:0;margin:16px 0 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.milestone{display:flex;align-items:center;gap:14px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--white)}
.milestone.earned{border-color:#efc9a3;background:#fffaf1}
.milestone strong{display:block;font-size:16px;color:var(--ink)}
.milestone small{display:block;font-size:13px;color:#4a5560}
.milestone-progress{display:inline-flex;align-items:center;gap:4px;margin-top:4px;font-size:12.5px;font-weight:700;color:#4a5f6e}
.milestone.earned .milestone-progress{color:#21603c}
.milestone-progress svg{width:14px;height:14px}
.stamp-grid .passport-stamp{display:grid;justify-items:center;gap:4px;padding:16px 10px 14px;text-align:center;border-radius:16px;text-decoration:none}
.stamp-art{width:88px;height:88px}
.stamp-edge{fill:#fff;stroke:#d7c3ab;stroke-width:2;stroke-dasharray:3 3}
.stamp-paper{fill:#f5efe6}
.stamp-motif{stroke:#9aa1a3;stroke-width:2.6}
.stamp-number{font:700 11px system-ui,sans-serif;fill:#8a9497}
.stamp-art.earned .stamp-edge{stroke:var(--tone)}
.stamp-art.earned .stamp-paper{fill:#fffaf1}
.stamp-art.earned .stamp-motif{stroke:var(--tone)}
.stamp-art.earned .stamp-number{fill:var(--tone)}
.stamp-art.current .stamp-edge{stroke:#bd3e22;stroke-dasharray:5 3}
.stamp-art.current .stamp-motif{stroke:#b0866a}
.passport-stamp .stamp-status{font-size:12.5px;font-weight:700;color:#4a5560}
.passport-stamp.current .stamp-status,.passport-stamp.current span:last-child{color:#9a2f17}
.passport-stamp.earned .stamp-status{color:#21603c}
/* Pricing: every stage price in one table. */
.stage-prices summary{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 16px;cursor:pointer}
.stage-prices .summary-title{font:700 20px Georgia,serif;color:var(--ink)}
.stage-prices summary small{font-size:14px;color:#2b4a5e}
.stage-prices table{width:100%;margin-top:14px;border-collapse:collapse;font-size:14.5px}
.stage-prices th,.stage-prices td{padding:9px 6px;border-bottom:1px solid #eadfce;text-align:right;white-space:nowrap}
.stage-prices th[scope=row],.stage-prices thead th:first-child{text-align:left;white-space:normal}
.stage-prices th[scope=row] span{display:inline-grid;place-items:center;width:22px;height:22px;margin-right:6px;border-radius:50%;background:#f3e6d6;font-size:12px}
.stage-prices tfoot th,.stage-prices tfoot td{font-weight:700;border-bottom:0}
.stage-prices tfoot .saving th,.stage-prices tfoot .saving td{color:#21603c}
/* Spanish moments: hear it, then say it. */
.say-it{display:grid;gap:8px;margin:6px 0 12px;padding:14px 16px;border-radius:14px;background:#f1f8f3;border:1px solid #b9dcc4}
.say-it p{margin:0}
.say-it strong{font:700 24px Georgia,serif;color:#1d5434}
.moments-library.compact{display:flex;align-items:center;gap:12px;margin-top:22px;padding:12px 16px;border-radius:14px;background:#f4f0e8;color:var(--ink);box-shadow:none;text-decoration:none}
.moments-library.compact .library-copy{display:block;font-size:14.5px}
.moments-library.compact .library-copy span{color:#41525d}
.moments-library.compact svg{width:20px;height:20px}
/* Your Spanish (variety page). */
.variety-words ul{list-style:none;margin:10px 0 0;padding:0}
.variety-words li{display:grid;grid-template-columns:minmax(110px,1fr) minmax(150px,1.3fr) minmax(110px,1fr) auto;align-items:center;gap:10px 16px;padding:14px 0;border-bottom:1px solid #eadfce}
.variety-words li:last-child{border-bottom:0}
.variety-meaning{font-weight:700;color:#2b3c45}
.variety-form{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.variety-form small{flex-basis:100%;font-size:12px;color:#4a5f6e}
.variety-form.yours strong{font:700 22px Georgia,serif;color:var(--ink)}
.variety-form span[lang]{font:600 18px Georgia,serif;color:#55616a}
.variety-notes article{padding:16px 0;border-bottom:1px solid #eadfce}
.variety-notes article:last-child{border-bottom:0}
.variety-notes h3{margin:0 0 4px;font-size:21px}
.variety-examples{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:10px}
.variety-examples>div{display:grid;justify-items:start;gap:4px;padding:10px 12px;border-radius:12px;background:#f7f2ea}
.variety-examples>div .listen-pair{display:flex;gap:6px;margin-top:2px}
.variety-examples small{font-size:12px;color:#4a5f6e}
.variety-examples strong{font:600 17px Georgia,serif}
/* Lesson page. */
.prep-goal{margin:4px 0 14px;font-size:15px;color:#2b4a5e}
.how-title{margin:28px 0 10px;font-size:22px}
/* Consistent button lettering: one sans-serif face for every primary action. */
.btn,.landing .btn,.hero-start,.start-speaking,.moments-page .button{font-family:var(--sans,"Segoe UI",system-ui,-apple-system,sans-serif)}
@media(max-width:950px){.milestone-grid{grid-template-columns:1fr}.variety-words li{grid-template-columns:1fr auto}.variety-meaning{grid-column:1/-1}}
@media(max-width:700px){
 /* One-row header on phones: icon buttons for music and account, compact language picker. */
 #app.signed-in .header{flex-wrap:nowrap;gap:8px;padding:10px 14px}
 #app.signed-in .header .brand{font-size:21px;gap:8px;min-width:0}
 #app.signed-in .header .brand svg{width:30px;height:30px}
 #app.signed-in .header .tools{gap:6px;margin-left:auto;flex-wrap:nowrap}
 #app.signed-in .music-control,#app.signed-in .account-button{width:40px;height:40px;min-height:40px;padding:0;border-radius:50%;justify-content:center}
 #app.signed-in .music-control span,#app.signed-in .account-button span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
 #app.signed-in .header-picker{min-height:40px;padding:0 6px 0 10px}
 #app.signed-in .header-picker select{max-width:92px;font-size:13px}
 .lesson-prep .art{display:none}
 .stage-page .lesson-list li.lesson-row{grid-template-columns:36px minmax(0,1fr);gap:6px 12px}
 .lesson-number{width:34px;height:34px;font-size:15px}
 .lesson-action{grid-column:2;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-start}
 .lesson-copy h3{font-size:22px}
 .solo-page .learn-list .phrase{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}
 .phrase-tools,.solo-page .learn-list .phrase .listen-pair{justify-content:flex-start}
 .learn-list.compact .phrase{display:grid;grid-template-columns:minmax(0,1fr);align-items:start;gap:8px}
 .learn-list.compact .listen-pair{display:flex;gap:6px}
 .solo-answer h2{font-size:26px}
 .tile{font-size:18px;padding:8px 13px}
 .solo-controls .btn{flex:1 1 auto}
 .variety-examples{grid-template-columns:1fr}
 .milestones-head h2{font-size:26px}
 .stamp-art{width:72px;height:72px}
 .stage-prices th,.stage-prices td{padding:8px 4px;font-size:13.5px}
}
.stamp-grid .passport-stamp{color:var(--ink);background:var(--white);opacity:1}
.stamp-grid .passport-stamp strong{color:#1d2a2c;font:600 17px/1.25 Georgia,serif}
.stamp-grid .passport-stamp small{color:#4a5560;letter-spacing:.06em}
.stamp-grid .passport-stamp.earned strong{color:#5b2010}
.stamp-grid .passport-stamp:nth-child(even).earned strong{color:#123f63}
@media(max-width:700px){
 /* Phone header, signed in: brand plus three round icon buttons (music, language, account). */
 #app.signed-in .header .brand{flex:0 0 auto;font-size:21px}
 #app.signed-in .header .tools{flex:0 0 auto}
 #app.signed-in .tools .account-button{min-width:40px;width:40px;padding:0}
 #app.signed-in .account-button svg{display:block;width:20px;height:20px}
 #app.signed-in .header-picker{position:relative;flex:0 0 40px;width:40px;height:40px;min-height:40px;padding:0;border-radius:50%;justify-content:center}
 #app.signed-in .header-picker svg{width:20px;height:20px}
 #app.signed-in .header-picker select{position:absolute;inset:0;width:100%;max-width:none;height:100%;opacity:0;cursor:pointer}
 #app.signed-in .header-picker:focus-within{outline:3px solid #87b1c5;outline-offset:2px}
}
@media(max-width:700px){#app.signed-in .header .tools{width:auto;justify-content:flex-end;margin-left:auto}}
.variety-page .eyebrow{display:block;margin-top:20px}
.variety-meaning::first-letter{text-transform:uppercase}
.variety-form.yours{display:grid;justify-items:start;gap:4px}
.variety-form.yours small{flex-basis:auto}
.variety-form.yours .listen-pair{display:flex;gap:6px}
.variety-form.yours .icon-button:not(.slow-label){width:40px;height:40px}

/* ——— 2.5 cycle 2: consistency ——— */
/* One sans-serif face for every button, including the two large calls to action. */
.landing .btn.hero-start,.today-plan .featured-actions .btn.start-speaking{font:700 18px/1.2 'Segoe UI',Arial,sans-serif;justify-content:center;gap:12px}
.landing .btn.hero-start{font-size:19px}
/* Locked voice lesson vs free practice on the stage page. */
.lock-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;background:#f3ebe0;color:#5d4a35;font-size:13px;font-weight:700;white-space:nowrap}
.lock-chip svg{width:14px;height:14px}
.muted-note{color:#4a5f6e}
/* Disclosure marker for the price table. */
.stage-prices summary{list-style:none;position:relative;padding-left:22px}
.stage-prices summary::-webkit-details-marker{display:none}
.stage-prices summary::before{content:'';position:absolute;left:2px;top:.55em;border:6px solid transparent;border-left:8px solid var(--blue);border-right:0;transition:transform .15s}
.stage-prices[open] summary::before{transform:rotate(90deg)}
@media(prefers-reduced-motion:reduce){.stage-prices summary::before{transition:none}}
/* Lessons / My passport as a segmented control. */
.segmented{display:inline-flex;gap:0;padding:4px;border-radius:12px;background:#f1e7da;border:1px solid #e3d2bd}
.segmented .btn{min-height:40px;padding:8px 18px;border:0;border-radius:9px;box-shadow:none;background:transparent;color:#4a3a2a;font-size:15px}
.segmented .btn[aria-current="page"]{background:var(--white);color:var(--ink);box-shadow:0 1px 3px #5a3a1a26}
.segmented .btn:not([aria-current]){background:transparent}
@media(max-width:760px){
 .variety-art{padding:12px 14px;gap:4px}
 .variety-art b{font-size:19px}
 .variety-art i{display:none}
 .next-milestone{grid-template-columns:1fr auto}
 .next-milestone .mini-meter{grid-column:1/-1;grid-row:2}
}
@media(max-width:700px){
 /* Phones: the two forms of a word sit side by side; the meaning and the save button span the row. */
 .variety-words li{grid-template-columns:1fr 1fr;gap:8px 12px}
 .variety-words li .variety-meaning,.variety-words li .btn{grid-column:1/-1}
 .variety-words li .btn{justify-self:start}
 .variety-words .variety-form .listen-pair{flex-wrap:nowrap;gap:5px}
 .variety-words .variety-form .icon-button:not(.slow-label){width:38px;height:38px}
 .variety-words .variety-form .listen-pair .slow-label{padding:0 10px;min-height:38px;font-size:13px}
 .lesson-action{gap:8px 12px}
}
/* Passport stamps 2.0 */
.stamp-art{width:90px;height:106px;overflow:visible}
.stamp-art .stamp-paper{fill:#fffaf1;stroke:#e2d3bf;stroke-width:.8}
.stamp-art .stamp-holes circle{fill:var(--white)}
.stamp-art .stamp-panel{fill:#ece6dd}
.stamp-art .stamp-label,.stamp-art .stamp-foot{font:800 8.5px system-ui,'Segoe UI',sans-serif;letter-spacing:.12em;fill:#9a938a}
.stamp-art .stamp-foot{font-size:6.5px;letter-spacing:.24em}
.stamp-art .stamp-motif{stroke:#b4ada3;stroke-width:2.4}
.stamp-art.current .stamp-panel{fill:#fde9d4}
.stamp-art.current .stamp-label,.stamp-art.current .stamp-foot{fill:#9a2f17}
.stamp-art.current .stamp-motif{stroke:#bd3e22}
.stamp-art.earned .stamp-panel{fill:var(--tone)}
.stamp-art.earned .stamp-label,.stamp-art.earned .stamp-foot{fill:#fffaf1}
.stamp-art.earned .stamp-motif{stroke:#fffaf1;stroke-width:2.6}
.stamp-art .stamp-postmark{fill:none;stroke:#2b211b;stroke-width:1.4;opacity:.55}
.passport-stamp.earned .stamp-art{transform:rotate(-4deg)}
.lesson-dots{display:flex;gap:4px;justify-content:center;margin:2px 0}
.lesson-dots i{width:8px;height:8px;border-radius:50%;background:#e4d9cb}
.lesson-dots i.on{background:#2f7a4f}
/* Milestone dialog */
.milestone-dialog{max-width:420px;width:calc(100% - 32px);padding:34px 28px 26px;border:0;border-radius:22px;background:radial-gradient(circle at 50% 0,#fff1dc 0,#fffdf8 60%);box-shadow:0 30px 80px #2b1a0a40;text-align:center;overflow:hidden}
.milestone-dialog::backdrop{background:#1c140c8c}
.milestone-dialog .badge-art{margin:0 auto 10px}
.milestone-dialog h2{margin:6px 0 6px;font-size:32px}
.milestone-dialog p{margin:0 auto 4px;max-width:320px}
.milestone-actions{justify-content:center;gap:10px;margin-top:18px}
.milestone-burst{position:absolute;left:50%;top:20px;width:220px;height:220px;margin-left:-110px;border-radius:50%;background:repeating-conic-gradient(from 0deg,#f6c98e33 0 10deg,transparent 10deg 20deg);pointer-events:none}
@media(prefers-reduced-motion:no-preference){.milestone-dialog[open] .badge-art{animation:badgePop .55s cubic-bezier(.2,1.4,.4,1) both}.milestone-burst{animation:burstSpin 9s linear infinite}}
@keyframes badgePop{from{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes burstSpin{to{transform:rotate(360deg)}}
/* Moment formats: listen first, or complete the Spanish. */
.listen-prompt{margin:8px 0 6px}
.listen-prompt .btn.listen{min-height:52px;padding:12px 22px;font-size:17px}
.gap-phrase{margin:10px 0 4px;font:700 26px/1.3 Georgia,serif;color:var(--ink)}
.gap-slot{display:inline-block;min-width:90px;border-bottom:3px solid var(--clay);color:transparent}
.dialogue-player{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:14px 0 12px}
.dialogue-player small{color:#3b5060}
.dialogue li.speaking .bubble{box-shadow:0 0 0 3px #125c9840;border-color:#125c98}
/* Onboarding: explanation language note, placement check. */
.explain-language{display:flex;align-items:center;gap:8px;margin-top:12px;color:#3b5060}
.explain-language svg{width:16px;height:16px;flex:none}
.placement-start{display:inline-flex;align-items:center;gap:8px;margin-top:14px;font-weight:700}
.placement-start svg{width:18px;height:18px}
.placement{display:grid;gap:12px}
.placement-phrase{margin:4px 0 0;font:700 30px/1.25 Georgia,serif;color:var(--ink)}
.placement-result{display:grid;gap:10px;padding:18px 20px;border-radius:16px;background:#f1f8f3;border:1px solid #b9dcc4}
.placement-level{margin:0;font:700 26px Georgia,serif;color:#1d5434}
.hello-list .phrase-tools{justify-content:flex-end;flex:0 1 auto;max-width:100%}
/* 2.5 cycle 2: the learner's reason, the "Make it yours" step and typed answers in voice lessons. */
.why-line{display:flex;align-items:flex-start;gap:8px;margin:8px 0 0;font-size:15px;line-height:1.45;color:#3b4f5c;max-width:56ch}
.why-line svg{flex:none;width:18px;height:18px;margin-top:2px;color:var(--clay)}
.why-line q{font-style:italic;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.why-line>span{display:block}
.why-label{font-weight:700;color:var(--ink)}
a.why-line.add{color:var(--blue);text-decoration:underline;text-underline-offset:3px;width:fit-content}
a.why-line.add:hover{color:var(--clay)}
.yours-card{display:grid;gap:12px;text-align:left}
.yours-card h2{margin:0;font-size:28px}
.yours-card>p{margin:0}
.yours-example{display:grid;gap:2px;padding:12px 14px;border-radius:12px;background:#fdf6ec;border:1px solid #efd9bd}
.yours-example strong{font:600 19px/1.35 Georgia,serif;color:var(--ink)}
.yours-example small{color:#4d5b66;font-size:14px}
.yours-why{display:flex;gap:8px;align-items:flex-start;font-size:14.5px;color:#3b4f5c}
.yours-why svg{flex:none;width:18px;height:18px;margin-top:2px;color:var(--clay)}
.voice-type{display:grid;gap:6px;margin-top:12px;text-align:left}
.voice-type label{font-size:14px;color:#3b4f5c}
.voice-type-row{display:flex;gap:8px}
.voice-type-row input{flex:1;min-width:0;min-height:44px}
.review-card.yours-card{justify-items:stretch;text-align:left}
.review-card.yours-card .phrase-tools{justify-content:flex-start}
/* The current tab is a light chip: dark text wins over the primary-button white. */
.segmented .btn[aria-current="page"]{color:var(--ink)!important;background:var(--white)!important}
.segmented .btn.secondary:not([aria-current]){color:#3b4f5c}
/* 2.5 cycle 3 */
.stretch-tag{display:inline-block;margin-bottom:4px;padding:2px 8px;border-radius:999px;background:#e8f0f6;color:#1d4f73;font:700 11.5px/1.5 Arial,sans-serif;letter-spacing:.04em;text-transform:uppercase}
.placement-dots{display:flex;gap:6px;margin-bottom:6px}
.placement-dots span{width:22px;height:5px;border-radius:3px;background:#eadccb}
.placement-dots span.done{background:#c98d6a}
.placement-dots span.now{background:var(--clay)}
/* One disclosure style on Pricing: a "+" on the right that turns into "×". */
.stage-prices summary,.payment-help summary,.price-breakdown summary{list-style:none}
.stage-prices summary::-webkit-details-marker,.payment-help summary::-webkit-details-marker,.price-breakdown summary::-webkit-details-marker{display:none}
.stage-prices summary::before{content:none!important}
.stage-prices summary{display:grid!important;grid-template-columns:1fr auto;align-items:center;column-gap:16px;row-gap:2px;padding-left:0!important}
.stage-prices summary .summary-title,.stage-prices summary small{grid-column:1}
.stage-prices summary::after{grid-column:2;grid-row:1 / span 2}
.payment-help summary{display:flex;align-items:center;justify-content:space-between;gap:12px}
.price-breakdown summary{display:inline-flex;align-items:center;gap:10px}
.stage-prices summary::after,.payment-help summary::after,.price-breakdown summary::after{content:'+';font:400 26px/1 Arial,sans-serif;color:var(--clay);text-decoration:none;transition:transform .2s}
.stage-prices[open] summary::after,.payment-help[open] summary::after,.price-breakdown[open] summary::after{transform:rotate(45deg)}
@media(prefers-reduced-motion:reduce){.stage-prices summary::after,.payment-help summary::after,.price-breakdown summary::after{transition:none}}
/* Speech check: the "Say it" button, the result and the first-use explanation. */
.btn.say-check{display:inline-flex;flex-direction:row;align-items:center;gap:6px;white-space:nowrap}
.btn.say-check.listening{background:#fdecea!important;border-color:var(--clay)!important;color:#8a2a14!important;animation:listenPulse 1.2s ease-in-out infinite}
@keyframes listenPulse{50%{box-shadow:0 0 0 6px #bd3e2226}}
@media(prefers-reduced-motion:reduce){.btn.say-check.listening{animation:none}}
.speech-feedback:empty{display:none}
.speech-feedback{margin-top:10px;padding:10px 12px;border-radius:12px;background:#fbf6ef;border:1px solid #eadcca;text-align:left}
.speech-feedback p{margin:0}
.speech-result{font-size:15px;color:#2f3e48}
.speech-result.great strong{color:#2f6b45}
.speech-result.close strong{color:#8a5a12}
.speech-result.retry strong{color:#9b2c14}
.speech-words{margin-top:6px!important;font:600 18px/1.5 Georgia,serif}
.speech-words .ok{color:#2f6b45}
.speech-words .miss{color:#9b2c14;text-decoration:underline wavy #d48b77;text-underline-offset:4px}
.speech-heard{margin-top:4px!important;color:#4d5b66}
.speech-error,.speech-now{color:#4d5b66}
.speech-consent{max-width:460px;width:calc(100% - 32px);padding:28px 26px 24px;border:0;border-radius:20px;background:#fffdf8;box-shadow:0 30px 80px #2b1a0a40}
.speech-consent::backdrop{background:#1c140c8c}
.speech-consent h2{margin:0 0 10px;font-size:26px}
.speech-consent p{margin:0 0 10px}
.speech-consent .row{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.learn-list .phrase .speech-feedback{flex-basis:100%}
.learn-list .phrase{flex-wrap:wrap}
/* Reminder nudge after practice, weekly recap and streak shields. */
.nudge-card{display:flex;gap:14px;align-items:flex-start;margin:18px auto 0;max-width:520px;padding:16px 18px;border-radius:16px;background:#fff8ee;border:1px solid #efd7b8;text-align:left}
.nudge-card .nudge-icon{flex:none;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:#fde8d3;color:var(--clay)}
.nudge-card .nudge-icon svg{width:22px;height:22px}
.nudge-title{margin:0 0 4px;font:700 18px/1.3 Georgia,serif;color:var(--ink)}
.nudge-card p{margin:0 0 10px}
.nudge-card .row{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.week-recap{margin-top:16px;padding:14px 18px;border-radius:16px;background:#f3f7fa;border:1px solid #d6e3ec}
.week-recap ul{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px 18px;margin:8px 0 0;padding:0;list-style:none}
.week-recap li{display:grid;gap:2px}
.week-recap strong{font:700 26px/1.1 Georgia,serif;color:var(--ink)}
.week-recap li span{font-size:13.5px;color:#2b4a5e}
.week-recap p{margin:6px 0 0}
.shield-count{display:inline-flex;align-items:center;gap:5px;margin-left:10px;padding:3px 9px;border-radius:999px;background:#eaf2f7;color:#1d4f73;font-size:13px;font-weight:700;white-space:nowrap}
.shield-count svg{width:15px;height:15px}
/* Phones: the moment's picture is a slim banner above the question; saved phrases stack evenly. */
@media(max-width:700px){
 .moments-page .moment-layout .scene{order:-1;min-height:0!important;height:160px;border-radius:80px 14px 14px 14px}
 .moments-page .moment-layout .scene figcaption,.moments-page .moment-layout .scene:after{display:none}
 .word-list .phrase{flex-direction:column;align-items:flex-start;gap:10px}
}
.placement-listen{margin:6px 0 4px}
.placement-reveal{display:inline-block;margin:2px 0 8px}
/* Practice pages: a slim strip of painting, a warm "right" moment, colourful stamps to come. */
.scene-strip{height:96px;margin:14px 0 4px;border-radius:48px 14px 14px 14px;overflow:hidden;border:2px solid #e8c9a3;background:#efc475}
.scene-strip img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 62%;filter:saturate(1.08)}
@media(max-width:700px){.scene-strip{height:72px}}
.solo-feedback.right{animation:rightGlow .9s ease-out both}
.solo-feedback.right strong{display:inline-block;animation:rightPop .45s cubic-bezier(.2,1.4,.4,1) both}
@keyframes rightGlow{0%{box-shadow:0 0 0 0 #2f6b4559}100%{box-shadow:0 0 0 14px #2f6b4500}}
@keyframes rightPop{0%{transform:scale(.6);opacity:0}100%{transform:scale(1);opacity:1}}
@media(prefers-reduced-motion:reduce){.solo-feedback.right,.solo-feedback.right strong{animation:none}}
.stamp-art:not(.earned):not(.current) .stamp-panel{fill:color-mix(in srgb,var(--tone) 16%,#fffaf1)}
.stamp-art:not(.earned):not(.current) .stamp-motif{stroke:color-mix(in srgb,var(--tone) 55%,#fffaf1)}
.stamp-art:not(.earned):not(.current) .stamp-label,.stamp-art:not(.earned):not(.current) .stamp-foot{fill:color-mix(in srgb,var(--tone) 60%,#8a8178)}
.consent-note{display:flex;align-items:flex-start;gap:8px;margin:0 0 6px;font-size:14.5px;color:#2f3e48}
.consent-note svg{flex:none;width:18px;height:18px;margin-top:2px;color:var(--clay)}
.answer-placeholder{color:#4f5d66}
/* Price details reads like the other disclosures: bold label, "+" on the right, no underline. */
.price-breakdown summary{color:var(--ink)!important;font-weight:700;text-decoration:none!important;display:flex!important;justify-content:space-between;width:100%}
.ios-hint{display:flex;gap:8px;align-items:flex-start;color:#3b4f5c}
.ios-hint svg{flex:none;width:16px;height:16px;margin-top:2px;color:var(--clay)}
.streak-help{margin-top:8px;font-size:13.5px;color:#3b4f5c}
.streak-help summary{cursor:pointer;color:var(--blue);font-weight:600;list-style:none;display:inline-flex;align-items:center;gap:6px;min-height:0;padding:2px 0;border:0;background:none}
.streak-help summary::-webkit-details-marker{display:none}
.streak-help summary::after{content:'+';font:400 18px/1 Arial,sans-serif;color:var(--clay)}
.streak-help[open] summary::after{content:'−'}
.streak-help p{margin:6px 0 0;max-width:60ch}
/* The recurring story: chapter card with the cast. */
.story-card{display:flex;gap:16px;align-items:center;margin:18px 0 6px;padding:16px 18px;border-radius:18px;background:linear-gradient(120deg,#fff6ea,#fdf0e1);border:1px solid #efd7b8}
.story-card.compact{margin:12px 0 0;padding:10px 14px;gap:12px;border-radius:14px}
.story-cast{display:flex;flex:none}
.story-cast .cast-face{border-radius:50%;overflow:hidden;border:2px solid #fffaf1;box-shadow:0 2px 6px #6b4a2a26}
.story-cast .cast-face+.cast-face{margin-left:-10px}
.story-copy h2{margin:2px 0 4px;font-size:22px}
.story-card.compact .story-copy h2{font-size:17px;margin:0}
.story-copy p{margin:0}
.story-names{color:#4d5b66;margin-top:4px!important}
.recall-say{display:flex;flex-wrap:wrap;align-items:center;gap:10px;justify-content:center}
.recall-say .small{color:#4d5b66}
.good-to-know{margin:16px 0 4px;padding:14px 16px 14px 18px;border-radius:14px;background:#eef4f8;border:1px solid #d3e2ec;border-left:4px solid var(--blue)}
.good-to-know h2{margin:0 0 4px;font:700 16px/1.3 system-ui,'Segoe UI',sans-serif;color:#1d4f73}
.good-to-know p{margin:0;font-size:15px;line-height:1.55;color:#24394a}
/* 2.5 cycle 5 */
/* Prices by stage is itself the card: its summary is a plain row inside it. */
.stage-prices summary{border:0!important;background:none!important;padding:2px 0!important;min-height:0!important;box-shadow:none!important}
.stage-prices[open]>summary{background:none!important;margin-bottom:8px}
/* Lesson page: the painting stays at the top beside the lesson. */
@media(min-width:900px){.lesson-prep{align-items:start!important}.lesson-prep>.art{position:sticky;top:24px}}
/* Phone stage pages: the status sits under the heading so the goal line keeps the full width. */
@media(max-width:700px){.stage-page .heading{flex-direction:column;align-items:flex-start}.stage-page .heading>.pill,.stage-page .heading>.btn{margin-top:8px}}
.placement-meaning{margin:4px 0 8px;font-size:15px;color:#2f3e48}
.rhythm-open>summary{display:inline-flex;align-items:center;gap:8px;list-style:none;cursor:pointer;padding:11px 18px!important;border:1.5px solid var(--blue)!important;border-radius:10px!important;background:#fff!important;color:var(--blue)!important;font-weight:700;font-size:15px!important;min-height:44px}
.rhythm-open>summary::-webkit-details-marker{display:none}
.rhythm-open>summary svg{width:18px;height:18px}
.rhythm-open[open]>summary{margin-bottom:14px}
/* A small burst of sparkles for a right answer (no motion when reduced motion is on). */
.solo-feedback.right{position:relative;overflow:visible}
.solo-feedback.right::before,.solo-feedback.right::after{content:'✦';position:absolute;top:-10px;font-size:16px;color:#e0a43a;opacity:0;animation:sparkle .9s ease-out .05s both}
.solo-feedback.right::before{left:12px}
.solo-feedback.right::after{right:14px;animation-delay:.18s;color:#bd3e22}
@keyframes sparkle{0%{opacity:0;transform:translateY(6px) scale(.4)}40%{opacity:1}100%{opacity:0;transform:translateY(-14px) scale(1.15)}}
@media(prefers-reduced-motion:reduce){.solo-feedback.right::before,.solo-feedback.right::after{animation:none;opacity:0}}
.story-card.compact .story-copy p.small{margin-top:2px}
/* 2.5 final fixes: practice days in the rhythm form. */
.rhythm-days{margin-top:16px!important}
.day-picks{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;max-width:460px}
.day-pick{position:relative;display:block;cursor:pointer}
.day-pick input{position:absolute;inset:0;width:100%;height:100%;opacity:0;margin:0;cursor:pointer}
.day-pick span{display:grid;place-items:center;min-height:44px;border:1.5px solid #d3b796;border-radius:10px;background:var(--white);font-size:14px;font-weight:600;color:var(--ink);transition:border-color .15s,background .15s}
.day-pick:hover span{border-color:var(--clay)}
.day-pick input:checked+span{border-color:var(--clay);background:#fbe6d8;box-shadow:inset 0 0 0 1px var(--clay)}
.day-pick input:focus-visible+span{outline:3px solid #6f9fbd;outline-offset:2px}
@media(prefers-reduced-motion:reduce){.day-pick span{transition:none}}
/* Phones: two rows of practice days, so longer day names (e.g. "niedz.") still fit. */
@media(max-width:520px){.day-picks{grid-template-columns:repeat(4,minmax(0,1fr));max-width:none}}
/* ——— 2.6 cycle 6 ——— */
/* Toasts sit under the header on desktop and above the tab bar on phones, so they never cover a button. */
#toast{bottom:auto!important;top:88px;transform:translate(-50%,-12px)}
#toast.show{transform:translate(-50%,0)}
@media(max-width:700px){#toast{top:auto;bottom:84px!important;transform:translate(-50%,12px)}#toast.show{transform:translate(-50%,0)}}
/* "My moments" card: a modest title that wraps as one block with its line underneath. */
.moments-library.compact .library-copy strong{display:block;font:700 18px/1.2 var(--serif);letter-spacing:0}
.moments-library.compact .library-copy span{display:block;margin-top:2px;font-size:13.5px}
/* Phrase rows keep their width when a recording appears: the play-back slot is always there. */
.phrase-tools .icon-button.placeholder{visibility:hidden;pointer-events:none}
.phrase-tools .btn.record-label{white-space:nowrap}
.btn.record-label{color:#9a2f17!important;border-color:#d9a58f!important}
.btn.record-label.live{background:#9a2f17!important;color:#fff!important;border-color:#9a2f17!important;animation:recPulse 1.2s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){.btn.record-label.live{animation:none}}
/* Spanish moments: hear an option before choosing it. */
.moments-page .choice-row{display:flex;align-items:stretch}
.moments-page .choice-row .answer{flex:1;min-width:0}
.moments-page .option-listen{flex:none;align-self:center;margin-right:12px;width:40px;height:40px}
@media(max-width:450px){.moments-page .option-listen{margin-right:8px;width:38px;height:38px}}
.recall-card .asker{display:flex;align-items:center;justify-content:center;gap:12px}
.recall-card .asker .cast-face{flex:none;border-radius:50%;box-shadow:0 1px 0 #d9c3a5}
.recall-card .asker .review-prompt{margin:0;text-align:left}
.recall-say.quiet{flex-direction:column;gap:8px}
.recall-say.quiet .build-hint{margin:0}
.moments-page .option-listen svg{width:20px;height:20px}
/* ——— 2.6 cycle 7 ——— */
.hello-list .hello-yours{display:block;margin-top:6px;color:var(--ink);font-style:italic}
/* Spanish moments: three options in one column, so there is never an empty cell. */
.moments-page .choices{grid-template-columns:1fr!important}
/* Recall card: the character asks the question in a speech bubble. */
.recall-card .asker{align-items:flex-start;gap:14px;text-align:left;max-width:520px;margin:0 auto}
.recall-card .asker .cast-face{width:56px;height:56px}
.recall-card .asker .review-prompt{position:relative;margin:4px 0 0;padding:12px 16px;background:#fff;border:1.5px solid #e3cfb4;border-radius:14px;font-size:21px}
.recall-card .asker .review-prompt::before{content:'';position:absolute;left:-9px;top:18px;width:14px;height:14px;background:#fff;border-left:1.5px solid #e3cfb4;border-bottom:1.5px solid #e3cfb4;transform:rotate(45deg)}
/* "Listen slowly" has a visible label. */
.listen-pair .slow-label{display:inline-flex;align-items:center;gap:6px;padding:0 14px;min-height:42px;border-radius:30px;font-weight:750;font-size:14px;width:auto}
/* Days before the learner joined are neither missed nor ahead: a faint dot. */
.week-dots li.before{background:transparent;border:2px solid #efe2cf;color:#d8c6ad}
/* Listen first: a two-character dialogue with faces, then one question. */
.dialogue-card{padding:18px 22px 10px}
.dialogue-card .dialogue-player{margin:0 0 6px}
.lesson-dialogue li{grid-template-columns:36px minmax(0,1fr) auto}
.lesson-dialogue .cast-face{border-radius:50%;box-shadow:0 1px 0 #d9c3a5}
.lesson-dialogue li.speaking .bubble{outline:2px solid var(--clay);outline-offset:1px}
.listen-question .listen-options{display:grid;gap:10px;margin-top:12px}
.listen-question .tile.choose{text-align:left;font:600 16px/1.4 Arial,sans-serif;padding:12px 16px}
.listen-question .solo-feedback{margin:14px 0 0}
@media(max-width:700px){.lesson-dialogue li{grid-template-columns:32px minmax(0,1fr) auto}.dialogue-card{padding:14px 14px 8px}}
.story-beat{display:flex;align-items:flex-start;gap:10px;margin:8px 0 2px;font-size:15px;color:#3b4b55;line-height:1.45}
.story-beat .cast-face{flex:none;border-radius:50%;margin-top:1px}
.story-beat svg:not(.cast-face){flex:none;width:18px;height:18px;margin-top:2px;color:var(--clay)}
/* Make it yours: type the ending, then say the whole sentence. */
.yours-finish{display:block;margin:14px 0 6px;text-align:left}
.yours-finish>span:first-child{display:block;font-size:13px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:var(--blue);margin-bottom:6px}
.yours-line{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font:600 20px/1.3 Georgia,serif;color:var(--ink)}
.yours-line input{flex:1 1 160px;min-width:0;font:600 20px/1.3 Georgia,serif;padding:8px 12px;border:1.5px solid #d3b796;border-radius:10px;background:#fff}
.yours-line input:focus-visible{outline:3px solid #6f9fbd;outline-offset:2px}
.yours-card .challenge-friend,.say-it .challenge-friend{margin-top:10px}
/* ——— 2.6 cycle 8 ——— */
/* The lesson's Start button comes right after the heading, before the phrase list (above the fold on phones and desktops). */
.lesson-prep .prep-content{display:flex;flex-direction:column}
.lesson-prep .voice-privacy,.lesson-prep .form-error,.lesson-prep .prep-actions,.lesson-prep .permission-hint{order:1}
.lesson-prep .prep-phrases{order:3;margin-top:18px}
.lesson-prep .good-to-know{order:3}
.lesson-prep h2.how-title,.lesson-prep h2.how-title+.how-steps{order:2}
.lesson-prep h2.how-title{margin-top:26px}
.lesson-prep .how-fold{order:4}
.lesson-prep .prep-content>*{max-width:100%}
/* Comprehension answers: a tick or cross, not colour alone. */
.listen-options .tile .mark{display:inline-grid;place-items:center;width:22px;height:22px;margin-right:8px;border-radius:50%;font-size:13px;font-weight:700;background:#5f9c75;color:#fff;vertical-align:middle}
.listen-options .tile.wrong .mark{background:#c0634a}
.word-due{color:#2b4a5e}
/* Review the other way round: hear the Spanish, pick the meaning. */
.hear-prompt{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}
.hear-prompt .listen-pair{display:inline-flex;align-items:center;gap:6px}
.hear-options{flex-direction:column;align-items:stretch;width:100%;max-width:520px}
.hear-options .tile.choose{text-align:left;font-size:17px;line-height:1.35;padding:12px 14px;white-space:normal}
/* ——— 2.6 cycle 9 ——— */
/* Once the rhythm form is open on Today, its opener button steps aside. */
.rhythm-open[open]>summary{display:none}
.rhythm-status{display:flex;align-items:center;gap:8px;margin:0 0 4px;color:#2b4a5e;font-weight:600}
.rhythm-status svg{width:18px;height:18px;color:#3f7d55}
.rhythm-status.unset{font-weight:400;color:#5a4634;padding:10px 14px;border-radius:10px;background:#fbf4e8;border:1px dashed #d8bc9a}
/* Say hello: the three rows keep the same shape (text left, buttons right); a long hint wraps inside its column. */
.hello-list .phrase>div:first-child{flex:1 1 200px;min-width:0}
.hello-list .phrase-tools{flex:0 0 auto}
/* Your Spanish: both forms of a word share one shape — label, word, then its Listen buttons. */
.variety-words .variety-form{display:grid;justify-items:start;gap:4px}
.variety-words .variety-form .listen-pair{display:flex;gap:6px}
.variety-words .variety-form .icon-button:not(.slow-label){width:40px;height:40px}
/* Back after a few days away. */
.today-welcome .welcome-back{display:flex;align-items:flex-start;gap:10px;margin:12px 0 0;padding:12px 14px;border-radius:12px;background:#fff6ea;border:1px solid #efd9bb;color:var(--ink);font-size:16px;line-height:1.45;max-width:610px}
.welcome-back svg{flex:none;width:20px;height:20px;color:#b9531f;margin-top:2px}
.week-dots li.covered{border-color:#8fb49b;background:#eaf4ec;color:#2f6a46}
.week-dots li.covered svg{width:14px;height:14px}
.needs-line{display:flex;align-items:flex-start;gap:8px;margin:14px 0 0;color:#4a5f6e}
.needs-line svg{flex:none;width:18px;height:18px;margin-top:1px;color:#b9531f}
/* A stage pass: the new stamp lands on the page. */
.stamp-reveal{display:grid;justify-items:center;gap:8px;margin:6px auto 18px}
.stamp-reveal .stamp-land{width:150px;height:150px;animation:stamp-land .7s cubic-bezier(.2,.9,.3,1.2) both}
.stamp-reveal .stamp-land svg{width:100%;height:100%}
.stamp-reveal p{margin:0;font-size:16px;color:var(--ink)}
.stamp-reveal p strong{color:#9a2f17}
@keyframes stamp-land{0%{transform:scale(2.2) rotate(-14deg);opacity:0}60%{transform:scale(.96) rotate(-5deg);opacity:1}100%{transform:scale(1) rotate(-6deg);opacity:1}}
@media(prefers-reduced-motion:reduce){.stamp-reveal .stamp-land{animation:none;transform:rotate(-6deg)}}
/* The unlock button keeps its price whole: beside the label on wide screens, on its own line on phones. */
.unlock-btn{flex-wrap:wrap;column-gap:8px}
.unlock-btn .btn-price{white-space:nowrap}
.unlock-btn .btn-price::before{content:'· ';color:inherit}
@media(max-width:700px){.unlock-btn .btn-price{flex-basis:100%;text-align:center}.unlock-btn .btn-price::before{content:none}}
.story-twin{display:block;margin-top:4px;color:#7a3b26;font-style:italic}
.story-beat em.story-twin{font-size:13px}
/* After the first lesson, "How it works" folds away. */
.lesson-prep .how-fold{order:4;margin-top:22px}
.lesson-prep .how-fold>summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px}
.lesson-prep .how-fold>summary::-webkit-details-marker{display:none}
.lesson-prep .how-fold>summary::before{content:'+';display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;border:1.5px solid #c9b29a;font:700 15px/1 Arial,sans-serif;color:var(--blue)}
.lesson-prep .how-fold[open]>summary::before{content:'–'}
.lesson-prep .how-fold>summary:focus-visible{outline:3px solid #6f9fbd;outline-offset:3px;border-radius:6px}
/* My words: filter chips, a sort order and a two-tap Remove. */
.word-tools{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;margin:18px 0 4px}
.word-filters{display:flex;flex-wrap:wrap;gap:8px}
.chip-button{padding:7px 13px;border-radius:999px;border:1.5px solid #cdb79a;background:#fff;color:var(--ink);font:600 14px/1.2 Arial,sans-serif;cursor:pointer}
.chip-button.on{background:#2b4a5e;border-color:#2b4a5e;color:#fff}
.chip-button:focus-visible{outline:3px solid #6f9fbd;outline-offset:2px}
.word-sort{display:inline-flex;align-items:center;gap:8px;font-size:14px;color:#2b4a5e;font-weight:600}
.word-sort select{font:inherit;padding:7px 10px;border:1.5px solid #cdb79a;border-radius:10px;background:#fff;color:var(--ink)}
.word-remove{margin-left:4px;font-size:13px;color:#8a5a3c}
.word-remove.confirming{color:#9a2f17;font-weight:700}
.word-list .empty-filter{color:#5a4634;padding:18px 0}
/* 2.6.1: below the widest layouts the floating Mute button sat on top of text and buttons; the header's ♫ button mutes there. */
@media (max-width:1240px){.floating-music-mute{display:none!important}}
/* 2.6.1: a lesson page on a copy without the voice service says so plainly. */
.lesson-prep .voice-unavailable{order:1}
.voice-unavailable{display:flex;gap:10px;align-items:flex-start;margin:18px 0 6px;padding:14px 16px;border:1px solid #e3c9a8;border-radius:14px;background:#fff6e8;color:#3d3326}
.voice-unavailable svg{flex:none;margin-top:2px}
.answer-line span.tile{cursor:default}
/* 2.6.2: the studio's one-time reset link panel. */
.reset-link-panel{margin-top:14px;padding:14px 16px;border:1px solid #d8c4ab;border-radius:12px;background:#fffaf2}
.reset-link-panel h3{margin:0}
.reset-link-field{width:100%;margin-top:4px;font:13px/1.4 ui-monospace,Consolas,monospace}

/* Gentle artwork motion (art-motion.js): a layer laid over the picture in its own 768 × 1152 coordinates. */
.art-motion{position:absolute;left:0;top:0;width:768px;height:1152px;transform-origin:0 0;pointer-events:none;opacity:0;transition:opacity .3s ease}
.art-motion.on{opacity:1}
.art-motion i{position:absolute;display:block;opacity:0;will-change:transform,opacity}
.art-motion .glint{border-radius:50%;background:radial-gradient(closest-side,#fff 0%,rgba(255,251,236,.8) 45%,rgba(255,255,255,0) 100%)}
.art-motion .sheen{border-radius:50%;background:radial-gradient(closest-side,rgba(255,255,255,.95),rgba(255,255,255,.4) 55%,rgba(255,255,255,0))}
.art-motion .drop{border-radius:50%;background:radial-gradient(closest-side,#fff 0%,rgba(255,255,255,.92) 38%,rgba(140,190,215,.55) 72%,rgba(140,190,215,0))}
.art-motion .ripple{border-radius:50%;border:2px solid rgba(255,255,255,.92);box-sizing:border-box;box-shadow:0 0 2px rgba(255,255,255,.5)}
.art-motion img{position:absolute;display:block;max-width:none;max-height:none;filter:var(--art-filter,none)}
.art-motion .sails{will-change:transform}
.art-motion .petal{border-radius:70% 30% 70% 30%}
.art-motion .petal.white{background:radial-gradient(circle at 40% 40%,#fff 0%,#fffaf0 55%,#efe2c6 100%);box-shadow:0 .5px 1.5px rgba(110,88,50,.5)}
.art-motion .petal.pink{background:radial-gradient(circle at 40% 40%,#f25a9a 0%,#d92b77 60%,#b81d62 100%)}
.art-motion .leaf{border-radius:100% 0;background:linear-gradient(135deg,#a9b98a 0%,#7f9461 55%,#62784a 100%)}
.art-motion .mote{border-radius:50%;background:radial-gradient(closest-side,#fffef6 0%,#fff3d2 28%,rgba(255,232,180,.6) 55%,rgba(255,226,170,0) 100%)}
.art-motion .shaft{background:linear-gradient(90deg,rgba(255,240,205,0) 0%,rgba(255,244,214,.9) 50%,rgba(255,240,205,0) 100%);-webkit-mask-image:linear-gradient(0deg,transparent,#000 30%,#000 70%,transparent);mask-image:linear-gradient(0deg,transparent,#000 30%,#000 70%,transparent);border-radius:50%}
.art-motion .steam{transform-origin:50% 100%;filter:blur(1.5px) drop-shadow(0 0 1.6px rgba(72,60,48,.4))}
.art-motion .steam path{fill:none;stroke:rgba(255,255,255,.92);stroke-linecap:round;stroke-dasharray:46 160}
.art-motion .glow{border-radius:50%;background:radial-gradient(closest-side,rgba(255,200,110,.9) 0%,rgba(255,150,60,.45) 55%,rgba(255,140,50,0) 100%)}
.art-motion svg{position:absolute;overflow:visible;max-width:none;max-height:none}
.art-motion .flight{width:0;height:0;opacity:1}
.art-motion .bird{color:#3b332c}
.art-motion .spin{filter:blur(1.1px)}
.art-motion .spin .ring{fill:none;stroke:rgba(255,240,215,.62);stroke-width:5;stroke-linecap:round;stroke-dasharray:6 27}
.art-motion .spin .rim{stroke:rgba(255,244,224,.5);stroke-width:4;stroke-dasharray:9 41}
/* Today's postcard comes alive: a band of warm sunlight sweeps across the picture once. */
.postal-sweep{position:absolute;top:-10%;bottom:-10%;left:0;width:36%;pointer-events:none;background:linear-gradient(90deg,rgba(255,236,190,0) 0%,rgba(255,240,205,.5) 50%,rgba(255,236,190,0) 100%);mix-blend-mode:screen;opacity:0}
@media (prefers-reduced-motion:reduce){.postal-sweep{display:none}}
@media (prefers-reduced-motion:reduce){.art-motion{display:none}}

/* 2.6.6: admin access and free access in Admin panel › Accounts › Manage. */
.admin-subsection{margin-top:18px;padding-top:16px;border-top:1px solid #e6d8c6}
.admin-subsection h3{margin:0}
.admin-subsection fieldset{border:0;padding:0;margin:0;min-width:0}
.admin-subsection legend{font-weight:700;font-size:15px;margin-bottom:6px;padding:0;color:var(--ink)}
.free-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.free-list li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;border:1px solid #e6d8c6;border-radius:12px;background:#fffaf2}
.free-list li .btn{flex:none}
/* 2.6.7 */
/* Payments not set up yet: said calmly at the top of Pricing and checkout. */
.notice.payments-soon{display:flex;align-items:flex-start;gap:12px;margin:0 0 22px;font-size:15px;line-height:1.55;color:#4f3c27;border-left:4px solid #d19457;border-radius:10px}
.notice.payments-soon svg{flex:none;width:20px;height:20px;margin-top:2px;color:var(--clay)}
.notice.payments-soon strong{color:#5b2b14}
.checkout-page .notice.payments-soon{margin:4px 0}
/* Errors scroll into view above the phone's bottom bar. */
.form-error{scroll-margin:90px 0 110px}
/* Passport: the chosen stamp is marked and its details sit right under the stamps. */
.stamp-grid .passport-stamp.selected{outline:3px solid var(--blue);outline-offset:3px;box-shadow:0 0 0 7px #d7e7f5}
.stamp-details{margin-top:22px;scroll-margin:90px 0 110px}
/* Make it yours: one text box per gap. */
.yours-line .yours-gap{flex:1 1 150px}
/* My plan: a lesson practised on your own. */
.done-tag.practised-tag{background:#e8f0f8;color:#1d4f78}
/* Today: the chosen practice days and time; planned days are marked in the week. */
.rhythm-line{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin:10px 0 0;font-size:14.5px;color:#2b4a5e}
.rhythm-line svg{flex:none;width:17px;height:17px;color:var(--clay)}
.rhythm-line .link{font-size:14px}
.week-dots li.planned:not(.active){box-shadow:inset 0 -3px 0 #d19457}
.placement-note{margin:0;color:#3d5566}
/* Change password (Account). */
.password-change summary{cursor:pointer;font-weight:700;color:var(--blue)}
.password-change form{margin-top:14px;max-width:460px}
/* Readable link hover on light backgrounds (contrast at least 4.5:1). */
.link:not(:disabled):hover{color:#b83c21}


/* Simpler Today (17 Oct 2026): one lesson card with one button; steps 2 and 3 listed under "Also today".
   The plan heading and ring show only once all three steps are done. */
.today-plan.simple .plan-head{padding-bottom:16px;margin-bottom:6px;border-bottom:1px solid #eedfca}
.today-plan.simple .plan-featured{text-align:center;padding:2px 0 20px}
.today-plan.simple .featured-title{margin:6px 0 10px}
.today-plan.simple .lesson-outcome{margin:0 auto;max-width:520px}
.today-plan.simple .story-beat{justify-content:center;text-align:left;max-width:520px;margin:0 auto;font:600 clamp(16px,1.4vw,18px)/1.4 Georgia,serif;color:var(--ink)}
.today-plan.simple .adapt-note{justify-content:center;text-align:left;margin:12px auto 0;max-width:520px}
.lesson-length{color:var(--muted)}
.today-plan.simple .featured-actions{flex-direction:column;align-items:stretch;gap:10px;margin:18px auto 0;max-width:440px}
.today-plan.simple .featured-actions .btn{width:100%;justify-content:center}
.today-plan.simple .featured-actions .btn.start-speaking{display:grid;grid-template-columns:auto auto;justify-content:center;align-items:center;column-gap:10px;row-gap:2px;padding:12px 20px}
.today-plan.simple .start-speaking .start-note{grid-column:1/-1;font:600 13px/1.2 'Segoe UI',Arial,sans-serif;opacity:.92}
.today-plan.simple .featured-actions .small-link{align-self:center}
.today-plan.simple .featured-body>.small{margin:12px auto 0;max-width:440px}
.today-plan.simple .step-done{justify-content:center}
.plan-also{padding:14px 0 8px;border-top:1px solid #eedfca}
.plan-also>.eyebrow{display:block;color:var(--muted)}
.plan-also .plan-steps{margin:6px 0 0}
.plan-also .plan-steps>li:first-child{border-top:0}
/* Music button (17 Oct 2026): off looks like the other header buttons; on looks exactly like the active Today button. */
.music-control[aria-pressed=false]{background:var(--white);border-color:#ac9681;color:var(--ink);box-shadow:none}
.music-control[aria-pressed=true]{background:#ffe6cf;border-color:#bf472a;color:#9a2f17;box-shadow:0 2px 0 #e5b28b}
.music-control[aria-pressed=true] b{color:#9a2f17}
.music-control[aria-pressed=false] b{color:var(--ink)}
.music-control[aria-pressed=false]:hover{background:#f4eadd;border-color:var(--clay)}/* One-time hint under the music button on a learner's first Today (17 Oct 2026). */
/* In the app's colours: warm cream, the Today button's rust border, serif text in deep brown, a rust note. */
.music-hint{position:fixed;z-index:60;max-width:min(290px,calc(100vw - 24px));padding:12px 16px 12px 40px;border-radius:16px;background:#fff7ec;border:2px solid #bf472a;color:#5b2c1b;font:600 15px/1.45 Georgia,serif;box-shadow:0 2px 0 #e5b28b,0 12px 28px #7a4a2329;animation:music-hint-in .25s ease-out}
.music-hint::after{content:'♫';position:absolute;left:14px;top:50%;transform:translateY(-50%);font:400 19px/1 Georgia,serif;color:#bf472a}
.music-hint::before{content:'';position:absolute;top:-10px;left:calc(var(--arrow-x,50%) - 9px);width:17px;height:17px;background:#fff7ec;border-left:2px solid #bf472a;border-top:2px solid #bf472a;border-radius:4px 0 0 0;transform:rotate(45deg)}
@keyframes music-hint-in{from{transform:translateY(-4px)}}
@media (prefers-reduced-motion:reduce){.music-hint{animation:none}}
/* Special-offer banner on Today and Pricing (18 Oct 2026): the learner's name, the discount and its last day. */
.offer-banner{display:flex;align-items:center;gap:18px;margin:0 0 4px;padding:18px 22px;border-radius:18px;color:#fff;background:linear-gradient(120deg,#9a2f17 0%,#bd3e22 45%,#e08a2c 100%);box-shadow:0 12px 30px #9a2f1733;position:relative;overflow:hidden}
.offer-banner::after{content:'';position:absolute;right:-40px;top:-50px;width:180px;height:180px;border-radius:50%;background:radial-gradient(circle,#ffd98a55,transparent 70%);pointer-events:none}
.offer-banner.free{background:linear-gradient(120deg,#1f6b45 0%,#2f7a4c 50%,#c9a227 100%);box-shadow:0 12px 30px #1f6b4533}
.offer-badge{flex:none;display:grid;place-items:center;width:78px;height:78px;border-radius:50%;background:#fff;color:#9a2f17;font:800 24px/1 'Segoe UI',Arial,sans-serif;box-shadow:0 0 0 5px #ffffff40;text-align:center;padding:4px}
.offer-banner.free .offer-badge{color:#1f6b45;font-size:19px}
.offer-copy{min-width:0;position:relative;z-index:1}
.offer-copy strong{display:block;font:700 clamp(19px,1.8vw,24px)/1.2 Georgia,serif;letter-spacing:-.3px;color:#fff;overflow-wrap:anywhere}
.offer-copy p{margin:5px 0 0;color:#fff;font-size:15px;line-height:1.45;opacity:.95}
.offer-until{display:inline-block;margin-top:8px;padding:3px 10px;border-radius:999px;background:#ffffff2e;font:700 12.5px/1.4 'Segoe UI',Arial,sans-serif;color:#fff}
.pricing-page>.offer-banner{margin:6px 0 18px}
.save-badge.offer{background:#bd3e22;color:#fff}
@media(max-width:680px){.offer-banner{padding:15px 16px;gap:13px}.offer-badge{width:60px;height:60px;font-size:19px}.offer-banner.free .offer-badge{font-size:15px}}
/* Admin › Discounts. */
.discount-ending input[type=date]{max-width:220px}
/* A long word in the badge ("Kostenlos") makes it a pill that fits the word, instead of overflowing the circle. */
.offer-badge.long{width:auto;min-width:78px;padding:0 14px;border-radius:999px}
@media(max-width:680px){.offer-badge.long{min-width:60px;padding:0 10px}}
