:root{
  --navy:#001C50; --teal:#18887C; --teal-deep:#10665D; --sun:#E8A13A; --sun-deep:#B8740F;
  --text:#22304A; --muted:#566377; --line:#DCE6E4; --sky:#EEF5F4; --white:#fff;
  --display:"Bricolage Grotesque", "Segoe UI", system-ui, sans-serif;
  --body:"Figtree", "Segoe UI", system-ui, sans-serif;
  --wrap:1160px; --hh:148px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--white);color:var(--text);font:400 17px/1.65 var(--body);-webkit-font-smoothing:antialiased}
img{max-width:100%;height:auto;display:block}
a{color:var(--teal-deep)}
a:focus-visible,button:focus-visible{outline:3px solid var(--sun);outline-offset:3px;border-radius:4px}
h1,h2,h3{font-family:var(--display);color:var(--navy);line-height:1.08;letter-spacing:-.02em;margin:0}
h1{font-size:clamp(2.5rem,5.6vw,4.4rem);font-weight:800}
h2{font-size:clamp(1.9rem,3.4vw,2.7rem);font-weight:700}
h3{font-size:1.45rem;font-weight:700;letter-spacing:-.01em}
p{margin:0 0 1em}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 28px}
.skip{position:absolute;left:-9999px}.skip:focus{left:12px;top:12px;z-index:50;background:#fff;padding:8px 12px}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:10px;font:600 16px/1 var(--body);text-decoration:none;
  padding:15px 22px;border-radius:999px;border:2px solid transparent;transition:background .2s,color .2s,border-color .2s}
