/* Oposaúde design system · tokens, base, layout, shared components */
:root{
 --ink:#0F3350;--ink-2:#123D59;--ink-soft:#3D5B70;--muted:#5F7684;
 --teal:#1F7A6B;--teal-deep:#175F54;--teal-soft:#E3F1EC;--teal-line:#BFDCD3;
 --lime:#DDEBA9;--lime-deep:#B9CF6E;
 --bg:#F3F7F5;--surface:#FFFFFF;--surface-2:#F8FBF9;--line:#DCE7E2;--line-strong:#C3D4CC;
 --ok:#1F7A6B;--ok-soft:#E3F1EC;--ko:#B3261E;--ko-soft:#FBEAE8;--warn:#A26100;
 --font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,"Liberation Sans",sans-serif;
 --font-display:-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Roboto,Arial,"Liberation Sans",sans-serif;
 --s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:64px;
 --r-sm:8px;--r-md:12px;--r-lg:16px;--r-xl:24px;
 --shadow-sm:0 1px 2px rgba(15,51,80,.06);--shadow:0 1px 2px rgba(15,51,80,.05),0 10px 30px -12px rgba(15,51,80,.18);
 --max:1120px;--gutter:var(--s4);
 font-family:var(--font);color:var(--ink);background:var(--bg);line-height:1.55;font-synthesis:none;-webkit-text-size-adjust:100%;
}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;min-height:100vh;display:flex;flex-direction:column}
main{flex:1}
header,main,footer{width:100%;max-width:var(--max);margin:0 auto;padding:0 var(--gutter)}
img,svg{display:block;max-width:100%}
p{margin:0 0 var(--s4)}
h1,h2,h3{font-family:var(--font-display);font-weight:700;letter-spacing:-.02em;line-height:1.15;margin:0 0 var(--s4);color:var(--ink);text-wrap:balance}
h1{font-size:clamp(34px,4.6vw,56px);line-height:1.05;letter-spacing:-.03em;margin:var(--s3) 0 var(--s5)}
h2{font-size:clamp(24px,2.6vw,32px)}
h3{font-size:20px;line-height:1.3;letter-spacing:-.01em}
a{color:var(--teal-deep);text-decoration-thickness:1px;text-underline-offset:3px}
a:hover{color:var(--ink)}
.eyebrow{font-size:12px;letter-spacing:.12em;font-weight:700;text-transform:uppercase;color:var(--teal);margin:0 0 var(--s2)}
.muted,small{color:var(--muted);font-size:14px}
.lead{font-size:clamp(17px,1.4vw,20px);line-height:1.5;color:var(--ink-soft);max-width:68ch}
/* Reading measure: running body copy stays near 70 characters per line; headings and cards keep the full column. */
main>section>p,footer>p{max-width:70ch}
.notice{border:1px solid var(--teal-line);background:var(--teal-soft);color:var(--ink-2);padding:var(--s3) var(--s4);border-radius:var(--r-md);font-size:14px;line-height:1.5;margin:0 0 var(--s4)}
.notice b{display:block;margin-bottom:var(--s1)}
.notice p:last-child{margin:0}

