/* Voyageur · site vitrine · styles partages
   Design system repris de la landing v002 (palette oklch, Geist / Space Grotesk / Geist Mono).
   Fichier unique, sections commentees. */

/* ============================== TOKENS ============================== */
:root{
  --encre:oklch(0.155 0.028 268);
  --nuit:oklch(0.190 0.028 268);          /* fond principal */
  --surface:oklch(0.225 0.030 268);
  --surface-2:oklch(0.260 0.032 268);
  --border:oklch(0.340 0.025 268);
  --border-strong:oklch(0.460 0.028 268);
  --text:oklch(0.955 0.012 80);
  --text-muted:oklch(0.690 0.020 268);
  --text-dim:oklch(0.530 0.022 268);
  --accent:oklch(0.790 0.110 215);        /* teal, serverTone accent */
  --accent-soft:oklch(0.790 0.110 215 / 0.14);
  --accent-strong:oklch(0.845 0.118 215);
  --claude:oklch(0.835 0.110 75);         /* amber, serverTone claude */
  --claude-soft:oklch(0.835 0.110 75 / 0.16);
  --ok:oklch(0.800 0.090 155);
  --warn:oklch(0.800 0.135 55);
  --warn-soft:oklch(0.800 0.135 55 / 0.16);
  --danger:oklch(0.720 0.150 30);
  --radius-sm:5px; --radius:8px; --radius-lg:12px; --radius-xl:18px;
  --ease:cubic-bezier(0.33,0,0.2,1);
  --maxw:1200px;
  --font-display:'Geist',-apple-system,BlinkMacSystemFont,sans-serif;
  --font-heading:'Space Grotesk',var(--font-display);
  --font-mono:'Geist Mono',ui-monospace,'SF Mono',monospace;
}

