@import url('https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@1,9..144,400;1,9..144,500&family=Roboto:wght@400;500;700;900&family=Space+Grotesk:wght@400;500;600;700&family=Space+Mono:wght@400;700&display=swap');

:root{
  color-scheme:dark;
  --night:#1c1129;
  --purple:#26214d;
  --pink:#dfa4c6;
  --mauve:#9c9dc9;
  --sky:#c3e4f9;
  --white:#fff;
  --page:#0f0918;
  --page-ink:#fff;
  --page-muted:#b9aec7;
  --line:rgba(255,255,255,.14);
  --screen-bg:#1c1129;
  --screen-ink:#fff;
  --screen-muted:#c9bfd3;
  --accent:#dfa4c6;
  --surface:rgba(255,255,255,.08);
  --radius:24px;
  font-family:Roboto,Arial,sans-serif;
  font-synthesis:none;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;min-height:100dvh;background:var(--page);color:var(--page-ink);transition:background .45s ease,color .45s ease}
button,a{font:inherit;color:inherit}
button{cursor:pointer}
a{text-decoration:none}
img{display:block;max-width:100%}
h1,h2,p{margin:0}
button:focus-visible,a:focus-visible{outline:3px solid var(--sky);outline-offset:4px}
.skip-link{position:fixed;left:16px;top:12px;z-index:50;padding:12px 16px;background:#fff;color:#1c1129;transform:translateY(-160%)}
.skip-link:focus{transform:none}

.site-header{height:74px;display:flex;align-items:center;justify-content:space-between;padding:0 34px;border-bottom:1px solid var(--line);position:relative;z-index:4}
.brand{display:flex;align-items:center;gap:14px}
.brand>span:last-child{font-size:11px;color:var(--page-muted);letter-spacing:.04em}
.brand-name{font-weight:900;letter-spacing:-.08em;font-size:20px;display:flex;align-items:center}
.brand-orbit,.mini-orbit{position:relative;display:inline-block;border:2px solid currentColor;border-radius:50%;width:.88em;height:.88em;margin:0 .03em;transform:rotate(-12deg)}
.brand-orbit:before,.brand-orbit:after,.mini-orbit:before,.mini-orbit:after{content:"";position:absolute;border:1px solid currentColor;border-radius:50%;inset:2px;transform:rotate(24deg)}
.brand-orbit:after,.mini-orbit:after{inset:4px;transform:rotate(-32deg)}
.header-actions{display:flex;align-items:center;gap:18px;font-size:12px}
.header-actions>span{color:var(--page-muted)}
.header-actions a{padding:10px 14px;border:1px solid var(--line);border-radius:999px}

main{display:grid;grid-template-columns:minmax(290px,370px) minmax(0,1fr);min-height:calc(100dvh - 74px)}
.brief-panel{padding:44px 34px 30px;border-right:1px solid var(--line);position:sticky;top:0;height:calc(100dvh - 74px);overflow:auto}
.kicker{font-size:11px;text-transform:uppercase;letter-spacing:.16em;color:var(--pink);margin-bottom:18px}
.brief-panel h1{font-size:clamp(34px,3.1vw,55px);line-height:.98;letter-spacing:-.055em;max-width:11ch}
.intro{font-size:14px;line-height:1.55;color:var(--page-muted);margin-top:22px;max-width:36ch}
.scope-note{margin-top:16px;padding:12px 13px;border:1px solid var(--line);font-size:10px;line-height:1.45;color:var(--page-muted)}
.scope-note strong{color:var(--page-ink);display:block;text-transform:uppercase;letter-spacing:.11em;margin-bottom:4px}
.directions{margin-top:35px;border-top:1px solid var(--line)}
.direction{width:100%;border:0;border-bottom:1px solid var(--line);background:transparent;padding:18px 0;display:grid;grid-template-columns:38px 1fr;text-align:left;align-items:start;opacity:.55;transition:opacity .2s ease,padding .2s ease}
.direction.is-active{opacity:1;padding-left:8px}
.direction-number{font-size:10px;color:var(--page-muted);padding-top:3px}
.direction strong{display:block;font-size:17px}
.direction small{display:block;color:var(--page-muted);margin-top:4px;font-size:11px}
.direction-note{margin-top:28px}
.direction-note h2{font-size:13px;text-transform:uppercase;letter-spacing:.12em;margin-bottom:9px}
.direction-note>p{font-size:12px;line-height:1.5;color:var(--page-muted)}
.direction-note dl{margin:18px 0 0;display:grid;grid-template-columns:1fr 1fr;gap:14px}
.direction-note dl div{border-left:1px solid var(--line);padding-left:10px}
.direction-note dt{font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--page-muted)}
.direction-note dd{font-size:11px;margin:5px 0 0;line-height:1.35}
.palette{display:flex;gap:8px;margin-top:26px}
.palette span{display:block;width:28px;height:28px;border-radius:50%;background:var(--swatch);border:1px solid rgba(255,255,255,.22)}