/* Header */
header{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:var(--s3);height:64px;background:rgba(243,247,245,.92);backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)}
header>a{display:flex;align-items:center;min-height:44px}
header img{width:150px;height:auto}
header nav{display:flex;align-items:center;gap:var(--s2)}
header nav a{font-size:14px;font-weight:700;text-decoration:none;color:var(--ink-2);padding:8px 12px;border-radius:999px;min-height:40px;display:inline-flex;align-items:center}
header nav a:hover{background:var(--surface)}
header nav .lang{display:inline-flex;background:var(--surface);border:1px solid var(--line-strong);border-radius:999px;padding:3px}
header nav .lang a{padding:5px 12px;min-height:32px;color:var(--muted)}
header nav .lang a[aria-current=true]{background:var(--ink);color:#fff}
header nav #account-link{background:var(--ink);color:#fff}
header nav #account-link:hover{background:var(--teal-deep)}

/* Buttons */
.button,button{font:inherit;font-weight:700;font-size:15px;line-height:1.2;border:1px solid var(--teal);padding:12px 20px;border-radius:var(--r-sm);cursor:pointer;background:var(--teal);color:#fff;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);min-height:44px;transition:background .15s,border-color .15s,box-shadow .15s,transform .05s}
.button:hover,button:hover{background:var(--teal-deep);border-color:var(--teal-deep);color:#fff}
.button:active,button:active{transform:translateY(1px)}
button:disabled{opacity:.55;cursor:default;transform:none}
.secondary,button.secondary{background:var(--surface);color:var(--teal-deep);border-color:var(--line-strong)}
.secondary:hover,button.secondary:hover{background:var(--teal-soft);color:var(--teal-deep);border-color:var(--teal-line)}
.button.big{padding:14px 24px;font-size:16px;min-height:52px}
.actions{display:flex;flex-wrap:wrap;gap:var(--s3);margin:var(--s4) 0}

/* Forms */
label{display:block;font-weight:700;font-size:14px;margin:var(--s4) 0 var(--s2)}
label input[type=checkbox]{width:18px;height:18px;margin:0 var(--s2) 0 0;vertical-align:-3px;accent-color:var(--teal)}
input,select{font:inherit;padding:12px 14px;border:1px solid var(--line-strong);border-radius:var(--r-sm);max-width:100%;width:100%;background:var(--surface);color:var(--ink);min-height:48px;transition:border-color .15s,box-shadow .15s}
select{width:auto;min-width:200px}
input:focus,select:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 3px rgba(31,122,107,.18)}
form button{margin-top:var(--s2)}
output{display:block;margin-top:var(--s4);font-weight:700}
:focus-visible{outline:3px solid var(--warn);outline-offset:3px}
.skip{position:absolute;top:-100px;left:var(--s4)}
.skip:focus{top:var(--s2);background:var(--surface);padding:12px 16px;border-radius:var(--r-sm);z-index:9;box-shadow:var(--shadow)}

/* Cards */
.card,.diagnostic,.lesson,.account,.category{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}
details{border-bottom:1px solid var(--line);padding:var(--s2) 0}
summary{cursor:pointer;min-height:44px;padding:10px 0;font-weight:600;list-style:none;display:flex;gap:var(--s3);align-items:flex-start}
summary::-webkit-details-marker{display:none}
summary::before{content:"";flex:none;width:20px;height:20px;margin-top:2px;border-radius:50%;background:var(--teal-soft);position:relative;transition:transform .15s}
summary::after{content:"";position:absolute;left:6px;top:5px;width:6px;height:6px;border-right:2px solid var(--teal-deep);border-bottom:2px solid var(--teal-deep);transform:rotate(45deg);transition:transform .15s}
summary{position:relative}
details[open]>summary::after{transform:rotate(225deg);top:8px}
summary:hover{color:var(--teal-deep)}

/* Landing */
.hero{display:grid;grid-template-columns:1.25fr 1fr;gap:var(--s7);padding:var(--s7) 0 var(--s7);align-items:center}
.hero .muted{margin-top:var(--s3)}
.journey{background:var(--ink);color:#fff;border-radius:var(--r-xl);padding:var(--s6);position:relative;overflow:hidden;box-shadow:var(--shadow)}
.journey::after{content:"";position:absolute;right:-70px;top:-70px;width:220px;height:220px;border-radius:50%;background:radial-gradient(circle at center,rgba(221,235,169,.35),rgba(221,235,169,0) 70%)}
.journey .eyebrow{color:var(--lime)}
.journey h2{color:#fff;font-size:26px;margin-bottom:var(--s5)}
.journey ol{list-style:none;padding:0;margin:0;display:grid;gap:var(--s3)}
.journey li{display:flex;align-items:center;gap:var(--s3);padding:var(--s3) var(--s4);background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);border-radius:var(--r-md);font-weight:600}
.journey .step{flex:none;width:34px;height:34px;border-radius:50%;background:var(--lime);color:var(--ink);font-size:13px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;letter-spacing:0}
.smallnote{border-top:1px solid rgba(255,255,255,.2);padding-top:var(--s4);color:var(--lime);font-size:14px}
section{margin:0 0 var(--s7)}
.sectionhead{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s4);margin:var(--s6) 0 var(--s5)}
.sectionhead h1{margin-bottom:0}
.pill{font-size:12px;font-weight:700;padding:5px 12px;background:var(--lime);border-radius:999px;display:inline-block;color:var(--ink);letter-spacing:.02em}
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s4);margin:var(--s5) 0}
.category{padding:var(--s5);display:flex;flex-direction:column;gap:var(--s2);position:relative;text-align:left;color:var(--ink)}
.category::before{content:"";position:absolute;left:var(--s5);right:var(--s5);top:0;height:4px;border-radius:0 0 4px 4px;background:var(--line-strong)}
.category.is-open::before{background:var(--teal)}
.category h3{margin:0}
.category p{color:var(--ink-soft);font-size:15px;margin:0}
.category a{font-weight:700;text-decoration:none;margin-top:auto;padding-top:var(--s2)}
.category a:hover{text-decoration:underline}
.category[aria-pressed=true]{outline:2px solid var(--teal);background:var(--teal-soft)}
.category b{font-size:20px;display:block}
.category span{display:block;font-size:13px;margin-top:var(--s2);font-weight:normal}

