/* circlesco.tech · shared system (tokens, type, header, footer, buttons, devices, motion) */

@font-face{font-family:"Gilroy";src:url("/shared/fonts/gilroy-light.otf") format("opentype");font-weight:300;font-display:swap}
@font-face{font-family:"Gilroy";src:url("/shared/fonts/gilroy-regular.otf") format("opentype");font-weight:400;font-display:swap}
@font-face{font-family:"Gilroy";src:url("/shared/fonts/gilroy-medium.otf") format("opentype");font-weight:500;font-display:swap}
@font-face{font-family:"Gilroy";src:url("/shared/fonts/gilroy-semibold.otf") format("opentype");font-weight:600;font-display:swap}
@font-face{font-family:"Gilroy";src:url("/shared/fonts/gilroy-bold.otf") format("opentype");font-weight:700;font-display:swap}
@font-face{font-family:"Gilroy";src:url("/shared/fonts/gilroy-extrabold.otf") format("opentype");font-weight:800;font-display:swap}
@font-face{font-family:"Gilroy";src:url("/shared/fonts/gilroy-black.otf") format("opentype");font-weight:900;font-display:swap}

/* ---------- Tokens ---------- */
:root{
  --blue:#1264FF;
  --ink:#0B0B0F;
  --white:#fff;
  --g1:#F4F4F6;
  --g2:#ECECF0;
  --g3:#6B6B73;
  --line:rgba(11,11,15,.12);
  --line-dark:rgba(255,255,255,.14);
  --gut:clamp(24px,6vw,200px);
  --max:1600px; /* the standard content width: every section that isn't full width lines up with the homepage CTA */
  --ease:cubic-bezier(.16,1,.3,1);
  --r:12px;
  --sans:"Gilroy",system-ui,sans-serif;
  --mono:"Space Mono",ui-monospace,monospace;
  --nav-h:76px;
  /* type scale */
  --t-display:clamp(60px,15.6vw,300px);
  --t-h1:clamp(44px,5.6vw,104px);
  --t-h2:clamp(30px,3.6vw,56px);
  --t-lead:clamp(17px,1.35vw,21px);
  --t-body:16px;
  --t-mono:12px;
  /* product colors (use only inside that product's own moment) */
  --c-studio:#0060FF;
  --c-blup:#6d47ff;
  --c-blup-bg:#0c0d10;
  --c-kn:#0C0C0E;
  --c-kn-paper:#F6F3EE;
  --c-comm:#1264FF;
  --c-tk:#2b3a4a;
  --c-tk-ochre:#c9962e;
}

