@font-face{font-family:Space;src:url('/fonts/space-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Space;src:url('/fonts/space-600.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:Space;src:url('/fonts/space-700.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:Inter;src:url('/fonts/inter-700.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}
/* Semantic tokens are shared by every public template. Nothing here targets the admin heatmap. */
@font-face{font-family:Signature;src:url('/fonts/space-bold.woff2') format('woff2');font-weight:700;font-display:swap}
html[data-template] body{font-family:var(--font-body);font-size:var(--body-size);font-weight:var(--weight-body);font-style:var(--style-body);color:var(--color-text);background:var(--color-bg)}
html[data-template] :is(h1,h2,h3){font-family:var(--font-heading);font-weight:var(--weight-heading);font-style:var(--style-heading)}
html[data-template] .hero h1{font-size:clamp(calc(var(--hero-size)*.48),7.5vw,var(--hero-size))}
html[data-template] :is(h2,.profile h2,.insights h2,.contact h2,.expertise h2,.inline-heading h2){font-size:clamp(calc(var(--heading-size)*.69),4.2vw,var(--heading-size))}
html[data-template] :is(h3,.project-card h3,.expertise-grid h3,.linkedin-profile h3,.article-row h3){font-size:clamp(calc(var(--subheading-size)*.85),2.7vw,var(--subheading-size))}
html[data-template] p{color:var(--color-muted)}
html[data-template] :is(.intro,.expertise-grid p,.project-card p,.insights p:not(.eyebrow),.profile-intro>p:not(.eyebrow),.contact-grid>div>p:not(.eyebrow),.cms-block p){font-size:var(--body-size)}
html[data-template] :is(.btn,.text-link,.header-cta,.project-card summary){font-size:calc(var(--body-size)*.875)}
html[data-template] :is(.project-card details p,.profile-detail-body li,.profile-detail-body strong,.profile-detail-body li>span){font-size:calc(var(--body-size)*.875);color:var(--color-muted)}
html[data-template] :is(.eyebrow,.hero-foot,.project-meta,.service-top,.article-row small,.visual-caption,.profile-signature){color:var(--color-muted)}
html[data-template] .site-header{background:var(--color-menu-background);color:var(--color-menu-text);border-bottom:1px solid var(--color-border);box-shadow:none}
html[data-template] .site-header .header-inner{height:auto;min-height:92px;padding-block:15px;grid-template-columns:minmax(0,1fr) 98px minmax(0,1fr);gap:24px;border-color:var(--color-border)}
html[data-template] .site-header .header-inner nav{font-family:var(--font-menu);font-size:var(--menu-size);font-weight:var(--weight-menu);font-style:var(--style-menu);color:var(--color-menu-text);gap:12px 23px;white-space:normal;flex-wrap:wrap}
html[data-template] .header-inner nav a{white-space:nowrap;position:relative;padding-block:7px;min-height:38px;display:flex;align-items:center}
html[data-template] .header-inner nav a:after{content:'';position:absolute;left:0;right:0;bottom:1px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .2s}
html[data-template] .header-inner nav a:hover:after{transform:scaleX(1)}
html[data-template] .site-header .brand{color:var(--color-logo-fill);-webkit-text-stroke-color:var(--color-logo-ink);text-shadow:1px 1px var(--color-logo-ink),2px 2px var(--color-logo-ink),3px 3px var(--color-logo-ink),4px 4px var(--color-logo-ink);font-family:Signature,Inter,sans-serif;font-style:normal}
html[data-template] .header-cta{color:var(--color-menu-text);background:transparent;border:1px solid var(--color-border);max-width:100%;white-space:normal}
html[data-template] .header-cta:hover{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-button-text)}
html[data-template] :is(.expertise,.profile,.insights,.cms-block){background:var(--color-bg);border-color:var(--color-border)}
html[data-template=flat] :is(.expertise,.profile,.insights){background:var(--color-surface)}
html[data-template] :is(.project-visual,.project-visual.plant,.linkedin-profile){background:var(--color-surface);border-color:var(--color-border)}
html[data-template=motion] .project-visual{background:var(--color-bg)}
html[data-template] :is(.hero-foot,.expertise-grid article,.expertise-grid article+article,.project-card details,.profile-details details,.article-row,.cms-pages){border-color:var(--color-border)}
html[data-template] .tags span{border-color:var(--color-border);color:var(--color-muted)}
html[data-template] .btn-primary{background:var(--color-primary);color:var(--color-button-text)}
html[data-template] .text-link{border-color:var(--color-border)}
html[data-template] .text-link:hover{color:var(--color-primary)}
html[data-template] .linkedin-logo{background:var(--color-primary);color:var(--color-button-text)}
html[data-template] .contact,html[data-template] footer{background:var(--color-contact-background);color:var(--color-contact-text);border-color:color-mix(in srgb,var(--color-contact-text) 25%,transparent)}
html[data-template] :is(.contact p,.contact .eyebrow,.footer-main p,.footer-main p span,footer .cms-pages,footer .brand,footer .brand span){color:var(--color-contact-text)}
html[data-template] .contact h2 span{color:var(--color-secondary)}
html[data-template] .cms-contact-form :is(input,textarea,select){background:color-mix(in srgb,var(--color-contact-background) 94%,var(--color-contact-text));color:var(--color-contact-text);border-color:color-mix(in srgb,var(--color-contact-text) 40%,transparent);font-size:max(16px,var(--body-size))}
html[data-template] .cms-contact-form select option{color:var(--color-text);background:var(--color-bg)}
html[data-template] .cms-contact-form .btn-primary{background:var(--color-primary);color:var(--color-button-text)}
html[data-template] :is(a,button,summary,input,textarea,select):focus-visible{outline-color:var(--color-primary)}
html[data-template] .studio-object{position:relative;width:100%;height:285px;overflow:hidden;isolation:isolate;touch-action:pan-y;--object-ready:0}
html[data-template] .studio-object canvas{position:absolute;inset:0;display:block;width:100%;height:100%;pointer-events:none;opacity:0;transition:opacity .35s}
html[data-template] .studio-fallback{position:absolute;inset:0;width:100%;height:100%;transition:opacity .35s}
html[data-template] .studio-object[data-ready=true] canvas{opacity:1}html[data-template] .studio-object[data-ready=true] .studio-fallback{opacity:0}
html[data-template] .project-visual .studio-object{height:100%;min-height:220px;position:absolute;inset:0}
html[data-template] .visual-caption{font-size:9px;bottom:19px;left:18px;right:18px;text-align:center;width:auto;letter-spacing:.09em;pointer-events:none}
html[data-template] .studio-object-card .studio-object{touch-action:pan-x pan-y}
/* Legacy illustrations also follow the editable palette. */
html[data-template] .hero-art{background:var(--color-surface);color:var(--color-text)}
html[data-template] :is(.interface,.interface-top){background:var(--color-illustration-body);border-color:var(--color-illustration-metal)}
html[data-template] :is(.interface-sidebar i,.ui-lines i,.ui-lines i:last-child){background:var(--color-illustration-metal)}
html[data-template] :is(.ui-chart i,.ui-chart i:nth-child(2n),.ui-chart i:nth-child(3n)){background:var(--color-secondary)}
html[data-template] .ui-chart i:last-child{background:var(--color-primary)}
html[data-template] .chip{background:var(--color-illustration-dark);color:var(--color-illustration-body);outline-color:var(--color-illustration-metal)}
html[data-template] .chip-code{color:var(--color-secondary)}html[data-template] :is(.connection,.circle-arrow){border-color:var(--color-illustration-metal)}
html[data-template] .dot{background:var(--color-primary)}
html[data-template=atelier] .hero :is(.intro,.eyebrow,.hero-foot){color:var(--color-button-text)}
html[data-template=atelier] .hero .muted{font-family:var(--font-heading);font-style:var(--style-heading);font-weight:var(--weight-heading)}
html[data-template=atelier] .expertise-grid article:nth-child(2) .service-icon{background:color-mix(in srgb,var(--color-primary) 20%,var(--color-bg))}
html[data-template=atelier] .expertise-grid article:nth-child(3) .service-icon{background:var(--color-secondary)}
html[data-template=atelier] .sticker-code,html[data-template=atelier] .robot-antenna i{background:var(--color-secondary)}
html[data-template=atelier] .robot-shell{background:linear-gradient(125deg,var(--color-illustration-body),var(--color-illustration-metal));border-color:var(--color-illustration-metal)}
html[data-template=atelier] .robot-screen{background:var(--color-illustration-dark);border-color:var(--color-illustration-metal)}
html[data-template=atelier] :is(.robot-base,.robot-antenna,.robot-speaker i){background:var(--color-illustration-metal)}
html[data-template=atelier] .robot-cheek{background:var(--color-primary)}
/* Chat follows the selected public palette, independently of the admin dashboard. */
html[data-template] #launes-assistant{font-family:var(--font-body);color:var(--color-text)}
html[data-template] #launes-assistant :is(.assistant-launch,.assistant-form button,.assistant-bubble.user){background:var(--color-primary);color:var(--color-button-text);border-color:var(--color-primary)}
html[data-template] #assistant-dialog,html[data-template] #launes-assistant :is(.assistant-close,.assistant-suggestions button,.assistant-form textarea){background:var(--color-bg);color:var(--color-text);border-color:var(--color-border)}
html[data-template] #launes-assistant :is(.assistant-notice,.assistant-bubble){background:var(--color-surface);color:var(--color-text)}
html[data-template] #launes-assistant :is(.assistant-head,.assistant-head p,.assistant-status,.assistant-foot button){color:var(--color-muted);border-color:var(--color-border)}
html[data-template] #launes-assistant .assistant-head h2{color:var(--color-primary)!important;font-family:var(--font-heading)!important}
html[data-template] #launes-assistant :is(.assistant-notice a,.assistant-foot a){color:var(--color-primary)}
@media(max-width:1050px){html[data-template] .site-header .header-inner{gap:15px;grid-template-columns:minmax(0,1fr) 75px minmax(0,1fr)}html[data-template] .site-header .header-inner nav{gap:3px 16px}}
@media(max-width:900px){html[data-template] .site-header .header-inner{grid-template-columns:1fr;grid-template-rows:auto auto;gap:6px;min-height:108px;padding:9px 0 6px}html[data-template] .site-header .brand{grid-column:1;grid-row:1;font-size:48px}html[data-template] .site-header .header-inner nav{grid-column:1;grid-row:2;justify-self:center;justify-content:center;gap:0 20px}html[data-template] .site-header .header-cta{display:none}}
@media(max-width:760px){html[data-template] .hero h1{font-size:clamp(calc(var(--hero-size)*.46),10.9vw,calc(var(--hero-size)*.76))}html[data-template] .studio-object{height:235px}html[data-template] .site-header .header-inner nav{gap:0 16px}html[data-template] .hero-foot{font-size:11px}html[data-template] .cms-notice{font-size:11px}}
@media(max-width:360px){html[data-template] .site-header .header-inner nav{gap:0 12px}html[data-template] .site-header .brand{font-size:44px}html[data-template] .studio-object{height:215px}}
@media(prefers-reduced-motion:reduce){html[data-template] .studio-object canvas,html[data-template] .studio-fallback{transition:none}}
@media print{html[data-template] .studio-object canvas{display:none}html[data-template] .studio-object .studio-fallback{opacity:1}html[data-template] .studio-object{height:160px}}

html[data-template] .project-pause{position:absolute;z-index:2;top:14px;right:14px;border:1px solid var(--color-border);border-radius:24px;background:var(--color-bg);color:var(--color-muted);display:inline-flex;align-items:center;gap:7px;padding:8px 12px;font-size:10px;cursor:pointer}html[data-template] .project-pause[hidden]{display:none}

html[data-template] :is(.experience-switch,.experience-dialog,.experience-page){background:var(--color-bg);color:var(--color-text);border-color:var(--color-border);font-family:var(--font-body)}
html[data-template] :is(.experience-shell h1,.experience-shell h2,.experience-eyebrow,.experience-back,.experience-dismiss,.experience-status){color:var(--color-text);font-family:var(--font-body)}
html[data-template] :is(.experience-intro,.experience-note){color:var(--color-muted);font-family:var(--font-body)}
html[data-template] .experience-dialog::backdrop{background:color-mix(in srgb,var(--color-text) 80%,transparent)}
html[data-template] .experience-choice{background:var(--choice-bg);color:var(--choice-text);border-color:color-mix(in srgb,var(--choice-text) 20%,var(--choice-bg))}
html[data-template] .experience-choice .experience-swatch{background:var(--choice-bg);color:var(--choice-text);border-color:var(--color-border)}
html[data-template] .experience-choice .experience-swatch i{color:var(--choice-primary)}
html[data-template] .choice-atelier .experience-swatch{background:var(--choice-primary);color:var(--choice-button)}
html[data-template] .choice-atelier .experience-swatch i{color:var(--choice-secondary)}
html[data-template] .experience-choice-copy>span{color:color-mix(in srgb,var(--choice-text) 68%,var(--choice-bg))}
html[data-template] :is(.experience-choice:hover,.experience-dismiss){border-color:var(--color-primary)}
html[data-template] :is(.experience-choice,.experience-switch,.experience-dismiss):focus-visible{outline-color:var(--color-primary)}
html[data-template] .studio-objects:focus-visible{outline:2px solid var(--color-primary);outline-offset:6px;border-radius:22px}
html[data-template=atelier] .hero{color:var(--color-button-text)}
html[data-template=atelier] .hero .btn-primary{background:var(--color-secondary);color:var(--color-text)}
html[data-template=atelier] .hero .btn-primary:hover{background:var(--color-bg)}
html[data-template=atelier] :is(.orbit,.robot-pause){border-color:color-mix(in srgb,var(--color-button-text) 50%,transparent)}
@media(max-width:360px){html[data-template] .site-header .header-inner nav{display:grid;grid-template-columns:repeat(2,max-content);column-gap:26px;row-gap:0;justify-items:center}}
/* Direct manipulation keeps native vertical page scrolling and pinch zoom on touch screens. */
html[data-template] .studio-object[data-ready=true]{cursor:grab;touch-action:pan-y pinch-zoom;user-select:none;-webkit-user-select:none}
html[data-template] .studio-object[data-dragging=true]{cursor:grabbing}
html[data-template] .studio-object[data-ready=true]:focus-visible{outline:2px solid var(--color-primary);outline-offset:-4px;border-radius:16px}
html[data-template] .studio-reset{position:absolute;top:12px;left:12px;z-index:3;width:34px;height:34px;display:grid;place-items:center;padding:0;border:1px solid var(--color-border);border-radius:50%;background:var(--color-bg);color:var(--color-text);font:20px/1 var(--font-body);cursor:pointer;touch-action:manipulation}
html[data-template] .studio-reset[hidden]{display:none}
html[data-template] .studio-object[data-ready=true]:not([data-manipulated=true]):after{content:'Glisser pour tourner';position:absolute;left:14px;top:16px;font:10px/1.3 var(--font-body);color:var(--color-muted);opacity:0;pointer-events:none}
html[data-template] .studio-object[data-ready=true]:hover:after,html[data-template] .studio-object[data-ready=true]:focus-visible:after{opacity:.85}
html[data-template] .studio-gallery-nav{display:none}
@media(hover:none){html[data-template] .studio-object[data-ready=true]:not([data-manipulated=true]):after{opacity:.8}}
@media(max-width:760px){html[data-template] .studio-gallery-nav{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:10px}html[data-template] .studio-gallery-nav button{display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--color-border);border-radius:50%;background:var(--color-bg);color:var(--color-text);font-size:18px;cursor:pointer;touch-action:manipulation}html[data-template] .studio-gallery-nav button:disabled{opacity:.3;cursor:default}html[data-template] .studio-gallery-nav span{min-width:35px;text-align:center;font:11px/1 var(--font-body);color:var(--color-muted);font-variant-numeric:tabular-nums}}
@media print{html[data-template] .studio-reset,html[data-template] .studio-gallery-nav{display:none}}
