/* SITE PUBLIC — mêmes jetons que l'application (app.css) : une seule source de vérité. Règles : corps 17 px+, 60 à 75 caractères par ligne, conteneur 1200 px,
   échelle 4·8·12·16·24·32·48·64·96, une couleur d'accent réservée aux boutons d'action, boutons ≥ 48 px, mouvement ≤ 300 ms. docs/site/DESIGN-RULES.md */
body.site{font-size:1.0625rem;line-height:1.6}
body.site main.s-main{max-width:none;padding:0;margin:0}
.s-wrap{max-width:1200px;margin:0 auto;padding:0 var(--s-5)}.s-narrow{max-width:760px}
.s-top{position:sticky;top:0;z-index:20;background:var(--glass);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border-bottom:1px solid var(--line)}
.s-top .s-wrap{display:flex;align-items:center;gap:var(--s-5);min-height:64px}
.s-nav{display:flex;gap:var(--s-2);flex:1;overflow-x:auto}.s-nav a{display:inline-flex;align-items:center;min-height:40px;padding:0 var(--s-3);border-radius:var(--r-full);text-decoration:none;color:var(--muted);font-weight:550;white-space:nowrap}.s-nav a:hover,.s-nav a[aria-current]{color:var(--ink);background:var(--surface-2)}
.s-acts{display:flex;align-items:center;gap:var(--s-3)}.s-top .btn{--b-bg:var(--ink);color:var(--bg);box-shadow:none}.s-top .btn:hover{--b-bg:var(--ink);opacity:.9}.s-login{text-decoration:none;color:var(--muted);font-weight:550;min-height:40px;display:inline-flex;align-items:center}
.s-crumbs{padding-top:var(--s-4)}.s-crumbs ol{list-style:none;margin:0;padding:0;display:flex;gap:var(--s-2);flex-wrap:wrap;font-size:var(--fs-small);color:var(--muted)}.s-crumbs li+li::before{content:"›";margin-right:var(--s-2)}.s-crumbs a{color:var(--muted);text-decoration:none}.s-crumbs a:hover{color:var(--ink)}
.s-hero{padding:var(--s-9) 0 var(--s-8)}.s-hero-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--s-8);align-items:center}.s-hero:not(.has-visual) .s-hero-grid{grid-template-columns:1fr}.s-hero:not(.has-visual) .s-hero-text{max-width:46rem}
.s-hero h1{font-size:clamp(2.25rem,4.5vw,3.5rem);margin:0 0 var(--s-4);letter-spacing:-.035em}.s-lead{font-size:var(--fs-section);color:var(--muted);max-width:34rem;margin:0 0 var(--s-6)}
.s-hero-acts{display:flex;gap:var(--s-3);flex-wrap:wrap;margin:0}
.s-visual{margin:0;border-radius:var(--r-lg);background:radial-gradient(120% 90% at 50% 10%,var(--surface) 0%,var(--bg) 70%);box-shadow:0 0 0 1px var(--line),var(--shadow);padding:var(--s-3);overflow:hidden}.s-visual img{display:block;width:100%;height:auto;aspect-ratio:1280/760}.s-visual figcaption{padding:var(--s-2) var(--s-3) 0;font-size:var(--fs-caption);color:var(--muted);text-align:center}
.s-sec{padding:var(--s-8) 0}.s-alt{background:var(--surface)}.s-sec h2{font-size:clamp(1.5rem,2.6vw,2rem);margin:0 0 var(--s-5);letter-spacing:-.03em}
.s-grid{display:grid;gap:var(--s-4);grid-template-columns:repeat(3,minmax(0,1fr))}.s-grid.s-proof{grid-template-columns:repeat(4,minmax(0,1fr))}.s-card{padding:var(--s-5);border-radius:var(--radius);background:var(--surface);box-shadow:0 0 0 1px var(--line),var(--shadow-sm)}.s-alt .s-card{background:var(--bg)}
.s-card h3,.s-h3{font-size:var(--fs-section);margin:0 0 var(--s-2)}.s-card p{margin:0 0 var(--s-2)}.s-card p:last-child{margin:0}
a.s-link{display:block;text-decoration:none;color:inherit;transition:transform var(--t) var(--ease),box-shadow var(--t) var(--ease)}a.s-link:hover{transform:translateY(-2px);box-shadow:0 0 0 1px var(--line-strong),var(--shadow-lg)}
.s-steps{list-style:none;margin:0;padding:0;display:grid;gap:var(--s-4);grid-template-columns:repeat(4,minmax(0,1fr))}.s-steps li{display:flex;flex-direction:column;gap:var(--s-3)}.s-n{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--brand-soft);color:var(--brand-text);font:700 var(--fs-body) var(--font)}.s-steps h3{margin:0 0 var(--s-1);font-size:var(--fs-body)}.s-steps p{margin:0;color:var(--muted)}
.s-faq{border-radius:var(--r-md);background:var(--surface);box-shadow:0 0 0 1px var(--line);margin:0 0 var(--s-3)}.s-faq summary{cursor:pointer;list-style:none;padding:var(--s-4) var(--s-5);min-height:56px;display:flex;align-items:center;justify-content:space-between;gap:var(--s-3)}.s-faq summary::-webkit-details-marker{display:none}.s-faq summary::after{content:"+";font-weight:600;color:var(--muted)}.s-faq[open] summary::after{content:"–"}.s-faq summary h3{margin:0;font-size:var(--fs-body)}.s-faq p{margin:0;padding:0 var(--s-5) var(--s-5);color:var(--ink)}
.s-answer{font-size:var(--fs-body);font-weight:550;padding:var(--s-4) var(--s-5);border-left:4px solid var(--brand);background:var(--surface);border-radius:0 var(--r-md) var(--r-md) 0;margin:0 0 var(--s-4)}
.s-table th,.s-table td{padding:var(--s-3) var(--s-3)}.s-table tbody th{font-weight:600;text-transform:none;letter-spacing:0;font-size:var(--fs-body);color:var(--ink)}
.s-gloss{margin:0}.s-gloss div{padding:var(--s-4) 0;border-top:1px solid var(--line)}.s-gloss dt{font-weight:650;font-size:var(--fs-section);margin:0 0 var(--s-1)}.s-gloss dd{margin:0;color:var(--ink)}
.s-cta{padding:var(--s-9) 0;background:var(--surface);border-top:1px solid var(--line)}.s-cta .s-wrap{text-align:center;max-width:700px}.s-cta h2{font-size:clamp(1.5rem,2.6vw,2rem);margin:0 0 var(--s-3)}.s-cta p{color:var(--muted);margin:0 0 var(--s-5)}
.s-form{max-width:560px}.s-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.s-updated{color:var(--muted);font-size:var(--fs-small);padding-top:var(--s-4)}
.s-foot{background:var(--surface);border-top:1px solid var(--line);padding:var(--s-8) 0 var(--s-6)}.s-foot-grid{display:grid;gap:var(--s-6);grid-template-columns:2fr repeat(4,1fr)}.s-foot-brand p{margin:var(--s-3) 0 0;color:var(--muted);font-size:var(--fs-small);max-width:26rem}
.s-foot-h{font:650 var(--fs-caption) var(--font);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 var(--s-3)}.s-foot ul{list-style:none;margin:0;padding:0}.s-foot li{margin:0 0 var(--s-2)}.s-foot li a{text-decoration:none;color:var(--ink);min-height:32px;display:inline-flex;align-items:center}.s-foot li a:hover{text-decoration:underline}
.s-legal{color:var(--muted);font-size:var(--fs-caption);margin:var(--s-6) auto 0}
.s-404{list-style:none;margin:0 0 var(--s-5);padding:0;display:flex;gap:var(--s-3);flex-wrap:wrap;justify-content:center}.s-404 a{display:inline-flex;align-items:center;min-height:44px;padding:0 var(--s-4);border-radius:var(--r-full);background:var(--surface-2);text-decoration:none}
@media (max-width:980px){.s-grid,.s-grid.s-proof{grid-template-columns:repeat(2,minmax(0,1fr))}.s-steps{grid-template-columns:repeat(2,minmax(0,1fr))}.s-foot-grid{grid-template-columns:1fr 1fr}}
@media (max-width:820px){.s-grid.s-proof{grid-template-columns:1fr}.s-hero{padding:var(--s-7) 0 var(--s-6)}.s-hero-grid{grid-template-columns:1fr;gap:var(--s-5)}.s-grid,.s-steps{grid-template-columns:1fr}.s-top .s-wrap{flex-wrap:wrap;gap:var(--s-3);padding-block:var(--s-3)}.s-nav{order:3;flex-basis:100%}.s-acts{margin-left:auto}.s-sec{padding:var(--s-7) 0}.s-foot-grid{grid-template-columns:1fr}.s-hero-acts .btn{flex:1 1 100%}}
/* Démo du bureau : image de remplacement puis scène réelle au même format (aucun saut de mise en page). */
.s-demo-box{aspect-ratio:1280/760;width:100%;position:relative;overflow:hidden;border-radius:var(--r-md)}.s-demo-box img,.s-demo-box .s-demo-scene{position:absolute;inset:0;width:100%;height:100%}
.s-demo-scene svg{width:100%;height:100%;display:block}.s-demo-scene .room[data-room]{cursor:pointer}.s-demo-scene .room.focus>polygon:first-of-type{stroke:var(--brand);stroke-width:4}
.s-visual figcaption{display:flex;gap:var(--s-3);justify-content:space-between;flex-wrap:wrap;text-align:left}.s-demo-link{white-space:nowrap}
.s-demo-full svg{width:100%;height:auto;display:block}.visually-hidden{position:absolute;left:-9999px}
.s-grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}@media (max-width:820px){.s-grid-2{grid-template-columns:1fr}}
.s-article-head{padding-bottom:0}.s-article-head h1{font-size:clamp(2rem,4vw,2.75rem);letter-spacing:-.03em;margin:0 0 var(--s-4)}.s-article-head .s-lead{margin-bottom:var(--s-3)}
@media (max-width:820px){.s-table.stack tbody th{display:block;padding:0 0 var(--s-2);font-size:var(--fs-body)}}
