/* NuvoMilo — "Milo, alive in 3D". System fonts, zero dependencies. Motion = transform/opacity only. */
:root{--ink:#1d1b18;--muted:#5b554c;--paper:#fffdf8;--cream:#fff6e6;--line:#ece5d8;--sky:#5aa9e6;--lilac:#9b8cff;--sun:#ffcc4d;--peach:#ffb48f;--sage:#a9cf93;--grad:linear-gradient(100deg,var(--sky),var(--lilac) 52%,var(--sun));--ease:cubic-bezier(.2,.8,.2,1);--t1:.2s;--t2:.4s;--t3:.8s;--radius:28px;--font:"Segoe UI Variable Display","Segoe UI Variable",-apple-system,BlinkMacSystemFont,"SF Pro Display",system-ui,Roboto,"Helvetica Neue",Arial,sans-serif;--grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.6'/%3E%3C/svg%3E")}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:96px;overflow-x:clip}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font);line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
button,input,select{font:inherit}
a,button,select{-webkit-tap-highlight-color:transparent}
button,select{cursor:pointer}
img{max-width:100%;display:block}
picture{display:contents}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #276a99;outline-offset:4px}
h1,h2,h3,p,figure{margin:0}
h1,h2,h3{line-height:1.06;letter-spacing:-.04em}
h1{font-size:clamp(46px,7vw,84px);font-weight:800;line-height:1.02}
h2{font-size:clamp(32px,4vw,52px);font-weight:800;letter-spacing:-.035em}
h3{font-size:27px;font-weight:800}
h1 em{font-style:normal;position:relative;z-index:0}
h1 em:after{content:'';position:absolute;left:-1%;right:-1%;bottom:.05em;height:.2em;border-radius:99px;background:var(--grad);z-index:-1;transform:rotate(-2deg);transform-origin:left;animation:underline 1s var(--ease) .75s backwards}
.wrap{max-width:1240px;margin:auto;padding-left:max(30px,env(safe-area-inset-left));padding-right:max(30px,env(safe-area-inset-right))}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:fixed;top:-100px;left:15px;z-index:100;background:var(--ink);color:#fff;padding:12px}
.skip:focus{top:10px}
[hidden]{display:none!important}
/* motion system keyframes */
@keyframes rise{from{opacity:0;transform:translateY(18px)}}
@keyframes word{from{opacity:0;transform:translateY(30px);filter:blur(8px)}}
@keyframes underline{from{transform:rotate(-2deg) scaleX(0)}}
@keyframes fade{from{opacity:0}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes glow{50%{opacity:.65;transform:scale(1.06)}}
/* header: glass, shrinks on scroll (JS toggles .is-small) */
.header{--hh:76px;--sh:.84;position:sticky;top:env(safe-area-inset-top,0px);z-index:30;height:var(--hh)}
.header:before{content:'';position:absolute;inset:0;background:rgba(255,253,248,.72);-webkit-backdrop-filter:saturate(1.5) blur(18px);backdrop-filter:saturate(1.5) blur(18px);border-bottom:1px solid transparent;transform-origin:top;transition:transform var(--t2) var(--ease),background-color var(--t2),box-shadow var(--t2),border-color var(--t2)}
.header.is-small:before{transform:scaleY(var(--sh));background:rgba(255,253,248,.88);border-color:var(--line);box-shadow:0 12px 30px -18px rgba(29,27,24,.4)}
.nav{position:relative;height:100%;display:flex;align-items:center;justify-content:space-between;gap:22px;transition:transform var(--t2) var(--ease)}
.header.is-small .nav{transform:translateY(calc(var(--hh)*(var(--sh) - 1)/2))}
.brand{display:flex;align-items:center;min-height:44px;width:176px;flex-shrink:0;transform-origin:left center;transition:transform var(--t2) var(--ease)}
.brand img{width:176px;height:auto}
.header.is-small .brand{transform:scale(.82)}
.nav nav{display:flex;gap:4px;font-size:15px;font-weight:700}
.nav nav a{position:relative;display:inline-flex;align-items:center;min-height:44px;padding:0 14px}
.nav nav a:after{content:'';position:absolute;left:14px;right:14px;bottom:7px;height:2px;border-radius:2px;background:var(--grad);transform:scaleX(0);transform-origin:left;transition:transform var(--t2) var(--ease)}
.nav nav a:hover:after,.nav nav a:focus-visible:after{transform:scaleX(1)}
.preferences{display:flex;gap:10px;align-items:center;font-size:13px;font-weight:700}
.language{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;padding:0 6px;white-space:nowrap}
.language span{color:#6e695f}
.preferences select{max-width:170px;min-height:44px;border:1px solid var(--line);background:#fff;color:var(--ink);padding:0 14px;border-radius:100px;font-size:13px}
/* buttons & links */
.button{position:relative;isolation:isolate;overflow:hidden;display:inline-flex;gap:14px;justify-content:center;align-items:center;min-height:48px;padding:12px 24px;border-radius:100px;background:#fff;font-weight:700;font-size:15px;border:1px solid var(--line);line-height:1.3;transition:transform var(--t1) var(--ease),box-shadow var(--t2) var(--ease),color var(--t2)}
.button:before{content:'';position:absolute;inset:0;z-index:-1;background:var(--grad);opacity:0;transition:opacity var(--t2) var(--ease)}
.button:hover{transform:translateY(-2px);box-shadow:0 14px 26px -14px rgba(90,110,230,.75)}
.button:hover:before{opacity:1}
.button.dark{background:var(--ink);color:#fff;border-color:var(--ink)}
.button.dark:hover{color:var(--ink);border-color:transparent}
.button span{font-size:20px;line-height:1;transition:transform var(--t2) var(--ease)}
.button:hover span{transform:translate(3px,-3px)}
.text-link{display:inline-flex;align-items:center;min-height:44px;font-size:15px;font-weight:700}
.text-link:hover{text-decoration:underline;text-underline-offset:5px}
.eyebrow{font-size:12px;letter-spacing:.14em;font-weight:800;line-height:1.5;margin-bottom:16px}
.lead{font-size:clamp(17px,1.6vw,20px);line-height:1.6;color:var(--muted);margin-top:22px;margin-bottom:28px;max-width:30em}
/* hero */
.hero-shell{position:relative;isolation:isolate;overflow:hidden}
.hero-bg{position:absolute;inset:0;z-index:-1;pointer-events:none}
.hero-bg:after{content:'';position:absolute;inset:0;background-image:var(--grain);opacity:.05}
.blob{position:absolute;border-radius:50%;animation:drift 24s ease-in-out infinite alternate}
.b1{width:60vmax;height:60vmax;left:-18vmax;top:-26vmax;background:radial-gradient(closest-side,rgba(90,169,230,.42),transparent)}
.b2{width:52vmax;height:52vmax;right:-18vmax;top:-12vmax;background:radial-gradient(closest-side,rgba(155,140,255,.34),transparent);animation-duration:30s;animation-delay:-9s}
.b3{width:46vmax;height:46vmax;left:30%;bottom:-30vmax;background:radial-gradient(closest-side,rgba(255,204,77,.4),transparent);animation-duration:27s;animation-direction:alternate-reverse}
@keyframes drift{to{transform:translate3d(7vmax,4vmax,0) scale(1.1)}}
.hero{display:grid;grid-template-columns:1.05fr .95fr;gap:20px;align-items:center;padding-top:36px;padding-bottom:56px}
.hero .eyebrow{max-width:380px;color:#4d4941}
.hero h1 .w{display:inline-block;animation:word .8s var(--ease) backwards;animation-delay:calc(.08s + var(--d,0)*.07s)}
.w1{--d:0}.w2{--d:1}.w3{--d:2}.w4{--d:3}.w5{--d:4}.w6{--d:5}.w7{--d:6}.w8{--d:7}
.hero-copy>:not(h1){animation:rise var(--t3) var(--ease) backwards}
.hero-copy .eyebrow{animation-delay:.04s}.hero .lead{animation-delay:.45s}.hero .button{animation-delay:.55s}.hero .text-link{animation-delay:.62s}.hero .milo-note{animation-delay:.7s}
.hero .text-link{display:flex;margin-top:6px}
.milo-note{display:flex;align-items:center;gap:10px;margin-top:18px;font-size:14px;color:var(--muted)}
.spark{font-size:26px;color:#a4790f}
/* Hero photo window: photos crossfade (opacity) with a slow Ken Burns (transform); Milo floats over its corner. Only transform/opacity animate. */
.hero-stage{position:relative;width:100%;margin-top:40px}
.window{position:relative;isolation:isolate;overflow:hidden;width:100%;aspect-ratio:4/5;max-height:56vh;max-height:56svh;border-radius:28px;background:linear-gradient(135deg,#6ea8ff,#a98bff 55%,#ff8f7a);box-shadow:0 34px 60px -28px rgba(40,50,110,.55),0 12px 24px -16px rgba(40,50,110,.4)}
.window:after{content:'';position:absolute;inset:auto 0 0;height:58%;z-index:3;pointer-events:none;background:linear-gradient(180deg,rgba(14,12,22,0),rgba(14,12,22,.5) 45%,rgba(14,12,22,.84))}
.slide{position:absolute;inset:0;display:block;opacity:0;transition:opacity 1.3s var(--ease)}
.slide img{width:100%;height:100%;object-fit:cover;transform:scale(1.04)}
.slide.on,.slide.is-ns{opacity:1;z-index:2}
.slide.out{opacity:1;z-index:1;transition:none}
.slide.on img,.slide.out img{animation:kb 9s linear forwards}
.slide:nth-child(even).on img,.slide:nth-child(even).out img{animation-name:kb2}
@keyframes kb{from{transform:scale(1.04)}to{transform:scale(1.15) translate(-2%,-1.5%)}}
@keyframes kb2{from{transform:scale(1.15) translate(2%,1%)}to{transform:scale(1.04)}}
.today{position:absolute;top:14px;left:14px;z-index:4;display:inline-flex;align-items:center;gap:9px;max-width:calc(100% - 28px);padding:7px 14px;border-radius:99px;background:rgba(255,253,248,.95);color:var(--ink);font-size:12px;font-weight:800;line-height:1.3}
.hero-cap{position:absolute;left:18px;right:18px;bottom:16px;z-index:4;display:flex;flex-direction:column;gap:10px;color:#fff;text-shadow:0 1px 10px rgba(0,0,0,.55)}
.hero-cap p{font-size:12px;line-height:1.35}
.hero-cap strong{display:block;margin-bottom:2px;font-size:17px;letter-spacing:-.01em}
.dots{display:flex;gap:6px;visibility:hidden}.has-dots .dots{visibility:visible}
.dots i{position:relative;width:24px;height:4px;overflow:hidden;border-radius:4px;background:rgba(255,255,255,.4)}
.dots i.on:after{content:'';position:absolute;inset:0;background:#fff;transform-origin:left;animation:bar 7s linear forwards}
@keyframes bar{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.hero-stage .hero-milo{position:absolute;z-index:5;width:104px;right:-6px;top:-48px}
/* Milo: layered radial-gradient puffs. Sizes in cqw of .milo itself (100 = its width). */
.milo{container-type:inline-size;aspect-ratio:5/4}
.milo-body{position:absolute;inset:0;animation:bob 5.5s ease-in-out infinite;filter:drop-shadow(0 3cqw 3.5cqw rgba(70,120,190,.26))}
.puff,.base{position:absolute;border-radius:50%}
.puff{left:calc(var(--x) - var(--d)/2);top:calc(var(--y) - var(--d)/2);width:var(--d);height:var(--d);background:radial-gradient(circle at 36% 30%,#fff 0,#fffaf1 42%,#f8f6f2 66%,#d9eafb 90%,#b2d5f4 100%)}
.p1{--x:20cqw;--y:56cqw;--d:30cqw}.p2{--x:31cqw;--y:36cqw;--d:30cqw}.p3{--x:53cqw;--y:27cqw;--d:44cqw}.p4{--x:75cqw;--y:38cqw;--d:32cqw}.p5{--x:82cqw;--y:57cqw;--d:28cqw}.p6{--x:50cqw;--y:52cqw;--d:46cqw}
.base{left:12cqw;top:52cqw;width:76cqw;height:24cqw;border-radius:12cqw;background:linear-gradient(180deg,#fffaf1 30%,#d3e6f8 84%,#b2d5f4)}
.eyes{position:absolute;left:35cqw;top:41cqw;display:flex;gap:7cqw}
.eye{position:relative;width:6.2cqw;height:9.4cqw;border-radius:50%;background:#2a2320;animation:blink 5.2s infinite}
.eye+.eye{animation-delay:.04s}
.eye:after{content:'';position:absolute;left:1.2cqw;top:1.4cqw;width:2cqw;height:2cqw;border-radius:50%;background:#fff;opacity:.9}
@keyframes blink{0%,91%,100%{transform:scaleY(1)}94%{transform:scaleY(.08)}}
.cheek{position:absolute;top:53cqw;width:9cqw;height:5cqw;border-radius:50%;background:radial-gradient(closest-side,rgba(255,160,150,.5),transparent)}
.cheek.l{left:27cqw}.cheek.r{left:57cqw}
.star{position:absolute;right:3cqw;top:-5cqw;width:15cqw;color:var(--sun);filter:drop-shadow(0 1cqw 1.4cqw rgba(255,180,0,.45));animation:twinkle 4s ease-in-out infinite}
@keyframes twinkle{50%{transform:scale(.82) rotate(14deg);opacity:.8}}
.milo-shadow{position:absolute;left:14cqw;right:14cqw;top:76cqw;height:7cqw;border-radius:50%;background:radial-gradient(closest-side,rgba(60,90,150,.3),transparent);animation:shadow 5.5s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-2.2cqw) rotate(.8deg)}}
@keyframes shadow{50%{transform:scale(.86);opacity:.65}}
/* promise strip: CSS-only marquee (copies 2-4 are aria-hidden) */
.promise-strip{overflow:hidden;border-block:1px solid var(--line);background:linear-gradient(90deg,#fff4dc,#eaf4ff,#efeaff);-webkit-mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent)}
.marquee{display:flex;width:max-content;animation:marquee 44s linear infinite}
@media(hover:hover){.promise-strip:hover .marquee{animation-play-state:paused}}
.marquee-group{display:flex;flex-shrink:0}
.marquee span{padding:16px 30px;font-size:14px;font-weight:700;white-space:nowrap}
@keyframes marquee{to{transform:translateX(-25%)}}
/* sections */
.section{padding-top:84px;padding-bottom:28px}
.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;margin-bottom:32px}
.section-heading p:not(.eyebrow){color:var(--muted);font-size:16px;margin-top:13px}
.search{display:flex;gap:10px;align-items:center;border:1px solid var(--line);border-radius:100px;padding:4px 18px;min-height:52px;max-width:360px;width:100%;background:#fff;transition:box-shadow var(--t2) var(--ease)}
.search:focus-within{outline:3px solid #276a99;outline-offset:3px}
.search>span{font-size:26px;line-height:1}
.search input{border:0;min-width:0;background:transparent;width:100%;font-size:16px;min-height:44px;padding:8px 0;color:var(--ink)}
.search input:focus-visible{outline:0}
.category-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.category{position:relative;isolation:isolate;overflow:hidden;display:block;aspect-ratio:4/3;border-radius:20px;background:linear-gradient(145deg,#8bbcff,#b9a7ff);color:#fff;font-size:15px;font-weight:800;line-height:1.25;box-shadow:0 14px 28px -20px rgba(40,50,110,.6);transition:box-shadow var(--t2) var(--ease),translate var(--t2) var(--ease)}
.category.c1{background:linear-gradient(145deg,#ffd06b,#ff9a7a)}.category.c2{background:linear-gradient(145deg,#ff9fb4,#ff8f6e)}.category.c3{background:linear-gradient(145deg,#7fdcb4,#6ab7f0)}
.category.tilting{transform:perspective(800px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg))}
.category img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .7s var(--ease)}
.category:hover img{transform:scale(1.07)}
.category:hover{translate:0 -4px;box-shadow:0 22px 34px -18px rgba(40,50,110,.65)}
.category:before{content:'';position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(14,12,22,0) 36%,rgba(14,12,22,.8))}
.category:after{content:'';position:absolute;left:50%;top:50%;z-index:1;width:140%;aspect-ratio:1;margin:-70% 0 0 -70%;border-radius:50%;background:radial-gradient(closest-side,rgba(255,255,255,.95),transparent);translate:calc(var(--mx,0)*45%) calc(var(--my,0)*45%);opacity:0;transition:opacity var(--t2);pointer-events:none}
.category:hover:after{opacity:.3}
.cat-name{position:absolute;left:14px;right:40px;bottom:12px;z-index:2;text-shadow:0 1px 8px rgba(0,0,0,.5)}
.cat-arrow{position:absolute;right:13px;bottom:11px;z-index:2;transition:transform var(--t2) var(--ease)}
.category:hover .cat-arrow{transform:translate(3px,-3px)}
.cat-live{position:absolute;left:8px;top:8px;z-index:3;display:inline-flex;align-items:center;gap:6px;max-width:calc(100% - 16px);padding:4px 10px;border-radius:99px;background:#141b26;color:#fff;font-size:11px;font-weight:800;line-height:1.3;white-space:nowrap;text-shadow:none}
.cat-live:before{content:'';flex:none;width:7px;height:7px;border-radius:50%;background:#ffb020}
.small{font-size:12px;margin-top:16px}
.muted{color:var(--muted)}
.empty{padding:28px;border-radius:16px;background:#f5eee3}
/* guide cards */
.story-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.story{display:block;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:#fff;transition:translate var(--t2) var(--ease),box-shadow var(--t2) var(--ease)}
.story.tilting{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg))}
.story:hover{translate:0 -8px;box-shadow:0 30px 44px -28px rgba(60,80,140,.55)}
.story-art{position:relative;height:190px;display:flex;align-items:center;justify-content:center;overflow:hidden;background:linear-gradient(135deg,#ffe38e,#ffc7a0)}
.story.blue .story-art{background:linear-gradient(135deg,#bfe0fb,#cfc8ff)}
.story.peach .story-art{background:linear-gradient(135deg,#ffd4bd,#ffc0d8)}
.story-art:before,.story-art:after{content:'';position:absolute;border-radius:50%;background:radial-gradient(closest-side,rgba(255,255,255,.75),rgba(255,255,255,0));translate:calc(var(--mx,0)*-16px) calc(var(--my,0)*-12px)}
.story-art:before{width:200px;height:200px;left:-60px;bottom:-90px}
.story-art:after{width:150px;height:150px;right:-30px;top:-60px;translate:calc(var(--mx,0)*22px) calc(var(--my,0)*14px)}
.story-art>span{position:relative;z-index:1;font-size:112px;line-height:1;color:#2b3550;rotate:-8deg;translate:calc(var(--mx,0)*12px) calc(var(--my,0)*8px);transition:scale var(--t2) var(--ease)}
.story:hover .story-art>span{scale:1.1}
.story-number{position:absolute;z-index:1;top:16px;right:18px;font-size:13px;font-weight:800;letter-spacing:.06em;padding:3px 11px;border-radius:99px;background:rgba(255,255,255,.72)}
.story-copy{padding:26px}
.story-copy h3{margin-bottom:14px}
.story-copy>p:not(.eyebrow){font-size:15px;color:var(--muted);line-height:1.65}
.story-copy .eyebrow{font-size:11px;letter-spacing:.12em;margin-bottom:12px;color:#4d4941}
.story-cta{display:flex;justify-content:space-between;align-items:center;font-size:14px;font-weight:700;margin-top:24px}
.story-cta>span{display:grid;place-items:center;width:40px;height:40px;background:var(--cream);border-radius:50%;font-size:20px;transition:background var(--t2)}
.story:hover .story-cta>span{background:var(--sun)}
.hand-star,.popular-star{display:inline-block;font-size:64px;line-height:1;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;animation:spin 18s linear infinite}
/* popular band: rotating conic border + soft glow */
.popular{position:relative;isolation:isolate;overflow:hidden;border-radius:var(--radius);padding:2px;margin-top:56px;box-shadow:0 30px 60px -38px rgba(110,100,240,.6)}
.popular:before{content:'';position:absolute;left:50%;top:50%;width:260%;aspect-ratio:1;translate:-50% -50%;z-index:-1;background:conic-gradient(var(--sky),var(--lilac),var(--sun),var(--sky));animation:spin 9s linear infinite}
.popular-in{position:relative;overflow:hidden;display:flex;align-items:center;gap:30px;padding:38px;border-radius:calc(var(--radius) - 2px);background:linear-gradient(135deg,#fff,#f3f8ff)}
.popular-in:before{content:'';position:absolute;right:-8%;top:-70%;width:55%;aspect-ratio:1;border-radius:50%;background:radial-gradient(closest-side,rgba(155,140,255,.3),transparent);animation:glow 6s ease-in-out infinite}
.popular-in>*{position:relative}
.popular h2{font-size:clamp(28px,3vw,36px)}
.popular p:not(.eyebrow){font-size:15px;max-width:560px;margin-top:12px;color:#46566d}
.popular .button{flex-shrink:0;max-width:280px;margin-left:auto}
.popular .eyebrow{margin-bottom:9px}
/* Hello, Milo band */
.philosophy{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center;padding-top:84px;padding-bottom:84px}
.phil-copy{max-width:520px;justify-self:center}
.phil-copy p:not(.eyebrow){margin-top:17px;color:var(--muted);font-size:17px}
.milo.mini{position:relative;width:150px;margin-bottom:22px}
.photo{position:relative}
.photo-frame{overflow:hidden;border-radius:32px;aspect-ratio:4/3.3;background:#f1e8d6;box-shadow:0 40px 60px -36px rgba(60,80,140,.5)}
.photo-frame img{width:100%;height:100%;object-fit:cover;transform:scale(1.12)}
.photo figcaption{margin-top:14px;font-size:12px;color:var(--muted);text-align:center}
.floating-label{position:absolute;left:-18px;bottom:54px;background:var(--paper);border:1px solid var(--line);box-shadow:0 10px 28px -10px rgba(54,51,47,.3);border-radius:20px;padding:12px 20px;font-size:20px;letter-spacing:-.02em;rotate:-4deg;animation:bobl 6s ease-in-out infinite}
.floating-label span{margin-left:12px;color:#a4790f;font-size:24px}
@keyframes bobl{50%{translate:0 -8px}}
/* guide pages */
.progress{position:fixed;left:0;right:0;top:env(safe-area-inset-top,0px);height:4px;z-index:50;pointer-events:none}
.progress i{display:block;height:100%;background:var(--grad);transform:scaleX(0);transform-origin:left}
.guide-hero{--g1:#cfe6fb;--g2:#ddd6ff;--g3:#ffe9b0;position:relative;isolation:isolate;overflow:hidden;padding:44px 0 64px;border-radius:0 0 clamp(28px,5vw,64px) clamp(28px,5vw,64px)}
.g-yellow{--g1:#ffe9a8;--g2:#ffd2b3;--g3:#fff1cc}.g-blue{--g1:#bfe0fb;--g2:#d3cbff;--g3:#c9f0e4}.g-peach{--g1:#ffd3bd;--g2:#ffc6dc;--g3:#ffe6a8}
.guide-hero:before{content:'';position:absolute;inset:-40% -60%;z-index:-2;background:linear-gradient(110deg,var(--g1),var(--g2) 40%,var(--g3) 75%,var(--g1));animation:gdrift 18s ease-in-out infinite alternate}
.guide-hero:after{content:'';position:absolute;inset:0;z-index:-1;background-image:var(--grain);opacity:.06}
@keyframes gdrift{from{transform:translateX(-8%) rotate(-2deg)}to{transform:translateX(8%) rotate(2deg) scale(1.05)}}
.guide-hero-in{display:grid;grid-template-columns:1.35fr .65fr;gap:30px;align-items:center}
.guide-hero-copy>*{animation:rise var(--t3) var(--ease) backwards}
.guide-hero-copy>:nth-child(2){animation-delay:.08s}.guide-hero-copy>:nth-child(3){animation-delay:.16s}.guide-hero-copy>:nth-child(4){animation-delay:.24s}
.guide-hero h1{font-size:clamp(38px,5.4vw,68px)}
.guide-hero .eyebrow{margin-top:26px;color:#3b362f}
.guide-hero .lead{margin-bottom:0;max-width:34em;color:#463f36}
.gi{position:relative;width:min(100%,280px);aspect-ratio:1;margin-inline:auto;perspective:900px}
.gi .stage-tilt,.gi-float{position:absolute;inset:0;transform-style:preserve-3d}
.gi-float{animation:gfloat 7s ease-in-out infinite}
@keyframes gfloat{0%,100%{transform:translateY(0) rotateY(-16deg) rotateX(6deg)}50%{transform:translateY(-3%) rotateY(14deg) rotateX(-4deg)}}
.gi-card,.gi-plate{position:absolute;left:17%;top:17%;width:66%;height:66%;border-radius:26%}
.gi-card{display:grid;place-items:center;background:linear-gradient(150deg,rgba(255,255,255,.95),rgba(255,255,255,.55));border:1px solid #fff;box-shadow:0 30px 50px -22px rgba(50,70,140,.5),inset 0 -14px 26px rgba(140,160,255,.18);transform:translateZ(50px)}
.gi-card span{font-size:clamp(70px,9vw,110px);line-height:1;color:var(--ink)}
.gi-plate{background:var(--grad);opacity:.85;transform:translateZ(-10px) translate(8%,8%)}
.gi-orb{position:absolute;border-radius:50%;aspect-ratio:1;background:radial-gradient(circle at 35% 30%,#fff,var(--sun))}
.o1{left:6%;top:12%;width:16%;transform:translateZ(110px)}
.o2{right:4%;bottom:10%;width:11%;transform:translateZ(80px);background:radial-gradient(circle at 35% 30%,#fff,var(--sky))}
.article{max-width:860px;padding-top:55px;padding-bottom:70px}
.guide-hero+.article{padding-top:36px}
.article>.eyebrow{margin-top:40px}
.article h1{font-size:clamp(40px,5vw,65px)}
.article .lead{max-width:none;font-size:20px}
.article section{position:relative;padding:28px 0 28px 74px;border-top:1px solid var(--line)}
.article section h2{font-size:28px;letter-spacing:-.03em;margin-bottom:14px}
.article section p{font-size:17px;color:var(--muted)}
.step{position:absolute;left:0;top:28px;display:grid;place-items:center;width:50px;height:50px;border-radius:16px;background:var(--grad);color:var(--ink);font-size:17px;font-weight:800;box-shadow:0 12px 20px -12px rgba(90,110,230,.8),inset 0 1px 0 rgba(255,255,255,.5)}
.article-disclosure{background:#f6efdf;border-radius:14px;padding:14px 18px;font-size:13px;margin:0 0 26px}
.article>p{margin-top:25px}
.guide-cta{position:relative;isolation:isolate;margin-top:36px;padding:34px;border-radius:28px}
.guide-cta:before{content:'';position:absolute;inset:12px 6px -12px 10px;z-index:-2;border-radius:inherit;background:linear-gradient(135deg,#dfe9ff,#fff1c9);rotate:1.6deg}
.guide-cta:after{content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;background:linear-gradient(160deg,#fff,#eef6ff);border:1px solid #d9e6f7;box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(40,70,130,.08),0 28px 48px -26px rgba(60,90,170,.5)}
.guide-cta h2{font-size:30px}
.guide-cta p{margin:15px 0;font-size:15px}
/* footer */
footer{background:#f2ebdf;border-top:1px solid var(--line);margin-top:40px}
.footer-top{display:flex;justify-content:space-between;align-items:center;gap:30px;padding-top:35px;padding-bottom:30px}
.footer-top img{width:190px;height:auto}
.footer-top p{font-size:14px;margin-top:10px;color:var(--muted)}
.footer-links{display:flex;gap:6px;font-size:14px}
.footer-links a{display:inline-flex;align-items:center;min-height:44px;padding:0 10px}
.footer-links a:hover{text-decoration:underline;text-underline-offset:5px}
.fineprint{border-top:1px solid #ddd6c9;padding-top:20px;padding-bottom:max(25px,env(safe-area-inset-bottom));font-size:12px;color:#5d584f}
.fineprint p{margin-bottom:6px}
/* scroll reveal: .rv is only ever added by JS, to elements that are below the fold */
.rv{opacity:0}
.rv-in{animation:rvin var(--t3) var(--ease) calc(var(--i,0)*70ms) backwards}
@keyframes rvin{from{opacity:0;translate:0 28px}}
.story.rv-in{animation-name:flip;transform-origin:50% 100%}
@keyframes flip{from{opacity:0;transform:perspective(900px) rotateX(25deg) translateY(34px)}}
/* pause continuous motion when offscreen (class from IntersectionObserver) or tab hidden */
.is-off,.is-off *,.is-off :before,.is-off :after,.is-off:before,.is-off:after,.is-hidden *,.is-hidden :before,.is-hidden :after{animation-play-state:paused!important}
@media(min-width:701px){.hero-stage{margin-top:0}.window{aspect-ratio:16/11;max-height:none}.hero-cap{flex-direction:row;align-items:flex-end;justify-content:space-between}.hero-stage .hero-milo{width:120px;right:-24px;top:-44px}}
@media(min-width:1001px){.hero{min-height:min(640px,calc(100svh - 118px))}}
@media(max-width:1000px){.nav nav{display:none}.hero{grid-template-columns:1fr;gap:12px;padding-top:28px;padding-bottom:36px}.hero-copy{max-width:560px}.category-grid{grid-template-columns:repeat(3,1fr)}.story-copy{padding:20px}.story-copy h3{font-size:24px}.section-heading{align-items:flex-start}.search{max-width:290px}.popular-in{flex-wrap:wrap}.popular-star{display:none}.philosophy{gap:36px;grid-template-columns:1fr}.phil-copy{justify-self:start}.guide-hero-in{grid-template-columns:1fr}.gi{width:min(60%,220px);margin-top:10px}}
@media(max-width:700px){.wrap{padding-left:max(20px,env(safe-area-inset-left));padding-right:max(20px,env(safe-area-inset-right))}.header{--hh:64px}.nav{gap:8px}.brand,.brand img{width:108px}.preferences{gap:2px}.preferences select{max-width:none;font-size:16px;font-weight:600;padding:0 8px}.preferences label{min-width:0}.language{font-size:12px}h1{font-size:clamp(40px,11.4vw,64px)}.hero{padding-top:22px}.hero .lead{margin-top:18px;margin-bottom:22px}.hero-stage{margin-top:30px}.section{padding-top:56px}.section-heading{display:block}.section-heading .search{margin-top:20px;max-width:none}.category-grid{grid-template-columns:repeat(2,1fr);gap:10px}.category{font-size:14px;border-radius:16px}.cat-name{left:10px;right:10px;bottom:9px}.cat-arrow{display:none}.cat-live{left:6px;top:6px;padding:3px 8px;font-size:10.5px}.story-grid{grid-template-columns:1fr;gap:16px}.story{display:grid;grid-template-columns:96px 1fr}.story-art{height:100%;min-height:220px}.story-art>span{font-size:64px}.story-number{top:10px;right:10px;font-size:11px}.story-copy{padding:20px}.story-copy h3{font-size:24px}.hand-star{display:none}.popular-in{padding:26px 22px;gap:16px}.popular .button{width:100%;max-width:none;margin-left:0}.philosophy{padding-top:48px;padding-bottom:48px}.milo.mini{width:104px}.phil-copy p:not(.eyebrow){font-size:16px}.floating-label{left:10px;font-size:17px;padding:9px 15px;bottom:50px}.footer-top{display:block}.footer-links{margin-top:20px;flex-wrap:wrap}.guide-hero{padding:28px 0 44px}.article section{padding-left:62px}.article section h2{font-size:24px}.article section p{font-size:16px}.step{width:44px;height:44px;border-radius:14px;font-size:15px}.guide-cta{padding:24px}.guide-hero .eyebrow{margin-top:18px}}
@media(max-width:380px){.nav{gap:6px}.brand,.brand img{width:96px}.preferences{gap:2px}.preferences select{letter-spacing:-.02em;padding:0 4px 0 8px}.language{padding:0 2px;margin:0 -2px;font-size:11px}.category{font-size:13px}.story{grid-template-columns:80px 1fr}.story-copy{padding:18px}.story-copy h3{font-size:22px}}
/* phones & touch: lighter effects (no backdrop blur over animated layers, no filters on animated layers, one blob, no glare, no sticky hover) */
@media(max-width:700px),(pointer:coarse){.header:before,.header.is-small:before{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(255,253,248,.95)}.b3{display:none}.blob{animation-duration:40s}.milo-body,.star{filter:none}.category:after{display:none}}
@media(hover:none){.category:hover,.story:hover{translate:none}.category:hover img{transform:none}.story:hover{box-shadow:none}.story:hover .story-art>span{scale:1}.story:hover .story-cta>span{background:var(--cream)}.button:hover{transform:none;box-shadow:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{animation:none!important;transition:none!important}.rv{opacity:1}.marquee{width:auto;flex-wrap:wrap;justify-content:center}.marquee-group{flex-wrap:wrap;justify-content:center}.marquee-group[aria-hidden]{display:none}}
/* dynamic product cards rendered by app.mjs */
.product-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:25px}.product-card{border:1px solid var(--line);border-radius:24px;background:#fff;padding:25px;display:flex;flex-direction:column;gap:16px}.product-card h3{font-size:23px}.product-card>p{font-size:14px;color:var(--muted)}.product-card .button{margin-top:auto}.product-card p.small{font-size:12px}@media(max-width:700px){.product-grid{grid-template-columns:1fr}}
/* Pulso: live official headlines. Motion = transform/opacity only; paused offscreen through [data-live] (fx.mjs); reduced motion removes it. */
.pulse .eyebrow{display:flex;align-items:center;gap:10px}
.live-dot{position:relative;display:inline-block;width:10px;height:10px;flex-shrink:0;border-radius:50%;background:#ffb020}
.live-dot:after{content:'';position:absolute;inset:0;border-radius:50%;background:#ffb020;animation:pring 1.9s ease-out infinite}
@keyframes pring{from{transform:scale(1);opacity:.55}to{transform:scale(3.2);opacity:0}}
.pulse-note{font-size:13px;color:var(--muted);margin-bottom:12px}
.pulse-chips{display:flex;gap:10px;margin:0 -20px;padding:2px 20px 18px;scroll-padding-inline:20px;overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:none;overscroll-behavior-x:contain}
.pulse-chips::-webkit-scrollbar{display:none}
.pulse-chip{flex:0 0 auto;scroll-snap-align:start;min-width:44px;min-height:44px;padding:0 18px;border-radius:99px;border:1px solid var(--line);background:#fff;color:var(--ink);font-size:14px;font-weight:700;line-height:1.2;transition:background-color var(--t2),color var(--t2),border-color var(--t2)}
.pulse-chip:hover{border-color:#b3cdf0}
.pulse-chip[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:#fff}
.pulse-mkts{display:flex;flex-wrap:wrap;gap:8px;margin:-6px 0 18px}
.pulse-mkt{flex:0 0 auto;min-width:44px;min-height:44px;padding:0 16px;border-radius:99px;border:1px solid var(--line);background:#fff;color:var(--ink);font-size:13px;font-weight:700;line-height:1.2;transition:border-color var(--t2),box-shadow var(--t2)}
.pulse-mkt:hover{border-color:#c2410c}
.pulse-mkt[aria-pressed=true]{border-color:var(--ink);box-shadow:inset 0 -3px 0 #ffb020;font-weight:800}
.pulse-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr;gap:14px}
.pulse-card{display:flex;flex-direction:column;gap:10px;min-width:0;padding:16px 18px;border:1px solid var(--line);border-radius:20px;background:#fff;animation:rise .6s var(--ease) calc(var(--i,0)*60ms) backwards}
.pulse-card.is-seen{animation:none}
.pulse-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.pulse-niche{padding:3px 10px;border-radius:99px;color:var(--ink);background:linear-gradient(145deg,#bfe0fb,#dcd5ff)}
.pulse-niche.c1{background:linear-gradient(145deg,#ffe48f,#ffc9a0)}
.pulse-niche.c2{background:linear-gradient(145deg,#ffd2bb,#ffc2da)}
.pulse-niche.c3{background:linear-gradient(145deg,#d6edbf,#bfe3f5)}
.pulse-market{padding:2px 8px;border:1px solid var(--line);border-radius:8px;color:var(--muted)}
.pulse-title{font-size:17px;font-weight:700;line-height:1.35;letter-spacing:-.01em;overflow-wrap:anywhere}
.pulse-link{display:block;min-height:44px;padding:2px 0}
.pulse-link:hover{text-decoration:underline;text-underline-offset:4px}
.pulse-line{margin-top:auto;font-size:13px;color:var(--muted)}
.pulse-empty{padding:22px;border-radius:16px;background:#fff;border:1px solid var(--line);border-left:4px solid #c2410c;color:var(--muted)}
.pulse-more{margin:22px auto 0}
.pulse-credits{display:grid;gap:6px;margin-top:28px;padding-top:18px;border-top:1px solid var(--line);font-size:12px;line-height:1.5;color:var(--muted)}
.pulse-credits p{margin:0}
.pulse-fallback{padding:22px;border-radius:20px;background:#fff;border:1px solid var(--line);border-left:4px solid #c2410c;font-size:15px}
.pulse-sources{list-style:none;display:flex;flex-wrap:wrap;gap:10px;margin:14px 0 0;padding:0}
.pulse-sources a{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border:1px solid var(--line);border-radius:99px;background:#fff;font-size:14px;font-weight:700}
.pulse-sources a:hover{border-color:#b3cdf0}
@media(min-width:701px){.pulse-chips{margin:0 -30px;padding:2px 30px 18px;scroll-padding-inline:30px}.pulse-list{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1001px){.pulse-chips{flex-wrap:wrap;overflow:visible;margin:0;padding:2px 0 18px}.pulse-list{grid-template-columns:repeat(3,1fr)}}
.pulse .section-heading{position:relative;padding-top:26px}
.pulse .section-heading:before{content:'';position:absolute;left:0;top:0;width:min(100%,260px);height:4px;border-radius:4px;background:linear-gradient(90deg,#141b26,#c2410c,#ffb020)}
.pulse .live-dot,.today .live-dot{box-shadow:0 0 0 2px #141b26}
/* LIVE ticker: a 42 px band under the header, always reserved (no layout shift). The flowing gradient is a 300%-wide pseudo-element moved with translateX only.
   Headline text is white: 17.3:1 on the ink stops, 5.2:1 on the burnt-orange stops (AA); the amber label sits on a solid ink pill. Items are 44 px tall hit areas that overflow the band by 1 px. */
.ticker{position:relative;isolation:isolate;height:42px;overflow:hidden;overflow-x:clip;overflow-y:visible;background:#141b26;color:#fff;font-size:13px;font-weight:700}
.ticker:before{content:'';position:absolute;inset:0 auto 0 0;z-index:-1;width:300%;background:linear-gradient(90deg,#141b26,#c2410c,#141b26,#c2410c,#141b26);animation:flow 18s linear infinite}
@keyframes flow{to{transform:translateX(-50%)}}
.ticker-in{display:flex;align-items:center;gap:14px;height:100%}
.ticker-tag{flex:none;display:inline-flex;align-items:center;gap:9px;padding:5px 11px;border-radius:999px;background:#141b26;color:#ffb020;font-size:11px;font-weight:800;letter-spacing:.14em}
.ticker a{color:#fff}
.ticker a:focus-visible{outline-color:#fff;outline-offset:-3px;border-radius:8px}
.ticker-static{display:block;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:44px;height:44px;margin-block:-1px}
.ticker-view{flex:1;min-width:0;height:44px;margin-block:-1px;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 22px,#000 calc(100% - 22px),transparent);mask-image:linear-gradient(90deg,transparent,#000 22px,#000 calc(100% - 22px),transparent)}
.ticker-track{display:flex;width:max-content;animation:tick var(--tick,70s) linear infinite}
.ticker-group{display:flex;flex:none}
.ticker-item{display:flex;align-items:center;height:44px;padding-right:56px;white-space:nowrap}
.ticker-item b{margin-right:8px;font-weight:800;letter-spacing:.02em}
.ticker-item:after{content:'';width:5px;height:5px;margin-left:56px;border-radius:50%;background:rgba(255,255,255,.75)}
@keyframes tick{to{transform:translateX(-50%)}}
@media(hover:hover){.ticker:hover .ticker-track{animation-play-state:paused}}
.ticker:focus-within .ticker-track{animation-play-state:paused}
/* phones and reduced motion: one headline at a time (fx/pulse.mjs fades them every 4 s on phones; reduced motion keeps the latest one still) */
@media(max-width:700px),(prefers-reduced-motion:reduce){.ticker-view{-webkit-mask-image:none;mask-image:none}.ticker-track{display:block;width:auto;animation:none}.ticker-group{display:grid}.ticker-group[aria-hidden]{display:none}.ticker-item{grid-area:1/1;display:block;min-width:0;padding:0;overflow:hidden;text-overflow:ellipsis;line-height:44px;opacity:0;visibility:hidden;transition:opacity .5s}.ticker-item:after,.ticker-item[aria-hidden]{display:none}.ticker-item.is-on{opacity:1;visibility:visible}}
/* desktop menu: vivid "Live pulse" pill (the phone header row gets nothing new; the ticker band is the phone entry point) */
.nav nav a.nav-live{gap:9px;margin-left:8px;padding:0 17px;border-radius:99px;background:#141b26;color:#fff;transition:box-shadow var(--t2) var(--ease),transform var(--t1) var(--ease)}
.nav nav a.nav-live:after{display:none}
.nav nav a.nav-live:hover{transform:translateY(-1px);box-shadow:0 12px 22px -12px rgba(194,65,12,.9)}
