
/* Layout: atelier sombre. Hero avec impression en direct (canvas couche par couche), "ce que permet la 3D", catalogue d'univers filtrable, matériaux, méthode, réalisations, FAQ, contact. Thème sombre assumé (identité de la marque). */
:root{
  --bg:#070b14;
  --bg-2:#0c1322;
  --panel:#101a2e;
  --panel-2:#13203a;
  --line:#1d2c4a;
  --fg:#eef3fb;
  --muted:#9aa9c4;
  --blue:#1e8bff;
  --blue-glow:#3aa0ff;
  --orange:#ff8a1f;
  --orange-2:#ff5e1a;
  --f-display:"Barlow Condensed","Arial Narrow",Impact,sans-serif;
  --f-body:"Manrope",system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;
  --maxw:1180px;
  color-scheme:dark;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--f-body);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;display:block}
a{color:inherit}
:focus-visible{outline:2px solid var(--orange);outline-offset:3px;border-radius:4px}
.wrap{max-width:var(--maxw);margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
h1,h2,h3{font-family:var(--f-display);font-weight:900;line-height:.95;letter-spacing:.005em;text-transform:uppercase;margin:0;text-wrap:balance}
.eyebrow{font-family:var(--f-mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--blue-glow);display:flex;align-items:center;gap:10px}
.eyebrow::before{content:"";width:22px;height:2px;background:var(--orange)}
.orange{background:linear-gradient(180deg,#ffb04a,var(--orange) 45%,var(--orange-2));-webkit-background-clip:text;background-clip:text;color:transparent}
.blue{color:var(--blue-glow);text-shadow:0 0 24px rgba(30,139,255,.45)}

body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:60;background:rgba(7,11,20,.92)}
header.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:50;background:rgba(7,11,20,.84);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.nav{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-block:12px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none}
.brand img{width:34px;height:auto}
.brand b{font-family:var(--f-display);font-weight:900;font-size:21px;line-height:.9;text-transform:uppercase}
.brand b span{display:block;color:var(--orange)}
.links{display:flex;gap:24px;font-weight:600;font-size:14px}
.links a{text-decoration:none;color:var(--muted);transition:color .2s}
.links a:hover{color:var(--fg)}
.btn{display:inline-flex;align-items:center;gap:10px;font-family:var(--f-display);font-weight:800;font-size:19px;letter-spacing:.03em;text-transform:uppercase;text-decoration:none;padding:12px 22px;border-radius:999px;border:0;cursor:pointer;transition:transform .2s,box-shadow .2s}
.btn-o{background:linear-gradient(180deg,#ffa23d,var(--orange-2));color:#140800;box-shadow:0 6px 28px -6px rgba(255,110,26,.65)}
.btn-o:hover{transform:translateY(-2px);box-shadow:0 10px 34px -6px rgba(255,110,26,.8)}
.btn-b{background:transparent;color:var(--fg);box-shadow:inset 0 0 0 2px var(--blue)}
.btn-b:hover{box-shadow:inset 0 0 0 2px var(--blue-glow),0 0 24px -4px rgba(30,139,255,.6)}
.btn svg{width:18px;height:18px}
.nav .btn{font-size:16px;padding:9px 16px}
@media (max-width:900px){.links{display:none}}

/* hero */
.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line)}
.hero::before{content:"";position:absolute;inset:0;background:radial-gradient(55% 70% at 80% 40%,rgba(30,139,255,.2),transparent 65%),radial-gradient(40% 50% at 5% 95%,rgba(255,120,30,.13),transparent 70%);pointer-events:none}
.hero::after{content:"";position:absolute;inset:0;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:44px 44px;opacity:.32;mask-image:linear-gradient(180deg,#000,transparent 85%);-webkit-mask-image:linear-gradient(180deg,#000,transparent 85%);pointer-events:none}
.hero-in{position:relative;z-index:1;display:grid;grid-template-columns:1.15fr .85fr;gap:40px;align-items:center;padding-block:60px 36px}
.hero h1{font-size:clamp(50px,8.6vw,108px)}
.hero p.lead{font-size:clamp(17px,2vw,20px);color:var(--muted);max-width:54ch;margin:22px 0 30px}
.hero p.lead strong{color:var(--fg)}
.cta-row{display:flex;flex-wrap:wrap;gap:14px}
.printer{position:relative;justify-self:center;width:min(100%,420px);aspect-ratio:1/1.05;border-radius:22px;border:1px solid var(--line);background:linear-gradient(180deg,#0b1426,#070b14);overflow:hidden;box-shadow:0 30px 70px -30px rgba(30,139,255,.55)}
.printer canvas{position:absolute;inset:0;width:100%;height:100%}
.printer .hud{position:absolute;left:14px;right:14px;top:12px;display:flex;justify-content:space-between;font-family:var(--f-mono);font-size:11px;color:var(--muted);letter-spacing:.06em}
.printer .hud b{color:var(--orange);font-weight:500;font-variant-numeric:tabular-nums}
.spec-strip{position:relative;z-index:1;display:flex;flex-wrap:wrap;gap:10px 28px;padding-block:0 40px;font-family:var(--f-mono);font-size:13px;color:var(--muted)}
.spec-strip span{display:flex;align-items:center;gap:8px}
.spec-strip span::before{content:"";width:7px;height:7px;background:var(--orange);transform:rotate(45deg)}
@media (max-width:820px){.hero-in{grid-template-columns:1fr;padding-block:36px 28px}.printer{width:min(100%,340px)}}

.layers{height:18px;background:repeating-linear-gradient(180deg,var(--orange) 0 3px,transparent 3px 6px);opacity:.85;mask-image:linear-gradient(90deg,transparent,#000 15%,#000 85%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 15%,#000 85%,transparent)}

section{padding-block:88px}
.alt{background:var(--bg-2);border-block:1px solid var(--line)}
.sec-head{display:grid;gap:14px;margin-bottom:44px;max-width:780px}
.sec-head h2{font-size:clamp(40px,6vw,68px)}
.sec-head p{color:var(--muted);font-size:18px;margin:0;max-width:62ch}

/* possibilités */
.poss{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border:1px solid var(--line);border-radius:20px;overflow:hidden}
.pos{padding:30px 26px;display:grid;gap:10px;align-content:start;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.pos:nth-child(3n){border-right:0}
.pos:nth-last-child(-n+3){border-bottom:0}
.pos .ic{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;background:rgba(30,139,255,.1);border:1px solid rgba(30,139,255,.35);color:var(--blue-glow)}
.pos:nth-child(even) .ic{background:rgba(255,138,31,.1);border-color:rgba(255,138,31,.4);color:var(--orange)}
.pos .ic svg{width:24px;height:24px}
.pos h3{font-size:26px}
.pos p{margin:0;color:var(--muted);font-size:15.5px}
@media (max-width:900px){.poss{grid-template-columns:1fr 1fr}.pos:nth-child(3n){border-right:1px solid var(--line)}.pos:nth-child(2n){border-right:0}.pos:nth-last-child(-n+3){border-bottom:1px solid var(--line)}.pos:nth-last-child(-n+2){border-bottom:0}}
@media (max-width:560px){.poss{grid-template-columns:1fr}.pos{border-right:0!important;border-bottom:1px solid var(--line)!important}.pos:last-child{border-bottom:0!important}}

/* univers */
.filters{display:flex;flex-wrap:wrap;gap:10px;margin:-16px 0 30px}
.filters button{font-family:var(--f-body);font-weight:700;font-size:14px;color:var(--muted);background:transparent;border:1px solid var(--line);padding:9px 16px;border-radius:999px;cursor:pointer;transition:all .2s}
.filters button:hover{color:var(--fg);border-color:var(--blue)}
.filters button[aria-pressed="true"]{color:#140800;background:var(--orange);border-color:var(--orange)}
.niches{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.niche{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:24px 22px 22px;display:flex;flex-direction:column;gap:12px;transition:border-color .25s,transform .25s,background .25s;min-width:0}
.niche:hover{border-color:var(--blue);background:var(--panel-2);transform:translateY(-3px)}
.niche .top{display:flex;align-items:center;gap:14px}
.niche .ic{flex:none;width:52px;height:52px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(160deg,rgba(30,139,255,.22),rgba(30,139,255,.04));border:1px solid rgba(30,139,255,.4);color:var(--blue-glow)}
.niche .ic svg{width:28px;height:28px}
.niche h3{font-size:27px}
.niche p{margin:0;color:var(--muted);font-size:15px}
.niche ul{list-style:none;padding:0;margin:auto 0 0;display:flex;flex-wrap:wrap;gap:7px;padding-top:6px}
.niche li{font-size:12.5px;font-weight:600;padding:4px 10px;border-radius:999px;background:rgba(255,138,31,.08);color:#ffd2a8;border:1px solid rgba(255,138,31,.28)}
.niche .aud{font-family:var(--f-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.niche.wish{border-style:dashed;border-color:var(--orange);background:rgba(255,138,31,.05);justify-content:center}
.niche.wish .ic{background:rgba(255,138,31,.12);border-color:rgba(255,138,31,.5);color:var(--orange)}
.niche.wish a{align-self:flex-start;margin-top:6px}
@media (max-width:980px){.niches{grid-template-columns:1fr 1fr}}
@media (max-width:620px){.niches{grid-template-columns:1fr}}

/* vitrine photo */
.show{display:grid;grid-template-columns:repeat(6,1fr);gap:16px}
.show figure{margin:0;border-radius:16px;overflow:hidden;border:1px solid var(--line);position:relative;background:var(--bg-2);min-height:200px}
.show figure img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}
.show figcaption{position:absolute;left:12px;bottom:12px;font-family:var(--f-mono);font-size:12px;padding:5px 10px;border-radius:8px;background:rgba(7,11,20,.85);border:1px solid var(--line)}
.s1{grid-column:span 4;aspect-ratio:2/1}.s2{grid-column:span 2}.s3{grid-column:span 3;aspect-ratio:16/9}.s4{grid-column:span 3}
@media (max-width:760px){.show{grid-template-columns:1fr}.s1,.s2,.s3,.s4{grid-column:auto;aspect-ratio:16/9}}

/* matériaux */
.mat-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:16px}
table{width:100%;border-collapse:collapse;min-width:640px;font-size:15px}
th,td{text-align:left;padding:14px 18px;border-bottom:1px solid var(--line);vertical-align:top}
thead th{font-family:var(--f-mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:500;background:var(--panel)}
tbody tr:last-child td{border-bottom:0}
td:first-child{font-family:var(--f-display);font-weight:900;font-size:24px;letter-spacing:.02em;color:var(--orange);white-space:nowrap}
td .dots{display:inline-flex;gap:4px}
td .dots i{width:9px;height:9px;border-radius:50%;background:var(--line)}
td .dots i.on{background:var(--blue-glow)}
.note{color:var(--muted);font-size:14px;margin:14px 0 0}

/* méthode */
.proc{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(4,1fr);gap:22px;counter-reset:s}
.proc li{padding:26px 22px;border-radius:16px;background:var(--panel);border:1px solid var(--line);counter-increment:s;display:grid;gap:8px;align-content:start}
.proc li::before{content:counter(s,decimal-leading-zero);font-family:var(--f-mono);font-size:13px;color:var(--orange);letter-spacing:.1em}
.proc h3{font-size:26px}
.proc p{margin:0;color:var(--muted);font-size:15px}
@media (max-width:960px){.proc{grid-template-columns:1fr 1fr}}
@media (max-width:540px){.proc{grid-template-columns:1fr}}

/* atouts */
.atouts{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-radius:18px;overflow:hidden;margin-top:40px}
.atout{padding:26px 22px;border-right:1px solid var(--line);display:grid;gap:8px;align-content:start}
.atout:last-child{border-right:0}
.atout .big{font-family:var(--f-display);font-weight:900;font-size:44px;line-height:1;color:var(--orange)}
.atout .big small{font-size:22px;color:var(--fg)}
.atout p{margin:0;color:var(--muted);font-size:15px}
@media (max-width:860px){.atouts{grid-template-columns:1fr 1fr}.atout:nth-child(2){border-right:0}.atout:nth-child(-n+2){border-bottom:1px solid var(--line)}}
@media (max-width:480px){.atouts{grid-template-columns:1fr}.atout{border-right:0;border-bottom:1px solid var(--line)}.atout:last-child{border-bottom:0}}

/* FAQ */
.faq{display:grid;gap:12px;max-width:860px}
.faq details{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:0 20px}
.faq details[open]{border-color:var(--blue)}
.faq summary{cursor:pointer;list-style:none;padding:18px 0;font-weight:800;font-size:17px;display:flex;justify-content:space-between;gap:16px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-family:var(--f-mono);color:var(--orange);font-size:20px;line-height:1}
.faq details[open] summary::after{content:"–"}
.faq details p{margin:0 0 18px;color:var(--muted)}

/* contact */
.contact-card{border-radius:24px;padding:clamp(24px,4vw,52px);background:linear-gradient(160deg,#0f1d38,#0a1120 60%);border:1px solid var(--blue);box-shadow:0 0 0 1px rgba(58,160,255,.15),0 0 60px -10px rgba(30,139,255,.45);display:grid;grid-template-columns:1fr 1fr;gap:44px}
.contact-card h2{font-size:clamp(38px,5.5vw,62px)}
.phone{display:flex;align-items:center;gap:14px;margin:22px 0 10px;flex-wrap:wrap}
.phone a{font-family:var(--f-display);font-weight:900;font-size:clamp(40px,6vw,60px);text-decoration:none;letter-spacing:.02em;line-height:1;font-variant-numeric:tabular-nums}
.copy{font-family:var(--f-mono);font-size:12px;background:transparent;color:var(--muted);border:1px solid var(--line);padding:6px 10px;border-radius:8px;cursor:pointer}
.copy:hover{color:var(--fg);border-color:var(--blue)}
.socials{display:grid;gap:12px;margin-top:22px}
.socials a{display:flex;align-items:center;gap:12px;text-decoration:none;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:rgba(255,255,255,.02);transition:border-color .2s}
.socials a:hover{border-color:var(--blue)}
.socials svg{width:22px;height:22px;flex:none}
.socials small{display:block;color:var(--muted);font-size:12px}
form{display:grid;gap:14px;min-width:0}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
label{display:grid;gap:6px;font-size:13px;font-weight:700;color:var(--muted)}
input,select,textarea{font:inherit;font-size:15px;color:var(--fg);background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:11px 12px;width:100%}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(30,139,255,.25)}
textarea{min-height:110px;resize:vertical}
.form-note{font-size:13px;color:var(--muted);margin:0}
.out{display:grid;gap:10px;padding:14px;border-radius:12px;border:1px dashed var(--orange);background:rgba(255,138,31,.06)}
.out pre{margin:0;white-space:pre-wrap;font-family:var(--f-mono);font-size:13px;color:#ffe0c2}
.out .cta-row .btn{font-size:16px;padding:9px 16px}
@media (max-width:900px){.contact-card{grid-template-columns:1fr}}
@media (max-width:480px){.row2{grid-template-columns:1fr}}

footer{border-top:1px solid var(--line);padding-block:30px;color:var(--muted);font-size:14px}
footer .wrap{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;align-items:center}
.callbar{display:none}
@media (max-width:640px){
  .callbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;padding:10px max(16px,env(safe-area-inset-right,0px)) calc(10px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));background:rgba(7,11,20,.92);backdrop-filter:blur(10px);border-top:1px solid var(--line)}
  .callbar .btn{width:100%;justify-content:center}
  footer{padding-bottom:96px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}html{scroll-behavior:auto}}

/* ===== Multi-pages ===== */
.links a[aria-current="page"]{color:var(--orange)}
.menu{display:none;position:relative}
.menu summary{list-style:none;cursor:pointer;width:42px;height:42px;border-radius:10px;border:1px solid var(--line);display:grid;place-items:center;color:var(--fg)}
.menu summary::-webkit-details-marker{display:none}
.menu summary svg{width:22px;height:22px}
.menu nav{position:absolute;right:0;top:52px;width:min(82vw,300px);background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:8px;display:grid;box-shadow:0 20px 40px -10px rgba(0,0,0,.6)}
.menu nav a{padding:11px 12px;border-radius:8px;text-decoration:none;font-weight:700}
.menu nav a:hover,.menu nav a[aria-current="page"]{background:var(--panel-2);color:var(--orange)}
.nav-right{display:flex;align-items:center;gap:10px}
@media (max-width:900px){.menu{display:block}}

.more{margin-top:4px;align-self:flex-start;font-weight:800;font-size:14px;color:var(--blue-glow);text-decoration:none;display:inline-flex;gap:6px;align-items:center}
.more:hover{color:var(--orange)}
.more::after{content:"→"}

.page-hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line)}
.page-hero::before{content:"";position:absolute;inset:0;background:radial-gradient(55% 80% at 85% 20%,rgba(30,139,255,.18),transparent 65%);pointer-events:none}
.ph-in{position:relative;display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:center;padding-block:44px 52px}
.ph-in.solo{grid-template-columns:1fr}
.page-hero h1{font-size:clamp(44px,7vw,84px);margin-top:16px}
.page-hero .lead{font-size:clamp(17px,2vw,20px);color:var(--muted);max-width:58ch;margin:20px 0 26px}
.page-hero figure{margin:0;border-radius:20px;overflow:hidden;border:1px solid var(--line);box-shadow:0 30px 60px -30px rgba(30,139,255,.5)}
.crumbs{font-family:var(--f-mono);font-size:12px;color:var(--muted);display:flex;flex-wrap:wrap;gap:8px}
.crumbs a{text-decoration:none;color:var(--muted)}
.crumbs a:hover{color:var(--fg)}
.crumbs span{color:var(--orange)}
@media (max-width:860px){.ph-in{grid-template-columns:1fr;padding-block:32px 40px}}

.article{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:56px;align-items:start}
.prose{min-width:0;font-size:17px;line-height:1.75}
.prose>*+*{margin-top:1em}
.prose h2{font-size:clamp(32px,4.4vw,46px);margin-top:1.6em;margin-bottom:.1em}
.prose h2:first-child{margin-top:0}
.prose h3{font-size:26px;margin-top:1.3em;color:var(--orange)}
.prose p,.prose li{color:#c8d3e6;max-width:68ch}
.prose strong{color:var(--fg)}
.prose a{color:var(--blue-glow)}
.prose ul,.prose ol{padding-left:1.2em;display:grid;gap:.4em}
.prose li::marker{color:var(--orange)}
.prose .callout{border-left:3px solid var(--orange);background:rgba(255,138,31,.06);padding:16px 20px;border-radius:0 12px 12px 0}
.prose .callout p{margin:0}
.prose figure{margin:1.6em 0;border-radius:16px;overflow:hidden;border:1px solid var(--line)}
.prose figcaption{font-family:var(--f-mono);font-size:12px;color:var(--muted);padding:10px 14px;background:var(--panel)}
.prose .mat-wrap{margin-top:1.4em}
.side{position:sticky;top:calc(env(safe-area-inset-top,0px) + 86px);display:grid;gap:16px}
.side .box{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:22px;display:grid;gap:10px}
.side .box.hot{border-color:var(--blue);background:linear-gradient(160deg,#0f1d38,#0a1120)}
.side h2{font-size:26px}
.side p{margin:0;color:var(--muted);font-size:15px}
.side .tel{font-family:var(--f-display);font-weight:900;font-size:34px;text-decoration:none;color:var(--blue-glow);font-variant-numeric:tabular-nums}
.side ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.side li a{text-decoration:none;color:var(--muted);font-weight:600;font-size:15px}
.side li a:hover{color:var(--orange)}
@media (max-width:960px){.article{grid-template-columns:1fr}.side{position:static}}

.related{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.related a{display:grid;gap:8px;text-decoration:none;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:22px;transition:border-color .2s,transform .2s}
.related a:hover{border-color:var(--blue);transform:translateY(-3px)}
.related h3{font-size:24px}
.related p{margin:0;color:var(--muted);font-size:15px}
@media (max-width:860px){.related{grid-template-columns:1fr}}

.cta-band{border-radius:22px;padding:clamp(24px,4vw,44px);background:linear-gradient(120deg,#0f1d38,#0a1120 55%,#2a1606);border:1px solid var(--line);display:flex;flex-wrap:wrap;gap:24px;justify-content:space-between;align-items:center}
.cta-band h2{font-size:clamp(32px,4.6vw,52px)}
.cta-band p{margin:8px 0 0;color:var(--muted)}

.foot{display:grid!important;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:28px;padding-block:44px 20px}
.foot h2{font-size:20px;color:var(--fg);margin-bottom:10px}
.foot ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.foot a{text-decoration:none;color:var(--muted)}
.foot a:hover{color:var(--orange)}
.foot p{margin:6px 0 0}
.foot-bottom{display:flex!important;flex-wrap:wrap;justify-content:space-between;gap:10px;border-top:1px solid var(--line);padding-block:18px;font-size:13px}
footer{padding-block:0}
@media (max-width:860px){.foot{grid-template-columns:1fr 1fr}}
@media (max-width:480px){.foot{grid-template-columns:1fr}}
h1 .kicker{font-family:var(--f-mono);font-weight:500;font-size:12px;line-height:1.4;letter-spacing:.14em;margin-bottom:18px}
.hero h1 .orange{display:inline}
