@import url('https://fonts.googleapis.com/css2?family=Estedad:wght@400;500;600;700;800&family=Inter:wght@400;500;600;700&family=Plus+Jakarta+Sans:wght@500;600;700;800&family=Vazirmatn:wght@300;400;500;600;700&display=swap');
*{box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:'Vazirmatn',Tahoma,sans-serif;background:var(--body-bg);color:#171a1f;line-height:1.9}.site-header{background:rgba(255,252,248,.88);backdrop-filter:blur(16px);border-bottom:1px solid rgba(0,0,0,.06)}.navbar-brand{font-weight:800}.nav-link{position:relative;color:#626872}.nav-link.active{color:#111;font-weight:700}.nav-link.active:after{content:"";position:absolute;right:15%;left:15%;bottom:0;height:2px;background:var(--accent)}.hero{padding:4.8rem 0 3rem;background:linear-gradient(135deg,var(--body-bg),color-mix(in srgb,var(--secondary) 75%,white))}.hero h1{font-size:clamp(2.4rem,5vw,4.8rem);font-weight:800;letter-spacing:-.04em}.hero h2{font-size:clamp(1.15rem,2vw,1.6rem);font-weight:500;margin:1rem 0 1.2rem;color:#343a40}.hero p{font-size:1.05rem;color:#626872;max-width:620px}.eyebrow{color:var(--accent);font-weight:700}.hero-media{max-width:560px;margin-inline:auto;border-radius:42% 42% 10% 10% / 18% 18% 10% 10%;overflow:hidden;background:var(--secondary)}.hero-media img{width:100%;aspect-ratio:4/4.3;object-fit:cover;display:block;transition:transform .7s ease}.hero-media:hover img{transform:scale(1.035)}.sections-wrap{counter-reset:section}.resume-section{counter-increment:section;display:grid;grid-template-columns:90px 1fr;gap:2rem;padding:3.5rem 0;border-top:1px solid rgba(0,0,0,.08)}.section-index:before{content:"0" counter(section);color:#9298a0;font-size:.9rem}.section-index:after{content:"";display:block;width:28px;height:2px;background:var(--accent);margin-top:.55rem}.section-body h2{font-weight:800;margin-bottom:1.4rem}.lead-copy{font-size:1.08rem;color:#5e646d;max-width:900px}.timeline{position:relative}.timeline:before{content:"";position:absolute;right:13px;top:12px;bottom:12px;width:1px;background:color-mix(in srgb,var(--accent) 40%,transparent)}.timeline-item{position:relative;display:grid;grid-template-columns:28px 160px 1fr;gap:1.1rem;padding:0 0 2rem}.timeline-item .dot{width:9px;height:9px;border-radius:50%;background:var(--accent);margin-top:11px;z-index:1}.timeline-item .date{color:#7b8189}.timeline-item h3,.soft-card h3,.project-card h3,.sport-card h3{font-size:1.05rem;font-weight:700}.timeline-item p,.soft-card p,.project-card p{color:#737982;margin:0}.tag-list{display:flex;flex-wrap:wrap;gap:.65rem}.tag{padding:.46rem 1rem;border:1px solid color-mix(in srgb,var(--accent) 18%,#ddd);background:color-mix(in srgb,var(--secondary) 60%,white);border-radius:999px;font-size:.92rem}.soft-card,.project-card{border:1px solid rgba(0,0,0,.07);border-radius:1rem;background:rgba(255,255,255,.64);transition:.3s ease}.soft-card{padding:1.4rem}.soft-card:hover,.project-card:hover{transform:translateY(-4px);box-shadow:0 14px 34px rgba(0,0,0,.07)}.project-card{overflow:hidden}.project-card img{width:100%;aspect-ratio:16/10;object-fit:cover}.project-card .tech{font-size:.85rem;color:var(--accent);font-weight:600}.project-card a{color:var(--accent);font-weight:700;text-decoration:none}.sport-card{position:relative;overflow:hidden;border-radius:1rem;margin:0;min-height:260px;background:#111}.sport-card img{width:100%;height:100%;min-height:260px;object-fit:cover;transition:transform .6s cubic-bezier(.2,.75,.2,1),filter .4s}.sport-card figcaption{position:absolute;inset:auto 0 0;padding:1.5rem;color:#fff;transform:translateY(100%);transition:transform .4s ease;background:linear-gradient(transparent,rgba(0,0,0,.82));padding-top:5rem}.sport-card:hover img{transform:scale(1.08);filter:brightness(.68)}.sport-card:hover figcaption{transform:translateY(0)}.sport-card p{margin:0;color:rgba(255,255,255,.8)}.skill-row>div:first-child{display:flex;justify-content:space-between;margin-bottom:.5rem}.progress{height:7px;background:#ece7df}.progress-bar{width:0;background:var(--accent);transition:width 1.2s cubic-bezier(.2,.7,.2,1)}.site-footer{padding:2rem 0;border-top:1px solid rgba(0,0,0,.08)}.site-footer a{text-decoration:none;color:#555}.socials{display:flex;gap:1rem}.reveal{opacity:0;transform:translateY(24px);transition:opacity .65s ease,transform .65s ease}.reveal.visible{opacity:1;transform:none}.btn-dark{background:#171a1f;border-color:#171a1f}.btn:hover{transform:translateY(-2px);transition:.2s}@media(max-width:767px){.hero{padding-top:2.5rem}.hero-media{border-radius:2rem}.resume-section{grid-template-columns:1fr;gap:.7rem;padding:2.6rem 0}.section-index{display:flex;gap:.5rem;align-items:center}.section-index:after{margin-top:0}.timeline-item{grid-template-columns:28px 1fr}.timeline-item .date{grid-column:2}.timeline-item>div:last-child{grid-column:2}.sport-card figcaption{transform:none;background:linear-gradient(transparent,rgba(0,0,0,.78))}}

.language-switch{display:flex;align-items:center;gap:.35rem;padding:.25rem .65rem;border:1px solid rgba(0,0,0,.12);border-radius:999px;background:rgba(255,255,255,.55);font-size:.78rem;font-weight:700}.language-switch a{text-decoration:none;color:#8a8f96;padding:.15rem .25rem;transition:.2s}.language-switch a.active,.language-switch a:hover{color:var(--accent)}html[dir="ltr"] body{font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif}html[dir="ltr"] .nav-link.active:after{left:15%;right:15%}html[dir="ltr"] .timeline:before{left:13px;right:auto}@media(max-width:991px){.language-switch{margin-block:.75rem}.navbar-collapse .d-flex{align-items:flex-start!important;flex-direction:column}}

/* Alternating section tones keep new sections inside the same two-tone visual system. */
.resume-section{position:relative;padding-inline:1.25rem;border-radius:1.4rem;margin-block:.35rem;border-top:0}
.resume-section.tone-a{background:color-mix(in srgb,var(--body-bg) 86%,white)}
.resume-section.tone-b{background:color-mix(in srgb,var(--secondary) 58%,white)}
.resume-section+.resume-section{margin-top:1rem}
.contact-section{padding:5rem 0;background:color-mix(in srgb,var(--secondary) 56%,white);border-top:1px solid rgba(0,0,0,.06)}
.contact-shell{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:4rem;align-items:start}
.contact-copy h2{font-size:clamp(2rem,4vw,3.4rem);font-weight:800;margin:.7rem 0 1rem}
.contact-copy p{color:#6b7078;max-width:520px}
.contact-details{display:flex;flex-direction:column;gap:.4rem;margin-top:1.2rem}.contact-details a,.contact-details span{color:#41464d;text-decoration:none}
.contact-form{background:rgba(255,255,255,.76);border:1px solid rgba(0,0,0,.07);border-radius:1.3rem;padding:1.4rem;box-shadow:0 18px 50px rgba(34,28,22,.05)}
.contact-form label{display:block;font-size:.9rem;font-weight:600;margin-bottom:.35rem}.hp-field{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important;opacity:0!important;pointer-events:none!important}
.site-footer{background:#191b1f;color:#ece9e4;padding:3rem 0 1.2rem}.site-footer a{color:#ece9e4}.site-footer p{color:#aaaeb5;margin:.6rem 0 0}.footer-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:2rem}.footer-grid h3{font-size:.95rem;font-weight:700;margin-bottom:.8rem}.footer-grid>div:nth-child(2){display:flex;flex-direction:column}.footer-bottom{border-top:1px solid rgba(255,255,255,.1);margin-top:2rem;padding-top:1rem;color:#858a92;font-size:.85rem}
.sport-card figcaption{opacity:0;transform:translateY(35%);transition:opacity .38s ease,transform .45s cubic-bezier(.2,.75,.2,1);background:linear-gradient(transparent,rgba(0,0,0,.86))}.sport-card:hover figcaption,.sport-card:focus-within figcaption{opacity:1;transform:translateY(0)}
@media(max-width:991px){.contact-shell{grid-template-columns:1fr;gap:2rem}.footer-grid{grid-template-columns:1fr 1fr}}
@media(max-width:767px){.resume-section{padding-inline:1rem}.sport-card figcaption{opacity:1;transform:none}.footer-grid{grid-template-columns:1fr}.contact-section{padding:3.5rem 0}}


/* 2026 visual-system refinement: warm neutral surfaces, stronger contact separation. */
:root{--contact-bg:#E8DED2}
body{background:var(--body-bg);color:#1f1e1c}
.site-header{background:color-mix(in srgb,var(--body-bg) 90%,white);border-bottom-color:rgba(48,40,32,.075)}
.resume-section.tone-a{background:color-mix(in srgb,var(--body-bg) 91%,white)}
.resume-section.tone-b{background:color-mix(in srgb,var(--secondary) 72%,white)}
.contact-section{position:relative;isolation:isolate;background:var(--contact-bg);border-top:1px solid rgba(73,57,42,.10);border-bottom:1px solid rgba(73,57,42,.12)}
.contact-section:before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(circle at 15% 20%,rgba(255,255,255,.42),transparent 34%),linear-gradient(135deg,rgba(255,255,255,.08),rgba(113,84,58,.035))}
.contact-copy p{color:#5f5a54}.contact-details a,.contact-details span{color:#37332f}
.contact-form{background:color-mix(in srgb,#fff 86%,var(--contact-bg));border-color:rgba(78,60,44,.11);box-shadow:0 22px 58px rgba(54,42,31,.075)}
.contact-form .form-control{background:rgba(255,255,255,.76);border-color:rgba(76,60,46,.16)}
.contact-form .form-control:focus{background:#fff;border-color:color-mix(in srgb,var(--accent) 54%,#b7afa7);box-shadow:0 0 0 .2rem color-mix(in srgb,var(--accent) 13%,transparent)}
.site-footer{background:#24211f;color:#f2eee9}.site-footer a{color:#f2eee9}.site-footer p{color:#b8b0a8}.footer-bottom{color:#9c948d}

/* 2026 typography system: Persian = Estedad headings + Vazirmatn body; English = Plus Jakarta Sans headings + Inter body. */
:root{
  --font-fa-body:'Vazirmatn',Tahoma,Arial,sans-serif;
  --font-fa-heading:'Estedad','Vazirmatn',Tahoma,sans-serif;
  --font-en-body:'Inter',system-ui,-apple-system,'Segoe UI',Arial,sans-serif;
  --font-en-heading:'Plus Jakarta Sans','Inter',system-ui,sans-serif;
}
html{font-size:16px;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}
html[dir="rtl"] body{font-family:var(--font-fa-body);font-weight:400;line-height:1.95;letter-spacing:0}
html[dir="ltr"] body{font-family:var(--font-en-body);font-weight:400;line-height:1.68;letter-spacing:-.006em}
html[dir="rtl"] :is(h1,h2,h3,h4,h5,h6,.navbar-brand,.eyebrow,.btn,.nav-link,.tag,.language-switch){font-family:var(--font-fa-heading)}
html[dir="ltr"] :is(h1,h2,h3,h4,h5,h6,.navbar-brand,.eyebrow,.btn,.nav-link,.tag,.language-switch){font-family:var(--font-en-heading)}

.navbar-brand{font-size:1.08rem;font-weight:700;letter-spacing:-.025em}
.nav-link{font-size:.94rem;font-weight:500;line-height:1.6}
.nav-link.active{font-weight:700}
.language-switch{font-size:.75rem;font-weight:700;letter-spacing:.03em}

.hero h1{font-weight:800;line-height:1.14;margin:.45rem 0 0;letter-spacing:-.045em}
html[dir="rtl"] .hero h1{font-size:clamp(2.45rem,5vw,4.65rem);letter-spacing:-.035em}
html[dir="ltr"] .hero h1{font-size:clamp(2.65rem,5.2vw,5rem);line-height:1.06;letter-spacing:-.055em}
.hero h2{font-weight:600;line-height:1.5;letter-spacing:-.018em}
html[dir="ltr"] .hero h2{line-height:1.35;letter-spacing:-.028em}
.hero p{font-size:1.03rem;line-height:2;color:#66615c}
html[dir="ltr"] .hero p{font-size:1rem;line-height:1.75;color:#656a73}
.eyebrow{font-size:.88rem;font-weight:600;letter-spacing:.01em}

.section-body h2{font-size:clamp(1.65rem,3vw,2.15rem);font-weight:700;line-height:1.42;letter-spacing:-.025em}
html[dir="ltr"] .section-body h2{line-height:1.22;letter-spacing:-.04em}
.lead-copy{font-size:1.03rem;line-height:2.05;color:#625e59}
html[dir="ltr"] .lead-copy{font-size:1rem;line-height:1.78;color:#666b73}
.timeline-item h3,.soft-card h3,.project-card h3,.sport-card h3{font-size:1.02rem;font-weight:700;line-height:1.55;letter-spacing:-.015em}
html[dir="ltr"] :is(.timeline-item h3,.soft-card h3,.project-card h3,.sport-card h3){line-height:1.35;letter-spacing:-.028em}
.timeline-item p,.soft-card p,.project-card p{font-size:.94rem;line-height:1.85}
html[dir="ltr"] :is(.timeline-item p,.soft-card p,.project-card p){line-height:1.62}
.timeline-item .date{font-size:.9rem;font-variant-numeric:tabular-nums}
.tag{font-family:inherit!important;font-size:.875rem;font-weight:500;line-height:1.45}
html[dir="ltr"] .tag{font-family:var(--font-en-body)!important;letter-spacing:-.01em}
.project-card .tech{font-family:var(--font-en-body);font-size:.8rem;font-weight:600;letter-spacing:.01em}
.section-index:before{font-family:var(--font-en-body);font-variant-numeric:tabular-nums;font-weight:500;letter-spacing:.02em}
.skill-row{font-size:.93rem}.skill-row b{font-family:var(--font-en-body);font-weight:600;font-variant-numeric:tabular-nums}

.btn{font-size:.92rem;font-weight:600;line-height:1.5;letter-spacing:-.01em}
html[dir="ltr"] .btn{letter-spacing:-.018em}
.form-control,.form-select{font-family:inherit;font-size:.95rem;line-height:1.65}
.contact-copy h2{font-weight:700;line-height:1.25;letter-spacing:-.035em}
html[dir="rtl"] .contact-copy h2{line-height:1.45;letter-spacing:-.025em}
.contact-copy p{font-size:1rem;line-height:1.95}
html[dir="ltr"] .contact-copy p{line-height:1.72}
.contact-form label{font-size:.88rem;font-weight:600}
.site-footer strong,.footer-grid h3{font-family:var(--font-fa-heading);font-weight:700}
html[dir="ltr"] .site-footer strong,html[dir="ltr"] .footer-grid h3{font-family:var(--font-en-heading)}
.site-footer{font-size:.92rem;line-height:1.75}
.footer-bottom{font-family:var(--font-en-body);font-variant-numeric:tabular-nums}

@media(max-width:767px){
  html{font-size:15px}
  html[dir="rtl"] .hero h1{font-size:clamp(2.25rem,11vw,3.3rem)}
  html[dir="ltr"] .hero h1{font-size:clamp(2.4rem,11vw,3.6rem)}
  .hero p,.lead-copy{font-size:1rem}
  .section-body h2{font-size:1.65rem}
  .nav-link{font-size:1rem}
}

/* Refined skill level visualization — visual scale only, no percentage labels */
.skill-grid{row-gap:1.9rem!important}
.skill-row{padding:.15rem 0}
.skill-label{font-weight:600;font-size:.98rem;line-height:1.7;color:#34383d;margin-bottom:.72rem}
.skill-track{position:relative;width:100%;height:5px;overflow:hidden;border-radius:999px;background:color-mix(in srgb,var(--accent) 9%,#e9e3da);box-shadow:inset 0 1px 1px rgba(42,36,30,.05)}
.skill-fill{display:block;width:0;height:100%;border-radius:inherit;background:color-mix(in srgb,var(--accent) 88%,#32302e);transition:width 1.15s cubic-bezier(.22,.72,.22,1);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 12%,transparent)}
@media(max-width:767px){.skill-grid{row-gap:1.5rem!important}.skill-label{font-size:.94rem;margin-bottom:.6rem}.skill-track{height:4px}}
\n\n/* Horizontal overflow hardening — keeps the viewport fixed on RTL/LTR and mobile. */
html,body{width:100%;max-width:100%;overflow-x:clip}
body{position:relative}
main,.hero,.sections-wrap,.contact-section,.site-footer{max-width:100%;overflow-wrap:anywhere}
.container,.container-fluid,.row,.section-body,.contact-shell,.contact-copy,.contact-form,.footer-grid,.navbar-collapse{min-width:0}
img,svg,video,canvas,iframe{max-width:100%;height:auto}
.section-body,.timeline-item>div,.soft-card,.project-card,.contact-form,.footer-grid>div{min-width:0}
.contact-details a,.site-footer a,.project-card a{overflow-wrap:anywhere;word-break:break-word}
.socials{flex-wrap:wrap;row-gap:.55rem}
.navbar-brand{max-width:min(56vw,360px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@supports not (overflow:clip){html,body{overflow-x:hidden}}
@media(max-width:767px){
  .hero h1{overflow-wrap:anywhere}
  .contact-shell,.footer-grid{width:100%}
  .resume-section{max-width:100%}
}

/* =========================================================
   Public-site Glass UI refinement
   Visual-only layer: no content/data/structure changes.
   ========================================================= */
:root{
  --glass-bg:rgba(255,255,255,.56);
  --glass-bg-strong:rgba(255,255,255,.70);
  --glass-border:rgba(255,255,255,.72);
  --glass-border-dark:rgba(67,54,43,.08);
  --glass-shadow:0 24px 70px rgba(62,48,36,.075);
  --glass-shadow-hover:0 28px 80px rgba(62,48,36,.12);
  --glass-blur:18px;
}

body{
  min-height:100vh;
  background:
    radial-gradient(circle at 8% 10%,color-mix(in srgb,var(--accent) 9%,transparent) 0 13rem,transparent 25rem),
    radial-gradient(circle at 92% 18%,color-mix(in srgb,var(--secondary) 55%,transparent) 0 15rem,transparent 30rem),
    linear-gradient(145deg,color-mix(in srgb,var(--body-bg) 94%,white),color-mix(in srgb,var(--secondary) 38%,white));
  background-attachment:fixed;
}
body:before,body:after{
  content:"";
  position:fixed;
  z-index:-2;
  border-radius:999px;
  pointer-events:none;
  filter:blur(2px);
  opacity:.6;
}
body:before{
  width:22rem;height:22rem;
  inset:auto auto 7% -8rem;
  background:radial-gradient(circle,color-mix(in srgb,var(--accent) 14%,white),transparent 68%);
}
body:after{
  width:26rem;height:26rem;
  inset:12% -10rem auto auto;
  background:radial-gradient(circle,color-mix(in srgb,var(--secondary) 72%,white),transparent 70%);
}

.site-header{
  margin:.65rem auto 0;
  width:min(calc(100% - 1.5rem),1320px);
  border:1px solid var(--glass-border);
  border-bottom-color:rgba(73,58,45,.08);
  border-radius:1.15rem;
  background:color-mix(in srgb,var(--glass-bg-strong) 92%,var(--body-bg));
  box-shadow:0 10px 36px rgba(58,45,34,.045);
  -webkit-backdrop-filter:blur(var(--glass-blur)) saturate(125%);
  backdrop-filter:blur(var(--glass-blur)) saturate(125%);
  top:.65rem;
}
.site-header .navbar{padding:.55rem .8rem}
.nav-link{border-radius:999px;padding-inline:.85rem!important;transition:background .25s ease,color .25s ease,transform .25s ease}
.nav-link:hover{background:rgba(255,255,255,.48);transform:translateY(-1px)}
.nav-link.active{background:color-mix(in srgb,var(--accent) 9%,rgba(255,255,255,.58))}
.nav-link.active:after{bottom:-.55rem;height:2px;border-radius:999px}
.language-switch{background:rgba(255,255,255,.5);border-color:rgba(255,255,255,.78);box-shadow:inset 0 0 0 1px rgba(70,55,42,.035)}

.hero{
  padding:5.25rem 0 3rem;
  background:transparent;
}
.hero .row{
  position:relative;
  padding:clamp(1.15rem,2.6vw,2.25rem);
  border-radius:2rem;
  border:1px solid var(--glass-border);
  background:
    linear-gradient(135deg,rgba(255,255,255,.72),rgba(255,255,255,.42)),
    color-mix(in srgb,var(--secondary) 14%,transparent);
  box-shadow:var(--glass-shadow);
  -webkit-backdrop-filter:blur(calc(var(--glass-blur) + 2px)) saturate(118%);
  backdrop-filter:blur(calc(var(--glass-blur) + 2px)) saturate(118%);
  overflow:hidden;
}
.hero .row:before{
  content:"";
  position:absolute;
  width:18rem;height:18rem;
  border-radius:50%;
  inset:-7rem auto auto -5rem;
  background:radial-gradient(circle,color-mix(in srgb,var(--accent) 13%,transparent),transparent 70%);
  pointer-events:none;
}
.hero-copy{position:relative;z-index:1}
.hero-media{
  position:relative;
  border-radius:1.65rem;
  border:1px solid rgba(255,255,255,.8);
  background:rgba(255,255,255,.32);
  box-shadow:0 18px 44px rgba(45,37,31,.10),inset 0 1px rgba(255,255,255,.8);
}
.hero-media:after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  border-radius:inherit;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.28);
}
.hero-media img{border-radius:inherit}

.sections-wrap{padding-top:.25rem;padding-bottom:2rem}
.resume-section{
  border:1px solid var(--glass-border);
  outline:1px solid var(--glass-border-dark);
  outline-offset:-1px;
  border-radius:1.55rem;
  background:var(--glass-bg)!important;
  box-shadow:0 12px 40px rgba(52,42,33,.045);
  -webkit-backdrop-filter:blur(14px) saturate(115%);
  backdrop-filter:blur(14px) saturate(115%);
  padding:clamp(1.35rem,3.1vw,2.8rem);
  transition:transform .32s ease,box-shadow .32s ease,border-color .32s ease;
}
.resume-section.tone-b{
  background:color-mix(in srgb,var(--secondary) 22%,rgba(255,255,255,.62))!important;
}
.resume-section:hover{
  transform:translateY(-2px);
  box-shadow:0 20px 55px rgba(52,42,33,.07);
  border-color:rgba(255,255,255,.88);
}
.section-index:after{box-shadow:0 0 16px color-mix(in srgb,var(--accent) 26%,transparent)}

.tag{
  background:rgba(255,255,255,.50);
  border-color:rgba(255,255,255,.78);
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 7%,transparent);
  -webkit-backdrop-filter:blur(8px);
  backdrop-filter:blur(8px);
}
.soft-card,.project-card{
  background:rgba(255,255,255,.50);
  border-color:rgba(255,255,255,.76);
  box-shadow:inset 0 1px rgba(255,255,255,.52),0 12px 32px rgba(51,41,32,.035);
  -webkit-backdrop-filter:blur(10px) saturate(110%);
  backdrop-filter:blur(10px) saturate(110%);
}
.soft-card:hover,.project-card:hover{
  border-color:rgba(255,255,255,.92);
  box-shadow:var(--glass-shadow-hover);
}
.project-card img{border-bottom:1px solid rgba(255,255,255,.54)}
.sport-card{
  border:1px solid rgba(255,255,255,.78);
  box-shadow:0 16px 44px rgba(42,34,28,.08);
}
.sport-card:after{
  content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.2);
  pointer-events:none;
}
.skill-track{
  background:color-mix(in srgb,var(--accent) 7%,rgba(255,255,255,.72));
  box-shadow:inset 0 1px 2px rgba(44,36,30,.07),0 1px rgba(255,255,255,.8);
}
.skill-fill{box-shadow:0 0 14px color-mix(in srgb,var(--accent) 22%,transparent)}

.contact-section{
  margin:1.5rem auto 0;
  width:min(calc(100% - 1.5rem),1320px);
  border:1px solid rgba(255,255,255,.7);
  border-radius:2rem 2rem 0 0;
  background:
    linear-gradient(135deg,rgba(255,255,255,.48),rgba(255,255,255,.24)),
    color-mix(in srgb,var(--contact-bg) 82%,transparent);
  box-shadow:0 -4px 44px rgba(64,49,37,.045);
  -webkit-backdrop-filter:blur(18px) saturate(115%);
  backdrop-filter:blur(18px) saturate(115%);
  overflow:hidden;
}
.contact-section:before{
  background:
    radial-gradient(circle at 12% 16%,rgba(255,255,255,.54),transparent 34%),
    radial-gradient(circle at 88% 72%,color-mix(in srgb,var(--accent) 9%,transparent),transparent 28%);
}
.contact-form{
  background:rgba(255,255,255,.52);
  border:1px solid rgba(255,255,255,.78);
  box-shadow:0 18px 50px rgba(54,42,31,.065),inset 0 1px rgba(255,255,255,.62);
  -webkit-backdrop-filter:blur(14px);
  backdrop-filter:blur(14px);
}
.contact-form .form-control{
  background:rgba(255,255,255,.58);
  border-color:rgba(255,255,255,.84);
  box-shadow:inset 0 0 0 1px rgba(78,60,44,.055);
}
.contact-form .form-control:focus{background:rgba(255,255,255,.88)}

.btn{
  transition:transform .22s ease,box-shadow .22s ease,background-color .22s ease,border-color .22s ease;
}
.btn-dark{box-shadow:0 8px 22px rgba(26,25,23,.10)}
.btn-outline-dark{background:rgba(255,255,255,.34);border-color:rgba(32,31,29,.38);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.btn:hover{box-shadow:0 10px 26px rgba(42,34,28,.10)}

.site-footer{
  margin:0 auto;
  width:min(calc(100% - 1.5rem),1320px);
  border:1px solid rgba(255,255,255,.08);
  border-top:0;
  border-radius:0 0 2rem 2rem;
  background:linear-gradient(145deg,rgba(35,32,30,.96),rgba(25,24,23,.98));
  box-shadow:0 22px 60px rgba(36,29,24,.12);
}
.site-footer .socials a{
  display:inline-flex;
  align-items:center;
  padding:.34rem .62rem;
  border:1px solid rgba(255,255,255,.10);
  border-radius:999px;
  background:rgba(255,255,255,.045);
  transition:.22s ease;
}
.site-footer .socials a:hover{background:rgba(255,255,255,.09);border-color:rgba(255,255,255,.17);transform:translateY(-1px)}

@media(max-width:991px){
  .site-header{width:calc(100% - 1rem);top:.4rem;margin-top:.4rem}
  .navbar-collapse{margin-top:.55rem;padding:.7rem;border-radius:1rem;background:rgba(255,255,255,.42);border:1px solid rgba(255,255,255,.62);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
  .nav-link.active:after{display:none}
  .hero{padding-top:3.4rem}
  .contact-section,.site-footer{width:calc(100% - 1rem)}
}
@media(max-width:767px){
  body{background-attachment:scroll}
  .hero .row{border-radius:1.45rem;padding:1rem}
  .hero-media{border-radius:1.25rem}
  .resume-section{border-radius:1.25rem;padding:1.25rem}
  .resume-section:hover{transform:none}
  .contact-section{border-radius:1.5rem 1.5rem 0 0}
  .site-footer{border-radius:0 0 1.5rem 1.5rem}
}
@media(prefers-reduced-motion:reduce){
  .resume-section,.soft-card,.project-card,.nav-link,.site-footer .socials a{transition:none!important}
}


/* Header brand / responsive logo */
.navbar-brand.brand-lockup{display:inline-flex;align-items:center;gap:.7rem;max-width:min(58vw,380px);padding-block:.15rem;overflow:visible;text-decoration:none}
.brand-logo-frame{height:var(--header-logo-height,40px);width:auto;min-width:var(--header-logo-height,40px);display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;border-radius:10px;overflow:hidden}
.brand-logo{display:block;height:100%;width:auto;max-width:156px;object-fit:contain;object-position:center;background:transparent}
.brand-name{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700;color:#171a1f;font-size:1rem;line-height:1.2}
.site-header .navbar{min-height:58px}
@media (max-width:991px){
  .brand-logo-frame{height:min(var(--header-logo-height,40px),36px);min-width:min(var(--header-logo-height,40px),36px)}
  .brand-logo{max-width:132px}
  .brand-name{font-size:.94rem;max-width:160px}
  .site-header .navbar{min-height:52px}
}
@media (max-width:575px){
  .navbar-brand.brand-lockup{max-width:52vw;gap:.5rem}
  .brand-logo-frame{height:34px;min-width:34px}
  .brand-logo{max-width:112px}
  .brand-name{max-width:105px;font-size:.88rem}
}

}


/* 2026-10 Portfolio palette refinement inspired by the supplied UI Portfolio reference.
   Skill bars intentionally keep their existing geometry and behavior. */
:root{
  --portfolio-deep-teal:#062F33;
  --portfolio-emerald:#0F8F73;
  --portfolio-mint:#DCEBE8;
  --portfolio-offwhite:#F7F8F7;
  --portfolio-ink:#183033;
}
body{background:var(--body-bg,#F7F8F7);color:var(--portfolio-ink)}
.site-header{background:rgba(247,248,247,.90);border-bottom-color:rgba(6,47,51,.08)}
.nav-link{color:#4E6061}.nav-link.active{color:var(--portfolio-deep-teal)}
.hero{background:linear-gradient(135deg,var(--body-bg,#F7F8F7),color-mix(in srgb,var(--secondary,#EAF3F0) 82%,white))}
.btn-dark{background:var(--portfolio-deep-teal);border-color:var(--portfolio-deep-teal)}
.btn-dark:hover,.btn-dark:focus{background:color-mix(in srgb,var(--portfolio-deep-teal) 84%,var(--portfolio-emerald));border-color:color-mix(in srgb,var(--portfolio-deep-teal) 84%,var(--portfolio-emerald))}
.contact-section{background:var(--contact-bg,#DCEBE8)}
.site-footer{background:var(--footer-bg,#062F33);color:#F5FAF8}
.site-footer a{color:#F5FAF8}.site-footer p{color:#B8CECA}.footer-bottom{color:#8FB0AA}

/* Dynamic per-section design overrides */
.resume-section{
  background:var(--section-bg,var(--glass-bg))!important;
  color:var(--section-text,inherit);
  border-color:var(--section-border,var(--glass-border));
  border-radius:var(--section-radius,1.55rem);
  padding-block:var(--section-py,clamp(1.35rem,3.1vw,2.8rem));
  font-family:var(--section-font,inherit);
  font-size:var(--section-body-size,inherit);
  font-weight:var(--section-weight,inherit);
  line-height:var(--section-line-height,inherit);
}
.resume-section.tone-b{background:var(--section-bg,color-mix(in srgb,var(--secondary) 22%,rgba(255,255,255,.62)))!important}
.resume-section .section-body h2{color:var(--section-title,inherit);font-size:var(--section-title-size,clamp(1.65rem,3vw,2.15rem));font-family:var(--section-font,inherit)}
.resume-section :is(.lead-copy,.timeline-item p,.soft-card p,.project-card p,.timeline-item .date){color:color-mix(in srgb,var(--section-text,currentColor) 76%,transparent)}
.resume-section.has-custom-style .section-body{font-family:var(--section-font,inherit);color:var(--section-text,inherit);font-weight:var(--section-weight,inherit);line-height:var(--section-line-height,inherit)}
.resume-section.has-custom-style .section-body :is(p,li,.tag,.date,.skill-label,small){font-family:var(--section-font,inherit);font-size:var(--section-body-size,inherit);line-height:var(--section-line-height,inherit)}
.resume-section.has-custom-style .section-body :is(h3,.soft-card h3,.project-card h3){font-family:var(--section-font,inherit);color:var(--section-text,inherit)}
.resume-section.has-custom-style .section-body h2{color:var(--section-title,inherit)}
.resume-section.has-custom-style .section-index:after,.resume-section.has-custom-style .skill-fill,.resume-section.has-custom-style .timeline-item .dot{background:var(--accent)}

/* Dynamic Contact + Footer typography and sizing (admin-controlled per page) */
.contact-section{
  padding-block:var(--contact-section-py,80px);
  font-family:var(--contact-font,inherit);
}
.contact-shell{
  grid-template-columns:minmax(0,var(--contact-copy-col,.8fr)) minmax(0,var(--contact-form-col,1.2fr));
  gap:var(--contact-gap,64px);
  min-height:var(--contact-min-height,0px);
  padding:var(--contact-shell-padding,32px);
  border-radius:var(--contact-radius,22px);
  align-items:start;
}
.contact-copy{font-family:var(--contact-font,inherit)}
.contact-copy .eyebrow{font-family:var(--contact-font,inherit)}
.contact-copy h2{
  font-family:var(--contact-font,inherit);
  font-size:var(--contact-title-size,48px);
}
.contact-copy p{
  font-family:var(--contact-font,inherit);
  font-size:var(--contact-text-size,16px);
}
.contact-details,.contact-details a,.contact-details span{
  font-family:var(--contact-font,inherit);
  font-size:var(--contact-detail-size,15px);
}
.contact-form-column{min-width:0}
.contact-form{
  font-family:var(--contact-font,inherit);
  padding:var(--contact-form-padding,22px);
  border-radius:var(--contact-form-radius,21px);
}
.contact-form label{
  font-family:var(--contact-font,inherit);
  font-size:var(--contact-label-size,14px);
}
.contact-form .form-control{
  font-family:var(--contact-font,inherit);
  font-size:var(--contact-input-size,15px);
  min-height:var(--contact-input-height,48px);
}
.contact-form textarea.form-control{
  min-height:var(--contact-textarea-height,150px);
  height:var(--contact-textarea-height,150px);
  resize:vertical;
}
.contact-form .btn{font-family:var(--contact-font,inherit);font-size:var(--contact-button-size,15px)}
.contact-stretch .contact-shell{align-items:stretch}
.contact-stretch .contact-copy,.contact-stretch .contact-form-column{height:100%}
.contact-stretch .contact-form-column{display:flex;flex-direction:column}
.contact-stretch .contact-form-column>.alert{flex:0 0 auto}
.contact-stretch .contact-form{flex:1 1 auto;height:100%}

.site-footer{
  font-family:var(--footer-font,inherit);
  padding-block:var(--footer-padding-y,48px) calc(var(--footer-padding-y,48px) * .4);
  border-radius:0 0 var(--footer-radius,32px) var(--footer-radius,32px);
}
.footer-grid{gap:var(--footer-gap,32px)}
.site-footer strong{font-family:var(--footer-font,inherit);font-size:var(--footer-brand-size,18px)}
.site-footer p{font-family:var(--footer-font,inherit);font-size:var(--footer-text-size,15px)}
.footer-grid h3{font-family:var(--footer-font,inherit);font-size:var(--footer-heading-size,15px)}
.site-footer a,.socials a{font-family:var(--footer-font,inherit);font-size:var(--footer-link-size,14px)}
.footer-bottom{font-family:var(--footer-font,inherit);font-size:var(--footer-copyright-size,13px)}

@media(max-width:991px){
  .contact-shell{grid-template-columns:1fr;gap:min(var(--contact-gap,64px),32px)}
  .contact-stretch .contact-copy,.contact-stretch .contact-form-column{height:auto}
  .contact-stretch .contact-form{height:auto}
}
@media(max-width:767px){
  .contact-section{padding-block:max(32px,calc(var(--contact-section-py,80px) * .7))}
  .contact-shell{padding:min(var(--contact-shell-padding,32px),22px)}
  .contact-copy h2{font-size:clamp(28px,8vw,var(--contact-title-size,48px))}
  .contact-form{padding:min(var(--contact-form-padding,22px),22px)}
  .site-footer{padding-block:max(28px,calc(var(--footer-padding-y,48px) * .72)) 18px}
}

/* Full admin-controlled color system for Contact + Footer */
.contact-copy .eyebrow{color:var(--contact-eyebrow-color,#0F8F73)}
.contact-copy h2{color:var(--contact-title-color,#2B2A28)}
.contact-copy p{color:var(--contact-text-color,#5F5A54)}
.contact-details a,.contact-details span{color:var(--contact-detail-color,#37332F)}
.contact-form{
  background:var(--contact-form-bg,#FFFFFF);
  border-color:var(--contact-form-border,#E1D8CF);
}
.contact-form label{color:var(--contact-label-color,#37332F)}
.contact-form .form-control{
  color:var(--contact-input-text,#2B2A28);
  background:var(--contact-input-bg,#FFFFFF);
  border-color:var(--contact-input-border,#D8CEC4);
}
.contact-form .form-control::placeholder{color:var(--contact-placeholder,#8A8178);opacity:1}
.contact-form .form-control:focus{
  color:var(--contact-input-text,#2B2A28);
  background:var(--contact-input-bg,#FFFFFF);
  border-color:color-mix(in srgb,var(--accent) 58%,var(--contact-input-border,#D8CEC4));
}
.contact-form .btn-dark{
  background:var(--contact-button-bg,#171A1F);
  border-color:var(--contact-button-bg,#171A1F);
  color:var(--contact-button-text,#FFFFFF);
}
.contact-form .btn-dark:hover,.contact-form .btn-dark:focus{
  color:var(--contact-button-text,#FFFFFF);
  background:color-mix(in srgb,var(--contact-button-bg,#171A1F) 88%,var(--accent));
  border-color:color-mix(in srgb,var(--contact-button-bg,#171A1F) 88%,var(--accent));
}
.site-footer strong{color:var(--footer-brand-color,#F2EEE9)}
.site-footer p{color:var(--footer-text-color,#B8B0A8)}
.footer-grid h3{color:var(--footer-heading-color,#F2EEE9)}
.site-footer a,.socials a{color:var(--footer-link-color,#F2EEE9)}
.site-footer a:hover,.socials a:hover{color:var(--footer-link-hover-color,#FFFFFF)}
.footer-bottom{color:var(--footer-copyright-color,#9C948D)}
.site-footer .socials a{
  background:var(--footer-social-bg,#302D2B);
  border-color:var(--footer-social-border,#4A4541);
}
.site-footer .socials a:hover{
  background:color-mix(in srgb,var(--footer-social-bg,#302D2B) 82%,white);
  border-color:color-mix(in srgb,var(--footer-social-border,#4A4541) 76%,white);
}

/* Page-specific Download Resume button (admin controlled) */
.resume-download-btn{
  background:var(--resume-btn-bg,#171A1F)!important;
  border-color:var(--resume-btn-bg,#171A1F)!important;
  color:var(--resume-btn-text,#FFFFFF)!important;
  box-shadow:0 9px 24px color-mix(in srgb,var(--resume-btn-bg,#171A1F) 22%,transparent);
}
.resume-download-btn:hover,.resume-download-btn:focus{
  background:color-mix(in srgb,var(--resume-btn-bg,#171A1F) 84%,white 16%)!important;
  border-color:color-mix(in srgb,var(--resume-btn-bg,#171A1F) 84%,white 16%)!important;
  color:var(--resume-btn-text,#FFFFFF)!important;
}

/* =========================================================
   Scroll-triggered section motion — scroll-first deterministic system
   ========================================================= */
.section-motion{
  --fx-duration:720ms;
  --fx-delay:0ms;
  --fx-distance:30px;
  --fx-ease:cubic-bezier(.22,.72,.22,1);
  opacity:1;
  transform:none;
  filter:none;
  clip-path:none;
}

/* Starting states are hidden immediately, without animation. */
html.js-motion .section-motion.motion-pending.fx-fade-up{opacity:0;transform:translate3d(0,var(--fx-distance),0)}
html.js-motion .section-motion.motion-pending.fx-slide-inline{opacity:0;transform:translate3d(var(--fx-distance),0,0)}
html.js-motion .section-motion.motion-pending.fx-slide-opposite{opacity:0;transform:translate3d(calc(var(--fx-distance) * -1),0,0)}
html[dir="ltr"].js-motion .section-motion.motion-pending.fx-slide-inline{transform:translate3d(calc(var(--fx-distance) * -1),0,0)}
html[dir="ltr"].js-motion .section-motion.motion-pending.fx-slide-opposite{transform:translate3d(var(--fx-distance),0,0)}
html.js-motion .section-motion.motion-pending.fx-zoom-soft{opacity:0;transform:scale(.955) translate3d(0,calc(var(--fx-distance) * .18),0)}
html.js-motion .section-motion.motion-pending.fx-blur-up{opacity:0;transform:translate3d(0,calc(var(--fx-distance) * .72),0);filter:blur(10px)}
html.js-motion .section-motion.motion-pending.fx-lift-soft{opacity:0;transform:translate3d(0,calc(var(--fx-distance) * .62),0) scale(.978)}
html.js-motion .section-motion.motion-pending.fx-wipe-soft{opacity:.01;transform:translate3d(0,calc(var(--fx-distance) * .28),0);clip-path:inset(0 0 28% 0 round 1.55rem)}

/* Transition is enabled only after the browser has painted the hidden state. */
html.js-motion.motion-ready .section-motion:not(.fx-none){
  transition-property:opacity,transform,filter,clip-path;
  transition-duration:var(--fx-duration);
  transition-timing-function:var(--fx-ease);
  transition-delay:var(--fx-delay);
}
html.js-motion.motion-ready .section-motion.motion-inview{
  opacity:1!important;
  transform:none!important;
  filter:none!important;
  clip-path:inset(0 round 1.55rem)!important;
}

/* Child stagger: child transition remains active in BOTH pending and in-view states. */
.section-motion .fx-child{opacity:1;transform:none;filter:none}
html.js-motion .section-motion.motion-pending .fx-child{opacity:0;transform:translate3d(0,16px,0)}
html.js-motion .section-motion.motion-pending.fx-slide-inline .fx-child{transform:translate3d(16px,0,0)}
html.js-motion .section-motion.motion-pending.fx-slide-opposite .fx-child{transform:translate3d(-16px,0,0)}
html[dir="ltr"].js-motion .section-motion.motion-pending.fx-slide-inline .fx-child{transform:translate3d(-16px,0,0)}
html[dir="ltr"].js-motion .section-motion.motion-pending.fx-slide-opposite .fx-child{transform:translate3d(16px,0,0)}
html.js-motion .section-motion.motion-pending.fx-zoom-soft .fx-child{transform:scale(.965);filter:blur(2px)}
html.js-motion .section-motion.motion-pending.fx-blur-up .fx-child{filter:blur(5px)}
html.js-motion.motion-ready .section-motion .fx-child{
  transition-property:opacity,transform,filter;
  transition-duration:520ms,620ms,620ms;
  transition-timing-function:var(--fx-ease);
  transition-delay:calc(var(--fx-delay) + 90ms + (var(--fx-i,0) * 60ms));
}
html.js-motion.motion-ready .section-motion.motion-inview .fx-child{opacity:1;transform:none;filter:none}

.section-motion.fx-none,.section-motion.fx-none .fx-child{
  opacity:1!important;transform:none!important;filter:none!important;clip-path:none!important;transition:none!important
}

@media(prefers-reduced-motion:reduce){
  html.js-motion .section-motion.motion-pending:not(.fx-none){
    opacity:0!important;transform:translate3d(0,10px,0)!important;filter:none!important;clip-path:none!important;
  }
  html.js-motion.motion-ready .section-motion:not(.fx-none){
    transition-duration:220ms!important;transition-delay:0ms!important;
  }
  html.js-motion.motion-ready .section-motion.motion-inview:not(.fx-none){
    opacity:1!important;transform:none!important;filter:none!important;clip-path:none!important;
  }
  html.js-motion.motion-ready .section-motion .fx-child{transition:none!important;opacity:1!important;transform:none!important;filter:none!important}
}

/* =========================================================
   Full-page dynamic background system
   Shared or per-page image, with controllable glass treatment.
   ========================================================= */
.has-site-background{
  position:relative;
  isolation:isolate;
  min-height:100vh;
  background:var(--site-bg-base,#F7F8F7)!important;
}
.has-site-background > .site-background-layer,
.has-site-background > .site-background-overlay{
  position:fixed;
  inset:0;
  width:100%;
  height:100%;
  pointer-events:none;
}
.has-site-background > .site-background-layer{
  z-index:0;
  background-color:var(--site-bg-base,#F7F8F7);
  background-position:var(--site-bg-x,50%) var(--site-bg-y,50%);
  background-size:var(--site-bg-size,cover);
  background-repeat:var(--site-bg-repeat,no-repeat);
  opacity:var(--site-bg-image-opacity,1);
  filter:blur(var(--site-bg-blur,0px)) brightness(var(--site-bg-brightness,100%)) saturate(var(--site-bg-saturation,100%));
  transform:scale(var(--site-bg-scale,1.04));
  transform-origin:center center;
  will-change:transform,filter;
}
.has-site-background > .site-background-overlay{
  z-index:0;
  background:var(--site-bg-overlay,#082F33);
  opacity:var(--site-bg-overlay-opacity,.12);
}
.has-site-background.bg-attachment-scroll > .site-background-layer,
.has-site-background.bg-attachment-scroll > .site-background-overlay{
  position:absolute;
  min-height:100%;
  height:100%;
}
.has-site-background > header,
.has-site-background > main,
.has-site-background > footer{
  position:relative;
  z-index:1;
}
.has-site-background .hero{background:transparent!important}

/* Glass is intentionally applied after all older public styles so the selected
   full-page image remains visible through the entire content stack. */
.has-site-background.glass-site-sections .hero .row,
.has-site-background.glass-site-sections .contact-shell{
  border-color:rgba(255,255,255,var(--site-glass-border-opacity,.52))!important;
  -webkit-backdrop-filter:blur(var(--site-glass-blur,18px)) saturate(120%);
  backdrop-filter:blur(var(--site-glass-blur,18px)) saturate(120%);
  box-shadow:0 18px 50px rgba(6,47,51,var(--site-glass-shadow-opacity,.08))!important;
}
.has-site-background.glass-site-sections .hero .row{
  background:color-mix(in srgb,var(--hero-bg,var(--body-bg,#FFFFFF)) var(--site-glass-opacity-pct,68%),transparent)!important;
}
.has-site-background.glass-site-sections .contact-shell{
  background:color-mix(in srgb,var(--contact-bg,#FFFFFF) var(--site-glass-opacity-pct,68%),transparent)!important;
}
.has-site-background.glass-site-sections .resume-section{
  background:color-mix(in srgb,var(--section-bg,#FFFFFF) var(--site-glass-opacity-pct,68%),transparent)!important;
  border-color:rgba(255,255,255,var(--site-glass-border-opacity,.52))!important;
  -webkit-backdrop-filter:blur(var(--site-glass-blur,18px)) saturate(120%);
  backdrop-filter:blur(var(--site-glass-blur,18px)) saturate(120%);
  box-shadow:0 18px 50px rgba(6,47,51,var(--site-glass-shadow-opacity,.08))!important;
}
.has-site-background.glass-site-sections .resume-section.tone-a,
.has-site-background.glass-site-sections .resume-section.tone-b{
  background:color-mix(in srgb,var(--section-bg,#FFFFFF) var(--site-glass-opacity-pct,68%),transparent)!important;
}
.has-site-background.glass-site-sections .contact-section{
  background:transparent!important;
  border-color:transparent!important;
}
.has-site-background.glass-site-sections .contact-section:before{display:none!important}
.has-site-background.glass-site-sections .contact-form{
  background:rgba(255,255,255,calc(var(--site-glass-opacity,.68) + .12))!important;
  -webkit-backdrop-filter:blur(var(--site-glass-blur,18px));
  backdrop-filter:blur(var(--site-glass-blur,18px));
}
.has-site-background.glass-site-sections .soft-card,
.has-site-background.glass-site-sections .project-card,
.has-site-background.glass-site-sections .tag{
  background:rgba(var(--site-glass-tint-rgb,255,255,255),var(--site-glass-opacity,.68))!important;
  -webkit-backdrop-filter:blur(var(--site-glass-blur,18px));
  backdrop-filter:blur(var(--site-glass-blur,18px));
}
@media(prefers-reduced-motion:reduce){
  .has-site-background > .site-background-layer{will-change:auto}
}


/* Admin-controlled typography and colors for the page title / intro (Hero). */
.hero.hero-custom-style{
  padding-block:var(--hero-padding-y,5.25rem) 3rem;
}
.hero.hero-custom-style .row{
  background:var(--hero-bg,#FFFFFF);
  border-color:var(--hero-border-color,var(--glass-border));
  border-radius:var(--hero-radius,2rem);
}
.hero.hero-custom-style .hero-copy,
.hero.hero-custom-style .hero-copy :is(.eyebrow,h1,h2,p){
  font-family:var(--hero-font,inherit);
}
.hero.hero-custom-style .eyebrow{color:var(--hero-accent-color,var(--accent));}
.hero.hero-custom-style h1{
  color:var(--hero-title-color,inherit);
  font-size:var(--hero-title-size,clamp(2.4rem,5vw,4.8rem));
}
.hero.hero-custom-style h2{
  color:var(--hero-role-color,#343a40);
  font-size:var(--hero-role-size,clamp(1.15rem,2vw,1.6rem));
}
.hero.hero-custom-style p{
  color:var(--hero-text-color,#626872);
  font-size:var(--hero-body-size,1.05rem);
  font-weight:var(--hero-weight,inherit);
  line-height:var(--hero-line-height,2);
}
@media(max-width:767px){
  .hero.hero-custom-style{padding-top:min(var(--hero-padding-y,2.5rem),4rem)}
}


/* Final sticky-header safeguard: the full-page background layer previously
   changed the direct header child to position:relative, which disabled Bootstrap
   sticky-top. Keep the glass header sticky above every background/section layer. */
.site-header.sticky-top{
  position:sticky!important;
  top:.65rem;
  z-index:1030!important;
}
.has-site-background > header.site-header.sticky-top{
  position:sticky!important;
  top:.65rem;
  z-index:1030!important;
}
@media(max-width:991px){
  .site-header.sticky-top,
  .has-site-background > header.site-header.sticky-top{top:.4rem}
}