/* ============================== FONT FACES ============================== */
@font-face{font-family:'Geist';src:url('/assets/fonts/Geist-Regular.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'Geist';src:url('/assets/fonts/Geist-Medium.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:'Geist';src:url('/assets/fonts/Geist-SemiBold.woff2') format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:'Geist';src:url('/assets/fonts/Geist-Bold.woff2') format('woff2');font-weight:700;font-display:swap}
@font-face{font-family:'Geist Mono';src:url('/assets/fonts/GeistMono-Regular.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'Geist Mono';src:url('/assets/fonts/GeistMono-Medium.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:'Space Grotesk';src:url('/assets/fonts/SpaceGrotesk-Medium.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:'Space Grotesk';src:url('/assets/fonts/SpaceGrotesk-SemiBold.woff2') format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:'Space Grotesk';src:url('/assets/fonts/SpaceGrotesk-Bold.woff2') format('woff2');font-weight:700;font-display:swap}

/* ============================== BASE ============================== */
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  background:var(--nuit);
  color:var(--text);
  font-family:var(--font-display);
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
h1,h2,h3{font-family:var(--font-heading);line-height:1.08;letter-spacing:-0.02em;font-weight:600}
h1{font-size:clamp(40px,6vw,68px)}
h2{font-size:clamp(28px,3.6vw,42px)}
h3{font-size:19px}
p{color:var(--text-muted)}
a{color:inherit;text-decoration:none}
img,svg{max-width:100%}
picture{display:block;line-height:0}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.container{max-width:var(--maxw);margin:0 auto;padding:0 24px}
.mono{font-family:var(--font-mono)}
.eyebrow{
  font-family:var(--font-mono);font-size:12px;letter-spacing:0.18em;
  text-transform:uppercase;color:var(--text-dim);display:inline-block;margin-bottom:18px;
}
.accent{color:var(--accent)}
.dim{color:var(--text-dim)}

@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}

/* ============================== LAYOUT ============================== */
.section{padding:92px 0;position:relative}
.section-tight{padding:56px 0}
.section-head{max-width:720px;margin-bottom:44px}
.section-head p{margin-top:14px;font-size:18px}
.divider{border:0;border-top:1px solid var(--border);margin:0}

/* ============================== BUTTONS ============================== */
.btn{
  display:inline-flex;align-items:center;gap:9px;justify-content:center;
  font-family:var(--font-display);font-weight:500;font-size:15px;
  padding:12px 20px;border-radius:var(--radius);border:1px solid transparent;
  cursor:pointer;transition:transform .15s var(--ease),background .15s var(--ease),border-color .15s var(--ease);
  white-space:nowrap;
}
.btn:hover{transform:translateY(-1px)}
.btn-primary{background:var(--accent);color:var(--encre);font-weight:600}
.btn-primary:hover{background:var(--accent-strong)}
.btn-ghost{border-color:var(--border-strong);color:var(--text);background:transparent}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}
.btn-lg{padding:15px 26px;font-size:16px}
.btn-sm{padding:9px 15px;font-size:14px}

.badge-alpha{
  font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--claude);border:1px solid var(--claude-soft);background:var(--claude-soft);
  border-radius:999px;padding:2px 9px;line-height:1.6;
}

/* ============================== NAV ============================== */
.site-nav{
  position:sticky;top:0;z-index:50;
  background:oklch(0.155 0.028 268 / 0.82);backdrop-filter:blur(14px);
  border-bottom:1px solid var(--border);
}
.nav-inner{display:flex;align-items:center;gap:20px;height:62px}
.brand{display:flex;align-items:center;gap:9px;font-family:var(--font-heading);font-weight:600;font-size:18px;letter-spacing:-0.01em}
.brand svg{flex:none}
.nav-links{display:flex;align-items:center;gap:22px;margin-left:auto}
.nav-links>a:not(.btn){color:var(--text-muted);font-size:14.5px;transition:color .15s var(--ease)}
.nav-links>a:not(.btn):hover{color:var(--text)}
.nav-toggle{display:none;margin-left:auto;background:transparent;border:1px solid var(--border-strong);
  color:var(--text);border-radius:var(--radius-sm);font-size:20px;line-height:1;padding:4px 10px;cursor:pointer}
.lang-switcher{display:flex;align-items:center;gap:2px;border:1px solid var(--border);border-radius:999px;padding:2px}
.lang-switcher a{font-family:var(--font-mono);font-size:12px;color:var(--text-dim);padding:3px 9px;border-radius:999px}
.lang-switcher a.is-active{color:var(--accent);background:var(--accent-soft)}

/* ============================== FOOTER ============================== */
.site-footer{border-top:1px solid var(--border);padding:52px 0 40px;margin-top:40px}
.footer-inner{display:flex;flex-wrap:wrap;gap:40px;justify-content:space-between}
.footer-tag{max-width:320px}
.footer-tag .brand{margin-bottom:12px}
.footer-tag p{font-size:14px}
.footer-cols{display:flex;gap:56px;flex-wrap:wrap}
.footer-col h4{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-dim);margin-bottom:14px}
.footer-col a{display:block;color:var(--text-muted);font-size:14px;margin-bottom:9px;transition:color .15s var(--ease)}
.footer-col a:hover{color:var(--text)}
.footer-legal{width:100%;margin-top:36px;padding-top:22px;border-top:1px solid var(--border);color:var(--text-dim);font-size:13px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}

/* ============================== PANEL (fenetre applicative) ============================== */
.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);
  overflow:hidden;box-shadow:0 30px 70px -34px oklch(0 0 0 / .7)}
