/* Gigabrain brand layer over the Aigocy system */
:root{
  --brand:#FF5238;
  --gb-ink:#201736;
  --gb-ink-rgb:32,23,54;
  --black:var(--gb-ink);
  --primary:var(--gb-ink);
  --neutral-800:var(--gb-ink);
  --neutral-900:var(--gb-ink);
  --neutral-950:var(--gb-ink);
  --bs-black:#201736;
  --bs-black-rgb:32,23,54;
  --bs-dark:#201736;
  --bs-dark-rgb:32,23,54;
}

/* logo lockup */
.gb-logo{display:flex;align-items:center;gap:10px;text-decoration:none}
.gb-logo svg{width:32px;height:28px;color:var(--primary);flex:0 0 auto}
.gb-logo .gb-word{font-weight:700;font-size:22px;letter-spacing:-.01em;color:var(--primary);line-height:1}
.gb-logo .gb-word sup{font-size:10px;font-weight:700;vertical-align:super;margin-left:1px;color:var(--neutral-500)}
/* Footer and header use the same ink-coloured logo. */
footer .gb-logo svg,footer .gb-logo .gb-word{color:var(--primary)}
footer .gb-logo .gb-word sup{color:var(--secondary)}

/* agents marquee */
/* Agent marquee logos +30% (owner, 2026-09-03): 26px -> 34px glyphs, 15px -> 20px labels. */
.gb-agent{display:inline-flex;align-items:center;gap:13px;padding:0 10px;white-space:nowrap}
.gb-agent svg{width:34px;height:34px;fill:var(--neutral-600);flex:0 0 auto}
.gb-agent span{font-weight:600;font-size:20px;color:var(--neutral-600)}
.infiniteSlide_partner{align-items:center}

/* graph video section */
.gb-video-card{border-radius:24px;overflow:hidden;position:relative;box-shadow:0 30px 80px rgba(var(--gb-ink-rgb),.45)}
.gb-video-card video{display:block;width:100%;height:auto}
.gb-video-cap{margin-top:16px;color:var(--neutral-400);text-align:center}
.gb-graph-claims{display:flex;gap:24px;justify-content:center;flex-wrap:wrap;margin-top:32px}
.gb-graph-claims .claim{display:flex;align-items:center;gap:8px;color:var(--neutral-300);font-weight:600}
.gb-graph-claims .claim .dot{width:8px;height:8px;border-radius:50%;background:var(--brand);flex:0 0 auto}

/* honest sub-line under section headings */
.gb-honest{color:var(--secondary);text-align:center;margin:-40px auto 48px;max-width:560px}

/* pricing tweaks */
.pricing-item .price-per{white-space:nowrap}

/* forms: keep iOS webview from zooming */
.form-contact input,.form-contact textarea{font-size:16px}

/* footer link rows reuse social styles without icons */

/* works receipts: keep tiles from cropping */

