@font-face{font-family:"Plus Jakarta Sans Variable";font-style:normal;font-weight:200 800;font-display:swap;src:url("/wp-content/themes/glp1meals/assets/fonts/plus-jakarta-sans-variable.woff2") format("woff2")}
/* Token mirror of the theme (style.css / theme.json). Keep in sync. */
:root{--navy:#082f49;--navy-2:#0b4d68;--green:#3f8f4e;--lime:#b9df7d;--cream:#f7f4ec;--paper:#fff;--ink:#17332d;--muted:#61716c;--line:#dce7df;--shadow:0 18px 50px rgba(8,47,73,.09);font-family:"Plus Jakarta Sans Variable","Plus Jakarta Sans",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--cream)}*{box-sizing:border-box}body{margin:0}.skip-link{position:fixed;top:-60px;left:1rem;z-index:100;background:#fff;padding:.8rem}.skip-link:focus{top:1rem}.app-shell{min-height:100vh;display:grid;grid-template-columns:260px 1fr}.sidebar{position:fixed;inset:0 auto 0 0;width:260px;background:var(--navy);color:#fff;padding:1.7rem 1rem;display:flex;flex-direction:column;z-index:20}.app-brand{display:flex;align-items:center;gap:.55rem;color:#fff;text-decoration:none;font-weight:900;letter-spacing:-.05em;font-size:1.25rem;padding:.5rem 1rem 1.8rem}.app-brand span{color:var(--lime)}.app-brand-icon{width:30px;height:auto;border-radius:8px}.sidebar nav{display:grid;gap:.15rem;overflow:auto}.sidebar button,.sidebar a{font:inherit}.sidebar nav button{display:flex;align-items:center;gap:.8rem;border:0;background:transparent;color:#cee0dd;border-radius:12px;padding:.72rem .85rem;cursor:pointer;text-align:left}.sidebar nav button:hover,.sidebar nav button.active{background:rgba(255,255,255,.12);color:#fff}.nav-icon{width:1.5rem;text-align:center;font-size:1.15rem}.sidebar-foot{margin-top:auto;display:grid;gap:.7rem;padding:1rem}.sidebar-foot a{color:#fff}.sidebar-foot small{color:#a9c5c2}.app-main{grid-column:2;min-width:0}.topbar{height:72px;display:flex;align-items:center;gap:1rem;padding:0 clamp(1rem,4vw,3.2rem);background:rgba(246,243,234,.9);backdrop-filter:blur(14px);position:sticky;top:0;z-index:10;border-bottom:1px solid rgba(219,231,223,.7)}.search{margin:auto;border:1px solid var(--line);background:#fff;color:var(--muted);border-radius:999px;padding:.65rem 1.2rem;width:min(420px,50vw);text-align:left}.avatar{width:40px;height:40px;border-radius:50%;border:0;background:var(--green);color:#fff;font-weight:800}.menu-button{display:none;border:0;background:transparent;font-size:1.3rem}main{padding:clamp(1.25rem,4vw,3.5rem);max-width:1500px;margin:auto}.welcome{padding:clamp(1.8rem,4vw,4rem);border-radius:28px;background:radial-gradient(circle at 85% 10%,rgba(185,223,125,.42),transparent 32%),linear-gradient(130deg,#fff,#f2f7ed);border:1px solid var(--line);display:flex;align-items:flex-end;justify-content:space-between;gap:2rem;box-shadow:var(--shadow)}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(1.55rem,2.5vw,2.1rem);letter-spacing:-.02em;line-height:1.2;max-width:850px;margin-bottom:1rem}h2{font-size:1.3rem;letter-spacing:-.015em}.welcome p:not(.eyebrow),.page-head p:not(.eyebrow){font-size:1.05rem;line-height:1.6;color:var(--muted);max-width:720px}.eyebrow{text-transform:uppercase;letter-spacing:.13em;font-size:.74rem;font-weight:900;color:var(--green);margin-bottom:.65rem}.button{border:0;border-radius:999px;padding:.85rem 1.2rem;background:var(--navy);color:#fff;font-weight:800;cursor:pointer;white-space:nowrap}.button:hover{background:var(--navy-2)}.button:focus,.sidebar button:focus,.bottom-nav button:focus{outline:3px solid rgba(63,143,78,.4);outline-offset:2px}.button.secondary{background:#eaf2ed;color:var(--navy)}.button.light{background:#fff;color:var(--navy)}.text-button{border:0;background:transparent;color:var(--navy);font-weight:800;cursor:pointer}.rings{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin:1.2rem 0}.ring{--color:var(--green);background:conic-gradient(var(--color) calc(var(--value)*1%),#e5ece7 0);border-radius:20px;padding:2px;min-height:118px}.ring.lime{--color:#87ba4d}.ring.blue{--color:#5d9ebe}.ring>div{background:#fff;border-radius:18px;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.ring strong{font-size:1.55rem}.ring span{color:var(--muted);font-size:.82rem}.grid{display:grid;gap:1.2rem;margin:1.2rem 0}.grid.two{grid-template-columns:1.35fr .65fr}.grid.three{grid-template-columns:repeat(3,1fr)}.panel,.mini,.product-card,.coach{background:#fff;border:1px solid var(--line);border-radius:22px;padding:1.4rem;box-shadow:0 10px 30px rgba(8,47,73,.04)}.panel.accent{background:linear-gradient(145deg,#0a3c56,#0a5868);color:#fff;border:0;padding:2rem}.panel.accent .eyebrow{color:var(--lime)}.panel.accent p{color:#d8e9e4;line-height:1.55}.panel-head,.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem}.meal{display:grid;grid-template-columns:90px 1fr auto;align-items:center;gap:1rem;padding:1rem 0;border-top:1px solid var(--line)}.meal p{color:var(--muted);font-size:.85rem;margin:.25rem 0}.meal-tick{border:0;background:transparent;font-size:1.5rem;line-height:1;color:var(--green);cursor:pointer;padding:0 .2rem}.meal-time{color:var(--muted);font-size:.8rem}.mini-icon{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:12px;background:#edf5e8;color:var(--green)}.mini h3{margin:1rem 0 .45rem}.mini p{color:var(--muted);min-height:2.4rem}.page-head{margin-bottom:2rem}.page-head h1{font-size:clamp(1.45rem,2.2vw,1.9rem)}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:1.2rem}.product-card{display:flex;flex-direction:column;align-items:flex-start;min-height:260px}.product-card p{color:var(--muted);line-height:1.55}.product-card .button{margin-top:auto}.badge{display:inline-block;background:#edf5e8;color:#276536;padding:.35rem .65rem;border-radius:999px;font-size:.73rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;margin-bottom:1.2rem}.price{font-size:1.55rem;margin:1rem 0}.empty{text-align:center;padding:3rem 1rem}.empty p{color:var(--muted);max-width:450px;margin:0 auto 1.3rem;line-height:1.55}.empty-leaf{font-size:2.2rem;color:var(--green)}.skeletons{display:grid;gap:1rem}.skeleton{height:110px;border-radius:18px;background:linear-gradient(90deg,#edf0eb 25%,#f8faf7 50%,#edf0eb 75%);background-size:200% 100%;animation:shine 1.2s infinite}.metric-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:1rem}.metric{border:1px solid var(--line);background:#fff;border-radius:20px;padding:1.5rem;text-align:left;display:grid;gap:.45rem;cursor:pointer;color:var(--ink)}.metric>span{font-size:1.5rem;color:var(--green)}.metric small{color:var(--muted)}.toast{background:#edf7e8;padding:1rem;border-radius:12px;margin-bottom:1rem}.toast.error{background:#fdecea;color:#8c2f26;border-left:4px solid #b3372c}.calendar-strip{display:grid;grid-template-columns:repeat(7,1fr);gap:.6rem;margin-bottom:1.5rem}.day{border:1px solid var(--line);border-radius:16px;background:#fff;padding:.8rem;display:grid;gap:.4rem;color:var(--muted)}.day.active{background:var(--navy);color:#fff}.day strong{font-size:1.25rem}.timeline article{display:grid;grid-template-columns:120px 1fr;border-top:1px solid var(--line);padding:1rem}.timeline p{color:var(--muted)}.coach{max-width:900px;padding:0;overflow:hidden}.messages{min-height:420px;max-height:58vh;overflow:auto;padding:1.5rem;background:#fbfcf8}.message{max-width:75%;padding:.9rem 1rem;border-radius:18px;margin:.7rem 0}.message p{margin:0;line-height:1.55}.message.user{margin-left:auto;background:var(--navy);color:#fff;border-bottom-right-radius:4px}.message.assistant{background:#eaf2ed;border-bottom-left-radius:4px}.message small{display:block;margin-top:.5rem;opacity:.65}.composer{display:grid;grid-template-columns:1fr auto;gap:.8rem;padding:1rem;border-top:1px solid var(--line)}.composer textarea{resize:none;border:1px solid var(--line);border-radius:14px;padding:.8rem;font:inherit;min-height:54px}.fine{font-size:.75rem;color:var(--muted);line-height:1.4}.coach>.fine{padding:0 1rem 1rem}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.inline-form{display:flex;flex-wrap:wrap;gap:.7rem;align-items:center;background:#fff;border:1px solid var(--line);border-radius:18px;padding:1rem;margin:1.2rem 0}.inline-form input,.inline-form select{border:1px solid var(--line);border-radius:12px;padding:.65rem .8rem;font:inherit;min-width:0}.inline-form input[type=number]{width:110px}.inline-form label{font-weight:700}
.metric.active{outline:3px solid rgba(63,143,78,.4)}
.check-list{list-style:none;padding:0;margin:0}.check-list li{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.8rem 0;border-top:1px solid var(--line)}.check-list li:first-child{border-top:0}.check-list label{display:flex;gap:.7rem;align-items:center;cursor:pointer}.check-list .done{text-decoration:line-through;color:var(--muted)}
.notice-row{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;padding:1rem 0;border-top:1px solid var(--line)}.notice-row:first-of-type{border-top:0}.notice-row p{margin:.2rem 0;color:var(--muted)}.notice-row small{color:var(--muted)}.notice-row.read{opacity:.65}
.pref-row{display:flex;gap:.7rem;align-items:center;padding:.55rem 0;cursor:pointer}
.badge-row{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1.2rem}
.form-grid{display:grid;gap:1rem;max-width:560px}.form-field{display:grid;gap:.4rem;font-weight:700}.form-field input{border:1px solid var(--line);border-radius:12px;padding:.7rem .85rem;font:inherit}
.button-row{display:flex;gap:.7rem;flex-wrap:wrap}.button.danger{background:#8c2f2f}.button.danger:hover{background:#6d2222}
.timeline article{grid-template-columns:120px 1fr auto;align-items:center}.timeline article .text-button{justify-self:end}
.search-overlay{position:fixed;inset:0;background:rgba(8,47,73,.4);backdrop-filter:blur(4px);z-index:60;display:grid;place-items:start center;padding-top:12vh}.search-box{background:#fff;border-radius:20px;width:min(560px,92vw);box-shadow:var(--shadow);overflow:hidden}.search-box input{width:100%;border:0;border-bottom:1px solid var(--line);padding:1.1rem 1.3rem;font:inherit;font-size:1.05rem;outline:none}.search-results{max-height:50vh;overflow:auto;padding:.8rem}.search-results .eyebrow{margin:.6rem .5rem .2rem}.search-results button,.search-results a{display:block;width:100%;text-align:left;border:0;background:transparent;padding:.6rem .5rem;border-radius:10px;font:inherit;color:var(--ink);text-decoration:none;cursor:pointer}.search-results button:hover,.search-results a:hover{background:#eef4ef}.bottom-nav{display:none}.app-loading{min-height:100vh;display:grid;place-content:center;text-align:center}.app-loading span{width:48px;height:48px;border:4px solid #dce8df;border-top-color:var(--green);border-radius:50%;animation:spin .8s linear infinite;margin:auto}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shine{to{background-position:-200% 0}}@media(max-width:1000px){.app-shell{grid-template-columns:80px 1fr}.sidebar{width:80px}.sidebar nav button span:last-child,.sidebar-foot,.app-brand span{display:none}.app-brand{font-size:.9rem;padding:.5rem .2rem 1.5rem}.sidebar nav button{justify-content:center}.app-main{grid-column:2}.grid.two{grid-template-columns:1fr}}@media(max-width:700px){.app-shell{display:block}.sidebar{transform:translateX(-100%);width:min(320px,88vw);transition:transform .25s}.sidebar.open{transform:translateX(0)}.sidebar nav button span:last-child,.sidebar-foot,.app-brand span{display:block}.sidebar nav button{justify-content:flex-start}.app-main{padding-bottom:76px}.topbar{height:60px}.menu-button{display:block}.search{width:auto;flex:1}.welcome{display:block}.welcome .button{margin-top:1rem}.rings{grid-template-columns:repeat(3,1fr)}.ring{min-height:96px}.ring strong{font-size:1.1rem}.grid.three{grid-template-columns:1fr}.page-head{display:block}.page-head>.button{margin-bottom:1rem}.calendar-strip{overflow:auto;grid-template-columns:repeat(7,minmax(62px,1fr))}.bottom-nav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid var(--line);z-index:15;padding:.4rem env(safe-area-inset-right) calc(.35rem + env(safe-area-inset-bottom)) env(safe-area-inset-left)}.bottom-nav button{border:0;background:transparent;display:grid;justify-items:center;gap:.1rem;color:var(--muted);font:inherit;font-size:.68rem}.bottom-nav button.active{color:var(--green);font-weight:800}}@media(max-width:440px){main{padding:1rem}.rings{gap:.45rem}.ring span{font-size:.68rem}.meal{grid-template-columns:1fr auto}.meal-time{grid-column:1/-1}.message{max-width:90%}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* Warm editorial dashboard layer. */
:root{--display:"Iowan Old Style","Palatino Linotype","Book Antiqua",Georgia,serif;--warm:#fffdf8;--glass:rgba(255,255,255,.86);--shadow-soft:0 28px 80px rgba(8,47,73,.08)}
body{background:radial-gradient(circle at 88% 5%,rgba(185,223,125,.2),transparent 24%),radial-gradient(circle at 48% 100%,rgba(93,158,190,.12),transparent 28%),var(--warm);background-attachment:fixed}.sidebar{background:radial-gradient(circle at 30% 5%,rgba(185,223,125,.12),transparent 22%),linear-gradient(180deg,#082f49,#061f30);border-right:1px solid rgba(255,255,255,.08)}.sidebar nav button{min-height:45px;border-radius:15px;transition:background .18s ease,transform .18s ease}.sidebar nav button:hover{transform:translateX(2px)}.topbar{height:78px;background:rgba(255,253,248,.82);border-bottom-color:rgba(8,47,73,.08)}.search{background:rgba(255,255,255,.8);min-height:44px}.avatar{box-shadow:0 10px 22px rgba(63,143,78,.2)}
main{padding-top:clamp(1.5rem,4vw,4rem)}h1,h2{font-family:var(--display);font-weight:600;letter-spacing:-.035em;line-height:1.08}h1{font-size:clamp(2.25rem,4.5vw,4.2rem)}h2{font-size:clamp(1.45rem,2.5vw,2.25rem)}.welcome{position:relative;overflow:hidden;padding:clamp(2.4rem,5vw,5rem);border-radius:36px;background:radial-gradient(circle at 88% 14%,rgba(185,223,125,.5),transparent 26%),radial-gradient(circle at 70% 90%,rgba(93,158,190,.14),transparent 30%),rgba(255,255,255,.88);box-shadow:var(--shadow-soft)}.welcome:after{content:"";position:absolute;width:240px;height:240px;border:1px solid rgba(8,47,73,.08);border-radius:44% 56% 60% 40%;right:-80px;bottom:-130px;pointer-events:none}.panel,.mini,.product-card,.coach{background:var(--glass);backdrop-filter:blur(14px);border-radius:26px;box-shadow:0 14px 45px rgba(8,47,73,.045)}.panel.accent{background:radial-gradient(circle at 90% 0,rgba(185,223,125,.18),transparent 26%),linear-gradient(145deg,#0a3c56,#073244)}.button{min-height:46px;box-shadow:0 10px 24px rgba(8,47,73,.12);transition:transform .18s ease,background .18s ease}.button:hover{transform:translateY(-1px)}.metric{border-radius:24px}.row-icon,.mini-icon{border-radius:15px}.page-head{margin-bottom:2.5rem}.page-head p:not(.eyebrow){max-width:700px}.notice-actions{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap}.notice-actions a{text-decoration:none}.cards{gap:1.4rem}.product-card{min-height:280px}.messages{background:linear-gradient(145deg,#fffdf8,#f4f7f0)}
@media(max-width:700px){.topbar{height:66px}h1{font-size:clamp(2.25rem,11vw,3.5rem)}.welcome{border-radius:28px}.panel,.mini,.product-card,.coach{border-radius:22px}}

/* Shared SVG background objects: decorative only, local, and pointer inert. */
body{position:relative;isolation:isolate}
body::before{
  content:"";position:fixed;z-index:0;inset:0;pointer-events:none;background:var(--green);opacity:.022;
  -webkit-mask-image:url("/wp-content/themes/glp1meals/assets/svg/food-apple.svg"),url("/wp-content/themes/glp1meals/assets/svg/food-avocado.svg"),url("/wp-content/themes/glp1meals/assets/svg/glp1-tablets.svg"),url("/wp-content/themes/glp1meals/assets/svg/glp1-syringe.svg");mask-image:url("/wp-content/themes/glp1meals/assets/svg/food-apple.svg"),url("/wp-content/themes/glp1meals/assets/svg/food-avocado.svg"),url("/wp-content/themes/glp1meals/assets/svg/glp1-tablets.svg"),url("/wp-content/themes/glp1meals/assets/svg/glp1-syringe.svg");
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:105px,125px,90px,115px;mask-size:105px,125px,90px,115px;-webkit-mask-position:96% 12%,80% 92%,30% 84%,58% 15%;mask-position:96% 12%,80% 92%,30% 84%,58% 15%;
}
#glp1m-app{position:relative;z-index:1}
.sidebar{overflow:hidden;isolation:isolate}
.sidebar>*{position:relative;z-index:1}
.sidebar::before{
  content:"";position:absolute;z-index:0;inset:0;pointer-events:none;background:#fff;opacity:.06;
  -webkit-mask-image:url("/wp-content/themes/glp1meals/assets/svg/food-bowl.svg"),url("/wp-content/themes/glp1meals/assets/svg/glp1-capsule.svg"),url("/wp-content/themes/glp1meals/assets/svg/food-avocado.svg");mask-image:url("/wp-content/themes/glp1meals/assets/svg/food-bowl.svg"),url("/wp-content/themes/glp1meals/assets/svg/glp1-capsule.svg"),url("/wp-content/themes/glp1meals/assets/svg/food-avocado.svg");
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:125px,72px,90px;mask-size:125px,72px,90px;-webkit-mask-position:145% 18%,-20% 64%,130% 91%;mask-position:145% 18%,-20% 64%,130% 91%;
}
.welcome{isolation:isolate}
.welcome>*{position:relative;z-index:1}
.welcome::before{
  content:"";position:absolute;z-index:0;inset:0;pointer-events:none;background:var(--navy);opacity:.045;
  -webkit-mask-image:url("/wp-content/themes/glp1meals/assets/svg/food-bowl.svg"),url("/wp-content/themes/glp1meals/assets/svg/glp1-tablets.svg"),url("/wp-content/themes/glp1meals/assets/svg/glp1-syringe.svg");mask-image:url("/wp-content/themes/glp1meals/assets/svg/food-bowl.svg"),url("/wp-content/themes/glp1meals/assets/svg/glp1-tablets.svg"),url("/wp-content/themes/glp1meals/assets/svg/glp1-syringe.svg");
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:145px,82px,105px;mask-size:145px,82px,105px;-webkit-mask-position:91% 15%,71% 88%,96% 78%;mask-position:91% 15%,71% 88%,96% 78%;
}
.panel.accent{position:relative;overflow:hidden;isolation:isolate}.panel.accent>*{position:relative;z-index:1}.panel.accent::before{content:"";position:absolute;z-index:0;inset:0;pointer-events:none;background:#fff;opacity:.055;-webkit-mask:url("/wp-content/themes/glp1meals/assets/svg/food-avocado.svg") no-repeat 94% 35%/120px;mask:url("/wp-content/themes/glp1meals/assets/svg/food-avocado.svg") no-repeat 94% 35%/120px}
@media(prefers-reduced-motion:no-preference){body::before,.welcome::before{animation:app-object-drift 18s ease-in-out infinite alternate}.sidebar::before,.panel.accent::before{animation:app-object-drift 16s ease-in-out -6s infinite alternate-reverse}@keyframes app-object-drift{50%{transform:translate3d(0,-7px,0) rotate(.6deg)}}}
@media(max-width:700px){body::before{opacity:.016}.welcome::before{-webkit-mask-size:105px,64px,82px;mask-size:105px,64px,82px;-webkit-mask-position:calc(100% + 20px) 10%,78% 94%,calc(100% + 20px) 72%;mask-position:calc(100% + 20px) 10%,78% 94%,calc(100% + 20px) 72%}}
@media(prefers-reduced-motion:reduce){body::before,.sidebar::before,.welcome::before,.panel.accent::before{animation:none!important;transform:none!important}}

/* Personalized onboarding and provider-authoritative membership gate. */
.ob-shell{min-height:100vh;background:radial-gradient(circle at 90% 5%,rgba(185,223,125,.28),transparent 30%),radial-gradient(circle at 5% 88%,rgba(93,158,190,.15),transparent 26%),#fffdf8;color:var(--ink);display:flex;flex-direction:column}
.ob-top{height:76px;padding:0 clamp(1rem,4vw,3rem);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(8,47,73,.08);background:rgba(255,253,248,.86);backdrop-filter:blur(16px);position:sticky;top:0;z-index:5}.ob-top a{color:var(--navy)}
.ob-brand{font-size:1.2rem;font-weight:900;letter-spacing:-.055em;text-decoration:none}.ob-brand span{color:var(--green)}.ob-count{font-size:.82rem;color:var(--muted);font-variant-numeric:tabular-nums}
.ob-progress{height:5px;background:#e4eee8;position:sticky;top:76px;z-index:5}.ob-progress span{height:100%;display:block;background:linear-gradient(90deg,var(--navy),var(--green),#8bbb54);border-radius:0 99px 99px 0;transition:width .35s ease}
.ob-main{width:min(1180px,100%);margin:auto;padding:clamp(1.2rem,4vw,3.5rem);position:relative;flex:1;display:grid;align-items:center}.ob-main.scope{width:min(760px,100%)}
.ob-back{position:absolute;left:clamp(1rem,4vw,3.5rem);top:clamp(1rem,3vw,2.5rem);border:1px solid var(--line);width:48px;height:48px;border-radius:50%;background:#fff;color:var(--navy);font-size:1.35rem;cursor:pointer;z-index:2}.ob-back:disabled{opacity:.3}
.ob-card{width:min(720px,100%);margin:auto;background:rgba(255,255,255,.91);border:1px solid rgba(8,47,73,.09);border-radius:36px;box-shadow:0 30px 90px rgba(8,47,73,.1);overflow:hidden}.ob-card.with-visual{width:100%;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(320px,.95fr)}.ob-content{padding:clamp(2rem,5vw,4.8rem);display:flex;flex-direction:column;justify-content:center;min-width:0}.ob-content h1{font-size:clamp(2.2rem,5.2vw,4.8rem);max-width:820px;margin-bottom:1rem}.ob-copy{color:var(--muted);font-size:1.06rem;line-height:1.7;max-width:640px}.ob-fine,.ob-footer{font-size:.75rem;color:var(--muted);line-height:1.5}.ob-footer{text-align:center;padding:1rem 1.5rem 1.4rem}
.ob-visual{min-height:500px;background:#edf5e8;overflow:hidden}.ob-visual img{width:100%;height:100%;display:block;object-fit:cover}.paywall-hero .ob-visual{min-height:360px;border-radius:28px}
.ob-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin:1.2rem 0 1.6rem}.ob-options.compact{grid-template-columns:repeat(3,minmax(0,1fr))}.ob-option{border:1px solid var(--line);background:#f8faf7;color:var(--ink);min-height:58px;padding:.8rem 1rem;border-radius:16px;font:inherit;text-align:left;display:flex;align-items:center;gap:.7rem;cursor:pointer;transition:border-color .15s ease,background .15s ease,transform .15s ease}.ob-option:hover{transform:translateY(-1px);border-color:#91ad9b}.ob-option.selected{background:#e5f2d9;border-color:var(--green);box-shadow:inset 0 0 0 1px var(--green)}.ob-check{width:25px;height:25px;flex:0 0 25px;display:grid;place-items:center;border:1.5px solid #87958f;border-radius:8px;color:#fff}.ob-option.selected .ob-check{background:var(--navy);border-color:var(--navy)}
.ob-continue{border:0;background:var(--navy);color:#fff;border-radius:16px;min-height:54px;padding:.9rem 1.25rem;font:inherit;font-weight:850;cursor:pointer;text-align:center;text-decoration:none;display:inline-grid;place-items:center;box-shadow:0 14px 30px rgba(8,47,73,.18)}.ob-continue:hover{background:var(--navy-2)}.ob-continue:disabled{opacity:.55;cursor:wait}.ob-error{background:#fff0ed;color:#7d2f29;border:1px solid #efc0bb;padding:.8rem 1rem;border-radius:12px;font-size:.86rem}
.ob-segment{display:inline-grid;grid-template-columns:1fr 1fr;background:#eef1ee;padding:4px;border-radius:14px;margin:1rem 0}.ob-segment button{border:0;background:transparent;padding:.65rem 1rem;border-radius:11px;font:inherit;font-weight:750}.ob-segment button.active{background:var(--navy);color:#fff}.ob-measure label,.ob-inline-number{display:grid;grid-template-columns:1fr auto;gap:.55rem;align-items:end;font-weight:800;margin:1rem 0}.ob-measure input,.ob-inline-number input{grid-column:1;border:0;border-bottom:2px solid var(--navy);font:inherit;font-size:2rem;background:transparent;padding:.5rem 0;min-width:0;outline:0}.ob-measure label span,.ob-inline-number span{grid-column:2;color:var(--muted);padding-bottom:.7rem}.ob-label{font-weight:850;margin:1rem 0 0}.ob-stack{display:grid}.ob-consent{margin:1rem 0}.ob-actions{display:grid;gap:1rem;margin-top:1.5rem}.ob-actions a:not(.ob-continue){color:var(--navy);font-weight:700}
.ob-score-card,.ob-preview{background:#f2f5f2;border:1px solid var(--line);border-radius:22px;padding:1.5rem;margin:1.2rem 0}.ob-score-card{display:grid;gap:.4rem}.ob-score-card strong{font-family:var(--display);font-size:3rem;color:var(--navy)}.ob-score-card p,.ob-preview p{color:var(--muted);margin-bottom:0;line-height:1.6}.ob-preview ul{padding-left:1.2rem;line-height:1.8}.ob-score-grid{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;margin:1.2rem 0}.ob-score-grid article{border:1px solid var(--line);background:#f7f9f6;border-radius:18px;padding:1rem;display:grid;gap:.5rem}.ob-score-grid strong{font-size:1.35rem}.ob-meter{height:8px;border-radius:99px;background:#dfe9e2;overflow:hidden}.ob-meter span{display:block;height:100%;background:linear-gradient(90deg,var(--green),#8bbb54)}.ob-steps{list-style:none;padding:0;margin:1.3rem 0;display:grid;gap:1rem}.ob-steps li{display:flex;gap:.8rem;align-items:center;font-weight:750}.ob-steps span{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#e4f2d9;color:#225d31}
.paywall-main{width:min(1180px,100%);margin:auto;padding:clamp(1.2rem,4vw,3.5rem)}.paywall-hero{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(1.5rem,5vw,4rem);align-items:center;margin-bottom:2rem}.paywall-hero h1{font-size:clamp(2.7rem,6vw,5.6rem)}.paywall-hero p:not(.eyebrow){color:var(--muted);font-size:1.08rem;line-height:1.7}.paywall-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}.paywall-plan{background:#fff;border:1px solid var(--line);border-radius:24px;padding:1.4rem;display:flex;flex-direction:column;min-height:320px}.paywall-plan.featured{border:2px solid var(--green);box-shadow:0 20px 55px rgba(63,143,78,.14)}.paywall-period{text-transform:uppercase;letter-spacing:.12em;color:var(--green);font-size:.72rem;font-weight:900}.paywall-plan h2{font-family:var(--display);font-size:1.65rem;margin:.8rem 0}.paywall-plan p{color:var(--muted);font-size:.85rem;line-height:1.55}.paywall-plan .ob-continue{margin-top:auto}.paywall-price{font-size:1.25rem;margin-bottom:.8rem}.paywall-links{display:flex;gap:1.2rem;justify-content:center;align-items:center;flex-wrap:wrap;margin:1.7rem 0}.paywall-links a{color:var(--navy);font-weight:700}
@media(max-width:900px){.ob-card.with-visual{grid-template-columns:1fr}.ob-visual{min-height:280px;max-height:360px;grid-row:1}.paywall-hero{grid-template-columns:1fr}.paywall-grid{grid-template-columns:repeat(2,1fr)}.ob-main{padding-top:4.5rem}}
@media(max-width:600px){.ob-top{height:64px}.ob-progress{top:64px}.ob-main{padding:4.2rem 1rem 1rem}.ob-card{border-radius:25px}.ob-content{padding:1.5rem}.ob-content h1{font-size:clamp(2rem,10vw,3rem)}.ob-options,.ob-options.compact{grid-template-columns:1fr}.ob-option{min-height:56px}.ob-visual{min-height:240px}.ob-score-grid,.paywall-grid{grid-template-columns:1fr}.paywall-hero .ob-visual{min-height:260px}.paywall-hero h1{font-size:clamp(2.5rem,12vw,3.8rem)}.paywall-main{padding:1rem}.paywall-plan{min-height:270px}.ob-footer{padding-bottom:calc(1.2rem + env(safe-area-inset-bottom))}}
@media(prefers-reduced-motion:reduce){.ob-progress span,.ob-option{transition:none}.ob-option:hover{transform:none}}

/* Keep app navigation compact and vertical-only, with an unobtrusive branded scrollbar. */
.sidebar nav{
  width:100%;min-width:0;min-height:0;padding-right:.25rem;overflow-x:hidden;overflow-y:auto;
  overscroll-behavior:contain;scrollbar-gutter:stable;scrollbar-width:thin;
  scrollbar-color:rgba(185,223,125,.72) rgba(255,255,255,.07);
}
.sidebar nav button{
  width:100%;min-width:0;gap:.65rem;padding:.68rem .7rem;font-size:.92rem;line-height:1.2;
}
.sidebar nav button .nav-icon{flex:0 0 1.35rem;width:1.35rem;font-size:1.05rem}
.sidebar nav button span:last-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sidebar nav::-webkit-scrollbar{width:5px;height:0}
.sidebar nav::-webkit-scrollbar-track{background:rgba(255,255,255,.07);border-radius:999px}
.sidebar nav::-webkit-scrollbar-thumb{background:rgba(185,223,125,.68);border-radius:999px}
.sidebar nav::-webkit-scrollbar-thumb:hover{background:rgba(185,223,125,.92)}

/* ---- Reveal screens and coded graphics (svg.js). Tokens come from :root above. ---- */
.ob-gauge svg,.ob-cone svg{width:100%;height:auto;display:block;overflow:visible}
.ob-gauge-band{font-size:9px;fill:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-weight:700}
.ob-gauge-band[data-active=true]{fill:var(--navy)}
.ob-gauge-value{font-size:13px;font-weight:800;fill:var(--paper)}
.ob-gauge-pointer{animation:ob-slide .55s cubic-bezier(.22,1,.36,1)}
@keyframes ob-slide{from{opacity:0;transform:translateY(-6px)}to{opacity:1}}
.ob-axis{font-size:9px;fill:var(--muted);font-weight:700}
.ob-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.7rem;margin:.2rem 0 1rem}
.ob-tile{background:#f4f7f3;border:1px solid var(--line);border-radius:16px;padding:1rem;display:grid;gap:.1rem;text-align:center}
.ob-tile.emphasis{border-color:var(--green);background:#eaf4e5}
.ob-tile strong{font-size:1.75rem;letter-spacing:-.02em;color:var(--navy);line-height:1.1;font-variant-numeric:tabular-nums}
.ob-tile.emphasis strong{color:var(--green)}
.ob-tile-unit{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
.ob-tile-caption{font-size:.78rem;color:var(--muted);line-height:1.35;margin-top:.35rem}
.ob-ring{width:130px;height:130px}
.ob-ring-value{font-size:22px;font-weight:800;fill:var(--navy)}
.ob-generating{display:flex;gap:1.4rem;align-items:center;flex-wrap:wrap}
.ob-silhouette{width:100%;max-width:120px;height:auto;color:var(--muted)}
.ob-silhouette.goal{color:var(--green)}
.ob-shapes{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:.6rem}
.ob-shape{border:1px solid var(--line);background:#f7f9f6;border-radius:16px;padding:.7rem .4rem;display:grid;justify-items:center;gap:.35rem;cursor:pointer;font:inherit;font-size:.78rem;font-weight:700;color:var(--ink)}
.ob-shape.selected{border-color:var(--green);background:#e6f2da}
.ob-compare{border:1px solid var(--line);border-radius:18px;overflow:hidden}
.ob-compare-head,.ob-compare-row{display:grid;grid-template-columns:1fr 1fr}
.ob-compare-head span{padding:.7rem .9rem;font-size:.7rem;font-weight:900;text-transform:uppercase;letter-spacing:.1em}
.ob-compare-head .now{background:#fbeeec;color:#8c3a31}
.ob-compare-head .plan{background:#e8f3e3;color:#276536}
.ob-compare-row span{padding:.8rem .9rem;font-size:.88rem;line-height:1.45;border-top:1px solid var(--line)}
.ob-compare-row .now{background:#fdf7f6;color:var(--ink)}
.ob-compare-row .plan{background:#f5faf2;color:var(--ink);font-weight:600}
.ob-quotes{display:grid;gap:.8rem}.ob-proof{display:grid;gap:.7rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--line)}
.ob-quote{background:#f7f9f6;border:1px solid var(--line);border-radius:16px;padding:1rem 1.1rem}
.ob-quote p{margin:0 0 .7rem;line-height:1.55;font-size:.92rem}
.ob-quote footer{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;font-size:.8rem}
.ob-quote-name{font-weight:800}
.ob-quote-result{background:#e8f3e3;color:#276536;border-radius:999px;padding:.15rem .55rem;font-weight:800;font-size:.72rem}
.ob-quote-verified{color:var(--green);font-weight:800;font-size:.72rem}
.ob-quote-verified::before{content:"✓ "}
.ob-option-icon{width:1.05rem;height:1.05rem;color:var(--green);flex:none}
.ob-method{margin-top:1rem;border-top:1px solid var(--line);padding-top:.7rem}
.ob-method summary{cursor:pointer;font-size:.8rem;font-weight:800;color:var(--muted);list-style:none}
.ob-method summary::-webkit-details-marker{display:none}
.ob-method summary::after{content:" ›"}
.ob-method p{font-size:.8rem;color:var(--muted);line-height:1.5;margin:.6rem 0 0}
.ob-verdict{border-radius:14px;padding:.8rem 1rem;font-weight:700;margin:.9rem 0 0;font-size:.92rem}
.ob-verdict.caution{background:#fdf3e6;color:#7d5518}
.ob-verdict.good{background:#e8f3e3;color:#276536}
.ob-verdict.alert{background:#fbeeec;color:#8c3a31}
.ob-compare-panel{display:grid;grid-template-columns:1fr auto 1fr;gap:.8rem;align-items:center;background:#f7f9f6;border:1px solid var(--line);border-radius:18px;padding:1.1rem}
.ob-compare-panel figure{margin:0;display:grid;justify-items:center;gap:.5rem}
.ob-compare-panel figcaption{font-size:.72rem;font-weight:900;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
.ob-compare-panel .goal figcaption{color:var(--green)}
.ob-compare-panel .arrow{color:var(--green);font-size:1.4rem}
.ob-stat-row{display:flex;gap:.5rem;justify-content:center;font-size:.78rem;color:var(--muted);font-variant-numeric:tabular-nums}
@media(max-width:560px){.ob-compare-row span{font-size:.82rem;padding:.7rem}.ob-tile strong{font-size:1.45rem}}
.paywall-plan.popular{border-color:var(--green);border-width:2px;position:relative}
.paywall-badge{position:absolute;top:-.7rem;left:1.2rem;background:var(--green);color:#fff;font-size:.66rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase;padding:.25rem .6rem;border-radius:999px}
.paywall-week{display:block;color:var(--muted);font-weight:700;font-size:.86rem;margin-top:-.4rem}
.paywall-cancel{text-align:center;color:var(--muted);font-size:.88rem;margin:1rem 0 .4rem}
.paywall-trust{display:flex;gap:.45rem;flex-wrap:wrap;justify-content:center;margin-bottom:1.2rem}
.paywall-trust span{background:#eef4ef;color:var(--navy);font-size:.72rem;font-weight:800;padding:.3rem .65rem;border-radius:999px}
.ob-focus{display:grid;justify-items:center;gap:1rem}
.ob-tab-count{display:inline-block;margin-left:.4rem;background:var(--green);color:#fff;border-radius:999px;font-size:.66rem;padding:0 .35rem}
.ob-preview-list{list-style:none;padding:0;margin:0 0 1rem}
.ob-preview-list li{border-top:1px solid var(--line);padding:.8rem 0;display:grid;gap:.15rem}
.ob-preview-list strong{font-size:1rem}
.ob-preview-list span{color:var(--muted);font-size:.82rem}
.ob-steps li.done{color:var(--green)}
.ob-steps li.active{font-weight:800}
.ob-options.two-up{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}
.ob-options.two-up .ob-option{font-size:.88rem;padding:.7rem .8rem;min-height:0}
@media(max-width:520px){.ob-options.two-up{grid-template-columns:1fr}}
.ob-trust{list-style:none;padding:0;margin:0 0 1rem;display:grid;gap:.45rem}
.ob-trust li{padding-left:1.4rem;position:relative;color:var(--muted);font-size:.9rem}
.ob-trust li::before{content:"✓";position:absolute;left:0;color:var(--green);font-weight:900}
/* Compact price ladder: one row per plan so the eye compares a single number. */
.plan-ladder{display:grid;gap:.6rem;margin:1.4rem 0}
.plan-row{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:.9rem;width:100%;text-align:left;background:#fff;border:1.5px solid var(--line);border-radius:16px;padding:.9rem 1.1rem;cursor:pointer;font:inherit;color:var(--ink);min-height:76px}
.plan-row:hover{border-color:var(--line-strong,#c3d4c7)}
.plan-row.selected{border-color:var(--green);background:#f4faf1;box-shadow:0 0 0 3px rgba(63,143,78,.12)}
.plan-radio{color:var(--green);font-size:1.15rem}
.plan-name{font-weight:800;display:flex;flex-direction:column;gap:.2rem}
.plan-flag{font-size:.62rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:#276536;background:#e8f3e3;border-radius:999px;padding:.12rem .45rem;width:fit-content}
.coach .message.notice{background:#fbf5e6;border:1px solid #e6d5a8;color:#6b5220}
.plan-flag.best{color:#7a4a12;background:#fbf0d9}
.plan-rate{font-size:1.3rem;font-weight:900;color:var(--navy);font-variant-numeric:tabular-nums;text-align:right;line-height:1.1}
.plan-rate small{display:block;font-size:.66rem;font-weight:700;color:var(--muted);letter-spacing:.04em}
.plan-total{text-align:right;font-size:.8rem;color:var(--muted);font-variant-numeric:tabular-nums;min-width:5.5rem}
.plan-total em{display:block;font-style:normal;font-weight:900;color:#276536;font-size:.72rem;margin-top:.15rem}
.paywall-cta{width:100%;margin-top:.4rem}
@media(max-width:520px){.plan-row{grid-template-columns:auto 1fr auto;padding:.8rem}.plan-total{grid-column:2/-1;text-align:left;font-size:.75rem}}
.ob-assessment{list-style:none;padding:0;margin:0 0 1rem;display:grid;gap:.6rem}
.ob-assessment li{display:grid;grid-template-columns:auto 1fr;gap:.6rem;align-items:start;font-size:1rem;line-height:1.5;animation:ob-rise .34s cubic-bezier(.22,1,.36,1)}
.ob-assessment li span{color:var(--green);font-weight:900}
@keyframes ob-rise{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.ob-assessment li{animation:none}}
.ob-body-art{width:100%;max-width:120px;height:auto;display:block;object-fit:contain}
.ob-shape .ob-body-art{max-width:76px}
.ob-compare-panel .ob-body-art{max-width:118px}

/* ---- Onboarding web layout. Later than the base rules on purpose: these correct a scale that
   was tuned for a full-bleed hero and left question screens with one word per line. ---- */
.ob-content h1{font-size:clamp(1.7rem,2.4vw,2.5rem);line-height:1.12;letter-spacing:-.02em;max-width:20ch;text-wrap:balance;margin-bottom:.85rem}
.ob-card.with-visual .ob-content h1{max-width:16ch}
.ob-content{padding:clamp(1.6rem,3vw,2.9rem);gap:.2rem}
.ob-card{width:min(880px,100%)}
.ob-card.with-visual{grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr)}
.ob-copy,.ob-content>p{max-width:56ch;font-size:1rem;line-height:1.55}
.ob-main{align-items:start;padding-top:2.2rem}
.ob-visual{min-height:0}
.ob-card.with-visual .ob-visual{min-height:100%}
/* Reveals earn a wider, calmer measure than a question does. */
.ob-card.reveal{width:min(820px,100%)}
.ob-card.reveal .ob-content h1{max-width:24ch;font-size:clamp(1.6rem,2.1vw,2.15rem)}
.ob-gauge,.ob-cone{max-width:520px;margin-inline:auto;width:100%}
.ob-compare{max-width:640px}
.ob-tiles{max-width:640px}
.ob-assessment{max-width:52ch}
.ob-quotes{max-width:620px}
@media(min-width:860px){
  .ob-tiles{grid-template-columns:repeat(3,1fr)}
  .ob-generating{gap:2.4rem}
}
@media(max-width:600px){
  .ob-content h1{font-size:clamp(1.5rem,6.4vw,2rem);max-width:none}
  .ob-card.with-visual .ob-content h1{max-width:none}
  .ob-main{padding-top:1.4rem}
}
/* Analysis stage shown before a reveal. */
.ob-analysis{display:grid;gap:.9rem;padding:.4rem 0 .2rem;min-height:200px;align-content:start}
.ob-analysis-pulse{display:flex;gap:.4rem}
.ob-analysis-pulse span{width:9px;height:9px;border-radius:50%;background:var(--green);opacity:.35;animation:ob-pulse 1.1s ease-in-out infinite}
.ob-analysis-pulse span:nth-child(2){animation-delay:.16s}
.ob-analysis-pulse span:nth-child(3){animation-delay:.32s}
@keyframes ob-pulse{0%,100%{opacity:.28;transform:scale(.85)}50%{opacity:1;transform:scale(1)}}
.ob-analysis-lead{font-weight:800;color:var(--navy);margin:0}
.ob-analysis-list{list-style:none;padding:0;margin:0;display:grid;gap:.5rem}
.ob-analysis-list li{display:grid;grid-template-columns:auto 1fr;gap:.55rem;color:var(--muted);font-size:.93rem;animation:ob-rise .32s cubic-bezier(.22,1,.36,1)}
.ob-analysis-list li span{color:var(--green);font-weight:900}
@media(prefers-reduced-motion:reduce){.ob-analysis-pulse span{animation:none;opacity:.7}.ob-analysis-list li{animation:none}}
/* Reveal headings carry a name, so they need a little more room than a question does. */
.ob-card.reveal .ob-content h1{max-width:30ch}
.ob-card:not(.with-visual) .ob-content h1{max-width:26ch}

/* ============================================================================
 * Paywall v2 — mid-length layout that keeps our voice, cuts the visual bulk.
 *
 * Compact header + stats strip + tight plan cards + one honest urgency line +
 * highlights + FAQ + footer. No countdown timer, no reset-on-refresh urgency,
 * nothing that would fail an app-store review or read as a dark pattern to a
 * member who just finished 40 screens of careful onboarding.
 * ============================================================================
 */
.paywall.v2 .pw-main{width:min(720px,100%);margin:auto;padding:clamp(1.5rem,4vw,2.5rem) clamp(1rem,4vw,1.75rem) 3rem;display:flex;flex-direction:column;gap:1.5rem}

/* Header: personalised, tight. The serif title carries the voice, everything
   else is small and utilitarian so the eye lands on the plans. */
.pw-header{display:flex;flex-direction:column;gap:.6rem}
.pw-eyebrow{margin:0;color:var(--green);font-size:.68rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase}
.pw-title{margin:0;font-family:Georgia,"Iowan Old Style","Times New Roman",serif;font-size:clamp(1.7rem,4.4vw,2.35rem);line-height:1.1;color:var(--navy);text-wrap:balance;letter-spacing:-.01em}
.pw-stats{display:flex;flex-wrap:wrap;gap:.6rem;margin:.4rem 0 0}
.pw-stats>div{background:#f4faf1;border:1px solid #d7e8d6;border-radius:12px;padding:.55rem .85rem;flex:1 1 8rem}
.pw-stats dt{margin:0;color:var(--muted);font-size:.66rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase}
.pw-stats dd{margin:.15rem 0 0;color:var(--navy);font-weight:800;font-size:1.15rem;font-variant-numeric:tabular-nums}
.pw-stats dd span{font-weight:600;color:var(--muted);font-size:.85rem}

/* Honest urgency nudge — a single line that says "you can activate now",
   not a resetting countdown. */
.pw-nudge{display:flex;align-items:center;gap:.55rem;background:#fbf4dc;border:1px solid #e8d59a;border-radius:12px;padding:.7rem .9rem;font-size:.9rem;color:#5a4a12;font-weight:600}
.pw-nudge-dot{width:.5rem;height:.5rem;border-radius:50%;background:#c99a2c;flex:none;box-shadow:0 0 0 4px rgba(201,154,44,.18);animation:pw-pulse 2.4s ease-in-out infinite}
@keyframes pw-pulse{0%,100%{box-shadow:0 0 0 4px rgba(201,154,44,.18)}50%{box-shadow:0 0 0 8px rgba(201,154,44,.05)}}
@media(prefers-reduced-motion:reduce){.pw-nudge-dot{animation:none}}

.pw-error{background:#fce9e6;border:1px solid #e6b4ab;color:#7a2d22;border-radius:12px;padding:.7rem .9rem;margin:0}

/* Plan cards — tight vertical stack. Popular/best cards get a coloured band
   at the top; nothing else changes the row shape, so the eye finds it
   immediately without extra chrome. */
.pw-plans{display:flex;flex-direction:column;gap:.65rem;margin:0}
.pw-plan{position:relative;background:#fff;border:1.5px solid var(--line,#dbe6df);border-radius:16px;padding:1rem 1.1rem;display:grid;grid-template-columns:1fr auto;gap:.8rem;align-items:center;cursor:pointer;text-align:left;font:inherit;color:inherit;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}
.pw-plan:hover{border-color:#b8ccbd}
.pw-plan:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(63,143,78,.35)}
.pw-plan.selected{border-color:var(--green);background:#f6fbf3;box-shadow:0 0 0 3px rgba(63,143,78,.14)}
.pw-plan.popular{border-color:var(--green);padding-top:1.5rem}
.pw-plan.best{border-color:#c8912f;padding-top:1.5rem}
.pw-plan-band{position:absolute;top:0;left:0;right:0;background:var(--green);color:#fff;font-size:.62rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase;padding:.28rem .8rem;border-radius:14px 14px 0 0;text-align:center}
.pw-plan.best .pw-plan-band{background:#c8912f}
.pw-plan-body{display:flex;flex-direction:column;gap:.15rem;min-width:0}
.pw-plan-head{display:flex;align-items:center;gap:.5rem;color:var(--muted);font-size:.68rem;font-weight:800;letter-spacing:.13em;text-transform:uppercase}
.pw-plan-radio{color:var(--green);font-size:1rem;line-height:1}
.pw-plan-name{color:var(--navy)}
.pw-plan-rate{color:var(--navy);font-weight:800;font-size:1.4rem;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.pw-plan-term{color:var(--muted);font-weight:600;font-size:.85rem;letter-spacing:0;text-transform:none}
.pw-plan-side{display:flex;flex-direction:column;align-items:flex-end;gap:.15rem;text-align:right}
.pw-plan-week{color:var(--muted);font-size:.82rem;font-weight:700;font-variant-numeric:tabular-nums}
.pw-plan-save{background:#e8f3e3;color:#276536;font-size:.66rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase;padding:.18rem .5rem;border-radius:999px}

/* Primary action + reassurance under it. */
.pw-cta{width:100%;padding:1rem 1.5rem;background:var(--navy);color:#fff;border:none;border-radius:14px;font-size:1rem;font-weight:800;letter-spacing:.01em;cursor:pointer;transition:background .15s ease;margin-top:.4rem}
.pw-cta:hover:not(:disabled){background:#0a3e50}
.pw-cta:disabled{opacity:.55;cursor:not-allowed}
.pw-cancel{margin:0;text-align:center;color:var(--muted);font-size:.85rem}

/* Highlights and trust — kept tight, not turning into a landing page. */
.pw-highlights{background:#fff;border:1px solid var(--line,#dbe6df);border-radius:16px;padding:1.2rem 1.4rem}
.pw-highlights h2{margin:0 0 .8rem;font-family:Georgia,serif;font-size:1.15rem;color:var(--navy)}
.pw-highlights ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem}
.pw-highlights li{display:flex;gap:.65rem;align-items:flex-start;font-size:.94rem;line-height:1.45;color:var(--navy)}
.pw-tick{color:var(--green);font-weight:900;flex:none;line-height:1.4}
.pw-trust{display:flex;flex-wrap:wrap;justify-content:center;gap:.4rem}
.pw-trust span{background:#eef4ef;color:var(--navy);font-size:.7rem;font-weight:800;padding:.32rem .7rem;border-radius:999px}

/* FAQ accordion — <details> is native, accessible, and needs almost no CSS. */
.pw-faq{display:flex;flex-direction:column;gap:.4rem}
.pw-faq h2{margin:0 0 .4rem;font-family:Georgia,serif;font-size:1.15rem;color:var(--navy)}
.pw-faq details{background:#fff;border:1px solid var(--line,#dbe6df);border-radius:12px;padding:0 1rem;transition:border-color .15s ease}
.pw-faq details[open]{border-color:#b8ccbd}
.pw-faq summary{padding:.85rem 0;font-weight:700;color:var(--navy);cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;font-size:.94rem}
.pw-faq summary::-webkit-details-marker{display:none}
.pw-faq summary::after{content:'+';font-size:1.4rem;color:var(--muted);font-weight:400;line-height:1;transition:transform .2s ease}
.pw-faq details[open] summary::after{content:'−'}
.pw-faq details p{margin:0 0 .9rem;color:#3a4a44;font-size:.9rem;line-height:1.55}

/* Footer links row. */
.pw-links{display:flex;flex-wrap:wrap;justify-content:center;gap:1rem;font-size:.82rem;color:var(--muted);margin-top:.4rem}
.pw-links a,.pw-links .text-button{color:var(--muted);text-decoration:none;background:none;border:none;padding:0;font:inherit;cursor:pointer}
.pw-links a:hover,.pw-links .text-button:hover{color:var(--navy);text-decoration:underline}

@media(max-width:520px){
  .paywall.v2 .pw-main{padding:1rem .9rem 2rem;gap:1.15rem}
  .pw-plan{grid-template-columns:1fr;gap:.5rem}
  .pw-plan-side{align-items:flex-start;flex-direction:row;gap:.6rem}
  .pw-plan-rate{font-size:1.25rem}
  .pw-stats>div{flex-basis:100%}
  .pw-highlights,.pw-faq details{padding-left:1rem;padding-right:1rem}
}

/* Current -> target progression graphic. Two weight tiles with a directional arrow
   between them, sitting under the title. Uses real projection data or is hidden. */
.pw-progression{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:.6rem;margin-top:.6rem;padding:.9rem 1rem;background:linear-gradient(180deg,#fff 0%,#f4faf1 100%);border:1px solid #d7e8d6;border-radius:14px}
.pw-prog-tile{display:flex;flex-direction:column;gap:.15rem;text-align:center;min-width:0}
.pw-prog-tile.now{opacity:.75}
.pw-prog-label{color:var(--muted);font-size:.66rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.pw-prog-value{color:var(--navy);font-family:Georgia,"Iowan Old Style",serif;font-size:clamp(1.4rem,3.6vw,1.8rem);font-weight:800;font-variant-numeric:tabular-nums;line-height:1.05;letter-spacing:-.01em}
.pw-prog-tile.goal .pw-prog-value{color:var(--green)}
.pw-prog-arrow{display:flex;align-items:center;justify-content:center;gap:.15rem;padding:0 .3rem}
.pw-prog-arrow-line{width:1.6rem;height:2px;background:linear-gradient(90deg,var(--muted) 0%,var(--green) 100%);border-radius:2px}
.pw-prog-arrow-head{color:var(--green);font-size:1.3rem;font-weight:900;line-height:1}
@media(max-width:520px){.pw-prog-arrow-line{width:1rem}}

/* Pre-account quiz artwork. Leads the welcome screen with a photograph rather than a bare
   heading, and stays out of the way on the question screens that declare no visual. */
.ob-quiz-art{border-radius:22px;overflow:hidden;background:#edf5e8;margin-bottom:1.1rem;aspect-ratio:16/9}
.ob-quiz-art img{width:100%;height:100%;display:block;object-fit:cover}
@media(max-width:600px){.ob-quiz-art{border-radius:16px;margin-bottom:.9rem}}

/* Outlook rows on the projection screen, for goals a weight-loss cone cannot describe. */
.ob-outlook{margin:1.1rem 0 0;border:1px solid #dce7df;border-radius:16px;overflow:hidden;background:#f7f9f6}
.ob-outlook-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem;border-bottom:1px solid #dce7df}
.ob-outlook-row:last-child{border-bottom:0}
.ob-outlook dt{color:#61716c;font-size:.9rem}
.ob-outlook dd{margin:0;font-weight:800;color:#082f49;text-align:right}

.recipe-search input{width:100%;border:1px solid var(--line);border-radius:14px;padding:.8rem 1rem;font:inherit;background:#fff}
.recipe-chips{display:flex;flex-wrap:wrap;gap:.5rem;margin:1rem 0}
.chip{border:1px solid var(--line);background:#fff;color:var(--navy);border-radius:999px;padding:.45rem .9rem;font:inherit;font-size:.82rem;font-weight:800;cursor:pointer}
.chip.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.recipe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1.1rem}
.recipe-card{background:#fff;border:1px solid var(--line);border-radius:20px;overflow:hidden;display:flex;flex-direction:column}
.recipe-card img{width:100%;height:140px;object-fit:cover}
.recipe-noimage{height:140px;display:grid;place-items:center;background:#edf5e8;color:var(--green);font-size:2rem}
.recipe-body{padding:1rem;display:grid;gap:.4rem}
.recipe-body h3{margin:0;font-size:1rem}
.recipe-modal{position:fixed;inset:0;background:rgba(8,47,73,.55);display:grid;place-items:center;padding:1rem;z-index:60}
.recipe-sheet{background:var(--cream);border-radius:24px;max-width:640px;width:100%;max-height:90vh;overflow:auto;padding:1.5rem;display:grid;gap:.9rem}
.recipe-sheet img{width:100%;height:220px;object-fit:cover;border-radius:16px}
.recipe-steps{margin:0;padding-left:1.2rem;line-height:1.7}

.ob-meals{display:grid;gap:.75rem}
.ob-meal{display:grid;grid-template-columns:64px 1fr auto;align-items:center;gap:.9rem;text-align:left;width:100%;padding:.7rem;border:1px solid var(--line);border-radius:18px;background:#fff;cursor:pointer;font:inherit;color:inherit}
.ob-meal:hover{border-color:var(--green)}
.ob-meal.recommended{border:2px solid var(--green);background:#f4faf5}
.ob-meal img{width:64px;height:64px;object-fit:cover;border-radius:14px}
.ob-meal-noimage{width:64px;height:64px;border-radius:14px;background:#edf5e8;color:var(--green);display:grid;place-items:center;font-size:1.5rem}
.ob-meal-body{display:grid;gap:.15rem;min-width:0}
.ob-meal-tag{font-size:.62rem;font-weight:900;letter-spacing:.1em;color:var(--green)}
.ob-meal-body strong{font-size:1rem;line-height:1.3}
.ob-meal-meta{font-size:.8rem;font-weight:700;color:var(--navy)}
.ob-meal-why{font-size:.76rem;color:var(--muted);line-height:1.45}
.ob-meal-chev{font-size:1.4rem;color:var(--muted)}

.review-card{background:var(--cream);border-radius:24px;max-width:440px;width:100%;padding:1.8rem;display:grid;gap:.7rem}
.review-stars{color:#e0a11b;font-size:1.2rem;letter-spacing:.15em;margin:0}
.review-card h2{margin:0;font-size:1.4rem}

/* A membership somebody already holds. Every surface that can sell has to be able to say "you
   have this, and it is managed over there" — offering the button anyway takes a second payment
   for the same thing, or is refused by a store for reasons that make no sense from here. */
.button:disabled,.button[aria-disabled=true]{opacity:.42;filter:saturate(.4);cursor:not-allowed;box-shadow:none;transform:none}
.button:disabled:hover,.button[aria-disabled=true]:hover{background:var(--navy);transform:none}
.product-card.is-owned>h3,.product-card.is-owned>p,.product-card.is-owned>.price{opacity:.5}
.product-card.is-current{border-color:var(--green);box-shadow:0 0 0 2px rgba(63,143,78,.18)}
.product-card.is-current>.badge{background:var(--navy);color:#fff}
.product-card.is-owned>.fine{margin-top:.7rem}
.pw-plan[disabled]{cursor:not-allowed}
.pw-plan.owned-elsewhere{opacity:.42}
.pw-plan.current{border-color:var(--green);background:#f6fbf3;box-shadow:0 0 0 3px rgba(63,143,78,.14);opacity:1}
.pw-plan.current .pw-plan-band{background:var(--navy);color:#fff}

/* Actions inside a meal row.
   `.meal button` used to set every button in the row to 1.5rem and strip its background. That was
   written for the Today card's tick glyph, but the Plan page puts Log and Change in the same row,
   so both arrived oversized and unstyled. The glyph has its own class now, and the row's real
   buttons take one compact size that both pages share. */
.meal .button,.meal .text-button{font-size:.85rem;line-height:1.2;white-space:nowrap}
.meal .button{min-height:36px;padding:.5rem .9rem;box-shadow:none}
.meal .text-button{padding:.5rem .2rem}
.meal .button-row{gap:.45rem;align-items:center}
@media(max-width:520px){.meal{grid-template-columns:1fr}.meal .button-row{justify-content:flex-start}}