.btn-sun{background:var(--sun);color:#2A1A00}
.btn-sun:hover{background:#F2B154}
.btn-line{border-color:var(--navy);color:var(--navy)}
.btn-line:hover{background:var(--navy);color:#fff}
.btn-small{padding:11px 18px;font-size:15px}

/* ---------- header: the menu arch is the logo ring ---------- */
.site-header{position:sticky;top:0;z-index:20;height:var(--hh);background:rgba(255,255,255,.96);
  backdrop-filter:saturate(1.2) blur(6px);border-bottom:1px solid var(--line);transition:height .35s ease}
.header-in{position:relative;height:100%;max-width:1320px;margin:0 auto}
.wordmark{position:absolute;left:28px;top:24px;z-index:3}
.wordmark img{height:40px;width:auto}
.header-cta{position:absolute;right:28px;top:22px;z-index:3;gap:0}
.sunpath{position:absolute;inset:0}
.sunpath svg.arc{position:absolute;inset:0;width:100%;height:100%;overflow:hidden}
#ring{fill:none;stroke:var(--teal);stroke-width:6;stroke-linecap:round}
#needleLine{stroke:var(--teal);stroke-width:6;stroke-linecap:round}
#ball{fill:var(--sun);stroke:#fff;stroke-width:3}
.stops{list-style:none;margin:0;padding:0}
.js .stops li{position:absolute;transform:translate(-50%,-50%)}
.stops a{display:flex;flex-direction:column;align-items:center;gap:7px;text-decoration:none;color:var(--muted);
  font:600 13.5px/1.1 var(--body);padding:6px;min-width:44px}
.dot{width:12px;height:12px;border-radius:50%;background:#fff;border:2.5px solid var(--teal);transition:background .2s,transform .2s,border-color .2s}
.stops a:hover .dot,.stops a:focus-visible .dot{background:var(--sun);border-color:var(--sun-deep);transform:scale(1.25)}
.stops a:hover,.stops a:focus-visible{color:var(--navy)}
.stops a[aria-current="page"]{color:var(--navy)}
.stops a[aria-current="page"] .dot{background:var(--teal)}
.here{display:none}
/* azimuth readout beside the sun */
.az{position:absolute;z-index:4;transform:translate(0,-50%);font:600 12.5px/1 var(--body);font-variant-numeric:tabular-nums;
  color:var(--navy);white-space:nowrap;pointer-events:none;background:rgba(255,255,255,.9);padding:4px 7px;border-radius:7px}
.az.left{transform:translate(-100%,-50%)}
.az b{color:var(--teal-deep);font-weight:600;margin-left:3px}
.site-header.compact .az{display:none}
/* opening: the logo grows into the header ring */
.sf-opening{position:fixed;inset:0;z-index:100;background:#fff;cursor:pointer}
.sf-opening svg{position:absolute;inset:0;width:100%;height:100%}
#ring,#needle,.az,.stops,.wordmark,.here{transition:opacity .45s ease}
.header-cta{transition:opacity .45s ease,background .2s}
.intro-on #ring,.intro-on #needle,.intro-on .az,.intro-on .stops,.intro-on .wordmark,.intro-on .header-cta,.intro-on .here{opacity:0}
/* no-JS fallback: a plain list */
html:not(.js) .sunpath{position:static;padding:84px 0 0}
html:not(.js) .stops{display:flex;flex-wrap:wrap;gap:4px 18px;justify-content:center}
html:not(.js) svg.arc{display:none}
/* compact on scroll: the ring flattens, labels hide */
.site-header.compact{--hh:78px}
.site-header.compact .label{display:none}
.site-header.compact .wordmark img{height:34px}
.site-header.compact .wordmark,.site-header.compact .header-cta{top:16px}
/* phones: dots only; the page name under the ring opens the menu */
.menu-sheet{display:none}
@media (max-width:860px){
  :root{--hh:150px}
  .site-header.compact{--hh:150px}
  .wordmark{left:14px;top:16px}.wordmark img{height:30px}
  .header-cta{right:14px;top:14px;padding:9px 13px;font-size:13.5px}
  .label{display:none}
  .sunpath svg.arc{clip-path:inset(58px 0 0 0)}  /* keep the needle clear of the logo and button row */
  .here{display:inline-flex;align-items:center;gap:6px;position:absolute;left:50%;transform:translateX(-50%);z-index:4;
    background:#fff;border:1px solid var(--line);border-radius:999px;padding:6px 14px;font:600 13.5px/1 var(--body);color:var(--navy);cursor:pointer}
  .here svg{width:10px;height:10px}
  .menu-sheet{position:absolute;left:12px;right:12px;top:calc(var(--hh) - 4px);background:#fff;border:1px solid var(--line);
    border-radius:14px;box-shadow:0 22px 50px -26px rgba(0,28,80,.45);padding:8px}
  .menu-sheet.open{display:block}
  .menu-sheet a{display:block;padding:13px 14px;border-radius:9px;color:var(--navy);text-decoration:none;font-weight:600}
  .menu-sheet a[aria-current="page"]{background:var(--sky)}
}

/* ---------- sections ---------- */
section{padding:96px 0}
.tint{background:var(--sky)}
.lede{font-size:1.22rem;color:var(--muted);max-width:34em}
.intro{max-width:40em;color:var(--muted);font-size:1.1rem;margin-top:14px}
.actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}

/* hero */
.hero{padding:72px 0 88px}
.hero .wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:52px;align-items:center}
.hero h1{max-width:12em;font-size:clamp(2.4rem,5vw,4.1rem)}
.hero .lede{margin-top:22px}
.proof{margin-top:30px;padding-top:20px;border-top:1px solid var(--line);color:var(--muted);font-size:15.5px;max-width:30em}
.proof strong{color:var(--navy)}
.hero figure{margin:0;position:relative}
.hero figure img{border-radius:18px 18px 18px 4px;box-shadow:0 30px 60px -36px rgba(0,28,80,.55)}
figcaption{font-size:14px;color:var(--muted);margin-top:12px}

/* tools */
.tool-main{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:48px;align-items:center;margin-top:46px}
.tool-main .shot img{border-radius:12px;border:1px solid var(--line);box-shadow:0 26px 50px -34px rgba(0,28,80,.5)}
.tool-main ul{padding:0;margin:18px 0 22px;list-style:none}
.tool-main li{padding:7px 0 7px 26px;position:relative}
.tool-main li::before{content:"";position:absolute;left:2px;top:15px;width:11px;height:11px;border-radius:50%;background:var(--sun)}
.price{font-family:var(--display);font-size:1.55rem;font-weight:700;color:var(--navy)}
.price small{font:500 15px var(--body);color:var(--muted);margin-left:6px}
.tool-more{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px;margin-top:56px;padding-top:34px;border-top:1px solid var(--line)}
.tool-more h3{font-size:1.2rem;margin-bottom:6px}
.tool-more p{color:var(--muted);margin:0 0 8px}

/* custom automation steps */
.steps{list-style:none;padding:0;margin:44px 0 0;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:22px;counter-reset:s}
.steps li{counter-increment:s;padding-top:18px;border-top:3px solid var(--teal)}
.steps li.gate{border-top-color:var(--sun)}
.steps li::before{content:counter(s,decimal-leading-zero);display:block;font:800 1.9rem/1 var(--display);color:var(--navy);margin-bottom:12px}
.steps b{display:block;color:var(--navy);font-size:1.02rem;margin-bottom:6px}
.steps span{color:var(--muted);font-size:.95rem;line-height:1.5}
.gate-note{margin-top:26px;color:var(--muted);font-size:15px}
.gate-note i{display:inline-block;width:22px;height:3px;background:var(--sun);vertical-align:middle;margin-right:8px}

/* work */
.work-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:22px;margin-top:44px}
.work-grid a{text-decoration:none;color:inherit;display:block}
.work-grid figure{margin:0}
.work-grid img{border-radius:12px;aspect-ratio:16/10;object-fit:cover;width:100%;transition:transform .35s}
.work-grid a:hover img{transform:scale(1.015)}
.work-grid h3{font-size:1.15rem;margin:14px 0 4px}
.work-grid p{color:var(--muted);font-size:15px;margin:0}
.w-a{grid-column:span 4;grid-row:span 2}
.w-a img{aspect-ratio:16/11.4}
.w-a h3{font-size:1.4rem}
.w-b,.w-c{grid-column:span 2}
.w-d,.w-e{grid-column:span 3}
.see-all{margin-top:34px}

/* design */
.design .wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:56px;align-items:center}
.deliverables{display:flex;flex-wrap:wrap;gap:8px;margin:22px 0 26px;padding:0;list-style:none}
.deliverables li{border:1px solid #BFD6D2;background:#fff;border-radius:999px;padding:6px 14px;font-size:15px;color:var(--navy)}
.design figure{margin:0}.design figure img{border-radius:14px}

/* founder */
.founder .wrap{display:grid;grid-template-columns:minmax(0,.62fr) minmax(0,1fr);gap:56px;align-items:center}
.founder img{border-radius:200px 200px 16px 16px;filter:contrast(1.04)}
.founder blockquote{margin:0;font:600 1.5rem/1.35 var(--display);color:var(--navy);letter-spacing:-.01em;max-width:24em}
.founder .who{margin-top:22px;color:var(--muted)}
.founder .who strong{color:var(--navy);display:block;font-size:1.05rem}

/* contact */
.contact{background:var(--navy);color:#DDE6F3}
.contact h2{color:#fff;max-width:17em}
.contact .intro{color:#B9C7DC}
.contact .btn-line{border-color:#fff;color:#fff}.contact .btn-line:hover{background:#fff;color:var(--navy)}
.contact .meta{margin-top:26px;font-size:15px;color:#9FB0C9}

/* footer */
footer{padding:56px 0 36px;font-size:15px;color:var(--muted)}
.foot-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:28px;padding-bottom:30px;border-bottom:1px solid var(--line)}
.foot-grid img{height:38px;width:auto;margin-bottom:14px}
.foot-grid h4{font:700 15px var(--body);color:var(--navy);margin:4px 0 12px}
.foot-grid a{display:block;color:var(--muted);text-decoration:none;padding:3px 0}
.foot-grid a:hover{color:var(--teal-deep);text-decoration:underline}
.foot-bottom{display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;padding-top:20px;font-size:14px}

/* responsive */
@media (max-width:1020px){
  .steps{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:34px}
}
@media (max-width:860px){
  section{padding:68px 0}
  .hero{padding:40px 0 64px}
  .hero .wrap,.tool-main,.design .wrap,.founder .wrap{grid-template-columns:minmax(0,1fr);gap:34px}
  .tool-more{grid-template-columns:minmax(0,1fr)}
  .work-grid{grid-template-columns:minmax(0,1fr)}
  .w-a,.w-b,.w-c,.w-d,.w-e{grid-column:auto;grid-row:auto}
  .w-a img{aspect-ratio:16/10}
  .founder img{max-width:min(100%,320px)}
  .foot-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:430px){.header-cta .long{display:none}}
@media (max-width:560px){
  .wrap{padding:0 20px}
  .steps{grid-template-columns:minmax(0,1fr)}
  .foot-grid{grid-template-columns:1fr}
  .btn{padding:14px 18px}
}
@media (prefers-reduced-motion:reduce){
  *{transition:none!important;scroll-behavior:auto!important}
}

/* ================= inner pages ================= */
.page-hero{padding:64px 0 48px}
.page-hero h1{font-size:clamp(2.2rem,4.6vw,3.6rem);max-width:15em}
.page-hero .lede{margin-top:18px}
.crumbs{font-size:14.5px;color:var(--muted);margin:0 0 14px}
.crumbs a{color:var(--muted)}
.prose{max-width:42em}
.prose p{margin:0 0 1.1em}
.prose h3{margin:1.6em 0 .4em}
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:56px;align-items:start}
.split.center{align-items:center}
.split figure{margin:0}
.split figure img{border-radius:14px}
.rows{list-style:none;padding:0;margin:34px 0 0;border-top:1px solid var(--line)}
.rows li{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.6fr);gap:28px;padding:20px 0;border-bottom:1px solid var(--line)}
.rows b{font-family:var(--display);font-size:1.15rem;color:var(--navy);font-weight:700;letter-spacing:-.01em}
.rows span{color:var(--muted)}
.ex{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:20px 0 0}
.ex li{border:1px solid #BFD6D2;background:#fff;border-radius:999px;padding:7px 15px;font-size:15px;color:var(--navy)}
.callout{background:#fff;border:1px solid var(--line);border-left:4px solid var(--sun);border-radius:10px;padding:20px 24px;margin-top:34px;max-width:46em}
.callout p{margin:0}

/* facts for a project or product */
.facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin:30px 0 0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}
.facts div{padding:16px 20px;border-right:1px solid var(--line)}
.facts div:last-child{border-right:0}
.facts dt{font-size:14px;color:var(--muted);margin:0 0 4px}
.facts dd{margin:0;font-family:var(--display);font-weight:700;color:var(--navy);font-size:1.12rem;letter-spacing:-.01em}

/* project hero image and gallery */
.lead-img{margin:40px 0 0}
.lead-img img{border-radius:16px;width:100%;box-shadow:0 30px 60px -40px rgba(0,28,80,.55)}
.gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin-top:34px}
.gallery figure{margin:0}
.gallery a{display:block}
.gallery img{border-radius:12px;width:100%;aspect-ratio:16/9;object-fit:cover}
.gallery figcaption{margin-top:8px}
.gallery .wide{grid-column:1 / -1}
.gallery .wide img{aspect-ratio:auto}
.spec{width:100%;border-collapse:collapse;margin-top:22px;font-size:15.5px}
.spec th,.spec td{text-align:left;padding:11px 12px;border-bottom:1px solid var(--line);vertical-align:top}
.spec th{width:42%;color:var(--muted);font-weight:500}
.spec td{color:var(--navy);font-weight:600}
.note{font-size:14.5px;color:var(--muted);margin-top:10px}
.pager{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-top:56px;padding-top:26px;border-top:1px solid var(--line)}
.pager a{text-decoration:none;color:var(--navy);font-weight:600}
.pager small{display:block;color:var(--muted);font-weight:400;font-size:14px}

/* interactive 3D model, loaded only on request */
.viewer{position:relative;margin-top:34px;border-radius:16px;overflow:hidden;background:#101113;aspect-ratio:16/9}
.viewer img{width:100%;height:100%;object-fit:cover;opacity:.55}
.viewer .load{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:#fff;text-align:center;padding:20px}
.viewer .load p{margin:0;color:#D6DEEA;font-size:15px}
.viewer iframe{position:absolute;inset:0;width:100%;height:100%;border:0}

/* work index */
.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:34px 28px;margin-top:40px}
.cards a{text-decoration:none;color:inherit;display:block}
.cards img{border-radius:12px;aspect-ratio:16/10;object-fit:cover;width:100%;transition:transform .35s}
.cards a:hover img{transform:scale(1.015)}
.cards h3{margin:14px 0 4px;font-size:1.3rem}
.cards p{color:var(--muted);margin:0;font-size:15.5px}
.more-list{list-style:none;padding:0;margin:20px 0 0}
.more-list li{padding:14px 0;border-top:1px solid var(--line);color:var(--muted)}
.more-list b{color:var(--navy)}

/* product page */
.ts-hero .wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:52px;align-items:center}
.ts-hero figure{margin:0}
.ts-hero figure img{border-radius:14px;border:1px solid var(--line);box-shadow:0 30px 60px -38px rgba(0,28,80,.55)}
.terms-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;margin-top:34px}
.terms-grid h3{font-size:1.15rem;margin-bottom:6px}
.terms-grid p{color:var(--muted);margin:0}

/* four-step process */
.steps.four{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:860px){.steps.four{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.steps.four{grid-template-columns:minmax(0,1fr)}}

/* FAQ */
.faq{max-width:48em;margin-top:30px;border-top:1px solid var(--line)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{cursor:pointer;list-style:none;padding:18px 34px 18px 0;position:relative;font-weight:600;color:var(--navy);font-size:1.05rem}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";position:absolute;right:6px;top:24px;width:10px;height:10px;border-right:2px solid var(--teal);border-bottom:2px solid var(--teal);transform:rotate(45deg);transition:transform .2s}
.faq details[open] summary::after{transform:rotate(225deg);top:28px}
.faq details p{margin:0 0 18px;color:var(--muted);max-width:42em}

/* contact form */
.form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 18px;margin-top:6px}
.form .full{grid-column:1 / -1}
.form label{display:block;font-weight:600;color:var(--navy);font-size:15px;margin-bottom:6px}
.form input,.form select,.form textarea{width:100%;font:inherit;color:var(--text);padding:12px 14px;border:1.5px solid #C9D7D4;border-radius:10px;background:#fff}
.form textarea{min-height:150px;resize:vertical}
.form input:focus,.form select:focus,.form textarea:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 3px rgba(24,136,124,.18)}
.form .hp{position:absolute;left:-9999px}
.form-msg{grid-column:1 / -1;margin:0;border-radius:10px;padding:12px 16px;display:none}
.form-msg.ok{display:block;background:#E8F4EE;color:#1E5E3F}
.form-msg.err{display:block;background:#FBECE8;color:#86321F}
.channels{list-style:none;padding:0;margin:0}
.channels li{padding:16px 0;border-bottom:1px solid var(--line)}
.channels b{display:block;color:var(--navy)}
.channels a{font-weight:600}
.small{font-size:14.5px;color:var(--muted)}

/* legal pages: long text */
.legal-in{max-width:780px}
.legal-in h1{font-size:clamp(2rem,4vw,2.8rem);margin-bottom:8px}
.legal-in h2{font-size:1.35rem;margin:2.2em 0 .5em;padding-top:1.1em;border-top:1px solid var(--line)}
.legal-in h3{font-size:1.05rem;margin:1.4em 0 .3em}
.legal-in .meta{font-size:14.5px;color:var(--muted);margin-bottom:24px}
.legal-in .summary{background:var(--sky);border-left:3px solid var(--teal);border-radius:8px;padding:16px 20px;margin:24px 0}
.legal-in .summary h2{border:0;margin:0 0 .4em;padding:0;font-size:1.05rem}
.legal-in table{border-collapse:collapse;width:100%;font-size:15px}
.legal-in th,.legal-in td{text-align:left;vertical-align:top;padding:10px;border-bottom:1px solid var(--line)}
.legal-in th{background:var(--sky)}
.legal-in .wrapx{overflow-x:auto}
.legal-in li{margin-bottom:.4em}

@media (max-width:860px){
  .split,.ts-hero .wrap{grid-template-columns:minmax(0,1fr);gap:34px}
  .rows li{grid-template-columns:minmax(0,1fr);gap:4px}
  .facts{grid-template-columns:repeat(2,minmax(0,1fr))}
  .facts div:nth-child(2){border-right:0}
  .facts div:nth-child(-n+2){border-bottom:1px solid var(--line)}
  .gallery,.cards,.terms-grid{grid-template-columns:minmax(0,1fr)}
  .form{grid-template-columns:minmax(0,1fr)}
}

/* ================= header: floats over the page ================= */
/* Its height can change without moving the content, so scrolling can never make it bounce. */
:root{--hh-full:148px}
body{padding-top:var(--hh-full)}
html{scroll-padding-top:96px}
.site-header{position:fixed;top:0;left:0;right:0;transition:none}
.site-header.compact .label{display:block;opacity:0;visibility:hidden}
.label{transition:opacity .2s ease,visibility .2s ease}
.wordmark img{transition:height .3s ease}
.wordmark{transition:top .3s ease,opacity .45s ease}
.header-cta{transition:top .3s ease,opacity .45s ease,background .2s}
.az{display:none}
@media (max-width:860px){:root{--hh-full:150px}}

/* ================= tools catalogue ================= */
.app{display:inline-block;border:1px solid #BFD6D2;border-radius:999px;padding:3px 10px;font-size:13px;color:var(--navy);font-weight:600;background:#fff}
.status{display:inline-block;border-radius:999px;padding:4px 10px;font-size:13px;font-weight:600}
.status.available{background:#E3F3EE;color:#176A5E}
.status.early{background:#FBEFD9;color:#8A5A00}
.status.soon{background:#EEF1F5;color:#4B5668}
.tool-list{list-style:none;padding:0;margin:26px 0 0;border-top:1px solid var(--line)}
.tool-row{display:grid;grid-template-columns:120px minmax(0,1fr) 250px;gap:28px;padding:28px 0;border-bottom:1px solid var(--line);align-items:start}
.ti{width:120px;height:110px;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid var(--line);border-radius:14px}
.ti img{max-width:92px;max-height:86px;width:auto;height:auto}
.tool-row h3{margin:0}
.tool-row p{margin:0;color:var(--muted)}
.tool-price{font-family:var(--display);font-weight:700;color:var(--navy);font-size:1.15rem;margin:0}
.tool-side .actions{gap:8px;margin-top:10px}
.tool-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:40px}
.tool-card{display:grid;grid-template-columns:84px minmax(0,1fr);gap:18px;padding:18px;border:1px solid var(--line);border-radius:14px;text-decoration:none;color:inherit;background:#fff;align-items:start}
a.tool-card:hover{border-color:var(--teal)}
.tool-card .ti{width:84px;height:78px;border:0;background:var(--sky)}
.tool-card .ti img{max-width:64px;max-height:60px}
.tool-card h3{font-size:1.15rem;margin:2px 0 4px}
.tool-card p{margin:0;color:var(--muted);font-size:15px}
.tool-card p.small{margin-top:8px}
.plain{padding-left:20px;margin:14px 0 0;color:var(--muted)}
.plain li{margin:0 0 .5em}
.pillars{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
.pillars li{border-top:3px solid var(--teal);padding-top:14px}
.pillars b{display:block;font-family:var(--display);font-size:1.25rem;color:var(--navy);letter-spacing:-.01em;margin-bottom:4px}
.pillars span{color:var(--muted);font-size:.95rem}
.tool-hero-icon{display:flex;justify-content:center}
.tool-hero-icon img{width:60%;max-width:260px;height:auto}
.design-band{background:var(--sky);padding:72px 0}
.design-band h2{max-width:20em}
@media (max-width:860px){
  .tool-row{grid-template-columns:84px minmax(0,1fr)}
  .tool-row .ti{width:84px;height:78px}
  .tool-row .tool-side{grid-column:2}
  .tool-grid,.pillars{grid-template-columns:minmax(0,1fr)}
  .tool-hero-icon img{width:40%}
}

/* ================= home: toolkit mosaic and design band ================= */
.toolkit{margin:0}
.mosaic{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.mtile{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 8px 13px;background:#fff;border:1px solid var(--line);border-radius:14px;
  text-decoration:none;color:var(--navy);font:600 13.5px/1.2 var(--body);text-align:center;transition:border-color .2s,transform .2s}
.mtile img{height:50px;width:auto}
.mtile.available{border-color:var(--teal);box-shadow:0 0 0 3px rgba(24,136,124,.12)}
.mtile.soon{color:var(--muted)}
.mtile.soon img{opacity:.6}
a.mtile:hover{border-color:var(--teal);transform:translateY(-2px)}
.toolkit figcaption{text-align:center}
.design-band .mini{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.design-band .mini img{border-radius:10px;aspect-ratio:4/3;object-fit:cover;width:100%}
.design-band .mini a:hover img{opacity:.92}
@media (max-width:860px){.mosaic{gap:8px}.mtile{padding:12px 6px 10px;font-size:12.5px}.mtile img{height:40px}}

/* ================= brand palette only: navy and teal, no orange ================= */
:root{--sun:var(--teal);--sun-deep:var(--teal-deep)}
.btn-sun{background:var(--teal-deep);color:#fff}
.btn-sun:hover{background:var(--teal)}
#ball{fill:var(--teal);stroke:#fff;stroke-width:3}
.stops a:hover .dot,.stops a:focus-visible .dot{background:var(--teal);border-color:var(--teal-deep)}
.steps li.gate{border-top-color:var(--navy)}
.callout{border-left-color:var(--teal)}
.status.early{background:#E6ECF7;color:#1F3F80}
.price small,.tool-price{color:var(--navy)}
a:focus-visible,button:focus-visible{outline-color:var(--teal)}
.contact .btn-sun{background:#fff;color:var(--navy)}
.contact .btn-sun:hover{background:var(--sky)}

/* ================= TrueSouth buy page ================= */
.testbar{background:var(--sky);color:var(--navy);border-bottom:1px solid #BFD6D2;text-align:center;font:600 13.5px/1.2 var(--body);padding:9px 16px}
.buy-hero .lede{max-width:32em}
.buy-shot{margin:0}
.buy-shot img{border-radius:16px;border:1px solid var(--line);box-shadow:0 34px 70px -40px rgba(0,28,80,.55)}
.buy-grid{display:grid;grid-template-columns:minmax(0,1fr) 420px;gap:56px;align-items:start}
.buy-card{position:sticky;top:110px;background:#fff;border:1px solid var(--line);border-radius:18px;padding:26px 26px 22px;box-shadow:0 30px 60px -40px rgba(0,28,80,.4)}
.buy-product{margin:0 0 10px;color:var(--muted);font-size:15px}
.buy-product b{color:var(--navy)}
.price-block{padding-bottom:18px;margin-bottom:18px;border-bottom:1px solid var(--line)}
.price-block p{margin:0}
.price-block .was{font-size:15px;color:var(--muted)}
.price-block .was s{color:var(--muted)}
.price-block .now{font-family:var(--display);font-weight:800;font-size:2.6rem;color:var(--navy);letter-spacing:-.02em;line-height:1.1}
.price-block .now small{display:block;font:500 15px/1.3 var(--body);color:var(--muted);margin-top:2px}
.price-block .save{display:inline-block;margin-top:10px;background:var(--sky);color:var(--teal-deep);border-radius:999px;padding:5px 12px;font-size:14px;font-weight:600}
.form.one{grid-template-columns:minmax(0,1fr);gap:14px}
.form.one label{font-size:14px}
.b2b{border:1px solid var(--line);border-radius:10px;padding:10px 14px;display:grid;gap:12px}
.b2b summary{cursor:pointer;font-weight:600;color:var(--navy);font-size:14.5px}
.agree{display:flex;gap:10px;align-items:flex-start;font-size:14px;color:var(--muted);line-height:1.5}
.agree input{margin-top:4px;flex:none;width:17px;height:17px;accent-color:var(--teal)}
.buy-card .pay{width:100%;justify-content:center;font-size:17px;padding:17px 22px}
.buy-card .pay:disabled{opacity:.55;cursor:default}
.buy-card .form-msg{grid-column:auto}
.trust{list-style:none;padding:14px 0 0;margin:0;border-top:1px solid var(--line)}
.trust li{font-size:13.5px;color:var(--muted);padding:5px 0 5px 22px;position:relative}
.trust li::before{content:"";position:absolute;left:2px;top:11px;width:9px;height:9px;border-radius:50%;background:var(--teal)}
@media (max-width:1020px){.buy-grid{grid-template-columns:minmax(0,1fr)}.buy-card{position:static}}

/* gallery images shown at their own proportions */
.gallery figure.nat img{aspect-ratio:auto;object-fit:contain}

/* ================= phones: less scrolling ================= */
:root{--gut:28px}
.site-header{transition:transform .3s ease}
.site-header.tucked{transform:translateY(-105%)}
.swipe-dots{display:none}
@media (max-width:860px){
  section{padding:56px 0}
  .page-hero{padding:34px 0 30px}
  h2{font-size:clamp(1.6rem,6.4vw,2.1rem)}
  .intro{font-size:1.02rem}
  /* card stacks become horizontal swipe rows; each card shows a slice of the next */
  .tool-grid,.steps,.pillars,.terms-grid,.gallery,.cards,.rows,.tool-list{
    display:flex!important;flex-wrap:nowrap;gap:14px;overflow-x:auto;overscroll-behavior-x:contain;
    scroll-snap-type:x mandatory;scroll-padding-left:var(--gut);-webkit-overflow-scrolling:touch;scrollbar-width:none;
    margin-left:calc(-1 * var(--gut));margin-right:calc(-1 * var(--gut));padding:6px var(--gut) 10px;border-top:0}
  .tool-grid::-webkit-scrollbar,.steps::-webkit-scrollbar,.pillars::-webkit-scrollbar,.terms-grid::-webkit-scrollbar,
  .gallery::-webkit-scrollbar,.cards::-webkit-scrollbar,.rows::-webkit-scrollbar,.tool-list::-webkit-scrollbar{display:none}
  .tool-grid>*,.steps>*,.pillars>*,.terms-grid>*,.gallery>*,.cards>*,.rows>*,.tool-list>*{flex:0 0 82%;scroll-snap-align:start;min-width:0}
  .rows>li{display:block;background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px 18px 20px}
  .rows b{display:block;margin-bottom:6px}
  .tint .rows>li,.tint .steps>li{background:#fff}
  .steps>li{background:#fff;border:1px solid var(--line);border-top:3px solid var(--teal);border-radius:12px;padding:16px 16px 18px}
  .steps>li.gate{border-top-color:var(--navy)}
  .pillars>li{background:#fff;border:1px solid var(--line);border-top:3px solid var(--teal);border-radius:12px;padding:16px}
  .terms-grid>div{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px}
  .tool-list>li.tool-row{grid-template-columns:70px minmax(0,1fr);background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;align-content:start}
  .tool-list .tool-row .ti{width:70px;height:64px}
  .tool-list .tool-row .tool-side{grid-column:1 / -1}
  .gallery>figure{flex-basis:86%}
  .gallery .wide{grid-column:auto}
  .swipe-dots{display:flex;justify-content:center;gap:6px;margin:10px 0 0}
  .swipe-dots i{width:6px;height:6px;border-radius:3px;background:#C3D3D0;transition:width .25s,background .25s}
  .swipe-dots i.on{width:18px;background:var(--teal)}
  .foot-grid{grid-template-columns:1fr 1fr;gap:22px 18px}
  .foot-grid>div:first-child{grid-column:1 / -1}
  footer{padding:40px 0 28px}
}
@media (max-width:560px){
  :root{--gut:20px}
  section{padding:46px 0}
  .hero{padding:28px 0 46px}
  .design-band{padding:46px 0}
  .tool-grid>*,.cards>*,.rows>*,.tool-list>*{flex-basis:84%}
  .steps>*,.pillars>*,.terms-grid>*{flex-basis:76%}
}
@media (prefers-reduced-motion:reduce){.site-header{transition:none}}

@media (max-width:860px){
  /* tool cards: icon above, text full width, so the cards stay short */
  .tool-grid>.tool-card{grid-template-columns:minmax(0,1fr);gap:10px;padding:16px}
  .tool-grid>.tool-card .ti{width:56px;height:52px}
  .tool-grid>.tool-card .ti img{max-width:44px;max-height:40px}
  .tool-list>li.tool-row{grid-template-columns:minmax(0,1fr);gap:10px}
  .tool-list .tool-row .ti{width:56px;height:52px}
  .tool-list .tool-row .ti img{max-width:44px;max-height:40px}
  .tool-list .tool-row .tool-side{grid-column:auto}
}

/* ================= swipe rows: controls and gesture ================= */
.swipe-nav{display:none}
@media (max-width:860px){
  .tool-grid,.steps,.pillars,.terms-grid,.gallery,.cards,.rows,.tool-list{touch-action:pan-y}
  .dragging{-webkit-user-select:none;user-select:none}
  .dragging a,.dragging img{pointer-events:none}
  .swipe-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:8px 0 0}
  .swipe-nav .swipe-dots{display:flex;gap:0;margin:0}
  .swipe-nav .swipe-dots i{width:20px;height:28px;display:flex;align-items:center;justify-content:center;background:none;cursor:pointer}
  .swipe-nav .swipe-dots i::before{content:"";width:6px;height:6px;border-radius:3px;background:#C3D3D0;transition:width .25s,background .25s}
  .swipe-nav .swipe-dots i.on::before{width:18px;background:var(--teal)}
  .paddles{display:flex;gap:8px}
  .paddle{width:38px;height:38px;border-radius:50%;border:1px solid #CFDCDA;background:#fff;color:var(--navy);display:flex;align-items:center;justify-content:center;padding:0;cursor:pointer;transition:opacity .2s,background .2s}
  .paddle svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
  .paddle:active{background:var(--sky)}
  .paddle:disabled{opacity:.3;cursor:default}
}

/* report highlights stay full width, one after another, on phones too */
@media (max-width:860px){
  .gallery.stack{display:grid!important;grid-template-columns:minmax(0,1fr);gap:26px;overflow:visible;margin:28px 0 0;padding:0;touch-action:auto}
  .gallery.stack>figure{flex:none;min-width:0}
  .gallery.stack img{aspect-ratio:auto;object-fit:contain;border:1px solid var(--line);border-radius:10px;background:#fff}
}

.gallery.stack a.zoom{display:block;cursor:zoom-in}
@media (max-width:860px){.gallery.stack figcaption::after{content:" Tap to enlarge.";color:var(--teal-deep);font-weight:600}}
