:root{color-scheme:dark;--np-bg:#070b12;--np-panel:rgba(11,19,31,.9);--np-line:rgba(143,216,255,.18);--np-text:#f4f7fb;--np-muted:rgba(244,247,251,.68);--np-accent:#8fd8ff;--np-accent2:#7fffd4}
*{box-sizing:border-box}html{background:var(--np-bg)}body.nexus-page-public{margin:0;min-height:100vh;background:radial-gradient(circle at 76% 18%,rgba(82,56,140,.3),transparent 32%),radial-gradient(circle at 14% 30%,rgba(18,120,170,.16),transparent 30%),linear-gradient(145deg,#05080d,#0b1521 55%,#080610);color:var(--np-text);font:16px/1.65 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.nexus-page-bar{position:sticky;top:0;z-index:20;border-bottom:1px solid var(--np-line);background:rgba(5,9,15,.88);backdrop-filter:blur(18px)}.nexus-page-bar__inner{width:min(1180px,calc(100% - 32px));min-height:68px;margin:auto;display:flex;align-items:center;gap:24px}.nexus-page-brand{display:flex;align-items:center;gap:10px;color:var(--np-text);text-decoration:none;white-space:nowrap}.nexus-page-brand__mark{width:34px;height:34px;display:grid;place-items:center;border:1px solid rgba(127,255,212,.42);border-radius:5px;background:rgba(127,255,212,.08);color:var(--np-accent2);font-weight:800}.nexus-page-brand span:last-child{display:grid;line-height:1.1}.nexus-page-brand small{margin-top:4px;color:var(--np-muted);font-size:10px;text-transform:uppercase;letter-spacing:.16em}.nexus-page-nav{display:flex;gap:4px;align-items:center;overflow:auto;flex:1}.nexus-page-nav a{padding:8px 11px;border:1px solid transparent;border-radius:5px;color:var(--np-muted);text-decoration:none;white-space:nowrap}.nexus-page-nav a:hover,.nexus-page-nav a.is-current{color:var(--np-text);border-color:var(--np-line);background:rgba(143,216,255,.08)}.nexus-page-role{padding:5px 9px;border:1px solid var(--np-line);border-radius:999px;color:var(--np-accent);font-size:12px}.nexus-page-shell{width:min(1060px,calc(100% - 32px));margin:0 auto;padding:54px 0 90px}.nexus-page-preview{margin-bottom:20px;padding:10px 14px;border:1px solid rgba(255,204,102,.32);border-radius:5px;background:rgba(255,204,102,.08);color:#ffe0a3;font-size:13px}.nexus-page-hero{padding:18px 0 34px;border-bottom:1px solid var(--np-line)}.nexus-page-hero p{margin:0 0 8px;color:var(--np-accent);text-transform:uppercase;letter-spacing:.16em;font-size:12px}.nexus-page-hero h1{margin:0;font-size:clamp(38px,7vw,76px);line-height:1.02;letter-spacing:-.035em}.nexus-page-blocks{display:grid;gap:24px;padding-top:30px}.nexus-page-block{padding:clamp(20px,3vw,34px);border:1px solid var(--np-line);border-radius:5px;background:var(--np-panel);box-shadow:0 20px 70px rgba(0,0,0,.2)}.nexus-page-richtext>:first-child{margin-top:0}.nexus-page-richtext>:last-child{margin-bottom:0}.nexus-page-richtext h1,.nexus-page-richtext h2,.nexus-page-richtext h3{line-height:1.15}.nexus-page-richtext a{color:var(--np-accent)}.nexus-page-richtext table{width:100%;border-collapse:collapse}.nexus-page-richtext th,.nexus-page-richtext td{padding:8px 10px;border:1px solid var(--np-line);text-align:left}.nexus-page-gallery{display:grid;gap:22px;min-width:0;overflow:hidden}.nexus-page-gallery>.nexus-gallery-album{margin:0;min-width:0;max-width:100%}.nexus-page-gallery .nexus-gallery-carousel,.nexus-page-gallery .nexus-gallery-track{min-width:0;max-width:100%}.nexus-page-gallery .nexus-gallery-image{margin:0}.nexus-page-gallery .nexus-gallery-image img{display:block;width:100%;object-fit:cover}.nexus-page-gallery .nexus-gallery-image figcaption{display:grid;gap:3px}.nexus-page-gallery .nexus-gallery-image figcaption span,.nexus-page-muted{color:var(--np-muted)}.nexus-page-empty{text-align:center;color:var(--np-muted)}.nexus-page-public--error{display:grid;place-items:center;padding:24px}.nexus-page-error{width:min(720px,100%);padding:34px;border:1px solid var(--np-line);border-radius:5px;background:var(--np-panel)}.nexus-page-error__eyebrow{color:var(--np-accent);text-transform:uppercase;letter-spacing:.16em;font-size:12px}.nexus-page-error h1{margin:.1em 0;font-size:72px;line-height:1}.nexus-page-error p{color:var(--np-muted)}.nexus-page-error a{display:inline-flex;margin-top:10px;padding:9px 13px;border:1px solid var(--np-line);border-radius:5px;color:var(--np-text);text-decoration:none}@media(max-width:720px){.nexus-page-bar__inner{flex-wrap:wrap;padding:12px 0}.nexus-page-nav{order:3;width:100%}.nexus-page-role{margin-left:auto}.nexus-page-shell{padding-top:34px}.nexus-page-block{padding:18px}}
.nexus-page-account{margin-left:auto;display:flex;align-items:center;gap:8px;white-space:nowrap}.nexus-page-account>a{color:var(--np-text);text-decoration:none;padding:7px 10px;border:1px solid var(--np-line);border-radius:5px}.nexus-page-account>span:first-child{max-width:180px;overflow:hidden;text-overflow:ellipsis}.nexus-page-site-shell{width:min(1480px,calc(100% - 32px));position:relative;z-index:2}.nexus-pages-hero-layout{margin-top:24px;align-items:start}.nexus-pages-hero-layout .nexus-page-blocks{padding-top:0}.nexus-page-profile-block{margin:0}.nexus-page-module-slot{min-width:0}.nexus-page-site-side{position:sticky;top:92px}.nexus-page-site-side .nexus-follow-panel,.nexus-page-site-side .nexus-hero-authbar{margin-top:0;margin-bottom:16px}.nexus-page-public .nexus-hero-three-bg{position:fixed;inset:0;z-index:0}.nexus-page-public .nexus-page-bar{z-index:40}.nexus-page-public .nexus-page-shell{position:relative;z-index:2}.nexus-page-public .nexus-member-tiers-module,.nexus-page-public .nexus-gallery-module{margin-top:0}.nexus-page-public .nexus-page-blocks>.nexus-hero-cover,.nexus-page-public .nexus-page-blocks>.nexus-page-module-slot{width:100%}.nexus-page-public .nexus-page-module-slot>.nexus-member-tiers-module,.nexus-page-public .nexus-page-module-slot>.nexus-gallery-module{width:100%}@media(max-width:900px){.nexus-page-site-side{position:static}.nexus-page-account>span:first-child{display:none}}@media(max-width:720px){.nexus-page-account{margin-left:0}.nexus-page-bar__inner{gap:10px}}
/* Step 11.1: stable progressive-navigation regions. */
.nexus-page-main-region{min-width:0;display:grid;gap:24px}.nexus-page-main-region>.nexus-page-preview{margin-bottom:0}.nexus-page-main-region>.nexus-page-hero{padding-top:0}.nexus-page-main-region>.nexus-page-blocks{padding-top:0}.nexus-page-public [data-nexus-region]{min-width:0}

/* Step 11.6: visible lazy-loading state + transitions only for replaced regions. */
.nexus-site-loading{position:fixed;right:18px;bottom:18px;z-index:120;display:flex;align-items:center;gap:9px;min-height:38px;padding:8px 12px;border:1px solid var(--np-line);border-radius:5px;background:rgba(5,9,15,.92);box-shadow:0 12px 38px rgba(0,0,0,.36);backdrop-filter:blur(14px);color:var(--np-text);font-size:13px;letter-spacing:.02em;opacity:0;visibility:hidden;transform:translateY(8px);pointer-events:none;transition:opacity .14s ease,transform .14s ease,visibility 0s linear .14s}
html[data-nexus-site-navigating="1"] .nexus-site-loading,html[data-nexus-room-loading="1"] .nexus-site-loading{opacity:1;visibility:visible;transform:translateY(0);transition-delay:0s}
.nexus-site-loading__spinner{width:14px;height:14px;flex:0 0 14px;border:2px solid rgba(143,216,255,.2);border-top-color:var(--np-accent);border-radius:50%;animation:nexus-site-loader-spin .72s linear infinite}
.nexus-site-loading__text{white-space:nowrap}.nexus-site-loading[data-room-build="1"]{min-width:220px}.nexus-site-loading[data-room-build="1"] .nexus-site-loading__text{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:180px}.nexus-site-loading__room-percent{color:var(--np-accent);font-variant-numeric:tabular-nums;font-weight:700}
@keyframes nexus-site-loader-spin{to{transform:rotate(360deg)}}
.nexus-page-public [data-nexus-region]{transition:opacity .18s ease}
.nexus-page-public [data-nexus-region].nexus-region--leaving{opacity:0;transition-duration:.14s}
.nexus-page-public [data-nexus-region].nexus-region--entering{opacity:0}
@media(prefers-reduced-motion:reduce){.nexus-site-loading,.nexus-page-public [data-nexus-region]{transition:none!important}.nexus-site-loading__spinner{animation:none;border-top-color:var(--np-accent)}}

/* Nexus Video Player PageBlock (Step 7) */
.nexus-page-video-player{min-width:0;overflow:visible}
.nexus-page-video-player__shell{display:grid;gap:.65rem;min-width:0}
.nexus-page-video-player__mount{display:grid;place-items:center;width:100%;min-width:0}
.nexus-page-video-player__mount.msp-player{width:100%;max-width:1100px;margin-inline:auto}
.nexus-page-video-player__status{min-height:1.2em;color:var(--nexus-muted,#93a4b8);font-size:.82rem;text-align:center}
.nexus-page-video-player.isMounted .nexus-page-video-player__status{opacity:.75}
.nexus-page-video-player.hasError .nexus-page-video-player__status{color:#fca5a5}

/* Nexus Video Player · Step 9 mode polish */
.nexus-page-video-player__mount.msp-player{max-width:1100px}
.nexus-page-video-player.isMounted .nexus-page-video-player__status{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.nexus-page-video-player.hasDetachedPlayer{padding:0;border-color:transparent;background:transparent;box-shadow:none}
.nexus-page-video-player.hasDetachedPlayer .nexus-page-video-player__shell{min-height:0;gap:0}
.nexus-page-video-player.hasDetachedPlayer .nexus-page-video-player__mount{min-height:0}

/* Nexus Video Player · Step 9.2 background mode */
.nexus-page-video-player.hasBackgroundPlayer{padding:0;border-color:transparent;background:transparent;box-shadow:none}
.nexus-page-video-player.hasBackgroundPlayer .nexus-page-video-player__shell{min-height:0;gap:0}
.nexus-page-video-player.hasBackgroundPlayer .nexus-page-video-player__mount{min-height:0}


/* Nexus Video Player · Step 9.5 persistent media sessions.
   Provider iframes live in stable body-level hosts. The PageBlock only reserves
   an anchor rectangle, so page.main may be replaced without touching a running
   Detached/Background provider instance. */
.nexus-global-media-player-host{box-sizing:border-box}
.nexus-global-media-player-host[data-mode="embed"]{will-change:left,top,width}
.nexus-page-video-player__anchor{width:100%;max-width:1100px;margin-inline:auto;aspect-ratio:16/9;border-radius:16px;background:rgba(6,11,18,.34)}
.nexus-page-video-player__anchor.isPortrait{width:min(100%,470px)}
.nexus-page-video-player.hasDetachedPlayer,.nexus-page-video-player.hasBackgroundPlayer,.nexus-page-video-player.hasFullscreenPlayer{padding:0;border-color:transparent;background:transparent;box-shadow:none}
.nexus-page-video-player.hasDetachedPlayer .nexus-page-video-player__shell,.nexus-page-video-player.hasBackgroundPlayer .nexus-page-video-player__shell,.nexus-page-video-player.hasFullscreenPlayer .nexus-page-video-player__shell{min-height:0;gap:0}
.nexus-page-video-player.hasDetachedPlayer .nexus-page-video-player__anchor,.nexus-page-video-player.hasBackgroundPlayer .nexus-page-video-player__anchor,.nexus-page-video-player.hasFullscreenPlayer .nexus-page-video-player__anchor{height:0!important;min-height:0!important;aspect-ratio:auto!important;background:transparent}
.nexus-page-video-player.hasPersistentPlayer{overflow:visible}
.nexus-page-video-player__persistent-choice{display:grid;gap:10px;padding:18px;border:1px solid rgba(143,216,255,.2);border-radius:12px;background:rgba(5,11,18,.72);box-shadow:0 16px 46px rgba(0,0,0,.24)}
.nexus-page-video-player__persistent-choice strong{font-size:1rem;color:var(--np-text)}
.nexus-page-video-player__persistent-choice p{margin:0;color:var(--np-muted);font-size:.9rem}
.nexus-page-video-player__persistent-current{color:var(--np-accent);font-size:.86rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nexus-page-video-player__takeover{justify-self:start;min-height:38px;padding:8px 13px;border:1px solid rgba(127,255,212,.35);border-radius:8px;background:rgba(127,255,212,.08);color:var(--np-text);font:inherit;font-weight:750;cursor:pointer}
.nexus-page-video-player__takeover:hover{background:rgba(127,255,212,.14);border-color:rgba(127,255,212,.58)}
.nexus-page-video-player__persistent-note{padding:12px 14px;border:1px dashed rgba(143,216,255,.22);border-radius:9px;color:var(--np-muted);font-size:.86rem;text-align:center}
body.msp-has-video-background .nexus-global-media-player-host .msp-stage--background{z-index:1}
body.msp-has-video-background .nexus-page-shell{position:relative;z-index:2}
body.msp-has-video-background .nexus-page-bar{z-index:40}


/* Step 10.1: Gallery preview buttons + fullscreen lightbox */
.nexus-gallery-image__preview{display:block;width:100%;padding:0;border:0;background:transparent;cursor:zoom-in;text-align:inherit}
.nexus-gallery-image__preview img{display:block;width:100%}
body.nexus-gallery-lightbox-open{overflow:hidden}
.nexus-gallery-lightbox[hidden]{display:none!important}
.nexus-gallery-lightbox{position:fixed;inset:0;z-index:190;background:rgba(3,7,12,.88);display:grid;place-items:center;padding:24px}
.nexus-gallery-lightbox__backdrop{position:absolute;inset:0}
.nexus-gallery-lightbox__dialog{position:relative;z-index:1;display:grid;gap:14px;width:min(1180px,100%);max-height:calc(100vh - 48px);padding:18px;border:1px solid rgba(143,216,255,.18);border-radius:18px;background:rgba(7,12,21,.96);box-shadow:0 32px 90px rgba(0,0,0,.42)}
.nexus-gallery-lightbox__image{display:block;width:100%;max-width:100%;max-height:min(78vh,920px);object-fit:contain;border-radius:14px;background:rgba(0,0,0,.32)}
.nexus-gallery-lightbox__caption{display:grid;gap:4px;color:var(--np-text,#f4f7fb)}
.nexus-gallery-lightbox__description,.nexus-gallery-lightbox__meta{opacity:.78}
.nexus-gallery-lightbox__close{position:absolute;top:12px;right:12px;width:40px;height:40px;border:1px solid rgba(143,216,255,.2);border-radius:999px;background:rgba(7,12,21,.9);color:#f4f7fb;font-size:28px;line-height:1;cursor:pointer}
.nexus-gallery-lightbox__close:hover{border-color:rgba(127,255,212,.45);background:rgba(127,255,212,.1)}

/* Step 10.11: skip layout/paint work for Page blocks that are far outside the viewport.
   The browser remembers the real block size after first reveal (auto) so warm navigation
   produces less scroll-jump while long Pages remain cheap above the fold. */
@supports (content-visibility: auto) {
  .nexus-page-public .nexus-page-blocks > [data-block-key] {
    content-visibility: auto;
    contain-intrinsic-size: auto 320px;
  }
  .nexus-page-public .nexus-page-blocks > .nexus-page-profile-block {
    contain-intrinsic-size: auto 260px;
  }
  .nexus-page-public .nexus-page-blocks > .nexus-page-module-slot,
  .nexus-page-public .nexus-page-blocks > .nexus-page-owner-dashboard {
    contain-intrinsic-size: auto 520px;
  }
  .nexus-page-public .nexus-page-blocks > .nexus-page-gallery {
    contain-intrinsic-size: auto 680px;
  }
  .nexus-page-public .nexus-page-blocks > .nexus-page-video-player {
    contain-intrinsic-size: auto 560px;
  }
}


/* Newsletter PageBlock · Step 5.5 */
.nexus-page-newsletter{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,460px);gap:28px;align-items:center;padding:28px;border:1px solid rgba(143,216,255,.18);border-radius:18px;background:linear-gradient(135deg,rgba(12,22,34,.92),rgba(7,13,22,.84));box-shadow:0 20px 58px rgba(0,0,0,.24)}
.nexus-page-newsletter__copy{min-width:0}.nexus-page-newsletter__eyebrow{display:inline-flex;align-items:center;gap:8px;margin-bottom:8px;color:var(--np-accent,#8fd8ff);font-size:.78rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase}.nexus-page-newsletter h2{margin:0 0 8px;font-size:clamp(1.35rem,2vw,2rem)}.nexus-page-newsletter__copy p{margin:0;max-width:62ch;color:var(--np-muted,#93a4b8)}
.nexus-page-newsletter__form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end}.nexus-page-newsletter__field{display:grid;gap:7px;min-width:0}.nexus-page-newsletter__field>span{font-size:.82rem;color:var(--np-muted,#93a4b8)}.nexus-page-newsletter__field input{box-sizing:border-box;width:100%;min-height:44px;padding:10px 12px;border:1px solid rgba(143,216,255,.22);border-radius:9px;background:rgba(4,9,16,.75);color:var(--np-text,#f4f7fb);font:inherit;outline:none}.nexus-page-newsletter__field input:focus{border-color:rgba(127,255,212,.68);box-shadow:0 0 0 3px rgba(127,255,212,.08)}.nexus-page-newsletter__form button{min-height:44px;padding:10px 15px;border:1px solid rgba(127,255,212,.4);border-radius:9px;background:rgba(127,255,212,.12);color:var(--np-text,#f4f7fb);font:inherit;font-weight:800;cursor:pointer;white-space:nowrap}.nexus-page-newsletter__form button:hover{background:rgba(127,255,212,.18);border-color:rgba(127,255,212,.64)}.nexus-page-newsletter__form button:disabled,.nexus-page-newsletter__field input:disabled{opacity:.62;cursor:wait}
.nexus-page-newsletter__privacy,.nexus-page-newsletter__status{grid-column:1/-1;margin:0;color:var(--np-muted,#93a4b8);font-size:.8rem}.nexus-page-newsletter__privacy{padding-top:4px}.nexus-page-newsletter__status:empty{display:none}.nexus-page-newsletter__status{padding:10px 12px;border-radius:8px;background:rgba(143,216,255,.06)}.nexus-page-newsletter__status[data-state="success"]{border:1px solid rgba(127,255,212,.28);color:#b8ffe8;background:rgba(127,255,212,.08)}.nexus-page-newsletter__status[data-state="error"]{border:1px solid rgba(252,165,165,.3);color:#fecaca;background:rgba(127,29,29,.12)}
@media(max-width:760px){.nexus-page-newsletter{grid-template-columns:1fr;padding:22px}.nexus-page-newsletter__form{grid-template-columns:1fr}.nexus-page-newsletter__form button{width:100%}}

/* Planner Step 2: optional public shell.left region. Without Planner content the
   existing two-column Pages layout remains unchanged. */
.nexus-pages-hero-layout--with-left{grid-template-columns:minmax(220px,260px) minmax(0,1fr) 310px;grid-template-areas:"left main right";gap:18px}
.nexus-pages-hero-layout--with-left>.nexus-page-site-left{grid-area:left}
.nexus-pages-hero-layout--with-left>.nexus-page-main-region{grid-area:main}
.nexus-pages-hero-layout--with-left>.nexus-page-site-side{grid-area:right}
.nexus-page-site-left{position:sticky;top:92px;min-width:0}.nexus-page-site-left.is-empty{display:none}
.nexus-planner-widget{padding:16px;border:1px solid rgba(255,255,255,.1);border-radius:5px;background:rgba(12,17,25,.82);box-shadow:0 14px 42px rgba(0,0,0,.2);backdrop-filter:blur(12px)}
.nexus-planner-widget__head{display:flex;align-items:center;gap:10px;margin-bottom:14px}.nexus-planner-widget__icon{font-size:24px;line-height:1}.nexus-planner-widget__eyebrow{text-transform:uppercase;letter-spacing:.09em;font-size:10px;opacity:.58;font-weight:800}.nexus-planner-widget__head h2{margin:2px 0 0;font-size:17px}
.nexus-planner-widget__list{list-style:none;margin:0;padding:0;display:grid;gap:10px}.nexus-planner-widget__item{display:grid;grid-template-columns:68px minmax(0,1fr);gap:10px;padding:10px 0;border-top:1px solid rgba(255,255,255,.08)}.nexus-planner-widget__item:first-child{border-top:0;padding-top:0}
.nexus-planner-widget__time{display:flex;flex-direction:column;font-size:11px;opacity:.76;text-decoration:none}.nexus-planner-widget__time strong{font-size:15px;opacity:1;margin-top:2px}.nexus-planner-widget__copy{min-width:0}.nexus-planner-widget__copy h3{margin:0;font-size:14px;line-height:1.3;overflow-wrap:anywhere}.nexus-planner-widget__copy p{margin:5px 0 0;font-size:12px;line-height:1.45;opacity:.72;overflow-wrap:anywhere}.nexus-planner-widget__empty{margin:0;font-size:12px;line-height:1.5;opacity:.68}
@media(max-width:1180px){.nexus-pages-hero-layout--with-left{grid-template-columns:minmax(0,1fr) 300px;grid-template-areas:"main right" "left right"}.nexus-page-site-left{position:static}}
@media(max-width:900px){.nexus-pages-hero-layout--with-left{grid-template-columns:1fr;grid-template-areas:"main" "left" "right"}.nexus-page-site-left{position:static}}

/* Nexus Contact V1 */
.nexus-page-contact{display:grid;grid-template-columns:minmax(0,.72fr) minmax(320px,1.28fr);gap:30px;align-items:start;padding:28px;border:1px solid rgba(143,216,255,.18);border-radius:18px;background:linear-gradient(135deg,rgba(12,22,34,.92),rgba(7,13,22,.84));box-shadow:0 20px 58px rgba(0,0,0,.24)}
.nexus-page-contact__copy{min-width:0}.nexus-page-contact__eyebrow{display:inline-flex;align-items:center;gap:8px;margin-bottom:8px;color:var(--np-accent,#8fd8ff);font-size:.78rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase}.nexus-page-contact h2{margin:0 0 8px;font-size:clamp(1.35rem,2vw,2rem)}.nexus-page-contact__copy p{margin:0;max-width:58ch;color:var(--np-muted,#93a4b8)}
.nexus-page-contact__form{display:grid;grid-template-columns:1fr 1fr;gap:12px}.nexus-page-contact__form label{display:grid;gap:7px;min-width:0}.nexus-page-contact__form label>span{font-size:.82rem;color:var(--np-muted,#93a4b8)}.nexus-page-contact__form .full{grid-column:1/-1}.nexus-page-contact__form input,.nexus-page-contact__form textarea{box-sizing:border-box;width:100%;padding:10px 12px;border:1px solid rgba(143,216,255,.22);border-radius:9px;background:rgba(4,9,16,.75);color:var(--np-text,#f4f7fb);font:inherit;outline:none}.nexus-page-contact__form input{min-height:44px}.nexus-page-contact__form textarea{resize:vertical;min-height:150px}.nexus-page-contact__form input:focus,.nexus-page-contact__form textarea:focus{border-color:rgba(127,255,212,.68);box-shadow:0 0 0 3px rgba(127,255,212,.08)}
.nexus-page-contact__actions{display:flex;justify-content:flex-end}.nexus-page-contact__actions button{min-height:44px;padding:10px 16px;border:1px solid rgba(127,255,212,.4);border-radius:9px;background:rgba(127,255,212,.12);color:var(--np-text,#f4f7fb);font:inherit;font-weight:800;cursor:pointer}.nexus-page-contact__actions button:hover{background:rgba(127,255,212,.18);border-color:rgba(127,255,212,.64)}.nexus-page-contact__actions button:disabled{opacity:.62;cursor:wait}.nexus-page-contact__honeypot{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important}
.nexus-page-contact__privacy,.nexus-page-contact__status{grid-column:1/-1;margin:0;color:var(--np-muted,#93a4b8);font-size:.8rem}.nexus-page-contact__status:empty{display:none}.nexus-page-contact__status{padding:10px 12px;border-radius:8px;background:rgba(127,255,212,.08);color:#b8ffe8}.nexus-page-contact__status.has-error{border:1px solid rgba(252,165,165,.3);color:#fecaca;background:rgba(127,29,29,.12)}
@media(max-width:760px){.nexus-page-contact{grid-template-columns:1fr;padding:22px}.nexus-page-contact__form{grid-template-columns:1fr}.nexus-page-contact__form .full{grid-column:auto}.nexus-page-contact__actions button{width:100%}}


/* Nexus Contact V1.1 · visual polish + robust honeypot hiding */
.nexus-page-contact{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  grid-template-columns:minmax(210px,.72fr) minmax(0,1.28fr);
  gap:34px;
  padding:clamp(24px,3vw,36px);
  border-color:rgba(143,216,255,.22);
  background:
    radial-gradient(circle at 8% 10%,rgba(143,216,255,.11),transparent 34%),
    radial-gradient(circle at 92% 88%,rgba(127,255,212,.07),transparent 36%),
    linear-gradient(135deg,rgba(11,23,37,.96),rgba(6,13,22,.92));
  box-shadow:0 24px 70px rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.025);
}
.nexus-page-contact::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:-1;
  pointer-events:none;
  background:linear-gradient(120deg,rgba(143,216,255,.045),transparent 28%,transparent 72%,rgba(127,255,212,.035));
}
.nexus-page-contact__copy{
  display:grid;
  align-content:start;
  gap:10px;
  padding:4px 2px;
}
.nexus-page-contact__eyebrow{
  width:max-content;
  margin:0;
  padding:5px 9px;
  border:1px solid rgba(143,216,255,.18);
  border-radius:999px;
  background:rgba(143,216,255,.065);
  font-size:.7rem;
}
.nexus-page-contact h2{
  margin:4px 0 0;
  font-size:clamp(1.55rem,2.6vw,2.35rem);
  line-height:1.08;
  letter-spacing:-.025em;
}
.nexus-page-contact__copy p{
  margin:0;
  line-height:1.7;
}
.nexus-page-contact__form{
  position:relative;
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:15px 14px;
  padding:18px;
  border:1px solid rgba(255,255,255,.075);
  border-radius:14px;
  background:rgba(2,8,15,.38);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025);
}
.nexus-page-contact__form label{
  display:grid;
  gap:7px;
  min-width:0;
  margin:0;
  color:var(--np-text,#f4f7fb);
}
.nexus-page-contact__form label>span{
  color:rgba(244,247,251,.72);
  font-size:.74rem;
  font-weight:750;
  letter-spacing:.035em;
}
.nexus-page-contact__form .full{grid-column:1/-1}
.nexus-page-contact__form input,
.nexus-page-contact__form textarea{
  appearance:none;
  display:block;
  width:100%;
  min-width:0;
  margin:0;
  border:1px solid rgba(143,216,255,.18);
  border-radius:9px;
  background:rgba(3,10,18,.78);
  color:var(--np-text,#f4f7fb);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.018);
  transition:border-color .14s ease,box-shadow .14s ease,background .14s ease;
}
.nexus-page-contact__form input{
  min-height:46px;
  padding:10px 12px;
}
.nexus-page-contact__form textarea{
  min-height:168px;
  padding:12px;
  resize:vertical;
  line-height:1.55;
}
.nexus-page-contact__form input:hover,
.nexus-page-contact__form textarea:hover{border-color:rgba(143,216,255,.3)}
.nexus-page-contact__form input:focus,
.nexus-page-contact__form textarea:focus{
  border-color:rgba(127,255,212,.65);
  background:rgba(4,13,23,.92);
  box-shadow:0 0 0 3px rgba(127,255,212,.075);
  outline:none;
}
.nexus-page-contact__actions{
  display:flex;
  justify-content:flex-end;
  align-items:center;
  padding-top:2px;
}
.nexus-page-contact__actions button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  min-height:46px;
  padding:10px 18px;
  border:1px solid rgba(127,255,212,.42);
  border-radius:9px;
  background:linear-gradient(180deg,rgba(127,255,212,.15),rgba(127,255,212,.08));
  color:var(--np-text,#f4f7fb);
  box-shadow:0 8px 24px rgba(0,0,0,.16),inset 0 1px 0 rgba(255,255,255,.035);
  font:inherit;
  font-weight:800;
  cursor:pointer;
  transition:transform .12s ease,border-color .12s ease,background .12s ease;
}
.nexus-page-contact__actions button::after{content:"→";font-size:1.05em}
.nexus-page-contact__actions button:hover{
  transform:translateY(-1px);
  border-color:rgba(127,255,212,.68);
  background:linear-gradient(180deg,rgba(127,255,212,.2),rgba(127,255,212,.11));
}
.nexus-page-contact__actions button:disabled{transform:none;opacity:.58;cursor:wait}
.nexus-page-contact__honeypot{
  position:absolute!important;
  left:-10000px!important;
  top:auto!important;
  width:1px!important;
  height:1px!important;
  margin:0!important;
  padding:0!important;
  overflow:hidden!important;
  clip:rect(0 0 0 0)!important;
  clip-path:inset(50%)!important;
  white-space:nowrap!important;
  border:0!important;
}
.nexus-page-contact__privacy{
  grid-column:1/-1;
  margin:0;
  padding:0 2px;
  color:rgba(244,247,251,.56);
  font-size:.76rem;
  line-height:1.55;
}
.nexus-page-contact__privacy::before{content:"🔒 ";opacity:.75}
.nexus-page-contact__status{
  grid-column:1/-1;
  margin:0;
  padding:11px 13px;
  border:1px solid rgba(127,255,212,.18);
  border-radius:9px;
  background:rgba(127,255,212,.07);
  color:#b8ffe8;
  font-size:.8rem;
}
.nexus-page-contact__status:empty{display:none}
.nexus-page-contact__status.has-error{
  border-color:rgba(252,165,165,.28);
  color:#fecaca;
  background:rgba(127,29,29,.12);
}
@media(max-width:760px){
  .nexus-page-contact{grid-template-columns:1fr;gap:22px;padding:20px}
  .nexus-page-contact__form{grid-template-columns:1fr;padding:15px}
  .nexus-page-contact__form .full{grid-column:auto}
  .nexus-page-contact__actions{justify-content:stretch}
  .nexus-page-contact__actions button{width:100%}
}

/* Nexus Social Media V1 */
.nexus-page-social-header{display:flex;align-items:center;gap:5px;flex:0 0 auto}
.nexus-page-social-header a{display:grid;place-items:center;width:30px;height:30px;border:1px solid var(--np-line);border-radius:8px;background:rgba(255,255,255,.035);color:var(--np-text);text-decoration:none;font-weight:800;transition:transform .15s ease,border-color .15s ease,background .15s ease}
.nexus-page-social-header a:hover{transform:translateY(-1px);border-color:rgba(127,255,212,.42);background:rgba(127,255,212,.08)}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.nexus-page-social{display:grid;gap:20px;overflow:hidden}
.nexus-page-social__copy{display:grid;gap:5px}.nexus-page-social__copy h2{margin:0;font-size:clamp(24px,4vw,38px);line-height:1.1}.nexus-page-social__copy p{margin:0;color:var(--np-muted)}
.nexus-page-social__eyebrow{color:var(--np-accent);font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.nexus-page-social__links{display:flex;flex-wrap:wrap;gap:10px}
.nexus-page-social__link{display:grid;grid-template-columns:auto auto;grid-template-areas:'icon label' 'icon meta';align-items:center;column-gap:9px;min-width:150px;padding:10px 13px;border:1px solid var(--np-line);border-radius:10px;background:rgba(255,255,255,.035);color:var(--np-text);text-decoration:none;transition:transform .15s ease,border-color .15s ease,background .15s ease}
.nexus-page-social__link:hover{transform:translateY(-2px);border-color:rgba(127,255,212,.38);background:rgba(127,255,212,.07)}
.nexus-page-social__icon{grid-area:icon;display:grid;place-items:center;width:30px;height:30px;border-radius:8px;background:rgba(0,0,0,.24);font-weight:900}.nexus-page-social__label{grid-area:label;font-weight:800;line-height:1.2}.nexus-page-social__link small{grid-area:meta;color:var(--np-muted);font-size:11px;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nexus-page-social--icons .nexus-page-social__links{gap:8px}.nexus-page-social--icons .nexus-page-social__link{display:grid;place-items:center;min-width:0;width:44px;height:44px;padding:0;border-radius:12px}.nexus-page-social--icons .nexus-page-social__icon{width:auto;height:auto;background:transparent}.nexus-page-social--icons .nexus-page-social__label,.nexus-page-social--icons .nexus-page-social__link small{display:none}
.nexus-page-social--compact .nexus-page-social__link{min-width:0;display:inline-flex;gap:7px;padding:8px 10px}.nexus-page-social--compact .nexus-page-social__icon{width:24px;height:24px}.nexus-page-social--compact .nexus-page-social__link small{display:none}
.nexus-page-social--list .nexus-page-social__links{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}.nexus-page-social--list .nexus-page-social__link{width:100%}
@media(max-width:900px){.nexus-page-social-header{order:2;margin-left:auto}.nexus-page-account{order:2}.nexus-page-nav{order:3;flex-basis:100%}}
@media(max-width:560px){.nexus-page-social-header{max-width:160px;overflow:auto}.nexus-page-social__links{display:grid;grid-template-columns:1fr}.nexus-page-social--icons .nexus-page-social__links,.nexus-page-social--compact .nexus-page-social__links{display:flex}.nexus-page-social__link{min-width:0}}

/* Nexus Social Media V2.1 Step 2 · provider metadata */
.nexus-page-social__icon img{display:block;width:100%;height:100%;object-fit:cover;border-radius:inherit}
.nexus-page-social--icons .nexus-page-social__icon{width:30px;height:30px;border-radius:50%;overflow:hidden}

/* Nexus Social Media V2.1 Step 3 · live status */
.nexus-page-social-header a{position:relative}
.nexus-page-social-header a.is-live{border-color:rgba(248,113,113,.46);background:rgba(127,29,29,.16);box-shadow:0 0 0 1px rgba(248,113,113,.08) inset}
.nexus-page-social-header__live-dot{position:absolute;top:-3px;right:-3px;width:8px;height:8px;border:2px solid #07111f;border-radius:50%;background:#ef4444;box-shadow:0 0 10px rgba(239,68,68,.82)}
.nexus-page-social__live-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}
.nexus-page-social__live-card{display:grid;grid-template-columns:minmax(120px,38%) minmax(0,1fr);min-height:108px;overflow:hidden;border:1px solid rgba(248,113,113,.28);border-radius:12px;background:linear-gradient(135deg,rgba(127,29,29,.14),rgba(255,255,255,.035));color:var(--np-text);text-decoration:none;transition:transform .15s ease,border-color .15s ease,background .15s ease}
.nexus-page-social__live-card:hover{transform:translateY(-2px);border-color:rgba(248,113,113,.58);background:linear-gradient(135deg,rgba(127,29,29,.20),rgba(255,255,255,.055))}
.nexus-page-social__live-card.is-upcoming{border-color:rgba(251,191,36,.28);background:linear-gradient(135deg,rgba(120,53,15,.13),rgba(255,255,255,.035))}
.nexus-page-social__live-card.is-upcoming:hover{border-color:rgba(251,191,36,.52)}
.nexus-page-social__live-thumb{display:block;min-height:108px;background:rgba(0,0,0,.28)}
.nexus-page-social__live-thumb img{display:block;width:100%;height:100%;min-height:108px;object-fit:cover}
.nexus-page-social__live-body{display:grid;align-content:center;gap:5px;min-width:0;padding:12px 14px}
.nexus-page-social__live-kicker{color:#fca5a5;font-size:10px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.nexus-page-social__live-card.is-upcoming .nexus-page-social__live-kicker{color:#fcd34d}
.nexus-page-social__live-body strong{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:14px;line-height:1.28}
.nexus-page-social__live-body small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--np-muted);font-size:11px}
.nexus-page-social__link{position:relative}
.nexus-page-social__link.is-live{border-color:rgba(248,113,113,.34);background:rgba(127,29,29,.09)}
.nexus-page-social__mini-live{position:absolute;top:5px;right:7px;color:#fca5a5;font-size:8px;font-weight:900;letter-spacing:.04em}
.nexus-page-social--icons .nexus-page-social__mini-live{top:-3px;right:-3px;width:8px;height:8px;overflow:hidden;border:2px solid #07111f;border-radius:50%;background:#ef4444;color:transparent;box-shadow:0 0 9px rgba(239,68,68,.78)}
.nexus-page-social--compact .nexus-page-social__mini-live{position:static;font-size:8px}
@media(max-width:620px){.nexus-page-social__live-grid{grid-template-columns:1fr}.nexus-page-social__live-card{grid-template-columns:112px minmax(0,1fr)}.nexus-page-social__live-thumb,.nexus-page-social__live-thumb img{min-height:96px}}

/* Nexus Guestbook · Step 5 PageBlock shell (entries hydrate in Step 6) */
.nexus-page-guestbook{display:grid;gap:20px;padding:28px;border:1px solid rgba(143,216,255,.18);border-radius:18px;background:linear-gradient(135deg,rgba(12,22,34,.92),rgba(7,13,22,.84));box-shadow:0 20px 58px rgba(0,0,0,.24)}
.nexus-page-guestbook__header{display:grid;gap:6px}.nexus-page-guestbook__header h2{margin:0;font-size:clamp(1.45rem,2.4vw,2.15rem)}.nexus-page-guestbook__header p{margin:0;max-width:70ch;color:var(--np-muted,#93a4b8)}
.nexus-page-guestbook__eyebrow{color:var(--np-accent,#8fd8ff);font-size:.78rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase}
.nexus-page-guestbook__layout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);gap:18px;align-items:start}.nexus-page-guestbook__entries{display:grid;gap:12px;min-width:0}.nexus-page-guestbook__loading{padding:18px;border:1px dashed rgba(143,216,255,.2);border-radius:12px;color:var(--np-muted,#93a4b8);background:rgba(255,255,255,.025)}
.nexus-page-guestbook__more{grid-column:1}.nexus-page-guestbook__more button,.nexus-page-guestbook__actions button{min-height:44px;padding:10px 16px;border:1px solid rgba(127,255,212,.4);border-radius:9px;background:rgba(127,255,212,.1);color:var(--np-text,#f4f7fb);font:inherit;font-weight:800;cursor:pointer}.nexus-page-guestbook__more button:hover,.nexus-page-guestbook__actions button:hover{border-color:rgba(127,255,212,.64);background:rgba(127,255,212,.17)}
.nexus-page-guestbook__form{display:grid;grid-column:2;grid-row:1 / span 2;gap:12px;padding:18px;border:1px solid rgba(143,216,255,.16);border-radius:14px;background:rgba(4,9,16,.48)}.nexus-page-guestbook__form h3{margin:0 0 2px}.nexus-page-guestbook__form label{display:grid;gap:7px}.nexus-page-guestbook__form label>span{font-size:.82rem;color:var(--np-muted,#93a4b8)}.nexus-page-guestbook__form input,.nexus-page-guestbook__form textarea{box-sizing:border-box;width:100%;padding:10px 12px;border:1px solid rgba(143,216,255,.22);border-radius:9px;background:rgba(4,9,16,.75);color:var(--np-text,#f4f7fb);font:inherit;outline:none}.nexus-page-guestbook__form textarea{min-height:140px;resize:vertical}.nexus-page-guestbook__form input:focus,.nexus-page-guestbook__form textarea:focus{border-color:rgba(127,255,212,.68);box-shadow:0 0 0 3px rgba(127,255,212,.08)}
.nexus-page-guestbook__honeypot{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important}.nexus-page-guestbook__actions{display:flex;justify-content:flex-end}.nexus-page-guestbook__status{margin:0;color:var(--np-muted,#93a4b8);font-size:.82rem}.nexus-page-guestbook__status:empty{display:none}
.nexus-page-guestbook [hidden]{display:none!important}.nexus-page-guestbook__entry{display:grid;gap:10px;padding:16px 17px;border:1px solid rgba(143,216,255,.14);border-radius:13px;background:rgba(255,255,255,.025)}.nexus-page-guestbook__entry-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.nexus-page-guestbook__entry-author{color:var(--np-text,#f4f7fb);font-size:.96rem}.nexus-page-guestbook__entry-time{flex:0 0 auto;color:var(--np-muted,#93a4b8);font-size:.74rem}.nexus-page-guestbook__entry-body{margin:0;color:var(--np-text,#f4f7fb);line-height:1.62;white-space:pre-wrap;overflow-wrap:anywhere}.nexus-page-guestbook__empty,.nexus-page-guestbook__restricted,.nexus-page-guestbook__error{margin:0;padding:18px;border:1px dashed rgba(143,216,255,.2);border-radius:12px;color:var(--np-muted,#93a4b8);background:rgba(255,255,255,.025)}.nexus-page-guestbook__restricted{border-color:rgba(255,214,102,.24)}.nexus-page-guestbook__error{border-color:rgba(255,120,120,.28);color:#ffb1b1}.nexus-page-guestbook__form.is-busy{opacity:.72}.nexus-page-guestbook__status[data-state=success]{color:#92f3c4}.nexus-page-guestbook__status[data-state=pending]{color:#ffd978}.nexus-page-guestbook__status[data-state=error]{color:#ffaaaa}.nexus-page-guestbook__status[data-state=info]{color:var(--np-muted,#93a4b8)}
@media(max-width:780px){.nexus-page-guestbook{padding:20px}.nexus-page-guestbook__layout{grid-template-columns:1fr}.nexus-page-guestbook__more{grid-column:auto}.nexus-page-guestbook__form{grid-column:auto;grid-row:auto}.nexus-page-guestbook__actions button{width:100%}.nexus-page-guestbook__entry-head{align-items:flex-start;flex-direction:column;gap:4px}}

/* Nexus 3D · Step 10.1/10.4: persistent Detached media can be hosted by a Room VideoScreenEntity.
   Step 10.4 upgrades the old screen-rectangle projection to a real CSS3D DOM surface. */
.nexus-3d-media-spatial-anchor{position:fixed;pointer-events:none;visibility:hidden}
.nexus-global-media-player-host.is-nexus-3d-spatial{box-sizing:border-box;transition:left .16s ease,top .16s ease,width .16s ease,height .16s ease,opacity .18s ease}
.nexus-global-media-player-host.is-nexus-3d-spatial.msp-player[data-mode="detached"],
.nexus-global-media-player-host.is-nexus-3d-spatial.msp-player.msp-popout{
    right:auto!important;bottom:auto!important;
    max-width:none!important;max-height:none!important;
    margin:0!important;border-radius:8px!important;box-shadow:0 10px 36px rgba(0,0,0,.42)!important;
    overflow:hidden
}
.nexus-global-media-player-host.is-nexus-3d-spatial .msp-stage{min-height:0;height:100%;aspect-ratio:auto!important}
.nexus-global-media-player-host.is-nexus-3d-spatial .msp-chrome{position:absolute;left:0;right:0;bottom:0;z-index:8}
.nexus-global-media-player-host.is-nexus-3d-spatial .msp-playlist-wrap{display:none!important}

/* Nexus 3D · Step 10.4: true CSS3D DOM surfaces.
   WebGL draws the room/frame; the existing running Nexus player becomes
   ordinary DOM content inside a perspective-transformed CSS3D surface. */
.nexus-3d-css3d-layer{position:fixed;pointer-events:none;overflow:hidden;transform-style:preserve-3d}
.nexus-3d-dom-surface{box-sizing:border-box;pointer-events:auto;transform-style:preserve-3d;backface-visibility:hidden}
.nexus-3d-video-css-surface{background:#000;border-radius:8px;overflow:hidden}
.nexus-3d-video-css-surface>.nexus-global-media-player-host.is-nexus-3d-css3d{
    position:absolute!important;inset:0 auto auto 0!important;
    width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;
    margin:0!important;border-radius:0!important;box-shadow:none!important;overflow:hidden!important;
    transform:none!important;transition:none!important;pointer-events:auto!important;z-index:1!important
}
.nexus-global-media-player-host.is-nexus-3d-css3d .msp-stage{width:100%;height:100%;min-height:0;aspect-ratio:auto!important}
.nexus-global-media-player-host.is-nexus-3d-css3d .msp-chrome{left:18px;right:18px;bottom:calc(18px + var(--msp-chrome-offset,0px));transform:none}
.nexus-global-media-player-host.is-nexus-3d-css3d .msp-playlist-wrap{display:none!important}

/* Nexus 3D · Step 10.8: semantic input routing.
   CSS3D owns only the actual surface. The media player keeps its own pointer
   hierarchy; Nexus no longer forces every descendant to pointer-events:auto. */
.nexus-3d-css3d-layer{position:fixed;pointer-events:none;overflow:hidden;transform-style:preserve-3d}
.nexus-3d-dom-surface{pointer-events:none;user-select:none;-webkit-user-select:none}
.nexus-3d-dom-surface[data-nexus3d-interactive-surface="1"][data-nexus3d-input-enabled="1"]{pointer-events:auto}
.nexus-3d-dom-surface[data-nexus3d-input-enabled="0"],
.nexus-3d-dom-surface[data-nexus3d-input-enabled="0"] *{pointer-events:none!important}
.nexus-3d-video-css-surface{cursor:auto}
.nexus-global-media-player-host.is-nexus-3d-css3d{pointer-events:auto!important}
/* Do NOT set pointer-events:auto on every player descendant here. The player
   already knows which layers are controls, transparent wake surfaces or
   provider iframes. Overriding all descendants breaks sliders and iframe clicks. */

/* The WebGL background is now a real input target. Higher DOM controls still
   win normal browser hit testing; passive layout/text may be routed to Ego by
   InputRouter without requiring target===canvas. */
.nexus-page-public .nexus-hero-three-bg.nexus-3d-viewer{pointer-events:auto}

/* Page chrome behaves like a HUD: structural/text panels do not consume input.
   Only semantic controls (or explicitly marked widgets) opt back into DOM input. */
.nexus-page-public,
.nexus-page-public .nexus-page-bar,
.nexus-page-public .nexus-page-shell,
.nexus-page-public .nexus-page-site-shell,
.nexus-page-public .nexus-pages-hero-layout,
.nexus-page-public .nexus-page-hero,
.nexus-page-public .nexus-page-main-region,
.nexus-page-public .nexus-page-blocks,
.nexus-page-public .nexus-page-block,
.nexus-page-public .nexus-page-site-left,
.nexus-page-public .nexus-page-site-side,
.nexus-page-public .nexus-follow-panel,
.nexus-page-public .nexus-hero-authbar,
.nexus-page-public .nexus-planner-widget{user-select:none;-webkit-user-select:none}

.nexus-page-public input:not([type="range"]):not([type="checkbox"]):not([type="radio"]):not([type="button"]):not([type="submit"]):not([type="reset"]),
.nexus-page-public textarea,
.nexus-page-public [contenteditable="true"]{user-select:text;-webkit-user-select:text}

/* Transparent layout wrappers pass through. Visible blocks may still paint, but
   plain text is not an input owner. Native controls and known interactive
   widgets opt in below. */
.nexus-page-public .nexus-page-shell,
.nexus-page-public .nexus-pages-hero-layout,
.nexus-page-public .nexus-page-main-region,
.nexus-page-public .nexus-page-blocks,
.nexus-page-public .nexus-page-site-left,
.nexus-page-public .nexus-page-site-side,
.nexus-page-public .nexus-page-hero,
.nexus-page-public .nexus-page-block,
.nexus-page-public .nexus-follow-panel,
.nexus-page-public .nexus-hero-authbar,
.nexus-page-public .nexus-planner-widget{pointer-events:none}

.nexus-page-public :is(
  a[href],button,input,select,textarea,label,summary,iframe,video,audio,
  [contenteditable="true"],[role="button"],[role="slider"],[role="checkbox"],[role="switch"],[role="tab"],
  [tabindex]:not([tabindex="-1"]),[data-action],[data-function],[data-nexus-interactive="1"],[data-nexus-input="dom"],
  .msp-player,[data-gallery-open-full],[data-gallery-lightbox-close],.nexusGalleryCarouselPrev,.nexusGalleryCarouselNext
){pointer-events:auto}


/* Nexus 3D · Step 11.2: stable CSS3D compositing + fullscreen ownership.
   A claimed media surface is camera-driven and must not be recomposited as an
   ordinary scrolling page box. Dedicated stacking/paint containment prevents
   transformed provider iframes from visually fighting the scrolling HUD. */
.nexus-3d-css3d-layer{
  z-index:1;
  isolation:isolate;
  contain:layout paint style;
  backface-visibility:hidden;
}
.nexus-3d-dom-surface{
  contain:layout paint style;
  isolation:isolate;
  will-change:transform;
}
.nexus-global-media-player-host.is-nexus-3d-css3d{
  contain:layout paint style;
  isolation:isolate;
}

/* Browser fullscreen is a temporary presentation state of the *same* claimed
   player. Keep it in the CSS3D host, but let the fullscreen element fill the
   top layer instead of inheriting monitor geometry. */
.nexus-global-media-player-host.is-nexus-3d-css3d:fullscreen{
  position:fixed!important;
  inset:0!important;
  width:100vw!important;
  height:100vh!important;
  max-width:none!important;
  max-height:none!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  overflow:hidden!important;
  transform:none!important;
  pointer-events:auto!important;
  visibility:visible!important;
}
@supports (height:100dvh){
  .nexus-global-media-player-host.is-nexus-3d-css3d:fullscreen{height:100dvh!important}
}


/* Nexus 3D · Step 15.10: spatial controls use the normal player idle state.
   The player itself owns wake/hide timing; CSS3D only keeps the real control
   elements interactive when the chrome is visible. */
.nexus-global-media-player-host.is-nexus-3d-css3d[data-spatial-presentation="1"] .msp-controls,
.nexus-global-media-player-host.is-nexus-3d-css3d[data-spatial-presentation="1"] .msp-playlist-wrap,
.nexus-global-media-player-host.is-nexus-3d-spatial[data-spatial-presentation="1"] .msp-controls,
.nexus-global-media-player-host.is-nexus-3d-spatial[data-spatial-presentation="1"] .msp-playlist-wrap{
  pointer-events:auto!important;
}
/* Native-control providers keep their own bottom bar reachable; the custom
   Nexus chrome sits above it instead of covering it. */
.nexus-global-media-player-host.is-nexus-3d-css3d.msp-native-controls-required .msp-chrome,
.nexus-global-media-player-host.is-nexus-3d-spatial.msp-native-controls-required .msp-chrome{
  bottom:calc(18px + var(--msp-chrome-offset,52px))!important;
}
/* Portrait TikTok still lives on a landscape 3D monitor. Use the monitor width
   for the shared control deck instead of constraining the entire player root. */
.nexus-global-media-player-host.is-nexus-3d-css3d[data-layout="portrait"]{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
}


/* Nexus 3D · Step 12.4: image lightbox with native Gallery comments. */
.nexus-gallery-lightbox__dialog--comments{width:min(1480px,100%);grid-template-columns:minmax(0,1fr) minmax(300px,380px);align-items:start;overflow:hidden}
.nexus-gallery-lightbox__media{display:grid;gap:14px;min-width:0;min-height:0}
.nexus-gallery-lightbox__dialog--comments .nexus-gallery-lightbox__image{max-height:min(72vh,860px)}
.nexus-gallery-lightbox__comments-panel{min-width:0;max-height:calc(100vh - 84px);overflow:auto;padding:4px 2px 4px 4px;overscroll-behavior:contain}
.nexus-gallery-lightbox__comments-target{margin:0;background:rgba(4,9,18,.62)}
.nexus-gallery-lightbox__comments-panel .nexus-gallery-comments__list{max-height:46vh;overflow:auto;overscroll-behavior:contain}
@media(max-width:920px){
  .nexus-gallery-lightbox__dialog--comments{grid-template-columns:1fr;overflow:auto}
  .nexus-gallery-lightbox__comments-panel{max-height:none}
  .nexus-gallery-lightbox__comments-panel .nexus-gallery-comments__list{max-height:280px}
  .nexus-gallery-lightbox__dialog--comments .nexus-gallery-lightbox__image{max-height:min(60vh,720px)}
}


/* Shared Gallery comment controls used by 3D lightbox. */
.nexus-gallery-comments{margin-top:14px;border:1px solid rgba(143,216,255,.16);border-radius:12px;background:rgba(4,9,18,.38);overflow:hidden}
.nexus-gallery-comments--album{padding:14px}.nexus-gallery-comments__title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.nexus-gallery-comments__title strong{font-size:14px}.nexus-gallery-comments__title span{font-size:12px;opacity:.72}
.nexus-gallery-comments__loading,.nexus-gallery-comments__empty,.nexus-gallery-comments__hint,.nexus-gallery-comments__error{margin:6px 0;font-size:12px;line-height:1.45;opacity:.78}.nexus-gallery-comments__error{color:#ffb6b6;opacity:1}.nexus-gallery-comments__list{display:grid;gap:8px;margin-bottom:10px}.nexus-gallery-comment{padding:10px;border-radius:10px;border:1px solid rgba(255,255,255,.07);background:rgba(255,255,255,.035)}.nexus-gallery-comment.is-hidden{border-color:rgba(255,193,94,.28);background:rgba(255,193,94,.055)}.nexus-gallery-comment__head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}.nexus-gallery-comment__head strong{font-size:13px}.nexus-gallery-comment__head time{margin-left:auto;font-size:10px;opacity:.55}.nexus-gallery-comment__status{padding:2px 6px;border-radius:999px;background:rgba(255,193,94,.12);border:1px solid rgba(255,193,94,.26);font-size:10px;color:#ffd28a}.nexus-gallery-comment__body{font-size:13px;line-height:1.5;overflow-wrap:anywhere}.nexus-gallery-comment__actions,.nexus-gallery-comment__edit-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.nexus-gallery-comment__action{border:0;background:transparent;color:#9fdfff;padding:2px 0;font-size:11px;cursor:pointer}.nexus-gallery-comment__action:hover{text-decoration:underline}.nexus-gallery-comment__action--danger{color:#ffadad}.nexus-gallery-comment__edit textarea,.nexus-gallery-comments__form textarea{box-sizing:border-box;width:100%;resize:vertical;border:1px solid rgba(143,216,255,.2);border-radius:9px;background:rgba(2,7,14,.72);color:#f4f7fb;padding:9px;font:inherit;user-select:text}.nexus-gallery-comments__form{display:grid;gap:8px;margin-top:10px}.nexus-gallery-comments__form-actions{display:flex;align-items:center;justify-content:space-between;gap:10px}.nexus-gallery-comments__status{min-height:1em;margin-top:6px;font-size:11px;color:#ffd28a}

/* Nexus 3D · Step 13.2: deterministic CSS3D/WebGL stacking.
   Both spatial renderers live inside one isolated stage. This is deliberately
   NOT z-index:-1: a negative layer falls behind the page/body paint and makes
   CSS3D disappear completely. */
.nexus-page-public .nexus-3d-stage{
  position:fixed;
  inset:0;
  width:100vw;
  height:100vh;
  overflow:hidden;
  pointer-events:none;
  isolation:isolate;
  z-index:0;
}
.nexus-page-public .nexus-3d-stage>.nexus-3d-css3d-layer{
  z-index:0!important;
}
.nexus-page-public .nexus-3d-stage>.nexus-hero-three-bg.nexus-3d-viewer{
  z-index:1!important;
}


/* Nexus account drawer · Step 14.4
   shell.right is visually toggled without changing the established page grid. */
.nexus-page-account__toggle{font:inherit;color:var(--np-text);cursor:pointer;white-space:nowrap}
.nexus-page-account__toggle--user{max-width:180px;overflow:hidden;text-overflow:ellipsis;padding:0;border:0;background:transparent;font:inherit;color:var(--np-text);font-weight:700}
.nexus-page-account__toggle--user:hover,.nexus-page-account__toggle--user.is-open{text-decoration:underline;text-underline-offset:4px}
.nexus-page-account__toggle:focus-visible{outline:2px solid var(--np-accent,#8fd8ff);outline-offset:3px}
.nexus-page-site-side[data-nexus-account-panel][hidden]{display:none!important}
.nexus-page-account>span:first-child:not(.nexus-page-role){cursor:pointer}
@media(max-width:900px){.nexus-page-account__toggle--user{max-width:130px}}

/* Nexus 3D · Step 14.5: Owner-only Page camera pose capture. */
.nexus-3d-camera-admin{
  position:fixed;
  right:18px;
  bottom:18px;
  z-index:52;
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:7px;
  pointer-events:none;
}
.nexus-3d-camera-admin[hidden]{display:none!important}
.nexus-3d-camera-mode{
  pointer-events:auto;
  min-height:42px;
  display:grid;
  grid-template-columns:auto auto minmax(118px,auto);
  align-items:center;
  gap:7px;
  padding:7px 9px 7px 11px;
  border:1px solid rgba(143,216,255,.3);
  border-radius:10px;
  background:rgba(8,18,28,.9);
  color:var(--np-text,#f4f7fb);
  box-shadow:0 8px 24px rgba(0,0,0,.28);
  backdrop-filter:blur(10px);
  font-size:12px;
  font-weight:750;
}
.nexus-3d-camera-mode select{
  min-height:30px;
  padding:4px 28px 4px 8px;
  border:1px solid rgba(143,216,255,.24);
  border-radius:7px;
  background:rgba(3,10,17,.86);
  color:inherit;
  font:inherit;
  cursor:pointer;
}
.nexus-3d-camera-mode select:focus-visible{outline:2px solid var(--np-accent,#8fd8ff);outline-offset:2px}
.nexus-3d-camera-mode select:disabled{opacity:.6;cursor:default}
.nexus-3d-camera-rotation{
  pointer-events:auto;
  min-height:36px;
  display:flex;
  align-items:center;
  gap:8px;
  padding:7px 11px;
  border:1px solid rgba(143,216,255,.26);
  border-radius:10px;
  background:rgba(8,18,28,.9);
  color:var(--np-text,#f4f7fb);
  box-shadow:0 8px 24px rgba(0,0,0,.24);
  backdrop-filter:blur(10px);
  font-size:12px;
  font-weight:750;
  cursor:pointer;
}
.nexus-3d-camera-rotation[hidden]{display:none!important}
.nexus-3d-camera-rotation input{width:16px;height:16px;margin:0;accent-color:var(--np-accent,#8fd8ff);cursor:pointer}
.nexus-3d-camera-save{
  pointer-events:auto;
  min-height:42px;
  padding:9px 14px;
  border:1px solid rgba(143,216,255,.3);
  border-radius:10px;
  background:rgba(8,18,28,.88);
  color:var(--np-text,#f4f7fb);
  box-shadow:0 8px 24px rgba(0,0,0,.28);
  backdrop-filter:blur(10px);
  font:inherit;
  font-weight:700;
  cursor:pointer;
}
.nexus-3d-camera-save:hover{border-color:rgba(143,216,255,.6);background:rgba(14,31,45,.94)}
.nexus-3d-camera-save:focus-visible{outline:2px solid var(--np-accent,#8fd8ff);outline-offset:3px}
.nexus-3d-camera-save:disabled{cursor:wait;opacity:.72}
.nexus-3d-camera-save.is-saved{border-color:rgba(120,235,177,.5)}
.nexus-3d-camera-save__status{
  max-width:min(320px,calc(100vw - 36px));
  padding:4px 8px;
  border-radius:7px;
  background:rgba(5,12,20,.78);
  color:rgba(236,245,252,.8);
  font-size:11px;
  line-height:1.35;
  pointer-events:none;
}
.nexus-3d-camera-save__status:empty{display:none}
.nexus-3d-camera-save__status.has-error{color:#ffb7b7}
@media(max-width:720px){.nexus-3d-camera-admin{right:10px;bottom:10px}}

/* Nexus 3D · Step 15.4: browser monitor on the former contact bay.
   Same CSS3D interaction pipe as the working video monitor, but the hosted
   content is a framed iframe browser window for christian-janoschka.de. */
.nexus-3d-browser-css-surface{
  background:#05080d;
  border-radius:18px;
  overflow:hidden;
  box-shadow:0 24px 50px rgba(0,0,0,.38), inset 0 0 0 1px rgba(255,255,255,.04);
  cursor:auto;
}
.nexus-3d-browser-shell{
  position:absolute;
  inset:0;
  display:flex;
  flex-direction:column;
  background:linear-gradient(180deg,rgba(9,15,24,.98),rgba(4,9,15,.98));
  color:#d9e6f4;
  pointer-events:auto;
}
.nexus-3d-browser-topbar{
  display:grid;
  grid-template-columns:auto 1fr auto;
  align-items:center;
  gap:16px;
  min-height:70px;
  padding:12px 18px;
  background:linear-gradient(180deg,rgba(14,21,33,.96),rgba(7,12,20,.92));
  border-bottom:1px solid rgba(106,145,187,.16);
}
.nexus-3d-browser-traffic{display:flex;align-items:center;gap:8px}
.nexus-3d-browser-traffic span{
  width:12px;height:12px;border-radius:999px;display:block;
  background:rgba(255,255,255,.18);
}
.nexus-3d-browser-traffic span:nth-child(1){background:#ff6c6c}
.nexus-3d-browser-traffic span:nth-child(2){background:#ffbf47}
.nexus-3d-browser-traffic span:nth-child(3){background:#31d07f}
.nexus-3d-browser-address{
  min-width:0;
  display:flex;
  align-items:center;
  justify-content:center;
  height:42px;
  padding:0 18px;
  border-radius:999px;
  background:rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.08);
  color:#ebf4ff;
  font:600 18px/1.2 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.nexus-3d-browser-actions{display:flex;align-items:center;gap:10px}
.nexus-3d-browser-action{
  display:inline-flex;align-items:center;justify-content:center;
  width:40px;height:40px;border-radius:12px;border:1px solid rgba(255,255,255,.08);
  background:rgba(255,255,255,.05);color:#eef6ff;text-decoration:none;
  font:600 20px/1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  cursor:pointer;
}
.nexus-3d-browser-action:hover{background:rgba(92,169,255,.18);border-color:rgba(92,169,255,.28)}
.nexus-3d-browser-body{
  position:relative;
  flex:1 1 auto;
  min-height:0;
  background:#06101a;
}
.nexus-3d-browser-loading{
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
  background:radial-gradient(circle at center,rgba(18,37,62,.5),rgba(4,10,16,.94));
  color:#d7e8fb;
  font:600 22px/1.4 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  letter-spacing:.01em;
  z-index:2;
}
.nexus-3d-browser-shell.is-loaded .nexus-3d-browser-loading{display:none}
.nexus-3d-browser-iframe{
  display:block;
  width:100%;
  height:100%;
  border:0;
  background:#fff;
  pointer-events:auto;
}

/* Nexus Room Editor · Step 16.1
   Owner-only frontend shell. 3D resize handles are DOM projections of world
   points so they stay easy to grab without fighting Orbit/CSS3D hit testing. */
.nexus-room-editor{position:fixed;left:0;top:0;width:0;height:0;z-index:58;overflow:visible;pointer-events:none;color:var(--np-text,#f4f7fb);font:inherit}
.nexus-page-public .nexus-room-editor{pointer-events:none}
.nexus-room-editor[hidden]{display:none!important}
.nexus-room-editor__toggle{position:fixed;right:18px;bottom:154px;z-index:2;pointer-events:auto;min-height:42px;padding:9px 14px;border:1px solid rgba(143,216,255,.3);border-radius:10px;background:rgba(8,18,28,.9);color:inherit;box-shadow:0 8px 24px rgba(0,0,0,.28);backdrop-filter:blur(10px);font:inherit;font-weight:750;cursor:pointer}
.nexus-room-editor__toggle:hover,.nexus-room-editor__toggle.is-active{border-color:rgba(143,216,255,.7);background:rgba(14,31,45,.96)}
.nexus-room-editor__toggle:focus-visible,.nexus-room-editor button:focus-visible,.nexus-room-editor input:focus-visible{outline:2px solid var(--np-accent,#8fd8ff);outline-offset:2px}
.nexus-room-editor__panel{position:fixed;right:18px;top:92px;z-index:3;width:min(330px,calc(100vw - 36px));max-height:calc(100vh - 190px);overflow:auto;pointer-events:auto;border:1px solid rgba(143,216,255,.24);border-radius:14px;background:rgba(7,14,23,.94);box-shadow:0 20px 58px rgba(0,0,0,.42);backdrop-filter:blur(14px)}
.nexus-room-editor__panel[hidden]{display:none!important}
.nexus-room-editor__header{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 14px 12px;border-bottom:1px solid rgba(255,255,255,.08)}
.nexus-room-editor__header>div{display:flex;flex-direction:column;gap:2px}.nexus-room-editor__header strong{font-size:15px}.nexus-room-editor__header small{font-size:11px;color:rgba(226,239,249,.58)}
.nexus-room-editor__close{width:32px;height:32px;border:1px solid rgba(255,255,255,.12);border-radius:9px;background:rgba(255,255,255,.04);color:inherit;font-size:22px;line-height:1;cursor:pointer}
.nexus-room-editor__body{display:grid;gap:12px;padding:13px}
.nexus-room-editor__group{display:grid;gap:8px;padding:11px;border:1px solid rgba(255,255,255,.07);border-radius:11px;background:rgba(255,255,255,.025)}
.nexus-room-editor__group h3{margin:0 0 2px;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:rgba(198,226,245,.72)}
.nexus-room-editor__group label{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px}.nexus-room-editor__group label span{display:flex;align-items:center;gap:5px;color:rgba(226,239,249,.65)}
.nexus-room-editor__group input{width:88px;padding:7px 8px;border:1px solid rgba(143,216,255,.2);border-radius:8px;background:rgba(0,0,0,.22);color:#f5fbff;font:inherit;text-align:right}
.nexus-room-editor__grid-info{margin:2px 0 0;color:rgba(226,239,249,.58);font-size:11px;line-height:1.45}
.nexus-room-editor__footer{position:sticky;bottom:0;display:grid;gap:9px;padding:11px 13px 13px;border-top:1px solid rgba(255,255,255,.08);background:rgba(7,14,23,.97)}
.nexus-room-editor__footer>div{display:flex;justify-content:flex-end;gap:8px}.nexus-room-editor__footer button{min-height:36px;padding:7px 11px;border-radius:9px;font:inherit;font-weight:700;cursor:pointer}
.nexus-room-editor__secondary{border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.04);color:rgba(239,247,252,.82)}
.nexus-room-editor__save{border:1px solid rgba(143,216,255,.42);background:rgba(28,101,139,.34);color:#f5fbff}
.nexus-room-editor__status{min-height:15px;font-size:11px;line-height:1.35;color:rgba(214,234,246,.68)}.nexus-room-editor__status.has-error{color:#ffb7b7}
.nexus-room-editor.is-busy{cursor:progress}.nexus-room-editor button:disabled,.nexus-room-editor input:disabled{opacity:.55;cursor:progress}
.nexus-room-editor__handles{position:fixed;inset:0;z-index:1;pointer-events:none}.nexus-room-editor__handles[hidden]{display:none!important}
.nexus-room-editor__handle{--room-handle-rotate:0deg;position:fixed;transform:translate(-50%,-50%) rotate(var(--room-handle-rotate));width:38px;height:38px;padding:0;border:2px solid rgba(220,246,255,.88);border-radius:12px;background:rgba(15,73,101,.88);box-shadow:0 5px 18px rgba(0,0,0,.36),0 0 0 4px rgba(143,216,255,.12);pointer-events:auto;cursor:ew-resize;touch-action:none;color:#fff}
.nexus-room-editor__handle::before{content:'↔';position:absolute;inset:0;display:grid;place-items:center;font-size:20px;font-weight:900}.nexus-room-editor__handle::after{content:attr(data-value);position:absolute;left:50%;top:calc(100% + 6px);transform:translateX(-50%);padding:3px 6px;border-radius:6px;background:rgba(4,10,16,.86);white-space:nowrap;font-size:10px;font-weight:750;box-shadow:0 3px 10px rgba(0,0,0,.3)}
.nexus-room-editor__handle.is-depth{--room-handle-rotate:90deg;cursor:ns-resize}.nexus-room-editor__handle.is-depth::after,.nexus-room-editor__handle.is-height::after{transform:translateX(-50%) rotate(-90deg)}.nexus-room-editor__handle.is-height{--room-handle-rotate:90deg;cursor:ns-resize;border-radius:50%;background:rgba(104,76,20,.92)}
.nexus-room-editor__handle:hover,.nexus-room-editor__handle.is-dragging{box-shadow:0 7px 24px rgba(0,0,0,.45),0 0 0 6px rgba(143,216,255,.2);filter:brightness(1.16)}
body.nexus-room-editor--dragging,body.nexus-room-editor--dragging *{user-select:none!important}
@media(max-width:720px){.nexus-room-editor__toggle{right:10px;bottom:146px}.nexus-room-editor__panel{right:10px;top:76px;width:min(318px,calc(100vw - 20px));max-height:calc(100vh - 150px)}.nexus-room-editor__handle{width:42px;height:42px}}
/* Step 16.3: opening editor gizmos stay pointer-transparent except for the actual handles. */
.nexus-room-editor__opening-gizmos{position:fixed;inset:0;z-index:2;pointer-events:none}
.nexus-room-editor__opening-gizmos[hidden]{display:none!important}
.nexus-room-editor__opening-outline{position:fixed;inset:0;width:100vw;height:100vh;overflow:visible;pointer-events:none}
.nexus-room-editor__opening-outline polygon{fill:rgba(121,231,255,.08);stroke:#79e7ff;stroke-width:2;stroke-linejoin:round;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 5px rgba(121,231,255,.65))}
.nexus-room-editor__opening-handle{position:fixed;left:0;top:0;transform:translate(-50%,-50%);width:30px;height:30px;padding:0;border:2px solid rgba(230,249,255,.96);border-radius:9px;background:rgba(12,78,108,.94);color:#fff;box-shadow:0 4px 14px rgba(0,0,0,.42),0 0 0 4px rgba(121,231,255,.14);display:grid;place-items:center;pointer-events:auto;touch-action:none;cursor:ew-resize;font:800 16px/1 system-ui,sans-serif}
.nexus-room-editor__opening-handle.is-move{width:34px;height:34px;border-radius:50%;cursor:move;background:rgba(20,93,76,.95)}
.nexus-room-editor__opening-handle.is-height{cursor:ns-resize;background:rgba(104,76,20,.95)}
.nexus-room-editor__opening-handle.is-balcony-depth{cursor:ns-resize;background:rgba(19,97,82,.96);width:34px;height:34px;border-radius:10px;font-size:15px}
.nexus-room-editor__opening-handle:hover,.nexus-room-editor__opening-handle.is-dragging{filter:brightness(1.18);box-shadow:0 6px 18px rgba(0,0,0,.5),0 0 0 6px rgba(121,231,255,.22)}
.nexus-room-editor__opening-delete{position:fixed;left:0;top:0;transform:translate(-50%,-50%);width:30px;height:30px;padding:0;border:2px solid rgba(255,233,233,.96);border-radius:50%;background:rgba(130,30,38,.96);color:#fff;box-shadow:0 4px 14px rgba(0,0,0,.44),0 0 0 4px rgba(255,92,105,.14);display:grid;place-items:center;pointer-events:auto;touch-action:none;cursor:pointer;font:900 20px/1 system-ui,sans-serif;z-index:4}
.nexus-room-editor__opening-delete:hover{filter:brightness(1.2);box-shadow:0 6px 18px rgba(0,0,0,.5),0 0 0 6px rgba(255,92,105,.2)}
/* Step 16.14: small opening tools stay local to the selected opening gizmo. */
.nexus-room-editor__opening-tool{position:fixed;left:0;top:0;transform:translate(-50%,-50%);width:30px;height:30px;padding:0;border:2px solid rgba(229,246,255,.94);border-radius:9px;background:rgba(42,63,92,.96);color:#fff;box-shadow:0 4px 14px rgba(0,0,0,.42),0 0 0 4px rgba(131,198,255,.12);display:grid;place-items:center;pointer-events:auto;touch-action:none;cursor:pointer;font:900 16px/1 system-ui,sans-serif;z-index:4}
.nexus-room-editor__opening-tool.is-door-side{background:rgba(92,63,25,.96);border-color:rgba(255,227,174,.94)}
.nexus-room-editor__opening-tool.is-picker{background:rgba(48,48,94,.96)}
.nexus-room-editor__opening-tool:hover,.nexus-room-editor__opening-tool.is-active{filter:brightness(1.2);box-shadow:0 6px 18px rgba(0,0,0,.5),0 0 0 6px rgba(121,231,255,.2)}
.nexus-room-editor__opening-tool.is-active{background:rgba(23,108,96,.98);border-color:#89fff0}
.nexus-room-editor__wall-grid line{pointer-events:none;stroke:rgba(126,213,244,.14);stroke-width:1;vector-effect:non-scaling-stroke}.nexus-room-editor__wall-grid line.is-major{stroke:rgba(126,213,244,.24);stroke-width:1.2}.nexus-room-editor__wall-grid line.is-pillar{stroke:rgba(255,210,106,.52);stroke-width:1.6;stroke-dasharray:5 5}
.nexus-room-editor__move-guides line{pointer-events:none;vector-effect:non-scaling-stroke}.nexus-room-editor__move-guides line.is-cross{stroke:rgba(225,248,255,.68);stroke-width:1.6;stroke-dasharray:8 5}.nexus-room-editor__move-guides line.is-snap{stroke:#7ef1ff;stroke-width:2.6;stroke-dasharray:none;filter:drop-shadow(0 0 5px rgba(126,241,255,.85))}
.nexus-room-editor__opening-measure{position:fixed;z-index:3;max-width:320px;padding:6px 9px;border:1px solid rgba(132,225,255,.55);border-radius:8px;background:rgba(4,11,18,.9);box-shadow:0 5px 18px rgba(0,0,0,.42);color:#eafaff;font:700 11px/1.35 system-ui,sans-serif;pointer-events:none;white-space:normal}.nexus-room-editor__opening-measure[data-snap=target]{border-color:#7ef1ff;box-shadow:0 5px 18px rgba(0,0,0,.42),0 0 0 3px rgba(126,241,255,.12)}.nexus-room-editor__opening-measure[data-snap=off]{border-color:rgba(255,194,112,.75);color:#ffe4bf}

/* Step 16.19: grid/storey sliders and structural MIN/MAX gizmo. */
.nexus-room-editor__group label.nexus-room-editor__range-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 10px;align-items:center}
.nexus-room-editor__range-row>input[type=range]{grid-column:1/-1;width:100%;padding:0;border:0;background:transparent;accent-color:#79e7ff;cursor:ew-resize}
.nexus-room-editor__structure-gizmo{position:fixed;inset:0;z-index:3;pointer-events:none}
.nexus-room-editor__structure-gizmo[hidden]{display:none!important}
.nexus-room-editor__structure-handle{position:fixed;left:0;top:0;transform:translate(-50%,-50%);min-width:46px;height:34px;padding:0 8px;border:2px solid rgba(238,250,255,.96);border-radius:10px;background:rgba(21,82,111,.96);color:#fff;box-shadow:0 5px 16px rgba(0,0,0,.44),0 0 0 4px rgba(121,231,255,.13);pointer-events:auto;touch-action:none;cursor:ew-resize;font:800 10px/1 system-ui,sans-serif;letter-spacing:.04em}
.nexus-room-editor__structure-gizmo[data-kind=storey] .nexus-room-editor__structure-handle{cursor:ns-resize;background:rgba(108,78,22,.96)}
.nexus-room-editor__structure-gizmo[data-kind=storey] .nexus-room-editor__structure-handle.is-thickness{background:rgba(34,94,80,.97);border-color:rgba(171,255,227,.96);min-width:58px}
.nexus-room-editor__structure-handle::after{content:attr(data-value);position:absolute;left:50%;top:calc(100% + 4px);transform:translateX(-50%);padding:2px 5px;border-radius:5px;background:rgba(4,10,16,.9);font-size:9px;white-space:nowrap}
.nexus-room-editor__structure-handle:hover,.nexus-room-editor__structure-handle.is-dragging{filter:brightness(1.18);box-shadow:0 6px 20px rgba(0,0,0,.5),0 0 0 6px rgba(121,231,255,.2)}
.nexus-room-editor__structure-measure{position:fixed;transform:translate(-50%,-50%);padding:5px 8px;border:1px solid rgba(121,231,255,.36);border-radius:7px;background:rgba(4,11,18,.88);color:#e9faff;font:700 10px/1.3 system-ui,sans-serif;white-space:nowrap;pointer-events:none}
.nexus-room-editor__balcony-gizmo{position:fixed;inset:0;z-index:3;pointer-events:none}.nexus-room-editor__balcony-gizmo[hidden]{display:none!important}
.nexus-room-editor__balcony-handle{position:fixed;left:0;top:0;transform:translate(-50%,-50%);min-width:58px;height:34px;padding:0 8px;border:2px solid rgba(215,255,241,.96);border-radius:10px;background:rgba(28,96,78,.97);color:#fff;box-shadow:0 5px 16px rgba(0,0,0,.44),0 0 0 4px rgba(121,255,211,.12);pointer-events:auto;touch-action:none;cursor:ew-resize;font:800 10px/1 system-ui,sans-serif;letter-spacing:.04em}
.nexus-room-editor__balcony-handle.is-depth{cursor:ns-resize;background:rgba(35,82,104,.97)}
.nexus-room-editor__balcony-handle::after{content:attr(data-value);position:absolute;left:50%;top:calc(100% + 4px);transform:translateX(-50%);padding:2px 5px;border-radius:5px;background:rgba(4,10,16,.9);font-size:9px;white-space:nowrap}
.nexus-room-editor__balcony-handle:hover,.nexus-room-editor__balcony-handle.is-dragging{filter:brightness(1.18);box-shadow:0 6px 20px rgba(0,0,0,.5),0 0 0 6px rgba(121,255,211,.18)}
.nexus-room-editor__balcony-measure{position:fixed;transform:translate(-50%,-50%);padding:5px 8px;border:1px solid rgba(121,255,211,.38);border-radius:7px;background:rgba(4,11,18,.9);color:#effff9;font:700 10px/1.3 system-ui,sans-serif;white-space:nowrap;pointer-events:none}

/* Step 16.20: compact two-tab Room Editor panel. */
.nexus-room-editor__panel{width:min(370px,calc(100vw - 36px))}
.nexus-room-editor__tabs{display:grid;grid-template-columns:.8fr 1.35fr .8fr;gap:6px;padding:9px 12px;border-bottom:1px solid rgba(255,255,255,.08);background:rgba(7,14,23,.98)}
.nexus-room-editor__tab{min-height:36px;padding:7px 10px;border:1px solid rgba(255,255,255,.09);border-radius:9px;background:rgba(255,255,255,.035);color:rgba(226,239,249,.65);font:inherit;font-size:12px;font-weight:750;cursor:pointer}
.nexus-room-editor__tab:hover{border-color:rgba(143,216,255,.3);color:#f5fbff}.nexus-room-editor__tab.is-active{border-color:rgba(121,231,255,.55);background:rgba(25,92,122,.34);color:#f5fbff;box-shadow:inset 0 0 0 1px rgba(121,231,255,.08)}
.nexus-room-editor__tab-panel[hidden]{display:none!important}
.nexus-room-editor__lab-body{gap:10px}
.nexus-room-editor__lab-note{margin:0;padding:9px 10px;border:1px solid rgba(121,231,255,.12);border-radius:9px;background:rgba(121,231,255,.035);color:rgba(214,234,246,.62);font-size:11px;line-height:1.45}
.nexus-room-editor__lab-description{margin:-1px 0 3px;color:rgba(214,234,246,.5);font-size:10.5px;line-height:1.4}
.nexus-room-editor__lab-empty{display:grid;gap:3px;padding:14px;border:1px dashed rgba(143,216,255,.2);border-radius:10px;color:rgba(226,239,249,.58);font-size:11px}.nexus-room-editor__lab-empty strong{color:#f5fbff;font-size:13px}
.nexus-room-editor__lab-toggle-row input[type=checkbox]{width:20px;height:20px;padding:0;accent-color:#79e7ff;cursor:pointer}
.nexus-room-editor__lab-color-row input[type=color]{width:48px;height:32px;padding:3px;border-radius:8px;cursor:pointer}
.nexus-room-editor__lab-range-row>span{justify-self:end}.nexus-room-editor__lab-range-row>span input[type=number]{width:92px}
.nexus-room-editor__lab-actions{position:sticky;bottom:0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;padding:10px 13px 12px;border-top:1px solid rgba(255,255,255,.08);background:rgba(7,14,23,.98)}
.nexus-room-editor__lab-actions button{min-height:34px;padding:6px 10px;border-radius:9px;font:inherit;font-size:11px;font-weight:750;cursor:pointer}.nexus-room-editor__lab-status{min-width:0;color:rgba(214,234,246,.58);font-size:10.5px;line-height:1.35}
@media(max-width:720px){.nexus-room-editor__panel{width:min(350px,calc(100vw - 20px))}.nexus-room-editor__tabs{grid-template-columns:1fr 1fr 1fr}}


/* Step 16.23: local pendant-light editor gizmo. */
.nexus-room-editor__lamp-gizmo{position:fixed;inset:0;z-index:3;pointer-events:none}
.nexus-room-editor__lamp-gizmo[hidden]{display:none!important}
.nexus-room-editor__lamp-handle,.nexus-room-editor__lamp-move-handle,.nexus-room-editor__lamp-delete{position:fixed;left:0;top:0;transform:translate(-50%,-50%);pointer-events:auto;touch-action:none;color:#fff;box-shadow:0 5px 16px rgba(0,0,0,.44);font:900 16px/1 system-ui,sans-serif}
.nexus-room-editor__lamp-handle{width:36px;height:36px;padding:0;border:2px solid rgba(255,245,198,.96);border-radius:50%;background:rgba(112,78,20,.96);cursor:ns-resize}
.nexus-room-editor__lamp-move-handle{width:36px;height:36px;padding:0;border:2px solid rgba(164,235,255,.96);border-radius:50%;background:rgba(22,86,111,.96);cursor:move}
.nexus-room-editor__lamp-move-handle::after{content:attr(data-value);position:absolute;left:50%;top:calc(100% + 4px);transform:translateX(-50%);padding:2px 5px;border-radius:5px;background:rgba(4,10,16,.9);font-size:9px;white-space:nowrap}
.nexus-room-editor__lamp-handle::after{content:attr(data-value);position:absolute;left:50%;top:calc(100% + 4px);transform:translateX(-50%);padding:2px 5px;border-radius:5px;background:rgba(4,10,16,.9);font-size:9px;white-space:nowrap}
.nexus-room-editor__lamp-delete{width:30px;height:30px;padding:0;border:2px solid rgba(255,233,233,.96);border-radius:50%;background:rgba(130,30,38,.96);cursor:pointer}
.nexus-room-editor__lamp-handle:hover,.nexus-room-editor__lamp-handle.is-dragging,.nexus-room-editor__lamp-move-handle:hover,.nexus-room-editor__lamp-move-handle.is-dragging,.nexus-room-editor__lamp-delete:hover{filter:brightness(1.18);box-shadow:0 6px 20px rgba(0,0,0,.5),0 0 0 6px rgba(255,218,122,.18)}
.nexus-room-editor__lamp-tools{position:fixed;transform:translate(-50%,-100%);display:flex;flex-direction:column;align-items:stretch;gap:6px;min-width:320px;padding:6px;border:1px solid rgba(255,218,122,.42);border-radius:9px;background:rgba(4,11,18,.94);box-shadow:0 7px 22px rgba(0,0,0,.42);pointer-events:auto;color:#fff5cf;font:700 9px/1.2 system-ui,sans-serif}
.nexus-room-editor__lamp-toolbar{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.nexus-room-editor__lamp-tool{height:27px;padding:0 8px;border:1px solid rgba(255,230,155,.55);border-radius:6px;background:rgba(112,78,20,.92);color:#fff;font:800 9px/1 system-ui,sans-serif;cursor:pointer}
.nexus-room-editor__lamp-tool.is-off{background:rgba(65,69,75,.95);color:#c8cdd2}.nexus-room-editor__lamp-tool.is-fluorescent{background:rgba(44,84,108,.96)}
.nexus-room-editor__lamp-color{display:flex;align-items:center;gap:4px;height:27px;padding:0 5px;border:1px solid rgba(255,230,155,.35);border-radius:6px;background:rgba(18,24,30,.9)}
.nexus-room-editor__lamp-color span{font-size:8px}.nexus-room-editor__lamp-color input{width:25px;height:21px;padding:0;border:0;background:transparent;cursor:pointer}
.nexus-room-editor__lamp-advanced{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.nexus-room-editor__lamp-slider{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:5px;padding:4px 6px;border:1px solid rgba(255,230,155,.22);border-radius:6px;background:rgba(18,24,30,.72);white-space:nowrap}
.nexus-room-editor__lamp-slider span{font-size:8px}.nexus-room-editor__lamp-slider input{width:100%}.nexus-room-editor__lamp-slider strong{font-size:8px;color:#dff7ff;font-weight:800}
.nexus-room-editor__lamp-slider[hidden]{display:none!important}
.nexus-room-editor__lamp-fluorescent-size{display:flex;align-items:center;gap:6px;padding-top:2px;border-top:1px solid rgba(255,255,255,.12)}
.nexus-room-editor__lamp-fluorescent-size[hidden]{display:none!important}.nexus-room-editor__lamp-fluorescent-size label{display:grid;grid-template-columns:auto 70px;align-items:center;gap:4px;white-space:nowrap}.nexus-room-editor__lamp-fluorescent-size input{width:70px}.nexus-room-editor__lamp-tube-info{min-width:92px;color:#dff7ff;font-size:8px;white-space:nowrap}
.nexus-room-editor__lamp-measure{position:fixed;transform:translate(-50%,-50%);padding:5px 8px;border:1px solid rgba(255,218,122,.42);border-radius:7px;background:rgba(4,11,18,.88);color:#fff5cf;font:700 10px/1.3 system-ui,sans-serif;white-space:nowrap;pointer-events:none}

/* Step 16.28 · stair tab */
.nexus-room-editor__group select{min-width:118px;padding:7px 8px;border:1px solid rgba(143,216,255,.2);border-radius:8px;background:rgba(0,0,0,.22);color:#f5fbff;font:inherit}
.nexus-room-editor__group>[data-room-stair-delete]{justify-self:stretch;margin-top:4px}


/* Step 16.30 · automatic stair direction + direct stair gizmo */
.nexus-room-editor__stair-gizmo{position:fixed;inset:0;z-index:3;pointer-events:none}
.nexus-room-editor__stair-gizmo[hidden]{display:none!important}
.nexus-room-editor__stair-handle,.nexus-room-editor__stair-rotate,.nexus-room-editor__stair-delete{position:fixed;left:0;top:0;transform:translate(-50%,-50%);height:34px;padding:0 8px;border:2px solid rgba(237,248,255,.96);border-radius:10px;background:rgba(86,55,22,.97);color:#fff;box-shadow:0 5px 16px rgba(0,0,0,.44),0 0 0 4px rgba(255,198,110,.13);pointer-events:auto;touch-action:none;font:800 9px/1 system-ui,sans-serif;letter-spacing:.035em}
.nexus-room-editor__stair-handle{min-width:54px;cursor:ew-resize}
.nexus-room-editor__stair-handle.is-step{background:rgba(37,84,75,.97);border-color:rgba(181,255,230,.92);cursor:ns-resize}
.nexus-room-editor__stair-handle::after{content:attr(data-value);position:absolute;left:50%;top:calc(100% + 4px);transform:translateX(-50%);padding:2px 5px;border-radius:5px;background:rgba(4,10,16,.92);font-size:9px;white-space:nowrap}
.nexus-room-editor__stair-rotate{width:36px;padding:0;border-radius:50%;background:rgba(35,74,105,.97);border-color:rgba(177,229,255,.94);cursor:pointer;font-size:18px}
.nexus-room-editor__stair-delete{width:32px;min-width:32px;padding:0;border-radius:50%;background:rgba(130,30,38,.97);border-color:rgba(255,225,225,.96);cursor:pointer;font-size:17px}
.nexus-room-editor__stair-handle:hover,.nexus-room-editor__stair-handle.is-dragging,.nexus-room-editor__stair-rotate:hover,.nexus-room-editor__stair-delete:hover{filter:brightness(1.18);box-shadow:0 6px 20px rgba(0,0,0,.5),0 0 0 6px rgba(255,198,110,.19)}
.nexus-room-editor__stair-measure{position:fixed;transform:translate(-50%,-50%);max-width:360px;padding:5px 8px;border:1px solid rgba(255,198,110,.4);border-radius:7px;background:rgba(4,11,18,.9);color:#fff1d1;font:700 10px/1.3 system-ui,sans-serif;white-space:nowrap;pointer-events:none}


/* Step 16.34 · spline railings and stair metalwork */
.nexus-room-editor__stair-handle.is-rail{background:rgba(40,87,104,.97);border-color:rgba(184,239,255,.94);cursor:ns-resize}
.nexus-room-editor__stair-handle.is-post{background:rgba(72,72,92,.97);border-color:rgba(220,220,255,.94);cursor:ew-resize}
.nexus-room-editor__stair-handle.is-move{background:rgba(92,55,105,.97);border-color:rgba(240,203,255,.94);cursor:move}
.nexus-room-editor__group select[data-room-stair-select]{min-width:118px}

/* Step 16.42: door sensor geometry controls. The visible mat is also the semantic sensor zone. */
.nexus-room-editor__door-sensor-tools{position:fixed;left:0;top:0;transform:translate(-50%,-50%);display:grid;grid-template-columns:repeat(2,minmax(108px,1fr));gap:5px 7px;padding:7px;border:2px solid rgba(178,245,235,.94);border-radius:10px;background:rgba(18,76,68,.96);box-shadow:0 4px 14px rgba(0,0,0,.42),0 0 0 4px rgba(98,238,215,.12);color:#effffc;pointer-events:auto;z-index:4;font:800 9px/1 system-ui,sans-serif;letter-spacing:.03em}
.nexus-room-editor__door-sensor-tools[hidden]{display:none!important}.nexus-room-editor__door-sensor-tools label{display:grid;grid-template-columns:1fr 46px 10px;align-items:center;gap:4px;min-width:0}.nexus-room-editor__door-sensor-tools span{white-space:nowrap;color:rgba(239,255,252,.86)}.nexus-room-editor__door-sensor-tools input{width:46px;box-sizing:border-box;padding:3px 4px;border:1px solid rgba(255,255,255,.2);border-radius:5px;background:rgba(0,0,0,.28);color:#fff;text-align:right;font:800 10px/1 system-ui,sans-serif}.nexus-room-editor__door-sensor-tools b{font-size:9px;color:rgba(239,255,252,.7)}

.nexus-gallery-lightbox__image[data-gallery-preview-thumb="1"]{width:100%;min-height:min(52vh,620px);object-fit:cover}


/* Gallery 16.50: keep the visitor informed while foreground media is loading/repairing. */
.nexus-gallery-lightbox__media{position:relative}
.nexus-gallery-lightbox__loading[hidden]{display:none!important}
.nexus-gallery-lightbox__loading{
  position:absolute;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;gap:10px;
  pointer-events:none;color:#f5f8fc;font-size:14px;font-weight:700;letter-spacing:.01em;
  text-shadow:0 1px 3px rgba(0,0,0,.55);background:rgba(4,8,14,.34);border-radius:14px
}
.nexus-gallery-lightbox__loading[data-gallery-loading-mode="preview"]{
  inset:auto 14px 14px 14px;justify-content:center;width:max-content;max-width:calc(100% - 28px);margin:auto;
  padding:9px 13px;border:1px solid rgba(143,216,255,.18);border-radius:999px;background:rgba(5,11,19,.82);
  box-shadow:0 8px 28px rgba(0,0,0,.28);backdrop-filter:blur(8px)
}
.nexus-gallery-lightbox__loading-spinner{
  width:18px;height:18px;flex:0 0 18px;border:2px solid rgba(255,255,255,.24);border-top-color:#8fd8ff;border-radius:999px;
  animation:nexusGalleryImageLoadingSpin .8s linear infinite
}
@keyframes nexusGalleryImageLoadingSpin{to{transform:rotate(360deg)}}


/* Step 16.94: Day/Night controls inside Room-Labor. */
.nexus-room-editor__lab-select-row select{min-width:152px;max-width:190px;padding:7px 8px;border:1px solid rgba(143,216,255,.2);border-radius:8px;background:rgba(0,0,0,.22);color:#f5fbff;font:inherit}
.nexus-room-editor__lab-select-row select:focus-visible,.nexus-room-editor__lab-date-row input:focus-visible{outline:2px solid var(--np-accent,#8fd8ff);outline-offset:2px}
.nexus-room-editor__lab-date-row input[type=date]{width:148px;text-align:left;color-scheme:dark}
.nexus-room-editor__lab-time-row>span input[type=time]{width:108px;text-align:center;color-scheme:dark}
.nexus-room-editor__lab-select-row select:disabled,.nexus-room-editor__lab-date-row input:disabled,.nexus-room-editor__lab-time-row input:disabled{opacity:.5;cursor:not-allowed}

/* Step 16.99: Room Editor becomes a real movable/resizable admin window.
   The Room-Labor reuses the Testlabor master/detail pattern, while the
   structural Room/Stairs tools stay available as the admin-only additions. */
.nexus-room-editor__panel{
  right:18px;left:auto;top:92px;
  width:min(780px,calc(100vw - 36px));height:min(720px,calc(100vh - 118px));
  min-width:420px;min-height:280px;max-width:calc(100vw - 16px);max-height:calc(100vh - 16px);
  overflow:hidden;resize:both;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;
  container-type:inline-size;
}
.nexus-room-editor__header{cursor:move;touch-action:none;user-select:none;background:rgba(7,14,23,.985)}
.nexus-room-editor__header .nexus-room-editor__title{display:flex;flex-direction:column;gap:2px;min-width:0}
.nexus-room-editor__window-actions{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.nexus-room-editor__window-button,.nexus-room-editor__close{width:32px;height:32px;padding:0;border:1px solid rgba(255,255,255,.12);border-radius:9px;background:rgba(255,255,255,.04);color:inherit;font:800 18px/1 system-ui,sans-serif;cursor:pointer}
.nexus-room-editor__window-button:hover,.nexus-room-editor__close:hover{border-color:rgba(143,216,255,.45);background:rgba(143,216,255,.09)}
.nexus-room-editor__panel.is-window-dragging{box-shadow:0 24px 72px rgba(0,0,0,.56),0 0 0 1px rgba(121,231,255,.18)}
body.nexus-room-editor--window-dragging,body.nexus-room-editor--window-dragging *{user-select:none!important;cursor:move!important}
.nexus-room-editor__tab-panel{min-height:0;overflow:auto;overscroll-behavior:contain}
.nexus-room-editor__tab-panel[data-room-editor-tab-panel="lab"]{overflow:hidden;display:grid;grid-template-rows:minmax(0,1fr) auto}
.nexus-room-editor__tab-panel[data-room-editor-tab-panel="lab"][hidden]{display:none!important}
.nexus-room-editor__footer,.nexus-room-editor__lab-actions{position:static;z-index:2}
.nexus-room-editor__panel::after{content:'';position:absolute;right:3px;bottom:3px;width:12px;height:12px;pointer-events:none;opacity:.55;background:linear-gradient(135deg,transparent 0 45%,rgba(143,216,255,.35) 46% 54%,transparent 55% 66%,rgba(143,216,255,.55) 67% 75%,transparent 76%)}
.nexus-room-editor__panel.is-minimized{height:auto!important;min-height:0!important;width:min(330px,calc(100vw - 16px))!important;resize:none;grid-template-rows:auto;overflow:hidden}
.nexus-room-editor__panel.is-minimized .nexus-room-editor__tabs,
.nexus-room-editor__panel.is-minimized .nexus-room-editor__tab-panel,
.nexus-room-editor__panel.is-minimized .nexus-room-editor__footer{display:none!important}
.nexus-room-editor__panel.is-minimized::after{display:none}

/* Testlabor-style Room-Labor master/detail workbench. */
.nexus-room-editor__lab-body{display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:9px;min-height:0;height:100%;padding:10px;overflow:hidden}
.nexus-room-editor__lab-note{margin:0}
.nexus-room-editor__lab-categories{display:flex;gap:6px;min-width:0;padding:2px;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}
.nexus-room-editor__lab-category{flex:0 0 auto;min-height:36px;display:flex;align-items:center;gap:7px;padding:7px 10px;border:1px solid rgba(121,231,255,.12);border-radius:9px;background:rgba(4,10,16,.42);color:rgba(214,234,246,.66);font:inherit;font-size:10.5px;cursor:pointer;white-space:nowrap}
.nexus-room-editor__lab-category:hover{border-color:rgba(121,231,255,.24);background:rgba(121,231,255,.05);color:#eefaff}
.nexus-room-editor__lab-category.is-active{border-color:rgba(121,231,255,.42);background:rgba(121,231,255,.12);color:#f4fbff;box-shadow:inset 0 0 0 1px rgba(121,231,255,.05)}
.nexus-room-editor__lab-category small{display:inline-grid;place-items:center;min-width:20px;height:18px;padding:0 5px;border-radius:999px;background:rgba(148,163,184,.10);color:rgba(214,234,246,.5);font-size:8px}
.nexus-room-editor__lab-category.is-active small{background:rgba(121,231,255,.15);color:#9cecff}
.nexus-room-editor__lab-workbench{display:grid;grid-template-columns:minmax(155px,190px) minmax(0,1fr);gap:9px;min-height:0;align-items:stretch}
.nexus-room-editor__lab-nav{display:grid;align-content:start;gap:4px;min-height:0;padding:6px;border:1px solid rgba(121,231,255,.12);border-radius:9px;background:rgba(4,10,16,.42);overflow:auto}
.nexus-room-editor__lab-nav-heading{display:grid;gap:2px;margin:0 2px 5px;padding:6px 6px 9px;border-bottom:1px solid rgba(121,231,255,.10)}
.nexus-room-editor__lab-nav-heading strong{color:#eaf8ff;font-size:10px;letter-spacing:.04em;text-transform:uppercase}
.nexus-room-editor__lab-nav-heading small{color:rgba(214,234,246,.45);font-size:8.5px;line-height:1.35}
.nexus-room-editor__lab-nav-item{width:100%;min-height:36px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 8px;border:1px solid transparent;border-radius:7px;background:transparent;color:rgba(214,234,246,.62);font:inherit;font-size:10.5px;text-align:left;cursor:pointer}
.nexus-room-editor__lab-nav-item:hover{background:rgba(121,231,255,.05);color:#eefaff}
.nexus-room-editor__lab-nav-item.is-active{border-color:rgba(121,231,255,.30);background:rgba(121,231,255,.10);color:#f4fbff}
.nexus-room-editor__lab-nav-item small{display:inline-grid;place-items:center;min-width:22px;height:20px;padding:0 5px;border-radius:999px;background:rgba(148,163,184,.10);color:rgba(214,234,246,.5);font-size:8px}
.nexus-room-editor__lab-nav-item.is-active small{background:rgba(121,231,255,.13);color:#9cecff}
.nexus-room-editor__lab-detail{min-width:0;min-height:0;overflow:auto;border:1px solid rgba(121,231,255,.10);border-radius:9px;background:rgba(4,10,16,.22);overscroll-behavior:contain}
.nexus-room-editor__lab-card{display:grid;align-content:start;gap:10px;min-height:100%;padding:11px}
.nexus-room-editor__lab-card>header{padding-bottom:8px;border-bottom:1px solid rgba(121,231,255,.10)}
.nexus-room-editor__lab-card>header>div{display:grid;gap:3px}.nexus-room-editor__lab-card strong{color:#f4fbff;font-size:12px}.nexus-room-editor__lab-card small{color:rgba(214,234,246,.52);font-size:9.5px;line-height:1.4}
.nexus-room-editor__lab-breadcrumb{color:#76ddff;font-size:8px;font-weight:800;letter-spacing:.09em;text-transform:uppercase}
.nexus-room-editor__lab-control-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.nexus-room-editor__lab-control{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px 10px;align-items:center;min-width:0;padding:9px;border:1px solid rgba(255,255,255,.06);border-radius:8px;background:rgba(255,255,255,.025);font-size:11px}
.nexus-room-editor__lab-control>span:first-child{min-width:0;color:rgba(229,242,250,.78)}
.nexus-room-editor__lab-control input[type=number]{width:82px;padding:6px 7px;border:1px solid rgba(143,216,255,.18);border-radius:7px;background:rgba(0,0,0,.24);color:#f5fbff;text-align:right;font:inherit}
.nexus-room-editor__lab-control.nexus-room-editor__range-row>input[type=range]{grid-column:1/-1;width:100%}
.nexus-room-editor__lab-control select{min-width:128px;max-width:190px;padding:6px 7px}
.nexus-room-editor__lab-control input[type=color]{width:46px;height:30px}
.nexus-room-editor__lab-control input[type=checkbox]{width:19px;height:19px}

@container (max-width:600px){
  .nexus-room-editor__lab-workbench{grid-template-columns:1fr}
  .nexus-room-editor__lab-nav{grid-template-columns:repeat(2,minmax(0,1fr));max-height:150px}
  .nexus-room-editor__lab-control-grid{grid-template-columns:1fr}
}
@container (max-width:470px){
  .nexus-room-editor__lab-categories{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible}
  .nexus-room-editor__lab-category{min-width:0;justify-content:space-between}
  .nexus-room-editor__lab-nav{grid-template-columns:1fr}
}
@media(max-width:720px){
  .nexus-room-editor__panel{right:10px;left:auto;top:76px;width:min(620px,calc(100vw - 20px));height:min(660px,calc(100vh - 96px));min-width:min(360px,calc(100vw - 20px));min-height:240px}
}
.nexus-room-editor__panel{box-sizing:border-box}

/* Step 17.25: free-form object-name/prefix list for window reflection excludes. */
.nexus-room-editor__lab-text-row input[type=text]{
  width:min(100%,360px);min-width:180px;box-sizing:border-box;padding:7px 9px;
  border:1px solid rgba(143,216,255,.2);border-radius:8px;background:rgba(0,0,0,.22);
  color:#f5fbff;font:inherit
}
.nexus-room-editor__lab-text-row input[type=text]:focus-visible{outline:2px solid var(--np-accent,#8fd8ff);outline-offset:2px}
.nexus-room-editor__lab-text-row input[type=text]:disabled{opacity:.5;cursor:not-allowed}
/* Step 17.50: RoomDocumentStore status + history controls. */
.nexus-room-editor__document-state{display:grid;grid-template-columns:auto auto minmax(0,1fr);align-items:center;gap:6px;padding:7px 12px;border-bottom:1px solid rgba(255,255,255,.07);background:rgba(2,9,15,.68);font:750 9px/1.2 system-ui,sans-serif;letter-spacing:.04em}
.nexus-room-editor__revision,.nexus-room-editor__dirty{display:inline-flex;align-items:center;min-height:22px;padding:0 7px;border:1px solid rgba(143,216,255,.2);border-radius:999px;background:rgba(22,44,59,.6);white-space:nowrap}
.nexus-room-editor__dirty[data-state="saved"]{border-color:rgba(122,223,172,.28);color:#bdf4d6;background:rgba(20,78,54,.25)}
.nexus-room-editor__dirty[data-state="dirty"]{border-color:rgba(255,213,113,.34);color:#ffe4a3;background:rgba(112,78,20,.28)}
.nexus-room-editor__dirty[data-state="conflict"]{border-color:rgba(255,110,121,.46);color:#ffc1c7;background:rgba(123,29,40,.34)}
.nexus-room-editor__selection{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:rgba(221,238,249,.7);text-align:right;text-transform:none;letter-spacing:0}
.nexus-room-editor.has-document-conflict .nexus-room-editor__panel{border-color:rgba(255,110,121,.5);box-shadow:0 20px 58px rgba(0,0,0,.42),0 0 0 1px rgba(255,110,121,.14)}
.nexus-room-editor__footer-actions{display:flex!important;align-items:center;justify-content:space-between!important;gap:8px}
.nexus-room-editor__history-actions{display:inline-flex;gap:5px;margin-right:auto}
.nexus-room-editor__history-actions button{min-width:36px;padding-inline:8px;font-size:18px;line-height:1}
.nexus-room-editor.is-dirty .nexus-room-editor__save{box-shadow:0 0 0 1px rgba(143,216,255,.13),0 0 18px rgba(77,174,225,.12)}
@media(max-width:720px){.nexus-room-editor__document-state{grid-template-columns:auto auto}.nexus-room-editor__selection{grid-column:1/-1;text-align:left}.nexus-room-editor__footer-actions{flex-wrap:wrap}.nexus-room-editor__history-actions{margin-right:0}}


/* Step 17.56f: exterior graffiti editor gizmo. */
.nexus-room-editor__graffiti-gizmo{position:fixed;inset:0;z-index:4;pointer-events:none}
.nexus-room-editor__graffiti-gizmo[hidden]{display:none!important}
.nexus-room-editor__graffiti-outline{position:fixed;inset:0;width:100vw;height:100vh;overflow:visible;pointer-events:none}
.nexus-room-editor__graffiti-outline polygon{fill:rgba(58,232,210,.07);stroke:#69f6df;stroke-width:2;stroke-dasharray:7 4;stroke-linejoin:round;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 6px rgba(60,255,224,.72))}
.nexus-room-editor__graffiti-handle,.nexus-room-editor__graffiti-delete{position:fixed;left:0;top:0;transform:translate(-50%,-50%);pointer-events:auto;touch-action:none;color:#fff;box-shadow:0 5px 16px rgba(0,0,0,.48);font:900 14px/1 system-ui,sans-serif}
.nexus-room-editor__graffiti-handle{width:30px;height:30px;padding:0;border:2px solid rgba(183,255,242,.98);border-radius:8px;background:rgba(18,104,94,.96)}
.nexus-room-editor__graffiti-handle.is-move{width:38px;height:38px;border-radius:50%;cursor:move;background:rgba(18,118,105,.97);font-size:18px}
.nexus-room-editor__graffiti-handle.is-scale{cursor:nwse-resize;background:rgba(24,77,99,.97)}
.nexus-room-editor__graffiti-handle.is-tr,.nexus-room-editor__graffiti-handle.is-bl{cursor:nesw-resize}
.nexus-room-editor__graffiti-delete{width:30px;height:30px;padding:0;border:2px solid rgba(255,225,225,.98);border-radius:50%;background:rgba(139,31,43,.97);cursor:pointer;font-size:17px}
.nexus-room-editor__graffiti-handle:hover,.nexus-room-editor__graffiti-handle.is-dragging,.nexus-room-editor__graffiti-delete:hover{filter:brightness(1.18);box-shadow:0 6px 20px rgba(0,0,0,.52),0 0 0 6px rgba(74,242,216,.18)}
.nexus-room-editor__graffiti-measure{position:fixed;transform:translate(-50%,0);padding:5px 8px;border:1px solid rgba(105,246,223,.45);border-radius:7px;background:rgba(4,13,18,.92);color:#eafffb;font:800 10px/1.3 system-ui,sans-serif;white-space:nowrap;pointer-events:none;box-shadow:0 5px 16px rgba(0,0,0,.42)}
/* Step 17.56j: explicit graffiti asset picker + thumbnail. */
.nexus-room-editor__graffiti-picker{display:grid!important;grid-template-columns:30px minmax(180px,1fr) 30px;gap:6px!important;align-items:center;min-width:min(100%,420px)}
.nexus-room-editor__graffiti-picker select{min-width:0;width:100%}
.nexus-room-editor__graffiti-cycle{width:30px;height:30px;padding:0;border:1px solid rgba(105,246,223,.35);border-radius:7px;background:rgba(58,232,210,.08);color:#eafffb;font:900 19px/1 system-ui,sans-serif;cursor:pointer}
.nexus-room-editor__graffiti-cycle:hover:not(:disabled){background:rgba(58,232,210,.16);border-color:rgba(105,246,223,.7)}
.nexus-room-editor__graffiti-cycle:disabled{opacity:.3;cursor:not-allowed}
.nexus-room-editor__graffiti-preview-wrap{display:flex;align-items:center;justify-content:center;min-height:70px;margin-top:8px;padding:7px;border:1px solid rgba(255,255,255,.08);border-radius:8px;background:rgba(0,0,0,.14)}
.nexus-room-editor__graffiti-preview{display:block;max-width:100%;max-height:110px;object-fit:contain}
.nexus-room-editor__graffiti-preview[hidden]{display:none!important}

/* Step 17.66d: owner/admin technical live monitor. Read-only and pointer-transparent
   so it can stay on the left during room editing without stealing 3D input. */
.nexus-room-editor__tech{position:fixed;left:18px;top:92px;z-index:3;width:min(290px,calc(100vw - 36px));padding:11px 12px 10px;border:1px solid rgba(121,231,255,.24);border-radius:12px;background:rgba(4,11,18,.90);box-shadow:0 14px 42px rgba(0,0,0,.38);backdrop-filter:blur(12px);pointer-events:none;font:700 10.5px/1.28 ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",monospace;color:#dff7ff}
.nexus-room-editor__tech[hidden]{display:none!important}
.nexus-room-editor__tech-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px;padding-bottom:7px;border-bottom:1px solid rgba(255,255,255,.08)}
.nexus-room-editor__tech-head strong{font-size:11px;letter-spacing:.12em;color:#f3fbff}.nexus-room-editor__tech-head span{padding:2px 6px;border:1px solid rgba(121,231,255,.28);border-radius:999px;color:#91ecff;font-size:9px;letter-spacing:.08em}
.nexus-room-editor__tech[data-render-state=paused] .nexus-room-editor__tech-head span{border-color:rgba(255,205,116,.36);color:#ffd47d}
.nexus-room-editor__tech-grid{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;align-items:baseline}
.nexus-room-editor__tech-grid>span{color:rgba(202,226,240,.58);font-weight:650}.nexus-room-editor__tech-grid>strong{max-width:156px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#f3fbff;text-align:right;font-weight:850}
.nexus-room-editor__tech[data-fps-state=good] [data-room-tech=fps]{color:#9fffc5}.nexus-room-editor__tech[data-fps-state=warn] [data-room-tech=fps]{color:#ffe28e}.nexus-room-editor__tech[data-fps-state=bad] [data-room-tech=fps]{color:#ffaaa7}
.nexus-room-editor__tech-detail{display:grid;grid-template-columns:44px minmax(0,1fr);gap:8px;margin-top:7px;padding-top:7px;border-top:1px solid rgba(255,255,255,.06)}
.nexus-room-editor__tech-detail span{color:rgba(202,226,240,.52)}.nexus-room-editor__tech-detail strong{min-width:0;overflow-wrap:anywhere;color:#e9faff;font-weight:750}
.nexus-room-editor__tech-note{margin:8px 0 0;color:rgba(202,226,240,.42);font-size:8.5px;line-height:1.35;font-weight:600}
@media(max-width:760px){.nexus-room-editor__tech{left:10px;top:auto;bottom:10px;width:min(265px,calc(100vw - 20px));max-height:42vh;overflow:hidden}.nexus-room-editor__tech-note{display:none}}
/* Step 17.66e: renderer backend switch lives inside the technical HUD. */
.nexus-room-editor__tech-backend{margin:0 0 8px;padding:0 0 8px;border-bottom:1px solid rgba(255,255,255,.07);pointer-events:auto}
.nexus-room-editor__tech-backend label{display:flex;align-items:center;justify-content:space-between;gap:10px;color:rgba(202,226,240,.68)}
.nexus-room-editor__tech-backend select{min-width:116px;padding:4px 7px;border:1px solid rgba(121,231,255,.28);border-radius:7px;background:#09131d;color:#ecfbff;font:800 10px/1.2 ui-monospace,SFMono-Regular,Consolas,monospace;outline:none}
.nexus-room-editor__tech-backend select:focus{border-color:rgba(121,231,255,.65);box-shadow:0 0 0 2px rgba(121,231,255,.10)}
.nexus-room-editor__tech-backend small{display:block;margin-top:5px;color:rgba(202,226,240,.48);font-size:8.5px;line-height:1.3;font-weight:650;overflow-wrap:anywhere}

/* 18.00a-spike-1: persistent performance spike collector; diagnostics only. */
.nexus-performance-spikes{position:fixed;right:18px;bottom:68px;z-index:121;width:min(440px,calc(100vw - 36px));max-height:min(55vh,520px);overflow:hidden;border:1px solid rgba(255,75,75,.66);border-radius:7px;background:rgba(28,5,8,.96);box-shadow:0 16px 46px rgba(0,0,0,.52),0 0 0 1px rgba(255,68,68,.08) inset;backdrop-filter:blur(16px);color:#ffe7e7;font-size:12px;letter-spacing:.01em;pointer-events:auto}
.nexus-performance-spikes[hidden]{display:none!important}.nexus-performance-spikes__header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 10px;border-bottom:1px solid rgba(255,92,92,.24);background:rgba(122,12,20,.28)}
.nexus-performance-spikes__title{display:flex;align-items:center;gap:8px;font-weight:700}.nexus-performance-spikes__title strong{display:inline-flex;min-width:20px;height:20px;align-items:center;justify-content:center;padding:0 5px;border-radius:10px;background:#ff3c4c;color:#fff;font-size:11px}.nexus-performance-spikes__icon{display:inline-flex;width:20px;height:20px;align-items:center;justify-content:center;border-radius:50%;background:#ff3c4c;color:#fff;font-weight:900}
.nexus-performance-spikes__actions{display:flex;align-items:center;gap:6px;margin-left:auto}.nexus-performance-spikes__copy-status{min-width:0;max-width:150px;color:#ffb9be;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nexus-performance-spikes__copy-status[data-ok="1"]{color:#aef3bd}.nexus-performance-spikes__copy,.nexus-performance-spikes__close{appearance:none;border:0;background:transparent;color:#ffd7d7;cursor:pointer;opacity:.82}.nexus-performance-spikes__copy{display:inline-flex;width:27px;height:27px;align-items:center;justify-content:center;border-radius:5px}.nexus-performance-spikes__copy svg{width:17px;height:17px;fill:currentColor}.nexus-performance-spikes__copy:hover{opacity:1;color:#fff;background:rgba(255,255,255,.08)}.nexus-performance-spikes__close{font:700 22px/1 system-ui,sans-serif;padding:0 2px}.nexus-performance-spikes__close:hover{opacity:1;color:#fff}.nexus-performance-spikes__list{max-height:440px;overflow:auto;padding:6px}
.nexus-performance-spikes__item{padding:8px 9px;border:1px solid rgba(255,100,100,.19);border-radius:5px;background:rgba(47,8,12,.72)}.nexus-performance-spikes__item+.nexus-performance-spikes__item{margin-top:6px}.nexus-performance-spikes__item[data-severity="critical"]{border-color:rgba(255,54,70,.56);background:rgba(90,7,14,.62)}
.nexus-performance-spikes__item-head{display:flex;gap:9px;align-items:flex-start}.nexus-performance-spikes__item-head strong{flex:0 0 auto;color:#ff7b84;font-variant-numeric:tabular-nums}.nexus-performance-spikes__item-head span{font-weight:700;color:#fff}.nexus-performance-spikes__detail{margin-top:4px;color:#ffd0d2}.nexus-performance-spikes__meta{margin-top:4px;color:#cfa7aa;font-size:10px}
@media(max-width:700px){.nexus-performance-spikes{right:10px;bottom:64px;width:calc(100vw - 20px)}}

/* Step 18.08c - temporary admin disco lighting mode */
.nexus-room-editor__disco{transition:border-color .18s ease,background .18s ease,box-shadow .18s ease,color .18s ease}
.nexus-room-editor__disco.is-active{border-color:rgba(255,116,238,.76);background:linear-gradient(120deg,rgba(255,56,196,.24),rgba(75,190,255,.22),rgba(111,255,177,.18));color:#fff;box-shadow:0 0 0 1px rgba(255,116,238,.12),0 0 18px rgba(128,92,255,.24)}

/* Step 18.08e - Disco emitted-light / GI saturation controls */
.nexus-room-editor__disco-tools{display:flex;align-items:center;justify-content:flex-end;gap:.5rem;flex-wrap:wrap}
.nexus-room-editor__disco-control{display:grid;grid-template-columns:auto minmax(74px,110px) 3.4em;align-items:center;gap:.35rem;padding:.28rem .45rem;border:1px solid rgba(124,188,224,.18);border-radius:8px;background:rgba(4,13,20,.46);font-size:.68rem;letter-spacing:.04em;color:rgba(224,241,250,.82)}
.nexus-room-editor__disco-control input[type=range]{width:100%;min-width:74px;accent-color:#e65cff}
.nexus-room-editor__disco-control output{font-variant-numeric:tabular-nums;text-align:right;color:#fff}

/* Step 18.08l: one navigation model for the whole Room Editor.
   Room and stairs now participate in the same object-oriented workspace bar. */
.nexus-room-editor__panel{
  grid-template-rows:auto auto auto minmax(0,1fr) auto;
}
.nexus-room-editor__workspace-categories{
  padding:8px 10px;
  border-bottom:1px solid rgba(255,255,255,.08);
  background:rgba(7,14,23,.98);
}
.nexus-room-editor__static-workbench-body{
  grid-template-rows:auto minmax(0,1fr);
}
.nexus-room-editor__tab-panel[data-room-editor-tab-panel="room"],
.nexus-room-editor__tab-panel[data-room-editor-tab-panel="stairs"]{
  overflow:hidden;
}
.nexus-room-editor__static-workbench-body>.nexus-room-editor__lab-workbench{
  min-height:0;
}
.nexus-room-editor__static-workbench-body .nexus-room-editor__lab-detail>[hidden]{display:none!important}
.nexus-room-editor__panel.is-minimized .nexus-room-editor__workspace-categories{display:none!important}
@container (max-width:470px){
  .nexus-room-editor__workspace-categories{grid-template-columns:repeat(2,minmax(0,1fr));max-height:118px;overflow:auto}
}
.nexus-room-editor__tab-panel[data-room-editor-tab-panel="lab"] .nexus-room-editor__lab-body{
  grid-template-rows:auto minmax(0,1fr);
}


/* Nexus 3D · Step 18.10x: compact Owner toolbar in the top header. */
body>.nexus-3d-camera-admin{display:none!important}
.nexus-page-account>.nexus-3d-camera-admin{
  position:relative;
  inset:auto;
  z-index:auto;
  display:flex;
  flex-direction:row;
  align-items:center;
  gap:5px;
  margin-left:2px;
  padding-left:9px;
  border-left:1px solid rgba(143,216,255,.16);
  pointer-events:auto;
}
.nexus-page-account>.nexus-3d-camera-admin[hidden]{display:none!important}
.nexus-page-account>.nexus-3d-camera-admin .nexus-room-editor__toggle,
.nexus-page-account>.nexus-3d-camera-admin .nexus-3d-camera-save{
  position:relative;
  inset:auto;
  z-index:auto;
  width:31px;
  min-width:31px;
  height:31px;
  min-height:31px;
  display:grid;
  place-items:center;
  padding:0;
  border:1px solid var(--np-line);
  border-radius:8px;
  background:rgba(255,255,255,.035);
  color:var(--np-text,#f4f7fb);
  box-shadow:none;
  backdrop-filter:none;
  font:inherit;
  font-size:14px;
  line-height:1;
  cursor:pointer;
  transition:transform .15s ease,border-color .15s ease,background .15s ease,color .15s ease;
}
.nexus-page-account>.nexus-3d-camera-admin .nexus-room-editor__toggle:hover,
.nexus-page-account>.nexus-3d-camera-admin .nexus-room-editor__toggle.is-active,
.nexus-page-account>.nexus-3d-camera-admin .nexus-3d-camera-save:hover{
  transform:translateY(-1px);
  border-color:rgba(127,255,212,.42);
  background:rgba(127,255,212,.08);
}
.nexus-page-account>.nexus-3d-camera-admin .nexus-room-editor__toggle.is-active{color:var(--np-accent2,#7fffd4)}
.nexus-page-account>.nexus-3d-camera-admin .nexus-room-editor__toggle[hidden]{display:none!important}
.nexus-page-account>.nexus-3d-camera-admin .nexus-3d-camera-save.is-saved{border-color:rgba(120,235,177,.58);color:#8ff0c8}
.nexus-page-account>.nexus-3d-camera-admin .nexus-3d-camera-save:disabled{opacity:.58;cursor:wait;transform:none}
.nexus-page-account>.nexus-3d-camera-admin .nexus-3d-camera-mode{
  position:relative;
  min-height:31px;
  display:flex;
  grid-template-columns:none;
  align-items:center;
  gap:3px;
  padding:0 4px 0 7px;
  border:1px solid var(--np-line);
  border-radius:8px;
  background:rgba(255,255,255,.035);
  box-shadow:none;
  backdrop-filter:none;
  font-size:11px;
  font-weight:750;
}
.nexus-page-account>.nexus-3d-camera-admin .nexus-3d-toolbar-icon{font-size:11px;color:var(--np-accent,#8fd8ff)}
.nexus-page-account>.nexus-3d-camera-admin .nexus-3d-camera-mode select{
  width:62px;
  min-height:27px;
  padding:2px 18px 2px 3px;
  border:0;
  border-radius:6px;
  background:transparent;
  color:inherit;
  font:inherit;
  font-size:10px;
  font-weight:800;
}
.nexus-page-account>.nexus-3d-camera-admin .nexus-3d-camera-mode:hover{border-color:rgba(143,216,255,.42);background:rgba(143,216,255,.06)}
.nexus-page-account>.nexus-3d-camera-admin .nexus-3d-camera-rotation{
  position:relative;
  min-height:31px;
  height:31px;
  display:flex;
  align-items:center;
  gap:4px;
  padding:0 6px;
  border:1px solid var(--np-line);
  border-radius:8px;
  background:rgba(255,255,255,.035);
  box-shadow:none;
  backdrop-filter:none;
  font-size:13px;
  line-height:1;
}
.nexus-page-account>.nexus-3d-camera-admin .nexus-3d-camera-rotation:hover{border-color:rgba(143,216,255,.42);background:rgba(143,216,255,.06)}
.nexus-page-account>.nexus-3d-camera-admin .nexus-3d-camera-rotation input{width:13px;height:13px;margin:0;accent-color:var(--np-accent,#8fd8ff)}
.nexus-page-account>.nexus-3d-camera-admin .nexus-3d-camera-save__status{
  position:absolute;
  top:calc(100% + 9px);
  right:0;
  z-index:90;
  width:max-content;
  max-width:min(320px,calc(100vw - 30px));
  padding:6px 9px;
  border:1px solid rgba(143,216,255,.14);
  border-radius:8px;
  background:rgba(5,12,20,.96);
  box-shadow:0 8px 24px rgba(0,0,0,.32);
}
.nexus-3d-toolbar-tip{position:relative}
.nexus-3d-toolbar-tip::after{
  content:attr(data-tooltip);
  position:absolute;
  top:calc(100% + 9px);
  left:50%;
  z-index:95;
  transform:translate(-50%,-2px);
  padding:6px 8px;
  border:1px solid rgba(143,216,255,.16);
  border-radius:7px;
  background:rgba(5,12,20,.97);
  color:#eaf7ff;
  box-shadow:0 8px 22px rgba(0,0,0,.32);
  font-size:10px;
  font-weight:700;
  line-height:1.2;
  white-space:nowrap;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity .12s ease,transform .12s ease,visibility .12s ease;
}
.nexus-3d-toolbar-tip:hover::after,.nexus-3d-toolbar-tip:focus-within::after{
  opacity:1;
  visibility:visible;
  transform:translate(-50%,0);
}
@media(max-width:900px){
  .nexus-page-account>.nexus-3d-camera-admin{padding-left:6px;gap:4px}
  .nexus-page-account>.nexus-3d-camera-admin .nexus-3d-camera-mode select{width:57px}
}
@media(max-width:620px){
  .nexus-page-account>.nexus-3d-camera-admin .nexus-3d-toolbar-icon{display:none}
  .nexus-page-account>.nexus-3d-camera-admin .nexus-3d-camera-mode{padding-left:3px}
  .nexus-page-account>.nexus-3d-camera-admin .nexus-3d-camera-mode select{width:53px}
}
