:root{
  --cream:#FAF8F5; --pearl:#F2EDE6; --sand:#E8E0D5; --stone:#C4B8A8;
  --bark:#8B7B6B; --earth:#5C4A3A; --deep:#2A1F15; --gold:#C9A96E;
  --ink:#050507; --ink2:#0b0a0c; --lamp:#ffc879; --halo:#ffd9a0;
  --luten-1:#0e1f0e; --luten-3:#1f3d1f;
  --serif:'Cormorant Garamond',serif; --sans:'Inter',system-ui,sans-serif;
  --ease:cubic-bezier(.22,.61,.36,1);
  --glow:cubic-bezier(.4,0,.2,1);
  --nav-h:74px;
}
*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;text-size-adjust:100%;}
body{font-family:var(--sans);font-weight:300;background:var(--ink);color:var(--stone);
  line-height:1.6;overflow-x:hidden;-webkit-font-smoothing:antialiased;width:100%;}
@media (hover:hover) and (pointer:fine){body,a,button,.clickable{cursor:none;}}
::selection{background:var(--gold);color:var(--ink);}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
.eyebrow{font-size:10px;font-weight:400;letter-spacing:.36em;text-transform:uppercase;color:var(--bark);}
.serif{font-family:var(--serif);font-weight:300;}