.panel-titlebar{display:flex;align-items:center;gap:8px;padding:11px 14px;border-bottom:1px solid var(--border);background:var(--surface-2)}
.tl{width:11px;height:11px;border-radius:50%;flex:none}
.tl-r{background:#ff5f57}.tl-y{background:#febc2e}.tl-g{background:#28c840}
.panel-title{font-family:var(--font-mono);font-size:12px;color:var(--text-muted);margin-left:6px}
.panel-title .accent{color:var(--accent)}
.panel-count{margin-left:auto;font-family:var(--font-mono);font-size:11px;color:var(--text-dim)}
.panel-body{padding:4px 0}
.panel-shot{display:block;width:100%;height:auto;cursor:zoom-in}

/* Zoom des captures au survol : apercu en grand, centre, fond assombri. Calque
   purement visuel (pointer-events:none) pilote par main.js (initZoom). */
.shot-zoom{
  position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;
  padding:4vh 4vw;background:oklch(0.155 0.028 268 / 0.86);backdrop-filter:blur(6px);
  opacity:0;visibility:hidden;transition:opacity .18s var(--ease);pointer-events:none;
}
.shot-zoom.is-visible{opacity:1;visibility:visible;pointer-events:auto;cursor:zoom-out}
.shot-zoom img{
  max-width:min(1600px,94vw);max-height:92vh;width:auto;height:auto;
  border-radius:var(--radius-lg);border:1px solid var(--border-strong);
  box-shadow:0 40px 120px -30px oklch(0 0 0 / .85);
}

/* galerie de captures reelles */
.gallery-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:28px}
.gallery-item{display:flex;flex-direction:column;gap:12px}
.gallery-item .panel{margin:0}
.gallery-item figcaption{font-size:13.5px;color:var(--text-muted)}
.ws-row{display:flex;align-items:center;gap:12px;padding:12px 15px;border-bottom:1px solid var(--border)}
.ws-row:last-child{border-bottom:0}
.ws-dot{flex:none}
.ws-name{font-family:var(--font-mono);font-size:13px;color:var(--text)}
.ws-task{font-family:var(--font-mono);font-size:11.5px;color:var(--text-dim);margin-left:auto;text-align:right;max-width:46%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* pills */
.pill{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;
  padding:3px 9px;border-radius:999px;flex:none}
.pill-accent{background:var(--accent-soft);color:var(--accent)}
.pill-claude{background:var(--claude-soft);color:var(--claude)}
.pill-warn{background:var(--warn-soft);color:var(--warn)}
.pill-ok{background:oklch(0.800 0.090 155 / .16);color:var(--ok)}
.pill-dim{background:oklch(0.530 0.022 268 / .16);color:var(--text-dim)}

/* orbit (anneau anime + compte) */
.orbit{width:14px;height:14px;border-radius:50%;border:2px solid var(--accent);border-top-color:transparent;
  display:inline-block;animation:spin 1.1s linear infinite;vertical-align:middle}
.orbit-claude{border-color:var(--claude);border-top-color:transparent}
.orbit-count{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:11px;color:var(--text-muted)}
@keyframes spin{to{transform:rotate(360deg)}}
.static-dot{width:9px;height:9px;border-radius:50%;display:inline-block;background:var(--text-dim)}
.static-dot.on-accent{background:var(--accent)}
.static-dot.on-claude{background:var(--claude)}
.static-dot.on-warn{background:var(--warn)}

/* ============================== CARDS ============================== */
.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px}
.card .num{font-family:var(--font-mono);font-size:12px;color:var(--accent);display:block;margin-bottom:12px}
.card h3{margin-bottom:9px}
.card p{font-size:14.5px}

/* feature list (revelation) */
.feature-list{display:flex;flex-direction:column;gap:26px}
.feature-item{display:flex;gap:16px}
.feature-item .fi-mark{flex:none;width:34px;height:34px;border-radius:var(--radius);background:var(--accent-soft);
  display:flex;align-items:center;justify-content:center;color:var(--accent);font-family:var(--font-mono);font-size:15px}
.feature-item h3{margin-bottom:5px}
.feature-item p{font-size:14.5px}

/* two-column split (hero, revelation) */
.split{display:grid;grid-template-columns:1fr 1.12fr;gap:48px;align-items:center}
.split>*{min-width:0}
.feature>*{min-width:0}

/* ============================== FEATURE BLOCKS (page fonctionnalites) ============================== */
.feature{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;padding:64px 0;border-top:1px solid var(--border)}
.feature.reverse .feature-media{order:-1}
.feature-copy .eyebrow{margin-bottom:12px}
.feature-copy h2{font-size:clamp(26px,3vw,34px);margin-bottom:14px}
.feature-copy p{font-size:16px;margin-bottom:14px}
.feature-copy ul{list-style:none;display:flex;flex-direction:column;gap:9px}
.feature-copy li{position:relative;padding-left:22px;font-size:14.5px;color:var(--text-muted)}
.feature-copy li::before{content:"";position:absolute;left:0;top:8px;width:8px;height:8px;border-radius:2px;background:var(--accent)}
.kbd{font-family:var(--font-mono);font-size:12px;background:var(--surface-2);border:1px solid var(--border-strong);
  border-radius:5px;padding:1px 7px;color:var(--text);white-space:nowrap}