.comparison{padding:42px clamp(22px,4vw,72px) 56px;display:grid;grid-template-columns:repeat(2,minmax(300px,390px));gap:clamp(22px,3vw,46px);justify-content:center;align-items:start;background-image:radial-gradient(circle at 72% 18%,rgba(156,157,201,.12),transparent 33%)}
.phone{position:relative;width:100%;height:min(790px,calc(100dvh - 130px));min-height:680px;background:var(--screen-bg);color:var(--screen-ink);border:1px solid rgba(255,255,255,.18);border-radius:40px;overflow:hidden;box-shadow:0 28px 70px rgba(0,0,0,.42);transition:background .45s ease,color .45s ease,border-radius .35s ease}
.phone-bar{height:33px;display:flex;align-items:end;justify-content:space-between;padding:0 22px 5px;font-size:9px;letter-spacing:.04em;position:absolute;z-index:5;top:0;left:0;right:0}
.phone-status{color:var(--screen-muted)}
.home-screen,.passport-screen{height:100%;overflow:auto;padding:40px 18px 88px;scrollbar-width:none}
.home-screen::-webkit-scrollbar,.passport-screen::-webkit-scrollbar{display:none}
.app-header{height:49px;display:flex;align-items:center;justify-content:space-between;position:relative;z-index:2}
.mini-wordmark{font-size:18px;font-weight:900;letter-spacing:-.08em;display:flex;align-items:center}
.mini-orbit{border-width:1.5px}
.profile-button{width:38px;height:38px;border-radius:50%;border:1px solid var(--line);background:var(--surface);font-size:11px}
.hero-card{height:302px;position:relative;overflow:hidden;border-radius:var(--radius);margin-top:10px;background:var(--purple)}
.hero-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero-scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(28,17,41,.03),rgba(28,17,41,.18) 36%,rgba(28,17,41,.94))}
.hero-copy{position:absolute;left:22px;right:22px;bottom:20px}
.hero-copy p,.passport-heading p,.tonight-card>p{font-size:9px;text-transform:uppercase;letter-spacing:.14em;margin-bottom:10px;color:var(--accent)}
.hero-copy h2{font-size:42px;line-height:.88;letter-spacing:-.06em}
.hero-copy>span{display:block;font-size:11px;color:var(--screen-muted);margin-top:12px;max-width:24ch;line-height:1.4}
.place-context{padding:17px 2px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);font-size:11px}
.place-context span{color:var(--screen-muted)}
.place-context strong{font-size:11px;font-weight:500}
.primary-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}
.primary-actions button{min-height:102px;padding:14px;text-align:left;border:1px solid var(--line);background:var(--surface);color:inherit;border-radius:calc(var(--radius) * .68);position:relative}
.primary-actions span{font-size:17px;font-weight:700;display:block}
.primary-actions small{display:block;font-size:9px;color:var(--screen-muted);margin-top:7px;line-height:1.35}
.primary-actions b{position:absolute;right:13px;bottom:12px;font-size:13px;font-weight:400;color:var(--accent)}
.tonight-card{margin-top:20px;padding:18px 0 2px;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr auto;gap:5px 12px;align-items:end}
.tonight-card>p{grid-column:1/-1;margin:0 0 6px}
.tonight-card strong,.tonight-card span{display:block}
.tonight-card strong{font-size:14px}.tonight-card span{font-size:10px;color:var(--screen-muted);margin-top:4px}
.tonight-card button{border:0;background:var(--accent);color:var(--night);border-radius:999px;padding:9px 13px;font-size:10px;font-weight:700}
.app-nav{position:absolute;z-index:6;bottom:0;left:0;right:0;min-height:70px;padding:9px 12px 16px;display:grid;grid-template-columns:repeat(4,1fr);background:color-mix(in srgb,var(--screen-bg) 92%,transparent);border-top:1px solid var(--line);backdrop-filter:blur(18px)}
.app-nav button{border:0;background:transparent;color:var(--screen-muted);font-size:9px;position:relative}
.app-nav button.is-current{color:var(--screen-ink);font-weight:700}
.app-nav button.is-current:before{content:"";position:absolute;width:18px;height:2px;background:var(--accent);left:50%;top:4px;transform:translateX(-50%)}

