/* ==========================================================================
   OlyLife Global — "Nordic calm" design system
   Palette: spruce forest, morning mist, ink, stone, sunrise.
   Type: Bricolage Grotesque (display) + Public Sans (text).
   ========================================================================== */
:root{
  --spruce:#17403C; --spruce-2:#0E2B28; --spruce-3:#22574F;
  --mist:#EEF3F0; --mist-2:#E2EAE6; --paper:#FFFFFF;
  --ink:#13211F; --stone:#5B6966; --line:#D9E3DE; --line-soft:#E7EEEA;
  --sun:#F2C14E; --sun-2:#F7D584; --sun-ink:#3A2C06;
  --sage:#9FC3B6; --rose:#B4433F;
  --display:"Bricolage Grotesque",ui-sans-serif,system-ui,sans-serif;
  --text:"Public Sans",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --r-lg:22px; --r-md:14px; --r-sm:10px;
  --shadow:0 1px 0 rgba(19,33,31,.04),0 18px 40px -24px rgba(14,43,40,.35);
  /* Bootstrap 5.3 variables */
  --bs-body-font-family:var(--text); --bs-body-color:var(--ink); --bs-body-bg:var(--paper);
  --bs-secondary-color:var(--stone); --bs-border-color:var(--line);
  --bs-link-color:var(--spruce-3); --bs-link-color-rgb:34,87,79; --bs-link-hover-color:var(--spruce); --bs-link-hover-color-rgb:23,64,60;
  --bs-primary:#17403C; --bs-primary-rgb:23,64,60; --bs-success-rgb:46,125,90; --bs-warning-rgb:242,193,78;
  --bs-border-radius:var(--r-sm); --bs-border-radius-lg:var(--r-md);
  --bs-focus-ring-color:rgba(242,193,78,.45);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--text);color:var(--ink);background:var(--paper);font-size:1.0625rem;line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body:has(.portal-nav){background:var(--mist)}
h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6,.display-3,.display-4,.display-5,.display-6{font-family:var(--display);font-weight:650;letter-spacing:-.022em;line-height:1.08;color:inherit}
.h5,h5,.h6,h6{letter-spacing:-.01em;line-height:1.25}
.display-6{font-weight:600}
p{max-width:68ch}
a{text-underline-offset:.18em}
.text-secondary{color:var(--stone)!important}
.lead{font-size:1.2rem;line-height:1.6}
:focus-visible{outline:3px solid var(--sun);outline-offset:2px;border-radius:6px}
::selection{background:var(--sun-2);color:var(--ink)}
.skip-link{position:absolute;left:1rem;top:-3rem;z-index:2000;background:var(--sun);color:var(--sun-ink);padding:.5rem 1rem;border-radius:999px;font-weight:600}
.skip-link:focus{top:1rem}

/* ---------- Brand ---------- */
.navbar-brand{display:inline-flex;align-items:center;gap:.6rem;font-family:var(--display);font-weight:700;font-size:1.15rem;letter-spacing:-.01em;color:inherit}
.brand-mark{width:30px;height:30px;flex:none}
.brand-accent,.text-gold{color:var(--sun)}
.brand-word small{font-family:var(--text);font-weight:500;font-size:.78rem;letter-spacing:0;opacity:.72;margin-left:.35rem}