/* file tree mock */
.tree{font-family:var(--font-mono);font-size:12.5px;line-height:2;color:var(--text-muted)}
.tree .row{padding:0 14px;display:flex;gap:8px}
.tree .row.sel{background:var(--accent-soft);color:var(--text)}
.tree .ind{color:var(--text-dim)}

/* ============================== COMPARISON TABLE ============================== */
.cmp-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-lg)}
.cmp-table{width:100%;border-collapse:collapse;min-width:640px;font-size:14.5px}
.cmp-table th,.cmp-table td{padding:15px 18px;text-align:left;border-bottom:1px solid var(--border)}
.cmp-table thead th{font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);font-weight:400}
.cmp-table tbody tr:last-child td{border-bottom:0}
.cmp-table td:first-child{color:var(--text)}
.cmp-col-voy{background:var(--accent-soft);color:var(--text)!important;font-weight:500}
.cmp-table thead .cmp-col-voy{color:var(--accent);font-weight:600}
.yes{color:var(--ok)}.no{color:var(--danger)}

/* ============================== DOWNLOAD ============================== */
.download-band{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);
  padding:44px;text-align:center}
.download-band h2{margin-bottom:10px}
.download-band .sub{font-size:16px;margin-bottom:26px}
.dl-buttons{display:flex;gap:16px;justify-content:center;flex-wrap:wrap}
.dl-btn{display:flex;align-items:center;gap:14px;text-align:left;background:var(--nuit);border:1px solid var(--border-strong);
  border-radius:var(--radius-lg);padding:15px 22px;min-width:230px;transition:border-color .15s var(--ease),transform .15s var(--ease)}
.dl-btn:hover{border-color:var(--accent);transform:translateY(-1px)}
.dl-btn .ico{flex:none;color:var(--text)}
.dl-btn .dl-os{font-family:var(--font-heading);font-weight:600;font-size:16px;color:var(--text)}
.dl-btn .dl-meta{display:block;font-family:var(--font-mono);font-size:11.5px;color:var(--text-dim);margin-top:2px}
.dl-btn .dl-ver{color:var(--accent)}
.dl-btn.is-loading{opacity:.6;cursor:progress}
.dl-note{margin-top:20px;font-size:13px;color:var(--text-dim)}

/* alpha callout / hosted note */
.callout{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);
  padding:22px 24px;display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.callout .c-ico{flex:none;width:40px;height:40px;border-radius:var(--radius);background:var(--surface-2);
  display:flex;align-items:center;justify-content:center;color:var(--text-muted)}
.callout .c-body{flex:1;min-width:220px}
.callout h3{margin-bottom:4px}
.callout p{font-size:14px}
.alpha-strip{display:inline-flex;align-items:center;gap:10px;font-size:13px;color:var(--text-dim);font-family:var(--font-mono)}

/* ============================== FEATURE MOCKUPS (page fonctionnalites) ============================== */
.feature-media .panel{max-width:760px;margin:0 auto}
.page-hero{padding:64px 0 20px}
.page-hero h1{font-size:clamp(34px,5vw,54px);margin-bottom:16px}
.page-hero p{font-size:18px;max-width:640px}

/* server menu */
.srv-row{display:flex;align-items:center;gap:12px;padding:12px 15px;border-bottom:1px solid var(--border)}
.srv-row:last-child{border-bottom:0}
.srv-ini{flex:none;width:30px;height:30px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;
  font-family:var(--font-mono);font-size:12px;background:var(--accent-soft);color:var(--accent)}
.srv-ini.claude{background:var(--claude-soft);color:var(--claude)}
.srv-meta{display:flex;flex-direction:column;line-height:1.3}
.srv-name{font-size:13.5px;color:var(--text)}
.srv-sub{font-family:var(--font-mono);font-size:11px;color:var(--text-dim)}
.srv-badge{margin-left:auto;font-family:var(--font-mono);font-size:10px;color:var(--text-dim);border:1px solid var(--border);border-radius:999px;padding:2px 8px}