/* replace stripped placeholder hero background with a light gradient */
.section-hero .hero-image{background-image:radial-gradient(72% 58% at 50% 28%, #ffffff 0%, #f7f4f0 46%, #efe8e2 100%)}
.section-hero{background-image:none}

/* multi-word nav labels stay on one line */
.nav-menu-main .item-link{white-space:nowrap}

/* formatting pass 2 */
/* The card's image slot is landscape; any photo dropped in keeps that frame
   and is cropped, never squashed (the home-office photo was cropped once,
   offline, to 1600x980 - this is the belt to that brace). */
.section-about-us .col-left > img{width:100%;height:auto;aspect-ratio:1600/980;object-fit:cover;object-position:center 45%;border-radius:24px;margin-top:32px}
.section-about-us .col-left .title{font-size:32px;line-height:1.2;letter-spacing:-.015em;text-wrap:balance}
.section-contact .contact-image::after{content:"";position:absolute;inset:0;border-radius:40px;background:rgba(253,251,246,.42)}
@media (max-width:991px){.section-contact .contact-image::after{border-radius:24px}}
.gb-video-cap{margin-bottom:0}

/* hero over the brain video */

/* audit fixes: constrain the agent chips in the benefits collage */
/* about heading clearance before the dark card at narrow widths */
.section-about-us .heading-section{margin-bottom:32px}
@media (max-width:1199px){.section-about-us .heading-section .heading-title{font-size:clamp(34px,6vw,64px)}}

/* named loop lists inside the accordion */
/* The loops: owner asked for a much shorter section (2026-09-01). The
   template's image-swapping accordion with per-loop glosses is gone; the
   twelve names stand in four labelled clusters. What each loop does is shown
   by the Daily Brief and answered in the FAQ. */
.section-loops .heading-section{max-width:760px;margin-inline:auto}
.section-loops .gb-honest{margin:16px auto 0}
.gb-loop-shifts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 40px;max-width:1040px;margin:0 auto}
.gb-loop-shift-name{display:flex;align-items:center;gap:10px;font-weight:600;color:var(--primary);margin-bottom:12px}
.gb-loop-count{font-size:12px;font-weight:600;line-height:1;padding:5px 8px;border-radius:999px;background:var(--brand);color:#fff}
.gb-loop-grid{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:10px}
.gb-loop-pill{padding:10px 16px;border-radius:999px;background:var(--white);color:var(--primary);
  font-size:15px;font-weight:500;line-height:1.2;box-shadow:0 6px 20px rgba(var(--gb-ink-rgb),.06);border:1px solid rgba(var(--gb-ink-rgb),.06)}
@media (max-width:767px){.gb-loop-shifts{grid-template-columns:1fr;gap:22px}}

/* the cost: sourced statistics */
.section-cost .gb-stat{height:100%;padding:28px 24px;border-radius:20px;background:var(--white);
  box-shadow:0 10px 34px rgba(var(--gb-ink-rgb),.07);display:flex;flex-direction:column;gap:12px;margin-bottom:24px}
.gb-stat-num{font-size:44px;line-height:1;font-weight:700;color:var(--primary);letter-spacing:-.02em}
.gb-stat-num span{display:block;font-size:14px;font-weight:600;color:var(--brand);
  letter-spacing:.06em;text-transform:uppercase;margin-top:8px}
.gb-stat-claim{color:var(--secondary);font-size:15px;line-height:1.55;margin:0;flex:1}
.gb-stat-src{font-size:12px;line-height:1.5;color:var(--neutral-400);margin:0;
  padding-top:12px;border-top:1px solid var(--line,#e7e5e0)}
.gb-stat-src em{font-style:italic}
.gb-stat-foot{text-align:center;max-width:620px;margin:24px auto 0;color:var(--secondary)}

/* honest requirements line, directly under the hero CTAs */
.gb-req{max-width:640px;margin:22px auto 0;font-size:14px;line-height:1.6;
  color:var(--secondary);text-align:center}

/* mid-page CTAs at the persuasion peaks */
.gb-midcta{display:flex;flex-direction:column;align-items:center;gap:12px;
  margin:56px auto 8px;text-align:center;max-width:520px}
.gb-midcta span{font-size:14px;color:var(--secondary);line-height:1.55}

/* ============================================================
   PASS 1 - impeccable craft floor
   Browser surfaces: the parts we did not draw still carry the design.
   ============================================================ */

/* text selection - was inheriting the browser default (belongs to no design system) */
::selection{background:var(--brand);color:#fff}
::-moz-selection{background:var(--brand);color:#fff}

/* caret + focus ring drawn from the palette, not the UA */
input,textarea{caret-color:var(--brand)}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,
[role="button"]:focus-visible,.accordion-button:focus-visible{
  outline:2px solid var(--brand);outline-offset:3px;border-radius:6px}

/* numerals that sit in columns must not dance between values */
.gb-stat-num,.price-number,.statistic-number,.counter,.number,
.gb-stat-src,.accordion-action .num{font-variant-numeric:tabular-nums}

/* spacing rhythm: more air above a heading than below it */
.section-cost .heading-section,.section-services .heading-section,
.section-features .heading-section,.section-benefits .heading-section{margin-top:8px}

/* underline offset - a browser default that belongs to no design system */
a:not(.tf-btn):not(.tf-btn-2){text-underline-offset:.18em;text-decoration-thickness:1px}

/* the requirements line is load-bearing honesty; give it a quiet frame, not a card */
.gb-req{border-top:1px solid rgba(var(--gb-ink-rgb),.09);padding-top:18px}

/* ============================================================
   PASS 2 - Apple HIG accessibility floor
   Contrast ≥4.5:1 body / ≥3:1 large. Targets ≥24px. Measured, not assumed.
   ============================================================ */

/* --secondary (#71717A) measured 4.4:1 on the light surfaces - just under.
   Darkened to clear 4.5:1 wherever it carries real copy. */
:root{ --secondary:#65656E; --gb-coral-text:#BC3318; }

/* Large counters are still information, not decoration. Keep them above 3:1
   on the warm-light card surfaces. */
.section-about-us .gb-counter-suffix,
.section-process .process-card .number .text-neutral-400,
.section-process .process-card .number .text-neutral-200{color:#65656E !important}

/* brand coral measured 2.73:1 on light ground - fine as a fill, fails as text.
   Bright coral stays on dark/fill; light-ground text uses the darker tone. */
.section-about-us .col-left .title .text-brand,
.gb-stat-num span,
.heading-sub{ color:var(--gb-coral-text) }

/* keep full-strength coral where it sits on dark or is a fill, not text */
.box-black .heading-sub,.section-team .heading-sub,.section-statistic .heading-sub,
.tf-btn,.gb-midcta .tf-btn{ color:#fff }

/* interactive targets below the 24px desktop floor */
footer .footer-links a,.canvas_foot a,.tf-link-icon,
.canvas_foot .left a{min-height:24px}

/* uppercase micro-labels: restore the tracking they need to stay legible */
.gb-stat-num span,.heading-sub,.gb-stat-src{letter-spacing:.04em}

/* header crowding at ~1280px: logo and nav were touching, CTA wrapped */
.tf-header .header-inner{gap:28px}
.tf-header .tf-btn{white-space:nowrap;flex:0 0 auto}
.tf-header .box-navigation{margin-left:auto}
.tf-header .nav-menu-main{gap:22px}

/* form status region (was: no error/success/loading state anywhere) */
.gb-form-status{margin-top:12px;font-size:14px;line-height:1.5;min-height:0}
.gb-form-status:empty{display:none}
.gb-form-status[data-state="error"]{color:var(--gb-coral-text)}
.gb-form-status[data-state="ok"]{color:#1d7a4c}
.form-contact button[aria-busy="true"]{opacity:.65;pointer-events:none}
#gb-newsletter-form .gb-newsletter-note{margin-top:16px}

/* prevent layout shift: images reserve their box before they load */
.section-about-us .col-left > img,.box-quotes .image img,

/* the infinite marquee is meant to run past the viewport; contain it so the
   document itself never scrolls sideways (defect fix, kept from the reverted pass) */
.infiniteSlide_tech_main,.section-partner .partner-wrap{overflow:hidden}
html,body{overflow-x:hidden;color:var(--gb-ink)}

/* honour reduced-motion across the template's GSAP-driven entrances */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important}
  .effectFade,.fadeUp,.fadeRotateX{opacity:1!important;transform:none!important}
}

/* hero agent chips: intrinsic width/height attrs collided with the template's
   sizing and squashed the artwork. contain guarantees the aspect survives. */
.title-icon-wrap img{object-fit:contain;height:auto}

/* Benefits row 2 is two cards again ("Local. Offline. Yours." + "Yours to
   change"), so the full-width measure fix that briefly lived here is gone.
   The customisation card is text-only; give it the icon treatment the
   process cards use so the row reads as a pair. */
.benefits-box .gb-benefit-icon{
    display:block;font-size:44px;line-height:1;color:var(--brand);margin-bottom:22px;
}
/* Text-only card beside an illustrated one: take the row height so the pair
   share a bottom edge (measured 421px vs 274px at 1440 before this), centre
   the content vertically, and hold the paragraph to a readable measure. */
/* height:100% cannot resolve inside a stretched flex column (the column has
   no explicit height). The column carries Bootstrap's d-flex in the markup
   and the card grows to fill it. The card deliberately has no entrance
   classes: GSAP wraps animated elements in an overflow-hidden div, which
   would sit between column and card and break the stretch. */
/* Both cards are icon + title + text now (the shield illustration became a
   lock icon at the owner's request), so both fill their d-flex columns. */
.benefits-box.benefits-custom,.benefits-box.benefits-secure{flex:1 1 auto;display:flex;flex-direction:column;justify-content:center}
.benefits-box.benefits-custom .content p{max-width:52ch}
@media (max-width:991px){.benefits-box.benefits-custom,.benefits-box.benefits-secure{height:unset}}

/* The user-supplied brand swatch is the only navy used for copy, controls,
   and dark surfaces. The video card has no lift shadow, so its dark frame
   dissolves into the section instead of reading as a second navy panel. */
.box-black{background-color:var(--gb-ink)}
.gb-video-card{box-shadow:none}
/* The about card keeps the template's white highlight, with every dark part
   drawn from the ink token. */
.section-about-us .col-left{
  background:radial-gradient(62.56% 62.56% at 28.14% -10.42%,rgba(255,255,255,.2) 0%,rgba(255,255,255,0) 100%),
             linear-gradient(0deg,var(--gb-ink),var(--gb-ink));
  box-shadow:0 7.77px 2.21px 0 rgba(var(--gb-ink-rgb),.06),0 3px 3px 0 rgba(var(--gb-ink-rgb),.1),0 -8px 0 0 rgba(var(--gb-ink-rgb),.22) inset,0 4px 0 0 rgba(255,255,255,.3) inset;
}

/* Hero sub-line. The template held its measure with hard <br> tags tuned to the
   previous, shorter sentence; the owner's copy is longer, so the breaks were
   removed and the measure is constrained properly instead - it reflows at any
   width rather than breaking in fixed places. Mirrors the .gb-req pattern.
   Descendant selector, not a child combinator: GSAP wraps the <p> in a
   div.overflow-hidden, so it is a grandchild of .content-wrap. */
.section-hero .content-wrap p.text{max-width:640px;margin-inline:auto}

/* Dark buttons take the same ink as the graph section. The highlight remains
   white and every dark part of the lift shadow is an ink tint. */
.tf-btn{
  background:radial-gradient(62.56% 62.56% at 28.14% -10.42%,rgba(255,255,255,.2) 0%,rgba(255,255,255,0) 100%),
             linear-gradient(0deg,var(--gb-ink),var(--gb-ink));
  box-shadow:0 -3px 0 0 rgba(var(--gb-ink-rgb),.34) inset,0 1px 0 0 rgba(255,255,255,.3) inset,0 2.77px 2.21px 0 rgba(var(--gb-ink-rgb),.12),0 6.65px 5.32px 0 rgba(var(--gb-ink-rgb),.13),0 12.52px 10.02px 0 rgba(var(--gb-ink-rgb),.13),0 22.34px 17.87px 0 rgba(var(--gb-ink-rgb),.14),0 41.78px 33.42px 0 rgba(var(--gb-ink-rgb),.15),0 100px 80px 0 rgba(var(--gb-ink-rgb),.15),0 3px 3px 0 rgba(var(--gb-ink-rgb),.14),0 2.77px 2.21px 0 rgba(var(--gb-ink-rgb),.12);
}
.tf-btn:hover{
  background:radial-gradient(62.56% 62.56% at 50% -13%,rgba(255,255,255,.32) 0%,rgba(255,255,255,0) 100%),
             linear-gradient(0deg,var(--gb-ink),var(--gb-ink));
  box-shadow:0 -3px 0 0 rgba(var(--gb-ink-rgb),.34) inset,0 1px 0 0 rgba(255,255,255,.22) inset,0 2.77px 2.21px 0 rgba(var(--gb-ink-rgb),.12),0 6.65px 5.32px 0 rgba(var(--gb-ink-rgb),.13),0 12.52px 10.02px 0 rgba(var(--gb-ink-rgb),.14),0 22.34px 17.87px 0 rgba(var(--gb-ink-rgb),.14),0 41.78px 33.42px 0 rgba(var(--gb-ink-rgb),.15),0 100px 80px 0 rgba(var(--gb-ink-rgb),.15),0 3px 3px 0 rgba(var(--gb-ink-rgb),.14),0 2.77px 2.21px 0 rgba(var(--gb-ink-rgb),.12);
}
#goTop{background:var(--gb-ink)}

/* All text that the template called black now resolves through the ink token. */
.text-gradient-1,.text-gradient-3{background:linear-gradient(var(--gb-ink),var(--gb-ink));-webkit-background-clip:text;background-clip:text}
/* Headings bypass --primary in the template, so route them through the same
   ink explicitly as a safeguard. */
h1,.h1,h2,.h2,h3,.h3,h4,.h4,h5,.h5,h6,.h6{color:var(--primary)}
/* The about paragraph left a one-word last line ("back.") at phone width once
   its forced breaks were removed. text-wrap:pretty lets the browser rebalance
   the last lines to avoid that; older engines ignore it harmlessly. */
.review-box .desc{text-wrap:pretty}
/* Owner (2026-09-03): the memory-palace quote card is gone. The "What it
   is" card used to take its height from that column and shrink the photo to
   fit (the card has overflow:hidden, so the flex image could collapse). Now
   the photo keeps its natural height and defines the card, and the stats box
   stretches to match, its licence counter pinned to the bottom. */
.section-about-us .col-left > img{flex:0 0 auto}
.section-about-us .review-box{height:auto;display:flex;flex-direction:column;margin-bottom:0}
@media (max-width:991px){.section-about-us .review-box{height:auto}}

/* Launch pricing (owner, 2026-09-03): the founding-cohort/seat-cap story is
   gone. Each card shows the list price struck through beside the launch
   price; the about card's counter now counts to "50% off". */
.gb-price-was{font-weight:600;font-size:24px;line-height:1;color:var(--secondary);text-decoration:line-through;text-decoration-thickness:2px;align-self:flex-end;padding-bottom:10px}
.pricing-item.style-black .gb-price-was{color:var(--neutral-400)}
@media (max-width:767px){.gb-price-was{font-size:18px;padding-bottom:8px}}
.gb-launch-offer{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:20px 24px;margin-top:34px;padding-top:26px;border-top:1px solid rgba(var(--gb-ink-rgb),.12)}
.gb-launch-copy{min-width:0}
.gb-launch-label{margin-bottom:7px;color:var(--primary);font-size:17px;font-weight:700;line-height:1.3}
.gb-launch-note{max-width:34ch;margin:0;color:var(--secondary);font-size:15px;font-weight:500;line-height:1.5}
.review-box .gb-launch-discount{display:flex;align-items:baseline;gap:6px;margin:0;font-size:72px;line-height:.9;letter-spacing:-.04em;white-space:nowrap}
.gb-launch-discount .number{color:var(--gb-coral-text)}
.gb-launch-discount .gb-counter-suffix{color:var(--primary);font-size:.32em;font-weight:700;letter-spacing:-.015em}
.gb-launch-buy{grid-column:1 / -1;width:100%;min-height:54px;justify-content:center;margin-top:2px}
@media (max-width:575px){
  .gb-launch-offer{grid-template-columns:1fr;align-items:start;gap:18px;margin-top:28px;padding-top:22px}
  .review-box .gb-launch-discount{font-size:64px}
}
/* The cost heading grew to two lines ("The tedious admin / burning your
   precious time") and the honest sub-line's -40px pull-up, tuned to the old
   heading, now overlapped it (owner: "this looks bad"). Give it a real gap. */
.section-cost .gb-honest{margin:16px auto 48px}
/* Owner (2026-09-03): the research grounding must be clear on the page. It
   sits directly under the Gigabrain section heading, on the ink ground. */
.section-team .gb-honest{margin:16px auto 0;max-width:640px}
.gb-on-ink{color:var(--neutral-300)}

/* Footer (owner, 2026-09-04): keep the brand block distinct and let the three
   navigation groups use the remaining width. The nav wrapper is one grid item,
   so it needs its own grid rather than leaving two empty parent columns. */
.gb-footer{display:grid;grid-template-columns:minmax(280px,1.15fr) minmax(0,2.85fr);column-gap:clamp(64px,9vw,144px);row-gap:40px;align-items:start;padding:56px 0 40px}
.gb-footer-brand .gb-logo{display:inline-flex;align-items:center;gap:8px;margin-bottom:16px}
.gb-footer-tag{color:var(--primary);font-weight:600;margin:0 0 6px;max-width:32ch}
.gb-footer-sold{color:var(--secondary);font-size:14px;margin:0}
.gb-footer-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(28px,4vw,72px);min-width:0}
.gb-footer-col{min-width:0}
.gb-footer-head{font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--primary);margin-bottom:14px}
.gb-footer-col ul{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.gb-footer-col a{color:var(--secondary);text-decoration:none;font-weight:500;display:inline-flex;align-items:center;min-height:24px;overflow-wrap:anywhere}
.gb-footer-col a:hover{color:var(--primary);text-decoration:underline;text-underline-offset:.18em}
.gb-footer-bottom{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;padding:20px 0 28px;border-top:1px solid rgba(var(--gb-ink-rgb),.10)}
.gb-footer-copy{color:var(--secondary);font-size:14px;margin:0}
.gb-footer-top{display:inline-flex;align-items:center;gap:8px;color:var(--primary);text-decoration:none;min-height:24px;border:0;padding:0;background:transparent;font:inherit;cursor:pointer}
@media (max-width:991px){.gb-footer{grid-template-columns:1fr;gap:36px}.gb-footer-cols{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}}
@media (max-width:767px){.gb-footer-cols{grid-template-columns:1fr 1fr;gap:32px 24px}.gb-footer-col:last-child{grid-column:1 / -1}}
@media (max-width:575px){.gb-footer{padding-top:40px}.gb-footer-cols{grid-template-columns:1fr;gap:28px}.gb-footer-col:last-child{grid-column:auto}.gb-footer-bottom{justify-content:center;text-align:center}}
/* Hero OpenAI chip: the rebuilt 115px chip sat inside the pill; the original
   sat high and broke out over the pill's top edge (the wrap clips it there).
   Lift it so the card straddles the top of the red bar as before. */
.section-hero .content-wrap .title-icon .img-1{top:-24px}

/* Setup step 02 (owner): a copy-and-pastable start-up command. */
.gb-cmd{display:flex;align-items:center;gap:10px;margin:10px 0 12px;padding:10px 10px 10px 14px;border-radius:12px;
  background:rgba(var(--gb-ink-rgb),.06);border:1px solid rgba(var(--gb-ink-rgb),.10)}
.gb-cmd code{flex:1 1 auto;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:14px;line-height:1.4;color:var(--primary);white-space:normal;word-break:break-word}
.gb-copy{flex:0 0 auto;border:0;border-radius:999px;padding:7px 14px;min-height:32px;background:var(--gb-ink);color:#fff;font-weight:600;font-size:13px;cursor:pointer}
.gb-copy:hover{background:var(--gb-ink)}
.gb-copy:focus-visible{outline:2px solid var(--brand);outline-offset:2px}

/* Hero headline (owner, 2026-09-03): the chip pill must always sit centred
   BELOW the second line, never beside it. The template lays the second line
   and the pill out as flex siblings in a wrapping row, so at widths where
   both fit the pill floated to the right of the text. Stack them instead. */
.section-hero .content-wrap .title .title2{flex-direction:column;align-items:center;gap:14px}
.section-hero .content-wrap .title-icon{width:255px;margin-inline:auto}
/* Hermes chip (owner, 2026-09-03): over to the left end of the bar at roughly
   the Claude chip's height, mirroring it. Template had it at 66/83. */
.section-hero .content-wrap .title-icon .img-3{left:2px;top:52px}

/* Pricing cards - formatting pass (owner, 2026-09-03: "forensic formatting
   and padding pass; the CTA should just say BUY and be prominent"). The
   template put the price row and the button side by side (the button was
   squeezed into a tall pill against the price) and split the content into
   two narrow columns. Now: price row on one line, a full-width BUY beneath
   it, single-column content with even rhythm. */
.pricing-item{padding:34px 32px 38px}
.pricing-item .top{margin-bottom:22px;align-items:center}
.pricing-item .heading{flex-direction:column;align-items:stretch;gap:20px}
.pricing-item .heading > .d-flex{align-items:baseline;gap:12px;flex-wrap:wrap}
.pricing-item .heading .price-number{font-size:64px;line-height:1}
.pricing-item .heading .price-per{margin:0}
.gb-price-was{align-self:baseline;padding-bottom:0}
.pricing-item .heading .tf-btn{
  width:100%;justify-content:center;min-height:58px;padding:16px 24px;
  font-size:20px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  background:radial-gradient(62.56% 62.56% at 28.14% -10.42%,rgba(255,255,255,.28) 0%,rgba(255,255,255,0) 100%),
             linear-gradient(0deg,var(--brand),var(--brand));
  box-shadow:0 -3px 0 0 #c4260f inset,0 1px 0 0 rgba(255,255,255,.35) inset,0 6.65px 5.32px 0 rgba(255,59,0,.12),0 22px 18px 0 rgba(255,59,0,.14),0 3px 3px 0 rgba(var(--gb-ink-rgb),.10)}
.pricing-item .heading .tf-btn:hover{
  background:radial-gradient(62.56% 62.56% at 50% -13%,rgba(255,255,255,.34) 0%,rgba(255,255,255,0) 100%),linear-gradient(0deg,var(--brand),var(--brand));
  box-shadow:0 -3px 0 0 #c4260f inset,0 1px 0 0 rgba(255,255,255,.24) inset,0 12px 24px 0 rgba(255,59,0,.22),0 3px 3px 0 rgba(var(--gb-ink-rgb),.10)}
.pricing-item > .line{margin:26px 0}
.pricing-item .content{flex-direction:column;gap:16px}
/* The template's two-column card gave each content child width:50%; stacked,
   that left the text in the left half of the card (owner screenshot). */
.pricing-item .content > *{width:100%;max-width:none}
.pricing-item .content .title{margin-bottom:6px}
.pricing-item .content .text{font-size:15px;line-height:22px}
.pricing-item .list-text{display:grid;gap:12px;margin:2px 0 0}
.pricing-item .list-text li{display:flex;align-items:flex-start;gap:10px;line-height:1.45}
.pricing-item .list-text li .icon{flex:0 0 auto;margin-top:3px}
@media (max-width:575px){.pricing-item{padding:28px 22px 30px}.pricing-item .heading .price-number{font-size:52px}}

/* Group licences use one calm, editorial purchase surface. The left side
   explains the offer; the softly tinted right side contains the transaction. */
.gb-team-price-row{margin-top:44px}
.gb-team-price{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(380px,.8fr);gap:0;align-items:stretch;padding:0;background:var(--white);border:1px solid rgba(var(--gb-ink-rgb),.12);border-radius:24px;box-shadow:0 10px 28px rgba(var(--gb-ink-rgb),.055)}
.gb-team-price-copy{padding:32px 42px 34px}
.gb-team-price .top{margin-bottom:20px}
.gb-team-price .top .line{height:1px;flex:1;background:rgba(var(--gb-ink-rgb),.14)}
.gb-team-price-title{max-width:720px;margin:0 0 16px;font-size:clamp(32px,3.5vw,44px);line-height:1.05;letter-spacing:-.03em;color:var(--gb-ink);text-wrap:balance}
.gb-team-price-copy > p{max-width:680px;margin:0;color:var(--secondary);font-size:17px;line-height:1.6}
.gb-team-price-steps{display:flex;align-items:flex-start;gap:0;margin-top:24px;padding-top:18px;border-top:1px solid rgba(var(--gb-ink-rgb),.12)}
.gb-team-price-steps span{padding:0 18px;color:var(--gb-ink);font-size:14px;font-weight:600;line-height:1.4}
.gb-team-price-steps span:first-child{padding-left:0}
.gb-team-price-steps span+span{border-left:1px solid rgba(var(--gb-ink-rgb),.14)}
.gb-team-price-buy{display:flex;flex-direction:column;justify-content:center;gap:12px;padding:26px 32px;background:rgba(var(--gb-ink-rgb),.035);border-left:1px solid rgba(var(--gb-ink-rgb),.10)}
.gb-team-price-total > div{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.gb-team-price-total strong{font-size:48px;line-height:1;color:var(--gb-ink);letter-spacing:-.035em}
.gb-team-price-total > div > span:last-child{color:var(--secondary);font-weight:600}
.gb-team-price-total p{margin:8px 0 0;color:var(--brand);font-weight:700}
.gb-quantity{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:12px 0;border-block:1px solid rgba(var(--gb-ink-rgb),.12)}
.gb-quantity > div:first-child{display:grid;gap:2px}
.gb-quantity-label{font-size:13px;color:var(--secondary)}
.gb-quantity-controls{display:grid;grid-template-columns:42px 42px 42px;align-items:center;border:1px solid rgba(var(--gb-ink-rgb),.18);border-radius:8px;overflow:hidden}
.gb-quantity-controls button,.gb-quantity-controls output{display:grid;place-items:center;height:42px;border:0;background:transparent;color:var(--gb-ink);font:700 18px/1 Urbanist,sans-serif}
.gb-quantity-controls button{cursor:pointer}
.gb-quantity-controls button:hover{background:rgba(var(--gb-ink-rgb),.06)}
.gb-quantity-controls button:disabled{cursor:not-allowed;opacity:.3}
.gb-quantity-controls button:focus-visible{outline:2px solid var(--brand);outline-offset:-2px}
.gb-team-price-buy > .tf-btn{width:100%;justify-content:center;min-height:54px;padding:14px 24px;font-size:18px;font-weight:700;text-transform:none}
.gb-team-consent{margin:0;color:var(--secondary);font-size:13px;line-height:1.5}
.gb-team-consent a{color:var(--gb-ink);font-weight:600}
.gb-price-note{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:24px;padding:26px 0;border-block:1px solid rgba(var(--gb-ink-rgb),.14)}
.gb-price-note .note-item{margin:0;padding:0 32px 0 0;background:transparent;border-radius:0;box-shadow:none;color:var(--secondary);font-size:15px;line-height:1.65}
.gb-price-note .note-item+ .note-item{padding:0 0 0 32px;border-left:1px solid rgba(var(--gb-ink-rgb),.14)}
.gb-price-note .note-item strong{display:block;margin-bottom:4px;color:var(--primary);font-size:13px;letter-spacing:.06em;text-transform:uppercase}
.gb-price-note .note-item a{color:var(--gb-ink);font-weight:600;text-underline-offset:3px}
@media (max-width:991px){.gb-team-price-row{margin-top:36px}.gb-team-price{grid-template-columns:1fr}.gb-team-price-copy{padding:34px 38px}.gb-team-price-buy{padding:30px 38px;border-left:0;border-top:1px solid rgba(var(--gb-ink-rgb),.10)}}
@media (max-width:767px){.gb-price-note{grid-template-columns:1fr;gap:22px}.gb-price-note .note-item{padding:0}.gb-price-note .note-item+ .note-item{padding:22px 0 0;border-left:0;border-top:1px solid rgba(var(--gb-ink-rgb),.14)}}
@media (max-width:575px){.gb-team-price-row{margin-top:32px}.gb-team-price{border-radius:20px}.gb-team-price-copy,.gb-team-price-buy{padding:28px 22px}.gb-team-price .top{align-items:flex-start!important;flex-wrap:wrap}.gb-team-price .top .line{display:none}.gb-team-price-steps{display:grid;gap:12px}.gb-team-price-steps span{padding:0}.gb-team-price-steps span+span{padding-top:12px;border-left:0;border-top:1px solid rgba(var(--gb-ink-rgb),.12)}.gb-team-price-total strong{font-size:44px}.gb-quantity{align-items:flex-end}}

/* Clean section routes stop below the floating navigation rather than hiding
   their opening labels beneath it. */
#about,#graph,#obsidian,#loops,#setup,#pricing,#group-licences,#faq,#contact{scroll-margin-top:96px}

/* Gradient-filled text paints only inside its own box, and the display
   headings run line-height 1.0, so descenders (the g in "Things") fell
   outside the box and rendered invisible. Extend the paint box below the
   baseline; on block headings pull the layout back with a negative margin. */
.text-gradient-1,.text-gradient-2,.text-gradient-3{padding-bottom:.2em}
.heading-title.text-gradient-1,.heading-title.text-gradient-2,.heading-title.text-gradient-3{margin-bottom:-.2em}

/* One dark for the whole site. Black, dark and near-black template tokens all
   resolve to the owner-supplied ink at the root of this file. */
.accordion-asked .accordion-button span.right-icon,.accordion-button .right-icon,.accordion-asked-item .right-icon{
  background:radial-gradient(62.56% 62.56% at 28.14% -10.42%,rgba(255,255,255,.2) 0%,rgba(255,255,255,0) 100%),linear-gradient(0deg,var(--gb-ink),var(--gb-ink))}
.offcanvas-menu{background-color:rgba(var(--gb-ink-rgb),.62)}
/* Paint the dark eyebrow in the ink outright so its template fallback cannot
   introduce a different dark colour. */
.heading-section .heading-sub.style-1{
  background:radial-gradient(62.56% 62.56% at 28.14% -10.42%,rgba(255,255,255,.1) 0%,rgba(255,255,255,0) 100%),linear-gradient(0deg,var(--gb-ink),var(--gb-ink))}
.pricing-item.style-black{
  box-shadow:0 -8px 0 0 rgba(var(--gb-ink-rgb),.72) inset,0 4px 0 0 rgba(255,255,255,.3) inset,0 7.77px 2.21px 0 rgba(var(--gb-ink-rgb),.06),0 3px 3px 0 rgba(var(--gb-ink-rgb),.10)}

/* ---- Forensic pass (impeccable craft-floor / audit / polish / clarify), 2026-09-03 ----
   Widows: six blocks ended on a stub line. Prose wraps prettily; headings balance. */
p,li,.text,.desc,.gb-honest,.gb-stat-claim,.gb-stat-src,.gb-footer-tag{text-wrap:pretty}
h1,h2,h3,.heading-title,.gb-loop-shift-name{text-wrap:balance}
/* Heading semantics: section titles are now <h2> and card titles <h3>; kill UA margins so the template's spacing holds. */
h2.heading-title,h3.title,h3.heading-title{margin:0}
/* Phone: the about card's chip and headline were wider than the card and got clipped (397px in a 351px card). */
@media (max-width:575px){
  .section-about-us .col-left .position-relative{max-width:100%;padding:0 18px}
  .section-about-us .col-left .sub{max-width:100%;white-space:normal;height:auto;line-height:1.35;padding:8px 14px;text-align:center}
  .section-about-us .col-left h5,.section-about-us .col-left h3.title{font-size:26px;line-height:1.2}
}
/* Elevation declared once: the loop pills carried a border AND a shadow. Shadow stays. */
.gb-loop-pill{border:0}
/* Tap targets: header nav links were 24px tall; pad them without moving the layout. */
.tf-header nav a,.main-menu a{padding-block:10px}
/* FAQ rows: the clickable button measured 32px; give it the row's height. */
.accordion-asked .accordion-button{min-height:44px;align-items:center}
/* restored: removed by the dead-selector sweep because it shared a rule with .gb-video-card img */
.section-contact .contact-image img{aspect-ratio:16/10;object-fit:cover}

/* 24 loops: the twelve Lifetime-only pills carry their tier inline, so the grid
   stays truthful for a reader who never reaches the paragraph above it. */
.gb-loop-pill{display:inline-flex;align-items:center;gap:8px}
/* Four clusters of 7/6/7/4 make the two-column grid ragged; align the row tops. */
.gb-loop-shifts{align-items:start}

/* About card: at desktop the row stretches the dark card to the text box's
   height, and the template's space-between then dumps the slack as empty ink
   between the button and the photo (owner: "why is there so much empty
   space"). Let the photo grow to fill it instead: bottoms stay aligned, the
   photo shows more of itself, cropped from the centre. Stacked widths are
   unaffected because nothing stretches there. */
.section-about-us .col-left{justify-content:flex-start}
.section-about-us .col-left > img{flex:1 1 auto;min-height:0;aspect-ratio:auto;object-fit:cover}

/* Setup (owner, 2026-09-03): the three steps ran through a carousel that
   showed 1.78 cards at desktop, so step 2 was always clipped and step 3 took
   an arrow click, and each card was 670px tall around ~120px of content.
   Three instructions do not want a carousel. Desktop: three across, equal
   height, footers pinned. Mobile: stacked. No arrows. */
.section-process .heading-section{max-width:760px;margin-inline:auto}
.gb-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;align-items:stretch;counter-reset:none}
.gb-steps .process-card{height:100%}
.section-process .process-card .icon{margin-bottom:28px}
.section-process .process-card .content{margin-bottom:28px}
.section-process .process-card .bot .number{font-size:56px;line-height:1}
@media (min-width:1400px){.section-process .process-card .bot .number{font-size:72px}}
@media (max-width:991px){.gb-steps{grid-template-columns:1fr;gap:18px}}
/* 992-1199px (small laptops, iPad landscape): three 296px cards were 800px
   tall with the footer chip and numeral wrapping onto two lines. Keep all
   three visible but tighten the card so the footer is one deliberate row. */
@media (min-width:992px) and (max-width:1199px){
  .gb-steps{gap:16px}
  .section-process .process-card{padding:24px;border-radius:28px}
  .section-process .process-card .icon{width:60px;height:60px;font-size:26px;margin-bottom:22px}
  .section-process .process-card .content .title{font-size:24px}
  .section-process .process-card .bot{gap:12px;flex-wrap:nowrap}
  .section-process .process-card .bot .time{padding:6px 11px 5px;font-size:12px;white-space:nowrap}
  .section-process .process-card .bot .number{font-size:40px}
}

/* Loop popovers (owner, 2026-09-03): each pill is now a button; hovering,
   tapping or focusing it opens one shared popover, appended to <body> so the
   entrance wrappers' overflow:hidden cannot clip it. Ink surface, white text. */
.gb-loop-grid > li{margin:0;padding:0}
.gb-loop-pill{font-family:inherit;border:0;appearance:none;-webkit-appearance:none;cursor:pointer;text-align:left;
  transition:box-shadow .15s ease}
.gb-loop-pill:hover,.gb-loop-pill[aria-expanded="true"]{box-shadow:0 8px 24px rgba(var(--gb-ink-rgb),.14)}
.gb-loop-pill:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.gb-loop-pop{position:fixed;z-index:1200;width:min(380px,calc(100vw - 24px));padding:18px 20px 16px;border-radius:16px;
  background:var(--gb-ink);color:#fff;box-shadow:0 18px 48px rgba(var(--gb-ink-rgb),.28);
  opacity:0;visibility:hidden;transition:opacity .16s ease,visibility .16s;pointer-events:none}
.gb-loop-pop.is-open{opacity:1;visibility:visible}
.gb-loop-pop h4{margin:0 0 8px;font-size:15px;font-weight:700;line-height:1.3;color:#fff;display:flex;align-items:center;gap:8px}
.gb-loop-pop p{margin:0;font-size:14px;line-height:1.55;color:rgba(255,255,255,.88)}
.gb-loop-pop p+p{margin-top:8px}
.gb-loop-pop::after{content:"";position:absolute;width:12px;height:12px;background:var(--gb-ink);transform:rotate(45deg);
  left:var(--arrow-x,50%);margin-left:-6px}
.gb-loop-pop.is-above::after{bottom:-6px}
.gb-loop-pop.is-below::after{top:-6px}

/* Centred sections (owner, 2026-09-03): the eyebrow chip is a max-content flex
   box, so text-align:center never moved it. Centre it with auto margins. */
.heading-section.text-center .heading-sub{margin-inline:auto}

/* Legal pages (owner, 2026-09-03): licence, terms, refunds and privacy were bare
   documents on a near-black ground with no header, footer or site fonts. They
   now wear the site shell; only the article styles below are new. */
.gb-legal{padding:168px 0 96px}
.gb-legal-article{max-width:760px;margin-inline:auto}
.gb-legal-article h1{font-size:clamp(36px,5vw,56px);line-height:1.08;letter-spacing:-.02em;font-weight:600;color:var(--primary);margin:0 0 14px;text-wrap:balance}
.gb-legal-article h2{font-size:clamp(22px,2.6vw,28px);line-height:1.2;letter-spacing:-.01em;font-weight:600;color:var(--primary);margin:44px 0 12px;text-wrap:balance}
.gb-legal-article p,.gb-legal-article li{font-size:17px;line-height:1.7;color:var(--gb-ink);margin:0 0 14px;max-width:68ch}
.gb-legal-article ul{padding-left:1.25em;margin:0 0 18px}
.gb-legal-article li{margin-bottom:10px}
.gb-legal-article strong{color:var(--primary);font-weight:600}
.gb-legal-article a{color:var(--gb-coral-text);text-decoration:underline;text-underline-offset:3px}
.gb-legal-article a:hover{color:var(--gb-ink)}
.gb-legal-article .small{font-size:15px;line-height:1.6;color:var(--gb-ink);margin-bottom:28px}
.gb-legal-article pre{white-space:pre-wrap;word-break:break-word;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:14px;line-height:1.6;
  color:var(--primary);background:var(--neutral-100);border-radius:20px;padding:28px 30px;margin:8px 0 24px;
  box-shadow:0 -6px 0 0 rgba(var(--gb-ink-rgb),.04) inset,0 3px 0 0 rgba(255,255,255,.6) inset}
@media (max-width:767px){.gb-legal{padding:132px 0 72px}.gb-legal-article pre{padding:20px 18px;border-radius:16px;font-size:13px}}

/* Loops heading (owner, 2026-09-03): "24 pre-built loops designed to / give you
   back your life". Line one measures 957px at 72px, so the 760px heading column
   forced a third line at desktop. Widen the heading to the grid's own 1040px;
   keep the paragraph beneath at its reading measure. */
.section-loops .heading-section{max-width:1040px}
.section-loops .gb-honest{max-width:760px}

/* Optional Obsidian view. This uses the same pale raised surface and coral
   icon treatment as the setup and pricing cards, so compatibility reads as
   part of Gigabrain rather than a separate Obsidian-branded microsite. */
.section-obsidian{background:var(--white)}
.gb-obsidian-layout{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:clamp(44px,6vw,88px);align-items:center;padding:clamp(32px,5vw,64px);border-radius:40px;background:var(--neutral-100);box-shadow:0 7.77px 16px 0 rgba(var(--gb-ink-rgb),.06),0 3px 3px 0 rgba(var(--gb-ink-rgb),.10),0 -8px 0 0 rgba(var(--gb-ink-rgb),.05) inset,0 4px 0 0 rgba(255,255,255,.6) inset}
.gb-obsidian-visual{min-height:390px;padding:0 clamp(36px,4vw,60px) 0 0;border-right:1px solid rgba(var(--gb-ink-rgb),.10);color:var(--primary);display:flex;flex-direction:column;justify-content:center}
.gb-obsidian-lockup{display:flex;align-items:center;gap:18px;margin-bottom:32px}
.gb-obsidian-mark{box-sizing:border-box;width:72px;height:72px;border-radius:16px;background:linear-gradient(180deg,#EA2B16 0%,#FF3B26 100%);box-shadow:0 3.44px 5.57px rgba(var(--gb-ink-rgb),.09),0 22.91px 37.08px rgba(255,59,0,.16),0 14px 34px rgba(255,59,0,.25),0 -3px 0 rgba(var(--gb-ink-rgb),.06) inset,0 1px 0 rgba(255,255,255,.6) inset;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.gb-obsidian-mark img{display:block;width:42px;height:42px;filter:brightness(0) invert(1)}
.gb-obsidian-lockup > span:last-child{font-size:32px;line-height:1;font-weight:700;letter-spacing:-.02em;color:var(--primary)}
.gb-obsidian-flow{display:grid;gap:10px}
.gb-obsidian-flow-row{display:grid;gap:5px;padding:18px 20px;border-radius:18px;background:var(--white);box-shadow:0 3px 3px rgba(var(--gb-ink-rgb),.07),0 -3px 0 rgba(var(--gb-ink-rgb),.035) inset,0 1px 0 rgba(255,255,255,.75) inset}
.gb-obsidian-flow-row strong{font-size:20px;line-height:1.25;color:var(--primary);font-weight:600}
.gb-obsidian-flow-row > span:last-child{font-size:14px;line-height:1.5;color:var(--secondary)}
.gb-obsidian-label{font-size:11px!important;font-weight:700;line-height:1.2!important;letter-spacing:.1em;text-transform:uppercase;color:var(--gb-coral-text)!important}
.gb-obsidian-arrow{font-size:22px;line-height:1;color:var(--gb-coral-text);padding-left:20px}
.gb-obsidian-copy .heading-sub{display:inline-flex;width:max-content;margin:0 0 24px;padding:9px 14px;border-radius:8px;background:rgba(255,255,255,.72);box-shadow:0 3px 3px rgba(var(--gb-ink-rgb),.08),0 1px 0 rgba(255,255,255,.8) inset}
.gb-obsidian-copy .heading-title{font-size:clamp(40px,5vw,64px);line-height:1.04;margin-bottom:28px}
.gb-obsidian-copy > p{max-width:58ch;margin:0 0 18px;font-size:17px;line-height:1.65;color:var(--secondary)}
.gb-obsidian-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;margin-top:6px;color:var(--primary);font-weight:700;text-decoration:underline;text-decoration-color:var(--brand);text-underline-offset:5px}
.gb-obsidian-link:hover{color:var(--gb-coral-text)}
.gb-obsidian-link:focus-visible{outline:2px solid var(--brand);outline-offset:4px;border-radius:4px}
.gb-obsidian-note{font-size:13px!important;line-height:1.5!important;margin-top:12px!important;color:var(--secondary)!important}
@media (max-width:991px){
  .gb-obsidian-layout{grid-template-columns:1fr;gap:40px}
  .gb-obsidian-visual{min-height:0;padding:0 0 40px;border-right:0;border-bottom:1px solid rgba(var(--gb-ink-rgb),.10)}
  .gb-obsidian-copy{max-width:680px}
}
@media (max-width:575px){
  .gb-obsidian-layout{padding:28px 20px 32px;border-radius:28px}
  .gb-obsidian-visual{padding-bottom:32px}
  .gb-obsidian-lockup{margin-bottom:24px}
  .gb-obsidian-mark{width:60px;height:60px;border-radius:14px}
  .gb-obsidian-mark img{width:36px;height:36px}
  .gb-obsidian-lockup > span:last-child{font-size:26px}
  .gb-obsidian-flow-row{padding:16px;border-radius:16px}
  .gb-obsidian-copy .heading-title{font-size:38px}
  .gb-obsidian-copy > p{font-size:16px}
}

/* CRO convergence pass, 2026-09-04. The established warm-paper, ink and
   coral system stays intact; this pass fixes first-screen hierarchy,
   proof adjacency and keyboard access. */
.gb-skip-link{
  position:fixed;z-index:2000;top:12px;left:12px;padding:10px 16px;
  border-radius:8px;background:var(--gb-ink);color:#fff;font-weight:700;
  transform:translateY(-160%);transition:transform .16s ease
}
.gb-skip-link:focus{transform:translateY(0);color:#fff}

.section-hero{min-height:0}
.section-hero .content-wrap{padding:100px 0 44px}
.section-hero .content-wrap .sub{margin-bottom:16px}
.section-hero .content-wrap .title{
  max-width:1120px;margin:0 auto 14px;font-size:clamp(52px,6.15vw,84px);
  line-height:.94;letter-spacing:-.052em
}
.section-hero .content-wrap .title .title2{margin-top:4px;gap:8px}
.section-hero .content-wrap .title-icon{width:160px;height:82px}
.section-hero .content-wrap .title-icon .box{width:160px;height:50px}
.section-hero .content-wrap .title-icon .title-icon-wrap{
  transform:scale(.627);transform-origin:top left
}
.section-hero .content-wrap .title-icon .img-3{left:2px;top:52px}
.section-hero .content-wrap p.text{
  max-width:680px;margin-bottom:16px;font-size:18px;line-height:1.42
}
.section-hero .content-wrap .bot-btns{gap:12px}
.section-hero .content-wrap .bot-btns .tf-btn,
.section-hero .content-wrap .bot-btns .tf-btn-2{min-height:52px;padding:13px 22px}
.section-hero .gb-req{max-width:680px;margin-top:13px;padding-top:11px;font-size:13px;line-height:1.4}

.section-partner .partner-wrap{
  display:grid;grid-template-columns:minmax(150px,.22fr) minmax(0,1fr);
  gap:18px 56px;align-items:center
}
.section-partner .partner-wrap > .infiniteSlide_tech_main{grid-column:2;min-width:0}
.gb-agent-note{
  grid-column:2;max-width:760px;margin:0;color:var(--secondary);
  font-size:13px;line-height:1.5;text-align:left
}
@media (max-width:767px){
  .section-partner .partner-wrap{grid-template-columns:1fr;gap:18px;padding:44px 0}
  .section-partner .partner-wrap > .infiniteSlide_tech_main,.gb-agent-note{grid-column:1;width:100%}
}

/* Specific buying actions stay readable at the bottom of every plan. */
.pricing-item .heading .tf-btn{
  font-size:15px;line-height:1.25;letter-spacing:.01em;text-transform:none
}

.btn-mobile-menu.close-mb-menu{
  border:0;background:transparent;color:#fff;font:inherit;cursor:pointer
}

/* Keep the open dialog immediately perceivable and keyboard reachable. */
.offcanvas-menu.show .canvas_head,
.offcanvas-menu.show .canvas_foot,
.offcanvas-menu.show .nav-ul-mb .item{
  opacity:1;visibility:visible
}
.offcanvas-menu.show .canvas_head{
  transition-delay:0s;transition-property:opacity,transform
}
.offcanvas-menu .canvas_head{
  opacity:1!important;visibility:visible!important
}

@media (max-width:991px){
  .section-hero .content-wrap{padding-top:104px}
}

@media (max-width:767px){
  .section-hero{padding:8px 8px 0}
  .section-hero .hero-image{inset:8px 8px 0}
  .section-hero .content-wrap{padding:92px 0 40px}
  .section-hero .content-wrap .sub{width:fit-content;max-width:100%;margin-bottom:14px;padding:6px 11px;font-size:12px;line-height:1.25;text-align:center}
  .section-hero .content-wrap .title{margin-bottom:12px;font-size:clamp(42px,12.2vw,56px);line-height:.94;letter-spacing:-.048em}
  .section-hero .content-wrap .title .title2{gap:4px}
  .section-hero .content-wrap .title-icon{width:145px;height:80px}
  .section-hero .content-wrap .title-icon .box{width:145px;height:46px}
  .section-hero .content-wrap .title-icon .title-icon-wrap{transform:scale(.57)}
  .section-hero .content-wrap p.text{margin-bottom:14px;font-size:16px;line-height:1.42}
  .section-hero .content-wrap .bot-btns{gap:8px}
  .section-hero .content-wrap .bot-btns .tf-btn,
  .section-hero .content-wrap .bot-btns .tf-btn-2{width:min(100%,300px);min-height:46px;padding:11px 18px;font-size:14px}
  .section-hero .gb-req{margin-top:12px;padding-top:11px;font-size:12px;line-height:1.4}
}

@media (max-width:390px){
  .section-hero .content-wrap{padding-top:96px}
  .section-hero .content-wrap .title{font-size:clamp(37px,10vw,41px)}
  .section-hero .content-wrap .title-icon{height:72px}
  .section-hero .content-wrap p.text{font-size:15px}
  .section-hero .gb-req{font-size:11.5px}
}

/* Sitewide spacing contract. Every section uses the same 8px-based rhythm;
   individual layouts can remove a top edge with .pt-0, but they do not invent
   another section scale. */
.flat-spacing{padding-top:96px;padding-bottom:96px}
@media (min-width:1440px){.flat-spacing{padding-top:120px;padding-bottom:120px}}
@media (max-width:991px){.flat-spacing{padding-top:72px;padding-bottom:72px}}
@media (max-width:767px){
  .flat-spacing{padding-top:56px;padding-bottom:56px}
  #streams.section-tools{padding-top:56px!important;padding-bottom:56px!important}
  .container{padding-left:20px;padding-right:20px}

  /* The mobile header occupies its own band. Its previous 48px top offset
     placed the hero eyebrow underneath the navigation pill. */
  .tf-header{padding-top:20px;margin-bottom:-76px}
  .tf-header .header-inner{margin:0 12px;padding:8px 8px 8px 20px}
  .section-hero .content-wrap{padding:96px 0 48px}

  .heading-section .heading-sub{margin-bottom:24px}
  .heading-section.mb-48{margin-bottom:32px}
  .heading-section.mb-64{margin-bottom:40px}
  .heading-section.mb-70,.heading-section.mb-80{margin-bottom:40px!important}
  .section-about-us .heading-section{margin-bottom:32px}
  .section-about-us .col-left{padding-top:48px}
  .section-about-us .review-box{padding:32px 24px}
  .section-partner .partner-wrap{padding:40px 0}
  .section-process .heading-section,.section-benefits .heading-section{margin-bottom:32px}

  footer{padding-top:0}
  footer .footer-image{display:none}
  .gb-footer{gap:32px;padding:48px 0 32px}
  .gb-footer-bottom{padding:24px 0 32px}
}

/* Embedded Checkout keeps the payment step inside the Gigabrain storefront. */
.gb-checkout-dialog{
  width:min(920px,calc(100% - 32px));max-width:none;max-height:92dvh;margin:auto;padding:0;
  overflow:hidden;border:1px solid rgba(32,23,54,.12);border-radius:24px;color:var(--gb-ink);
  background:var(--gb-paper);box-shadow:0 28px 80px rgba(32,23,54,.28)
}
.gb-checkout-dialog::backdrop{background:rgba(32,23,54,.72);backdrop-filter:blur(8px)}
.gb-checkout-dialog[open]{animation:gb-checkout-in .2s ease-out both}
.gb-checkout-dialog.is-fallback-open{position:fixed;z-index:2000;inset:4dvh auto;display:block}
.gb-checkout-shell{display:grid;grid-template-rows:auto minmax(0,1fr) auto;max-height:92dvh}
.gb-checkout-head{
  position:sticky;top:0;z-index:2;display:flex;align-items:flex-start;justify-content:space-between;gap:24px;
  padding:28px 32px 24px;border-bottom:1px solid var(--gb-rule);background:rgba(255,252,247,.96)
}
.gb-checkout-kicker{display:block;margin-bottom:8px;color:var(--gb-coral);font-size:12px;font-weight:700;letter-spacing:.09em;text-transform:uppercase}
.gb-checkout-head h2{margin:0;color:var(--gb-ink);font-size:clamp(30px,4vw,46px);line-height:1;letter-spacing:-.035em}
.gb-checkout-summary{margin:10px 0 0;color:var(--gb-muted);font-size:15px;line-height:1.45}
.gb-checkout-close{
  flex:0 0 44px;width:44px;height:44px;border:1px solid rgba(32,23,54,.18);border-radius:50%;
  color:var(--gb-ink);background:transparent;font:400 30px/1 Urbanist,sans-serif;cursor:pointer
}
.gb-checkout-close:hover{background:rgba(32,23,54,.05)}
.gb-checkout-close:focus-visible,.gb-checkout-retry:focus-visible{outline:3px solid var(--brand);outline-offset:3px}
.gb-checkout-body{min-height:360px;padding:24px 32px 32px;overflow:auto;background:#fff}
.gb-checkout-description{max-width:700px;margin:0 0 22px;color:var(--gb-muted);font-size:14px;line-height:1.55}
.gb-checkout-loading{display:flex;min-height:220px;align-items:center;justify-content:center;gap:12px;color:var(--gb-muted);text-align:center}
.gb-checkout-loading.is-error{min-height:140px;color:var(--gb-danger)}
.gb-checkout-spinner{width:20px;height:20px;border:2px solid rgba(32,23,54,.16);border-top-color:var(--brand);border-radius:50%;animation:gb-checkout-spin .7s linear infinite}
.gb-checkout-loading.is-error .gb-checkout-spinner,.gb-checkout-loading[hidden]{display:none}
.gb-checkout-mount:not(:empty){min-height:480px}
.gb-checkout-retry{min-width:140px;margin:0 auto 24px}
.gb-checkout-retry:not([hidden]){display:flex}
.gb-checkout-foot{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 32px;border-top:1px solid var(--gb-rule);color:var(--gb-muted);background:var(--gb-paper);font-size:13px}
.gb-checkout-foot nav{display:flex;gap:18px}
.gb-checkout-foot a{color:var(--gb-ink);text-decoration-color:rgba(32,23,54,.35);text-underline-offset:3px}
@keyframes gb-checkout-in{from{opacity:0;transform:translateY(10px) scale(.99)}to{opacity:1;transform:none}}
@keyframes gb-checkout-spin{to{transform:rotate(360deg)}}
@media (max-width:620px){
  .gb-checkout-dialog{width:calc(100% - 12px);max-height:96dvh;border-radius:18px}
  .gb-checkout-shell{max-height:96dvh}
  .gb-checkout-head{padding:22px 20px 18px}
  .gb-checkout-body{padding:20px 14px 24px}
  .gb-checkout-foot{align-items:flex-start;flex-direction:column;padding:16px 20px}
}
@media (prefers-reduced-motion:reduce){
  .gb-checkout-dialog[open]{animation:none}
  .gb-checkout-spinner{animation-duration:1.4s}
}
