
.portal-hub{background:var(--ink);color:#fff;padding:78px 0 94px;border-top:1px solid #ffffff17}
.portal-hub-head{display:grid;grid-template-columns:1fr .8fr;gap:8%;align-items:end;margin-bottom:38px}
.portal-hub h2{font:900 clamp(46px,5vw,78px)/1 var(--display);letter-spacing:-.07em;text-transform:uppercase;margin:0}
.portal-hub h2 em{font-style:normal;color:#c99aec}.portal-hub-head p{color:#c9ced8;font-size:17px;line-height:1.7;margin:0}
.portal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.portal-card{min-height:360px;position:relative;overflow:hidden;border:1px solid #546179;background:#111f31;padding:28px;display:flex;flex-direction:column;isolation:isolate;transition:transform .22s,border-color .22s}
.portal-card:hover{transform:translateY(-5px);border-color:#b778d7}.portal-card:before{content:"";position:absolute;inset:auto -30% -45% 25%;height:260px;border-radius:50%;background:#9c5fc93c;filter:blur(28px);z-index:-1}
.portal-card--lab:before{background:#52d7c83b}.portal-card--universe:before{background:#6c65d946}
.portal-card-index{font:800 10px var(--mono);letter-spacing:.08em;color:#bda6ca}.portal-card h3{font:850 clamp(31px,3vw,46px)/1 var(--display);letter-spacing:-.055em;text-transform:uppercase;margin:74px 0 16px}.portal-card p{color:#cbd0d9;font-size:14px;line-height:1.7;margin:0}.portal-card b{margin-top:auto;color:#fff;font:800 11px var(--mono);letter-spacing:.04em}.portal-card .portal-symbol{position:absolute;right:24px;top:23px;font-size:44px;color:#cd9fe8}.portal-card--lab .portal-symbol{color:#8ee4dc}
.portfolio-subnav{position:sticky;top:90px;z-index:35;background:#f4f1ebed;backdrop-filter:blur(13px);border-bottom:1px solid #b9b5ad}
.portfolio-subnav .wrap{display:flex;gap:6px;overflow:auto;padding-block:11px;scrollbar-width:none}.portfolio-subnav .wrap::-webkit-scrollbar{display:none}
.portfolio-subnav a{white-space:nowrap;padding:9px 12px;font:800 10px var(--mono);letter-spacing:.045em;color:#4f5969;border:1px solid transparent}
.portfolio-subnav a:hover,.portfolio-subnav a:focus-visible{border-color:#877096;color:#602a83;background:#fff}
.portfolio-chapter{padding:84px 0;border-top:1px solid #c8c4bc;scroll-margin-top:150px}.portfolio-chapter.alt{background:#e9e5de}.portfolio-chapter.dark{background:#111c2c;color:#fff}
.chapter-head{display:grid;grid-template-columns:.85fr 1.15fr;gap:8%;align-items:end;margin-bottom:36px}.chapter-head h2{font:900 clamp(42px,4.6vw,72px)/1 var(--display);letter-spacing:-.067em;text-transform:uppercase;margin:0}.chapter-head h2 em{font-style:normal;color:#71349a}.dark .chapter-head h2 em{color:#cf9aee}.chapter-head p{font-size:16px;line-height:1.72;color:#4c586b;margin:0}.dark .chapter-head p{color:#c5cbd5}
.signature-grid,.application-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:18px}.signature-grid>.portfolio-card{grid-column:span 4}.application-grid>.portfolio-card{grid-column:span 4}
.creative-suite{display:grid;grid-template-columns:.82fr 1.18fr;gap:22px;align-items:stretch}.suite-stage{border:1px solid #605172;background:#171d31;min-height:520px;padding:28px;position:relative;overflow:hidden}.suite-stage:after{content:"";position:absolute;width:520px;height:520px;border-radius:50%;border:1px solid #9c68bf52;right:-170px;bottom:-230px;box-shadow:0 0 0 70px #9d68c612,0 0 0 140px #9d68c608}.suite-stage img{position:absolute;right:-5%;bottom:-4%;height:78%;width:auto;object-fit:contain;filter:drop-shadow(0 24px 35px #0009)}.suite-stage h3{position:relative;z-index:2;font:900 clamp(42px,4.8vw,74px)/.97 var(--display);letter-spacing:-.07em;text-transform:uppercase;margin:96px 0 18px;max-width:540px}.suite-stage h3 em{display:block;font-style:normal;color:#cd9bea}.suite-stage p{position:relative;z-index:2;max-width:540px;color:#c9d0da;font-size:15px;line-height:1.7}.suite-stage a{position:relative;z-index:2;display:inline-flex;margin-top:23px;color:#fff;border-bottom:1px solid #b68bce;padding-bottom:6px;font:800 11px var(--mono)}
.suite-products{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.suite-product{border:1px solid #cbc4d0;background:#f7f4ef;padding:21px;min-height:188px;display:flex;flex-direction:column;color:#182436}.suite-product strong{font-size:20px;line-height:1.1}.suite-product span{color:#6f3b8e;font:800 9px var(--mono);letter-spacing:.05em;margin-bottom:13px}.suite-product p{font-size:13px;line-height:1.6;color:#4b5769}.suite-product a{margin-top:auto;font:800 10px var(--mono);color:#622f82}.suite-product--future{border-style:dashed;background:#f2eef4}
.commerce-ready{margin-top:19px;padding:17px 20px;border-left:4px solid #8a4aae;background:#eee7f0;color:#3e4857;font-size:13px}.commerce-ready strong{color:#562674}
.lab-world{background:#050913;color:#e9edf4;min-height:100vh;overflow:hidden}.lab-world .header{background:#070d17;color:#fff;border-color:#293246}.lab-world .desktop-nav a,.lab-world .mobile-toggle{color:#fff}.lab-world .header-cta{background:#7541a2}.lab-hero{min-height:770px;position:relative;display:grid;place-items:center;overflow:hidden;background:radial-gradient(circle at 50% 45%,#26163d 0,#101528 38%,#050913 72%)}.lab-hero:before{content:"";position:absolute;inset:0;background-image:linear-gradient(#71e0d30b 1px,transparent 1px),linear-gradient(90deg,#71e0d30b 1px,transparent 1px);background-size:58px 58px;mask-image:linear-gradient(#000,transparent)}.lab-hero-orb{position:absolute;width:min(420px,42vw);right:10%;top:17%;filter:drop-shadow(0 0 70px #8d38d8aa);opacity:.96}.lab-hero-mascot{position:absolute;height:88%;width:auto;left:-3%;bottom:-8%;opacity:.34;filter:saturate(.75)}.lab-hero-content{position:relative;z-index:3;text-align:center;max-width:900px;padding:80px 20px}.lab-hero .section-tag{color:#7ee0d8}.lab-hero h1{font:900 clamp(64px,8vw,128px)/.86 var(--display);letter-spacing:-.08em;text-transform:uppercase;margin:24px 0;color:#fff}.lab-hero h1 em{display:block;font-style:normal;color:#c891e8}.lab-hero p{max-width:700px;margin:0 auto;color:#c8cfdb;font-size:18px;line-height:1.72}.lab-entry{margin-top:31px;display:inline-flex;color:#0d1523;background:#9ce7df;padding:15px 20px;font-weight:850}
.lab-map{padding:88px 0 112px;background:#08101c}.lab-map-head{display:grid;grid-template-columns:.9fr 1.1fr;gap:8%;margin-bottom:36px}.lab-map h2{font:900 clamp(46px,5vw,78px)/1 var(--display);letter-spacing:-.07em;text-transform:uppercase;margin:0}.lab-map-head p{color:#aeb9c8}.lab-rooms{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.lab-room{min-height:330px;border:1px solid #3b4b62;background:#0f1a2a;padding:28px;position:relative;overflow:hidden;transition:transform .2s,border-color .2s}.lab-room:hover{transform:translateY(-4px);border-color:#a66bd0}.lab-room:after{content:"";position:absolute;width:220px;height:220px;right:-80px;bottom:-100px;border:1px solid #7ce0d747;border-radius:50%;box-shadow:0 0 0 38px #7ce0d709}.lab-room small{font:800 9px var(--mono);color:#78d9d2;letter-spacing:.06em}.lab-room h3{font:850 clamp(30px,3vw,46px)/1.02 var(--display);letter-spacing:-.05em;text-transform:uppercase;margin:74px 0 13px}.lab-room p{color:#b9c3d1;max-width:540px}.lab-room a{position:absolute;left:28px;bottom:26px;font:800 10px var(--mono);color:#d4a9ec}.lab-room--forge{background:linear-gradient(145deg,#181225,#111a2b)}.lab-room--obs{background:linear-gradient(145deg,#0c212b,#111a2b)}.lab-room--alchemy{background:linear-gradient(145deg,#24152a,#111a2b)}.lab-room--grimoire{background:linear-gradient(145deg,#111b2d,#15152a)}
.lab-console{padding:75px 0 100px;background:#050913}.lab-console-shell{border:1px solid #39485c;background:#08101b;display:grid;grid-template-columns:270px 1fr;min-height:420px}.lab-console-nav{padding:24px;border-right:1px solid #2d3c50}.lab-console-nav strong{display:block;color:#d4a4ec;margin-bottom:21px;font:800 11px var(--mono)}.lab-console-nav span{display:block;color:#8fa0b2;padding:12px 0;border-bottom:1px solid #202d3e;font:700 10px var(--mono)}.lab-console-main{padding:33px}.lab-console-main h2{font:850 clamp(35px,4vw,58px)/1 var(--display);text-transform:uppercase;letter-spacing:-.055em;margin:0 0 20px}.experiment-list{display:grid;gap:10px}.experiment{display:grid;grid-template-columns:90px 1fr 110px;gap:20px;padding:16px;border:1px solid #27374b;background:#0c1725;align-items:center}.experiment b{color:#86e0d9;font:800 10px var(--mono)}.experiment span{color:#dce2e9}.experiment i{font-style:normal;color:#b88ed0;font:800 9px var(--mono);text-align:right}
.universe-world{background:#f4f0e9;color:#182437}.universe-world .header{background:#f4f0e9e8}.universe-hero{min-height:720px;background:#101a2b;color:#fff;position:relative;overflow:hidden}.universe-hero-grid{display:grid;grid-template-columns:.95fr 1.05fr;min-height:720px;align-items:center}.universe-hero h1{font:900 clamp(62px,7vw,112px)/.9 var(--display);letter-spacing:-.08em;text-transform:uppercase;margin:24px 0}.universe-hero h1 em{font-style:normal;color:#ce9bec}.universe-hero p{max-width:600px;color:#cbd0d9}.universe-hero-art{height:100%;position:relative}.universe-hero-art img{position:absolute;height:95%;width:auto;right:-8%;bottom:-10%;filter:drop-shadow(0 22px 60px #000a)}.universe-hero-art:before{content:"";position:absolute;width:520px;height:520px;border:1px solid #9f68c76b;border-radius:50%;right:0;top:12%;box-shadow:0 0 0 70px #a060d712,0 0 0 140px #a060d707}
.journey-rail{position:sticky;top:90px;z-index:30;background:#f4f0e9e9;backdrop-filter:blur(12px);border-bottom:1px solid #c4beb4}.journey-rail .wrap{display:flex;overflow:auto;gap:8px;padding-block:11px}.journey-rail a{white-space:nowrap;font:800 10px var(--mono);padding:8px 11px;color:#62566d}.journey-chapter{padding:105px 0;min-height:690px;display:flex;align-items:center;scroll-margin-top:145px}.journey-chapter:nth-of-type(even){background:#e9e4dc}.journey-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:10%;align-items:center}.journey-number{font:800 10px var(--mono);color:#783f98}.journey-chapter h2{font:900 clamp(48px,5.5vw,86px)/.97 var(--display);text-transform:uppercase;letter-spacing:-.07em;margin:16px 0 22px}.journey-chapter h2 em{font-style:normal;color:#7a399d}.journey-copy p{font-size:17px;line-height:1.78;color:#465164}.journey-art{min-height:390px;position:relative;display:grid;place-items:center}.journey-art img{max-height:430px;object-fit:contain}.artifact-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:13px}.artifact{padding:24px;background:#121f31;color:#fff;min-height:170px;border:1px solid #435067}.artifact small{color:#c38ee0;font:800 9px var(--mono)}.artifact strong{display:block;font-size:24px;margin-top:37px}.universe-finale{padding:100px 0;background:#101a2b;color:#fff;text-align:center}.universe-finale h2{font:900 clamp(52px,6vw,95px)/.93 var(--display);letter-spacing:-.075em;text-transform:uppercase;margin:0 auto 25px;max-width:1000px}.universe-finale h2 em{font-style:normal;color:#cf9ceb}.universe-finale p{max-width:700px;margin:0 auto 28px;color:#c9ced8}
.sigil-concept{background:#0b1727}.sigil-concept img{width:100%;height:100%;object-fit:cover}
@media(max-width:980px){.portal-hub-head,.chapter-head,.creative-suite,.lab-map-head,.universe-hero-grid,.journey-grid{grid-template-columns:1fr}.portal-grid{grid-template-columns:1fr 1fr}.signature-grid>.portfolio-card,.application-grid>.portfolio-card{grid-column:span 6}.suite-stage{min-height:470px}.lab-rooms{grid-template-columns:1fr}.lab-console-shell{grid-template-columns:1fr}.lab-console-nav{border-right:0;border-bottom:1px solid #2d3c50}.universe-hero-art{min-height:460px}.universe-hero-art img{right:50%;transform:translateX(50%)}} 
@media(max-width:650px){.portal-hub{padding:60px 0 72px}.portal-grid{grid-template-columns:1fr}.portal-card{min-height:280px}.portal-card h3{margin-top:50px}.portfolio-subnav,.journey-rail{top:72px}.portfolio-chapter{padding:62px 0}.signature-grid>.portfolio-card,.application-grid>.portfolio-card{grid-column:1/-1}.suite-products{grid-template-columns:1fr}.suite-stage{min-height:420px}.suite-stage img{height:58%;opacity:.45}.lab-hero{min-height:690px}.lab-hero-mascot{height:55%;left:-28%;opacity:.18}.lab-hero-orb{width:48vw;right:2%}.lab-map{padding:65px 0 80px}.lab-room{min-height:285px}.lab-console{padding:60px 0}.experiment{grid-template-columns:1fr}.experiment i{text-align:left}.universe-hero{min-height:auto}.universe-hero-grid{padding:55px 0}.universe-hero-art{min-height:400px}.journey-chapter{padding:75px 0;min-height:0}.artifact-grid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.portal-card,.lab-room{transition:none}.portal-card:hover,.lab-room:hover{transform:none}}

.feature-real img{position:absolute;inset:58px 24px 55px;width:calc(100% - 48px);height:calc(100% - 113px);object-fit:contain;background:#0b1727;border:1px solid #4c5c70;z-index:1}
.lab-world .brand img{filter:brightness(0) invert(1)}
.lab-world .mobile-nav{background:#070d17;border-color:#293246}.lab-world .mobile-nav a{color:#eef2f7}
.lab-world .footer{background:#050913;color:#cbd3df}.lab-world .footer nav a,.lab-world .footer-bottom{color:#aeb9c8}.lab-world .footer-main{border-color:#283548}
@media(max-width:650px){.feature-real img{inset:45px 15px 45px;width:calc(100% - 30px);height:calc(100% - 90px)}}

.js-magic .portal-card.magic-surface{transform:perspective(900px) rotateX(var(--tilt-x)) rotateY(var(--tilt-y)) translateY(-1px);transition:transform .16s ease-out,border-color .22s,box-shadow .22s}
.portal-card:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:-1;background:radial-gradient(circle at var(--magic-x,50%) var(--magic-y,50%),#c38deb36 0,transparent 28%);opacity:.3;transition:opacity .2s}
.portal-card:hover:after,.portal-card:focus-visible:after{opacity:1}
.portal-card:hover,.portal-card:focus-visible{box-shadow:0 28px 55px #02081375,0 0 0 1px #b977d259}
.portal-card>*{position:relative;z-index:1}
.portal-symbol{filter:drop-shadow(0 0 13px currentColor);animation:portalRune 5.8s ease-in-out infinite}
.portal-card--lab .portal-symbol{animation-delay:-1.8s}.portal-card--universe .portal-symbol{animation-delay:-3.1s}
@keyframes portalRune{0%,100%{transform:scale(1) rotate(0);opacity:.8}45%{transform:scale(1.08) rotate(3deg);opacity:1}55%{transform:scale(1.08) rotate(-2deg);opacity:1}}

.creative-suite{grid-template-columns:minmax(360px,.78fr) minmax(0,1.22fr);align-items:stretch}
.suite-stage{padding:0;display:grid;grid-template-rows:auto minmax(285px,1fr);min-height:590px;background:#10192a;isolation:isolate;transform-style:preserve-3d}
.suite-stage:after{right:-110px;bottom:-210px;opacity:.8}
.suite-stage-copy{position:relative;z-index:6;padding:29px 31px 26px;background:linear-gradient(180deg,#10192afa,#10192ae8);border-bottom:1px solid #665176;backdrop-filter:blur(10px)}
.suite-stage-copy .section-tag{margin:0 0 24px}
.suite-stage-copy h3{margin:0 0 17px!important;max-width:none!important;font-size:clamp(38px,3.8vw,62px)!important;line-height:.95!important}
.suite-stage-copy p{max-width:570px!important;margin:0!important;color:#e0e4ec!important;font-size:15px!important;line-height:1.7!important;text-shadow:0 1px 2px #000}
.suite-stage-copy a{margin-top:20px!important;background:#f4eef8;color:#171d2b!important;border:0!important;padding:11px 14px;border-radius:1px}
.suite-stage-visual{position:relative;min-height:300px;overflow:hidden;background:radial-gradient(circle at 70% 42%,#512978 0,#171b31 44%,#101624 75%)}
.suite-stage-visual:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#101624 0,transparent 33%,transparent 78%,#10162466 100%);z-index:2;pointer-events:none}
.suite-stage-visual img{position:absolute!important;height:118%!important;width:auto!important;right:-2%!important;bottom:-27%!important;max-width:none!important;filter:drop-shadow(0 25px 35px #000b)!important;z-index:1}
.suite-stage-visual .suite-orbit{position:absolute;left:8%;top:17%;width:154px;height:154px;border:1px solid #c388e46e;border-radius:50%;box-shadow:0 0 0 30px #aa66d512,0 0 0 63px #aa66d508;z-index:3}
.suite-stage-visual .suite-orbit:before{content:"W";position:absolute;inset:0;display:grid;place-items:center;color:#e4bef5;font:900 44px var(--display);text-shadow:0 0 22px #b259db}
.suite-stage-visual small{position:absolute;left:28px;bottom:24px;z-index:4;color:#d7dbe5;font:800 9px var(--mono);letter-spacing:.08em;background:#080f1ad9;padding:7px 9px;border:1px solid #6b557a}
.suite-product{position:relative;overflow:hidden;transition:transform .18s,border-color .18s,box-shadow .18s}
.js-magic .suite-product.magic-surface{transform:perspective(850px) rotateX(calc(var(--tilt-x) * .45)) rotateY(calc(var(--tilt-y) * .45))}
.suite-product:after{content:"";position:absolute;width:170px;height:170px;border-radius:50%;right:-95px;bottom:-100px;background:radial-gradient(circle,#b278d329,transparent 67%);pointer-events:none}
.suite-product:hover,.suite-product:focus-within{border-color:#8e659f;box-shadow:0 14px 28px #24172e16}
.suite-product a{display:inline-flex;align-items:center;gap:7px}
.suite-product a:after{content:"";width:18px;height:1px;background:currentColor;transition:width .18s}.suite-product a:hover:after{width:34px}
.commerce-ready{position:relative;overflow:hidden}.commerce-ready:after{content:"";position:absolute;right:-42px;top:-53px;width:140px;height:140px;border:1px solid #8d4dae33;border-radius:50%;box-shadow:0 0 0 27px #8d4dae0b}

.lab-hero>*:not(.magic-canvas){position:relative;z-index:3}
.lab-hero:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at var(--magic-x,50%) var(--magic-y,46%),#8e47c82a 0,transparent 34%);pointer-events:none;z-index:1}
.lab-gate{position:absolute;inset:0;z-index:2;pointer-events:none;perspective:1600px;overflow:hidden}
.lab-gate-panel{position:absolute;top:0;bottom:0;width:50.5%;background:linear-gradient(90deg,#070b13f4,#101728ee 65%,#1b1530e8);border-color:#5d3f72;transition:transform .85s cubic-bezier(.2,.8,.2,1),filter .85s;box-shadow:inset 0 0 80px #02040aaa}
.lab-gate-panel:before{content:"";position:absolute;inset:8% 8%;border:1px solid #76508f88;background-image:linear-gradient(#8e68a20d 1px,transparent 1px),linear-gradient(90deg,#8e68a20d 1px,transparent 1px);background-size:42px 42px}
.lab-gate-left{left:0;border-right:1px solid #8d64a1;transform-origin:left center}
.lab-gate-right{right:0;border-left:1px solid #8d64a1;transform-origin:right center;background:linear-gradient(270deg,#070b13f4,#101728ee 65%,#1b1530e8)}
.lab-gate-seal{position:absolute;left:50%;top:50%;width:168px;height:168px;transform:translate(-50%,-50%);border:1px solid #bf83df;border-radius:50%;box-shadow:0 0 0 24px #a65fd51a,0 0 70px #a15ed08c;background:#0b1020d9;display:grid;place-items:center;transition:opacity .42s,transform .8s;z-index:3}
.lab-gate-seal:before{content:"✦";color:#91e3dc;font-size:58px;text-shadow:0 0 22px #91e3dc}
.lab-gates-open .lab-gate-left{transform:rotateY(-101deg) translateX(-10%);filter:brightness(.45)}
.lab-gates-open .lab-gate-right{transform:rotateY(101deg) translateX(10%);filter:brightness(.45)}
.lab-gates-open .lab-gate-seal{opacity:0;transform:translate(-50%,-50%) scale(.4) rotate(120deg)}
.lab-entry{position:relative;z-index:5;box-shadow:0 0 0 1px #b4fff377,0 0 38px #75d9d255;transition:transform .2s,box-shadow .2s}
.lab-entry:hover,.lab-entry:focus-visible{transform:translateY(-3px);box-shadow:0 0 0 1px #d9fff9,0 0 60px #75d9d28c}
.lab-entry:before{content:"";position:absolute;inset:-8px;border:1px solid #96ece366;pointer-events:none;animation:labEntryPulse 3.4s ease-in-out infinite}
@keyframes labEntryPulse{0%,100%{opacity:.25;transform:scale(.98)}50%{opacity:.8;transform:scale(1.025)}}
.lab-map{position:relative;isolation:isolate}.lab-map:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 25%,#2d214336,transparent 42%);z-index:-1}
.lab-room{transform-style:preserve-3d;isolation:isolate}
.js-magic .lab-room.magic-surface{transform:perspective(900px) rotateX(calc(var(--tilt-x) * .65)) rotateY(calc(var(--tilt-y) * .65)) translateY(-1px);box-shadow:0 24px 45px #02071155,0 0 45px #9d63bd12}
.lab-room:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at var(--magic-x,50%) var(--magic-y,50%),#8edfd52b,transparent 32%);z-index:-1;opacity:.2;transition:opacity .2s}
.lab-room:hover:before,.lab-room:focus-visible:before{opacity:1}
.lab-room-door{position:absolute;inset:0;z-index:-1;display:flex;pointer-events:none;opacity:.72}
.lab-room-door i{width:50%;height:100%;border:1px solid #526478;background:linear-gradient(90deg,#101a2b99,#172238cc);transform-origin:left center;transition:transform .55s cubic-bezier(.2,.8,.2,1),opacity .45s}
.lab-room-door i+ i{transform-origin:right center;background:linear-gradient(270deg,#101a2b99,#172238cc)}
.lab-room:hover .lab-room-door i:first-child,.lab-room:focus-visible .lab-room-door i:first-child{transform:perspective(700px) rotateY(-18deg)}
.lab-room:hover .lab-room-door i:last-child,.lab-room:focus-visible .lab-room-door i:last-child{transform:perspective(700px) rotateY(18deg)}
.lab-room>small,.lab-room>h3,.lab-room>p,.lab-room>span{position:relative;z-index:2}
.lab-room>span{position:absolute;left:28px;bottom:26px;font:800 10px var(--mono);color:#d4a9ec}
.lab-console-shell{box-shadow:0 26px 70px #0007,0 0 0 1px #5a3e6a22}.experiment{position:relative;overflow:hidden}.experiment:after{content:"";position:absolute;left:0;bottom:0;height:1px;width:var(--signal,63%);background:linear-gradient(90deg,#83e1da,#b872d6);box-shadow:0 0 12px #7adcd5}
.experiment:nth-child(2):after{--signal:82%}.experiment:nth-child(3):after{--signal:47%}.experiment:nth-child(4):after{--signal:71%}

.universe-hero>*:not(.magic-canvas){position:relative;z-index:2}
.universe-hero:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at var(--magic-x,65%) var(--magic-y,45%),#9d59cb35,transparent 31%);pointer-events:none;z-index:1}
.universe-map-section{background:#090f1b;color:#fff;padding:92px 0 105px;border-top:1px solid #4f3a5d;position:relative;overflow:hidden}
.universe-map-head{display:grid;grid-template-columns:.8fr 1.2fr;gap:9%;align-items:end;margin-bottom:35px}.universe-map-head h2{font:900 clamp(45px,5vw,78px)/.98 var(--display);letter-spacing:-.07em;text-transform:uppercase;margin:0}.universe-map-head h2 em{font-style:normal;color:#ce95ec}.universe-map-head p{margin:0;color:#bfc7d4;font-size:16px;line-height:1.75}
.wizard-map{position:relative;min-height:680px;border:1px solid #4d4360;background:radial-gradient(circle at 50% 48%,#2d1744 0,#111829 42%,#080e18 76%);overflow:hidden;isolation:isolate}
.wizard-map:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at var(--magic-x,50%) var(--magic-y,50%),#bd78e12b,transparent 23%);pointer-events:none;z-index:3}
.wizard-map-rings{position:absolute;width:min(620px,72%);aspect-ratio:1;left:50%;top:50%;transform:translate(-50%,-50%);border:1px solid #9a62bd55;border-radius:50%;box-shadow:0 0 0 80px #9e68bd0b,0 0 0 160px #9e68bd07;z-index:0}
.wizard-map img{position:absolute;height:96%;width:auto;left:50%;bottom:-6%;transform:translateX(-50%);object-fit:contain;z-index:1;filter:drop-shadow(0 24px 55px #000c)}
.wizard-map.is-exploring img{filter:drop-shadow(0 25px 60px #000d) saturate(1.08)}
.wizard-hotspot{position:absolute;z-index:5;width:34px;height:34px;border-radius:50%;border:1px solid #c99be8;background:#0b1020d9;box-shadow:0 0 0 10px #b36bd51a,0 0 26px #ae6ed1;color:#fff;display:grid;place-items:center;font:900 12px var(--mono);transition:transform .18s,box-shadow .18s}
.wizard-hotspot:hover,.wizard-hotspot:focus-visible{transform:scale(1.18);box-shadow:0 0 0 15px #b36bd526,0 0 42px #ae6ed1}
.wizard-hotspot:after{content:attr(data-label);position:absolute;left:43px;top:50%;transform:translateY(-50%);white-space:nowrap;background:#080e18e8;border:1px solid #6c5879;padding:8px 10px;color:#e7e2ec;font:800 9px var(--mono);letter-spacing:.05em;opacity:0;pointer-events:none;transition:opacity .18s,transform .18s}
.wizard-hotspot:hover:after,.wizard-hotspot:focus-visible:after{opacity:1;transform:translate(4px,-50%)}
.hotspot-orb{left:28%;top:15%}.hotspot-hat{right:29%;top:25%}.hotspot-heart{left:46%;top:53%}.hotspot-staff{left:20%;top:54%}.hotspot-horizon{right:24%;bottom:19%}
.journey-rail{position:sticky;overflow:hidden}.journey-rail:before{content:"";position:absolute;left:0;bottom:0;height:2px;width:calc(var(--journey-progress,0) * 100%);background:linear-gradient(90deg,#7edfd7,#bd78df);box-shadow:0 0 12px #a865d3;transition:width .08s linear}.journey-rail a{position:relative}.journey-rail a.is-active{color:#692c88;background:#fff;border-color:#b093bf}
.journey-chapter{position:relative;overflow:hidden;border-top:1px solid #c7c0b8}.journey-chapter:before{content:"";position:absolute;width:480px;height:480px;border:1px solid #875ca03b;border-radius:50%;right:-200px;top:50%;transform:translateY(-50%);box-shadow:0 0 0 74px #895ba00a,0 0 0 148px #895ba006;pointer-events:none}
.journey-chapter--dark{background:#101a2b!important;color:#fff}.journey-chapter--dark .journey-copy p{color:#c8ced8}.journey-chapter--dark .journey-number{color:#cf9aeb}.journey-chapter--dark h2 em{color:#cf9aeb}
.journey-art{transform:translateY(0);transition:transform .6s cubic-bezier(.2,.8,.2,1)}.journey-chapter.is-revealed .journey-art{transform:translateY(-8px)}
.journey-art img{filter:drop-shadow(0 22px 35px #15101d2b);animation:artifactFloat 7s ease-in-out infinite}
.artifact{position:relative;overflow:hidden;transition:transform .18s,border-color .18s}.artifact:after{content:"";position:absolute;inset:auto -35% -70% 20%;height:170px;border-radius:50%;background:#a965d02b;filter:blur(18px)}.artifact:hover{transform:translateY(-4px);border-color:#9b6bb6}
@keyframes artifactFloat{0%,100%{transform:translateY(0) rotate(-.4deg)}50%{transform:translateY(-9px) rotate(.5deg)}}

@media(prefers-reduced-motion:reduce){
 .portal-symbol,.lab-entry:before,.journey-art img{animation:none!important}
 .js-magic .portal-card.magic-surface,.js-magic .lab-room.magic-surface,.js-magic .suite-product.magic-surface{transform:none!important}
 .lab-gate-panel,.lab-gate-seal,.lab-room-door i{transition:none!important}
 .magic-canvas{display:none!important}
}
@media(max-width:980px){
 .creative-suite{grid-template-columns:1fr}.suite-stage{min-height:510px}.suite-stage-visual{min-height:300px}
 .universe-map-head{grid-template-columns:1fr;gap:18px}.wizard-map{min-height:590px}
}
@media(max-width:650px){
 .suite-stage{min-height:470px}.suite-stage-copy{padding:22px}.suite-stage-visual img{height:105%!important;right:-15%!important}.suite-stage-visual .suite-orbit{width:110px;height:110px;left:7%}
 .lab-gate-panel:before{inset:5%}.lab-gate-seal{width:118px;height:118px}.lab-gate-seal:before{font-size:39px}
 .wizard-map{min-height:520px}.wizard-map img{height:88%;bottom:-2%}.wizard-hotspot{width:29px;height:29px}.wizard-hotspot:after{font-size:8px;left:37px}.hotspot-orb{left:18%}.hotspot-hat{right:16%}.hotspot-heart{left:45%}.hotspot-staff{left:13%}.hotspot-horizon{right:14%}
}

.portfolio-subnav a.is-active{background:#151e2e;color:#fff;border-color:#704491;box-shadow:0 0 0 1px #9b67b433,0 0 18px #7b43981d}
.portal-hub{position:relative;overflow:hidden;isolation:isolate}.portal-hub:before{content:"";position:absolute;width:720px;height:720px;border:1px solid #985fb338;border-radius:50%;left:50%;top:56%;transform:translate(-50%,-50%);box-shadow:0 0 0 95px #945aae0a,0 0 0 190px #945aae05;z-index:-1;pointer-events:none}
.portal-hub:after{content:"✦";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:64px;color:#a96ecb10;text-shadow:0 0 65px #a96ecb40;z-index:-1;pointer-events:none}
@media(max-width:650px){.portal-hub:before{width:470px;height:470px}}

.artifact{display:flex;flex-direction:column;text-decoration:none}
.artifact span{margin-top:auto;padding-top:24px;color:#d5a4ee;font:800 9px var(--mono);letter-spacing:.055em;position:relative;z-index:2}
.artifact strong,.artifact small{position:relative;z-index:2}

.lab-hero-mascot,.lab-hero-orb{position:absolute!important}
.lab-room-door{z-index:0}
.lab-room:before{z-index:1;pointer-events:none}
.lab-room:after{z-index:1;pointer-events:none}
.lab-room>small,.lab-room>h3,.lab-room>p,.lab-room>span{z-index:2}

.universe-map-head{position:relative}
.quest-brief{position:relative;border-left:1px solid #a873c7;padding:16px 0 16px 23px;max-width:590px;background:linear-gradient(90deg,#9b5fc50b,transparent 75%)}
.quest-brief-label,.quest-rail-title,.quest-rail-end,.quest-map-ui,.quest-complete{font:800 10px/1.4 var(--mono);letter-spacing:.1em}
.quest-brief-label{display:block;color:#cf99e9;margin-bottom:7px}
.quest-brief strong{display:block;font:850 20px/1.2 var(--display);letter-spacing:-.02em;color:#fff}
.quest-brief p{font-size:13px!important;line-height:1.55!important;margin:7px 0 12px!important;color:#aeb8c8!important}
.quest-status{display:flex;align-items:center;gap:9px;color:#7ee0d5;font:800 9px var(--mono);letter-spacing:.08em}
.quest-status i{display:block;width:7px;height:7px;border-radius:50%;background:#7ee0d5;box-shadow:0 0 12px #7ee0d5;animation:questPulse 1.8s ease-in-out infinite}
.quest-status b{margin-left:auto;color:#d0a1eb;font-weight:800}
@keyframes questPulse{0%,100%{opacity:.45;box-shadow:0 0 4px #7ee0d5}50%{opacity:1;box-shadow:0 0 18px #7ee0d5}}

.wizard-map{cursor:default}
.wizard-map:before{content:"";position:absolute;inset:12px;border:1px solid #9a70b72a;pointer-events:none;z-index:4}
.quest-map-ui{position:absolute;z-index:6;left:22px;right:22px;top:18px;display:flex;align-items:center;gap:17px;color:#9ca8bc}
.quest-map-ui b{color:#d6b0e9;font-weight:800}
.quest-map-ui i{height:1px;flex:1;background:linear-gradient(90deg,#77608755,transparent)}
.quest-map-compass{position:absolute;z-index:6;right:22px;bottom:20px;width:58px;height:58px;border:1px solid #7d668b66;border-radius:50%;display:grid;place-items:center;color:#9ea9b8;font:800 8px var(--mono);opacity:.75}
.quest-map-compass i{color:#d39bec;font-size:18px;grid-row:2;grid-column:1}
.quest-map-compass span:first-child{position:absolute;top:5px}.quest-map-compass span:last-child{position:absolute;bottom:5px}

.quest-door{
  width:72px!important;height:92px!important;border-radius:38px 38px 8px 8px!important;
  background:linear-gradient(180deg,#17233a,#090f1b 72%);
  border:1px solid #b87fd4!important;
  box-shadow:0 0 0 7px #b66ed512,0 0 22px #a56dc966,inset 0 0 22px #9f62c51c!important;
  overflow:visible;
  transform:translateZ(0)!important;
}
.quest-door i{position:absolute;inset:9px 10px 9px;border:1px solid #8c68a4;border-radius:28px 28px 4px 4px;background:radial-gradient(ellipse at 50% 68%,#c78ae532 0,transparent 52%),#0a1120;box-shadow:inset 0 0 18px #9f60c42b;transition:transform .55s cubic-bezier(.2,.8,.2,1),filter .35s}
.quest-door i:before,.quest-door i:after{content:"";position:absolute;top:0;bottom:0;width:50%;background:linear-gradient(90deg,#121d31,#1d2940 72%,#725083);border-color:#bd85d44d;transition:transform .5s cubic-bezier(.18,.78,.2,1),filter .35s;z-index:2}
.quest-door i:before{left:0;border-right:1px solid #c18bd75c;transform-origin:left center}
.quest-door i:after{right:0;border-left:1px solid #c18bd75c;transform-origin:right center;box-shadow:none}
.quest-door:hover i:before,.quest-door:focus-visible i:before{transform:perspective(420px) rotateY(-38deg)}
.quest-door:hover i:after,.quest-door:focus-visible i:after{transform:perspective(420px) rotateY(38deg)}
.quest-door.is-opening i:before{transform:perspective(420px) rotateY(-88deg);filter:brightness(1.45)}
.quest-door.is-opening i:after{transform:perspective(420px) rotateY(88deg);filter:brightness(1.45)}
.quest-door i{background:radial-gradient(ellipse at 50% 68%,#d28fe852 0,transparent 52%),#07101d}
.quest-door b{position:absolute;z-index:3;bottom:-22px;left:50%;transform:translateX(-50%);font:900 9px var(--mono);color:#dfc1ed;letter-spacing:.08em;text-shadow:0 0 9px #a767c8;white-space:nowrap}
.quest-door:after{content:"";position:absolute;inset:-18px -14px;border:1px solid #b975d538;border-radius:50%;opacity:.45;transform:scale(.75);transition:transform .45s,opacity .35s}
.quest-door:hover,.quest-door:focus-visible{transform:scale(1.08)!important;box-shadow:0 0 0 10px #b66ed51a,0 0 45px #b36bd5,inset 0 0 30px #a965d633!important}
.quest-door:hover i,.quest-door:focus-visible i{filter:brightness(1.35);transform:scaleX(1.04)}
.quest-door:hover:after,.quest-door:focus-visible:after{transform:scale(1.08);opacity:.9}
.quest-door.is-opening{animation:doorArrival .82s ease-in-out}
.quest-door.is-opening i{transform:scaleX(.12);filter:brightness(2.2);box-shadow:0 0 35px #8ee1d9}
.quest-door.is-opening:after{transform:scale(1.35);opacity:0}
.quest-door--lab{border-color:#83d9d1!important;box-shadow:0 0 0 7px #75d9d20e,0 0 24px #75d9d255,inset 0 0 20px #75d9d21a!important}
.quest-door--lab i:after{background:#c99bea;box-shadow:0 0 13px #c99bea}
@keyframes doorArrival{
  0%{transform:scale(1)}
  22%{transform:scale(1.13)}
  55%{transform:scale(.96)}
  100%{transform:scale(1.02)}
}

.wizard-map.quest-awakened .wizard-map-rings{animation:mapRingAwaken 1.3s cubic-bezier(.2,.8,.2,1)}
.wizard-map.quest-awakened:after{animation:mapAwaken 1.05s ease-out}
.wizard-map.quest-awakened img{animation:mapMageAwaken 1.25s cubic-bezier(.2,.8,.2,1)}
@keyframes mapRingAwaken{0%{transform:translate(-50%,-50%) scale(.84);opacity:.1}65%{transform:translate(-50%,-50%) scale(1.08);opacity:1}100%{transform:translate(-50%,-50%) scale(1)}}
@keyframes mapAwaken{0%{opacity:0}35%{opacity:1}100%{opacity:.25}}
@keyframes mapMageAwaken{0%{filter:drop-shadow(0 24px 55px #000c) brightness(.55)}45%{filter:drop-shadow(0 24px 70px #000c) brightness(1.22)}100%{filter:drop-shadow(0 24px 55px #000c)}}

.journey-rail .wrap{align-items:center}
.quest-rail-title{color:#7b4399;padding-right:9px;border-right:1px solid #c5bcc5}
.quest-rail-end{margin-left:auto;color:#777082}
.journey-rail a{transition:color .2s,background .2s,transform .2s}
.journey-rail a.is-active{transform:translateY(-1px);box-shadow:0 4px 14px #6d41821a}
.journey-chapter{scroll-margin-top:150px}
.journey-chapter.is-visited .journey-number:before{content:"✓";display:inline-block;margin-right:8px;color:#55aa92}
.quest-complete{color:#d29aed;margin:0 0 20px}
.universe-finale{position:relative;overflow:hidden}
.universe-finale:before{content:"";position:absolute;width:680px;height:680px;left:50%;top:50%;transform:translate(-50%,-50%);border:1px solid #a465c42b;border-radius:50%;box-shadow:0 0 0 100px #a465c408,0 0 0 200px #a465c404;pointer-events:none}
.universe-finale>.wrap{position:relative;z-index:1}

@media(max-width:650px){
 .quest-brief{margin-top:10px}
 .quest-map-ui{left:15px;right:15px;font-size:8px;gap:9px}.quest-map-ui b{display:none}
 .quest-map-compass{display:none}
 .quest-door{width:54px!important;height:70px!important}
 .quest-door i{inset:7px 7px}
 .quest-door b{font-size:8px;bottom:-18px}
 .quest-rail-end{display:none}
 .quest-rail-title{display:none}
}
@media(prefers-reduced-motion:reduce){
 .quest-status i,.wizard-map.quest-awakened .wizard-map-rings,.wizard-map.quest-awakened img{animation:none!important}
 .quest-door,.quest-door i,.quest-door:after,.journey-rail a{transition:none!important}
}

.lab-explorer{position:relative;min-height:1000px;overflow:hidden;background:radial-gradient(circle at 50% 30%,#3b1d59 0,#17102a 34%,#080a14 72%,#04060c 100%);color:#f4efff;padding:72px 0 0;isolation:isolate}
.lab-explorer:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 18% 55%,#22d7c52b 0 7%,transparent 25%),radial-gradient(circle at 83% 38%,#ff8b3b24 0 6%,transparent 23%),linear-gradient(180deg,#080a14aa,#080a14 88%);pointer-events:none;z-index:-2}
.lab-explorer:after{content:"";position:absolute;left:-10%;right:-10%;bottom:-13%;height:42%;background:radial-gradient(ellipse at center,#2b183c 0,#100c1a 52%,transparent 72%);filter:blur(18px);z-index:-1}
.lab-atmosphere{position:absolute;inset:0;pointer-events:none;z-index:0}
.lab-moon{position:absolute;width:180px;height:180px;border-radius:50%;right:14%;top:120px;background:radial-gradient(circle at 40% 38%,#dfffe9 0 5%,#76f3d7 18%,#38a4c7 44%,#6c3a9b 72%,transparent 73%);box-shadow:0 0 55px #53f4db88,0 0 150px #7e3bc855;opacity:.76}
.lab-smoke{position:absolute;border-radius:50%;filter:blur(25px);opacity:.24;animation:lab-drift 9s ease-in-out infinite alternate}
.lab-smoke--one{width:280px;height:120px;left:12%;top:33%;background:#65f1d1}.lab-smoke--two{width:360px;height:140px;right:7%;top:55%;background:#c75ff1;animation-delay:-4s}
.lab-rune{position:absolute;color:#d49cf4;font:800 32px var(--mono);text-shadow:0 0 22px currentColor;opacity:.45;animation:lab-float 6s ease-in-out infinite}
.lab-rune--one{left:7%;top:22%}.lab-rune--two{right:32%;top:14%;animation-delay:-2s}.lab-rune--three{right:8%;bottom:20%;animation-delay:-4s}
.lab-explorer-head{position:relative;z-index:4;display:grid;grid-template-columns:1.15fr .55fr;gap:7%;align-items:end;margin-bottom:30px}
.lab-explorer .section-tag{color:#77ead8}.lab-explorer h1{font:900 clamp(60px,7.5vw,116px)/.84 var(--display);letter-spacing:-.08em;text-transform:uppercase;margin:22px 0;color:#fff;text-shadow:0 10px 35px #0009}.lab-explorer h1 em{font-style:normal;color:#ca8df1}
.lab-lede{max-width:720px;color:#d3d5df;font-size:18px;line-height:1.7;margin:0}
.lab-instruction{border:1px solid #8b6aa767;background:#120e21cc;backdrop-filter:blur(10px);padding:20px 22px;box-shadow:0 18px 60px #0006}
.lab-instruction-icon{display:block;color:#7ff2df;font-size:28px;margin-bottom:12px}.lab-instruction strong{display:block;font:800 10px var(--mono);letter-spacing:.1em;color:#f0c9ff}.lab-instruction p{font-size:13px;line-height:1.55;color:#b8bdc9;margin:8px 0 0}
.lab-scene-wrap{position:relative;z-index:2;width:100%;padding:0 48px}
.lab-scene{position:relative;max-width:1500px;height:610px;margin:0 auto;overflow:hidden;border:1px solid #7d608d88;background:#100c19;box-shadow:0 40px 120px #000b,0 0 0 1px #ffffff08;isolation:isolate}
.lab-backwall{position:absolute;inset:0;background:linear-gradient(180deg,#171127 0,#0e101b 62%,#17101b 100%);z-index:-4}
.lab-backwall:before{content:"";position:absolute;inset:0;background-image:linear-gradient(#a98bc20a 1px,transparent 1px),linear-gradient(90deg,#a98bc20a 1px,transparent 1px);background-size:44px 44px;mask-image:linear-gradient(#000 0 55%,transparent 100%)}
.lab-backwall:after{content:"";position:absolute;left:35%;right:16%;top:12%;height:48%;background:radial-gradient(circle,#5c27a9 0,#7a2fcf2e 27%,transparent 67%);filter:blur(15px)}
.lab-window{position:absolute;z-index:1;left:38%;top:10%;width:39%;height:48%;border:12px solid #21142c;box-shadow:0 0 0 2px #a56ed84c,0 0 60px #6e2fd766;background:radial-gradient(circle at 50% 50%,#a64dff 0,#43227b 38%,#11102a 75%);overflow:hidden}
.lab-window:before,.lab-window:after{content:"";position:absolute;background:#c4a5e93d}.lab-window:before{left:50%;top:0;bottom:0;width:2px}.lab-window:after{top:50%;left:0;right:0;height:2px}.lab-window span{position:absolute;width:150px;height:150px;border-radius:50%;right:18%;top:22%;background:radial-gradient(circle,#ecffce 0 4%,#6df0d5 15%,#39a5a9 36%,transparent 66%);box-shadow:0 0 50px #77f4db}
.lab-window i,.lab-window b{position:absolute;display:block;background:#62e9d2;border-radius:50%;filter:blur(1px);box-shadow:0 0 16px #62e9d2}.lab-window i{width:9px;height:9px;left:22%;top:28%}.lab-window b{width:5px;height:5px;left:68%;top:64%}
.lab-shelf{position:absolute;z-index:3;top:8%;width:27%;height:50%;background:linear-gradient(180deg,#25152a,#17101a);border:8px solid #241727;border-bottom-width:12px;box-shadow:inset 0 -4px #a26a9e3d,0 20px 30px #0008}
.lab-shelf:before,.lab-shelf:after{content:"";position:absolute;left:-8px;right:-8px;height:7px;background:#4c293e;box-shadow:0 20px #4c293e,0 40px #4c293e,0 60px #4c293e,0 80px #4c293e}
.lab-shelf:before{top:27%}.lab-shelf:after{top:54%}
.lab-shelf--left{left:4%}.lab-shelf--right{right:3%;width:23%}
.lab-bottle{position:absolute;bottom:8px;width:20px;height:48px;border-radius:7px 7px 5px 5px;background:linear-gradient(90deg,#21d9c4,#5a4cff);box-shadow:0 0 13px #4debd788}
.lab-bottle:before{content:"";position:absolute;left:6px;top:-10px;width:8px;height:12px;background:#d8b6e7;border-radius:2px 2px 0 0}.lab-bottle:after{content:"";position:absolute;inset:9px 4px auto;height:2px;background:#fff8}
.lab-bottle.b2,.lab-bottle.b8,.lab-bottle.b13{height:32px;width:14px;background:linear-gradient(90deg,#f2a33b,#f15bb5);box-shadow:0 0 12px #ff9f3d88}.lab-bottle.b3,.lab-bottle.b10,.lab-bottle.b16{height:58px;width:18px;background:linear-gradient(90deg,#52e2f0,#68f29d)}.lab-bottle.b4,.lab-bottle.b11,.lab-bottle.b17{height:39px;width:27px;border-radius:12px;background:linear-gradient(90deg,#af50ed,#50b9ff)}.lab-bottle.b5,.lab-bottle.b14{height:25px;width:23px;background:#c6ef70}.lab-bottle.b6,.lab-bottle.b15,.lab-bottle.b18{height:44px;width:13px;background:#f071c8}
.lab-bottle:nth-child(1){left:8%}.lab-bottle:nth-child(2){left:21%}.lab-bottle:nth-child(3){left:33%}.lab-bottle:nth-child(4){left:47%}.lab-bottle:nth-child(5){left:63%}.lab-bottle:nth-child(6){left:78%}.lab-bottle:nth-child(7){left:12%;bottom:37%}.lab-bottle:nth-child(8){left:28%;bottom:37%}.lab-bottle:nth-child(9){left:45%;bottom:37%}.lab-bottle:nth-child(10){left:67%;bottom:37%}.lab-shelf--right .lab-bottle:nth-child(1){left:10%}.lab-shelf--right .lab-bottle:nth-child(2){left:27%}.lab-shelf--right .lab-bottle:nth-child(3){left:44%}.lab-shelf--right .lab-bottle:nth-child(4){left:61%}.lab-shelf--right .lab-bottle:nth-child(5){left:78%}.lab-shelf--right .lab-bottle:nth-child(6){left:18%;bottom:37%}.lab-shelf--right .lab-bottle:nth-child(7){left:43%;bottom:37%}.lab-shelf--right .lab-bottle:nth-child(8){left:69%;bottom:37%}
.lab-hanging{position:absolute;z-index:4;top:0;width:2px;height:120px;background:#62526e;transform-origin:top}.lab-hanging:after{content:"";position:absolute;bottom:-16px;left:-10px;width:20px;height:24px;border-radius:4px 4px 10px 10px;background:linear-gradient(#79f4dd,#8d3bea);box-shadow:0 0 25px #68f2d8aa}.lab-hanging--one{left:29%;height:150px}.lab-hanging--two{left:72%;height:105px}.lab-hanging--three{right:11%;height:175px}.lab-table{position:absolute;z-index:6;left:19%;right:14%;bottom:0;height:29%;background:linear-gradient(#4a2b32,#2b1a25 35%,#17111a);border-top:9px solid #75405a;box-shadow:0 -8px 30px #0009}.lab-table:before{content:"";position:absolute;left:0;right:0;top:-18px;height:13px;background:#8d5270}.lab-drawer{position:absolute;top:29%;width:23%;height:33%;border:2px solid #4b3040;background:#241725}.lab-drawer:nth-child(1){left:9%}.lab-drawer:nth-child(2){left:38%}.lab-drawer:nth-child(3){left:67%}
.lab-cauldron{position:absolute;z-index:8;left:28%;bottom:17%;width:145px;height:82px;border-radius:0 0 70px 70px;background:linear-gradient(180deg,#2b3142,#0c111b);border:6px solid #4b5364;box-shadow:0 18px 20px #0009,0 0 0 2px #9b8aaf33}.lab-cauldron span{position:absolute;left:13px;right:13px;top:-8px;height:18px;border-radius:50%;background:#6df0d4;box-shadow:0 0 35px #6df0d4}.lab-cauldron i{position:absolute;width:110px;height:45px;left:12px;top:-47px;border-radius:50%;border:2px solid #77efd5;border-bottom:0;filter:blur(1px);opacity:.5}
.lab-plant{position:absolute;z-index:5;bottom:23%;width:65px;height:130px}.lab-plant:before{content:"";position:absolute;left:24px;bottom:0;width:17px;height:70px;background:#473127;border-radius:10px}.lab-plant:after{content:"";position:absolute;left:3px;bottom:40px;width:60px;height:72px;background:radial-gradient(ellipse at 50% 90%,#4de5b2 0 18%,transparent 19%),radial-gradient(ellipse at 22% 65%,#79f06d 0 18%,transparent 19%),radial-gradient(ellipse at 78% 50%,#43c98f 0 18%,transparent 19%);filter:drop-shadow(0 0 10px #4ce1aa66)}.lab-plant--one{left:55%}.lab-plant--two{right:26%;transform:scale(.8)}
.lab-mascot{position:absolute;z-index:7;right:18%;bottom:7%;width:245px;opacity:.27;filter:saturate(.65) contrast(1.08) drop-shadow(0 0 28px #b85bea55);pointer-events:none}.lab-mascot img{display:block;width:100%}
.lab-floor-glow{position:absolute;z-index:5;left:17%;right:9%;bottom:3%;height:70px;background:radial-gradient(ellipse,#b34ee944,transparent 68%);filter:blur(8px)}
.lab-hotspot{position:absolute;z-index:12;width:66px;height:66px;border-radius:50%;border:1px solid #caa1ed99;background:#140f20cc;color:#fff;box-shadow:0 0 0 5px #b773e00c,0 0 30px #a04fe899;cursor:pointer;display:grid;place-items:center;transition:transform .2s,box-shadow .2s,border-color .2s;background-clip:padding-box}
.lab-hotspot:before{content:"";position:absolute;inset:-10px;border:1px solid #b98ce355;border-radius:50%;animation:lab-pulse 2.6s ease-in-out infinite}
.lab-hotspot span{font-size:23px;color:#79f2df;text-shadow:0 0 14px currentColor}.lab-hotspot small{position:absolute;top:74px;left:50%;transform:translateX(-50%);white-space:nowrap;color:#e9d8f6;font:800 9px var(--mono);letter-spacing:.07em;text-shadow:0 2px 9px #000}
.lab-hotspot:hover,.lab-hotspot:focus-visible,.lab-hotspot.is-found{transform:scale(1.13);border-color:#7ff4df;box-shadow:0 0 0 7px #7ff4df14,0 0 45px #7ff4df99}.lab-hotspot.is-found span{color:#ffd58a}
.lab-hotspot--forge{left:24%;bottom:34%}.lab-hotspot--observatory{left:54%;top:28%}.lab-hotspot--alchemy{left:67%;bottom:34%}.lab-hotspot--grimoire{left:12%;top:37%}.lab-hotspot--automata{right:14%;bottom:31%}.lab-hotspot--cartography{right:27%;top:35%}
.lab-scene-label{position:absolute;z-index:13;left:22px;right:22px;bottom:18px;display:flex;justify-content:space-between;gap:20px;color:#9f91aa;font:700 9px var(--mono);letter-spacing:.08em;pointer-events:none}
.lab-journal{position:relative;z-index:5;display:grid;grid-template-columns:1fr auto;gap:10px 25px;padding-top:20px;padding-bottom:38px}
.lab-journal-progress{height:3px;background:#ffffff17;grid-column:1/-1}.lab-journal-progress span{display:block;width:0;height:100%;background:linear-gradient(90deg,#63e9d1,#c887f2);box-shadow:0 0 14px #71e8db;transition:width .45s}
.lab-journal-copy{display:flex;align-items:center;gap:22px;font:700 10px var(--mono);color:#b3abbc}.lab-journal-copy strong{color:#fff}.lab-journal-open{border:0;background:none;color:#d3a9ec;font:800 10px var(--mono);cursor:pointer;padding:8px 0}.lab-journal-open:hover{color:#7ff0df}
.lab-dossier{position:fixed;z-index:70;right:24px;top:112px;width:min(430px,calc(100vw - 48px));padding:30px;background:#0b0a13f2;border:1px solid #8b69a6;box-shadow:0 30px 100px #000b,0 0 50px #8c42c433;backdrop-filter:blur(18px);color:#f6f0ff}.lab-dossier[hidden]{display:none}.lab-dossier-close{position:absolute;right:14px;top:10px;border:0;background:none;color:#b8aec2;font-size:28px;cursor:pointer}.lab-dossier-symbol{font-size:36px;color:#78f1de;text-shadow:0 0 22px currentColor}.lab-dossier h2{font:900 44px/.95 var(--display);letter-spacing:-.06em;text-transform:uppercase;margin:15px 0}.lab-dossier-text{color:#c7c4cf;font-size:14px;line-height:1.7}.lab-dossier-meta{display:flex;justify-content:space-between;gap:16px;border-top:1px solid #ffffff18;border-bottom:1px solid #ffffff18;padding:14px 0;margin:22px 0;color:#b99bd0;font:800 9px var(--mono);letter-spacing:.05em}.lab-dossier-action{display:flex;justify-content:space-between;align-items:center;background:#f2eafa;color:#181324;padding:14px 16px;font-weight:850}.lab-dossier-action:hover{background:#9cebdc}
.lab-field-notes{background:#f3eee6;color:#182437;padding:110px 0 118px}.lab-field-head{display:grid;grid-template-columns:1fr .8fr;gap:9%;align-items:end;margin-bottom:45px}.lab-field-head h2{font:900 clamp(48px,5.7vw,86px)/.94 var(--display);letter-spacing:-.075em;text-transform:uppercase;margin:0}.lab-field-head h2 em{font-style:normal;color:#73369a}.lab-field-head>p{font-size:17px;line-height:1.75;color:#515b6b;margin:0}.lab-notes-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.lab-notes-grid article{position:relative;min-height:260px;border:1px solid #c9c1b8;background:#f8f4ee;padding:25px;overflow:hidden;transition:transform .2s,border-color .2s}.lab-notes-grid article:hover{transform:translateY(-5px);border-color:#9161a9}.lab-notes-grid article>span{position:absolute;right:18px;top:16px;color:#987aa3;font:800 10px var(--mono)}.lab-notes-grid small{font:800 9px var(--mono);color:#75419a;letter-spacing:.08em}.lab-notes-grid h3{font:850 27px/1.05 var(--display);letter-spacing:-.04em;text-transform:uppercase;margin:45px 0 14px}.lab-notes-grid p{font-size:13px;line-height:1.65;color:#556071;margin:0}
.lab-console--journal{padding:88px 0;background:#070b14}.lab-journal-panel{border:1px solid #3d485b;background:#0d1420;display:grid;grid-template-columns:.7fr 1.3fr;min-height:390px}.lab-journal-panel>div:first-child{padding:38px}.lab-journal-panel h2{font:900 clamp(42px,4.5vw,68px)/.95 var(--display);text-transform:uppercase;letter-spacing:-.06em;margin:0;color:#fff}.lab-journal-list{border-left:1px solid #2c3848;padding:28px;display:grid;align-content:center;gap:9px}.lab-journal-list div{display:grid;grid-template-columns:150px 1fr 130px;gap:18px;align-items:center;padding:17px;border:1px solid #283649;background:#101b2a}.lab-journal-list b{font:800 10px var(--mono);color:#7de9d8}.lab-journal-list span{font-size:13px;color:#d4d9e0}.lab-journal-list i{font:800 9px var(--mono);font-style:normal;color:#b992d4;text-align:right}
.lab-exit{background:#100d1b;color:#fff;padding:115px 0}.lab-exit h2{font:900 clamp(48px,6vw,90px)/.92 var(--display);letter-spacing:-.075em;text-transform:uppercase;margin:0 0 25px}.lab-exit h2 em{font-style:normal;color:#ca96ed}.lab-exit p:not(.section-tag){max-width:650px;color:#c5c1cc;font-size:17px;line-height:1.7}.lab-exit .section-tag{color:#7be8d7}

@keyframes lab-pulse{0%,100%{transform:scale(.86);opacity:.35}50%{transform:scale(1.1);opacity:.95}}
@keyframes lab-float{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-12px) rotate(5deg)}}
@keyframes lab-drift{from{transform:translate3d(-18px,0,0) scale(.92)}to{transform:translate3d(24px,10px,0) scale(1.08)}}

@media(max-width:850px){
.lab-explorer{padding-top:48px;min-height:0}.lab-explorer-head{grid-template-columns:1fr;gap:26px}.lab-explorer h1{font-size:clamp(56px,15vw,88px)}.lab-lede{font-size:16px}.lab-instruction{max-width:520px}.lab-scene-wrap{padding:0 14px}.lab-scene{height:620px}.lab-window{left:29%;top:16%;width:50%;height:39%}.lab-shelf--left{left:2%;width:28%;height:55%}.lab-shelf--right{right:2%;width:27%;height:55%}.lab-mascot{right:13%;bottom:8%;width:190px}.lab-table{left:8%;right:7%;height:28%}.lab-hotspot--forge{left:17%;bottom:35%}.lab-hotspot--observatory{left:57%;top:29%}.lab-hotspot--alchemy{left:63%;bottom:36%}.lab-hotspot--grimoire{left:8%;top:39%}.lab-hotspot--automata{right:8%;bottom:30%}.lab-hotspot--cartography{right:20%;top:41%}.lab-scene-label{font-size:8px}.lab-journal{grid-template-columns:1fr}.lab-journal-open{justify-self:start}.lab-dossier{right:12px;top:100px;width:calc(100vw - 24px)}.lab-field-notes{padding:78px 0}.lab-field-head{grid-template-columns:1fr;gap:25px}.lab-notes-grid{grid-template-columns:1fr 1fr}.lab-journal-panel{grid-template-columns:1fr}.lab-journal-list{border-left:0;border-top:1px solid #2c3848}.lab-journal-list div{grid-template-columns:1fr;gap:7px}.lab-journal-list i{text-align:left}.lab-exit{padding:85px 0}}
@media(max-width:560px){
.lab-explorer-head,.lab-journal,.lab-field-head,.lab-console--journal .wrap,.lab-exit .wrap{width:calc(100% - 36px)}.lab-scene{height:590px}.lab-shelf--left{width:32%;height:50%}.lab-shelf--right{width:31%;height:50%}.lab-window{left:25%;width:54%;height:37%;top:17%}.lab-mascot{right:11%;bottom:8%;width:155px}.lab-hotspot{width:55px;height:55px}.lab-hotspot small{font-size:7px;top:62px}.lab-hotspot--forge{left:13%;bottom:33%}.lab-hotspot--observatory{left:53%;top:31%}.lab-hotspot--alchemy{left:61%;bottom:33%}.lab-hotspot--grimoire{left:5%;top:40%}.lab-hotspot--automata{right:5%;bottom:29%}.lab-hotspot--cartography{right:17%;top:43%}.lab-notes-grid{grid-template-columns:1fr}.lab-field-head h2{font-size:clamp(44px,13vw,68px)}.lab-journal-copy{display:grid;gap:7px}.lab-scene-label{left:12px;right:12px;bottom:12px;display:grid;gap:3px}}

.lab-explorer .lab-entry{margin-top:28px;display:inline-flex;align-items:center;gap:28px;color:#151021;background:#a6f0e2;padding:14px 18px;font:850 11px var(--mono);letter-spacing:.03em;box-shadow:0 12px 35px #0005;transition:transform .2s,background .2s}.lab-explorer .lab-entry:hover{transform:translateY(-2px);background:#d7fff5}.lab-explorer .lab-entry span{font-size:19px;font-weight:400}


/* LAB 3.1 — scène cohérente : sorcier, mobilier et objets physiques */
.lab-scene{background:#100c19;perspective:1200px}
.lab-table{z-index:8;left:19%;right:14%;bottom:0;height:29%;background:linear-gradient(180deg,#55313b 0,#2b1a25 22%,#17111a 100%);border-top:9px solid #75405a;box-shadow:0 -12px 34px #000a}
.lab-table:before{height:13px;top:-18px;background:linear-gradient(90deg,#a86b83,#d18ca1 48%,#8c526d);box-shadow:0 3px 16px #0008}
.lab-drawer{top:28%;height:34%;border:1px solid #5c3b49;background:linear-gradient(180deg,#2c1b28,#201520);box-shadow:inset 0 1px #a66b7d33}
.lab-drawer:after{content:"";position:absolute;left:50%;top:11px;width:24px;height:2px;transform:translateX(-50%);background:#8c6170;box-shadow:0 1px 4px #0008}

.lab-wizard{position:absolute;z-index:4;right:8%;bottom:11%;width:340px;height:auto;pointer-events:none;filter:drop-shadow(0 28px 34px #000b) drop-shadow(0 0 28px #8d45c655);transform-origin:bottom center;animation:lab-wizard-breathe 5.5s ease-in-out infinite}
.lab-wizard img{display:block;width:100%;height:auto}
.lab-wizard:after{content:"";position:absolute;left:15%;right:8%;bottom:2%;height:30px;background:#0008;border-radius:50%;filter:blur(13px);z-index:-1}

.lab-workbench-objects{position:absolute;inset:0;z-index:9;pointer-events:none}
.lab-crystal-ball{position:absolute;left:36%;bottom:31%;width:66px;height:66px;border-radius:50%;background:radial-gradient(circle at 36% 30%,#fff 0 4%,#9effea 12%,#42b9d1 34%,#7430b7 70%,#1b102b 100%);box-shadow:0 0 18px #68f2d5aa,0 0 48px #7a42d566;border:3px solid #4b596d}
.lab-crystal-ball:after{content:"";position:absolute;left:14px;bottom:-16px;width:38px;height:17px;border-radius:50%;background:#252c3c;border:2px solid #687287}
.lab-mortar{position:absolute;left:42%;bottom:30.5%;width:70px;height:38px;border-radius:0 0 38px 38px;background:linear-gradient(180deg,#3b4050,#171c27);border:4px solid #697286;box-shadow:0 12px 16px #0008}
.lab-mortar:before{content:"";position:absolute;left:7px;right:7px;top:-7px;height:14px;border-radius:50%;background:#111722;border:3px solid #697286}
.lab-mortar i{position:absolute;width:14px;height:44px;right:-20px;top:-25px;border-radius:8px;background:linear-gradient(90deg,#b5a8a0,#554b50);transform:rotate(27deg);box-shadow:0 5px 9px #0008}
.lab-book{position:absolute;width:86px;height:48px;border-radius:3px;background:#402052;border:2px solid #8b57a5;box-shadow:0 10px 16px #0008;bottom:30.5%}
.lab-book:after{content:"✦";position:absolute;inset:0;display:grid;place-items:center;color:#d9a6f2;font-size:18px}
.lab-book--one{left:51%;transform:rotate(-5deg);background:#252e49;border-color:#6075a4}
.lab-book--two{left:55%;bottom:31.5%;transform:rotate(7deg);background:#43204f}
.lab-scroll{position:absolute;right:23%;bottom:31%;width:100px;height:34px;border-radius:5px;background:linear-gradient(180deg,#d8c4a1,#8e7250);box-shadow:0 9px 14px #0008;transform:rotate(-4deg)}
.lab-scroll:before,.lab-scroll:after{content:"";position:absolute;top:-3px;width:11px;height:40px;border-radius:50%;background:#b99a69;border:2px solid #70563c}
.lab-scroll:before{left:-5px}.lab-scroll:after{right:-5px}
.lab-gear{position:absolute;right:32%;bottom:31%;width:54px;height:54px;border-radius:50%;border:9px dotted #9a72bd;background:#242438;box-shadow:0 0 12px #8f56b966}
.lab-gear:after{content:"";position:absolute;inset:17px;border-radius:50%;background:#111522;border:2px solid #78dccc}
.lab-vials{position:absolute;right:39%;bottom:30.5%;display:flex;gap:8px;align-items:flex-end}
.lab-vials i{display:block;width:13px;height:31px;border-radius:4px 4px 6px 6px;background:linear-gradient(90deg,#51e8d1,#7750e8);box-shadow:0 0 10px #58e6d488}
.lab-vials i:nth-child(2){height:43px;background:linear-gradient(90deg,#ffb24d,#e849b5)}
.lab-vials i:nth-child(3){height:26px;background:linear-gradient(90deg,#8be66b,#4ed8c6)}
.lab-vials i:nth-child(4){height:36px;background:linear-gradient(90deg,#b96be8,#4e8cff)}
.lab-vials i:before{content:"";display:block;width:7px;height:9px;margin:-8px auto 0;background:#c8b8ce;border-radius:2px}
.lab-herbs{position:absolute;right:17%;bottom:30%;width:52px;height:58px;border-radius:50%;background:radial-gradient(ellipse at 20% 70%,#69e47f 0 18%,transparent 19%),radial-gradient(ellipse at 68% 48%,#7ff0a0 0 18%,transparent 19%),radial-gradient(ellipse at 50% 82%,#43b975 0 18%,transparent 19%);filter:drop-shadow(0 0 8px #63df9b55)}

.lab-cauldron{z-index:10;left:27%;bottom:30%;width:126px;height:72px}
.lab-cauldron span{top:-7px;height:16px}
.lab-cauldron i{width:94px;height:38px;left:12px;top:-41px}

.lab-hotspot{width:48px;height:48px;border-radius:14px;transform:rotate(45deg);background:#100d1bd9;border-color:#b989d8;box-shadow:0 0 0 3px #8a58b313,0 0 25px #9d50df77}
.lab-hotspot:before{inset:-7px;border-radius:17px;animation:lab-pulse 3s ease-in-out infinite}
.lab-hotspot span,.lab-hotspot small{transform:rotate(-45deg)}
.lab-hotspot span{font-size:18px}
.lab-hotspot small{top:57px;font-size:8px}
.lab-hotspot--forge{left:25%;bottom:35%}
.lab-hotspot--observatory{left:54%;top:27%}
.lab-hotspot--alchemy{left:41%;bottom:34%}
.lab-hotspot--grimoire{left:52%;bottom:33%}
.lab-hotspot--automata{right:29%;bottom:34%}
.lab-hotspot--cartography{right:20%;bottom:34%}
.lab-hotspot:hover,.lab-hotspot:focus-visible,.lab-hotspot.is-found{transform:rotate(45deg) scale(1.12);}

@keyframes lab-wizard-breathe{0%,100%{transform:translateY(0) rotate(-.3deg)}50%{transform:translateY(-5px) rotate(.3deg)}}

@media(max-width:980px){
  .lab-wizard{right:4%;width:280px;bottom:10%}
  .lab-crystal-ball{left:34%}.lab-mortar{left:40%}.lab-book--one{left:48%}.lab-book--two{left:52%}
  .lab-scroll{right:18%}.lab-gear{right:28%}.lab-vials{right:36%}.lab-herbs{right:12%}
}
@media(max-width:650px){
  .lab-wizard{right:-3%;width:215px;bottom:9%;opacity:.95}
  .lab-scene{height:590px}
  .lab-table{left:6%;right:5%;height:28%}
  .lab-cauldron{left:19%;bottom:29%;width:105px;height:62px}
  .lab-crystal-ball{left:31%;bottom:30%;width:52px;height:52px}
  .lab-mortar{left:40%;bottom:29.5%;transform:scale(.85)}
  .lab-book{bottom:29.5%;width:68px;height:38px}
  .lab-book--one{left:48%}.lab-book--two{left:53%;bottom:30.5%}
  .lab-scroll{right:17%;bottom:30%;width:75px;height:28px}
  .lab-gear{right:26%;bottom:30%;transform:scale(.8)}
  .lab-vials{right:34%;bottom:29.5%;transform:scale(.8);transform-origin:bottom right}
  .lab-herbs{right:7%;bottom:29%;transform:scale(.8)}
  .lab-hotspot{width:43px;height:43px}
  .lab-hotspot--forge{left:17%;bottom:34%}.lab-hotspot--observatory{left:50%;top:30%}.lab-hotspot--alchemy{left:37%;bottom:33%}.lab-hotspot--grimoire{left:50%;bottom:32%}.lab-hotspot--automata{right:25%;bottom:33%}.lab-hotspot--cartography{right:11%;bottom:33%}
}


/* LAB — points d'exploration : ancrage sur les objets, jamais sur le sorcier */
.lab-hotspot--cartography{top:auto;right:20%;bottom:34%}
.lab-hotspot--automata{top:auto;right:29%;bottom:34%}
.lab-hotspot--alchemy{top:auto;left:41%;bottom:34%}
.lab-hotspot--forge{top:auto;left:25%;bottom:35%}
@media(max-width:980px){
  .lab-hotspot--cartography{top:auto;right:17%;bottom:34%}
  .lab-hotspot--automata{top:auto;right:27%;bottom:33%}
  .lab-hotspot--alchemy{top:auto;left:37%;bottom:33%}
  .lab-hotspot--forge{top:auto;left:17%;bottom:34%}
}
@media(max-width:650px){
  .lab-hotspot--cartography{top:auto;right:11%;bottom:33%}
  .lab-hotspot--automata{top:auto;right:25%;bottom:33%}
  .lab-hotspot--alchemy{top:auto;left:37%;bottom:33%}
  .lab-hotspot--forge{top:auto;left:17%;bottom:34%}
}


/* LAB 3.2 — coin alchimique : cheminée à gauche + grimoire réellement rangé */
.lab-fireplace{
  position:absolute;
  z-index:4;
  left:2.8%;
  bottom:0;
  width:210px;
  height:52%;
  border:8px solid #2d2731;
  border-bottom:0;
  border-radius:92px 92px 0 0;
  background:
    linear-gradient(90deg,#29242b,#4a3941 18%,#342a32 50%,#514049 82%,#28232a);
  box-shadow:inset 0 0 0 3px #80616e44,inset 0 20px 30px #0008,0 -10px 35px #0007;
}
.lab-fireplace:before{
  content:"";
  position:absolute;
  left:25px;
  right:25px;
  bottom:0;
  height:72%;
  border:8px solid #211c25;
  border-bottom:0;
  border-radius:78px 78px 0 0;
  background:radial-gradient(circle at 50% 78%,#ffcc68 0 4%,#ff713d 10%,#321b21 34%,#0b0b12 67%);
  box-shadow:inset 0 0 38px #000,inset 0 -8px 20px #ff5d3328;
}
.lab-fireplace:after{
  content:"";
  position:absolute;
  left:15px;
  right:15px;
  top:20px;
  height:12px;
  border-radius:50%;
  background:#a97887;
  box-shadow:0 10px 0 #332731,0 20px 0 #211d25;
  opacity:.8;
}
.lab-fireplace-hood{
  position:absolute;
  z-index:2;
  left:62px;
  top:-70px;
  width:82px;
  height:82px;
  background:linear-gradient(90deg,#2c252d,#4d3942,#2a242b);
  border:7px solid #2d2731;
  border-bottom:0;
  border-radius:46px 46px 0 0;
  box-shadow:0 -5px 25px #0008;
}
.lab-fireplace-hearth{
  position:absolute;
  z-index:3;
  left:-15px;
  right:-15px;
  bottom:-1px;
  height:18px;
  border-radius:4px;
  background:linear-gradient(90deg,#5c4a50,#9b6878 48%,#604b53);
  border:2px solid #2b252b;
  box-shadow:0 8px 18px #0009;
}
.lab-fire{
  position:absolute;
  z-index:4;
  left:77px;
  bottom:18px;
  width:54px;
  height:65px;
  border-radius:50% 50% 45% 45%;
  background:radial-gradient(ellipse at 50% 78%,#fff4a4 0 9%,#ffd45a 15%,#ff6b32 43%,#8f2850 68%,transparent 70%);
  filter:drop-shadow(0 0 18px #ff7a3d);
  animation:lab-fire-flicker 1.35s ease-in-out infinite alternate;
}
.lab-cauldron{
  z-index:10;
  left:6.8%;
  bottom:15%;
  width:126px;
  height:72px;
}
.lab-cauldron span{
  top:-7px;
  height:16px;
}
.lab-cauldron i{
  width:94px;
  height:38px;
  left:12px;
  top:-41px;
}
.lab-cauldron:before,.lab-cauldron:after{
  content:"";
  position:absolute;
  z-index:-1;
  bottom:-12px;
  width:13px;
  height:28px;
  border-radius:0 0 8px 8px;
  background:#202532;
  border:3px solid #4b5364;
}
.lab-cauldron:before{left:17px}.lab-cauldron:after{right:17px}

.lab-grimoire-shelf{
  position:absolute;
  z-index:7;
  left:55%;
  bottom:12%;
  width:36px;
  height:66px;
  border-radius:3px 5px 4px 3px;
  background:linear-gradient(90deg,#24102e,#6d2f75 55%,#351843);
  border:3px solid #a55cc0;
  box-shadow:0 8px 14px #0009,0 0 12px #9a4ec855;
  transform:rotate(-2deg);
}
.lab-grimoire-shelf:before{
  content:"✦";
  position:absolute;
  inset:7px 4px auto;
  text-align:center;
  color:#f0cfff;
  font:700 15px var(--mono);
}
.lab-grimoire-shelf:after{
  content:"";
  position:absolute;
  left:5px;
  right:5px;
  bottom:10px;
  height:2px;
  background:#d08be8;
  box-shadow:0 -7px #8d4da7,0 -14px #8d4da7;
}
.lab-hotspot--forge{left:25%;bottom:35%}
.lab-hotspot--grimoire{left:11%;top:auto;bottom:47%}

@keyframes lab-fire-flicker{
  from{transform:scale(.92,.98) translateY(2px);opacity:.84}
  to{transform:scale(1.08,1.04) translateY(-3px);opacity:1}
}

@media(max-width:980px){
  .lab-fireplace{left:1.8%;width:180px;height:50%}
  .lab-fireplace-hood{left:53px;width:72px}
  .lab-fire{left:63px}
  .lab-cauldron{left:5.5%;bottom:15%;width:112px;height:64px}
  .lab-grimoire-shelf{left:52%;bottom:11%;transform:scale(.9) rotate(-2deg)}
  .lab-hotspot--forge{left:18%;bottom:35%}
  .lab-hotspot--grimoire{left:9%;bottom:45%}
}
@media(max-width:650px){
  .lab-fireplace{left:1%;width:145px;height:47%;border-width:6px}
  .lab-fireplace:before{left:17px;right:17px;border-width:6px}
  .lab-fireplace-hood{left:40px;top:-48px;width:58px;height:58px;border-width:6px}
  .lab-fire{left:47px;bottom:14px;width:42px;height:52px}
  .lab-cauldron{left:4%;bottom:14%;width:94px;height:58px}
  .lab-grimoire-shelf{left:48%;bottom:10%;transform:scale(.75) rotate(-2deg)}
  .lab-hotspot--forge{left:15%;bottom:34%}
  .lab-hotspot--grimoire{left:7%;bottom:43%}
}


/* Placement finale des artefacts interactifs */
.lab-cauldron{left:6.8%;bottom:15%}
.lab-hotspot--forge{left:8.5%;top:auto;bottom:36%}
.lab-grimoire-shelf{left:11%;bottom:47%;z-index:7}
.lab-hotspot--grimoire{left:10.5%;top:auto;bottom:43%}

@media(max-width:980px){
  .lab-cauldron{left:5%;bottom:15%}
  .lab-hotspot--forge{left:7%;top:auto;bottom:35%}
  .lab-grimoire-shelf{left:9%;bottom:45%}
  .lab-hotspot--grimoire{left:8%;top:auto;bottom:42%}
}
@media(max-width:650px){
  .lab-cauldron{left:3%;bottom:14%}
  .lab-hotspot--forge{left:5%;top:auto;bottom:34%}
  .lab-grimoire-shelf{left:7%;bottom:43%;transform:scale(.75) rotate(-2deg)}
  .lab-hotspot--grimoire{left:6%;top:auto;bottom:40%}
}


/* LAB 4.0 — direction artistique validée : laboratoire cinématique */
.lab-explorer{background:
  radial-gradient(circle at 50% 22%,#4b2670 0,#20142f 25%,#0c0d17 58%,#05070d 100%);
}
.lab-explorer:before{
  background:
    radial-gradient(circle at 12% 52%,#ff7b2b30 0 8%,transparent 24%),
    radial-gradient(circle at 88% 42%,#27e1cf22 0 8%,transparent 25%),
    linear-gradient(180deg,#05070bcc,#090a12 75%,#05060b);
}
.lab-scene{
  height:min(750px,50vw);
  min-height:560px;
  max-width:1500px;
  aspect-ratio:2/1;
  border:1px solid #a987b58c;
  background:
    radial-gradient(circle at 51% 40%,#7132b533 0 12%,transparent 34%),
    radial-gradient(circle at 13% 64%,#ff742b36 0 7%,transparent 21%),
    radial-gradient(circle at 84% 63%,#31e0d026 0 7%,transparent 20%),
    linear-gradient(180deg,#161120 0,#0c0d16 58%,#160f17 100%);
  box-shadow:0 42px 130px #000d,0 0 0 1px #fff1,0 0 90px #7b43a51c;
}
.lab-backwall{
  background:
    linear-gradient(90deg,#261d24aa 0 2%,transparent 2% 98%,#211923aa 98%),
    repeating-linear-gradient(0deg,#ffffff05 0 2px,transparent 2px 48px),
    repeating-linear-gradient(90deg,#ffffff04 0 2px,transparent 2px 54px),
    linear-gradient(180deg,#24182b,#11121b 55%,#1a1118);
}
.lab-backwall:before{
  background:
    radial-gradient(circle at 50% 34%,#8a43e62e 0 17%,transparent 43%),
    linear-gradient(90deg,transparent 0 32%,#d4a4ff08 32% 32.2%,transparent 32.2% 68%,#d4a4ff08 68% 68.2%,transparent 68%);
  mask-image:none;
}
.lab-backwall:after{
  left:34%;right:18%;top:8%;height:58%;
  background:radial-gradient(circle,#7434d866 0,#5b2bb52e 32%,transparent 70%);
  filter:blur(24px);
}
.lab-window{
  left:38%;
  top:7%;
  width:39%;
  height:49%;
  border:14px solid #251a2d;
  border-radius:120px 120px 18px 18px;
  background:
    radial-gradient(circle at 52% 44%,#d6fff4 0 2%,#5ff1d7 7%,transparent 17%),
    radial-gradient(circle at 60% 35%,#b04cff 0 9%,transparent 10%),
    radial-gradient(circle at 37% 57%,#3857ff 0 8%,transparent 9%),
    linear-gradient(180deg,#071a46 0,#17256a 38%,#6b2f98 72%,#1b102e 100%);
  box-shadow:0 0 0 2px #c78bf03d,0 0 70px #5f42ff66,inset 0 0 55px #020510;
}
.lab-window:before,.lab-window:after{background:#d8c1ef4d}
.lab-window span{
  width:130px;height:130px;right:17%;top:18%;
  background:radial-gradient(circle,#ffffff 0 3%,#7df7dd 10%,#43b6d2 35%,#6f3ac0 58%,transparent 70%);
  box-shadow:0 0 55px #7df7dd;
}
.lab-shelf{
  top:6%;
  height:57%;
  background:linear-gradient(180deg,#31202b,#1a121a);
  border-color:#2a1d26;
  box-shadow:inset 0 -4px #c18aa333,0 22px 34px #0009;
}
.lab-shelf:before,.lab-shelf:after{
  background:#593849;
  box-shadow:0 20px #593849,0 40px #593849,0 60px #593849,0 80px #593849;
}
.lab-shelf--left{left:3%;width:29%}/* LAB 4.2 — bibliothèque enrichie : grimoires, ouvrages et potions */
.lab-library-book,.lab-library-potion{position:absolute;z-index:2;pointer-events:none}
.lab-library-book{bottom:8%;width:20px;height:78px;border:2px solid #6f4a58;border-radius:2px 3px 2px 2px;background:linear-gradient(90deg,#25172b 0 18%,#6f365f 19% 78%,#b06b86 79% 86%,#2b172c 87%);box-shadow:0 7px 10px #0008,inset 2px 0 #d19aaa33}
.lab-library-book:after{content:"";position:absolute;left:4px;right:4px;top:12px;height:2px;background:#d3a1b033;box-shadow:0 12px #d3a1b033,0 24px #d3a1b033}
.lab-library-book.book-a{left:8%;height:64px;transform:rotate(-4deg);background:linear-gradient(90deg,#20152a,#51306e 30%,#8d4f9d 80%,#241528)}
.lab-library-book.book-b{left:15%;height:84px;transform:rotate(2deg);background:linear-gradient(90deg,#261728,#5c2948 28%,#9a5669 82%,#29162a)}
.lab-library-book.book-c{left:22%;height:71px;transform:rotate(-1deg);background:linear-gradient(90deg,#1c2330,#304a69 35%,#567da0 82%,#1c2431)}
.lab-library-book.book-d{left:69%;height:69px;transform:rotate(3deg);background:linear-gradient(90deg,#25152b,#69347c 30%,#a05ac0 82%,#26142b)}
.lab-library-book.book-e{left:75%;height:88px;transform:rotate(-2deg);background:linear-gradient(90deg,#211a27,#5b4931 28%,#8b6d46 82%,#241a27)}
.lab-library-book.book-f{left:82%;height:61px;transform:rotate(4deg);background:linear-gradient(90deg,#20202c,#384d63 30%,#657f9b 82%,#20202b)}
.lab-library-potion{bottom:37%;width:15px;height:38px;border-radius:6px 6px 5px 5px;background:linear-gradient(90deg,#7b35d8,#47e7d2);box-shadow:0 0 12px #5ee7d288}
.lab-library-potion:before{content:"";position:absolute;left:4px;top:-9px;width:7px;height:10px;border-radius:2px 2px 0 0;background:#d9bfdc}
.lab-library-potion.potion-a{left:39%;height:31px;background:linear-gradient(90deg,#ff9b3d,#f05ab6)}
.lab-library-potion.potion-b{left:47%;height:44px;background:linear-gradient(90deg,#4ce3ed,#70ee9d)}
.lab-library-potion.potion-c{left:56%;height:27px;background:linear-gradient(90deg,#b65bea,#5a91ff)}
.lab-library-potion.potion-d{left:63%;height:40px;background:linear-gradient(90deg,#d5ef67,#54d98c)}

.lab-shelf--right{right:2%;width:25%}
.lab-fireplace{
  left:1.8%;
  width:220px;
  height:55%;
  filter:drop-shadow(0 20px 22px #0008);
}
.lab-fireplace:before{
  background:
    radial-gradient(circle at 50% 76%,#fff1a0 0 3%,#ff9a42 9%,#e94a27 17%,#3b1b1f 35%,#09090e 68%);
}
.lab-fire{
  filter:drop-shadow(0 0 16px #ff7c35);
}
.lab-table{
  left:17%;
  right:11%;
  height:30%;
  background:linear-gradient(180deg,#65404b 0,#2c1a26 20%,#151016 100%);
  border-top-color:#966079;
}
.lab-table:before{background:linear-gradient(90deg,#9c6077,#d09aaa 48%,#8c526d)}
.lab-wizard{
  right:14%;
  bottom:9%;
  width:365px;
  filter:drop-shadow(0 28px 34px #000c) drop-shadow(0 0 35px #b64ed866);
}
.lab-cauldron{left:27%;bottom:31%}
.lab-workbench-objects{filter:drop-shadow(0 10px 14px #0009)}
.lab-hotspot{
  background:#0b0911e8;
  border-color:#d2a5ef;
  box-shadow:0 0 0 3px #8a58b313,0 0 30px #a85ee688;
}
.lab-hotspot span{color:#83f4df;text-shadow:0 0 18px currentColor}
.lab-hotspot small{text-shadow:0 2px 12px #000}
.lab-hotspot:hover,.lab-hotspot:focus-visible,.lab-hotspot.is-found{
  border-color:#87f7e1;
  box-shadow:0 0 0 7px #7ff4df18,0 0 52px #7ff4dfaa;
}
.lab-scene-label{opacity:.72}
@media(max-width:980px){
  .lab-scene{height:clamp(560px,62vw,680px)}
  .lab-wizard{right:7%;width:300px}
}
@media(max-width:650px){
  .lab-scene{height:590px;min-height:590px;aspect-ratio:auto}
  .lab-wizard{right:-2%;width:215px}
  .lab-window{left:25%;top:14%;width:54%;height:39%}
  .lab-shelf--left{width:32%;height:51%}
  .lab-shelf--right{width:31%;height:51%}
  .lab-fireplace{width:170px;height:48%}
}


/* LAB 4.1 — composition finale : feu dans la cheminée, grimoire en rayonnage, cartothèque murale */
.lab-shelf--right{visibility:hidden}
.lab-map-wall{
  position:absolute;
  z-index:3;
  right:.6%;
  top:9%;
  width:22.5%;
  height:47%;
  overflow:hidden;
  border:7px solid #30232a;
  background:
    linear-gradient(90deg,#3a2830,#5c4041 4%,#38282d 8%,#38282d 92%,#5b3d3e 96%,#2e2229),
    #2b2028;
  box-shadow:0 18px 32px #0009,inset 0 0 0 2px #9b6c7255;
}
.lab-map-wall:before{
  content:"";
  position:absolute;
  inset:12px;
  border:2px solid #b58a70;
  background:
    radial-gradient(circle at 28% 34%,transparent 0 13%,#6e514a22 13.5% 14%,transparent 14.5%),
    radial-gradient(circle at 68% 65%,transparent 0 19%,#6e514a22 19.5% 20%,transparent 20.5%),
    repeating-linear-gradient(25deg,transparent 0 23px,#795b5220 24px 25px),
    repeating-linear-gradient(-32deg,transparent 0 31px,#795b5220 32px 33px),
    #b89a76;
  box-shadow:inset 0 0 38px #3b1e1a66;
}
.lab-map-wall:after{
  content:"CARTOGRAPHIA • WIZARDARING";
  position:absolute;
  left:18px;
  bottom:15px;
  color:#38262a;
  font:800 8px var(--mono);
  letter-spacing:.12em;
  opacity:.8;
}
.lab-map-paper{
  position:absolute;
  inset:28px 22px 32px;
  z-index:2;
  border:1px solid #70534a;
  background:
    radial-gradient(circle at 18% 76%,#6d8c6a 0 2%,transparent 2.5%),
    radial-gradient(circle at 72% 24%,#7c5a54 0 1.5%,transparent 2%),
    linear-gradient(34deg,transparent 0 45%,#73594f 45.5% 46%,transparent 46.5% 100%),
    linear-gradient(-22deg,transparent 0 58%,#73594f 58.5% 59%,transparent 59.5%),
    #c8ac83;
  box-shadow:inset 0 0 30px #4b302555;
  transform:rotate(-1.2deg);
}
.lab-map-paper:before,.lab-map-paper:after{
  content:"";
  position:absolute;
  background:#5f4b43;
  opacity:.72;
}
.lab-map-paper:before{left:9%;top:18%;width:76%;height:2px;transform:rotate(17deg);box-shadow:0 34px #5f4b43,0 76px #5f4b43}
.lab-map-paper:after{left:27%;top:7%;width:2px;height:82%;transform:rotate(25deg);box-shadow:34px 0 #5f4b43,76px 0 #5f4b43}
.lab-map-compass{
  position:absolute;
  z-index:3;
  right:13%;
  top:13%;
  width:52px;
  height:52px;
  display:grid;
  place-items:center;
  border:2px solid #624c43;
  border-radius:50%;
  color:#6b4e45;
  font-size:24px;
  background:#d5b88d;
  box-shadow:0 5px 12px #2a181555;
}
.lab-map-route{
  position:absolute;
  z-index:3;
  left:15%;
  bottom:25%;
  width:58%;
  height:3px;
  background:#724b46;
  transform:rotate(-17deg);
  box-shadow:0 -20px 0 -1px #724b46,0 20px 0 -1px #724b46;
  opacity:.8;
}

.lab-cauldron{
  left:4.9%;
  bottom:24%;
  z-index:10;
}
.lab-cauldron-flame{
  position:absolute;
  z-index:11;
  left:5.45%;
  bottom:23.5%;
  width:58px;
  height:55px;
  border-radius:55% 45% 50% 50%;
  background:radial-gradient(ellipse at 50% 78%,#fff7ae 0 8%,#ffd45c 15%,#ff7137 42%,#9f3154 68%,transparent 71%);
  filter:drop-shadow(0 0 16px #ff7a3d);
  transform:rotate(2deg);
  pointer-events:none;
  animation:lab-fire-flicker 1.2s ease-in-out infinite alternate;
}
.lab-grimoire-shelf{
  left:20%;
  top:26%;
  bottom:auto;
  width:44px;
  height:70px;
  z-index:7;
  transform:rotate(-2deg);
}
.lab-hotspot--grimoire{
  left:19%;
  top:30%;
  bottom:auto;
}
.lab-hotspot--cartography{
  right:9%;
  top:27%;
  bottom:auto;
}
.lab-hotspot--forge{
  left:8.5%;
  top:auto;
  bottom:30%;
}

@media(max-width:980px){
  .lab-map-wall{right:2%;top:11%;width:24%;height:44%}
  .lab-cauldron{left:4%;bottom:31%}
  .lab-cauldron-flame{left:4.7%;bottom:30.5%;transform:scale(.9)}
  .lab-grimoire-shelf{left:18%;top:27%}
  .lab-hotspot--grimoire{left:17%;top:31%}
  .lab-hotspot--cartography{right:7%;top:29%}
}
@media(max-width:650px){
  .lab-shelf--right{visibility:visible}
  .lab-map-wall{right:4%;top:10%;width:25%;height:38%;opacity:.9}
  .lab-cauldron{left:3%;bottom:24%;width:94px;height:58px}
  .lab-cauldron-flame{left:3.6%;bottom:23.5%;width:46px;height:45px}
  .lab-grimoire-shelf{left:17%;top:29%;width:34px;height:56px;transform:scale(.78) rotate(-2deg)}
  .lab-hotspot--grimoire{left:16%;top:33%}
  .lab-hotspot--cartography{right:7%;top:31%}
}










/* LAB 4.8 — bibliothèque enrichie + chaudron abaissé */
.lab-library-row{display:none!important}

/* On masque les anciennes bouteilles génériques de l'étagère gauche : elles donnaient l'effet flottant. */
.lab-shelf--left>.lab-bottle{display:none!important}

.lab-shelf--left{
  left:3%;
  top:6%;
  width:29%;
  height:57%;
  overflow:hidden;
  border:1px solid #2b1d25;
  box-shadow:inset 0 0 0 8px #21131b,0 22px 34px #0009;
  background:
    linear-gradient(90deg,#1b1017 0 12px,transparent 12px calc(100% - 12px),#1b1017 calc(100% - 12px)),
    linear-gradient(#2b1b24,#2b1b24) 0 0/100% 8px no-repeat,
    linear-gradient(#2b1b24,#2b1b24) 0 100%/100% 8px no-repeat,
    linear-gradient(180deg,#a2677b 0 18%,#7a4a5d 19% 58%,#4b2d3a 59% 100%) 0 22%/100% 15px no-repeat,
    linear-gradient(180deg,#a2677b 0 18%,#7a4a5d 19% 58%,#4b2d3a 59% 100%) 0 46%/100% 15px no-repeat,
    linear-gradient(180deg,#a2677b 0 18%,#7a4a5d 19% 58%,#4b2d3a 59% 100%) 0 70%/100% 15px no-repeat,
    linear-gradient(180deg,#a2677b 0 18%,#7a4a5d 19% 58%,#4b2d3a 59% 100%) 0 94%/100% 15px no-repeat,
    linear-gradient(180deg,#3a2732 0,#24161f 100%);
}
.lab-shelf--left:before,
.lab-shelf--left:after{
  display:none!important;
}

.lab-library-book,
.lab-library-potion,
.lab-library-relic,
.lab-library-vine,
.lab-shelf--left .lab-grimoire-shelf{z-index:6}

/* Livres plus denses : chaque livre principal génère un second dos adjacent. */
.lab-library-book{
  width:18px;
  border:2px solid #654556;
  border-radius:2px 3px 2px 2px;
  box-shadow:0 7px 10px #0008,inset 2px 0 #d19aaa33;
}
.lab-library-book:before{
  content:"";
  display:block!important;
  position:absolute;
  left:19px;
  bottom:0;
  width:12px;
  height:88%;
  border:2px solid #5f4250;
  border-radius:2px;
  background:linear-gradient(90deg,#201724,#4c3143 38%,#7d5267 78%,#241823);
  box-shadow:0 6px 8px #0007,inset 2px 0 #e1afbd22;
}
.lab-library-book:after{
  content:"";
  position:absolute;
  left:4px;right:4px;top:12px;height:2px;
  background:#d3a1b033;
  box-shadow:0 12px #d3a1b033,0 24px #d3a1b033;
}

/* Rangée 1 */
.lab-library-book.book-a{left:8%;top:calc(22% - 62px);bottom:auto;height:62px;transform:rotate(-3deg);background:linear-gradient(90deg,#20152a,#51306e 30%,#8d4f9d 80%,#241528)}
.lab-library-book.book-b{left:24%;top:calc(22% - 76px);bottom:auto;height:76px;transform:rotate(1deg);background:linear-gradient(90deg,#261728,#5c2948 28%,#9a5669 82%,#29162a)}
.lab-library-book.book-c{left:39%;top:calc(22% - 64px);bottom:auto;height:64px;transform:rotate(-1deg);background:linear-gradient(90deg,#1c2330,#304a69 35%,#567da0 82%,#1c2431)}

/* Rangée 2 */
.lab-library-book.book-d{left:8%;top:calc(46% - 60px);bottom:auto;height:60px;transform:rotate(-4deg);background:linear-gradient(90deg,#25152b,#69347c 30%,#a05ac0 82%,#26142b)}
.lab-library-book.book-e{left:22%;top:calc(46% - 74px);bottom:auto;height:74px;transform:rotate(2deg);background:linear-gradient(90deg,#211a27,#5b4931 28%,#8b6d46 82%,#241a27)}
.lab-library-book.book-f{left:37%;top:calc(46% - 61px);bottom:auto;height:61px;transform:rotate(-2deg);background:linear-gradient(90deg,#20202c,#384d63 30%,#657f9b 82%,#20202b)}

/* Rangée 3 */
.lab-library-book.book-g{left:8%;top:calc(70% - 64px);bottom:auto;height:64px;transform:rotate(2deg);background:linear-gradient(90deg,#171f29,#345047 30%,#63836a 82%,#182229)}
.lab-library-book.book-h{left:22%;top:calc(70% - 78px);bottom:auto;height:78px;transform:rotate(-1deg);background:linear-gradient(90deg,#251724,#6c334b 30%,#a15c73 82%,#281725)}
.lab-library-book.book-i{left:38%;top:calc(70% - 59px);bottom:auto;height:59px;transform:none;background:linear-gradient(90deg,#211a27,#66532e 30%,#9a7d48 82%,#241b28)}

/* Rangée 4 */
.lab-library-book.book-j{left:10%;top:calc(94% - 60px);bottom:auto;height:60px;transform:rotate(-2deg);background:linear-gradient(90deg,#1c2330,#304a69 35%,#567da0 82%,#1c2431)}
.lab-library-book.book-k{display:block!important;left:25%;top:calc(94% - 72px);bottom:auto;height:72px;transform:rotate(1deg);background:linear-gradient(90deg,#281828,#713a50 30%,#a46478 82%,#281828)}
.lab-library-book.book-l{display:block!important;left:41%;top:calc(94% - 55px);bottom:auto;height:55px;transform:rotate(-1deg);background:linear-gradient(90deg,#241b27,#5b4a32 30%,#927348 82%,#241b27)}

/* Potions et artefacts répartis entre les livres, comme sur la référence. */
.lab-library-potion{width:15px;border-radius:6px 6px 5px 5px;box-shadow:0 0 12px #5ee7d288}
.lab-library-potion:before{
  content:"";position:absolute;left:4px;top:-9px;width:7px;height:10px;
  border-radius:2px 2px 0 0;background:#d9bfdc;
}
.lab-library-potion.potion-a{left:67%;top:calc(22% - 31px);bottom:auto;height:31px;background:linear-gradient(90deg,#ff9b3d,#f05ab6)}
.lab-library-potion.potion-b{left:76%;top:calc(22% - 43px);bottom:auto;height:43px;background:linear-gradient(90deg,#4ce3ed,#70ee9d)}
.lab-library-potion.potion-c{left:69%;top:calc(46% - 27px);bottom:auto;height:27px;background:linear-gradient(90deg,#b65bea,#5a91ff)}
.lab-library-potion.potion-d{left:79%;top:calc(46% - 40px);bottom:auto;height:40px;background:linear-gradient(90deg,#d5ef67,#54d98c)}
.lab-library-potion.potion-e{left:66%;top:calc(70% - 34px);bottom:auto;height:34px;background:linear-gradient(90deg,#f29c42,#ef58b8)}
.lab-library-potion.potion-f{left:77%;top:calc(70% - 42px);bottom:auto;height:42px;background:linear-gradient(90deg,#48e0ed,#75ef99)}

.relic-orb{
  position:absolute;right:7%;top:10%;width:34px;height:34px;border-radius:50%;
  border:2px solid #67507e;
  background:radial-gradient(circle at 38% 32%,#fff 0 5%,#97f6e5 12%,#7946c4 48%,#20122c 76%);
  box-shadow:0 0 18px #7cebd88f;
}
.relic-orb:before{
  content:"";position:absolute;left:8px;right:8px;bottom:-9px;height:8px;border-radius:50%;
  background:#2c2231;border:1px solid #5d486b;
}
.relic-crystal{
  position:absolute;right:35%;top:58%;width:24px;height:38px;
  clip-path:polygon(50% 0,100% 37%,78% 100%,22% 100%,0 37%);
  background:linear-gradient(135deg,#e8fff9,#63e7d6 36%,#7556e7 72%,#24173b);
  filter:drop-shadow(0 0 10px #69e9d59c);
}
.lab-library-vine{
  position:absolute;left:-6px;right:auto;top:-2px;width:52px;height:165px;
  background:
    radial-gradient(ellipse at 24% 8%,#6add72 0 15%,transparent 16%),
    radial-gradient(ellipse at 66% 20%,#4fc66b 0 15%,transparent 16%),
    radial-gradient(ellipse at 28% 35%,#72db75 0 15%,transparent 16%),
    radial-gradient(ellipse at 70% 52%,#56c865 0 15%,transparent 16%),
    radial-gradient(ellipse at 30% 68%,#6bd77b 0 15%,transparent 16%),
    linear-gradient(82deg,transparent 47%,#476c45 48% 52%,transparent 53%);
  opacity:.9;z-index:7;pointer-events:none;
}

/* Grimoire clairement posé sur la 2e étagère. */
.lab-shelf--left .lab-grimoire-shelf{
  left:53%;top:calc(46% - 84px);bottom:auto;width:48px;height:84px;z-index:8;
  transform:rotate(-1deg);
  background:linear-gradient(90deg,#211029,#75377d 55%,#331641);
  border:3px solid #b466cb;
  box-shadow:0 8px 14px #000b,0 0 17px #a952d27a;
}

/* Hotspot juste à droite du grimoire, sans chevaucher le livre. */
.lab-hotspot--grimoire{
  left:25.9%;
  top:28.5%;
  bottom:auto;
  width:48px;
  height:48px;
  opacity:1;
  pointer-events:auto;
}
.lab-hotspot--grimoire small{display:block!important}

/* Chaudron encore un peu plus bas dans l'âtre. */
.lab-cauldron{left:4.9%;bottom:8.5%}
.lab-cauldron-flame{left:5.45%;bottom:8%;z-index:12}
.lab-hotspot--forge{left:8.5%;bottom:31.5%}

/* Cartothèque */
.lab-hotspot--cartography{right:4%;top:16%;bottom:auto}

@media(max-width:980px){
  .lab-shelf--left{left:2%;width:30%}
  .lab-shelf--left .lab-grimoire-shelf{left:52%;top:29.5%}
  .lab-hotspot--grimoire{left:24.5%;top:29%}
  .lab-cauldron{left:4%;bottom:10%}
  .lab-cauldron-flame{left:4.7%;bottom:9.5%}
}
@media(max-width:650px){
  .lab-shelf--left{width:32%;height:51%}
  .lab-library-vine,.lab-library-relic{display:none!important}
  .lab-shelf--left .lab-grimoire-shelf{left:50%;top:30%;width:38px;height:64px;transform:rotate(-1deg)}
  .lab-hotspot--grimoire{left:23%;top:30%;width:43px;height:43px}
  .lab-hotspot--cartography{right:3%;top:19%}
  .lab-cauldron{left:3%;bottom:8%}
  .lab-cauldron-flame{left:3.6%;bottom:7.5%}
}
/* END LAB 4.8 */


/* V1.3 — Astral Atlas / Univers */
.astral-atlas{
  --atlas-far-x:0px;--atlas-far-y:0px;--atlas-near-x:0px;--atlas-near-y:0px;
  position:relative;min-height:760px;overflow:hidden;isolation:isolate;
  border:1px solid #554366;
  background:
    radial-gradient(circle at 50% 48%,#32144c 0 8%,#1a1732 24%,#0d1423 49%,#070c15 78%),
    linear-gradient(180deg,#0a101c,#060a12);
  box-shadow:inset 0 0 120px #02050bbf,0 34px 90px #0008;
}
.astral-atlas:before{
  content:"";position:absolute;inset:12px;z-index:18;pointer-events:none;
  border:1px solid #ad78c429;
  box-shadow:inset 0 0 34px #a76dc30b;
}
.astral-atlas:after{
  content:"";position:absolute;inset:0;z-index:17;pointer-events:none;
  background:
    radial-gradient(circle at var(--magic-x,50%) var(--magic-y,50%),#be78e524 0,transparent 24%),
    linear-gradient(180deg,#0000 58%,#03071180 100%);
}
.atlas-stars{position:absolute;inset:-8%;pointer-events:none;z-index:1;will-change:transform}
.atlas-stars--far{
  opacity:.52;transform:translate3d(var(--atlas-far-x),var(--atlas-far-y),0);
  background-image:
    radial-gradient(circle,#d7ccff 0 1px,transparent 1.4px),
    radial-gradient(circle,#7fe6df 0 1px,transparent 1.5px),
    radial-gradient(circle,#fff 0 .8px,transparent 1.2px);
  background-size:113px 97px,167px 149px,73px 131px;
  background-position:17px 29px,61px 13px,31px 71px;
  animation:atlasStarDrift 24s linear infinite alternate;
}
.atlas-stars--near{
  opacity:.7;z-index:2;transform:translate3d(var(--atlas-near-x),var(--atlas-near-y),0);
  background-image:
    radial-gradient(circle,#e3b6ff 0 1.2px,transparent 1.8px),
    radial-gradient(circle,#9ff7ef 0 1px,transparent 1.7px);
  background-size:211px 181px,257px 223px;
  background-position:37px 19px,97px 113px;
  filter:drop-shadow(0 0 5px #c68aea);
  animation:atlasStarPulse 7s ease-in-out infinite;
}
.atlas-nebula{position:absolute;border-radius:50%;filter:blur(55px);pointer-events:none;z-index:2;mix-blend-mode:screen;opacity:.2}
.atlas-nebula--violet{width:46%;height:42%;left:12%;top:12%;background:#8b2ee0;animation:atlasNebula 12s ease-in-out infinite alternate}
.atlas-nebula--cyan{width:34%;height:32%;right:7%;bottom:8%;background:#25c9c8;animation:atlasNebula 15s ease-in-out -5s infinite alternate}
.atlas-guardian{position:absolute;z-index:2;left:50%;top:50%;width:min(540px,46%);transform:translate(-50%,-48%);opacity:.055;pointer-events:none;filter:grayscale(1) brightness(2.2) contrast(1.2) drop-shadow(0 0 45px #c278ee)}
.atlas-guardian img{position:static!important;width:100%!important;height:auto!important;max-width:none!important;transform:none!important;filter:none!important;object-fit:contain!important}

.atlas-routes{position:absolute;inset:7% 4% 6%;width:92%;height:87%;z-index:5;overflow:visible;pointer-events:none;filter:drop-shadow(0 0 7px #7d55a155)}
.atlas-route{fill:none;stroke:#8d70a36b;stroke-width:1.4;stroke-dasharray:5 10;vector-effect:non-scaling-stroke;transition:stroke .3s,stroke-width .3s,filter .3s,opacity .3s;animation:atlasRouteFlow 12s linear infinite}
.atlas-route:nth-child(even){animation-direction:reverse;animation-duration:15s}
.astral-atlas[data-active-route] .atlas-route{opacity:.24}
.astral-atlas[data-active-route="seuil"] .atlas-route--seuil,
.astral-atlas[data-active-route="forge"] .atlas-route--forge,
.astral-atlas[data-active-route="artefacts"] .atlas-route--artefacts,
.astral-atlas[data-active-route="grimoire"] .atlas-route--grimoire,
.astral-atlas[data-active-route="horizon"] .atlas-route--horizon{
  opacity:1;stroke:#d099ed;stroke-width:2.2;filter:url(#atlasGlow);
}
.astral-atlas[data-active-route="lab"] .atlas-route--lab{opacity:1;stroke:#7fe6df;stroke-width:2.2;filter:url(#atlasGlow)}

.atlas-core{position:absolute;z-index:9;left:50%;top:51%;width:176px;height:176px;transform:translate(-50%,-50%);display:grid;place-items:center;pointer-events:none}
.atlas-core-ring{position:absolute;border-radius:50%;border:1px solid #a768c285}
.atlas-core-ring--outer{inset:-45px;border-style:dashed;animation:atlasSpin 23s linear infinite}
.atlas-core-ring--mid{inset:-23px;border-color:#65d9d36b;border-style:dotted;animation:atlasSpin 16s linear infinite reverse}
.atlas-core-ring--inner{inset:-8px;border-color:#d39be6a1;box-shadow:0 0 35px #9b54bd2e,inset 0 0 26px #7dded422;animation:atlasBreath 5s ease-in-out infinite}
.atlas-core-orbit{position:absolute;border-radius:50%;border:1px solid #8a60a047}
.atlas-core-orbit--one{inset:-64px;animation:atlasSpin 31s linear infinite}.atlas-core-orbit--two{inset:-84px;animation:atlasSpin 39s linear infinite reverse}
.atlas-core-orbit i{position:absolute;width:6px;height:6px;border-radius:50%;left:50%;top:-3px;background:#c78ee8;box-shadow:0 0 13px #c78ee8}
.atlas-core-orbit--two i{background:#7be1da;box-shadow:0 0 13px #7be1da;left:18%;top:12%}
.atlas-core-seal{width:112px;height:112px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle,#1d2340 0,#111528 55%,#090d18 100%);box-shadow:0 0 0 1px #c38ade8c,0 0 24px #a459d97d,0 0 74px #6b35a277}
.atlas-core-seal img{position:static!important;width:76px!important;height:76px!important;max-width:none!important;transform:none!important;filter:drop-shadow(0 0 15px #b562dd)!important;object-fit:contain!important}
.atlas-core small{position:absolute;top:calc(100% + 28px);white-space:nowrap;color:#b9a5c5;font:800 9px var(--mono);letter-spacing:.16em}

.atlas-node{
  --node:#c68ae5;--node-rgb:198,138,229;
  position:absolute!important;z-index:12!important;width:92px!important;height:92px!important;
  border:0!important;border-radius:50%!important;background:transparent!important;box-shadow:none!important;
  display:block!important;color:#fff!important;overflow:visible!important;
  transform:none!important;transition:transform .28s cubic-bezier(.2,.8,.2,1),filter .28s!important;
}
.atlas-node:after{content:""!important;position:absolute!important;inset:-13px!important;border:1px solid rgba(var(--node-rgb),.2)!important;border-radius:50%!important;background:none!important;padding:0!important;opacity:.45!important;transform:scale(.86)!important;transition:transform .28s,opacity .28s!important;pointer-events:none!important}
.atlas-node:hover,.atlas-node:focus-visible{transform:translateY(-5px) scale(1.07)!important;filter:brightness(1.14)}
.atlas-node:hover:after,.atlas-node:focus-visible:after{opacity:1!important;transform:scale(1.08)!important}
.atlas-node.is-opening{animation:atlasNodeArrival .86s ease-in-out!important}
.atlas-node-scene{position:absolute;inset:8px;border-radius:50%;display:grid;place-items:center;background:
  radial-gradient(circle at 50% 38%,rgba(var(--node-rgb),.24),transparent 47%),
  linear-gradient(145deg,#172139,#080d17);
  border:1px solid rgba(var(--node-rgb),.72);box-shadow:inset 0 0 22px rgba(var(--node-rgb),.2),0 0 24px rgba(var(--node-rgb),.2);
  overflow:hidden;
}
.atlas-node-scene:before{font:900 30px/1 var(--display);color:var(--node);text-shadow:0 0 14px var(--node);position:relative;z-index:2}
.atlas-node-scene:after{content:"";position:absolute;width:58px;height:58px;border:1px solid rgba(var(--node-rgb),.35);border-radius:50%;animation:atlasNodeOrbit 8s linear infinite}
.atlas-node-scene i{position:absolute;width:7px;height:7px;border-radius:50%;background:var(--node);box-shadow:0 0 13px var(--node);left:50%;top:7px;animation:atlasNodeSpark 3.8s ease-in-out infinite}
.atlas-node-copy{position:absolute;left:50%;top:103px;transform:translateX(-50%);min-width:170px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:2px;text-shadow:0 2px 8px #000}
.atlas-node-copy small{font:900 8px var(--mono);letter-spacing:.14em;color:var(--node)}
.atlas-node-copy strong{font:850 16px/1.08 var(--display);letter-spacing:-.025em;color:#f4eef8;white-space:nowrap}
.atlas-node-copy em{font:700 9px/1.4 var(--mono);letter-spacing:.035em;font-style:normal;color:#aeb8c8;opacity:0;transform:translateY(-3px);transition:opacity .2s,transform .2s;white-space:nowrap}
.atlas-node:hover .atlas-node-copy em,.atlas-node:focus-visible .atlas-node-copy em{opacity:1;transform:translateY(1px)}

.atlas-node--seuil{left:9%;top:38%;--node:#c58be8;--node-rgb:197,139,232}
.atlas-node--forge{left:26%;top:13%;--node:#ff9a59;--node-rgb:255,154,89}
.atlas-node--artefacts{right:26%;top:14%;--node:#d57bf0;--node-rgb:213,123,240}
.atlas-node--grimoire{right:8%;top:41%;--node:#b98af0;--node-rgb:185,138,240}
.atlas-node--horizon{right:25%;bottom:12%;--node:#88bfff;--node-rgb:136,191,255}
.atlas-node--lab{left:23%;bottom:13%;--node:#72e5da;--node-rgb:114,229,218}
.atlas-node--seuil .atlas-node-scene:before{content:"◈"}.atlas-node--forge .atlas-node-scene:before{content:"✦"}.atlas-node--artefacts .atlas-node-scene:before{content:"◇"}.atlas-node--grimoire .atlas-node-scene:before{content:"▤"}.atlas-node--horizon .atlas-node-scene:before{content:"⌁"}.atlas-node--lab .atlas-node-scene:before{content:"✧"}
.atlas-node--forge .atlas-node-scene{background:radial-gradient(circle at 50% 70%,#ff7b383b,transparent 43%),linear-gradient(145deg,#2c1a26,#0c0d17)}
.atlas-node--lab .atlas-node-scene{background:radial-gradient(circle at 50% 45%,#53e4d534,transparent 46%),linear-gradient(145deg,#102c34,#080d17)}

.atlas-legend{position:absolute;z-index:19;left:22px;bottom:20px;display:flex;gap:19px;color:#78869a;font:800 8px var(--mono);letter-spacing:.08em}
.atlas-legend span{display:flex;align-items:center;gap:7px}.atlas-legend i{width:6px;height:6px;border-radius:50%;background:#b77bdd;box-shadow:0 0 7px #b77bdd}.atlas-legend span:last-child i{background:#72e5da;box-shadow:0 0 7px #72e5da}

.astral-atlas.quest-awakened .atlas-core-ring--outer{animation:atlasSpin 3s linear infinite,atlasAwakenRing 1.2s ease-out}
.astral-atlas.quest-awakened .atlas-core-seal{animation:atlasSealFlash 1.15s ease-out}
.astral-atlas.quest-awakened .atlas-route{stroke:#c989e8;opacity:.9;animation-duration:2.2s}

@keyframes atlasSpin{to{transform:rotate(360deg)}}
@keyframes atlasBreath{0%,100%{transform:scale(.96);opacity:.55}50%{transform:scale(1.05);opacity:1}}
@keyframes atlasRouteFlow{to{stroke-dashoffset:-150}}
@keyframes atlasStarDrift{to{background-position:47px 61px,23px 49px,71px 19px}}
@keyframes atlasStarPulse{0%,100%{opacity:.48}50%{opacity:.8}}
@keyframes atlasNebula{0%{transform:translate(-2%,-2%) scale(.92)}100%{transform:translate(5%,4%) scale(1.08)}}
@keyframes atlasNodeOrbit{to{transform:rotate(360deg)}}
@keyframes atlasNodeSpark{0%,100%{opacity:.35;transform:translate(-50%,0) scale(.7)}50%{opacity:1;transform:translate(-50%,4px) scale(1.2)}}
@keyframes atlasNodeArrival{0%{transform:scale(1)}35%{transform:scale(1.28);filter:brightness(1.8)}70%{transform:scale(.94)}100%{transform:scale(1.02)}}
@keyframes atlasAwakenRing{0%{opacity:.15;scale:.72}55%{opacity:1;scale:1.18}100%{scale:1}}
@keyframes atlasSealFlash{0%{filter:brightness(.7)}42%{filter:brightness(2);box-shadow:0 0 0 1px #e6bfff,0 0 60px #ca76f5,0 0 120px #6de2d6}100%{filter:none}}

@media(max-width:980px){
  .astral-atlas{min-height:710px}
  .atlas-core{width:146px;height:146px}.atlas-core-seal{width:96px;height:96px}.atlas-core-seal img{width:65px!important;height:65px!important}
  .atlas-node{width:78px!important;height:78px!important}.atlas-node-copy{top:88px;min-width:145px}.atlas-node-copy strong{font-size:14px}.atlas-node-copy em{display:none}
  .atlas-node--seuil{left:7%}.atlas-node--grimoire{right:6%}.atlas-routes{inset:8% 2% 7%;width:96%;height:85%}
}
@media(max-width:700px){
  .astral-atlas{min-height:860px}
  .atlas-guardian{width:72%;opacity:.045}.atlas-routes{display:none}
  .atlas-core{top:49%;width:130px;height:130px}.atlas-core-ring--outer{inset:-35px}.atlas-core-ring--mid{inset:-18px}.atlas-core-orbit--one{inset:-48px}.atlas-core-orbit--two{inset:-62px}.atlas-core small{top:calc(100% + 21px)}
  .atlas-node{width:70px!important;height:70px!important}.atlas-node-copy{top:79px;min-width:130px}.atlas-node-copy strong{font-size:13px}.atlas-node-copy small{font-size:7px}
  .atlas-node--seuil{left:10%;top:21%}.atlas-node--forge{left:auto;right:11%;top:19%}.atlas-node--artefacts{left:10%;right:auto;top:43%}.atlas-node--grimoire{right:11%;top:42%}.atlas-node--lab{left:10%;bottom:14%}.atlas-node--horizon{right:11%;bottom:13%}
  .atlas-legend{left:15px;bottom:14px;gap:10px;font-size:7px}.atlas-legend span:last-child{display:none}
}
@media(max-width:430px){
  .astral-atlas{min-height:820px}
  .atlas-node--seuil,.atlas-node--artefacts,.atlas-node--lab{left:7%}
  .atlas-node--forge,.atlas-node--grimoire,.atlas-node--horizon{right:7%}
  .atlas-node-copy{min-width:112px}.atlas-node-copy strong{font-size:12px}
}
@media(prefers-reduced-motion:reduce){
  .atlas-stars,.atlas-nebula,.atlas-route,.atlas-core-ring,.atlas-core-orbit,.atlas-node-scene:after,.atlas-node-scene i,.astral-atlas.quest-awakened .atlas-core-ring--outer,.astral-atlas.quest-awakened .atlas-core-seal{animation:none!important}
  .atlas-stars{transform:none!important}.atlas-node,.atlas-node:after,.atlas-route{transition:none!important}
}