/* ---------- Buttons ---------- */
.btn{--bs-btn-font-weight:600;border-radius:999px;padding:.62rem 1.25rem;min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:.45rem;transition:background-color .15s,border-color .15s,color .15s,transform .15s}
.btn-sm{padding:.35rem .85rem;min-height:34px;font-size:.875rem}
.btn-lg{padding:.85rem 1.6rem;min-height:54px;font-size:1.05rem}
.btn-gold{background:var(--sun);border:1px solid var(--sun);color:var(--sun-ink);font-weight:650}
.btn-gold:hover,.btn-gold:focus-visible{background:var(--sun-2);border-color:var(--sun-2);color:var(--sun-ink)}
.btn-gold:active{transform:translateY(1px)}
.btn-dark{--bs-btn-bg:var(--spruce);--bs-btn-border-color:var(--spruce);--bs-btn-hover-bg:var(--spruce-2);--bs-btn-hover-border-color:var(--spruce-2);--bs-btn-active-bg:var(--spruce-2);--bs-btn-active-border-color:var(--spruce-2);--bs-btn-disabled-bg:var(--spruce);--bs-btn-disabled-border-color:var(--spruce)}
.btn-outline-dark{--bs-btn-color:var(--spruce);--bs-btn-border-color:#B9CBC4;--bs-btn-hover-bg:var(--spruce);--bs-btn-hover-border-color:var(--spruce);--bs-btn-hover-color:#fff;--bs-btn-active-bg:var(--spruce-2);--bs-btn-active-border-color:var(--spruce-2)}
.btn-outline-primary{--bs-btn-color:var(--spruce-3);--bs-btn-border-color:#B9CBC4;--bs-btn-hover-bg:var(--mist-2);--bs-btn-hover-color:var(--spruce);--bs-btn-hover-border-color:var(--spruce-3);--bs-btn-active-bg:var(--mist-2);--bs-btn-active-color:var(--spruce)}
.btn-outline-secondary{--bs-btn-color:var(--stone);--bs-btn-border-color:var(--line);--bs-btn-hover-bg:var(--mist);--bs-btn-hover-color:var(--ink);--bs-btn-hover-border-color:#C6D3CD}
.btn-outline-success{--bs-btn-color:#2E7D5A;--bs-btn-border-color:#B7D8C8;--bs-btn-hover-bg:#2E7D5A;--bs-btn-hover-border-color:#2E7D5A}
.btn-outline-danger{--bs-btn-color:var(--rose);--bs-btn-border-color:#E5C2BF;--bs-btn-hover-bg:var(--rose);--bs-btn-hover-border-color:var(--rose)}
.btn-outline-light{--bs-btn-color:#E7F0EC;--bs-btn-border-color:rgba(231,240,236,.32);--bs-btn-hover-bg:rgba(231,240,236,.12);--bs-btn-hover-color:#fff;--bs-btn-hover-border-color:rgba(231,240,236,.55);--bs-btn-active-bg:rgba(231,240,236,.18)}
.btn-link{border-radius:6px}
.text-link,.feature-link{color:var(--spruce-3);font-weight:600;text-decoration:underline;text-decoration-color:var(--sage);text-decoration-thickness:2px}
.text-link:hover,.feature-link:hover{text-decoration-color:var(--sun)}

/* ---------- Public navigation ---------- */
.site-nav{background:var(--spruce-2);padding:.85rem 0}
.public-nav{background:rgba(255,255,255,.86);backdrop-filter:saturate(1.4) blur(14px);-webkit-backdrop-filter:saturate(1.4) blur(14px);border-bottom:1px solid var(--line-soft);padding:.8rem 0}
.public-nav .navbar-brand{color:var(--spruce)}
.public-nav .nav-link{color:var(--ink);font-weight:500;padding:.5rem .8rem!important;border-radius:999px}
.public-nav .nav-link:hover{background:var(--mist)}
.public-nav .nav-link.active{color:var(--spruce);background:var(--mist)}
.public-nav .navbar-toggler{border:1px solid var(--line);border-radius:12px;padding:.45rem .6rem}
.public-nav .dropdown-menu{border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow);padding:.4rem}
.public-nav .dropdown-item{border-radius:8px}
.public-nav .dropdown-item.active,.public-nav .dropdown-item:active{background:var(--mist);color:var(--spruce)}

/* ---------- Portal navigation ---------- */
.portal-nav{background:var(--spruce-2);padding:.65rem 0}
.portal-nav .navbar-brand{color:#fff}
.portal-nav .nav-link{color:#BFD3CC;font-weight:500;border-radius:999px;padding:.45rem .8rem!important}
.portal-nav .nav-link:hover,.portal-nav .nav-link:focus{color:#fff;background:rgba(255,255,255,.07)}
.portal-nav .nav-link.active{color:var(--sun-ink);background:var(--sun)}
.portal-nav .navbar-nav{gap:.2rem}
.portal-nav .dropdown-menu{border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow);padding:.4rem;margin-top:.5rem}
.portal-nav .dropdown-item{border-radius:8px;padding:.45rem .75rem;font-size:.95rem}
.portal-nav .dropdown-item.active,.portal-nav .dropdown-item:active{background:var(--mist);color:var(--spruce);font-weight:600}
.portal-nav .badge{font-size:.72rem}
.portal-nav .navbar-toggler{border-color:rgba(255,255,255,.25);border-radius:12px}

/* ---------- Signature: wave rings ---------- */
.rings{position:relative;aspect-ratio:1;width:100%;max-width:520px;margin-inline:auto}
.rings span{position:absolute;inset:0;margin:auto;border-radius:50%;border:1px solid rgba(242,193,78,.34)}
.rings span:nth-child(1){width:22%;height:22%;border:0;background:radial-gradient(circle at 38% 34%,#FFF3C9 0,#F7D584 34%,#F2C14E 62%,#C9922A 100%);box-shadow:0 0 80px 18px rgba(242,193,78,.35)}
.rings span:nth-child(2){width:38%;height:38%;border-color:rgba(242,193,78,.55)}
.rings span:nth-child(3){width:54%;height:54%;border-color:rgba(242,193,78,.4)}
.rings span:nth-child(4){width:70%;height:70%;border-color:rgba(159,195,182,.36)}
.rings span:nth-child(5){width:86%;height:86%;border-color:rgba(159,195,182,.24)}
.rings span:nth-child(6){width:100%;height:100%;border-color:rgba(159,195,182,.14)}
@media (prefers-reduced-motion:no-preference){
  .rings span{animation:ring-in 1.6s cubic-bezier(.2,.7,.2,1) both}
  .rings span:nth-child(2){animation-delay:.12s}.rings span:nth-child(3){animation-delay:.24s}.rings span:nth-child(4){animation-delay:.36s}.rings span:nth-child(5){animation-delay:.48s}.rings span:nth-child(6){animation-delay:.6s}
  .hero-copy>*{animation:rise .9s cubic-bezier(.2,.7,.2,1) both}
  .hero-copy>*:nth-child(2){animation-delay:.08s}.hero-copy>*:nth-child(3){animation-delay:.16s}.hero-copy>*:nth-child(4){animation-delay:.24s}.hero-copy>*:nth-child(5){animation-delay:.32s}
}
@keyframes ring-in{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

/* ---------- Hero ---------- */
.hero{position:relative;background:radial-gradient(120% 90% at 85% 40%,#1F544D 0,var(--spruce) 38%,var(--spruce-2) 100%);color:#fff;overflow:hidden}
.hero h1{font-size:clamp(2.6rem,6.2vw,5.4rem);font-weight:700;letter-spacing:-.035em;line-height:.98;max-width:13ch}
.hero .lead{color:#CFE0DA;max-width:46ch;font-size:clamp(1.1rem,1.6vw,1.3rem)}
.hero-note{color:#9FB9B1;font-size:.9rem;max-width:52ch}
.hero-caption{position:absolute;left:50%;bottom:4%;transform:translateX(-50%);white-space:nowrap;background:rgba(14,43,40,.7);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.12);border-radius:999px;padding:.45rem 1rem;font-size:.88rem;color:#DCE8E3}
.text-light-muted{color:#B9CEC7}

/* ---------- Sections ---------- */
.section{padding:clamp(4rem,8vw,7rem) 0}
.section-mist{background:var(--mist)}
.section-head{max-width:40rem;margin-bottom:2.75rem}
.section-head h2{font-size:clamp(2rem,3.6vw,3rem)}
.section-head p{color:var(--stone);font-size:1.12rem;margin-top:.9rem}
.eyebrow{display:inline-block;font-size:.9rem;font-weight:600;color:var(--spruce-3);letter-spacing:0;margin-bottom:.35rem}
.hero .eyebrow,.dark-card .eyebrow,.cta-band .eyebrow{color:var(--sun-2)}

/* Path: real sequence of steps */
.path{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(3,1fr);gap:2rem;position:relative;counter-reset:step}
.path::before{content:"";position:absolute;left:24px;right:24px;top:24px;height:2px;background:linear-gradient(90deg,var(--sun),var(--sage) 60%,var(--line))}
.path li{position:relative;counter-increment:step}
.path .dot{position:relative;z-index:1;width:50px;height:50px;border-radius:50%;display:grid;place-items:center;background:var(--paper);border:2px solid var(--spruce);font-family:var(--display);font-weight:700;color:var(--spruce);margin-bottom:1.4rem}
.path li:first-child .dot{background:var(--sun);border-color:var(--sun);color:var(--sun-ink)}
.path h3{font-size:1.5rem;margin-bottom:.6rem}
.path p{color:var(--stone)}
@media (max-width:767.98px){.path{grid-template-columns:1fr;gap:2.25rem}.path::before{left:24px;right:auto;top:24px;bottom:24px;width:2px;height:auto;background:linear-gradient(180deg,var(--sun),var(--sage) 60%,var(--line))}.path li{padding-left:72px}.path .dot{position:absolute;left:0;top:0;margin:0}}

/* Honesty list */
.promises{display:grid;grid-template-columns:repeat(2,1fr);gap:0;border-top:1px solid var(--line)}
.promise{padding:1.75rem 2rem 1.75rem 0;border-bottom:1px solid var(--line)}
.promise:nth-child(odd){border-right:1px solid var(--line)}
.promise:nth-child(even){padding-left:2rem;padding-right:0}
.promise h3{font-size:1.45rem;margin-bottom:.5rem}
.promise p{color:var(--stone);margin:0}
@media (max-width:767.98px){.promises{grid-template-columns:1fr}.promise,.promise:nth-child(even){padding:1.5rem 0;border-right:0}}

/* CTA band */
.cta-band{position:relative;overflow:hidden;background:var(--spruce);color:#fff;border-radius:28px}
.cta-band::after{content:"";position:absolute;right:-330px;top:50%;width:560px;height:560px;transform:translateY(-50%);border-radius:50%;background:radial-gradient(circle,rgba(242,193,78,.95) 0 34px,rgba(242,193,78,.25) 35px,transparent 120px),repeating-radial-gradient(circle,transparent 0 59px,rgba(242,193,78,.32) 60px 61px);-webkit-mask:radial-gradient(circle,#000 45%,transparent 71%);mask:radial-gradient(circle,#000 45%,transparent 71%);pointer-events:none}
.cta-band h2{font-size:clamp(1.9rem,3.4vw,2.8rem);max-width:18ch}
.cta-band p{color:#CFE0DA}
.cta-band>*{position:relative;z-index:1}

/* Inner-page hero */
.page-hero{position:relative;background:var(--mist);overflow:hidden;border-bottom:1px solid var(--line-soft)}
.page-hero::after{content:"";position:absolute;right:-160px;top:50%;transform:translateY(-50%);width:640px;height:640px;border-radius:50%;background:radial-gradient(circle,rgba(242,193,78,.55) 0 22px,rgba(242,193,78,.12) 23px,transparent 90px),repeating-radial-gradient(circle,transparent 0 55px,rgba(23,64,60,.14) 56px 57px);-webkit-mask:radial-gradient(circle,#000 40%,transparent 70%);mask:radial-gradient(circle,#000 40%,transparent 70%);pointer-events:none}
@media (max-width:767.98px){.page-hero::after{right:-360px;opacity:.6}}
.page-hero>.container{position:relative;z-index:1}
.page-hero h1,.page-hero .display-5{font-size:clamp(2.4rem,5vw,4rem);font-weight:700;letter-spacing:-.03em;max-width:16ch}
.page-hero .lead{color:var(--stone);max-width:56ch}

/* ---------- Cards & surfaces ---------- */
.content-card{padding:1.75rem;border:1px solid var(--line-soft);border-radius:var(--r-lg);background:var(--paper);overflow-wrap:anywhere}
body:has(.portal-nav) .content-card{border-color:#DEE7E2;box-shadow:0 1px 2px rgba(19,33,31,.04)}
.dark-card{background:var(--spruce);color:#fff;border-color:var(--spruce)}
.dark-card .text-light-muted,.dark-card p{color:#CFE0DA}
.dark-card .form-label{color:#E7F0EC}
.dark-card hr{border-color:rgba(255,255,255,.2)!important;opacity:1}
.feature-card{display:flex;flex-direction:column;gap:.5rem;color:inherit;text-decoration:none;border:1px solid var(--line);border-radius:var(--r-lg);padding:1.75rem;height:100%;background:var(--paper);transition:border-color .2s,box-shadow .2s}
.feature-card:hover{border-color:var(--spruce-3);box-shadow:var(--shadow);color:inherit}
.feature-number{font-family:var(--display);font-size:.95rem;font-weight:700;color:var(--spruce-3);letter-spacing:0}
.notice{background:#FBF3DA;border:1px solid #EFDCA4;border-left:4px solid var(--sun);border-radius:var(--r-md);padding:1rem 1.25rem;color:#4A3B12}
.notice strong{color:#2F2507}
.check-list{list-style:none;padding:0;margin:0}
.check-list li{position:relative;padding:.75rem 0 .75rem 2.1rem;border-bottom:1px solid var(--line-soft);color:#33423F}
.check-list li:last-child{border-bottom:0}
.check-list li::before{content:"";position:absolute;left:0;top:1rem;width:1.15rem;height:1.15rem;border-radius:50%;border:2px solid var(--spruce-3);background:radial-gradient(circle,var(--sun) 0 34%,transparent 38%)}
.prose h2{font-size:1.5rem;margin-top:2.2rem}
.prose h2:first-child{margin-top:0}
.prose p{color:#33423F}
.lesson-copy{line-height:1.8;white-space:normal;max-width:70ch}

/* Stat tiles in portals */
.display-6{font-size:clamp(1.9rem,3vw,2.4rem)}
.rounded-3.bg-light,.bg-light.rounded{background:var(--mist)!important;border:1px solid var(--line-soft)}

/* ---------- Forms ---------- */
.form-label{font-weight:600;font-size:.94rem;color:var(--ink)}
.form-control,.form-select{min-height:46px;padding:.65rem .9rem;border:1px solid #CCD9D3;border-radius:12px;background-color:#FCFDFC;color:var(--ink)}
.form-control-sm,.form-select-sm{min-height:36px;padding:.35rem .65rem;border-radius:10px;font-size:.9rem}
.form-control:focus,.form-select:focus{border-color:var(--spruce-3);box-shadow:0 0 0 .25rem rgba(242,193,78,.35);background-color:#fff}
.form-control::placeholder{color:#93A29E}
.form-check-input{width:1.15em;height:1.15em;border-color:#A9BCB5}
.form-check-input:checked{background-color:var(--spruce);border-color:var(--spruce)}
.form-check-input:focus{box-shadow:0 0 0 .25rem rgba(242,193,78,.35);border-color:var(--spruce-3)}
.form-text{color:var(--stone)}
.form-control-color{min-height:46px;width:4rem;padding:.3rem}
.input-group>.form-control{border-radius:12px 0 0 12px}
.input-group>.btn{border-radius:0 12px 12px 0}

/* ---------- Tables, badges, progress, alerts ---------- */
.table{--bs-table-bg:transparent;--bs-table-border-color:var(--line-soft)}
.table>thead th{font-size:.82rem;font-weight:600;color:var(--stone);border-bottom-color:var(--line);white-space:nowrap}
.table>tbody>tr:hover>*{background:rgba(238,243,240,.55)}
.badge{font-weight:600;border-radius:999px;padding:.4em .75em}
.text-bg-light{background:var(--mist)!important;color:var(--spruce)!important;border:1px solid var(--line)}
.text-bg-success{background:#DDEFE5!important;color:#1E5E41!important}
.text-bg-warning{background:#FBEBC1!important;color:#5C4507!important}
.text-bg-secondary{background:#E7ECEA!important;color:#4C5956!important}
.text-bg-primary{background:var(--spruce)!important;color:#fff!important}
.progress{height:.55rem;border-radius:999px;background:var(--mist-2)}
.progress-bar{background:linear-gradient(90deg,var(--spruce-3),var(--spruce));border-radius:999px}
.alert{border-radius:var(--r-md);border-width:1px}
.alert-success{background:#E3F2EA;border-color:#BFE0CE;color:#1B5139}
.alert-danger{background:#F9E6E4;border-color:#EDC4BF;color:#7A2723}
.alert-warning{background:#FBF1D6;border-color:#EFD995;color:#5C4507}
.alert-info,.alert-light{background:var(--mist);border-color:var(--line);color:var(--ink)}
details>summary{cursor:pointer;color:var(--spruce-3);font-weight:600}
details>summary::marker{color:var(--sun)}
code{color:var(--spruce-3);background:var(--mist);padding:.1em .35em;border-radius:6px}

/* Portal page rhythm */
body:has(.portal-nav) main{padding-top:2.5rem!important}
body:has(.portal-nav) main>h1,body:has(.portal-nav) main h1.h2{font-size:clamp(1.9rem,3vw,2.5rem);font-weight:700;letter-spacing:-.03em}

/* ---------- Auth (sign-in, invitation, reset, unsubscribe) ---------- */
.auth{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);background:var(--paper)}
.auth-art{position:relative;background:radial-gradient(110% 80% at 70% 55%,#1F544D 0,var(--spruce) 40%,var(--spruce-2) 100%);color:#fff;padding:2.5rem clamp(2rem,4vw,4rem);display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}
.auth-art .navbar-brand{color:#fff}
.auth-art .rings{position:absolute;width:115%;max-width:none;right:-38%;top:50%;transform:translateY(-50%);opacity:.95}
.auth-art blockquote{position:relative;z-index:1;font-family:var(--display);font-size:clamp(1.6rem,2.6vw,2.4rem);font-weight:600;letter-spacing:-.02em;line-height:1.15;max-width:15ch;margin:0}
.auth-art .auth-foot{position:relative;z-index:1;color:#A9C2BA;font-size:.9rem;max-width:40ch}
.auth-panel{display:flex;align-items:center;justify-content:center;padding:3rem clamp(1.25rem,5vw,4rem)}
.auth-box{width:100%;max-width:440px}
.auth-box h1{font-size:clamp(2rem,3vw,2.6rem);font-weight:700;letter-spacing:-.03em;margin-bottom:.5rem}
.auth-box .sub{color:var(--stone);margin-bottom:1.75rem}
.auth-mobile-brand{display:none;color:var(--spruce)}
@media (max-width:991.98px){.auth{grid-template-columns:1fr}.auth-art{display:none}.auth-mobile-brand{display:inline-flex;margin-bottom:2rem}.auth-panel{align-items:flex-start}}

/* ---------- Footer ---------- */
.site-footer{background:var(--spruce-2);color:#A9C2BA;font-size:.95rem}
.site-footer .navbar-brand{color:#fff}
.site-footer a{color:#E8F0EC;text-decoration:none}
.site-footer a:hover{color:var(--sun-2);text-decoration:underline}
.site-footer h2{font-family:var(--text);font-size:.95rem;font-weight:600;color:#fff;letter-spacing:0;margin-bottom:.9rem}
.site-footer ul{list-style:none;padding:0;margin:0;display:grid;gap:.5rem}
.footer-rule{border-top:1px solid rgba(255,255,255,.1)}

/* ---------- Campaign landing ---------- */
.campaign-hero{position:relative;overflow:hidden;background:var(--mist)}
.campaign-hero::before{content:"";position:absolute;inset:auto -10% -60% auto;width:70vw;max-width:900px;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,var(--accent,#F2C14E) 0,transparent 62%);opacity:.22;pointer-events:none}
.campaign-hero>.container{position:relative}
.campaign-hero h1{font-size:clamp(2.4rem,5.4vw,4.4rem);font-weight:700;letter-spacing:-.03em;max-width:16ch}
.btn-accent{background:var(--accent,#F2C14E);border:1px solid var(--accent,#F2C14E);color:var(--accent-ink,#14201E);font-weight:650}
.btn-accent:hover{filter:brightness(1.08);color:var(--accent-ink,#14201E)}

/* ---------- Utilities & responsive ---------- */
.py-lg-6{padding-top:6rem;padding-bottom:6rem}
@media (max-width:991.98px){.public-nav .navbar-collapse{padding:1rem 0 .5rem}.portal-nav .navbar-collapse{padding-top:.75rem}}
@media (max-width:767.98px){body{font-size:1rem}.py-lg-6{padding-top:3.5rem;padding-bottom:3.5rem}.content-card{padding:1.25rem;border-radius:18px}.cta-band{border-radius:22px}.table-responsive .table{font-size:.9rem}.input-group>.form-control{min-width:0}.btn{white-space:normal}.hero .rings{max-width:320px}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media print{.site-nav,.public-nav,.portal-nav,.site-footer{display:none}}
.d-flex>.btn,form.d-flex .btn,.d-flex>form>.btn{flex-shrink:0;white-space:nowrap}
.table .form-select-sm{min-width:8.5rem}
.text-center p,.text-center h1{margin-inline:auto}
.auth-lang{display:flex;justify-content:flex-end;gap:.25rem;margin-bottom:2rem;font-size:.9rem}
.auth-lang a{padding:.3rem .7rem;border-radius:999px;color:var(--stone);text-decoration:none}
.auth-lang a:hover{background:var(--mist);color:var(--ink)}
.auth-lang a[aria-current]{background:var(--mist);color:var(--spruce);font-weight:600}
.portal-nav .dropdown-header{font-size:.78rem;color:var(--stone)}

/* ---------- Product catalogue ---------- */
.product-list{display:grid;gap:clamp(3rem,6vw,5rem)}
.product{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(2rem,5vw,4.5rem);align-items:center}
.product:nth-child(even) .product-media{order:2}
.product-media{position:relative;aspect-ratio:1;border-radius:28px;background:radial-gradient(circle at 50% 45%,#fff 0,var(--mist) 58%,var(--mist-2) 100%);display:grid;place-items:center;overflow:hidden}
.product-media::before{content:"";position:absolute;inset:8%;border-radius:50%;background:repeating-radial-gradient(circle,transparent 0 46px,rgba(23,64,60,.08) 47px 48px);-webkit-mask:radial-gradient(circle,#000 30%,transparent 70%);mask:radial-gradient(circle,#000 30%,transparent 70%)}
.product-media img{position:relative;width:78%;height:auto;object-fit:contain;filter:drop-shadow(0 30px 40px rgba(14,43,40,.18))}
.product h2{font-size:clamp(2rem,3.6vw,3rem);font-weight:700;letter-spacing:-.03em;margin:0}
.product-code{color:var(--stone);font-size:.95rem;margin:.4rem 0 1rem}
.product-summary{font-size:1.15rem;color:#33423F}
.product-price{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:.9rem 0;margin:1.5rem 0 .75rem}
.product-price span{color:var(--stone)}
.product-price strong{font-family:var(--display);font-size:1.6rem;font-weight:700}
@media (max-width:767.98px){.product{grid-template-columns:1fr}.product:nth-child(even) .product-media{order:0}}
.product-media-name{display:none;position:relative;font-family:var(--display);font-weight:700;font-size:clamp(1.4rem,2.6vw,2rem);color:var(--spruce);letter-spacing:-.02em;text-align:center;padding:0 2rem}
.product-media.no-image .product-media-name{display:block}
