/* Clearer plan comparison, project detail and footer. */
.work-story-preview{font-size:12px;line-height:1.75;color:var(--muted);margin-top:16px;max-width:330px;min-height:43px}
.story-link{display:inline-flex;align-items:center;justify-content:space-between;gap:22px;min-height:44px;background:transparent;border-bottom:1px solid #b6c1d1;padding:12px 0 8px;font-size:11px;margin-top:10px}
.story-link svg{width:16px;height:16px}.story-link:hover{color:var(--blue)}
.project-copy{padding-top:50px}.project-copy h2{font-size:32px;line-height:1.2}
.project-story{margin-top:27px}.project-story section{border-top:1px solid var(--line);padding:16px 0 4px}
.project-story h3{display:flex;gap:14px;align-items:center;font-size:13px;font-weight:500;margin:0 0 10px}
.project-story h3>span{font-size:10px;color:var(--blue)}
.project-story p{font-size:12px;line-height:1.8;color:var(--muted);margin:0 0 13px}
.project-copy>p.project-status{font-size:10px;line-height:1.7;margin-top:15px;padding-left:12px;border-left:2px solid #aeb8c8}
.project-copy>.button{margin-top:22px}
.plan-promise{font-size:16px;line-height:1.45;font-weight:500;letter-spacing:-.02em;min-height:47px;margin-top:16px}
.plan-description{font-size:12px;line-height:1.7;min-height:83px;margin-top:13px}
.plan-kicker{min-height:14px}
.price strong{font-size:56px}.billing{font-size:11px}
.pricing-explainer{display:flex;gap:14px;align-items:flex-start;margin-top:30px;padding:23px 26px;background:#f4f2ec;border:1px solid #ccd3df;border-radius:6px}
.pricing-explainer>.blue-dot{margin-top:7px}
.pricing-explainer p{font-size:13px;line-height:1.8;color:var(--muted)}
.pricing-explainer strong{font-weight:500;color:var(--ink)}
.footer-approach>.eyebrow{font-size:9px;color:var(--muted);margin-bottom:16px}
.footer-approach h3{font-size:22px;line-height:1.35;letter-spacing:-.03em;font-weight:500}
.footer-approach>p:not(.eyebrow){font-size:12px;color:var(--muted);line-height:1.8;margin-top:14px;max-width:260px}
.footer-approach>.text-link{font-size:11px;margin-top:20px;gap:17px}
.footer-approach>.text-link svg{width:16px;height:16px}
@media(max-width:1100px){.price strong{font-size:50px}.billing{font-size:10px}.plan-description{min-height:103px}}
@media(max-width:899px){.plan-promise{font-size:14px;min-height:61px}.plan-description{font-size:11px;min-height:114px}.price strong{font-size:43px}.price .currency{font-size:11px}.price .billing{font-size:9px}.price{gap:4px}.project-copy h2{font-size:28px}.project-layout>img{min-height:650px}.work-story-preview{font-size:11px;min-height:59px}.story-link{font-size:10px;gap:12px}.footer-approach h3{font-size:19px}.footer-approach>.eyebrow{font-size:8px}.footer-approach>p:not(.eyebrow){font-size:11px}}
@media(max-width:639px){.work-story-preview{font-size:12px;min-height:0;max-width:none;margin-top:13px}.story-link{font-size:11px;margin-top:8px;gap:20px}.project-copy{padding-top:27px}.project-copy h2{font-size:28px}.project-story{margin-top:24px}.project-story section{padding-top:15px}.project-story p{font-size:12px}.project-layout>img{min-height:0;height:285px}.project-copy>p.project-status{font-size:10px}.plan-promise{font-size:18px;min-height:0;margin-top:16px}.plan-description{font-size:13px;min-height:0;margin-top:12px}.price strong{font-size:64px}.price .currency{font-size:17px}.price .billing{font-size:12px}.price{gap:8px}.pricing-explainer{padding:20px 18px;gap:11px;margin-top:24px}.pricing-explainer p{font-size:11px}.footer-approach h3{font-size:19px}.footer-approach>.eyebrow{font-size:8px;line-height:1.8}.footer-approach>p:not(.eyebrow){font-size:11px}.footer-approach>.text-link{font-size:10px;gap:9px}}

/* Independent brand marks on portfolio cards and the project modal. */
.brand-mark{position:absolute;top:22px;left:22px;z-index:2;display:flex;align-items:center;justify-content:center;width:120px;height:32px;padding:0;background:transparent;border:0;border-radius:0;box-shadow:none;pointer-events:none}
.brand-mark img,.work-image .brand-mark img{width:100%;height:100%;object-fit:contain;object-position:center;transform:none!important}
.brand-mark:has(img[src*="burger-king"]){width:60px;height:66px}
.brand-mark:has(img[src*="d-perfect"]){height:auto;aspect-ratio:2138/736}
.project-visual .brand-mark:has(img[src*="d-perfect"]){width:144px}
.work-image .work-badge{top:auto;bottom:20px;left:20px;font-size:10px;padding:8px 10px;background:#fffaf1;color:var(--ink);line-height:1.4;letter-spacing:.06em}
.concept-disclosure{font-size:12px;line-height:1.6;color:var(--muted);margin-top:12px}
.project-visual{position:relative;min-width:0;min-height:650px;overflow:hidden;background:var(--ink)}
.project-visual>#project-image{width:100%;height:100%;position:absolute;inset:0;object-fit:cover;object-position:center 62%}
.project-visual .brand-mark{top:26px;left:26px}
.project-visual>figcaption{position:absolute;bottom:20px;left:20px;right:20px;background:#fffaf1;color:var(--ink);padding:12px 14px;font-size:12px;line-height:1.6;border-radius:5px}
.project-copy>p.project-status{font-size:12px;line-height:1.75}
.project-copy>.eyebrow{font-size:11px;line-height:1.6}
@media(max-width:899px){
 .work-image .brand-mark{top:18px;left:18px;width:100px;height:27px}
 .work-image .brand-mark:has(img[src*="burger-king"]){width:46px;height:51px}
 .work-image .work-badge{left:12px;bottom:58px;font-size:9px;padding:7px 8px;max-width:calc(100% - 24px)}
 .concept-disclosure{font-size:12px}
}
@media(max-width:639px){
 .work-image .brand-mark{top:24px;left:24px;width:120px;height:32px}
 .work-image .brand-mark:has(img[src*="burger-king"]){width:60px;height:66px}
 .work-image .work-badge{left:16px;bottom:18px;font-size:9px;padding:8px;max-width:calc(100% - 86px)}
 .project-visual{height:360px;min-height:0}
 .project-visual>figcaption{left:16px;right:16px;bottom:16px;font-size:11px;padding:10px 12px}
 .project-visual .brand-mark{top:22px;left:22px}
 .project-copy>p.project-status{font-size:12px}
}

/* Equal portrait frames preserve each complete product photograph. */
.work-image:hover>img{transform:none}
.work-image{aspect-ratio:3/4}
.work-image>img{object-fit:contain;object-position:center}
.project-visual{height:auto;min-height:0;aspect-ratio:auto;align-self:start;background:var(--cream)}
.project-visual>#project-image{position:static;display:block;height:auto;aspect-ratio:3/4;object-fit:contain;object-position:center}
.project-visual>figcaption{position:static;margin:0;border-radius:0;padding:14px 20px;border-bottom:1px solid var(--line)}

/* Review the full plan before the future Culqi checkout. */
.payment-review{margin:22px 0;border:1px solid var(--line);border-radius:10px;padding:24px;background:#f8f7f3}
.payment-review>.eyebrow{font-size:10px;margin:0 0 8px}
.payment-review h4{font-size:27px;letter-spacing:-.03em;margin:0 0 12px}
.payment-review>p:not(.eyebrow){font-size:13px;line-height:1.65}
.payment-details{margin:20px 0;font-size:12px;line-height:1.6}
.payment-details>div{display:grid;grid-template-columns:85px minmax(0,1fr);gap:12px;padding:8px 0;border-top:1px solid var(--line)}
.payment-details dt{color:var(--muted)}
.payment-details dd{margin:0}
.payment-total{border-top:1px solid var(--line);padding-top:20px;display:flex;justify-content:space-between;gap:16px;align-items:center}
.payment-total>span{font-size:14px;font-weight:500}
.payment-total small{display:block;font-size:11px;color:var(--muted);font-weight:400;margin-top:3px}
.payment-total strong{font-size:29px;letter-spacing:-.04em;white-space:nowrap}
.payment-review>.payment-period{font-size:12px;margin-top:10px;color:var(--muted)}
.payment-review>.payment-prerequisite{font-size:12px;margin-top:14px;padding-left:12px;border-left:2px solid var(--blue)}
.payment-review>.payment-confirm{display:flex;align-items:flex-start;gap:8px;font-size:12px;font-weight:400;margin:14px 0 0;cursor:pointer;line-height:1.5}
.payment-review>.payment-confirm input{width:16px;height:16px;min-height:0;flex:0 0 16px;margin:2px 0 0;padding:0;border-radius:4px;border:1px solid #c9cfdb}
.payment-review>.button{width:100%;justify-content:center;margin-top:22px}
.payment-review>.button:disabled{background:#e2e5ed;color:#4e586b;cursor:not-allowed;transform:none;box-shadow:none}
.payment-review>.payment-availability{font-size:12px;margin-top:12px;color:var(--muted)}
.brief-summary-details{margin:22px 0}
.brief-summary-details>summary{font-size:13px;cursor:pointer;padding:10px 0}
.brief-summary-details>textarea{margin-top:10px}
#brief-result-title:focus{outline:2px solid var(--blue);outline-offset:6px;border-radius:2px}
#brief-result-intro{font-size:13px;line-height:1.7;color:var(--muted);margin-top:10px}
@media(max-width:479px){.payment-review{padding:17px}.payment-total strong{font-size:25px}.payment-total>span{font-size:12px}.payment-details>div{grid-template-columns:70px minmax(0,1fr);gap:8px}.payment-review>.button{font-size:12px;padding:13px 10px}}

/* Light, GPU-cheap dynamism: scroll reveal, a moving service-line marquee and a drifting hero accent. */
.reveal{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .6s ease}
.reveal.is-visible{opacity:1;transform:none}
.benefit-grid .reveal:nth-child(2),.process-grid .reveal:nth-child(2),.work-grid .reveal:nth-child(2),.plans-grid .reveal:nth-child(2){transition-delay:.08s}
.benefit-grid .reveal:nth-child(3),.process-grid .reveal:nth-child(3),.work-grid .reveal:nth-child(3),.plans-grid .reveal:nth-child(3){transition-delay:.16s}
.process-grid .reveal:nth-child(4),.plans-grid .reveal:nth-child(4){transition-delay:.24s}

.button svg,.text-link svg,.story-link svg{transition:transform .25s ease}
.button:hover svg,.text-link:hover svg,.story-link:hover svg{transform:translateX(3px)}
.plan{transition:transform .3s ease,box-shadow .3s ease}
.plan:hover{transform:translateY(-6px);box-shadow:0 18px 40px -16px rgba(21,31,50,.2)}

/* How far hero products reach into the first section; that section's top padding is that reach plus 28px of air, so they can never cover its heading. */
:root{--hero-spill:80px}
@media(max-width:899px){:root{--hero-spill:56px}}
/* The strip closes the section: same space below its words as between its rule and the words. */
.section.introduction{padding-top:calc(var(--hero-spill) + 28px);padding-bottom:36px}
.service-line.marquee{overflow:hidden;justify-content:flex-start;padding-top:36px;font-size:clamp(13px,1.15vw,16px);font-weight:500;letter-spacing:.14em;-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.marquee-track{display:inline-flex;flex:none;white-space:nowrap;animation:marquee 34s linear infinite}
/* Trailing padding (not gap) keeps all 4 copies the same width, so shifting one copy (-25%) loops without a jump; 3 copies always cover the strip. */
.marquee-track span{padding-right:clamp(40px,4.5vw,72px)}
.service-line.marquee:hover .marquee-track{animation-play-state:paused}
@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-25%)}}

@keyframes shine{to{background-position:-200% center}}
@keyframes heroRiseTitle{from{opacity:0;transform:translateY(46px) scale(1.06)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes heroRise{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}

/* Impact hero: licensed product shot popping out of the screen in 3D, oversized type beside it. */
body{overflow-x:hidden}
/* clip (not hidden) blocks sideways scroll while still letting products spill above and below. */
.hero-impact{background:radial-gradient(ellipse 80% 60% at 30% 35%,rgba(0,0,0,0) 0%,rgba(0,0,0,.4) 100%),var(--ink);color:#fff;position:relative;overflow-x:clip;overflow-y:visible;padding:110px 0 26px}
.hero-impact-inner{position:relative;display:grid;grid-template-columns:.78fr 1.35fr;gap:28px;align-items:center}
.hero-impact-copy{max-width:540px;min-width:0}
.hero-impact-eyebrow{display:flex;align-items:center;gap:10px;color:#aeb8c8;animation:heroRise .7s ease-out .02s both}
.hero-impact-title{font-size:clamp(28px,4.4vw,68px);line-height:1.04;letter-spacing:-.04em;font-weight:500;margin-top:28px}
.hero-line{display:inline-block;animation:heroRiseTitle .9s cubic-bezier(.17,.84,.44,1) .15s both}
.hero-line.accent{color:var(--blue);background:linear-gradient(90deg,var(--blue) 0%,#9ab0ff 25%,var(--blue) 50%);background-size:200% auto;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:heroRiseTitle .9s cubic-bezier(.17,.84,.44,1) .35s both,shine 7s linear 1.3s infinite}
.hero-impact-lead{max-width:480px;margin-top:32px;font-size:18px;line-height:1.7;color:#c7cedb;animation:heroRise .7s ease-out .56s both}
.hero-impact-ctas{margin-top:40px;animation:heroRise .7s ease-out .7s both}
.hero-impact-ctas .button{min-width:240px}
.hero-impact-scroll{display:inline-flex;align-items:center;gap:12px;margin-top:72px;font-size:11px;letter-spacing:.1em;color:#aeb8c8;border-bottom:1px solid transparent;animation:heroRise .7s ease-out .9s both}
.hero-impact-scroll svg{width:16px;height:16px;animation:bob 1.8s ease-in-out 1.6s infinite}
.hero-impact-scroll:hover{color:#fff}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}

/* --spill-*: px a product may cross that edge of the box (-1 = only the page edges limit it); read by initHeroShowcase(). */
.hero-showcase{position:absolute;z-index:1;top:-170px;bottom:calc(-26px - var(--hero-spill));left:39%;right:max(-9%,calc((100% - 100vw) / 2 + 12px));perspective:1400px;pointer-events:none;--spill-top:-1;--spill-right:-1;--spill-bottom:0;--spill-left:0}
/* Above the sticky header (z-index 10) only while the page is at the very top; app.js removes it on scroll or when the menu opens. */
.hero-showcase.is-popout{z-index:11}
.hero-showcase:before{content:'';position:absolute;left:50%;top:50%;width:var(--aura,120%);aspect-ratio:1/1;z-index:-1;border-radius:42% 58% 63% 37%/53% 44% 56% 47%;transform:translate(-50%,-50%) scale(1) rotate(0deg);background:radial-gradient(circle,rgba(49,92,245,.55) 0%,rgba(49,92,245,.22) 45%,rgba(49,92,245,0) 72%);filter:blur(10px);animation:auraMorph 9s ease-in-out infinite}
@keyframes auraMorph{
  0%,100%{border-radius:42% 58% 63% 37%/53% 44% 56% 47%;transform:translate(-50%,-50%) scale(1) rotate(0deg)}
  33%{border-radius:58% 42% 38% 62%/41% 57% 48% 59%;transform:translate(-50%,-50%) scale(1.1) rotate(6deg)}
  66%{border-radius:48% 52% 55% 45%/60% 40% 52% 48%;transform:translate(-50%,-50%) scale(.95) rotate(-5deg)}
}
.showcase-product{display:none}
.showcase-product.is-placed{display:block;position:absolute;height:auto;filter:drop-shadow(0 16px 22px rgba(0,0,0,.5));animation:productIn .9s cubic-bezier(.17,.84,.44,1) var(--delay,1s) both,productFloat var(--float-dur,4s) ease-in-out var(--float-delay,2s) infinite}
@keyframes productIn{from{opacity:0;transform:translate(var(--from-x),var(--from-y)) translateZ(-180px) rotate(var(--rot)) scale(.5)}to{opacity:1;transform:translate(0,0) translateZ(0) rotate(var(--rot)) scale(1)}}
@keyframes productFloat{0%,100%{transform:translate(0,0) translateZ(0) rotate(var(--rot))}50%{transform:translate(0,calc(var(--float-y) * -1)) translateZ(28px) rotate(var(--rot))}}
.hero-stack-caption{max-width:400px;margin-top:28px;font-size:11px;line-height:1.6;letter-spacing:.02em;color:#8b96ab;animation:heroRise .7s ease-out 1s both}
/* Mobile: the box spans the screen (12px gutters) and reaches --hero-spill into the next section, never above itself onto the text. */
@media(max-width:899px){.hero-impact{padding:100px 0 0}.hero-impact-inner{grid-template-columns:minmax(0,1fr);gap:34px}.hero-impact-title{font-size:clamp(40px,11vw,96px)}.hero-impact-lead{font-size:15px}.hero-showcase{position:relative;top:auto;right:auto;bottom:auto;left:auto;width:calc(100vw - 24px);margin:0 0 calc(-1 * var(--hero-spill)) calc(50% - 50vw + 12px);aspect-ratio:16/10;--spill-top:0;--spill-right:-1;--spill-bottom:0;--spill-left:-1}}
@media(max-width:639px){.hero-impact{padding-top:64px}.hero-impact-inner{gap:28px}.hero-impact-title{font-size:clamp(36px,13vw,60px)}.hero-impact-scroll{margin-top:32px}.hero-stack-caption{margin-top:20px}.hero-showcase{aspect-ratio:1/1}}

@media(prefers-reduced-motion:reduce){
 .plan:hover,.button:hover svg,.text-link:hover svg,.story-link:hover svg{transform:none}
 .service-line.marquee{justify-content:center;mask-image:none;-webkit-mask-image:none}
 .marquee-track{animation:none;gap:clamp(40px,4.5vw,72px)}
 .marquee-track span{padding-right:0}
 .marquee-track span[aria-hidden]{display:none}
}
@media(max-width:639px){
 .service-line.marquee{display:grid;grid-template-columns:1fr 1fr;gap:16px;overflow:visible;mask-image:none;-webkit-mask-image:none;font-size:12px;letter-spacing:.1em;text-align:center}
 .marquee-track{display:contents;animation:none}
 .marquee-track span{padding-right:0}
 .marquee-track span[aria-hidden]{display:none}
}

/* Tighter vertical rhythm below the hero. Overrides styles.css at every breakpoint, so each range restates its value. */
.section{padding-top:88px;padding-bottom:88px}
.manifesto{padding:80px 0}
.section-heading,.center-heading{margin-bottom:36px}
.custom-plan{margin-top:24px;padding-top:24px}
.process-note{margin-top:28px}
/* Min-heights only align the plan prices / step texts across columns: sized to the longest text in each width range. */
.plan-description{min-height:62px}
@media(min-width:1280px){.plan-description{min-height:41px}}
@media(min-width:1101px){.process-step h3{min-height:0}}
@media(max-width:899px){.section{padding-top:72px;padding-bottom:72px}.plan-description{min-height:76px}}
@media(max-width:639px){
 .section{padding-top:52px;padding-bottom:52px}
 .manifesto{padding:52px 0}
 .section-heading,.center-heading{margin-bottom:28px}
 .custom-plan{margin-top:24px;padding-top:22px}
 .process-note{margin-top:24px}
 .process-step h3,.plan-description{min-height:0}
}