/* editor mock */
.ed-tabs{display:flex;gap:2px;padding:8px 10px 0;background:var(--surface-2)}
.ed-tab{font-family:var(--font-mono);font-size:11.5px;padding:6px 12px;border-radius:6px 6px 0 0;color:var(--text-dim)}
.ed-tab.on{background:var(--surface);color:var(--text)}
.ed-body{padding:14px 16px;font-family:var(--font-mono);font-size:12px;line-height:1.9}
.ed-ln{color:var(--text-dim)}
.tok-k{color:var(--accent)}.tok-s{color:var(--ok)}.tok-c{color:var(--text-dim)}.tok-f{color:var(--claude)}

/* sync / transfer rows */
.io-row{display:flex;align-items:center;gap:12px;padding:11px 15px;border-bottom:1px solid var(--border);font-size:13px}
.io-row:last-child{border-bottom:0}
.io-ico{flex:none;font-family:var(--font-mono);color:var(--accent)}
.io-name{font-family:var(--font-mono);font-size:12.5px;color:var(--text)}
.io-state{margin-left:auto;font-family:var(--font-mono);font-size:11px;color:var(--text-muted)}
.bar{height:5px;border-radius:999px;background:var(--surface-2);overflow:hidden;flex:1;max-width:120px;margin-left:auto}
.bar>span{display:block;height:100%;background:var(--accent)}

/* search palette */
.pal-input{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border);
  font-family:var(--font-mono);font-size:13px;color:var(--text-muted)}
.pal-caret{width:2px;height:16px;background:var(--accent);display:inline-block;animation:blink 1s steps(2) infinite}
@keyframes blink{50%{opacity:0}}
.pal-group{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);padding:10px 16px 4px}
.pal-item{display:flex;align-items:center;gap:10px;padding:8px 16px;font-size:13px}
.pal-item.sel{background:var(--accent-soft)}
.pal-item .pi-name{font-family:var(--font-mono);font-size:12.5px;color:var(--text)}
.pal-item .pi-meta{margin-left:auto;font-family:var(--font-mono);font-size:11px;color:var(--text-dim)}

/* usage bars (claude integration) */
.usage{padding:16px}
.usage-row{margin-bottom:14px}
.usage-row:last-child{margin-bottom:0}
.usage-lbl{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:11.5px;color:var(--text-muted);margin-bottom:6px}
.usage-track{height:7px;border-radius:999px;background:var(--surface-2);overflow:hidden}
.usage-track>span{display:block;height:100%}
.u-accent{background:var(--accent)}.u-claude{background:var(--claude)}.u-warn{background:var(--warn)}

/* shortcuts table */
.kbd-table{width:100%;border-collapse:collapse;font-size:13.5px}
.kbd-table td{padding:9px 14px;border-bottom:1px solid var(--border)}
.kbd-table tr:last-child td{border-bottom:0}
.kbd-table td:last-child{color:var(--text-muted)}

/* panes grid (splits) */
.panes-grid{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:6px;padding:10px;height:230px}
.pane-cell{background:var(--nuit);border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px;
  font-family:var(--font-mono);font-size:10.5px;color:var(--text-dim);position:relative;overflow:hidden}
.pane-cell.span2{grid-row:span 2}
.pane-cell .pane-head{color:var(--text-muted);margin-bottom:5px}
.quake-hint{margin-top:10px;font-family:var(--font-mono);font-size:11px;color:var(--text-dim);text-align:center}

/* ============================== RESPONSIVE ============================== */
@media (max-width:860px){
  .split,.feature,.feature.reverse{grid-template-columns:1fr;gap:34px}
  .gallery-grid{grid-template-columns:1fr}
  .feature.reverse .feature-media,.feature.reverse .feature-copy{order:0}
  .section{padding:64px 0}
  .nav-links{
    position:absolute;top:62px;left:0;right:0;flex-direction:column;align-items:flex-start;gap:14px;
    background:var(--encre);border-bottom:1px solid var(--border);padding:20px 24px;margin-left:0;
    display:none;
  }
  .nav-links.open{display:flex}
  .nav-links .lang-switcher{align-self:flex-start}
  .nav-toggle{display:inline-block}
  .download-band{padding:30px 20px}
}