/* ---------- Base ---------- */
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:auto}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
body{font-family:var(--sans);font-weight:500;color:var(--ink);background:var(--white);line-height:1.4;overflow-x:hidden;-webkit-font-smoothing:antialiased}
body.is-leaving main,body.is-leaving footer{opacity:0;transition:opacity .35s ease}
img,video{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none}
b,strong{font-weight:700}
em{font-style:normal}
p,h1,h2,h3{text-wrap:pretty}
h1,h2{text-wrap:balance}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
:focus{outline:none}
:focus-visible{outline:none;background:rgba(18,100,255,.10)}
::selection{background:var(--blue);color:#fff}

.mono{font-family:var(--mono);font-weight:400;font-size:var(--t-mono);letter-spacing:0;line-height:1.5}
/* eyebrows, section labels and meta labels: caps, tracked, one line (never for URLs, code or values inside screens) */
.mono-cap,.eyebrow,.sec-head .mono,.cta-kicker,.foot h4,.num-list .mono,.hero-meta,.p-label,.grid-cap{text-transform:uppercase;letter-spacing:.07em;white-space:nowrap}
.hero-meta .dim{white-space:normal}
.dim{color:var(--g3)}
.wrap{width:min(var(--max),100% - 2*var(--gut));margin-inline:auto}
.wrap-wide{width:min(var(--max),100% - 2*var(--gut));margin-inline:auto}
.h1{font-weight:900;font-size:var(--t-h1);letter-spacing:-.045em;line-height:.95;max-width:12ch}
.h2{font-weight:800;font-size:var(--t-h2);line-height:1.02;letter-spacing:-.035em;max-width:16em}
.lead{font-size:var(--t-lead);line-height:1.35;font-weight:500}
.sec-head{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-bottom:18px;border-bottom:1px solid var(--line);margin-bottom:clamp(28px,4vw,56px)}
.sec-head .eyebrow{color:var(--ink)}
.on-dark .sec-head{border-bottom-color:var(--line-dark)}
.on-dark .sec-head .eyebrow{color:#fff}
.on-dark .dim{color:rgba(255,255,255,.55)}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;height:48px;padding:0 22px;border-radius:var(--r);font-weight:700;font-size:15px;white-space:nowrap;transition:background .4s var(--ease),color .4s var(--ease)}
.btn-ink{background:var(--ink);color:#fff}
.btn-ink:hover{background:var(--blue)}
.btn-blue{background:var(--blue);color:#fff}
.btn-blue:hover{background:var(--ink);color:#fff}
.on-dark .btn-blue:hover{background:#fff;color:var(--ink)}
.btn-ghost{box-shadow:inset 0 0 0 2px var(--ink)}
.btn-ghost:hover{background:var(--ink);color:#fff}
.btn-xl{height:72px;padding:0 40px;font-size:20px;border-radius:16px}
.link-arrow{display:inline-flex;align-items:center;gap:8px;font-weight:700;font-size:15px;padding:6px 0;border-bottom:2px solid currentColor;transition:gap .4s var(--ease)}
.link-arrow:hover{gap:14px}

/* ---------- Logo motif: "+" and a ring ---------- */
.mark{display:inline-flex;align-items:center;gap:6px;height:14px}
.mark .plus{position:relative;width:12px;height:12px;display:block}
.mark .plus::before,.mark .plus::after{content:"";position:absolute;background:var(--blue);left:50%;top:50%;transform:translate(-50%,-50%)}
.mark .plus::before{width:12px;height:2.5px}
.mark .plus::after{width:2.5px;height:12px}
.mark .ring{width:14px;height:14px;border:2.5px solid currentColor;border-radius:50%;display:block;transition:background .5s var(--ease),border-color .5s var(--ease)}

/* ---------- Header ---------- */
.nav{position:fixed;inset:0 0 auto 0;z-index:50;height:var(--nav-h);display:flex;align-items:center;justify-content:space-between;gap:24px;padding:0 var(--gut);transition:transform .5s var(--ease),background .5s var(--ease),box-shadow .5s var(--ease)}
.nav.is-scrolled{background:rgba(255,255,255,.86);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 1px 0 var(--line)}
.nav.is-hidden{transform:translateY(-100%)}
.nav-logo{display:flex;align-items:baseline;gap:8px}
.nav-logo img{width:168px;height:auto}
.nav-tech{font-weight:900;font-size:18px;letter-spacing:-.02em;color:var(--blue);transform:translateY(-1px)}
.nav-links{display:flex;gap:34px;font-weight:600;font-size:15px}
.nav-links a{position:relative;padding:8px 0}
.nav-links a::after{content:"";position:absolute;left:0;right:0;bottom:4px;height:2px;background:var(--blue);transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease)}
.nav-links a:hover::after,.nav-links a[aria-current]::after{transform:scaleX(1)}

/* ---------- Footer ---------- */
.foot{background:var(--ink);color:#fff;padding:clamp(48px,6vw,88px) 0 28px}
.foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:40px;padding-bottom:40px;border-bottom:1px solid var(--line-dark)}
.foot-logo{width:180px;height:auto}
.foot-tag{margin-top:18px;color:rgba(255,255,255,.6);max-width:26em;font-size:15px}
.foot h4{font-family:var(--mono);font-weight:400;font-size:12px;color:rgba(255,255,255,.5);margin-bottom:14px}
/* About band (portrait + copy) */
.about{padding:clamp(80px,10vw,150px) 0;background:var(--white);border-top:1px solid var(--line)}
.about-grid{display:grid;grid-template-columns:minmax(0,min(600px,calc(38% + 40px))) minmax(0,1fr);gap:clamp(120px,12.5vw,240px);align-items:center} /* wide gap: the portrait sticks out half its width to the right of the photo */ /* square photo; copy centered against it */
.about-portrait{margin:0;width:100%}
.about-stack{position:relative} /* the studio photo fills the column; the founder's portrait sits in a circle centered on its right edge, half sticking out */
.about-photo{width:100%;height:auto;aspect-ratio:1/1;object-fit:cover;border-radius:28px;display:block}
.about-face{position:absolute;right:0;top:50%;transform:translate(50%,-50%);width:44%;height:auto;aspect-ratio:1/1;object-fit:cover;object-position:50% 26%;border-radius:50%;border:clamp(6px,.7vw,12px) solid var(--white);display:block;box-sizing:border-box}
.about-portrait figcaption{margin-top:14px;color:var(--g3)}
.about-title{font-weight:900;font-size:clamp(40px,5.4vw,104px);letter-spacing:-.04em;line-height:.95;max-width:12ch;margin-bottom:clamp(24px,3vw,40px)}
.about-text{max-width:36em;color:var(--ink);font-size:clamp(18px,1.45vw,24px);line-height:1.45}
.about-links{display:flex;gap:32px;flex-wrap:wrap;margin-top:clamp(28px,3vw,44px)}
.foot li{margin-bottom:10px;font-weight:600;font-size:15px}
.foot li a{color:rgba(255,255,255,.85)}
.foot li a:hover{color:#fff}
.foot-bottom{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-top:24px;color:rgba(255,255,255,.55)}

/* ---------- Contact CTA band (shared pattern) ---------- */
.cta{background:var(--ink);color:#fff;padding:clamp(100px,14vw,200px) 0 clamp(80px,10vw,140px)}
.cta-kicker{color:rgba(255,255,255,.6);margin-bottom:28px}
.cta .h1{color:#fff}
.cta-row{display:flex;align-items:center;gap:clamp(28px,4vw,64px);margin-top:clamp(40px,6vw,88px);flex-wrap:wrap}
.cta-note{font-size:var(--t-lead);color:rgba(255,255,255,.72);max-width:30em;line-height:1.35}

/* ---------- Marquee ---------- */
.marquee{overflow:hidden;background:var(--blue);color:#fff;padding:clamp(18px,2vw,28px) 0;white-space:nowrap}
.marquee-track{display:inline-flex;align-items:center;gap:clamp(28px,3vw,56px);font-weight:900;font-size:clamp(56px,8vw,140px);letter-spacing:-.045em;line-height:1;will-change:transform;padding-right:clamp(28px,3vw,56px)}
.mq-mark{position:relative;width:.42em;height:.42em;border:.06em solid #fff;border-radius:50%;flex:0 0 auto;display:block}
.mq-mark::before,.mq-mark::after{content:"";position:absolute;background:#fff;left:50%;top:50%;transform:translate(-50%,-50%)}
.mq-mark::before{width:.4em;height:.06em}.mq-mark::after{width:.06em;height:.4em}

/* ---------- Motion utilities ---------- */
[data-reveal]{opacity:0;transform:translateY(28px);filter:blur(10px)}
[data-reveal].is-in{opacity:1;transform:none;filter:blur(0);transition:opacity .9s var(--ease),transform .9s var(--ease),filter .9s var(--ease)}

/* ==========================================================
   DEVICES · all CSS, screens hold real captures only
   ========================================================== */

/* Browser frame */
.frame{position:relative;background:#fff;border-radius:14px;overflow:hidden;border:1px solid rgba(11,11,15,.10);box-shadow:0 1px 0 rgba(11,11,15,.04),0 30px 60px -30px rgba(11,11,15,.22)}
.frame-dark{background:#0F1117;border-color:rgba(255,255,255,.08)}
.frame-bar{height:38px;display:flex;align-items:center;gap:14px;padding:4px 16px 0;background:var(--g1);border-bottom:1px solid rgba(11,11,15,.08)}
.frame-dark .frame-bar{background:#161923;border-bottom-color:rgba(255,255,255,.06)}
.dots{display:flex;gap:7px}
.dots i{width:11px;height:11px;border-radius:50%;background:rgba(11,11,15,.14)}
.frame-dark .dots i{background:rgba(255,255,255,.14)}
.url{flex:1;max-width:420px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:7px;background:rgba(11,11,15,.05);color:var(--g3);font-size:11px;margin-inline:auto;white-space:nowrap;overflow:hidden}
.frame-dark .url{background:rgba(255,255,255,.06);color:rgba(255,255,255,.55)}
.frame .shot{width:100%;aspect-ratio:16/10;object-fit:cover;object-position:top center}
.frame .shot-left{object-position:left top}

/* MacBook Pro */
.mac{position:relative;width:100%}
.mac-lid{position:relative;background:#0a0a0c;border-radius:clamp(10px,1.4vw,20px) clamp(10px,1.4vw,20px) 4px 4px;padding:1.6% 1.4% 1.4%;box-shadow:inset 0 0 0 1px rgba(255,255,255,.09),0 1px 0 rgba(255,255,255,.06)}
.mac-notch{position:absolute;left:50%;top:0;transform:translateX(-50%);width:10.5%;height:14px;background:#0a0a0c;border-radius:0 0 7px 7px;z-index:3}
.mac-screen{position:relative;overflow:hidden;border-radius:6px;background:#000;aspect-ratio:16/10}
.mac-screen .frame{position:absolute;inset:0;border:0;border-radius:0;box-shadow:none}
.mac-screen .screen{position:absolute;left:0;right:0;top:38px;bottom:0;overflow:hidden;background:#0b0b0d}
.mac-screen .frame.no-bar .screen{top:0}
.mac-base{position:relative;height:clamp(10px,1.1vw,16px);margin:0 -1.6%;background:linear-gradient(#e9e9ec,#c4c4c9 55%,#9d9da3);border-radius:3px 3px clamp(8px,1vw,14px) clamp(8px,1vw,14px);box-shadow:0 1px 0 rgba(0,0,0,.35),0 -1px 0 rgba(255,255,255,.5) inset}
.mac-base::before{content:"";position:absolute;left:50%;top:0;transform:translateX(-50%);width:17%;height:46%;background:linear-gradient(#8d8d94,#b9b9bf);border-radius:0 0 6px 6px}
.mac::after{content:"";position:absolute;left:3%;right:3%;bottom:-22px;height:34px;background:radial-gradient(50% 50% at 50% 50%,rgba(0,0,0,.5),transparent 72%);filter:blur(8px);z-index:-1;pointer-events:none}

/* iPhone 15 Pro · body 71.6:146.6, screen exactly 390:844 */
.iph{position:relative;aspect-ratio:71.6/146.6;filter:drop-shadow(0 30px 40px rgba(0,0,0,.45))}
.iph-body{position:absolute;inset:0;border-radius:14% / 6.84%;background:linear-gradient(160deg,#8a8a90 0%,#4a4a50 30%,#5d5d63 55%,#2c2c30 100%);box-shadow:inset 0 0 0 1px rgba(255,255,255,.25),inset 0 0 0 2px rgba(0,0,0,.35)}
.iph-inner{position:absolute;inset:1.15% 2.5%;border-radius:12.6% / 6.15%;background:#000}
.iph-screen{position:absolute;inset:2.44% 5%;border-radius:10.6% / 5.18%;overflow:hidden;background:#000}
.iph-island{position:absolute;left:50%;top:3.6%;transform:translateX(-50%);width:29%;height:3.2%;background:#000;border-radius:999px;z-index:2;box-shadow:0 0 0 1px rgba(255,255,255,.05)}
.iph .b{position:absolute;width:2.2%;background:linear-gradient(90deg,#6a6a70,#35353a);border-radius:2px}
.iph .b-action{left:-1.9%;top:14%;height:3%}
.iph .b-vup{left:-1.9%;top:20%;height:6.4%}
.iph .b-vdn{left:-1.9%;top:28%;height:6.4%}
.iph .b-pwr{right:-1.9%;top:22.5%;height:10.5%;background:linear-gradient(90deg,#35353a,#6a6a70)}
.iph-screen .screen{position:absolute;inset:0;overflow:hidden;background:#000}

/* iPad (portrait, 3:4 screen) */
.ipad{position:relative;aspect-ratio:3/4.1;filter:drop-shadow(0 30px 40px rgba(0,0,0,.35))}
.ipad-body{position:absolute;inset:0;border-radius:6%/4.4%;background:linear-gradient(160deg,#3a3a40,#17171a 45%,#2a2a2f);box-shadow:inset 0 0 0 1px rgba(255,255,255,.18),inset 0 0 0 2px rgba(0,0,0,.4)}
.ipad-screen{position:absolute;inset:4.6% 5%;border-radius:2.6%/1.9%;overflow:hidden;background:#000}
.ipad-cam{position:absolute;left:50%;top:2%;width:1.4%;aspect-ratio:1;border-radius:50%;background:#0a0a0c;box-shadow:inset 0 0 0 1px rgba(255,255,255,.15);transform:translateX(-50%)}
.ipad-screen .screen{position:absolute;inset:0;overflow:hidden;background:#f4f6fb}

/* Screen contents: still, video, tall scroller */
.screen>img,.screen>video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:left top}
.screen.scr>img{position:absolute;left:0;top:0;width:100%;height:auto;object-fit:unset;will-change:transform}

/* Crop piece: a literal crop of a real screenshot, floating on a device edge */
.fl{position:absolute;z-index:6;will-change:transform;transform:translateZ(120px)}
.fl-in{will-change:transform;filter:drop-shadow(0 28px 36px rgba(0,0,0,.26)) drop-shadow(0 2px 4px rgba(0,0,0,.12))}
.fl-in>img{width:100%;height:auto;border-radius:12px;display:block}

/* Device stack: one grid. iPhone on the laptop's lower third (bottom 8% below the base line, 18% over the screen);
   f1 crosses the base line on the opposite lower corner, inside the lid edge (a tall f1 shares the phone's baseline); f2 shares the phone's side, high on the lid edge. */
.stack{position:relative;transform-style:preserve-3d}
.stack .mac{transform:none}
.stack .iph{position:absolute;z-index:4;width:20%;bottom:-8%;transform:translateZ(90px)}
.stack.alt-l .iph{left:-2%}
.stack.alt-r .iph{right:-2%}
.stack .f1{width:30%;bottom:1%}
.stack.alt-l .f1{right:4%}
.stack.alt-r .f1{left:4%}
.stack .f2{width:22%;top:14%}
.stack.alt-l .f2{left:-8%}
.stack.alt-r .f2{right:-8%}
.stack .f1.tall{width:21%;bottom:-8%}
.stack.alt-r .f1.tall{left:-11%}
.stack.alt-l .f1.tall{right:-11%}
.stack .f2.tall{width:13%;top:8%}

/* ---------- Responsive ---------- */
@media (max-width:1100px){
  .foot-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:900px){
  :root{--nav-h:64px}
  .about-grid{grid-template-columns:1fr;gap:32px}
  .about-portrait{width:100%}
  /* phones: the photo is full width; the portrait grows and sits centered on its bottom edge, half below */
  .about-stack{margin-bottom:22%}
  .about-face{right:auto;top:auto;left:50%;bottom:0;transform:translate(-50%,50%);width:44%}
  .about-portrait figcaption{text-align:center}
  .about-links{flex-direction:column;gap:14px}
  .nav-links{display:none}
  .nav-logo img{width:140px}
  .btn-xl{height:60px;padding:0 28px;font-size:17px;width:100%}
  .cta-row{flex-direction:column;align-items:flex-start}
  .foot-grid{grid-template-columns:1fr;gap:28px}
  .foot-bottom{flex-direction:column;align-items:flex-start}
  .foot li{margin-bottom:2px}
  .foot li a{display:inline-block;padding:9px 0}
  .mac-notch{height:9px;width:12%}
  .frame-bar{height:28px;padding:2px 10px 0}
  .mac-screen .screen{top:28px}
  .url{font-size:9px;height:18px}
  .fl{transform:none}
  .stack .iph{width:26%;bottom:-8%}
  .stack.alt-l .iph{left:-2%}
  .stack.alt-r .iph{right:-2%}
  .stack .f1{width:44%;bottom:0}
  .stack.alt-l .f1{right:3%}
  .stack.alt-r .f1{left:3%}
  .stack .f2{display:none}
  .stack .f1.tall{width:auto}
  .stack.alt-r .f1.tall{left:0}
  .stack.alt-l .f1.tall{right:0}
}
@media (prefers-reduced-motion:reduce){
  [data-reveal]{transform:none;filter:none;transition:opacity .6s ease}
  .marquee-track{transform:none!important}
  .fl,.fl-in,.stack .iph{transform:none!important}
  body.is-leaving main,body.is-leaving footer{transition:none}
}

/* page never scrolls sideways (parallax pieces may pass the edge); clip keeps sticky/pins working */
html,body{overflow-x:clip}

/* form send error (forms.js) */
.form-send-err{margin-top:16px;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:#E5484D}
.grecaptcha-badge{visibility:hidden!important}
.form-legal{margin-top:14px;font-size:10px;letter-spacing:.04em;opacity:.55;line-height:1.5}
.form-legal a{text-decoration:underline}