/* Offer */
.price{display:grid;grid-template-columns:1.25fr 1fr;gap:var(--s6);background:var(--ink);color:#fff;padding:var(--s6);margin:var(--s7) 0;border-radius:var(--r-xl);box-shadow:var(--shadow);position:relative;overflow:hidden}
.price::before{content:"";position:absolute;inset:auto -120px -160px auto;width:360px;height:360px;border-radius:50%;background:radial-gradient(circle,rgba(37,134,117,.55),rgba(37,134,117,0) 70%)}
.price>*{position:relative}
.price h2{color:#fff}
.price p{color:rgba(255,255,255,.82);font-size:15px}
.price .eyebrow{color:var(--lime)}
.price>div:last-child{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);border-radius:var(--r-lg);padding:var(--s5);align-self:start}
.price strong{font-family:var(--font-display);font-size:56px;line-height:1;letter-spacing:-.03em;display:block;margin-bottom:var(--s2)}
.price .button{width:100%;background:var(--lime);border-color:var(--lime);color:var(--ink);margin:var(--s2) 0 var(--s4)}
.price .button:hover{background:#fff;border-color:#fff}
.price>div:last-child p:last-child{margin:0;font-size:13px;color:rgba(255,255,255,.7)}

/* Footer */
footer{border-top:1px solid var(--line);padding-top:var(--s6);padding-bottom:var(--s6);font-size:13px;color:var(--muted);margin-top:var(--s7)}
footer details{border-bottom:0;padding:0}
footer summary{font-weight:600;color:var(--ink-2);min-height:40px;padding:8px 0}
footer summary::before{margin-top:1px}
footer summary::after{top:14px}
footer details[open]>summary::after{top:17px}
footer details p{max-width:70ch;padding-left:32px}
footer #revision{display:block;margin-top:var(--s4);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;color:#8AA0AC;overflow-wrap:anywhere}

/* Legacy static pages (not served by the Worker) */
.workspace{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}
#tabs{display:flex;overflow:auto;gap:var(--s2);padding:var(--s4);border-bottom:1px solid var(--line)}
#tabs button{background:transparent;border:0;color:var(--ink)}
#tabs button[aria-selected=true]{background:var(--ink);color:#fff}
#panel{padding:var(--s6);min-height:320px}
.empty{padding:var(--s5);background:var(--bg);border-radius:var(--r-md);border-left:4px solid var(--teal);margin-top:var(--s5)}
.formgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s5)}
.method{max-width:800px;padding-bottom:var(--s6)}

@media(prefers-reduced-motion:reduce){*{transition:none!important}}
@media(max-width:900px){
 .hero{grid-template-columns:1fr;gap:var(--s5);padding:var(--s5) 0 var(--s6)}
 .cards{grid-template-columns:1fr;gap:var(--s3)}
 .price{grid-template-columns:1fr;gap:var(--s5);padding:var(--s5)}
 .formgrid{grid-template-columns:1fr;gap:0}
}
@media(max-width:720px){
 header{height:60px}
 header img{width:128px}
 header nav{gap:var(--s1)}
 header nav .lang a{padding:5px 10px}
 header nav #account-link{padding:8px 12px;font-size:13px}
 h1{font-size:clamp(32px,9vw,40px)}
 .journey{padding:var(--s5)}
 .journey h2{font-size:22px}
 .journey li{padding:var(--s2) var(--s3);font-size:15px}
 .sectionhead{flex-direction:column;align-items:flex-start;margin-top:var(--s5)}
 .category{padding:var(--s4) var(--s5)}
 .price strong{font-size:48px}
 .price>div:last-child{padding:var(--s4)}
 select{width:100%}
 #panel{padding:var(--s4)}
 section{margin-bottom:var(--s6)}
}
