:root{--scarlet:#FF2400;--amber:#FF7E00;--black:#050505;--white:#F5F5F7;--green:#30D158;
--panel:#141416;--raised:#1C1C1E;--hair:#2C2C2E;--edge:#6C6C70;--label:#8E8E93;--body:#D1D1D6}
*{box-sizing:border-box;margin:0}
html{scroll-behavior:smooth}
body{background:var(--black);color:var(--white);font:16px/1.55 "IBM Plex Sans",system-ui,sans-serif;-webkit-font-smoothing:antialiased}
a{color:inherit}
.wrap{width:100%;max-width:1120px;margin:0 auto;padding:0 16px}
nav .wrap{display:flex;align-items:center;justify-content:space-between;height:64px}
nav img{height:22px;display:block}
nav a.l{font:500 12px "IBM Plex Mono",monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--label);text-decoration:none;margin-left:20px}
nav a.l:hover{color:var(--white)}
.label{font:500 11px "IBM Plex Mono",monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--label)}
h1{font-size:clamp(36px,7vw,72px);line-height:1.04;font-weight:600;letter-spacing:-.02em;margin:16px 0 20px}
h1 em{font-style:normal;color:var(--scarlet)}
h2{font-size:28px;font-weight:600;margin:8px 0 24px}
.lede{color:var(--body);font-size:18px;max-width:620px}
.hero{padding:88px 0 72px}
section{padding:56px 0;border-top:1px solid var(--hair)}
.btn{display:inline-flex;align-items:center;min-height:52px;padding:0 24px;border-radius:10px;background:var(--scarlet);color:var(--black);font-weight:600;text-decoration:none;margin:28px 12px 0 0}
.btn.o{background:none;color:var(--scarlet);box-shadow:inset 0 0 0 1.5px var(--scarlet)}
.btn:hover{filter:brightness(1.15)}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}
.card{background:var(--panel);border:1px solid var(--hair);border-radius:14px;padding:22px}
.card h3{font-size:16px;font-weight:600;margin:8px 0 6px}
.card p{font-size:14px;color:var(--body)}
.card .n{font:600 30px "IBM Plex Mono",monospace;color:var(--white)}
.dot{color:var(--green)}
footer{border-top:1px solid var(--hair);padding:28px 0;color:var(--label);font-size:13px}
:focus-visible{outline:2px solid var(--white);outline-offset:3px}
.slash{position:absolute;inset:0;width:100%;height:100%;overflow:hidden;z-index:-1;opacity:.9}
.hero{position:relative}
.tag{display:inline-block;font:500 11px "IBM Plex Mono",monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--amber);border:1px solid var(--amber);border-radius:6px;padding:2px 8px}
.card svg{width:36px;height:36px;stroke:var(--scarlet);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;margin-bottom:8px}
.stat{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-top:8px}
/* Apple-style nav + banner */
nav{position:sticky;top:0;z-index:10;background:rgba(5,5,5,.72);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--hair)}
.dd{position:relative}
.dd>button{font:500 12px "IBM Plex Mono",monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--label);background:none;border:0;cursor:pointer;min-height:44px;padding:0 4px}
.dd>button:hover,.dd>button[aria-expanded=true]{color:var(--white)}
.menu{display:none;position:absolute;right:0;top:100%;min-width:240px;background:var(--panel);border:1px solid var(--hair);border-radius:14px;padding:8px}
.dd.open .menu{display:block}
.menu a{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px;border-radius:10px;text-decoration:none;font-weight:600}
.menu a:hover{background:var(--raised)}
.banner{text-align:center;padding:72px 0 0;overflow:hidden;position:relative}
.banner h1{font-size:clamp(44px,9vw,96px);margin:14px 0 12px}
.banner .lede{margin:0 auto}
.banner .btn{margin:28px 6px 0}
.glow{position:absolute;left:50%;bottom:-260px;width:900px;height:520px;transform:translateX(-50%);background:radial-gradient(closest-side,rgba(255,36,0,.28),transparent);z-index:-1}
.phone{width:min(340px,90%);margin:56px auto 0;background:#000;border:1px solid var(--hair);border-bottom:0;border-radius:40px 40px 0 0;padding:12px 12px 0;box-shadow:0 0 80px rgba(255,36,0,.15);text-align:left}
.screen{background:var(--black);border-radius:30px 30px 0 0;padding:18px 14px 0;height:380px;display:flex;flex-direction:column;gap:10px}
.screen .top{display:flex;justify-content:space-between;gap:8px;white-space:nowrap}
.sync{font:500 10px "IBM Plex Mono",monospace;letter-spacing:.1em;color:var(--green)}
.set{display:grid;grid-template-columns:24px 1fr auto;gap:10px;align-items:center;padding:10px 12px;background:var(--panel);border-radius:12px;font:600 17px "IBM Plex Mono",monospace}
.set.a{background:var(--raised);border:1px solid var(--hair)}
.set b{font:500 12px "IBM Plex Mono",monospace;color:var(--label)}
.set.t{color:var(--label)}
.set s{text-decoration:none;color:var(--green);font-size:14px}
.logbtn{background:var(--scarlet);color:var(--black);border-radius:12px;min-height:56px;display:grid;place-items:center;font-weight:600;letter-spacing:.04em}
.note{font-size:12px;color:var(--label);text-align:center;margin:14px 0 0}
.menu a{white-space:nowrap}
/* Phone demo scenes (script at the bottom of index.html) */
.scenes{position:relative;flex:1}
.sc{position:absolute;inset:0;display:flex;flex-direction:column;gap:10px;opacity:0;transition:opacity .4s;pointer-events:none}
.sc.on{opacity:1}
.sc .nm{font-size:18px;font-weight:600}
.logbtn{transition:transform .15s,filter .15s}
.logbtn.p{transform:scale(.96);filter:brightness(1.35)}
.big{font:600 38px/1.1 "IBM Plex Mono",monospace}
.big small{font-size:14px;color:var(--label)}
.big em{font-style:normal;font-size:12px;letter-spacing:.1em;color:var(--amber);vertical-align:middle}
.chips{display:flex;gap:8px}.chips .set{display:block;flex:1;text-align:center;font-size:14px}
.why{font:400 12px/1.5 "IBM Plex Mono",monospace;color:var(--body);background:var(--panel);border-left:2px solid var(--scarlet);padding:10px 12px;border-radius:0 10px 10px 0}
.ring{width:130px;margin:6px auto 0;display:block}
.ring text{font:600 40px "IBM Plex Mono",monospace;fill:var(--white)}
.chart{width:100%;margin-top:8px}
.sc.on .fi{animation:fi .5s var(--d,0s) both}
@keyframes fi{from{opacity:0;transform:translateY(8px)}}
.sc.on .arc{animation:ringup 1s .3s cubic-bezier(.23,1,.32,1) both}
@keyframes ringup{from{stroke-dasharray:40 100}}
.n54{opacity:0}
.sc.on .n53{animation:out .25s 1.2s forwards}
.sc.on .n54{animation:inn .3s 1.3s forwards}
@keyframes out{to{opacity:0}}
@keyframes inn{to{opacity:1}}
.chart path{stroke-dasharray:1;stroke-dashoffset:1}
.chart circle{opacity:0}
.sc.on .chart path{animation:draw 1.6s .5s cubic-bezier(.23,1,.32,1) forwards}
.sc.on .chart circle{animation:inn .3s 2s forwards}
@keyframes draw{to{stroke-dashoffset:0}}

/* PULSE player mock (home banner + /projects/pulse/; script in pulse-player.js) */
.player{width:min(860px,100%);margin:56px auto 0;background:#000;border:1px solid var(--hair);border-bottom:0;border-radius:16px 16px 0 0;box-shadow:0 0 80px rgba(255,36,0,.15);text-align:left;overflow:hidden}
.titlebar{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--hair)}
.titlebar img{height:12px;display:block}
.titlebar .label{margin-left:auto;font-size:10px}
.pbody{display:grid;grid-template-columns:190px 1fr;min-height:340px}
.side{border-right:1px solid var(--hair);padding:14px 10px;display:flex;flex-direction:column;gap:4px}
.side .label{padding:0 8px 8px;font-size:10px}
.side div:not(.label){padding:10px;border-radius:10px;font-size:13px;color:var(--body);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.side .cur{background:var(--raised);color:var(--white);box-shadow:inset 2px 0 0 var(--scarlet)}
.stage{display:flex;flex-direction:column;background:var(--black)}
.video{flex:1;display:grid;place-items:center;background:radial-gradient(closest-side at 50% 45%,#1C1C1E,#050505);position:relative;min-height:220px}
.video .bigplay{width:72px;height:72px;border-radius:50%;border:2px solid var(--edge);display:grid;place-items:center;transition:opacity .3s}
.video .bigplay svg{width:28px;height:28px;fill:var(--white)}
.video .cap{position:absolute;left:16px;bottom:12px;font-size:11px;color:var(--label)}
.ctl{padding:12px 16px 16px;display:grid;gap:10px;border-top:1px solid var(--hair);background:var(--panel)}
.seek{height:28px;position:relative;display:flex;align-items:center;gap:2px}
.seek i{flex:1;background:var(--hair);border-radius:2px;height:var(--h)}
.seek i.f{background:var(--scarlet)}
.row{display:flex;align-items:center;gap:14px}
.play{width:44px;height:44px;border-radius:50%;background:var(--scarlet);display:grid;place-items:center;flex:none}
.play svg{width:18px;height:18px;fill:var(--black)}
.tc{font-size:15px;font-weight:600}.tc span{color:var(--label);font-weight:500}
.row .label{margin-left:auto;font-size:10px}
@media(max-width:640px){.pbody{grid-template-columns:1fr}.side{display:none}}
.banner.pulse{border-top:1px solid var(--hair)}
.video svg.lg{width:min(72%,380px);height:auto;overflow:visible}