/* ---------- BACKDROP CANVAS ---------- */
#alley{position:fixed;inset:0;width:100%;height:100%;z-index:0;display:block;background:var(--ink);}
.grain{position:fixed;inset:0;z-index:1;pointer-events:none;opacity:.4;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");}

/* ---------- CURSOR ---------- */
.cursor-dot,.cursor-ring{position:fixed;top:0;left:0;border-radius:50%;pointer-events:none;z-index:9999;
  transform:translate(-50%,-50%);will-change:transform;}
.cursor-dot{width:6px;height:6px;background:var(--lamp);box-shadow:0 0 12px var(--lamp);}
.cursor-ring{width:42px;height:42px;border:1px solid rgba(255,200,121,.4);
  transition:width .4s var(--ease),height .4s var(--ease),border-color .4s var(--ease),background .4s var(--ease);}
.cursor-ring.hover{width:66px;height:66px;border-color:var(--gold);background:rgba(201,169,110,.1);}
@media (hover:none),(pointer:coarse){.cursor-dot,.cursor-ring{display:none;}}

/* ---------- NAV ---------- */
.nav{position:fixed;top:0;left:0;width:100%;height:var(--nav-h);display:flex;align-items:center;
  justify-content:space-between;padding:0 max(clamp(20px,5vw,64px),env(safe-area-inset-right)) 0 max(clamp(20px,5vw,64px),env(safe-area-inset-left));z-index:1000;
  opacity:0;transform:translateY(-14px);pointer-events:none;
  transition:background .7s var(--ease),backdrop-filter .7s var(--ease),border-color .7s var(--ease),opacity .9s var(--ease),transform .9s var(--ease);
  border-bottom:1px solid transparent;}
.nav.revealed{opacity:1;transform:none;pointer-events:auto;}
.nav.scrolled{background:rgba(8,8,11,.5);backdrop-filter:blur(22px) saturate(120%);
  -webkit-backdrop-filter:blur(22px) saturate(120%);border-bottom:1px solid rgba(201,169,110,.16);}
.nav-logo{font-family:var(--serif);font-size:24px;font-weight:400;letter-spacing:.02em;color:var(--cream);
  display:flex;align-items:center;gap:10px;}
.nav-logo .mark{width:22px;height:22px;border-radius:50%;border:1px solid rgba(255,200,121,.6);position:relative;flex:0 0 auto;}
.nav-logo .mark::after{content:'';position:absolute;inset:6px;border-radius:50%;background:var(--lamp);
  box-shadow:0 0 10px var(--lamp);animation:markPulse 4s var(--ease) infinite;}
@keyframes markPulse{0%,100%{transform:scale(1);opacity:1;}50%{transform:scale(.65);opacity:.55;}}
.nav-links{display:flex;align-items:center;gap:clamp(18px,3vw,38px);}
.nav-links a{font-size:11px;font-weight:400;letter-spacing:.18em;text-transform:uppercase;color:var(--stone);
  position:relative;padding:6px 0;opacity:.8;transition:color .4s var(--ease),opacity .4s var(--ease);}
.nav-links a:hover{opacity:1;color:var(--lamp);}
.nav-links a.active{opacity:1;color:var(--cream);}
.nav-links a::after{content:'';position:absolute;left:0;bottom:0;height:1px;width:0;background:var(--lamp);transition:width .4s var(--ease);}
.nav-links a:hover::after,.nav-links a.active::after{width:100%;}
.nav-links a.brand{text-transform:none;letter-spacing:.18em;font-family:var(--sans);font-size:11px;}
/* Apps : hover/click dropdown listing each app */
.nav-apps{position:relative;display:flex;align-items:center;}
.nav-apps-trigger{font-family:var(--sans);font-size:11px;font-weight:400;letter-spacing:.18em;text-transform:uppercase;color:var(--stone);
  background:none;border:none;cursor:pointer;padding:6px 0;opacity:.8;display:inline-flex;align-items:center;gap:8px;-webkit-tap-highlight-color:transparent;
  transition:color .4s var(--ease),opacity .4s var(--ease);}
.nav-apps:hover .nav-apps-trigger,.nav-apps.open .nav-apps-trigger,.nav-apps.active-app .nav-apps-trigger{opacity:1;color:var(--lamp);}
.nav-apps.active-app .nav-apps-trigger{color:var(--cream);}
.nav-caret{width:6px;height:6px;border-right:1px solid currentColor;border-bottom:1px solid currentColor;transform:rotate(45deg);margin-top:-3px;transition:transform .3s var(--ease);}
.nav-apps:hover .nav-caret,.nav-apps.open .nav-caret{transform:rotate(225deg);margin-top:2px;}
.nav-dropdown{position:absolute;top:100%;left:50%;transform:translateX(-50%) translateY(0);min-width:212px;
  background:rgba(10,10,13,.94);backdrop-filter:blur(22px) saturate(120%);-webkit-backdrop-filter:blur(22px) saturate(120%);
  border:1px solid rgba(201,169,110,.18);border-radius:14px;box-shadow:0 26px 64px -28px rgba(0,0,0,.85);
  padding:8px;display:flex;flex-direction:column;gap:1px;opacity:0;pointer-events:none;z-index:1100;
  transition:opacity .3s var(--ease),transform .3s var(--ease);}
.nav-apps:hover .nav-dropdown,.nav-apps:focus-within .nav-dropdown,.nav-apps.open .nav-dropdown{opacity:1;pointer-events:auto;transform:translateX(-50%) translateY(10px);}
.nav-dropdown a,.nav-dropdown .nav-soon{display:flex;align-items:center;justify-content:space-between;gap:22px;
  padding:11px 14px;border-radius:9px;font-family:var(--sans);font-size:11px;font-weight:400;letter-spacing:.16em;text-transform:uppercase;
  color:var(--stone);opacity:1;white-space:nowrap;transition:background .25s var(--ease),color .25s var(--ease);}
.nav-dropdown a::after{display:none;}
.nav-dropdown a{cursor:pointer;}
.nav-dropdown a:hover,.nav-dropdown a.active{background:rgba(201,169,110,.12);color:var(--cream);}
.nav-dropdown a.brand{text-transform:none;letter-spacing:.04em;font-family:var(--serif);font-size:16px;color:var(--cream);}
.nav-dropdown .nav-soon{color:var(--bark);cursor:default;}
.nav-dropdown em{font-style:normal;font-size:8px;letter-spacing:.18em;text-transform:uppercase;padding:3px 8px;border-radius:20px;}
.nav-dropdown a.brand em{color:var(--gold);background:rgba(201,169,110,.16);}
.nav-dropdown .nav-soon em{color:var(--bark);background:rgba(255,255,255,.04);}
/* hamburger : hidden on desktop, drives a full-screen overlay on small screens */
.nav-toggle{display:none;width:28px;height:20px;position:relative;background:none;border:none;cursor:pointer;padding:0;z-index:1300;-webkit-tap-highlight-color:transparent;}
.nav-toggle span{position:absolute;left:0;width:100%;height:1.5px;background:var(--cream);border-radius:2px;transition:transform .4s var(--ease),opacity .25s var(--ease),top .4s var(--ease);}
.nav-toggle span:nth-child(1){top:2px;}
.nav-toggle span:nth-child(2){top:9px;}
.nav-toggle span:nth-child(3){top:16px;}
.nav.open .nav-toggle span:nth-child(1){top:9px;transform:rotate(45deg);}
.nav.open .nav-toggle span:nth-child(2){opacity:0;}
.nav.open .nav-toggle span:nth-child(3){top:9px;transform:rotate(-45deg);}
@media(max-width:760px){
  .nav-toggle{display:block;}
  .nav-links{position:fixed;inset:0;height:100vh;height:100dvh;width:100%;flex-direction:column;justify-content:center;gap:30px;
    background:rgba(7,7,10,.92);backdrop-filter:blur(26px) saturate(120%);-webkit-backdrop-filter:blur(26px) saturate(120%);
    opacity:0;pointer-events:none;transform:translateY(-6px);transition:opacity .5s var(--ease),transform .5s var(--ease);}
  .nav.open .nav-links{opacity:1;pointer-events:auto;transform:none;}
  .nav-links a{font-size:15px;letter-spacing:.26em;opacity:.95;padding:14px 30px;}
  .nav-links a.brand{font-size:15px;letter-spacing:.26em;}
  .nav-links a::after{display:none;}
  .nav-apps{flex-direction:column;align-items:center;gap:0;}
  .nav-apps-trigger{font-size:15px;letter-spacing:.26em;padding:14px 30px;opacity:.95;}
  .nav-dropdown{position:static;transform:none!important;opacity:1;pointer-events:auto;z-index:auto;
    background:none;border:none;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;
    padding:0;min-width:0;gap:0;align-items:center;max-height:0;overflow:hidden;transition:max-height .45s var(--ease);}
  .nav-apps.open .nav-dropdown{max-height:340px;}
  .nav-dropdown a,.nav-dropdown .nav-soon{justify-content:center;gap:10px;font-size:12px;letter-spacing:.22em;padding:11px 20px;}
  .nav-dropdown a.brand{font-size:18px;}
}

/* ---------- PAGES ---------- */
.page{display:none;position:relative;z-index:2;}
.page.active{display:block;}

/* ---------- THE PATH / STATIONS ---------- */
.path{position:relative;z-index:2;}
.station{position:relative;min-height:165vh;display:flex;flex-direction:column;align-items:center;
  justify-content:center;text-align:center;padding:0 24px;}
.station.hero-station{min-height:250vh;}

/* street lamp standing on the ground, alternating sides; soft feathered light */
.lamp{position:absolute;top:0;left:50%;transform:translateX(-50%);width:80px;height:128vh;pointer-events:none;z-index:1;}
.lamp.center{left:50%;}
.lamp.left{left:30%;}
.lamp.right{left:70%;}
/* ornate Victorian gas street lamp (per reference photo) */
.lamp .base{position:absolute;top:80vh;left:50%;transform:translateX(-50%);width:50px;height:44px;
  background:linear-gradient(90deg,#070504,#34281a 48%,#070504);
  clip-path:polygon(32% 0,68% 0,62% 18%,77% 28%,72% 54%,100% 100%,0 100%,28% 54%,23% 28%,38% 18%);}
.lamp .post{position:absolute;top:46vh;height:34vh;left:50%;transform:translateX(-50%);width:15px;border-radius:5px;
  background:linear-gradient(90deg,#070504 0%,#37281a 44%,#4e3a20 51%,#251a10 70%,#070504 100%);}
.lamp .post::before{content:'';position:absolute;top:-10px;left:50%;transform:translateX(-50%);width:22px;height:15px;
  border-radius:50% 50% 40% 40%;background:radial-gradient(circle at 50% 34%,#46331f,#150e07);}
.lamp.center .post,.lamp.center .base{display:none;}
.lamp .lantern{position:absolute;top:38vh;left:50%;transform:translateX(-50%);width:54px;height:42px;z-index:2;}
.lamp .finial{position:absolute;top:-31px;left:50%;transform:translateX(-50%);width:5px;height:5px;border-radius:50%;background:#241a10;}
.lamp .finial::before{content:'';position:absolute;top:-7px;left:50%;transform:translateX(-50%);width:2px;height:8px;border-radius:1px;background:#241a10;}
.lamp .roof{position:absolute;top:-20px;left:50%;transform:translateX(-50%);width:74px;height:21px;background:#241a10;
  clip-path:polygon(0 100%,18% 32%,50% 0,82% 32%,100% 100%);}
.lamp .arm{position:absolute;bottom:-14px;left:50%;transform:translateX(-50%);width:66px;height:2px;background:#241a10;border-radius:1px;}
.lamp .arm::before,.lamp .arm::after{content:'';position:absolute;top:50%;width:6px;height:6px;border-radius:50%;background:#241a10;transform:translateY(-50%);}
.lamp .arm::before{left:-4px;}.lamp .arm::after{right:-4px;}
.lamp .body{position:absolute;inset:2px 6px 3px;border:2px solid #241a10;border-radius:2px 2px 3px 3px;overflow:hidden;
  background:linear-gradient(180deg, rgba(255,201,121,.2), rgba(120,70,20,.12));
  clip-path:polygon(9% 0,91% 0,100% 100%,0 100%);}
.lamp .body::before{content:'';position:absolute;left:50%;top:0;bottom:0;width:1px;background:rgba(36,26,16,.7);}
.lamp .body::after{content:'';position:absolute;top:46%;left:0;right:0;height:1px;background:rgba(36,26,16,.5);}
.lamp .glass{position:absolute;inset:2px;
  background:radial-gradient(ellipse 60% 64% at 50% 52%, var(--halo), rgba(255,160,80,.5) 52%, rgba(120,60,20,.12));
  opacity:calc(.16 + var(--it,0)*.84);transition:opacity .55s var(--glow);}
.lamp .flame{position:absolute;top:52%;left:50%;width:9px;height:15px;transform:translate(-50%,-50%);
  border-radius:50% 50% 50% 50% / 62% 62% 40% 40%;filter:blur(.6px);
  background:radial-gradient(ellipse 50% 60% at 50% 62%,#fff,var(--lamp) 55%,rgba(255,140,40,.18));
  opacity:calc(.25 + var(--it,0)*.75);animation:flicker 3s steps(12,end) infinite;}
@keyframes flicker{0%,100%{opacity:1;}9%{opacity:.8;}21%{opacity:1;}34%{opacity:.9;}47%{opacity:1;}58%{opacity:.76;}71%{opacity:1;}86%{opacity:.93;}}
/* soft halo at the lantern, soft fall of light, soft ground pool : all radial, no hard edges */
.lamp .glow{position:absolute;top:38vh;left:50%;width:330px;height:330px;transform:translate(-50%,-32%);border-radius:50%;
  background:radial-gradient(circle, rgba(255,201,121,.6), rgba(255,180,110,.18) 44%, transparent 66%);
  filter:blur(16px);opacity:calc(var(--it,0)*.95);mix-blend-mode:screen;transition:opacity .6s var(--glow);}
.lamp .fall{position:absolute;top:42vh;left:50%;width:480px;height:50vh;transform:translateX(-50%);
  background:radial-gradient(ellipse 42% 54% at 50% 10%, rgba(255,201,121,.4), rgba(255,176,104,.12) 46%, transparent 72%);
  filter:blur(34px);opacity:calc(var(--it,0)*.82);mix-blend-mode:screen;transition:opacity .6s var(--glow);}
.lamp .pool{position:absolute;top:72vh;left:50%;width:580px;height:230px;transform:translateX(-50%);
  background:radial-gradient(ellipse 50% 50% at 50% 50%, rgba(255,196,120,.3), transparent 70%);
  filter:blur(38px);opacity:calc(var(--it,0)*.7);mix-blend-mode:screen;transition:opacity .6s var(--glow);}

/* copy sits under the light, on the lamp's side */
.copy{position:absolute;top:48vh;left:50%;transform:translateX(-50%);width:min(90vw,600px);z-index:3;text-align:center;}
.hero-station .copy{top:175vh;width:min(96vw,900px);}
.hero-station .scroll-hint{top:86vh;bottom:auto;}
.hero-station .scroll-hint .label{display:none;}
.station.side-left .copy{left:8%;right:auto;transform:none;text-align:left;width:min(48vw,520px);}
.station.side-right .copy{left:auto;right:8%;transform:none;text-align:right;width:min(48vw,520px);}
/* The reveal. --ct is driven per frame in script.js and plateaus at 1 while the
   block is anywhere near the middle of the screen, so these are the EDGES of the
   fade rather than the state you normally read in.
   Blur was 7px and opacity floored at .02, which is a smear. The trap is that
   blur is measured in px while text is not: 7px erases a 10px eyebrow, ruins
   15px body copy, and leaves a 100px serif heading looking almost fine, so the
   damage is invisible if you check the headline. Reveal now leans on opacity and
   the lift, with blur as a light touch that small type can survive. */
.copy-in{opacity:calc(.12 + var(--ct,0)*.88);filter:blur(calc((1 - var(--ct,0)) * 2px));
  transform:translateY(calc((1 - var(--ct,0)) * 16px));transition:opacity .28s linear,filter .28s linear,transform .28s linear;}
.copy .eyebrow{margin-bottom:24px;}
.copy h2{font-family:var(--serif);font-weight:300;color:var(--cream);font-size:clamp(42px,7vw,108px);
  line-height:1;letter-spacing:-.01em;margin-bottom:22px;text-shadow:0 0 50px rgba(255,196,120,.35);}
.copy h2 em{font-style:italic;color:var(--lamp);}
.copy .body-text{font-size:clamp(15px,1.5vw,18px);color:var(--stone);max-width:480px;margin:0 auto 30px;}
.copy .body-text em{font-style:italic;color:var(--sand);}
.copy .app-no{font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--bark);margin-bottom:20px;}
.luten-mark{width:84px;height:84px;margin:0 auto 26px;filter:drop-shadow(0 0 22px rgba(255,160,60,.45));}
.station.side-left .luten-mark{margin-left:0;}.station.side-right .luten-mark{margin-left:auto;margin-right:0;}
.luten-mark.big{width:148px;height:148px;margin:0 auto 30px;}

/* hero secret word */
.secret{font-family:var(--serif);font-weight:300;color:var(--cream);font-size:clamp(96px,26vw,400px);
  line-height:.9;letter-spacing:-.02em;text-shadow:0 0 80px rgba(255,196,120,.5);animation:wordOn 3.6s var(--ease) both;}
.secret em{font-style:italic;}
@keyframes wordOn{0%{opacity:0;}8%{opacity:.6;}11%{opacity:.1;}16%{opacity:.8;}20%{opacity:.2;}26%{opacity:1;}100%{opacity:1;}}
.hero-station .sub{margin-top:26px;font-size:13px;letter-spacing:.3em;text-transform:uppercase;color:var(--bark);
  opacity:0;animation:fadeUp 2s var(--ease) 2.6s forwards;}
@keyframes fadeUp{from{opacity:0;transform:translateY(20px);}to{opacity:1;transform:none;}}
.scroll-hint{position:absolute;bottom:30px;left:50%;transform:translateX(-50%);z-index:6;
  display:flex;flex-direction:column;align-items:center;gap:12px;opacity:0;animation:fadeUp 2s var(--ease) 3.2s forwards;}
.scroll-hint .label{font-size:9px;letter-spacing:.3em;text-transform:uppercase;color:var(--bark);}
.scroll-hint .chev{width:14px;height:14px;border-right:1px solid var(--bark);border-bottom:1px solid var(--bark);
  transform:rotate(45deg);animation:chev 2.2s var(--ease) infinite;}
@keyframes chev{0%{opacity:.2;transform:rotate(45deg) translate(-3px,-3px);}50%{opacity:1;}100%{opacity:.2;transform:rotate(45deg) translate(3px,3px);}}

/* app glyph + buttons */
.glyph{width:74px;height:74px;border-radius:20px;margin:0 auto 28px;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(150deg,#244a24,#0d1f0d);box-shadow:0 18px 50px -16px rgba(0,0,0,.8),inset 0 1px 1px rgba(201,169,110,.3);color:var(--lamp);}
.glyph.dim{background:linear-gradient(150deg,#1a1a1a,#0c0c0c);color:var(--bark);box-shadow:inset 0 1px 1px rgba(255,255,255,.04);}
.btn-light{display:inline-flex;align-items:center;gap:12px;font-size:11px;letter-spacing:.22em;text-transform:uppercase;
  font-weight:400;color:var(--ink);padding:17px 38px;border-radius:40px;background:var(--lamp);
  box-shadow:0 0 40px rgba(255,200,121,.35);transition:all .5s var(--ease);}
.btn-light:hover{background:var(--cream);letter-spacing:.28em;box-shadow:0 0 60px rgba(255,200,121,.5);}
.btn-light .arrow{transition:transform .4s var(--ease);}
.btn-light:hover .arrow{transform:translateX(6px);}
.one-life-badge{font-size:10px;letter-spacing:.05em;text-transform:lowercase;color:var(--bark);
  display:inline-flex;align-items:center;gap:8px;margin-top:24px;}
.one-life-badge::before{content:'';width:5px;height:5px;border-radius:50%;background:var(--bark);}

/* arrival / dawn */
.arrival{min-height:130vh;}
.arrival .copy h2{text-shadow:0 0 70px rgba(255,210,150,.5);}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;max-width:620px;margin:54px auto 0;}
.stat .num{font-family:var(--serif);font-weight:300;font-size:clamp(50px,8vw,96px);line-height:1;color:var(--cream);
  text-shadow:0 0 40px rgba(255,200,121,.4);}
.stat .lbl{font-size:10px;letter-spacing:.26em;text-transform:uppercase;color:var(--bark);margin-top:10px;}

/* ---------- FOOTER ---------- */
.footer{background:rgba(6,6,9,.88);backdrop-filter:blur(6px);position:relative;z-index:3;
  padding:clamp(70px,9vh,110px) clamp(20px,5vw,64px) 44px;border-top:1px solid rgba(201,169,110,.14);}
.footer-grid{max-width:1180px;margin:0 auto;display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:40px;}
.footer-brand .nav-logo{margin-bottom:20px;}
.footer-brand p{font-size:13.5px;color:var(--bark);max-width:280px;}
.footer-col h5{font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--stone);margin-bottom:20px;font-weight:500;}
.footer-col a{display:block;font-size:13.5px;color:var(--bark);padding:6px 0;transition:color .4s var(--ease),padding-left .4s var(--ease);}
.footer-col a:hover{color:var(--lamp);padding-left:5px;}
.footer-bottom{max-width:1180px;margin:60px auto 0;padding-top:30px;border-top:1px solid rgba(201,169,110,.14);
  display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;}
.footer-bottom .copy-line{font-size:12px;color:var(--bark);position:static;opacity:1;filter:none;transform:none;}
.product-line{font-size:11px;color:var(--bark);letter-spacing:.04em;text-transform:lowercase;}

/* ---------- LUTEN PAGE ---------- */
.luten-hero{position:relative;min-height:100vh;overflow:hidden;display:flex;flex-direction:column;align-items:center;
  justify-content:center;text-align:center;z-index:2;}
.luten-hero .halo-lg{position:absolute;top:38%;left:50%;width:680px;height:680px;transform:translate(-50%,-50%);border-radius:50%;
  background:radial-gradient(circle, rgba(201,169,110,.22), rgba(31,61,31,.16) 40%, transparent 68%);filter:blur(20px);}
.luten-hero .lh-inner{position:relative;z-index:5;padding:0 24px;}
.luten-hero .eyebrow{color:var(--gold);margin-bottom:28px;opacity:0;animation:fadeUp 1.4s var(--ease) .4s forwards;}
.luten-hero h1{font-family:var(--sans);font-weight:200;text-transform:lowercase;letter-spacing:-.02em;color:var(--cream);font-size:clamp(60px,12vw,180px);
  line-height:.95;margin-bottom:26px;text-shadow:0 0 90px rgba(201,169,110,.4);opacity:0;animation:fadeUp 1.6s var(--ease) .7s forwards;}
.luten-hero .lh-tag{font-size:clamp(15px,2vw,22px);color:var(--stone);letter-spacing:.04em;opacity:0;animation:fadeUp 1.6s var(--ease) 1s forwards;}
.luten-hero .lh-tag em{font-style:normal;font-weight:400;color:var(--gold);}
.luten-hero .lh-cta{margin-top:38px;opacity:0;animation:fadeUp 1.6s var(--ease) 1.3s forwards;}
.luten-waves{position:absolute;bottom:46px;left:0;width:100%;height:120px;z-index:3;overflow:hidden;pointer-events:none;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 16%,#000 84%,transparent);mask-image:linear-gradient(90deg,transparent,#000 16%,#000 84%,transparent);}
.luten-waves svg{position:absolute;left:0;top:0;width:200%;height:100%;}
.wv{fill:none;stroke-linecap:round;}
.wv1{stroke:var(--gold);stroke-width:2.5;opacity:.7;animation:wvflow 8s linear infinite;}
.wv2{stroke:#e6cd92;stroke-width:1.6;opacity:.45;animation:wvflow 12s linear infinite reverse;}
.wv3{stroke:#b9965c;stroke-width:1.6;opacity:.32;animation:wvflow 16s linear infinite;}
.wv4{stroke:#fff;stroke-width:1;opacity:.16;animation:wvflow 6s linear infinite reverse;}
@keyframes wvflow{from{transform:translateX(0);}to{transform:translateX(-50%);}}
.luten-feats-sec{padding:clamp(90px,13vh,160px) clamp(20px,5vw,64px);background:linear-gradient(180deg,rgba(6,6,9,.4),rgba(6,8,6,.92));position:relative;z-index:2;}
.lf-head{text-align:center;margin-bottom:70px;}
.lf-head h2{font-family:var(--serif);font-weight:300;font-size:clamp(34px,5vw,60px);color:var(--cream);margin-bottom:16px;}
.lf-head p{color:var(--bark);max-width:460px;margin:0 auto;}
.lf-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;max-width:1100px;margin:0 auto;}
.lf-card{background:linear-gradient(170deg,rgba(16,22,16,.55),rgba(8,12,8,.78));border:1px solid rgba(201,169,110,.16);
  border-radius:24px;padding:38px 32px;display:flex;flex-direction:column;align-items:flex-start;text-align:left;
  transition:transform .6s var(--ease),border-color .6s var(--ease),box-shadow .6s var(--ease);position:relative;overflow:hidden;height:100%;}
.lf-card::before{content:'';position:absolute;top:0;left:0;width:100%;height:3px;
  background:linear-gradient(90deg,transparent,var(--ic,var(--gold)),transparent);transform:scaleX(0);transition:transform .6s var(--ease);}
.lf-card:hover{transform:translateY(-8px);border-color:color-mix(in srgb,var(--ic,var(--gold)) 45%,transparent);box-shadow:0 50px 110px -50px rgba(0,0,0,.8);}
.lf-card:hover::before{transform:scaleX(1);}
.lf-card .lf-ic{width:56px;height:56px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;margin-bottom:26px;
  filter:drop-shadow(0 5px 16px color-mix(in srgb,var(--ic,var(--gold)) 42%,transparent));}
.lf-card .lf-ic img{width:56px;height:56px;display:block;}
.lf-card h3{font-family:var(--serif);font-weight:400;font-size:32px;color:var(--cream);margin-bottom:14px;}
.lf-card p{font-size:14px;line-height:1.65;color:var(--stone);}
.luten-back{padding:0 clamp(20px,5vw,64px) 90px;text-align:center;background:rgba(6,8,6,.92);position:relative;z-index:2;}
.arrow-link{display:inline-flex;align-items:center;gap:12px;font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--stone);transition:gap .4s var(--ease),color .4s var(--ease);}
.arrow-link:hover{gap:20px;color:var(--gold);}
.luten-hero .luten-mark.big{position:relative;z-index:5;opacity:0;animation:fadeUp 1.6s var(--ease) .25s forwards;}
.lf-grid.four{grid-template-columns:repeat(auto-fit,minmax(186px,1fr));max-width:1200px;}
.lf-card .lf-tag{font-size:9px;letter-spacing:.24em;text-transform:uppercase;color:var(--gold);margin-bottom:14px;}
.luten-sub{padding:clamp(70px,11vh,150px) clamp(20px,5vw,64px);background:rgba(6,8,6,.94);position:relative;z-index:2;border-top:1px solid rgba(201,169,110,.1);}
.luten-sub .wrap2{max-width:1080px;margin:0 auto;}
.luten-sub h2{font-family:var(--serif);font-weight:300;font-size:clamp(30px,4.5vw,52px);color:var(--cream);text-align:center;margin-bottom:14px;}
.luten-sub .lead{color:var(--bark);text-align:center;max-width:540px;margin:0 auto 56px;font-size:15px;}
.diff-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(238px,1fr));gap:22px;}
.diff{border:1px solid rgba(201,169,110,.16);border-radius:18px;padding:30px 28px;background:linear-gradient(170deg,rgba(20,30,20,.5),rgba(8,14,8,.7));transition:border-color .5s var(--ease),transform .5s var(--ease);}
.diff .diff-ic{display:block;width:46px;height:46px;margin-bottom:20px;filter:drop-shadow(0 5px 16px color-mix(in srgb,var(--ic,var(--gold)) 40%,transparent));}
.diff:hover{border-color:rgba(201,169,110,.4);transform:translateY(-5px);}
.diff h4{font-family:var(--serif);font-weight:400;font-size:23px;color:var(--cream);margin-bottom:10px;}
.diff p{font-size:13.5px;color:var(--stone);}
.detail-list{max-width:700px;margin:0 auto;}
.detail-row{display:flex;gap:24px;padding:22px 0;border-top:1px solid rgba(201,169,110,.14);}
.detail-row:last-child{border-bottom:1px solid rgba(201,169,110,.14);}
.detail-row .k{flex:0 0 128px;font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--bark);padding-top:3px;}
.detail-row .v{font-size:14.5px;color:var(--stone);}
.detail-row .v b{color:var(--cream);font-weight:400;}
/* luten : what's inside grid */
.inside-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1px;max-width:920px;margin:0 auto;
  background:rgba(201,169,110,.12);border:1px solid rgba(201,169,110,.12);border-radius:18px;overflow:hidden;}
.inside{background:rgba(8,12,8,.78);padding:28px 26px;}
.inside b{display:block;font-family:var(--serif);font-weight:400;font-size:20px;color:var(--cream);margin-bottom:8px;}
.inside p{font-size:13.5px;color:var(--bark);line-height:1.6;}
/* luten : get / download */
.luten-get{padding:clamp(70px,11vh,140px) clamp(20px,5vw,64px);background:rgba(6,8,6,.94);position:relative;z-index:2;border-top:1px solid rgba(201,169,110,.1);text-align:center;}
.luten-get h2{font-family:var(--serif);font-weight:300;font-size:clamp(30px,4.5vw,52px);color:var(--cream);margin-bottom:14px;}
.luten-get .lead{color:var(--bark);max-width:520px;margin:0 auto 44px;font-size:15px;}
.get-row{display:flex;align-items:center;justify-content:center;gap:48px;flex-wrap:wrap;}
.store-badges{display:flex;flex-direction:column;gap:16px;}
.store-badge{display:inline-flex;align-items:center;gap:12px;min-width:210px;padding:12px 22px;border-radius:12px;
  background:#0c0b0e;border:1px solid rgba(255,255,255,.18);color:var(--cream);transition:all .5s var(--ease);}
.store-badge:hover{background:#15131a;border-color:rgba(255,255,255,.4);transform:translateY(-2px);}
.store-badge svg{flex:0 0 auto;}
.store-badge span{display:flex;flex-direction:column;align-items:flex-start;line-height:1.15;text-align:left;}
.store-badge small{font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--stone);}
.store-badge b{font-size:18px;font-weight:500;font-family:var(--sans);color:var(--cream);}
.store-badge.is-soon{opacity:.5;cursor:default;pointer-events:none;}
.qr{display:flex;flex-direction:column;align-items:center;gap:12px;}
.qr-code{width:128px;height:128px;border-radius:14px;background:#f6f3ec;padding:10px;box-shadow:0 18px 50px -20px rgba(255,200,121,.4);}
/* The QR is an <img>, not an inline <svg>. This rule used to say `.qr-code svg`
   and therefore matched nothing, so the image fell back to its 128px width and
   height attributes inside a border-box container whose content area is only
   108px after padding. That is why the code spilled out of the white block. */
.qr-code img,.qr-code svg{width:100%;height:100%;display:block;}
.qr span{font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--bark);}
/* Hero QR, desktop only. Default is hidden so touch devices, which cannot scan
   their own screen, never see it; the pointer query below is what turns it on.
   Written that way round on purpose: a phone that reports an unusual pointer
   still gets the badge rather than a useless code. */
.lh-qr{display:none;}
@media(hover:hover) and (pointer:fine) and (min-width:820px){
  .lh-qr{display:flex;flex-direction:column;align-items:center;gap:10px;margin-top:30px;opacity:0;animation:fadeUp 1.6s var(--ease) 1.5s forwards;}
  .lh-qr .qr-code{width:104px;height:104px;padding:8px;border-radius:12px;}
  .lh-qr span{font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--bark);}
}
.get-note{margin-top:38px;font-size:12px;color:var(--bark);opacity:.7;}
@media(max-width:560px){.detail-row{flex-direction:column;gap:8px;}.detail-row .k{flex:none;}}

/* ---------- CONTACT / LEGAL ---------- */
.sheet{position:relative;z-index:2;min-height:100vh;background:linear-gradient(180deg,rgba(5,5,7,.5),rgba(8,8,11,.95));}
.sheet-hero{padding:calc(var(--nav-h) + 90px) clamp(20px,5vw,64px) 50px;text-align:center;}
.sheet-hero h1{font-family:var(--serif);font-weight:300;font-size:clamp(44px,8vw,104px);color:var(--cream);line-height:1;margin-bottom:20px;text-shadow:0 0 60px rgba(255,200,121,.25);}
.sheet-hero p{color:var(--bark);max-width:420px;margin:0 auto;}
.contact-form{max-width:680px;margin:0 auto;padding:30px clamp(20px,5vw,64px) 140px;}
.field{margin-bottom:46px;}
.field label{display:block;font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--bark);margin-bottom:14px;}
.field input,.field textarea,.dd-toggle{width:100%;background:transparent;border:none;border-bottom:1px solid rgba(196,184,168,.3);
  padding:10px 0;font-family:var(--serif);font-size:clamp(20px,3vw,30px);font-weight:300;color:var(--cream);transition:border-color .5s var(--ease);resize:none;}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--lamp);}
.field input::placeholder,.field textarea::placeholder{color:var(--bark);opacity:.55;}
.field textarea{min-height:140px;line-height:1.6;}
/* custom dropdown : same font, colour and style as the form, in a compact panel */
.dropdown{position:relative;}
.dd-toggle{text-align:left;cursor:pointer;padding-right:28px;position:relative;}
.dropdown.open .dd-toggle{border-color:var(--lamp);}
.dd-value.placeholder{color:var(--bark);opacity:.55;}
.dd-toggle::after{content:'';position:absolute;right:4px;top:46%;width:9px;height:9px;border-right:1.5px solid var(--bark);
  border-bottom:1.5px solid var(--bark);transform:translateY(-50%) rotate(45deg);transition:transform .3s var(--ease);}
.dropdown.open .dd-toggle::after{transform:translateY(-25%) rotate(225deg);border-color:var(--lamp);}
.dd-menu{list-style:none;position:absolute;left:0;right:0;top:calc(100% + 8px);z-index:40;margin:0;padding:6px;
  background:#0c0b0e;border:1px solid rgba(201,169,110,.22);border-radius:12px;box-shadow:0 24px 60px -24px rgba(0,0,0,.8);
  max-height:0;overflow:hidden;opacity:0;transform:translateY(-8px);pointer-events:none;
  transition:opacity .25s var(--ease),transform .25s var(--ease),max-height .25s var(--ease);}
.dropdown.open .dd-menu{max-height:440px;overflow:auto;opacity:1;transform:none;pointer-events:auto;}
.dd-menu li{padding:12px 16px;border-radius:8px;cursor:pointer;font-family:var(--serif);font-size:clamp(19px,2.4vw,24px);font-weight:300;
  color:var(--cream);letter-spacing:.01em;transition:background .2s,color .2s;}
.dd-menu li:hover,.dd-menu li.sel{background:rgba(201,169,110,.14);color:var(--cream);}
.form-success{text-align:center;padding:80px 20px;display:none;}
.form-success.show{display:block;animation:fadeUp .9s var(--ease);}
.form-success .check{width:74px;height:74px;border-radius:50%;border:1px solid var(--lamp);display:flex;align-items:center;justify-content:center;margin:0 auto 30px;color:var(--lamp);box-shadow:0 0 40px rgba(255,200,121,.3);}
.form-success h2{font-family:var(--serif);font-weight:300;font-size:clamp(32px,5vw,54px);color:var(--cream);margin-bottom:14px;}
.form-success p{color:var(--bark);}
.legal-tabs{display:flex;justify-content:center;gap:8px;margin-top:6px;}
.legal-tab{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--bark);padding:12px 26px;border-radius:30px;transition:all .5s var(--ease);border:1px solid transparent;}
.legal-tab.active{color:var(--cream);border-color:rgba(201,169,110,.3);background:rgba(201,169,110,.08);}
.legal-tab:hover{color:var(--lamp);}
.legal-body{max-width:880px;margin:0 auto;padding:56px clamp(20px,5vw,64px) 140px;}
.legal-content{display:none;}
.legal-content.active{display:block;animation:fadeUp .7s var(--ease);}
.legal-content .updated{font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--bark);margin-bottom:40px;}
.legal-content h3{font-family:var(--serif);font-weight:400;font-size:17px;color:var(--cream);margin:26px 0 6px;letter-spacing:.005em;}
.legal-content h3:first-of-type{margin-top:0;}
.legal-content p{font-size:12.5px;color:var(--stone);margin-bottom:12px;line-height:1.65;letter-spacing:.005em;opacity:.86;}
/* about page */
.about-body{max-width:720px;margin:0 auto;padding:30px clamp(20px,5vw,64px) 120px;}
.about-block{margin-bottom:54px;}
.about-block h3{font-family:var(--serif);font-weight:400;font-size:clamp(24px,3.4vw,32px);color:var(--cream);margin-bottom:16px;}
.about-block p{font-size:16px;color:var(--stone);line-height:1.8;margin-bottom:14px;}
.about-block .ab-lead{font-family:var(--serif);font-weight:300;font-size:clamp(22px,3.2vw,30px);line-height:1.5;color:var(--sand);}
.about-apps{display:flex;flex-direction:column;gap:2px;margin-top:8px;}
.about-app{display:flex;align-items:center;gap:16px;padding:18px 4px;border-top:1px solid rgba(201,169,110,.14);
  text-decoration:none;transition:padding-left .4s var(--ease);}
.about-app:last-child{border-bottom:1px solid rgba(201,169,110,.14);}
.about-app:not(.dim):hover{padding-left:8px;}
.about-app .aa-dot{width:9px;height:9px;border-radius:50%;background:var(--ic,var(--gold));flex:0 0 auto;box-shadow:0 0 12px -2px var(--ic,var(--gold));}
.about-app b{font-family:var(--serif);font-weight:400;font-size:21px;color:var(--cream);flex:0 0 auto;min-width:84px;}
.about-app>span:not(.aa-dot){font-size:14px;color:var(--bark);flex:1;}
.about-app em{font-size:9px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);font-style:normal;flex:0 0 auto;}
.about-app.dim b{color:var(--bark);}.about-app.dim em{color:var(--stone);opacity:.6;}
.about-cta{margin-top:30px;}
@media(max-width:560px){.about-app{flex-wrap:wrap;gap:8px 14px;}.about-app>span:not(.aa-dot){flex:1 1 100%;order:3;}}

/* ---------- SOUND ORB ---------- */
.sound-orb{position:fixed;bottom:max(28px,env(safe-area-inset-bottom));right:max(28px,env(safe-area-inset-right));z-index:1200;height:54px;display:flex;align-items:center;gap:12px;
  padding:0 18px 0 16px;border-radius:40px;background:rgba(12,12,16,.6);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border:1px solid rgba(201,169,110,.3);box-shadow:0 16px 50px -20px rgba(0,0,0,.7);
  opacity:0;pointer-events:none;transform:translateY(12px);transition:opacity .9s var(--ease),transform .9s var(--ease),border-color .5s var(--ease),background .5s var(--ease);}
.sound-orb.revealed{opacity:1;pointer-events:auto;transform:none;}
.sound-orb:hover{transform:translateY(-3px);border-color:var(--lamp);}
.sound-orb .eq{display:flex;align-items:flex-end;gap:2px;height:18px;width:20px;flex:0 0 auto;}
.sound-orb .eq i{width:3px;background:var(--bark);border-radius:2px;height:30%;transition:background .4s;}
.sound-orb.on .eq i{background:var(--lamp);animation:eq 1s ease-in-out infinite;}
.sound-orb .eq i:nth-child(2){animation-delay:.2s;}.sound-orb .eq i:nth-child(3){animation-delay:.4s;}.sound-orb .eq i:nth-child(4){animation-delay:.1s;}
@keyframes eq{0%,100%{height:25%;}50%{height:100%;}}
.sound-orb .txt{font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:var(--stone);line-height:1.3;}
@media(max-width:560px){.sound-orb{padding:0;width:54px;justify-content:center;}.sound-orb .txt{display:none;}}
.audio-nudge{position:fixed;bottom:92px;right:28px;z-index:1199;max-width:212px;background:rgba(255,200,121,.95);color:var(--ink);
  padding:14px 18px;border-radius:16px;font-size:12px;line-height:1.5;opacity:0;transform:translateY(10px);pointer-events:none;
  transition:opacity .6s var(--ease),transform .6s var(--ease);box-shadow:0 16px 50px -16px rgba(0,0,0,.6);}
.audio-nudge.show{opacity:1;transform:none;}
.audio-nudge b{font-weight:600;}
@media(max-width:560px){.audio-nudge{display:none;}}

@media(max-width:900px){
  .lf-grid{grid-template-columns:1fr;}.footer-grid{grid-template-columns:1fr 1fr;gap:34px;}.footer-brand{grid-column:1/-1;}
  .lamp.left{left:30%;}.lamp.right{left:70%;}.lamp .beam{width:84vw;}.pool{width:90vw;}
}
/* on phones the story copy reads better centred under its light than pinned to a narrow side column */
@media(max-width:760px){
  .station.side-left .copy,.station.side-right .copy{left:50%;right:auto;transform:translateX(-50%);text-align:center;width:min(88vw,520px);}
  .copy .body-text{margin-left:auto;margin-right:auto;}
  .get-row{gap:30px;}
  .lf-card{padding:32px 26px;}.lf-card h3{font-size:28px;}
  .detail-row .k{flex-basis:108px;}
}
@media(max-width:560px){.stats{grid-template-columns:1fr;gap:34px;}.footer-grid{grid-template-columns:1fr;}
  .footer-bottom{flex-direction:column;align-items:flex-start;}.lamp.left{left:50%;}.lamp.right{left:50%;}
  .lamp.left .beam,.lamp.right .beam{transform:translateX(-50%) rotate(0);}
  .sheet-hero{padding:calc(var(--nav-h) + 54px) clamp(18px,5vw,64px) 40px;}
  .field{margin-bottom:38px;}.legal-tabs{flex-wrap:wrap;}
  .store-badge{min-width:0;width:100%;}.store-badges{width:100%;max-width:280px;}
}

/* ---------- CROSS-PAGE VIEW TRANSITIONS ---------- */
/* progressive enhancement: only when the browser supports it AND motion is allowed.
   the nav + the alley background get their own names so they stay steady while the
   page content crossfades and rises. Unsupported browsers just navigate normally. */
@media(prefers-reduced-motion:no-preference){
  ::view-transition-group(root){animation-duration:.5s;animation-timing-function:var(--ease);}
  ::view-transition-old(root){animation:vtOut .4s var(--ease) both;}
  ::view-transition-new(root){animation:vtIn .55s var(--ease) both;}
  @keyframes vtOut{to{opacity:0;}}
  @keyframes vtIn{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:none;}}
  .nav{view-transition-name:onelife-nav;}
  #alley{view-transition-name:onelife-bg;}
}

@media(prefers-reduced-motion:reduce){
  *{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important;scroll-behavior:auto !important;}
  /* .copy-in, not .copy: the blur and the fade live on the inner div that
     script.js wraps the words in, so targeting the parent did nothing and
     this accommodation had never actually worked. Fixed 2026-09-08. */
  .copy,.copy-in{opacity:1 !important;filter:none !important;transform:none !important;}
  .secret,.hero-station .sub,.scroll-hint,.luten-hero .eyebrow,.luten-hero h1,.luten-hero .lh-tag,.luten-hero .lh-cta,.luten-hero .lh-qr{opacity:1 !important;animation:none !important;}
}

/* Launch badges, one row.
   Was an inline-styled div capped at max-width:520px, and the four badges add up
   to about 615px, so it always wrapped onto two lines. Widened, and every badge
   forced to one height because the sources ship at 40px and 53px and a row of
   mismatched heights reads as broken rather than as a set. Still wraps on a
   phone, which is correct: forcing one row there would shrink them to nothing. */
.launch-badges{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;
  gap:18px 22px;max-width:900px;margin:0 auto 40px;padding:0 20px;}
.launch-badges a{display:block;line-height:0;opacity:.9;transition:opacity .2s ease;}
.launch-badges a:hover{opacity:1;}
.launch-badges img{height:44px;width:auto;max-width:100%;display:block;}
@media (max-width:560px){.launch-badges img{height:38px;}}

/* ---------- CASSETTE PAGE ----------
   Reuses the Luten page's building blocks (hero, lf-card, diff, inside,
   detail-row, store-badge, qr) so both product pages read as one family.
   Everything here is scoped to #page-cassette or a cas- class, so nothing
   Luten renders can change. The Luten sections are tinted forest green; this
   page swaps that for the deck's maroon, and the accents are the tape red and
   the per-card colours of Cassette's App Store screenshots. */
#page-cassette{--cas-red:#e8403c;--cas-maroon:rgba(40,12,16,.55);--cas-maroon-deep:rgba(14,5,7,.8);}
#page-cassette .luten-hero .halo-lg{background:radial-gradient(circle, rgba(201,169,110,.2), rgba(120,28,32,.2) 40%, transparent 68%);}
#page-cassette .luten-feats-sec{background:linear-gradient(180deg,rgba(6,6,9,.4),rgba(12,5,7,.93));}
#page-cassette .luten-sub,#page-cassette .luten-get,#page-cassette .luten-back{background:rgba(12,5,7,.95);}
#page-cassette .lf-card{background:linear-gradient(170deg,var(--cas-maroon),var(--cas-maroon-deep));}
#page-cassette .diff{background:linear-gradient(170deg,rgba(44,14,18,.5),rgba(16,6,8,.72));}
#page-cassette .inside{background:rgba(16,6,8,.82);}

.cas-mark{width:84px;height:84px;margin:0 auto 26px;filter:drop-shadow(0 18px 40px rgba(232,64,60,.28)) drop-shadow(0 0 22px rgba(255,200,121,.18));}
.cas-mark.big{width:148px;height:148px;margin:0 auto 30px;}
.cas-mark img{width:100%;height:100%;display:block;border-radius:22%;}
.luten-hero .cas-mark.big{position:relative;z-index:5;opacity:0;animation:fadeUp 1.6s var(--ease) .25s forwards;}
.luten-hero .lh-tag.cas-sub{font-size:clamp(13px,1.5vw,16px);color:var(--bark);margin:16px auto 0;max-width:470px;}
.cas-try-link{margin-top:14px;opacity:0;animation:fadeUp 1.6s var(--ease) 1.4s forwards;}
.cas-try-link a{color:var(--bark);font-size:15px;border-bottom:1px solid rgba(174,183,207,0.4);padding-bottom:2px;transition:color .4s var(--ease),border-color .4s var(--ease);}
.cas-try-link a:hover{color:var(--lamp);border-color:var(--lamp);}
#try{scroll-margin-top:calc(var(--nav-h) - 20px);}

.station.side-left .cas-mark{margin-left:0;}.station.side-right .cas-mark{margin-left:auto;margin-right:0;}

/* hero : the sample meeting's real waveform running past a playhead */
.cas-wave{position:absolute;bottom:8px;left:0;width:100%;height:62px;z-index:3;overflow:hidden;pointer-events:none;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 16%,#000 84%,transparent);mask-image:linear-gradient(90deg,transparent,#000 16%,#000 84%,transparent);}
.cas-wave svg{position:absolute;left:0;top:0;width:200%;height:100%;animation:wvflow 40s linear infinite;}
.cas-wave .bar{fill:var(--gold);opacity:.3;}
.cas-wave::after{content:'';position:absolute;left:50%;top:8px;bottom:8px;opacity:.8;width:2px;margin-left:-1px;border-radius:2px;
  background:var(--cas-red,#e8403c);box-shadow:0 0 14px rgba(232,64,60,.9),0 0 32px rgba(232,64,60,.5);}

.lf-grid.cas-grid{grid-template-columns:repeat(3,1fr);max-width:1120px;}

/* ---------- try the deck ---------- */
.cas-demo{display:grid;grid-template-columns:minmax(300px,360px) 1fr;gap:28px;max-width:1000px;margin:0 auto;align-items:stretch;}
.cas-deck{background:linear-gradient(180deg,#efebe4,#dcd6cc);border-radius:28px;padding:18px 18px 16px;color:#3a3530;
  box-shadow:0 40px 90px -40px rgba(0,0,0,.9),inset 0 1px 0 rgba(255,255,255,.8),inset 0 -2px 0 rgba(0,0,0,.08);}
.cas-deck-top{display:flex;align-items:center;justify-content:space-between;padding:2px 4px 12px;border-bottom:1px solid rgba(58,53,48,.14);margin-bottom:14px;}
.cas-brand{font-family:var(--sans);font-size:15px;font-weight:300;color:#2e2a26;letter-spacing:.01em;}
.cas-brand b{font-weight:600;}
.cas-lamp{display:inline-flex;align-items:center;gap:8px;font-size:9px;letter-spacing:.24em;text-transform:uppercase;color:#6e6860;font-weight:500;}
.cas-lamp i{width:8px;height:8px;border-radius:50%;background:#3fc26a;box-shadow:0 0 8px rgba(63,194,106,.8);}
.cas-lamp.rec{color:#b3261e;}
.cas-lamp.rec i{background:#e8403c;box-shadow:0 0 10px rgba(232,64,60,.9);animation:casBlink 1s steps(2,end) infinite;}
.cas-lamp.busy i{background:#f0b248;box-shadow:0 0 10px rgba(240,178,72,.9);animation:casBlink .6s steps(2,end) infinite;}
@keyframes casBlink{50%{opacity:.25;}}
.cas-lcd{background:linear-gradient(180deg,#0f1513,#0a0e0d);border-radius:14px;padding:12px 16px 14px;
  box-shadow:inset 0 2px 10px rgba(0,0,0,.8),0 1px 0 rgba(255,255,255,.6);font-family:ui-monospace,'SF Mono',Menlo,monospace;color:#5fe0b0;}
.cas-lcd-row{display:flex;justify-content:space-between;font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:#46b38b;}
.cas-lcd-row .rec{color:#ff6a5e;}
.cas-time{font-size:clamp(34px,4.2vw,42px);font-weight:600;letter-spacing:.04em;line-height:1.15;margin:4px 0 6px;
  text-shadow:0 0 16px rgba(95,224,176,.45);font-variant-numeric:tabular-nums;}
.cas-vu{display:flex;align-items:center;gap:10px;margin-top:5px;font-size:9px;color:#46b38b;}
.cas-vu-bars{display:grid;grid-template-columns:repeat(16,1fr);gap:3px;flex:1;}
.cas-vu-bars i{height:7px;border-radius:2px;background:rgba(95,224,176,.12);transition:background .08s linear;}
.cas-vu-bars i.on{background:#5fe0b0;box-shadow:0 0 6px rgba(95,224,176,.6);}
.cas-vu-bars i.on.hot{background:#f0b248;box-shadow:0 0 6px rgba(240,178,72,.6);}
.cas-vu-bars i.on.peak{background:#ff6a5e;box-shadow:0 0 6px rgba(255,106,94,.6);}
.cas-shell{margin:16px 6px 0;background:linear-gradient(180deg,#f6f2ea,#e7e1d7);border-radius:12px;padding:10px 12px 12px;
  box-shadow:0 10px 24px -14px rgba(0,0,0,.5),inset 0 1px 0 #fff;}
.cas-label{display:flex;align-items:center;gap:10px;font-family:var(--serif);font-style:italic;font-size:17px;color:#2e2a26;
  border-bottom:1px solid rgba(58,53,48,.18);padding-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cas-label b{flex:0 0 auto;font-family:var(--sans);font-style:normal;font-size:10px;font-weight:600;color:#fff;background:#d8322e;border-radius:3px;padding:1px 5px;}
.cas-label span{overflow:hidden;text-overflow:ellipsis;}
.cas-stripe{height:5px;background:#d8322e;margin:8px 0 3px;border-bottom:2px solid #1d1a18;}
.cas-window{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:10px auto 0;width:78%;
  background:#1b1614;border-radius:10px;padding:7px 18px;box-shadow:inset 0 2px 6px rgba(0,0,0,.7);}
.cas-reel{width:34px;height:34px;flex:0 0 auto;}
.cas-demo.rolling .cas-reel{animation:casSpin 1.4s linear infinite;}
@keyframes casSpin{to{transform:rotate(360deg);}}
.cas-tapebar{flex:1;height:10px;border-radius:3px;background:linear-gradient(180deg,#3a2c26,#241a16);}
.cas-keys{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:16px;}
.cas-key{font-family:var(--sans);font-size:10px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:#2e2a26;
  display:inline-flex;align-items:center;justify-content:center;gap:7px;height:52px;border-radius:10px;border:none;
  background:linear-gradient(180deg,#fbf9f5,#e6e1d8);box-shadow:0 4px 0 #b9b2a6,0 10px 18px -8px rgba(0,0,0,.5),inset 0 1px 0 #fff;
  transition:transform .12s var(--ease),box-shadow .12s var(--ease),opacity .3s var(--ease);}
.cas-key:hover:not(:disabled){background:linear-gradient(180deg,#fff,#ebe6de);}
.cas-key:active:not(:disabled),.cas-key.down{transform:translateY(3px);box-shadow:0 1px 0 #b9b2a6,0 4px 10px -6px rgba(0,0,0,.5),inset 0 1px 0 #fff;}
.cas-key:disabled{opacity:.45;}
.cas-key i{width:9px;height:9px;border-radius:50%;background:#e8403c;box-shadow:0 0 6px rgba(232,64,60,.6);}
.cas-key i.sq{border-radius:1px;background:#2e2a26;box-shadow:none;}
.cas-key:focus-visible{outline:2px solid var(--lamp);outline-offset:3px;}
.cas-hint{font-size:11.5px;color:#6e6860;text-align:center;margin-top:12px;min-height:18px;}

/* the paper : the app's ruled notebook sheet */
.cas-paper{position:relative;display:flex;flex-direction:column;background:#f6f1e7;border-radius:20px;overflow:hidden;min-height:470px;
  box-shadow:0 40px 90px -40px rgba(0,0,0,.9),inset 0 1px 0 #fff;color:#2b2622;}
.cas-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:12px 12px 10px;background:#e9e4da;border-bottom:1px solid #d6cfc2;}
.cas-tabs[hidden]{display:none;}
.cas-tabs button{font-family:var(--sans);font-size:10px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:#3a3530;
  height:38px;border:none;border-radius:9px;background:linear-gradient(180deg,#fdfbf7,#ebe6dd);box-shadow:0 3px 0 #c3bcb0,inset 0 1px 0 #fff;
  transition:transform .12s var(--ease),box-shadow .12s var(--ease);}
.cas-tabs button.on{transform:translateY(2px);background:linear-gradient(180deg,#dfd9cf,#e8e3da);box-shadow:0 1px 0 #c3bcb0,inset 0 2px 4px rgba(0,0,0,.1);}
.cas-sheet{flex:1;position:relative;overflow-y:auto;max-height:520px;padding:18px 22px 26px 78px;scroll-behavior:smooth;
  background-image:repeating-linear-gradient(180deg,transparent 0 27px,#ddd5c7 27px 28px);background-attachment:local;background-position:0 16px;}
.cas-sheet::before{content:'';position:absolute;left:62px;top:0;bottom:0;width:1px;background:#d9a6a0;}
.cas-empty{padding-top:24px;}
.cas-hand{display:block;font-family:var(--serif);font-style:italic;font-size:30px;color:#2b2622;line-height:1.2;margin-bottom:10px;}
.cas-empty p{font-size:14px;color:#6e6860;line-height:28px;}
.cas-line{position:relative;font-size:14px;line-height:28px;color:#2b2622;animation:casIn .35s var(--ease) both;}
.cas-line time{position:absolute;left:-60px;width:48px;text-align:right;font-family:ui-monospace,'SF Mono',Menlo,monospace;font-size:10px;color:#8a8278;}
.cas-line.hl span.t{background:#fff0a8;box-shadow:0 0 0 2px #fff0a8;border-radius:2px;}
.cas-line.now time{color:#c23a2c;}
.cas-name{border-bottom:1.5px dotted #1b7c63;}
@keyframes casIn{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
.cas-block{position:relative;margin-bottom:28px;}
.cas-block h5{position:absolute;left:-74px;width:62px;text-align:right;top:6px;font-family:var(--sans);font-size:8.5px;font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;color:#b04a4a;}
.cas-block p,.cas-block li{font-size:14px;line-height:28px;color:#2b2622;}
.cas-block ul{list-style:none;}
.cas-quote{display:block;}
.cas-quote time{font-family:ui-monospace,'SF Mono',Menlo,monospace;font-size:10px;color:#8a8278;margin-right:8px;}
.cas-quote q{background:#fff0a8;box-shadow:0 0 0 2px #fff0a8;border-radius:2px;quotes:'\201C' '\201D';}
.cas-act{display:flex;gap:10px;align-items:flex-start;}
.cas-act::before{content:'';flex:0 0 auto;width:11px;height:11px;margin-top:8px;border:1.5px solid #3a3530;border-radius:2px;}
.cas-act em{font-style:normal;font-family:ui-monospace,'SF Mono',Menlo,monospace;font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:#b04a4a;margin-left:6px;}
.cas-field{display:flex;gap:10px;font-size:14px;line-height:28px;}
.cas-field b{font-weight:600;}
.cas-writing{padding-top:24px;}
.cas-writing .cas-hand::after{content:'';display:inline-block;width:.6em;animation:casDots 1.2s steps(4,end) infinite;overflow:hidden;vertical-align:bottom;}
@keyframes casDots{0%{content:'';}25%{content:'.';}50%{content:'..';}75%{content:'...';}}

/* ---------- screens ---------- */
.cas-screens{display:grid;grid-template-columns:repeat(5,1fr);gap:22px;max-width:1080px;margin:0 auto;}
.cas-phone{margin:0;text-align:center;}
.cas-phone img{width:100%;height:auto;border-radius:12%/5.5%;border:5px solid #121012;
  box-shadow:0 30px 70px -30px rgba(0,0,0,.95),0 0 0 1px rgba(201,169,110,.18);transition:transform .6s var(--ease);}
.cas-phone:hover img{transform:translateY(-6px);}
.cas-phone figcaption{margin-top:16px;font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--bark);}

@media(max-width:900px){
  .lf-grid.cas-grid{grid-template-columns:repeat(2,1fr);}
  .cas-demo{grid-template-columns:1fr;max-width:560px;}
  .cas-paper{min-height:420px;}
  .cas-screens{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(180px,42%);overflow-x:auto;
    scroll-snap-type:x mandatory;padding:6px 4px 18px;-webkit-overflow-scrolling:touch;}
  .cas-phone{scroll-snap-align:center;}
}
@media(max-width:560px){
  .lf-grid.cas-grid{grid-template-columns:1fr;}
  .cas-deck{padding:14px 14px 12px;border-radius:24px;}
  .cas-sheet{padding:14px 16px 22px 64px;}
  .cas-sheet::before{left:52px;}
  .cas-line time{left:-54px;width:44px;}
  .cas-block h5{left:-62px;width:52px;font-size:7.5px;}
  .cas-screens{grid-auto-columns:62%;}
}
@media(prefers-reduced-motion:reduce){
  .cas-wave svg,.cas-demo.rolling .cas-reel,.cas-lamp i{animation:none !important;}
  .luten-hero .cas-mark.big,.cas-try-link{opacity:1 !important;animation:none !important;}
}