.back-label{font-size:10px;color:var(--screen-muted)}
.passport-heading{padding:21px 2px 18px}
.passport-heading h2{font-size:30px;line-height:1.02;letter-spacing:-.05em}
.passport-object{height:310px;position:relative;border-radius:var(--radius);overflow:hidden;background:var(--purple)}
.passport-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.passport-object:after{content:"";position:absolute;inset:0;background:linear-gradient(155deg,rgba(28,17,41,.1),rgba(28,17,41,.86))}
.passport-object-copy{position:absolute;z-index:2;left:22px;right:22px;top:21px;bottom:20px;display:flex;flex-direction:column;align-items:flex-start}
.passport-object-copy span{font-size:9px;text-transform:uppercase;letter-spacing:.14em}
.passport-object-copy strong{font-size:38px;line-height:.93;letter-spacing:-.05em;margin:auto 0 4px}
.passport-object-copy small{font-size:9px;color:#fffbdc}
.stamp{position:absolute;z-index:3;right:20px;top:26px;width:68px;height:68px;border:1px solid #fff;border-radius:50%;display:grid;place-content:center;text-align:center;font-size:20px;line-height:.75;transform:rotate(9deg);box-shadow:inset 0 0 0 4px rgba(255,255,255,.18)}
.stamp span{font-size:8px;letter-spacing:.17em;margin-top:5px}
.points-row{padding:18px 1px 14px;display:flex;justify-content:space-between;align-items:end;border-bottom:1px solid var(--line);font-size:10px;color:var(--screen-muted)}
.points-row strong{font-size:25px;color:var(--screen-ink)}.points-row small{font-size:9px;color:var(--screen-muted);font-weight:400}
.memory-list article{display:grid;grid-template-columns:26px 1fr auto;gap:10px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line)}
.memory-index{font-size:9px;color:var(--accent)}
.memory-list strong,.memory-list small{display:block}.memory-list strong{font-size:12px}.memory-list small{font-size:9px;color:var(--screen-muted);margin-top:4px}.memory-list b{font-size:10px;color:var(--accent)}
.prototype-note{position:fixed;bottom:12px;left:16px;font-size:9px;color:var(--page-muted);writing-mode:vertical-rl;transform:rotate(180deg)}

.destination-terminal{display:none}

/* Piste Halo · rapprochée du langage de memoria.bar */
body[data-theme="halo"]{
  --night:#191027;
  --page:#100918;
  --page-ink:#fbf9fb;
  --page-muted:#bfb7c9;
  --screen-bg:#191027;
  --screen-ink:#fbf9fb;
  --screen-muted:#c9c2d1;
  --line:rgba(251,249,251,.13);
  --surface:rgba(251,249,251,.045);
  --radius:14px;
  font-family:"Space Grotesk",sans-serif;
}
body[data-theme="halo"]:before{content:"";position:fixed;z-index:-1;inset:0;pointer-events:none;background:repeating-linear-gradient(180deg,rgba(255,255,255,.018) 0,rgba(255,255,255,.018) 1px,transparent 1px,transparent 3px),radial-gradient(34% 28% at 24% 26%,rgba(223,164,198,.13),transparent 62%),radial-gradient(30% 25% at 78% 68%,rgba(195,228,249,.11),transparent 64%)}
body[data-theme="halo"] .comparison{background-color:#100918;background-image:radial-gradient(34% 28% at 24% 30%,rgba(223,164,198,.16),transparent 62%),radial-gradient(31% 26% at 78% 66%,rgba(195,228,249,.12),transparent 64%),radial-gradient(28% 24% at 62% 18%,rgba(156,157,201,.16),transparent 66%)}
body[data-theme="halo"] .phone{border-color:rgba(251,249,251,.2);border-radius:34px;box-shadow:0 38px 100px rgba(3,1,9,.62),0 0 60px rgba(156,157,201,.08),inset 0 1px rgba(255,255,255,.05)}
body[data-theme="halo"] .phone:after{content:"";position:absolute;z-index:5;inset:0;pointer-events:none;background:repeating-linear-gradient(180deg,rgba(255,255,255,.018) 0,rgba(255,255,255,.018) 1px,transparent 1px,transparent 3px),radial-gradient(at 50% 42%,transparent 0,rgba(25,16,39,.12) 62%,rgba(25,16,39,.5) 100%);mix-blend-mode:screen;opacity:.52}
body[data-theme="halo"] .brand-name,body[data-theme="halo"] .mini-wordmark{font-family:"Space Grotesk",sans-serif;font-weight:700;letter-spacing:-.075em}
body[data-theme="halo"] .kicker,body[data-theme="halo"] .direction-number,body[data-theme="halo"] .scope-note strong,body[data-theme="halo"] .phone-bar,body[data-theme="halo"] .hero-copy p,body[data-theme="halo"] .passport-heading p,body[data-theme="halo"] .tonight-card>p,body[data-theme="halo"] .memory-index{font-family:"Space Mono",monospace}
body[data-theme="halo"] .hero-card,body[data-theme="halo"] .passport-object{border:1px solid rgba(251,249,251,.16);box-shadow:inset 0 1px rgba(255,255,255,.05),0 18px 46px rgba(6,2,12,.3)}
body[data-theme="halo"] .hero-card{height:318px}
body[data-theme="halo"] .hero-scrim{background:linear-gradient(180deg,rgba(25,16,39,.05),rgba(25,16,39,.08) 33%,rgba(25,16,39,.94) 80%,#191027)}
body[data-theme="halo"] .hero-copy{z-index:3;bottom:19px}
body[data-theme="halo"] .hero-copy p{font-size:8px;letter-spacing:.18em;color:#fbf9fb}
body[data-theme="halo"] .hero-copy h2,body[data-theme="halo"] .passport-heading h2{font-family:Fraunces,serif;font-style:italic;font-weight:400;letter-spacing:-.045em}
body[data-theme="halo"] .hero-copy h2{font-size:43px;line-height:.9}
body[data-theme="halo"] .passport-heading h2{font-size:34px;line-height:.98}
body[data-theme="halo"] .place-context{font-family:"Space Mono",monospace;font-size:9px}
body[data-theme="halo"] .place-context strong{font-family:"Space Grotesk",sans-serif;font-size:10px}
body[data-theme="halo"] .profile-button{border-radius:50%;background:rgba(251,249,251,.045);font-family:"Space Mono",monospace}
body[data-theme="halo"] .primary-actions{gap:9px}
body[data-theme="halo"] .primary-actions button{min-height:98px;border-radius:10px;background:linear-gradient(145deg,rgba(251,249,251,.075),rgba(251,249,251,.025));box-shadow:inset 0 1px rgba(255,255,255,.04)}
body[data-theme="halo"] .primary-actions span{font-weight:600}
body[data-theme="halo"] .tonight-card button{border-radius:7px;background:#fbf9fb;color:#191027;font-family:"Space Mono",monospace;text-transform:uppercase;letter-spacing:.05em}
body[data-theme="halo"] .passport-object{height:318px}
body[data-theme="halo"] .passport-object:after{background:linear-gradient(180deg,rgba(25,16,39,.02),rgba(25,16,39,.12) 42%,rgba(25,16,39,.92))}
body[data-theme="halo"] .passport-object-copy{z-index:3}
body[data-theme="halo"] .passport-object-copy>span,body[data-theme="halo"] .passport-object-copy>strong{visibility:hidden}
body[data-theme="halo"] .stamp{font-family:"Space Mono",monospace;border-color:rgba(251,249,251,.65);box-shadow:inset 0 0 0 3px rgba(251,249,251,.12),0 0 26px rgba(195,228,249,.1)}
body[data-theme="halo"] .memory-list article{grid-template-columns:30px 1fr auto}
body[data-theme="halo"] .app-nav{font-family:"Space Mono",monospace;background:rgba(25,16,39,.88)}
body[data-theme="halo"] .app-nav button.is-current:before{width:5px;height:5px;border-radius:50%;box-shadow:0 0 12px var(--accent)}

body[data-theme="halo"] .destination-terminal{position:absolute;z-index:3;display:block;border:1px solid rgba(251,249,251,.2);background:rgba(18,10,29,.44);box-shadow:inset 0 1px rgba(255,255,255,.04),0 14px 35px rgba(4,1,9,.16);backdrop-filter:blur(10px)}
body[data-theme="halo"] .destination-terminal:before,body[data-theme="halo"] .destination-terminal:after{content:"";position:absolute;top:50%;width:9px;height:9px;border:1px solid rgba(251,249,251,.3);border-radius:50%;background:#191027;transform:translateY(-50%)}
body[data-theme="halo"] .destination-terminal:before{left:-6px}body[data-theme="halo"] .destination-terminal:after{right:-6px}
body[data-theme="halo"] .destination-terminal-hero{top:18px;left:18px;right:18px;padding:11px 15px 12px}
body[data-theme="halo"] .destination-terminal-passport{left:20px;right:20px;bottom:23px;padding:12px 16px 13px}
body[data-theme="halo"] .terminal-label{display:flex;align-items:center;gap:7px;font:7px/1.2 "Space Mono",monospace;letter-spacing:.17em;text-transform:uppercase;color:#c9c2d1}
body[data-theme="halo"] .terminal-label i{width:4px;height:4px;border-radius:50%;background:#c3e4f9;box-shadow:0 0 8px #c3e4f9}
body[data-theme="halo"] .flap-word{display:flex;gap:3px;margin-top:8px}
body[data-theme="halo"] .flap-word b{position:relative;display:grid;place-items:center;width:24px;height:28px;border:1px solid rgba(251,249,251,.14);border-radius:3px;background:linear-gradient(#282039 0 48%,#171022 49% 51%,#241b35 52%);font:500 13px/1 "Space Mono",monospace;box-shadow:inset 0 1px rgba(255,255,255,.035);transform-origin:center}
body[data-theme="halo"] .flap-word b:after{content:"";position:absolute;left:2px;right:2px;top:50%;height:1px;background:rgba(0,0,0,.55)}
body[data-theme="halo"] .destination-terminal-passport .flap-word b{width:25px;height:30px;font-size:14px}

/* Piste Signal */
body[data-theme="signal"]{--page:#070a1b;--screen-bg:#0b1029;--screen-muted:#aeb6d8;--accent:#c3e4f9;--surface:rgba(195,228,249,.055);--radius:2px;--art:url('assets/signal.png')}
body[data-theme="signal"] .comparison{background-image:linear-gradient(rgba(195,228,249,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(195,228,249,.035) 1px,transparent 1px);background-size:38px 38px}
body[data-theme="signal"] .phone{border-radius:20px;box-shadow:20px 20px 0 rgba(38,33,77,.52),0 30px 70px rgba(0,0,0,.5)}
body[data-theme="signal"] .hero-card{height:262px;margin-left:28px;overflow:visible}
body[data-theme="signal"] .hero-art{object-position:58% 42%}
body[data-theme="signal"] .hero-copy{left:-28px;bottom:-3px}
body[data-theme="signal"] .hero-copy h2{font-size:47px;text-transform:uppercase;max-width:7ch}
body[data-theme="signal"] .hero-copy p{color:var(--sky)}
body[data-theme="signal"] .hero-copy>span{display:none}
body[data-theme="signal"] .profile-button{border-radius:2px}
body[data-theme="signal"] .place-context{margin-top:16px;border-top:1px solid var(--line)}
body[data-theme="signal"] .primary-actions{display:block;margin-top:8px}
body[data-theme="signal"] .primary-actions button{width:100%;min-height:66px;border-width:0 0 1px;border-radius:0;display:grid;grid-template-columns:1fr auto;align-items:center}
body[data-theme="signal"] .primary-actions small{display:none}
body[data-theme="signal"] .primary-actions b{position:static;grid-column:2;grid-row:1}
body[data-theme="signal"] .tonight-card button{border-radius:2px}
body[data-theme="signal"] .passport-heading h2{text-transform:uppercase;font-size:33px}
body[data-theme="signal"] .passport-object{height:275px;margin-right:26px;overflow:visible}
body[data-theme="signal"] .passport-art{object-position:66% 45%}
body[data-theme="signal"] .passport-object-copy{left:20px}
body[data-theme="signal"] .passport-object-copy strong{font-size:34px;text-transform:uppercase}
body[data-theme="signal"] .stamp{right:-24px;top:30px;background:#0b1029;border-color:var(--sky);color:var(--sky)}
body[data-theme="signal"] .app-nav button.is-current:before{width:28px}

/* Piste Souvenir */
body[data-theme="souvenir"]{color-scheme:light;--page:#eceaf3;--page-ink:#1c1129;--page-muted:#665d73;--line:rgba(28,17,41,.16);--screen-bg:#f7f4f8;--screen-ink:#1c1129;--screen-muted:#6e6578;--accent:#5c4e8c;--surface:#fff;--radius:18px;--art:url('assets/souvenir.png')}
body[data-theme="souvenir"] .site-header,body[data-theme="souvenir"] .brief-panel{border-color:rgba(28,17,41,.14)}
body[data-theme="souvenir"] .comparison{background-image:radial-gradient(circle at 72% 14%,rgba(223,164,198,.36),transparent 30%),radial-gradient(circle at 22% 82%,rgba(195,228,249,.55),transparent 28%)}
body[data-theme="souvenir"] .phone{border-color:#fff;border-radius:34px;box-shadow:0 24px 60px rgba(38,33,77,.18)}
body[data-theme="souvenir"] .hero-card{height:286px;margin:12px 6px 0;overflow:visible;background:#fff;box-shadow:0 12px 32px rgba(38,33,77,.13)}
body[data-theme="souvenir"] .hero-art{inset:-5px 7px 7px -7px;border-radius:18px;object-position:50% 48%}
body[data-theme="souvenir"] .hero-scrim{inset:-5px 7px 7px -7px;border-radius:18px;background:linear-gradient(180deg,transparent 18%,rgba(28,17,41,.06) 42%,rgba(28,17,41,.82))}
body[data-theme="souvenir"] .hero-copy{color:#fff;bottom:24px}
body[data-theme="souvenir"] .hero-copy p{color:#fff}
body[data-theme="souvenir"] .hero-copy h2{font-size:39px}
body[data-theme="souvenir"] .hero-copy>span{color:#efe8f5}
body[data-theme="souvenir"] .profile-button{background:#fff}
body[data-theme="souvenir"] .primary-actions button{box-shadow:0 7px 20px rgba(38,33,77,.07)}
body[data-theme="souvenir"] .primary-actions button:first-child{background:var(--night);color:#fff}
body[data-theme="souvenir"] .primary-actions button:first-child small{color:#d6cedd}
body[data-theme="souvenir"] .tonight-card button{color:#fff}
body[data-theme="souvenir"] .app-nav{background:rgba(247,244,248,.92)}
body[data-theme="souvenir"] .passport-object{--base-transform:rotate(-1.2deg);background:#fff;border:8px solid #fff;box-shadow:0 14px 34px rgba(38,33,77,.15)}
body[data-theme="souvenir"] .passport-art{border-radius:11px;object-position:50% 52%}
body[data-theme="souvenir"] .passport-object:after{border-radius:11px;background:linear-gradient(150deg,rgba(28,17,41,.02),rgba(28,17,41,.58))}
body[data-theme="souvenir"] .passport-object-copy{color:#fff}
body[data-theme="souvenir"] .stamp{background:#f7f4f8;color:#5c4e8c;border:2px solid #5c4e8c;right:16px;top:18px}

/* Piste Prisme */
body[data-theme="prisme"]{--page:#0b0713;--screen-bg:#171026;--screen-muted:#c1b8d0;--accent:#c3e4f9;--surface:rgba(195,228,249,.07);--radius:12px;--art:url('assets/prisme.png')}
body[data-theme="prisme"] .comparison{background-image:linear-gradient(125deg,transparent 45%,rgba(195,228,249,.07) 45%,rgba(195,228,249,.07) 45.2%,transparent 45.2%),radial-gradient(circle at 70% 20%,rgba(223,164,198,.12),transparent 30%)}
body[data-theme="prisme"] .phone{border-radius:26px;border-color:rgba(195,228,249,.28);box-shadow:0 34px 90px rgba(0,0,0,.55),inset 0 0 0 1px rgba(255,255,255,.04)}
body[data-theme="prisme"] .hero-card{height:294px;border:1px solid rgba(195,228,249,.26)}
body[data-theme="prisme"] .hero-art{object-position:60% 50%}
body[data-theme="prisme"] .hero-scrim{background:linear-gradient(180deg,rgba(11,7,19,.02),rgba(11,7,19,.18) 40%,rgba(11,7,19,.96))}
body[data-theme="prisme"] .hero-copy h2,body[data-theme="prisme"] .passport-heading h2{font-weight:500;letter-spacing:-.045em}
body[data-theme="prisme"] .profile-button,body[data-theme="prisme"] .primary-actions button{backdrop-filter:blur(16px);border-color:rgba(195,228,249,.24);box-shadow:inset 0 1px 0 rgba(255,255,255,.11)}
body[data-theme="prisme"] .primary-actions button{min-height:96px}
body[data-theme="prisme"] .tonight-card button{border-radius:6px;background:var(--sky)}
body[data-theme="prisme"] .passport-object{height:300px;border:1px solid rgba(195,228,249,.28)}
body[data-theme="prisme"] .passport-art{object-position:60% 54%}
body[data-theme="prisme"] .stamp{border-radius:8px;transform:rotate(0);backdrop-filter:blur(15px);background:rgba(23,16,38,.48)}

/* Piste Velours */
body[data-theme="velours"]{--page:#100713;--screen-bg:#1a0c20;--screen-muted:#cdbbcf;--accent:#dfa4c6;--surface:rgba(223,164,198,.075);--radius:30px;--art:url('assets/velours.png')}
body[data-theme="velours"] .comparison{background-image:radial-gradient(circle at 78% 12%,rgba(223,164,198,.16),transparent 32%),radial-gradient(circle at 28% 82%,rgba(38,33,77,.6),transparent 34%)}
body[data-theme="velours"] .phone{border-radius:46px;border-color:rgba(223,164,198,.18);box-shadow:0 30px 80px rgba(12,3,15,.7)}
body[data-theme="velours"] .hero-card{height:314px}
body[data-theme="velours"] .hero-art{object-position:50% 42%;filter:saturate(.9)}
body[data-theme="velours"] .hero-scrim{background:linear-gradient(180deg,rgba(26,12,32,.02),rgba(26,12,32,.15) 35%,rgba(26,12,32,.98))}
body[data-theme="velours"] .hero-copy{bottom:23px}
body[data-theme="velours"] .hero-copy h2{font-size:40px;font-weight:500;letter-spacing:-.045em}
body[data-theme="velours"] .primary-actions{grid-template-columns:1fr;gap:8px}
body[data-theme="velours"] .primary-actions button{min-height:67px;display:grid;grid-template-columns:1fr auto;align-items:center;padding:13px 17px}
body[data-theme="velours"] .primary-actions small{grid-column:1;display:none}
body[data-theme="velours"] .primary-actions b{position:static;grid-column:2;grid-row:1}
body[data-theme="velours"] .tonight-card button{background:var(--pink);border-radius:999px}
body[data-theme="velours"] .passport-heading h2{font-weight:500;letter-spacing:-.04em}
body[data-theme="velours"] .passport-object{height:318px}
body[data-theme="velours"] .passport-art{object-position:52% 44%}
body[data-theme="velours"] .stamp{background:rgba(26,12,32,.5);backdrop-filter:blur(11px)}

/* Piste Trace */
body[data-theme="trace"]{color-scheme:light;--page:#e9e8ea;--page-ink:#1c1129;--page-muted:#5f5966;--line:rgba(28,17,41,.24);--screen-bg:#f7f5ee;--screen-ink:#1c1129;--screen-muted:#625d65;--accent:#26214d;--surface:rgba(255,255,255,.45);--radius:0;--art:url('assets/trace.png')}
body[data-theme="trace"] .comparison{background-color:#dedde1;background-image:linear-gradient(rgba(28,17,41,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(28,17,41,.05) 1px,transparent 1px);background-size:28px 28px}
body[data-theme="trace"] .site-header,body[data-theme="trace"] .brief-panel{border-color:rgba(28,17,41,.25)}
body[data-theme="trace"] .phone{border-radius:0;border:2px solid var(--night);box-shadow:14px 14px 0 var(--mauve)}
body[data-theme="trace"] .profile-button{border:2px solid var(--night);border-radius:0;background:transparent}
body[data-theme="trace"] .hero-card{height:286px;border:2px solid var(--night);overflow:hidden}
body[data-theme="trace"] .hero-art{object-position:57% 48%;mix-blend-mode:multiply}
body[data-theme="trace"] .hero-scrim{background:linear-gradient(180deg,rgba(247,245,238,.02),rgba(247,245,238,.2) 43%,rgba(247,245,238,.96))}
body[data-theme="trace"] .hero-copy{color:var(--night)}
body[data-theme="trace"] .hero-copy p{color:var(--purple)}
body[data-theme="trace"] .hero-copy>span{color:#4f4856}
body[data-theme="trace"] .hero-copy h2{text-transform:uppercase;font-size:38px;line-height:.92}
body[data-theme="trace"] .primary-actions button{border:2px solid var(--night);background:transparent;border-radius:0;box-shadow:5px 5px 0 var(--pink)}
body[data-theme="trace"] .primary-actions b{color:var(--purple)}
body[data-theme="trace"] .tonight-card button{border-radius:0;background:var(--night);color:#fff}
body[data-theme="trace"] .app-nav{background:rgba(247,245,238,.95);border-color:rgba(28,17,41,.28)}
body[data-theme="trace"] .passport-heading h2{text-transform:uppercase;font-size:29px;line-height:.96}
body[data-theme="trace"] .passport-object{height:292px;border:2px solid var(--night);overflow:hidden;box-shadow:7px 7px 0 var(--sky)}
body[data-theme="trace"] .passport-art{mix-blend-mode:multiply;object-position:58% 50%}
body[data-theme="trace"] .passport-object:after{background:linear-gradient(180deg,transparent 32%,rgba(28,17,41,.82))}
body[data-theme="trace"] .passport-object-copy{color:#fff}
body[data-theme="trace"] .stamp{background:#f7f5ee;color:var(--night);border:2px solid var(--night);border-radius:0;transform:rotate(3deg)}

@media(max-width:1100px){
  main{grid-template-columns:280px minmax(0,1fr)}
  .brief-panel{padding-inline:24px}
  .comparison{grid-template-columns:minmax(300px,390px);justify-content:center}
  .passport-phone{display:none}
}

@media(max-width:760px){
  .site-header{height:auto;min-height:66px;padding:12px 16px}.brand>span:last-child,.header-actions>span{display:none}
  main{display:block}.brief-panel{position:static;height:auto;padding:28px 18px 22px;border-right:0;border-bottom:1px solid var(--line)}
  .brief-panel h1{font-size:38px}.intro{max-width:43ch}.scope-note{max-width:43ch}.directions{margin-top:25px}.direction-note{display:none}.palette{margin-top:20px}
  .comparison{padding:24px 12px 42px;display:flex;overflow-x:auto;scroll-snap-type:x mandatory;justify-content:start;gap:14px}
  .phone,.passport-phone{display:block;min-width:min(88vw,390px);height:760px;scroll-snap-align:center}
  .prototype-note{display:none}
}

@media(max-width:370px){
  .phone{min-width:calc(100vw - 20px)}
  .home-screen,.passport-screen{padding-inline:14px}
  .hero-copy h2{font-size:37px}
  .primary-actions{gap:8px}
}

/* Motion system */
.comparison{position:relative;isolation:isolate}
.comparison:before{content:"";position:absolute;z-index:-1;inset:0;pointer-events:none;background:radial-gradient(420px circle at 70% 18%,rgba(195,228,249,.1),transparent 62%);opacity:.8;transition:opacity .4s ease}
.comparison:after{content:"";position:absolute;z-index:8;inset:0;pointer-events:none;opacity:0}
.direction{position:relative;overflow:hidden;isolation:isolate}
.direction:before{content:"";position:absolute;z-index:-1;inset:0;background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 13%,transparent),transparent 72%);transform:translateX(-104%);transition:transform .55s cubic-bezier(.16,1,.3,1)}
.direction.is-active:before{transform:translateX(0)}
.direction-number{transition:transform .35s cubic-bezier(.16,1,.3,1),color .25s ease}
.direction.is-active .direction-number{transform:translateX(4px);color:var(--accent)}
.phone{opacity:.001;transform:translateY(24px) scale(.985);filter:blur(8px);transition:opacity .6s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1),filter .55s ease,background .45s ease,color .45s ease,border-radius .45s cubic-bezier(.16,1,.3,1),box-shadow .45s ease}
.phone.is-visible{opacity:1;transform:none;filter:none}
.passport-phone.is-visible{transition-delay:.08s}
.hero-card,.passport-object{--base-transform:translateZ(0);transform:var(--base-transform);transition:transform .55s cubic-bezier(.16,1,.3,1),height .45s cubic-bezier(.16,1,.3,1),border-radius .45s cubic-bezier(.16,1,.3,1),box-shadow .45s ease}
.hero-art,.passport-art{transform:scale(1.045);transition:opacity .3s ease,transform .75s cubic-bezier(.16,1,.3,1),filter .45s ease}
.hero-card:before,.passport-object:before{content:"";position:absolute;z-index:1;inset:-25%;pointer-events:none;opacity:0}
.hero-copy,.passport-object-copy,.stamp{transform:translateZ(18px)}
.primary-actions button,.tonight-card button,.profile-button{transition:transform .28s cubic-bezier(.16,1,.3,1),background .3s ease,border-color .3s ease,box-shadow .3s ease}
.primary-actions b{transition:transform .3s cubic-bezier(.16,1,.3,1)}
.primary-actions button:active,.tonight-card button:active,.profile-button:active{transform:scale(.965)}
.tonight-card>p{display:flex;align-items:center;gap:7px}
.tonight-card>p:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 45%,transparent)}
.app-nav button:after{content:"";position:absolute;left:50%;bottom:2px;width:3px;height:3px;border-radius:50%;background:var(--accent);opacity:0;transform:translate(-50%,5px);transition:opacity .25s ease,transform .35s cubic-bezier(.16,1,.3,1)}
.app-nav button.is-current:after{opacity:1;transform:translate(-50%,0)}
body.is-switching .phone.is-visible{opacity:.42;transform:translateY(9px) scale(.985);filter:blur(6px)}
body.is-switching .hero-art,body.is-switching .passport-art{opacity:.12;transform:scale(1.11)}

@media(prefers-reduced-motion:no-preference){
  .page-ready .site-header{animation:reveal-down .7s cubic-bezier(.16,1,.3,1) both}
  .page-ready .kicker,.page-ready .brief-panel h1,.page-ready .intro,.page-ready .scope-note{animation:reveal-up .75s cubic-bezier(.16,1,.3,1) both}
  .page-ready .brief-panel h1{animation-delay:.06s}.page-ready .intro{animation-delay:.12s}.page-ready .scope-note{animation-delay:.18s}
  .page-ready .direction{animation:reveal-left .7s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(.2s + var(--motion-index,0) * .055s)}
  .direction:nth-child(1){--motion-index:1}.direction:nth-child(2){--motion-index:2}.direction:nth-child(3){--motion-index:3}.direction:nth-child(4){--motion-index:4}.direction:nth-child(5){--motion-index:5}.direction:nth-child(6){--motion-index:6}
  .theme-enter .hero-art,.theme-enter .passport-art{animation:art-reveal .9s cubic-bezier(.16,1,.3,1) both}
  .theme-enter .hero-copy>*{animation:reveal-up .65s cubic-bezier(.16,1,.3,1) both}
  .theme-enter .hero-copy p{animation-delay:.08s}.theme-enter .hero-copy h2{animation-delay:.14s}.theme-enter .hero-copy>span{animation-delay:.22s}
  .theme-enter .passport-object-copy>*{animation:reveal-left .65s cubic-bezier(.16,1,.3,1) both}
  .theme-enter .passport-object-copy strong{animation-delay:.1s}.theme-enter .passport-object-copy small{animation-delay:.18s}
  .theme-enter .stamp{animation:stamp-in .72s cubic-bezier(.2,1.45,.38,1) .18s both}
  .theme-enter .memory-list article{animation:reveal-left .65s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(.2s + var(--memory-index,0) * .08s)}
  .memory-list article:nth-child(1){--memory-index:1}.memory-list article:nth-child(2){--memory-index:2}.memory-list article:nth-child(3){--memory-index:3}
  .tonight-card>p:before{animation:status-pulse 2.4s ease-out infinite}
  body[data-theme="halo"] .hero-card:before,body[data-theme="halo"] .passport-object:before{opacity:.42;background:conic-gradient(from 0deg,transparent 0 62%,rgba(195,228,249,.42) 70%,rgba(223,164,198,.45) 77%,transparent 86%);animation:halo-orbit 10s linear infinite}
  body[data-theme="halo"] .brand-orbit{animation:halo-orbit 9s linear infinite}
  body[data-theme="halo"] .comparison{animation:halo-glow-drift 12s ease-in-out infinite alternate}
  body[data-theme="halo"] .flap-word b{animation:flap-flip .72s cubic-bezier(.2,.75,.2,1) both;animation-delay:calc(.18s + var(--flap-index) * .075s)}
  body[data-theme="halo"] .destination-terminal{animation:terminal-arrive .82s cubic-bezier(.16,1,.3,1) .08s both}
  body[data-theme="signal"] .comparison:after{opacity:.22;background:linear-gradient(180deg,transparent 0 43%,rgba(195,228,249,.4) 49.8%,rgba(195,228,249,.85) 50%,transparent 50.3% 100%);animation:signal-scan 5.2s cubic-bezier(.76,0,.24,1) infinite}
  body[data-theme="signal"] .hero-art,body[data-theme="signal"] .passport-art{animation:signal-drift 8s ease-in-out infinite alternate}
  body[data-theme="souvenir"] .hero-card,body[data-theme="souvenir"] .passport-object{animation:souvenir-float 7s ease-in-out infinite alternate}
  body[data-theme="souvenir"].theme-enter .hero-card{animation:souvenir-arrive .85s cubic-bezier(.16,1,.3,1) both}
  body[data-theme="prisme"] .hero-card:before,body[data-theme="prisme"] .passport-object:before{opacity:.72;background:linear-gradient(108deg,transparent 34%,rgba(255,255,255,.03) 42%,rgba(195,228,249,.33) 49%,rgba(223,164,198,.18) 53%,transparent 61%);transform:translateX(-70%);animation:prism-sweep 6.8s cubic-bezier(.65,0,.35,1) infinite}
  body[data-theme="velours"] .comparison:before{animation:velvet-breathe 7s ease-in-out infinite alternate}
  body[data-theme="velours"] .hero-art,body[data-theme="velours"] .passport-art{animation:velvet-drift 11s ease-in-out infinite alternate}
  body[data-theme="trace"].theme-enter .phone{animation:print-register .58s steps(4,end) both}
  body[data-theme="trace"].theme-enter .hero-art,body[data-theme="trace"].theme-enter .passport-art{animation:ink-settle .72s steps(5,end) both}
  @keyframes reveal-up{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
  @keyframes reveal-down{from{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:none}}
  @keyframes reveal-left{from{opacity:0;transform:translateX(-16px)}to{opacity:1;transform:none}}
  @keyframes art-reveal{from{opacity:.08;filter:blur(10px);transform:translateY(12px) scale(1.12)}to{opacity:1;filter:none;transform:translateY(0) scale(1.045)}}
  @keyframes stamp-in{from{opacity:0;transform:translateZ(18px) scale(1.55) rotate(18deg)}to{opacity:1;transform:translateZ(18px) scale(1) rotate(9deg)}}
  @keyframes status-pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 52%,transparent)}70%,100%{box-shadow:0 0 0 8px transparent}}
  @keyframes halo-orbit{to{transform:rotate(360deg)}}
  @keyframes halo-glow-drift{from{background-position:0 0,0 0,0 0;filter:saturate(.94)}to{background-position:18px -12px,-22px 15px,12px 18px;filter:saturate(1.08)}}
  @keyframes flap-flip{0%{opacity:0;transform:rotateX(-86deg);filter:brightness(1.8)}58%{opacity:1;transform:rotateX(12deg)}100%{opacity:1;transform:rotateX(0);filter:none}}
  @keyframes terminal-arrive{from{opacity:0;transform:translateY(-10px);filter:blur(5px)}to{opacity:1;transform:none;filter:none}}
  @keyframes signal-scan{0%{transform:translateY(-64%)}45%,55%{transform:translateY(0)}100%{transform:translateY(64%)}}
  @keyframes signal-drift{from{filter:contrast(1) saturate(1);transform:translate3d(-3px,-2px,0) scale(1.05)}to{filter:contrast(1.08) saturate(1.12);transform:translate3d(3px,2px,0) scale(1.075)}}
  @keyframes souvenir-float{from{translate:0 -2px}to{translate:0 4px}}
  @keyframes souvenir-arrive{from{opacity:.25;transform:rotate(-4deg) translateY(18px)}to{opacity:1;transform:rotate(0) translateY(0)}}
  @keyframes prism-sweep{0%,18%{transform:translateX(-78%)}55%,100%{transform:translateX(78%)}}
  @keyframes velvet-breathe{from{opacity:.42;filter:saturate(.9)}to{opacity:1;filter:saturate(1.18)}}
  @keyframes velvet-drift{from{transform:translate3d(-7px,-4px,0) scale(1.07)}to{transform:translate3d(7px,4px,0) scale(1.1)}}
  @keyframes print-register{0%{translate:-5px 2px;filter:contrast(1.2)}25%{translate:4px -2px}50%{translate:-2px 1px}75%{translate:1px 0}100%{translate:0 0;filter:none}}
  @keyframes ink-settle{0%{opacity:.2;filter:contrast(1.6);transform:translate(7px,-4px) scale(1.07)}60%{opacity:.78;transform:translate(-2px,1px) scale(1.05)}100%{opacity:1;filter:none;transform:translate(0) scale(1.045)}}
}

@media(prefers-reduced-motion:reduce){
  *,*:before,*:after{animation:none!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .phone{opacity:1;transform:none;filter:none}
  .hero-art,.passport-art{transform:none}
}
