:root{
  --bg:#323532;--bg2:#2d302d;--surface:#292c29;--surface2:#252825;--line:#505550;--line2:#626862;
  --text:#ffffff;--muted:#ffffff;--primary:#A6EC00;--ember:#83BC00;--highlight:#7902FF;--sand:#ffffff;--screen:#1d211d;--screen2:#272c27;
  --spool:#A6EC00;--radius:18px;--shadow:0 40px 120px rgba(0,0,0,.38)
}
*{box-sizing:border-box}html{scroll-behavior:smooth;color-scheme:dark}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.5 "Inter Tight",system-ui,sans-serif;-webkit-font-smoothing:antialiased;overflow-x:hidden}h1,h2,h3{font-family:"Space Grotesk",system-ui,sans-serif;letter-spacing:-.03em}button,input,select,textarea{font:inherit}.hidden{display:none!important}.optional{color:var(--muted);font-weight:500;font-size:.82em}.hp{position:absolute!important;left:-10000px!important}.eyebrow{font:700 11px/1 "Space Grotesk";letter-spacing:.15em;text-transform:uppercase;color:var(--primary)}
.topbar{position:fixed;top:0;left:0;right:0;height:68px;display:flex;align-items:center;justify-content:space-between;padding:0 max(18px,calc((100vw - 1320px)/2));border-bottom:1px solid rgba(255,255,255,.07);background:rgba(13,15,18,.78);backdrop-filter:blur(20px);z-index:100}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text);font:700 14px/1 "Space Grotesk"}.brandmark{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--primary),var(--ember));color:#21160d}.topbar-center{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:12px}.live-dot,.status-dot,.screen-dot{width:7px;height:7px;border-radius:50%;background:#62e49b;box-shadow:0 0 16px rgba(98,228,155,.65)}.mini-link{color:var(--text);text-decoration:none;font-size:13px;border:1px solid var(--line);border-radius:9px;padding:8px 11px;background:rgba(255,255,255,.025)}
.intro{min-height:100vh;display:grid;align-items:center;position:relative;overflow:hidden;padding:130px max(24px,calc((100vw - 1180px)/2)) 90px;background:radial-gradient(circle at 75% 35%,rgba(245,155,59,.13),transparent 30%),linear-gradient(180deg,#0e1013,var(--bg))}.intro-glow{position:absolute;right:-10vw;top:8vh;width:48vw;height:48vw;border-radius:50%;background:radial-gradient(circle,rgba(245,155,59,.12),rgba(216,106,50,.05) 40%,transparent 68%);filter:blur(10px)}.intro-copy{position:relative;z-index:2;max-width:850px}.intro h1{font-size:clamp(54px,8vw,118px);line-height:.91;margin:20px 0 28px;max-width:1000px}.intro h1 em{font-style:normal;background:linear-gradient(120deg,var(--primary),#ffbd69 42%,var(--ember));background-clip:text;color:transparent}.intro p{color:var(--muted);font-size:clamp(17px,1.8vw,21px);max-width:680px}.intro small{display:block;margin-top:18px;color:#777f87;max-width:620px}.btn{display:inline-flex;align-items:center;gap:16px;margin-top:20px;padding:14px 18px;border-radius:11px;background:linear-gradient(135deg,var(--primary),var(--ember));color:#25180d;font-weight:800;text-decoration:none;box-shadow:0 20px 50px rgba(245,155,59,.18)}.btn span{font-size:18px}.intro-hint{position:absolute;bottom:30px;right:max(24px,calc((100vw - 1180px)/2));display:flex;align-items:center;gap:12px;color:#697079;font-size:11px;text-transform:uppercase;letter-spacing:.14em}.intro-hint i{display:block;width:46px;height:1px;background:linear-gradient(90deg,var(--primary),transparent)}
.experience{position:relative;min-height:400vh;background:linear-gradient(180deg,#0d0f12 0%,#101318 55%,#0d0f12 100%)}.printer-stage{position:sticky;top:0;height:100vh;display:grid;place-items:center;overflow:hidden;perspective:1400px;z-index:1}.stage-glow{position:absolute;width:min(850px,68vw);height:min(850px,68vw);border-radius:50%;background:radial-gradient(circle,rgba(245,155,59,.12),rgba(245,155,59,.03) 48%,transparent 70%);filter:blur(14px)}.stage-floor{position:absolute;bottom:8vh;width:min(900px,72vw);height:180px;border-radius:50%;background:radial-gradient(ellipse,rgba(245,155,59,.12),rgba(0,0,0,.12) 38%,transparent 68%);transform:rotateX(74deg);filter:blur(6px)}
.printer-rig{position:relative;width:min(560px,52vw);aspect-ratio:.86;transform-style:preserve-3d;transform:rotateX(-2deg) rotateY(0deg) scale(.92);transition:transform 1.05s cubic-bezier(.2,.8,.15,1);z-index:3}.printer-shadow{position:absolute;left:8%;right:8%;bottom:-10%;height:12%;border-radius:50%;background:rgba(0,0,0,.55);filter:blur(24px);transform:translateZ(-90px)}.printer-shell{position:absolute;inset:0;border:16px solid #262b30;border-radius:28px;background:linear-gradient(145deg,#282e34,#171b20 72%);box-shadow:inset 0 0 0 1px rgba(255,255,255,.04),0 36px 80px rgba(0,0,0,.5);transform-style:preserve-3d}.printer-top{position:absolute;left:-1px;right:-1px;top:-1px;height:68px;border-radius:15px 15px 7px 7px;background:linear-gradient(180deg,#363c42,#24292e);display:flex;align-items:center;justify-content:space-between;padding:0 28px;color:#7e858c;font:700 10px/1 "Space Grotesk";letter-spacing:.18em;z-index:9}.printer-top i{width:26px;height:5px;border-radius:8px;background:#15181b;box-shadow:inset 0 1px 2px rgba(0,0,0,.8)}.printer-left-rail,.printer-right-rail{position:absolute;top:62px;bottom:46px;width:22px;background:linear-gradient(90deg,#30363c,#20252a);z-index:8}.printer-left-rail{left:0}.printer-right-rail{right:0;background:linear-gradient(90deg,#20252a,#30363c)}.printer-bottom{position:absolute;left:0;right:0;bottom:0;height:55px;border-radius:4px 4px 14px 14px;background:linear-gradient(180deg,#242a2f,#171a1e);z-index:8}.printer-chamber{position:absolute;left:21px;right:21px;top:64px;bottom:51px;overflow:hidden;background:radial-gradient(circle at 50% 24%,rgba(245,155,59,.08),transparent 42%),linear-gradient(#101317,#090b0d);border-radius:4px;box-shadow:inset 0 0 70px #000;transform:translateZ(5px)}.chamber-light{position:absolute;left:12%;right:12%;top:1px;height:4px;background:#f6b45d;box-shadow:0 0 18px rgba(245,155,59,.55);opacity:.55}.gantry{position:absolute;left:8%;right:8%;top:19%;height:16px;border-radius:5px;background:linear-gradient(#363d43,#171b1f);box-shadow:0 7px 12px rgba(0,0,0,.45)}.gantry span{position:absolute;left:0;right:0;top:6px;height:2px;background:#666e74;opacity:.5}.toolhead{position:absolute;left:48%;top:16.2%;width:54px;height:62px;border-radius:8px;background:linear-gradient(145deg,#363c42,#15191d);display:grid;place-items:center;color:var(--primary);font-family:"Space Grotesk";box-shadow:0 8px 20px rgba(0,0,0,.5);z-index:3}.toolhead i{position:absolute;bottom:-9px;width:7px;height:12px;background:#9d7b5a;clip-path:polygon(28% 0,72% 0,100% 100%,0 100%)}.build-bed{position:absolute;left:12%;right:12%;bottom:10%;height:28%;transform:perspective(500px) rotateX(59deg);transform-origin:center bottom;background:#252b30;border:5px solid #454d54;border-radius:4px;box-shadow:0 18px 34px #000;overflow:visible}.bed-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.06) 1px,transparent 1px);background-size:10% 10%}.bed-label{position:absolute;right:8px;bottom:6px;color:#6d747a;font-size:8px;letter-spacing:.12em}.build-bed canvas{position:absolute;left:-3%;width:106%;height:245%;bottom:10%;transform:rotateX(-59deg) translateY(-13%);transform-origin:center bottom;pointer-events:none;filter:drop-shadow(0 13px 8px rgba(0,0,0,.55));opacity:0;transition:opacity .4s}.build-bed canvas.ready{opacity:1}
.printer-door{position:absolute;left:5px;right:5px;top:58px;bottom:45px;border:10px solid #2b3136;border-radius:9px;background:rgba(9,12,14,.12);transform-origin:6px center;transform:translateZ(36px) rotateY(0deg);transition:transform 1.05s cubic-bezier(.2,.8,.15,1),filter .7s;z-index:20;backface-visibility:visible;box-shadow:0 14px 34px rgba(0,0,0,.42)}.door-glass{position:absolute;inset:7px;background:linear-gradient(135deg,rgba(77,95,100,.28),rgba(5,8,10,.62));border:1px solid rgba(194,220,220,.09);backdrop-filter:blur(1.2px);overflow:hidden}.door-glass:before{content:"";position:absolute;width:35%;height:140%;left:4%;top:-20%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.12),transparent);transform:rotate(13deg)}.door-brand{position:absolute;right:17px;bottom:15px;color:rgba(255,255,255,.19);font:700 9px/1 "Space Grotesk";letter-spacing:.16em}.door-handle{position:absolute;right:15px;top:43%;width:8px;height:70px;border-radius:8px;background:#676f76;box-shadow:0 2px 6px #000}.printer-screen-housing{position:absolute;right:28px;top:8px;width:126px;height:48px;border-radius:7px;background:#16191c;border:3px solid #333a40;z-index:30;transform:translateZ(45px)}.printer-screen-mini{position:absolute;inset:4px;border-radius:3px;background:linear-gradient(135deg,#07120e,#0c2218);display:flex;align-items:center;gap:7px;padding:0 9px;color:#88d7ad;font-size:7px}.printer-screen-mini b{color:var(--primary);font-family:"Space Grotesk"}.printer-screen-mini i{margin-left:auto;width:5px;height:5px;border-radius:50%;background:#62e49b;box-shadow:0 0 9px #62e49b}
.printer-side{position:absolute;top:16px;bottom:16px;right:-145px;width:145px;border-radius:0 22px 22px 0;background:linear-gradient(90deg,#191d21,#2c3238 80%);border:1px solid #343b41;transform:rotateY(90deg);transform-origin:left center;transform-style:preserve-3d;box-shadow:inset -12px 0 30px rgba(0,0,0,.3)}.side-logo{position:absolute;top:23px;right:20px;color:#757d84;font:700 9px/1 "Space Grotesk";letter-spacing:.14em;writing-mode:vertical-rl}.side-vents{position:absolute;left:24px;bottom:65px;display:grid;gap:10px}.side-vents i{width:74px;height:4px;border-radius:8px;background:#111418;box-shadow:inset 0 1px rgba(255,255,255,.03)}.spool-arm{position:absolute;right:42px;top:124px;width:50px;height:9px;border-radius:8px;background:#545c63;transform:translateZ(18px)}.spool{position:absolute;right:12px;top:132px;width:118px;height:118px;border-radius:50%;transform:translateZ(22px) rotateY(-90deg);transform-style:preserve-3d;filter:drop-shadow(0 18px 18px rgba(0,0,0,.5))}.spool-rim{position:absolute;inset:0;border-radius:50%;border:12px solid #2c3136;background:#121519;box-shadow:inset 0 0 0 3px #4a5056}.spool-filament{position:absolute;inset:17px;border-radius:50%;background:repeating-radial-gradient(circle at center,var(--spool) 0 3px,color-mix(in srgb,var(--spool),#000 12%) 4px 6px);box-shadow:inset 0 0 18px rgba(0,0,0,.28);transition:background .45s,box-shadow .45s}.spool-core{position:absolute;inset:38px;border-radius:50%;background:#13171a;border:7px solid #3c4349;box-shadow:inset 0 0 0 2px #080a0c}.spool-label{position:absolute;inset:46px -10px auto -10px;transform:translateY(62px);text-align:center;color:#d8dde0;font:700 9px/1.1 "Space Grotesk";text-shadow:0 2px 3px #000}.spool-label small{display:block;color:#8e969c;font:500 8px/1.2 "Inter Tight";margin-top:3px}
.upload-target{position:absolute;left:18%;right:18%;top:34%;height:32%;border:1px dashed rgba(245,155,59,.58);border-radius:12px;background:rgba(14,17,20,.78);display:grid;place-items:center;align-content:center;text-align:center;padding:14px;opacity:0;pointer-events:none;transform:translateY(12px) scale(.96);transition:.5s;z-index:12;cursor:pointer;box-shadow:0 14px 40px rgba(0,0,0,.35)}.upload-target.active{opacity:1;pointer-events:auto;transform:none}.upload-target.drag{border-color:#ffbd69;background:rgba(245,155,59,.11);box-shadow:0 0 0 3px rgba(245,155,59,.12)}.upload-target input{position:absolute;inset:0;opacity:0;cursor:pointer}.upload-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:rgba(245,155,59,.14);color:var(--primary);font-size:23px;margin-bottom:4px}.upload-target strong{font:600 12px/1.2 "Space Grotesk"}.upload-target small{color:#7d868d;font-size:9px;margin-top:4px}
.scene-status{position:absolute;left:max(18px,calc((100vw - 1320px)/2));bottom:34px;display:flex;align-items:center;gap:10px;color:#858d94;font-size:12px;z-index:7}.scene-status b{color:var(--text);font-family:"Space Grotesk"}.scene-progress{position:absolute;right:max(18px,calc((100vw - 1320px)/2));bottom:38px;width:150px;height:2px;background:#252a2f;z-index:7}.scene-progress i{display:block;width:25%;height:100%;background:linear-gradient(90deg,var(--primary),var(--ember));transition:width .6s}.story{position:relative;margin-top:-100vh;z-index:5;pointer-events:none}.story-step{min-height:100vh;display:flex;align-items:center;padding:90px max(24px,calc((100vw - 1320px)/2));pointer-events:none}.step-card,.touchscreen-wrap{pointer-events:auto}.story-start,.story-upload,.story-multicolor{justify-content:flex-start}.story-filament,.story-contact{justify-content:flex-end}.glass-card,.material-card{width:min(430px,34vw);background:rgba(20,24,28,.74);border:1px solid rgba(255,255,255,.08);border-radius:20px;padding:28px;backdrop-filter:blur(18px);box-shadow:var(--shadow)}.step-no{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:9px;background:rgba(245,155,59,.11);border:1px solid rgba(245,155,59,.2);color:var(--primary);font:700 11px/1 "Space Grotesk";margin-bottom:18px}.step-card h2,.material-card h2{font-size:clamp(32px,3.3vw,48px);line-height:1.02;margin:8px 0 16px}.step-card p,.material-card>p{color:var(--muted);margin:0 0 16px}.text-link{color:var(--sand);text-decoration:none;font-weight:600}.micro{font-size:12px!important;color:#747d84!important}.model-meta{margin-top:18px;padding:13px 14px;border:1px solid rgba(245,155,59,.2);background:rgba(245,155,59,.07);border-radius:10px;color:var(--sand);font-size:13px}.file-list{display:grid;gap:7px;margin-top:10px}.file-chip{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 11px;border:1px solid var(--line);border-radius:9px;background:#121519;color:#c8cdd1;font-size:12px}.file-chip span:last-child{color:#727a81}.material-card{width:min(470px,37vw);padding:26px;background:rgba(19,23,27,.87);backdrop-filter:blur(22px);border:1px solid rgba(255,255,255,.08);border-radius:22px;box-shadow:var(--shadow)}.card-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}.card-heading .step-no{display:grid}.spool-swatch{width:44px;height:44px;border-radius:50%;background:var(--spool);border:5px solid #343a40;box-shadow:0 0 0 1px #4a5157,0 8px 24px rgba(0,0,0,.3);transition:background .35s}.filament-tabs{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:18px 0}.filament-tab{position:relative;display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:flex-start;padding:12px;border:1px solid var(--line);border-radius:12px;background:#111418;cursor:pointer}.filament-tab:has(input:checked){border-color:rgba(245,155,59,.7);background:rgba(245,155,59,.07);box-shadow:0 0 0 2px rgba(245,155,59,.08)}.filament-tab:has(input:disabled){opacity:.4;cursor:not-allowed}.filament-tab input{width:auto;margin-top:3px;accent-color:var(--primary)}.filament-tab span{display:grid}.filament-tab strong{font-size:12px}.filament-tab small{font-size:10px;color:#747c83}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field-grid label,.description-field{display:grid;gap:6px;color:#cbd0d4;font-size:12px;font-weight:600}input,select,textarea{width:100%;border:1px solid #343b42;background:#0e1114;color:var(--text);border-radius:9px;padding:10px 11px;outline:none;transition:.2s}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(245,155,59,.1)}textarea{resize:vertical}.stock-note{margin:12px 0 0;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:#111418;color:#858e95;font-size:11px}.estimate-panel{margin-top:14px;padding-top:15px;border-top:1px solid var(--line);display:grid;gap:12px}.estimate-title{display:flex;justify-content:space-between;align-items:center;gap:14px;font-size:11px;color:#858d94}.estimate-title b{color:var(--primary);font:700 20px/1 "Space Grotesk"}.estimate-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}.estimate-grid label{font-size:10px;color:#899198}.estimate-grid select,.estimate-grid input{padding:8px;font-size:11px}.unit-field{display:flex;align-items:center}.unit-field input{border-radius:8px 0 0 8px}.unit-field span{padding:8px;background:#171b1f;border:1px solid #343b42;border-left:0;border-radius:0 8px 8px 0}.readout{display:grid;gap:2px;padding:8px 9px;border:1px solid var(--line);border-radius:8px;background:#111418}.readout span{font-size:9px;color:#7b848b}.readout b{font:700 14px/1.2 "Space Grotesk";color:var(--sand)}.readout small{font-size:8px;color:#667078;text-transform:uppercase;letter-spacing:.08em}.estimate-panel details{border-top:1px solid var(--line);padding-top:9px}.estimate-panel summary{font-size:10px;color:#a7afb5;cursor:pointer}.estimate-panel pre{white-space:pre-wrap;font-size:10px;color:#7e878e;line-height:1.55}.estimate-panel>small{color:#6d767d;font-size:9px}
.touchscreen-wrap{width:min(620px,46vw);transform:translateY(1vh)}.touchscreen-bezel{background:linear-gradient(145deg,#22282c,#111416);border:7px solid #343b40;border-radius:24px;padding:12px;box-shadow:0 30px 90px rgba(0,0,0,.58),inset 0 1px rgba(255,255,255,.05)}.touchscreen-content{background:radial-gradient(circle at 88% 0%,rgba(98,228,155,.06),transparent 30%),linear-gradient(145deg,var(--screen2),var(--screen));border:1px solid rgba(117,199,154,.14);border-radius:12px;padding:22px;min-height:480px;box-shadow:inset 0 0 60px rgba(0,0,0,.36)}.screen-top{height:30px;display:flex;align-items:center;justify-content:space-between;padding:0 6px;color:#6b8277;font:600 9px/1 "Space Grotesk";letter-spacing:.13em}.screen-top>div{display:flex;align-items:center;gap:8px}.screen-intro{display:flex;align-items:center;gap:14px;margin-bottom:18px}.screen-intro .step-no{margin:0}.screen-intro h2{font-size:34px;margin:4px 0 0;color:#dff3e7}.contact-grid{gap:10px}.touchscreen-content input,.touchscreen-content textarea{background:#07100d;border-color:#1c3a2c;color:#dcf0e3}.touchscreen-content input:focus,.touchscreen-content textarea:focus{border-color:#4cae79;box-shadow:0 0 0 3px rgba(76,174,121,.12)}.description-field{margin-top:10px}.consent{display:grid;grid-template-columns:auto 1fr;gap:9px;align-items:start;margin-top:12px;padding:10px;border:1px solid #1a382b;border-radius:9px;color:#8ca89a;font-size:10px}.consent input{width:auto;margin-top:2px;accent-color:#62e49b}.screen-button{width:100%;display:flex;justify-content:space-between;align-items:center;margin-top:12px;padding:13px 15px;border:0;border-radius:9px;background:linear-gradient(135deg,#58da91,#2b9b62);color:#06140c;font-weight:800;cursor:pointer;box-shadow:0 10px 28px rgba(66,203,127,.12)}.screen-button i{font-style:normal;font-size:18px}.submit-status{min-height:20px;margin-top:10px;color:#8fd8ae;font-size:11px;font-weight:600}.screen-homebar{width:64px;height:4px;border-radius:8px;background:#555e63;margin:10px auto 1px;opacity:.55}.screen-legal{color:#697278;font-size:10px;text-align:center;margin:10px 24px 0}
.aftercare{min-height:80vh;display:grid;place-content:center;text-align:center;padding:100px 24px;border-top:1px solid var(--line);background:radial-gradient(circle at 50% 20%,rgba(166,236,0,.08),transparent 30%)}.aftercare h2{font-size:clamp(44px,6vw,82px);line-height:.95;margin:14px 0 24px}.aftercare p{color:var(--muted);max-width:620px;margin:0 auto 18px;font-size:18px}.legal-section{padding:30px 24px 90px;border-top:1px solid var(--line);background:linear-gradient(180deg,rgba(255,255,255,.02),rgba(255,255,255,0))}.legal-card{max-width:980px;margin:0 auto;padding:34px;border:1px solid rgba(255,255,255,.08);border-radius:24px;background:rgba(19,23,27,.72);box-shadow:var(--shadow)}.legal-card h2{font-size:clamp(36px,4vw,54px);margin:10px 0 20px}.legal-card h3{margin:24px 0 8px;font:700 16px/1.3 "Space Grotesk";color:var(--primary)}.legal-card p{margin:0;color:#fff;line-height:1.7}.footer-link{color:#fff;text-decoration:none}.footer-link:hover{color:var(--primary)}footer{border-top:1px solid var(--line);padding:30px;text-align:center;color:#6b737a;font-size:12px}
/* Scene states */
.experience[data-scene="start"] .printer-rig{transform:rotateX(-2deg) rotateY(0deg) scale(.90)}
.experience[data-scene="upload"] .printer-rig{transform:rotateX(-2deg) rotateY(-3deg) scale(.94) translateX(8vw)}
.experience[data-scene="upload"] .printer-door{transform:translateZ(36px) rotateY(-102deg);filter:brightness(.75)}
.experience[data-scene="upload"] .upload-target{opacity:1;pointer-events:auto;transform:none}
.experience[data-scene="filament"] .printer-rig{transform:rotateX(-2deg) rotateY(-61deg) scale(.93) translateX(-5vw)}
.experience[data-scene="filament"] .printer-door{transform:translateZ(36px) rotateY(-18deg)}
.experience[data-scene="contact"] .printer-rig{transform:rotateX(-3deg) rotateY(26deg) scale(1.05) translateX(-22vw) translateY(2vh)}
.experience[data-scene="contact"] .printer-door{transform:translateZ(36px) rotateY(0deg)}
.experience[data-scene="contact"] .printer-shell{filter:brightness(.8)}
@media(max-width:1000px){.glass-card,.material-card{width:min(390px,40vw)}.touchscreen-wrap{width:min(560px,50vw)}.printer-rig{width:min(500px,50vw)}.estimate-grid{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.topbar-center,.mini-link{display:none}.intro{padding:110px 20px 70px}.intro h1{font-size:clamp(50px,15vw,76px)}.experience{min-height:420vh}.printer-stage{height:58vh;top:68px;align-items:center}.stage-floor{bottom:4vh;width:90vw}.printer-rig{width:min(330px,78vw)!important}.scene-status{bottom:12px;left:18px}.scene-progress{bottom:16px;right:18px;width:90px}.story{margin-top:-58vh;padding-top:58vh}.story-step{min-height:100vh;padding:60vh 18px 40px;align-items:flex-end;justify-content:center!important}.glass-card,.material-card,.touchscreen-wrap{width:100%;max-width:560px}.story-contact{padding-top:54vh}.touchscreen-content{padding:16px;min-height:auto}.field-grid,.contact-grid{grid-template-columns:1fr}.estimate-grid{grid-template-columns:1fr 1fr}.filament-tabs{grid-template-columns:1fr}.experience[data-scene="upload"] .printer-rig{transform:rotateX(-2deg) rotateY(-2deg) scale(.9) translateX(0)}.experience[data-scene="filament"] .printer-rig{transform:rotateX(-2deg) rotateY(-58deg) scale(.82) translateX(-8vw)}.experience[data-scene="contact"] .printer-rig{transform:rotateX(-2deg) rotateY(18deg) scale(.88) translateX(-12vw)}.aftercare{min-height:70vh}.aftercare h2{font-size:46px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}

/* ===== v2: mehr Gehäusetiefe, echter CSS-3D-Spool und verbesserter Bauraum ===== */
.printer-stage{perspective:1750px}
.printer-rig{perspective:1150px}
.printer-shell{overflow:visible}

/* Der Seitenkörper ist deutlich tiefer als zuvor. */
.printer-side{
  right:-330px;
  width:330px;
  top:12px;
  bottom:12px;
  border-radius:0 34px 34px 0;
  background:
    linear-gradient(90deg,#14181c 0%,#23292f 16%,#2e353b 70%,#20262b 100%);
  box-shadow:inset -24px 0 45px rgba(0,0,0,.36),inset 0 1px rgba(255,255,255,.05),18px 0 50px rgba(0,0,0,.25);
  transform:rotateY(90deg);
  transform-origin:left center;
}
.printer-side:before{content:"";position:absolute;inset:16px 22px 16px 28px;border:1px solid rgba(255,255,255,.045);border-radius:0 20px 20px 0;pointer-events:none}
.side-logo{right:28px;top:28px}.side-vents{left:48px;bottom:74px}.side-vents i{width:156px}

/* Bauraum mit sichtbarer Tiefe: kleinere Rückwand + perspektivische Seitenflächen. */
.printer-chamber{
  overflow:hidden;
  background:linear-gradient(180deg,#0c0f12,#07090b 78%);
  box-shadow:inset 0 0 85px #000,inset 0 -24px 50px rgba(0,0,0,.72);
  perspective:780px;
  transform-style:preserve-3d
}
.chamber-depth{position:absolute;inset:0;pointer-events:none;z-index:0;transform-style:preserve-3d}
.chamber-back{
  position:absolute;left:14%;right:14%;top:12%;bottom:13%;
  background:linear-gradient(180deg,#151a1e,#0b0e11 68%,#080a0c);
  border:1px solid rgba(255,255,255,.045);
  box-shadow:inset 0 0 36px rgba(0,0,0,.85),0 0 34px rgba(0,0,0,.75);
  transform:translateZ(-125px) scale(.90);
  border-radius:3px
}
.rear-mark{position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);font:700 12px/1 "Space Grotesk";letter-spacing:.25em;color:rgba(255,255,255,.055)}
.chamber-wall{position:absolute;top:9%;bottom:10%;width:18%;opacity:.95;filter:brightness(.8)}
.chamber-wall-left{left:0;background:linear-gradient(90deg,#20262b,#0c0f12);clip-path:polygon(0 0,100% 8%,100% 92%,0 100%);border-right:1px solid rgba(255,255,255,.035)}
.chamber-wall-right{right:0;background:linear-gradient(270deg,#20262b,#0c0f12);clip-path:polygon(0 8%,100% 0,100% 100%,0 92%);border-left:1px solid rgba(255,255,255,.035)}
.chamber-ceiling{position:absolute;left:0;right:0;top:0;height:17%;background:linear-gradient(#22282d,#0e1114);clip-path:polygon(0 0,100% 0,86% 100%,14% 100%);opacity:.72}
.chamber-floor{position:absolute;left:0;right:0;bottom:0;height:28%;background:linear-gradient(0deg,#161b20,#0b0e11);clip-path:polygon(0 100%,100% 100%,86% 0,14% 0);opacity:.9}
.chamber-light,.gantry,.toolhead,.build-bed,.upload-target{z-index:4}
.gantry{left:13%;right:13%;top:20%;transform:translateZ(-40px);box-shadow:0 9px 16px rgba(0,0,0,.58)}
.toolhead{transform:translateZ(-10px)}
.build-bed{
  left:14%;right:14%;bottom:9%;height:30%;
  transform:perspective(680px) rotateX(64deg) translateZ(12px);
  background:linear-gradient(145deg,#31383e,#1a1f23);
  border-color:#4b545c;
  box-shadow:0 24px 34px rgba(0,0,0,.86),inset 0 0 0 1px rgba(255,255,255,.04)
}
.build-bed:before{content:"";position:absolute;left:-4%;right:-4%;top:-7%;height:10%;background:#171b1f;border-radius:4px 4px 0 0;box-shadow:0 5px 9px rgba(0,0,0,.6)}
.bed-grid{background-size:12.5% 12.5%;opacity:.8}
.build-bed canvas{
  left:-8%;width:116%;height:300%;bottom:8%;
  transform:rotateX(-64deg) translateY(-10%);
  filter:drop-shadow(0 18px 10px rgba(0,0,0,.68));
  image-rendering:auto
}

/* Echte CSS-3D-Spule: zwei Flansche, Hub und mehrere farbige Wickellagen in der Tiefe. */
.spool-arm{right:122px;top:142px;width:112px;height:12px;transform:translateZ(22px);background:linear-gradient(#697178,#363d43);box-shadow:0 5px 10px rgba(0,0,0,.5)}
.spool-arm i{position:absolute;right:-10px;top:-5px;width:20px;height:22px;border-radius:50%;background:linear-gradient(90deg,#2e3439,#777f86,#2b3035);box-shadow:0 4px 7px rgba(0,0,0,.55)}
.spool3d-wrap{position:absolute;right:46px;top:150px;width:170px;height:185px;transform:translateZ(40px);transform-style:preserve-3d;filter:drop-shadow(0 24px 22px rgba(0,0,0,.48))}
.spool3d{position:absolute;left:10px;top:0;width:150px;height:150px;transform-style:preserve-3d;transform:rotateX(-7deg) rotateY(-18deg);animation:spool-idle 8s ease-in-out infinite}
.spool-flange,.spool-filament-stack>i,.spool-hub{position:absolute;left:50%;top:50%;border-radius:50%;transform-style:preserve-3d}
.spool-flange{width:150px;height:150px;margin:-75px 0 0 -75px;background:radial-gradient(circle at 35% 30%,#4f575e 0 8%,#252a2f 9% 62%,#16191c 63% 100%);border:8px solid #3c4349;box-shadow:inset 0 0 0 2px rgba(255,255,255,.06),inset 0 0 24px rgba(0,0,0,.7)}
.spool-flange:before,.spool-flange:after{content:"";position:absolute;border-radius:50%;border:1px solid rgba(255,255,255,.08)}
.spool-flange:before{inset:18px}.spool-flange:after{inset:40px}
.spool-flange span{position:absolute;inset:53px;border-radius:50%;background:#0c0f12;border:8px solid #3a4147;box-shadow:inset 0 0 10px #000}
.spool-flange-back{transform:translateZ(-28px)}
.spool-flange-front{transform:translateZ(28px)}
.spool-filament-stack{position:absolute;inset:0;transform-style:preserve-3d}
.spool-filament-stack>i{width:114px;height:114px;margin:-57px 0 0 -57px;transform:translateZ(var(--z));background:repeating-radial-gradient(circle at 47% 44%,color-mix(in srgb,var(--spool),white 7%) 0 2px,var(--spool) 2.5px 4px,color-mix(in srgb,var(--spool),black 15%) 4.5px 6px);box-shadow:inset 0 0 22px rgba(0,0,0,.34);transition:background .38s}
.spool-hub{width:54px;height:54px;margin:-27px 0 0 -27px;transform:translateZ(31px);background:radial-gradient(circle,#0a0c0e 0 37%,#40474d 39% 58%,#171b1e 60%);border:2px solid #596168;box-shadow:0 0 0 3px rgba(0,0,0,.35)}
.spool-hub i{position:absolute;inset:15px;border-radius:50%;background:#090b0d;box-shadow:inset 0 0 8px #000}
.spool-label{position:absolute;left:0;right:0;top:157px;text-align:center;color:#dce1e4;font:700 10px/1.15 "Space Grotesk";text-shadow:0 2px 4px #000}
.spool-label small{display:block;margin-top:4px;color:#969ea4;font:500 9px/1.2 "Inter Tight"}
@keyframes spool-idle{0%,100%{transform:rotateX(-7deg) rotateY(-18deg) rotateZ(0deg)}50%{transform:rotateX(-7deg) rotateY(-18deg) rotateZ(5deg)}}

/* Seitenansicht zeigt mehr Gehäusetiefe und eine quadratischere Grundfläche. */
.experience[data-scene="filament"] .printer-rig{transform:rotateX(-2deg) rotateY(-64deg) scale(.88) translateX(-6vw)}
.experience[data-scene="filament"] .spool3d{animation:spool-turn 2.8s ease-in-out infinite}
@keyframes spool-turn{0%,100%{transform:rotateX(-7deg) rotateY(-18deg) rotateZ(-3deg)}50%{transform:rotateX(-7deg) rotateY(-18deg) rotateZ(11deg)}}

@media(max-width:1000px){
  .printer-side{right:-275px;width:275px}.spool3d-wrap{right:28px;transform:translateZ(28px) scale(.9)}.spool-arm{right:92px;width:96px}.side-vents{left:38px}.side-vents i{width:126px}
}
@media(max-width:760px){
  .printer-side{right:-220px;width:220px}.spool3d-wrap{right:10px;top:125px;transform:translateZ(20px) scale(.72)}.spool-arm{right:66px;top:126px;width:82px}.side-vents{left:28px}.side-vents i{width:104px}
  .experience[data-scene="filament"] .printer-rig{transform:rotateX(-2deg) rotateY(-62deg) scale(.74) translateX(-5vw)}
}

/* Nach erfolgreichem Modell-Upload rückt das Upload-Feld nach unten und verdeckt das Modell nicht mehr. */
.experience[data-scene="upload"] .upload-target.loaded,
.upload-target.loaded{
  left:29%;right:29%;top:auto;bottom:2.5%;height:13%;min-height:48px;
  opacity:.78;transform:none;background:rgba(10,13,16,.72);border-style:solid;
  backdrop-filter:blur(8px);z-index:9
}
.upload-target.loaded .upload-icon{display:none}.upload-target.loaded strong{font-size:10px}.upload-target.loaded small{font-size:8px}
.build-bed canvas.ready{z-index:7;opacity:1}


/* ===== m3a theme ===== */
:root{--brand-green:#A6EC00;--brand-bg:#323532;--brand-purple:#7902FF}
body{background:#323532;color:#fff}
.highlight{color:#7902FF!important}
.eyebrow{color:#A6EC00}
.topbar{background:rgba(50,53,50,.92);border-bottom-color:rgba(255,255,255,.12)}
.brandmark{background:#A6EC00;color:#171a17;box-shadow:0 0 24px rgba(166,236,0,.18)}
.live-dot,.status-dot,.screen-dot{background:#A6EC00;box-shadow:0 0 16px rgba(166,236,0,.65)}
.mini-link{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.18)}
.intro{background:radial-gradient(circle at 76% 34%,rgba(121,2,255,.14),transparent 28%),radial-gradient(circle at 62% 48%,rgba(166,236,0,.11),transparent 34%),#323532}
.intro-glow{background:radial-gradient(circle,rgba(166,236,0,.13),rgba(121,2,255,.06) 42%,transparent 69%)}
.intro h1 em{background:none;color:#7902FF;-webkit-text-fill-color:#7902FF}
.intro p,.step-card p,.material-card>p,.aftercare p{color:#fff}
.intro small,.micro,.stock-note,.screen-legal{color:rgba(255,255,255,.72)!important}
.btn,.screen-button{background:#A6EC00;color:#171a17;box-shadow:0 18px 45px rgba(166,236,0,.16)}
.btn:hover,.screen-button:hover{filter:brightness(1.04)}
.intro-hint{color:rgba(255,255,255,.72)}
.intro-hint i,.scene-progress i{background:linear-gradient(90deg,#A6EC00,#7902FF)}
.experience{background:#323532}
.stage-glow{background:radial-gradient(circle,rgba(166,236,0,.11),rgba(121,2,255,.045) 46%,transparent 70%)}
.stage-floor{background:radial-gradient(ellipse,rgba(166,236,0,.12),rgba(0,0,0,.13) 42%,transparent 70%)}
.printer-chamber{background:radial-gradient(circle at 50% 24%,rgba(166,236,0,.07),transparent 42%),linear-gradient(#101410,#070a07)}
.chamber-light{background:#A6EC00;box-shadow:0 0 18px rgba(166,236,0,.55)}
.toolhead{color:#A6EC00}
.upload-target{border-color:rgba(166,236,0,.62);background:rgba(29,33,29,.88)}
.upload-target.drag{border-color:#A6EC00;background:rgba(166,236,0,.10);box-shadow:0 0 0 3px rgba(166,236,0,.12)}
.upload-icon{background:rgba(166,236,0,.14);color:#A6EC00}
.glass-card,.material-card{background:rgba(41,44,41,.90);border-color:rgba(255,255,255,.14)}
.step-no{background:rgba(166,236,0,.11);border-color:rgba(166,236,0,.28);color:#A6EC00}
.text-link{color:#A6EC00}
.model-meta{border-color:rgba(166,236,0,.28);background:rgba(166,236,0,.08);color:#fff}
.file-chip,.filament-tab,.stock-note,.readout{background:#292c29;color:#fff;border-color:#505550}
.filament-tab:has(input:checked){border-color:rgba(166,236,0,.85);background:rgba(166,236,0,.09);box-shadow:0 0 0 2px rgba(166,236,0,.08)}
.filament-tab:nth-child(2):has(input:checked){border-color:rgba(121,2,255,.88);background:rgba(121,2,255,.10);box-shadow:0 0 0 2px rgba(121,2,255,.08)}
.filament-tab:nth-child(2) input{accent-color:#7902FF}
.field-grid label,.description-field,.estimate-grid label{color:#fff}
input,select,textarea{background:#242724;color:#fff;border-color:#5b615b}
input:focus,select:focus,textarea:focus{border-color:#A6EC00;box-shadow:0 0 0 3px rgba(166,236,0,.12)}
.estimate-title,.estimate-grid label,.readout span,.estimate-panel summary,.estimate-panel pre{color:#fff}
.estimate-title b{color:#A6EC00}.readout b{color:#fff}
.touchscreen-content{background:radial-gradient(circle at 88% 0%,rgba(121,2,255,.08),transparent 30%),linear-gradient(145deg,#292e29,#1d211d);border-color:rgba(166,236,0,.22)}
.screen-top{color:#fff}.screen-top b{color:#A6EC00}
.screen-intro h2{color:#fff}
.touchscreen-content input,.touchscreen-content textarea{background:#202420;border-color:#505850;color:#fff}
.touchscreen-content input:focus,.touchscreen-content textarea:focus{border-color:#A6EC00;box-shadow:0 0 0 3px rgba(166,236,0,.12)}
.consent{border-color:#515851;color:#fff}.consent input{accent-color:#A6EC00}
.submit-status{color:#A6EC00}
.aftercare{background:radial-gradient(circle at 50% 20%,rgba(121,2,255,.09),transparent 30%),#323532}
footer{color:#fff;border-top-color:rgba(255,255,255,.13)}
.printer-top,.rear-mark,.door-brand,.side-logo{letter-spacing:.12em}

/* ===== m3a scene refinement: filament framing + attached door ===== */
/* Die Tür sitzt näher an der Front und hat eine sichtbare Scharnierkante. */
.printer-door{
  left:4px;
  transform-origin:10px 50%;
  transform:translateZ(28px) rotateY(0deg);
}
.printer-door::after{
  content:"";
  position:absolute;
  left:-11px;
  top:7%;
  bottom:7%;
  width:12px;
  border-radius:8px;
  background:
    radial-gradient(circle at 50% 15%,#70787e 0 2px,#252a2e 3px 5px,transparent 6px),
    radial-gradient(circle at 50% 85%,#70787e 0 2px,#252a2e 3px 5px,transparent 6px),
    linear-gradient(90deg,#1b1f22,#50575d 48%,#1a1e21);
  box-shadow:0 2px 5px rgba(0,0,0,.6);
  pointer-events:none;
}

/* Nur beim Upload öffnet sich die Tür am Scharnier. */
.experience[data-scene="upload"] .printer-door{
  transform:translateZ(28px) rotateY(-102deg);
  filter:brightness(.75);
}
/* Beim Drehen zur Filamentseite bleibt die Tür fest/bündig mit dem Druckergehäuse verbunden. */
.experience[data-scene="filament"] .printer-door{
  transform:translateZ(28px) rotateY(0deg);
  filter:none;
}
.experience[data-scene="start"] .printer-door,
.experience[data-scene="contact"] .printer-door{
  transform:translateZ(28px) rotateY(0deg);
}

/* Filamentansicht: Bildschirmverschiebung zuerst, damit die Spule deutlich mehr Platz bekommt. */
.experience[data-scene="filament"] .printer-rig{
  transform:translateX(-15vw) rotateX(-2deg) rotateY(-64deg) scale(.88);
}

@media(max-width:1000px){
  .experience[data-scene="filament"] .printer-rig{
    transform:translateX(-13vw) rotateX(-2deg) rotateY(-63deg) scale(.82);
  }
}
@media(max-width:760px){
  .experience[data-scene="filament"] .printer-rig{
    transform:translateX(-9vw) rotateX(-2deg) rotateY(-59deg) scale(.77);
  }
}

/* ===== m3a logo + visible filament color ===== */
.logo-frame{
  overflow:hidden;
  background:transparent!important;
  box-shadow:none!important;
  border-radius:9px;
}
.logo-frame img{
  width:100%;height:100%;object-fit:cover;display:block;
  mix-blend-mode:screen;
}
.printer-logo{display:flex;align-items:center;width:28px;height:28px;overflow:hidden;border-radius:6px}
.printer-logo img{width:100%;height:100%;object-fit:cover;display:block;mix-blend-mode:screen}
.door-brand{right:15px;bottom:12px;width:30px;height:30px;opacity:.35}
.door-brand img{width:100%;height:100%;object-fit:cover;display:block;mix-blend-mode:screen}
.side-logo{top:23px;right:18px;width:31px;height:31px;writing-mode:initial;opacity:.48}
.side-logo img{width:100%;height:100%;object-fit:cover;display:block;mix-blend-mode:screen}

/* Die Flansche sind jetzt echte Ringe mit offenem Sichtfenster auf das Filament. */
.spool-flange{
  background:
    radial-gradient(circle at 50% 50%,
      transparent 0 24%,
      #252a2f 25% 34%,
      transparent 35% 66%,
      #363d42 67% 75%,
      #1b1f22 76% 100%);
  border:8px solid #3c4349;
}
.spool-flange:before{inset:17px;border-color:rgba(255,255,255,.12)}
.spool-flange:after{inset:47px;border-color:rgba(255,255,255,.08)}
.spool-filament-stack>i{
  background:repeating-radial-gradient(circle at 47% 44%,rgba(255,255,255,.14) 0 1.5px,var(--spool) 2px 4px,rgba(0,0,0,.22) 4.5px 6px),var(--spool);
  transition:background .28s ease,box-shadow .28s ease;
}
.spool-depth{
  position:absolute;left:18px;top:18px;width:114px;height:114px;border-radius:50%;
  transform:translateZ(0);background:var(--spool);opacity:.96;
  box-shadow:inset 0 0 28px rgba(0,0,0,.32);
  transition:background .28s ease,box-shadow .28s ease;
}


/* ===== 3D AMS + optional multicolor scene ===== */
.experience.multicolor-enabled{min-height:500vh}
.story-multicolor[hidden]{display:none!important}

.printer-ams{
  position:absolute;
  left:58px;
  right:58px;
  top:-126px;
  height:112px;
  border-radius:20px 20px 8px 8px;
  background:linear-gradient(180deg,#30363b,#171c20);
  border:1px solid rgba(255,255,255,.10);
  box-shadow:0 26px 44px rgba(0,0,0,.46),inset 0 1px rgba(255,255,255,.08);
  transform-style:preserve-3d;
  perspective:700px;
  z-index:2;
  overflow:visible;
}
.printer-ams:before{
  content:"";
  position:absolute;
  left:0;right:0;bottom:-22px;height:22px;
  background:linear-gradient(180deg,#191e22,#0e1114);
  transform:rotateX(-90deg);
  transform-origin:top center;
  border:1px solid rgba(255,255,255,.055);
  border-top:0;
  border-radius:0 0 8px 8px;
}
.ams-case-side{
  position:absolute;right:-22px;top:0;width:22px;height:100%;
  background:linear-gradient(90deg,#262c31,#111519);
  transform:rotateY(90deg);transform-origin:left center;
  border:1px solid rgba(255,255,255,.045);
  border-left:0;
}
.ams-case-front{
  position:absolute;left:7px;right:7px;bottom:7px;height:17px;border-radius:4px;
  background:linear-gradient(#1a1f23,#0d1013);box-shadow:inset 0 1px rgba(255,255,255,.04)
}
.ams-case-top{
  position:absolute;left:10px;right:10px;top:8px;height:22px;
  display:flex;align-items:center;justify-content:space-between;padding:0 9px;
  border-radius:8px;background:linear-gradient(180deg,#3b4248,#262c31);
  border:1px solid rgba(255,255,255,.06);z-index:4
}
.ams-brand{font:700 8px/1 "Space Grotesk";letter-spacing:.14em;color:#e9eef1}
.ams-status-light{width:6px;height:6px;border-radius:50%;background:#A6EC00;box-shadow:0 0 10px rgba(166,236,0,.8)}
.ams-lid-glass{
  position:absolute;left:10px;right:10px;top:32px;bottom:10px;
  border-radius:12px;background:linear-gradient(145deg,rgba(180,205,210,.16),rgba(4,8,10,.22));
  border:1px solid rgba(210,235,238,.10);box-shadow:inset 0 0 26px rgba(0,0,0,.32);
  transform:translateZ(16px);pointer-events:none;z-index:3
}
.ams-lid-glass:before{content:"";position:absolute;left:8%;top:-12%;width:24%;height:130%;background:linear-gradient(105deg,transparent,rgba(255,255,255,.10),transparent);transform:skewX(-15deg)}
.ams-slots{
  position:absolute;left:18px;right:18px;top:38px;bottom:14px;
  display:grid;grid-template-columns:repeat(4,1fr);gap:10px;
  transform:translateZ(10px);transform-style:preserve-3d;z-index:2
}
.ams-slot{
  --ams-slot-color:#5b646c;
  position:relative;min-width:0;border-radius:10px;
  background:linear-gradient(180deg,#14181b,#0a0d0f);
  border:1px solid rgba(255,255,255,.055);
  display:grid;place-items:center;transform-style:preserve-3d;
  box-shadow:inset 0 0 15px rgba(0,0,0,.52)
}
.ams-mini-spool{
  position:relative;width:54px;height:54px;border-radius:50%;
  transform:rotateX(66deg) translateZ(13px);transform-style:preserve-3d;
  filter:drop-shadow(0 8px 5px rgba(0,0,0,.5))
}
.ams-mini-spool:before,.ams-mini-spool:after{
  content:"";position:absolute;inset:0;border-radius:50%;
  background:radial-gradient(circle,transparent 0 18%,#262c31 20% 30%,transparent 32% 62%,#3c444a 64% 78%,#1a1f22 80% 100%);
  border:4px solid #444c52;box-shadow:inset 0 0 7px rgba(0,0,0,.6)
}
.ams-mini-spool:before{transform:translateZ(-7px)}
.ams-mini-spool:after{transform:translateZ(7px)}
.ams-mini-spool i{
  position:absolute;inset:8px;border-radius:50%;transform:translateZ(0);
  background:repeating-radial-gradient(circle,var(--ams-slot-color) 0 2px,color-mix(in srgb,var(--ams-slot-color),#000 16%) 2.5px 4px);
  box-shadow:inset 0 0 10px rgba(0,0,0,.35);transition:background .25s
}
.ams-mini-spool b{
  position:absolute;left:50%;top:50%;width:15px;height:15px;margin:-7.5px;border-radius:50%;
  background:#0c0f11;border:4px solid #41484e;transform:translateZ(9px)
}
.ams-slot span{
  position:absolute;left:0;right:0;bottom:2px;text-align:center;z-index:5;
  color:#fff;font:700 7px/1 "Space Grotesk";letter-spacing:.06em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 3px;opacity:.82
}
.ams-slot.active{border-color:rgba(166,236,0,.34);box-shadow:0 0 0 1px rgba(166,236,0,.08),inset 0 0 15px rgba(0,0,0,.52)}

.multicolor-toggle{margin:12px 0 10px}
.multicolor-check{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:center;padding:12px 14px;border:1px solid rgba(166,236,0,.18);border-radius:14px;background:rgba(255,255,255,.03)}
.multicolor-check input{accent-color:var(--primary);width:18px;height:18px}
.multicolor-check strong{display:block}.multicolor-check small{display:block;color:var(--muted)}
.ams-card{max-width:min(520px,40vw)}
.ams-help,.ams-preview-note{color:var(--muted);font-size:.95rem}.ams-help{margin:8px 0 14px}
.ams-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.ams-grid label{display:grid;gap:8px}.ams-grid select:disabled{opacity:.55}
.ams-badge{width:44px;height:44px;min-width:44px;border-radius:50%;padding:0;background:rgba(121,2,255,.18);border:1px solid rgba(121,2,255,.45);box-shadow:0 0 0 1px rgba(255,255,255,.03) inset, 0 10px 24px rgba(0,0,0,.22);color:transparent;font-size:0;line-height:0;text-indent:-9999px;overflow:hidden}

/* Negative X-Rotation = view from above instead of underside. */
.experience[data-scene="multicolor"] .printer-rig{
  transform:translateX(0vw) translateY(9vh) rotateX(-48deg) rotateY(-10deg) scale(.90);
  transform-origin:center center;
}
.experience[data-scene="multicolor"] .printer-door{transform:translateZ(28px) rotateY(0deg)}
.experience[data-scene="multicolor"] .spool3d-wrap{opacity:.18;transform:translateZ(8px) scale(.80)}
.experience[data-scene="multicolor"] .printer-top{filter:brightness(1.08)}

@media(max-width:1000px){
  .printer-ams{left:46px;right:46px;top:-106px;height:94px}
  .ams-mini-spool{width:44px;height:44px}
  .ams-grid{grid-template-columns:1fr 1fr}
  .experience[data-scene="multicolor"] .printer-rig{transform:translateX(0vw) translateY(8vh) rotateX(-45deg) rotateY(-8deg) scale(.84)}
}
@media(max-width:760px){
  .experience.multicolor-enabled{min-height:520vh}
  .printer-ams{left:34px;right:34px;top:-80px;height:72px;border-radius:14px 14px 7px 7px}
  .ams-case-top{top:5px;height:16px}.ams-brand{font-size:6px}.ams-lid-glass{top:23px;bottom:7px}
  .ams-slots{left:10px;right:10px;top:27px;bottom:8px;gap:5px}
  .ams-mini-spool{width:30px;height:30px}.ams-mini-spool:before,.ams-mini-spool:after{border-width:3px}.ams-mini-spool b{width:10px;height:10px;margin:-5px;border-width:3px}
  .ams-slot span{font-size:5px}.ams-grid{grid-template-columns:1fr}.ams-card{max-width:100%}
  .experience[data-scene="multicolor"] .printer-rig{transform:translateX(1vw) translateY(6vh) rotateX(-40deg) rotateY(-6deg) scale(.75)}
}

/* ===== m3a roof + sloped planar AMS refinement ===== */
/* Geschlossene Deckenfläche: sie verbindet Front und Seitenkörper in die Tiefe. */
.printer-roof{
  position:absolute;
  left:-2px;
  right:-2px;
  top:-330px;
  height:330px;
  transform-origin:bottom center;
  transform:rotateX(90deg);
  transform-style:preserve-3d;
  backface-visibility:visible;
  background:
    linear-gradient(180deg,rgba(255,255,255,.035),transparent 18%),
    linear-gradient(90deg,#252b30,#343b40 50%,#252b30);
  border:1px solid rgba(255,255,255,.07);
  border-bottom:0;
  border-radius:22px 22px 0 0;
  box-shadow:inset 0 0 44px rgba(0,0,0,.26),0 -1px rgba(255,255,255,.04);
  z-index:3;
  pointer-events:none;
}
.printer-roof:before{
  content:"";
  position:absolute;
  inset:18px 20px 22px;
  border:1px solid rgba(255,255,255,.035);
  border-radius:18px;
  background:linear-gradient(180deg,rgba(255,255,255,.018),rgba(0,0,0,.035));
}
.printer-roof:after{
  content:"";
  position:absolute;
  left:0;right:0;bottom:-13px;height:13px;
  transform-origin:top center;
  transform:rotateX(-90deg);
  background:linear-gradient(180deg,#30373c,#1a1f23);
  border:1px solid rgba(255,255,255,.05);
  border-top:0;
}
.roof-panel-lines{
  position:absolute;
  left:7%;right:7%;top:12%;bottom:10%;
  opacity:.26;
  background:
    linear-gradient(90deg,transparent 49.8%,rgba(255,255,255,.045) 50%,transparent 50.2%),
    linear-gradient(180deg,transparent 49.8%,rgba(255,255,255,.035) 50%,transparent 50.2%);
  pointer-events:none;
}

/* AMS mit starrem 60°-Mount relativ zum Druckerdach. Der Mount trägt die Neigung,
   der AMS-Körper selbst bleibt ein normaler 3D-Körper. Dadurch ändert keine Szene den Winkel. */
.printer-roof .ams-mount{
  position:absolute;
  left:54px;
  right:54px;
  bottom:30px;
  height:118px;
  --ams-depth:18px;
  --ams-angle:-60deg;
  transform-origin:center bottom;
  transform:translateZ(var(--ams-depth)) rotateX(var(--ams-angle));
  transform-style:preserve-3d;
  pointer-events:auto;
}
.printer-roof .printer-ams{
  position:absolute;
  inset:0;
  border-radius:16px 16px 10px 10px;
  transform:none;
  background:linear-gradient(180deg,#22282d 0%,#171c20 100%);
  border:1px solid rgba(255,255,255,.08);
  box-shadow:0 26px 40px rgba(0,0,0,.42),inset 0 1px rgba(255,255,255,.08);
  transform-style:preserve-3d;
  overflow:visible;
  transition:box-shadow .3s ease,filter .3s ease;
}
.printer-roof .printer-ams:before{
  content:"";
  position:absolute;
  left:0;right:0;bottom:-20px;height:20px;
  transform:rotateX(-90deg);
  transform-origin:top center;
  background:linear-gradient(180deg,#1b2125,#0f1316);
  border:1px solid rgba(255,255,255,.05);
  border-top:0;
  border-radius:0 0 8px 8px;
}
.printer-roof .ams-case-side{
  position:absolute;
  right:-20px;top:0;width:20px;height:100%;
  transform:rotateY(90deg);
  transform-origin:left center;
  background:linear-gradient(90deg,#2a3035,#111519);
  border:1px solid rgba(255,255,255,.04);
  border-left:0;
}
.printer-roof .ams-case-top{
  position:absolute;
  left:12px;right:12px;top:9px;height:24px;
  display:flex;align-items:center;justify-content:space-between;padding:0 10px;
  background:linear-gradient(180deg,#485057,#31373d 58%,#252b30 100%);
  border:1px solid rgba(255,255,255,.06);
  border-radius:9px;
  transform:translateZ(9px);
  box-shadow:0 10px 22px rgba(0,0,0,.22),inset 0 1px rgba(255,255,255,.06);
}
.printer-roof .ams-case-front{
  position:absolute;
  left:10px;right:10px;bottom:9px;height:18px;
  transform:translateZ(8px);
  background:linear-gradient(180deg,#242a2f,#111518);
  border-radius:5px;
}
.printer-roof .ams-lid-glass{
  position:absolute;
  left:14px;right:14px;top:36px;bottom:14px;
  transform:translateZ(13px);
  border-radius:12px;
  background:linear-gradient(145deg,rgba(186,212,217,.19),rgba(8,12,14,.10));
  border:1px solid rgba(255,255,255,.07);
  box-shadow:inset 0 0 20px rgba(0,0,0,.22),0 0 0 1px rgba(255,255,255,.025);
  pointer-events:none;
}
.printer-roof .ams-slots{
  position:absolute;
  left:20px;right:20px;top:40px;bottom:17px;
  display:grid;grid-template-columns:repeat(4,1fr);gap:9px;
  transform:translateZ(16px);
  transform-style:preserve-3d;
}
.printer-roof .ams-slot{
  position:relative;
  min-width:0;
  display:grid;
  place-items:center;
  border-radius:10px;
  background:rgba(10,13,15,.18);
  border:1px solid rgba(255,255,255,.04);
  box-shadow:inset 0 0 10px rgba(0,0,0,.18);
  transform-style:preserve-3d;
  overflow:visible;
}
/* Spulen liegen planar auf der AMS-Oberfläche und behalten nur wenige Pixel echte Tiefe. */
.printer-roof .ams-mini-spool{
  width:58px;height:58px;
  transform:translateZ(4px);
  transform-style:preserve-3d;
  filter:drop-shadow(0 7px 5px rgba(0,0,0,.42));
}
.printer-roof .ams-mini-spool:before{transform:translateZ(-4px)}
.printer-roof .ams-mini-spool:after{transform:translateZ(4px)}
.printer-roof .ams-mini-spool i{inset:8px;transform:translateZ(1px)}
.printer-roof .ams-mini-spool b{transform:translateZ(6px)}
.printer-roof .ams-slot span{bottom:1px}

/* Bei Punkt 4 wird nur der gesamte Drucker bewegt. Die AMS-Fläche steht effektiv ca. 30° zur Front;
   daher richtet rotateX(-30deg) die Ansicht nahezu parallel auf das AMS aus. Etwas Y-Winkel zeigt weiter Front + rechte Seite. */
.experience[data-scene="multicolor"] .printer-rig{
  transform:translateX(2vw) translateY(4vh) rotateX(-30deg) rotateY(-16deg) scale(.88);
}

@media(max-width:1000px){
  .printer-roof{top:-275px;height:275px}
  .printer-roof .ams-mount{left:44px;right:44px;bottom:24px;height:108px;--ams-depth:16px}
  .printer-roof .ams-case-top{left:10px;right:10px;height:22px}
  .printer-roof .ams-lid-glass{left:12px;right:12px;top:33px;bottom:13px}
  .printer-roof .ams-slots{left:17px;right:17px;top:37px;bottom:16px;gap:7px}
  .printer-roof .ams-mini-spool{width:48px;height:48px}
  .experience[data-scene="multicolor"] .printer-rig{transform:translateX(1vw) translateY(4vh) rotateX(-29deg) rotateY(-14deg) scale(.82)}
}
@media(max-width:760px){
  .printer-roof{top:-220px;height:220px}
  .printer-roof .ams-mount{left:30px;right:30px;bottom:16px;height:84px;--ams-depth:12px}
  .printer-roof .ams-case-top{left:7px;right:7px;top:6px;height:17px;padding:0 6px}
  .printer-roof .ams-lid-glass{left:8px;right:8px;top:26px;bottom:9px}
  .printer-roof .ams-slots{left:10px;right:10px;top:29px;bottom:11px;gap:4px}
  .printer-roof .ams-mini-spool{width:31px;height:31px}
  .experience[data-scene="multicolor"] .printer-rig{transform:translateX(1vw) translateY(3vh) rotateX(-27deg) rotateY(-12deg) scale(.74)}
}

@media(max-width:760px){.legal-card{padding:22px}.legal-card h2{font-size:34px}}

/* ===== AMS geometry lock: preserve real 3D at every scene =====
   Important: CSS filter/opacity on a preserve-3d ancestor can flatten descendants.
   Therefore the roof stays unfiltered and the AMS angle lives only on .ams-mount. */
.printer-rig,
.printer-shell,
.printer-roof,
.printer-roof .ams-mount,
.printer-roof .printer-ams{
  transform-style:preserve-3d;
}
.printer-roof{
  filter:none!important;
  opacity:1!important;
}
.printer-roof .ams-mount{
  transform:translateZ(var(--ams-depth,18px)) rotateX(var(--ams-angle,-60deg))!important;
}
.experience[data-scene="start"] .printer-roof .ams-mount,
.experience[data-scene="upload"] .printer-roof .ams-mount,
.experience[data-scene="filament"] .printer-roof .ams-mount,
.experience[data-scene="multicolor"] .printer-roof .ams-mount,
.experience[data-scene="contact"] .printer-roof .ams-mount{
  --ams-angle:-60deg;
}
/* Multicolor camera: almost perpendicular to the AMS face, with some Y yaw so front + right side remain visible. */
.experience[data-scene="multicolor"] .printer-rig{
  transform:translateX(2vw) translateY(4vh) rotateX(-30deg) rotateY(-16deg) scale(.88);
}
@media(max-width:1000px){
  .printer-roof .ams-mount{--ams-depth:16px}
  .experience[data-scene="multicolor"] .printer-rig{transform:translateX(1vw) translateY(4vh) rotateX(-29deg) rotateY(-14deg) scale(.82)}
}
@media(max-width:760px){
  .printer-roof .ams-mount{--ams-depth:12px}
  .experience[data-scene="multicolor"] .printer-rig{transform:translateX(1vw) translateY(3vh) rotateX(-27deg) rotateY(-12deg) scale(.74)}
}


/* ===== Header navigation, pricing note & public pages ===== */
.topbar-actions{display:flex;align-items:center;gap:7px;margin-left:12px;flex-shrink:0}
.topbar-actions .mini-link{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap}
.mini-link-primary{border-color:rgba(166,236,0,.5)!important;background:rgba(166,236,0,.12)!important;color:#fff!important}
.mini-link-primary:hover{background:rgba(166,236,0,.20)!important}
.price-legal-note{display:block!important;margin-top:10px!important;padding-top:10px;border-top:1px solid rgba(255,255,255,.09);line-height:1.45!important;color:#dce2dc!important}

.simple-page{min-height:100vh;padding:116px max(22px,calc((100vw - 1180px)/2)) 80px;background:radial-gradient(circle at 78% 12%,rgba(166,236,0,.08),transparent 30%),var(--bg)}
.simple-page-head{max-width:850px;margin-bottom:34px}.simple-page-head h1{font-size:clamp(48px,7vw,90px);line-height:.96;margin:14px 0 18px}.simple-page-head p{max-width:720px;color:var(--muted);font-size:18px}
.page-card{border:1px solid rgba(255,255,255,.10);border-radius:22px;background:rgba(28,31,28,.78);box-shadow:var(--shadow);padding:28px}
.page-card h2{margin:4px 0 14px;font-size:28px}.page-card h3{margin:26px 0 8px;color:var(--primary);font-size:17px}.page-card p,.page-card li{color:#fff;line-height:1.7}.page-card ul{padding-left:20px}
.page-note{margin-top:20px;padding:14px 16px;border-left:3px solid var(--primary);background:rgba(166,236,0,.06);border-radius:8px;color:#e8eee8}
.gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.gallery-item{margin:0;border:1px solid rgba(255,255,255,.08);border-radius:18px;overflow:hidden;background:#242824;box-shadow:0 18px 46px rgba(0,0,0,.24)}
.gallery-item button{display:block;width:100%;padding:0;border:0;background:none;cursor:zoom-in}
.gallery-item img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;transition:transform .35s ease,filter .35s ease}.gallery-item:hover img{transform:scale(1.025);filter:brightness(1.06)}
.gallery-item figcaption{padding:12px 14px;color:#e7ebe7;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gallery-empty{grid-column:1/-1;padding:44px 24px;text-align:center;border:1px dashed rgba(255,255,255,.18);border-radius:18px;color:var(--muted)}
.gallery-lightbox{position:fixed;inset:0;z-index:500;display:none;place-items:center;padding:28px;background:rgba(0,0,0,.86);backdrop-filter:blur(12px)}.gallery-lightbox.open{display:grid}.gallery-lightbox img{max-width:min(1200px,92vw);max-height:86vh;border-radius:14px;box-shadow:0 30px 100px rgba(0,0,0,.65)}.gallery-lightbox button{position:absolute;right:24px;top:20px;width:44px;height:44px;border:1px solid rgba(255,255,255,.2);border-radius:50%;background:rgba(30,30,30,.7);color:#fff;font-size:24px;cursor:pointer}
.privacy-card{max-width:980px}.privacy-card a{color:var(--primary)}

@media(max-width:1100px){.topbar-center{display:none}.topbar{padding-left:16px;padding-right:16px}.topbar-actions{gap:5px}.topbar-actions .mini-link{font-size:12px;padding:7px 9px}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){
  .topbar{overflow-x:auto;justify-content:flex-start;gap:12px;scrollbar-width:none}.topbar::-webkit-scrollbar{display:none}.brand{flex-shrink:0}.topbar-actions{margin-left:0}.topbar-actions .mini-link{display:inline-flex!important}
  .simple-page{padding:100px 16px 56px}.page-card{padding:20px}.gallery-grid{grid-template-columns:1fr}.simple-page-head h1{font-size:48px}
}

/* Mehrfarbdruck: keine automatische Preis-/Zeit-Schätzung anzeigen. */
.estimate-panel.multicolor-price-hidden{display:none!important}

/* ------------------------------------------------------------------
   Ergänzungen: Hinweise zum Modell und Upload-Fortschritt
   ------------------------------------------------------------------ */
.model-warning{
  display:grid;gap:8px;margin-top:12px;padding:12px 14px;border-radius:12px;
  border:1px solid color-mix(in srgb, #ffb020 55%, transparent);
  background:color-mix(in srgb, #ffb020 12%, transparent);
  font-size:13.5px;line-height:1.5;
}
.model-warning.hidden{display:none}
.model-warning span{display:block}

.upload-progress{
  width:100%;height:6px;appearance:none;border:0;border-radius:999px;overflow:hidden;
  background:rgba(255,255,255,.12);margin:4px 0 2px;
}
.upload-progress::-webkit-progress-bar{background:rgba(255,255,255,.12)}
.upload-progress::-webkit-progress-value{background:var(--spool,#A6EC00);transition:width .2s ease}
.upload-progress::-moz-progress-bar{background:var(--spool,#A6EC00)}

/* Sichtbarer Tastaturfokus – fehlte bisher vollständig. */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,
textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible{
  outline:2px solid #A6EC00;outline-offset:2px;border-radius:6px;
}

/* Sanftes Scrollen nur, wenn der Nutzer keine reduzierte Bewegung wünscht. */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
}

/* ------------------------------------------------------------------
   3D-Druckerszene (WebGL/Three.js) – ersetzt die frühere reine
   CSS-Attrappe. Das Canvas füllt die vorhandene .printer-stage-Bühne;
   Beleuchtung/Glow/Boden bleiben als CSS-Ebenen darunter erhalten.
   ------------------------------------------------------------------ */
.printer-canvas-wrap{
  position:absolute;inset:0;display:grid;place-items:center;
}
#printerCanvas{
  width:100%;height:100%;display:block;touch-action:pan-y;
  outline:none;cursor:grab;
}
#printerCanvas:active{cursor:grabbing}
#printerCanvas.hidden{display:none}

.printer-canvas-fallback{
  position:absolute;inset:0;display:none;place-items:center;text-align:center;
  padding:32px;color:var(--muted,#a5abb2);font-size:14px;line-height:1.6;
}
.printer-canvas-fallback.show{display:grid}

.printer-loading{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  color:var(--muted,#a5abb2);font-size:13px;letter-spacing:.04em;
  transition:opacity .4s ease;pointer-events:none;
}
.printer-loading.hidden{opacity:0}

/* Upload-Zielfläche liegt jetzt über dem Canvas statt in der DOM-Druckkammer. */
.upload-target-3d{
  position:absolute;left:50%;top:60%;transform:translate(-50%,-50%);
  width:min(260px,60%);aspect-ratio:16/10;z-index:5;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  border-radius:16px;border:1.5px dashed rgba(255,255,255,.28);
  background:rgba(16,18,20,.35);backdrop-filter:blur(2px);
  text-align:center;padding:12px;cursor:pointer;transition:border-color .2s ease, background .2s ease;
}
.upload-target-3d.drag,.upload-target-3d:hover{border-color:#A6EC00;background:rgba(166,236,0,.08)}
.upload-target-3d.loaded{border-style:solid;border-color:rgba(166,236,0,.5)}
.upload-target-3d input[type="file"]{position:absolute;inset:0;opacity:0;cursor:pointer}
.upload-target-3d .upload-icon{font-size:26px;line-height:1;color:#A6EC00}
.upload-target-3d strong{font-size:14px}
.upload-target-3d small{color:var(--muted,#a5abb2);font-size:11.5px}

@media (max-width:760px){
  .upload-target-3d{top:58%;width:78%}
}

/* ------------------------------------------------------------------
   Das Upload-Feld liegt als HTML-Ebene über dem 3D-Canvas und soll nur
   während des Upload-Schritts sichtbar/klickbar sein – vorher blieb es
   über die gesamte Scrollstrecke fest stehen, unabhängig von der Szene.
   ------------------------------------------------------------------ */
.upload-target-3d{
  opacity:0;
  transform:translate(-50%,-46%) scale(.96);
  pointer-events:none;
  transition:opacity .4s ease, transform .4s ease;
}
.experience[data-scene="upload"] .upload-target-3d{
  opacity:1;
  transform:translate(-50%,-50%) scale(1);
  pointer-events:auto;
}
@media (prefers-reduced-motion: reduce){
  .upload-target-3d{ transition:opacity .01ms; transform:translate(-50%,-50%) }
}

/* ------------------------------------------------------------------
   printer-viewer.js (unverändert übernommenes 3D-Modell): CSS für den
   Mount-Container und die Tür-/Deckel-Hotspots, 1:1 aus der Vorlage
   übernommen (Klassennamen .viewer / .p2s-hotspot werden vom Skript
   selbst vergeben, hier nur ergänzt um die Einbettung in unsere Bühne).
   ------------------------------------------------------------------ */
#printerViewerMount.viewer{ position:absolute; inset:0; }
.viewer{ touch-action:none; cursor:grab; }
.viewer:active{ cursor:grabbing; }
.viewer canvas{ display:block; width:100%; height:100%; outline:none; }
.viewer.is-hover{ cursor:pointer; }
.nogl{ margin:40px; color:var(--muted,#a5abb2); font-size:14px; line-height:1.6; }

.p2s-hotspot{
  position:absolute; left:0; top:0; margin:0; padding:0; border:0; background:none;
  display:flex; align-items:center; gap:10px; cursor:pointer; will-change:transform; color:#f1f3ee;
  font:600 13px/1 'Inter Tight', system-ui, sans-serif;
}
.p2s-hotspot .dot{
  position:relative; flex:none; width:22px; height:22px; margin:-11px 0 0 -11px; border-radius:50%;
  background:#7902FF; border:2px solid #fff; box-shadow:0 2px 10px rgba(0,0,0,.4);
}
.p2s-hotspot .dot::after{
  content:""; position:absolute; inset:-8px; border-radius:50%; border:2px solid #7902FF;
  opacity:0; animation:p2s-pulse 2.4s ease-out infinite;
}
.p2s-hotspot .tag{
  margin-top:-11px; padding:7px 11px; border-radius:999px; background:rgba(38,40,38,.86); white-space:nowrap;
  border:1px solid rgba(255,255,255,.14);
}
.p2s-hotspot:focus-visible .dot{ outline:2px solid #A6EC00; outline-offset:3px; }
@keyframes p2s-pulse{ 0%{ transform:scale(.7); opacity:.8; } 100%{ transform:scale(1.5); opacity:0; } }
@media (max-width:640px){ .p2s-hotspot .tag{ display:none; } }
@media (prefers-reduced-motion: reduce){ .p2s-hotspot .dot::after{ animation:none; } }

/* Der Tür-Punkt zum manuellen Öffnen/Schließen ist entfernt – die Tür wird
   ausschließlich über den Scroll-Fortschritt gesteuert. Der AMS-Deckel-Punkt
   bleibt unverändert bestehen. */
.p2s-hotspot--door{ display:none !important; }

/* Der Drucker weicht seitlich der Textkarte aus: links bei Punkt 1/2/4
   (Karte steht links -> Drucker nach rechts), rechts bei Punkt 3/5 (Karte
   steht rechts -> Drucker nach links). Etwas breiter als die Bühne plus
   Puffer, damit beim Verschieben kein Rand abgeschnitten wird
   (.printer-stage hat overflow:hidden). */
#printerCanvasWrap{
  left:-4vw; right:-4vw;
  transition:transform .7s cubic-bezier(.2,.8,.15,1);
}
.experience[data-scene="start"] #printerCanvasWrap,
.experience[data-scene="upload"] #printerCanvasWrap,
.experience[data-scene="multicolor"] #printerCanvasWrap{
  transform:translateX(2.4vw);
}
.experience[data-scene="filament"] #printerCanvasWrap,
.experience[data-scene="contact"] #printerCanvasWrap{
  transform:translateX(-2.4vw);
}
@media (prefers-reduced-motion: reduce){
  #printerCanvasWrap{ transition:none; }
}


/* Reine Scroll-Strecken ohne Inhalt: darin bewegen sich Kamera, Tür und AMS-Deckel
   im Takt des Scrollens. Länger = ruhigere, dynamischere Bewegung. */
.story-gap{height:110vh;pointer-events:none}
.story-gap-return{height:70vh}
@media(max-width:760px){.story-gap{height:90vh}.story-gap-return{height:60vh}}
