/* NodeDesk Glass — shared presentation layer. Application behavior stays in hub.js. */
:root:root:root:root {
 --bg:#070d12;--paper:#070d12;--paper-2:#101d25;--ink:#edf5f4;--ink-soft:#a0afb8;
 --rule:#d9fff016;--rule-strong:#d9fff02d;--accent:#5ae7bb;--accent-press:#8af2ce;
 --accent-wash:#5ae7bb12;--ok:#5ae7bb;--green:#5ae7bb;--red:#fa7b91;--warn:#e7bd76;--anomaly:#e7bd76;--anomaly-wash:#e7bd7615;
 --panel:#122129;--panel-2:#182a32;--panel-ink:#edf5f4;--panel-soft:#a0b4bc;--panel-line:#d9fff018;--panel-cyan:#5ae7bb;--panel-ok:#5ae7bb;--panel-anomaly:#e7bd76;
 --console:#0a151c;--console-2:#122129;--console-ink:#edf5f4;--console-soft:#a0b4bc;--console-line:#d9fff018;--console-cyan:#5ae7bb;
 --font-display:'Manrope','Inter',system-ui,sans-serif;--font-body:'DM Sans','Inter',system-ui,sans-serif;
 --grad:linear-gradient(110deg,#ceffe9,#51ddb3 65%,#6dcbd5);--button-ink:#08291f;--radius:16px;
 --surface-shadow:0 18px 48px #00000024;--shadow:0 24px 70px #0007;--grid-line:transparent;
 --glass-surface:linear-gradient(135deg,#14272e,#0e1922);--glass-soft:linear-gradient(135deg,#ffffff06,#ffffff02);
 --halo:#27c79a13;--header-surface:#0b151cf5;color-scheme:dark;
}
:root:root:root:root[data-theme="light"] {
 --bg:#f1f8f6;--paper:#f1f8f6;--paper-2:#ffffff;--ink:#142b2d;--ink-soft:#526b70;
 --rule:#173c3518;--rule-strong:#173c3530;--accent:#087f60;--accent-press:#05694e;--accent-wash:#087f6010;
 --ok:#087f60;--green:#087f60;--red:#be3550;--warn:#946012;--anomaly:#946012;--anomaly-wash:#94601210;
 --button-ink:#fff;--grad:linear-gradient(110deg,#163e38,#087f60 65%,#247d88);
 --glass-surface:linear-gradient(135deg,#ffffff,#edf6f3);--glass-soft:linear-gradient(135deg,#ffffff,#f7fbfa);
 --halo:#24b78d0d;--header-surface:#f4faf7f5;--surface-shadow:0 14px 38px #0d3b2510;--shadow:0 24px 70px #0d3b2525;color-scheme:light;
}
html{scroll-padding-top:100px}body{background:radial-gradient(ellipse 950px 650px at 85% 0,var(--halo),transparent 80%),var(--paper);font-family:var(--font-body)}
h1,h2,h3,h4{font-family:var(--font-display)}::selection{background:var(--accent);color:var(--button-ink)}
body.framed:after{display:none}.brand .wm{border:0;padding-left:2px;letter-spacing:-.7px;font-size:1.15rem}.brand svg,.brand img{flex-shrink:0}
html .btn{border-radius:9px;transition:transform .2s ease,border-color .2s ease,background .2s ease;position:relative}
html .btn.primary,html .primary{background:var(--accent);border-color:var(--accent);color:var(--button-ink)}
html .btn.primary:hover,html .primary:hover{background:var(--accent-press);border-color:var(--accent-press)}
html .btn:active{transform:scale(.98)}button:disabled{opacity:.55;cursor:not-allowed}
input:not([type="checkbox"]):not([type="radio"]),textarea,select{border-radius:9px;accent-color:var(--accent)}
input[type="checkbox"],input[type="radio"]{accent-color:var(--accent)}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}a,button{-webkit-tap-highlight-color:transparent}
/* Public pages: original text, navigation, document metadata and controls retained. */
.nd-public .topbar{background:var(--header-surface);border-color:var(--rule);box-shadow:0 5px 20px #00000008}
.nd-public .topbar-in{min-height:86px;flex-wrap:wrap;gap:14px 20px}.nd-public .nav{gap:20px;margin-left:auto}
.nd-public .nav a{font-family:var(--font-body);font-size:12px;letter-spacing:0;text-transform:none;color:var(--ink-soft)}
.nd-public .topbar .tools{gap:9px}.nd-public .status{font-size:8px;letter-spacing:.5px}.nd-public .enter{font-family:var(--font-body);font-size:11px;letter-spacing:0;text-transform:none;padding:10px 14px;border-radius:8px}
.nd-public .masthead{background:transparent;border-bottom:1px solid var(--rule)}.nd-public .masthead-in{font-size:9px;letter-spacing:.7px;padding-block:13px}
.nd-public .hero{padding-block:85px 80px}.nd-public .hero-grid{gap:50px;grid-template-columns:1.05fr 1fr}
.nd-public .hero h1{font-size:clamp(38px,4.6vw,65px);font-weight:500;line-height:1.12;letter-spacing:-2.8px;text-wrap:balance}
.nd-public .grad{background:var(--grad);background-clip:text;-webkit-background-clip:text;color:transparent}
.nd-public .hero .eyebrow{display:inline-flex;padding:7px 12px;border:1px solid var(--rule-strong);border-radius:30px;color:var(--accent);background:var(--accent-wash);font-size:9px;letter-spacing:1px}
.nd-public .lead{font-size:15px;line-height:1.85;margin-top:24px}.nd-public .hero-actions{gap:14px;margin-top:29px}.nd-public .hero-note{gap:10px 15px}.nd-public .hero-note span{font-family:var(--font-body);font-size:10px;letter-spacing:0;text-transform:none}
.nd-public .panel{background:linear-gradient(135deg,#1a2d32,#101923);border:1px solid var(--panel-line);border-radius:16px;box-shadow:var(--surface-shadow)}
.nd-public .id-panel{max-width:530px;padding:25px 27px;transform:perspective(1400px) rotateX(var(--nd-tilt-x,2deg)) rotateY(var(--nd-tilt-y,-4deg));transition:transform .45s ease;box-shadow:0 30px 65px #00000030}
.nd-public .id-panel:before{display:block;content:'';position:absolute;inset:0 20% auto;height:1px;background:linear-gradient(90deg,transparent,#75ebc980,transparent)}
.nd-public .id-panel .head{font-family:var(--font-display);font-size:12px;letter-spacing:0;text-transform:none;color:var(--panel-ink);padding-bottom:18px}
.nd-public .id-row{font-size:10px;gap:10px;padding:11px 0}.nd-public .readout{background:#08161b;border-radius:10px;border-color:var(--panel-line);padding:16px}.nd-public .spark{height:65px}.nd-public .gauge{font-size:9px}.nd-public .id-foot{font-size:8px;letter-spacing:.4px}
.nd-public .strip{background:transparent}.nd-public .strip-in{padding-block:23px;gap:16px 24px}.nd-public .strip-in span{font-family:var(--font-body);font-size:10px;letter-spacing:1px}
.nd-public .band{padding-block:85px}.nd-public .band.alt{background:linear-gradient(100deg,var(--halo),transparent);border-color:var(--rule)}
.nd-public .sec-head{max-width:760px;margin-bottom:34px}.nd-public .sec-head h2{font-weight:500;font-size:clamp(29px,3.5vw,44px);line-height:1.2;letter-spacing:-1.4px}.nd-public .sec-head p{font-size:14px;line-height:1.8}.nd-public .sec-head .k{font-family:var(--font-body);font-size:10px;letter-spacing:1.8px}
.nd-public .seq{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;max-width:none;border:0;align-items:start}
.nd-public .step{grid-template-columns:30px minmax(0,1fr);gap:15px;padding:26px;border:1px solid var(--rule);border-radius:16px;background:var(--glass-soft);height:100%;transition:transform .25s ease,border-color .25s ease}
.nd-public .step .n{font-size:11px;padding-top:4px}.nd-public .step h3{font-size:18px;font-weight:600;letter-spacing:-.3px}.nd-public .step p{font-size:13px;line-height:1.8}.nd-public .mini{padding:12px;font-size:10px}.nd-public .inv-row{font-size:9px;gap:7px;grid-template-columns:7px minmax(0,1fr) auto auto;overflow-wrap:anywhere}
.nd-public .cap3>div,.nd-public .grid-spec>div,.nd-public .contact-card{background:var(--glass-soft);border-radius:16px;border-color:var(--rule);box-shadow:var(--surface-shadow);padding:27px;transition:transform .25s ease,border-color .25s ease}
.nd-public .cap3 h4,.nd-public .grid-spec h3{font-family:var(--font-display);letter-spacing:0;text-transform:none;font-size:16px;font-weight:600}.nd-public .cap3 p,.nd-public .grid-spec p{font-size:13px;line-height:1.8}
.nd-public .cmd{max-width:100%;border-radius:14px}.nd-public .cmd .send{border-radius:7px}.nd-public .cmd .bar{padding:20px}.nd-public .cmd .out{padding:18px 20px}
.nd-public .spec,.nd-public .revtable{border-collapse:separate;border-spacing:0;border:1px solid var(--rule);border-radius:14px;background:var(--glass-soft);overflow:hidden;width:100%}
.nd-public .spec th,.nd-public .revtable th{background:var(--accent-wash);font-family:var(--font-body);font-size:11px;letter-spacing:.3px;text-transform:none}.nd-public .spec td{font-size:13px}.nd-public .spec td:last-child{font-size:12px}.nd-public .revtable td{font-family:var(--font-body);font-size:12px;line-height:1.8}.nd-public .spec tr:last-child td,.nd-public .revtable tr:last-child td{border-bottom:0}
.nd-public .cta-box{border-radius:20px;background:radial-gradient(ellipse at 50% 120%,var(--halo),transparent 70%),var(--glass-soft);padding-block:60px}.nd-public .cta-box h2{max-width:24ch;font-weight:500;line-height:1.18;letter-spacing:-1.6px}.nd-public .cta-box:before{display:block;content:'';position:absolute;top:0;left:25%;right:25%;height:1px;background:linear-gradient(90deg,transparent,var(--accent),transparent)}
.nd-public .wrap.narrow{max-width:1040px}.nd-public .doc{padding-block:65px 80px}.nd-public .doc-head h1{font-weight:500;font-size:clamp(36px,5vw,58px);letter-spacing:-2px;line-height:1.15}.nd-public .doc-head{border-bottom:0;margin-bottom:28px;padding-bottom:10px}.nd-public .note{border-radius:12px;background:var(--accent-wash);font-size:14px;line-height:1.8}
.nd-public .contact-grid{gap:20px}.nd-public .contact-card{gap:17px}.nd-public .contact-card h2{font-size:23px;font-weight:500}.nd-public .contact-card p{font-size:14px;line-height:1.8}.nd-public .contact-card .mono{font-size:9px;letter-spacing:1px}.nd-public .contact-card .btn{font-size:12px;padding:12px 16px;overflow-wrap:anywhere;max-width:100%}
.nd-public .contact-form{margin-top:25px;background:var(--glass-soft);border-radius:18px}.nd-public .contact-form h2{font-size:26px;font-weight:500;letter-spacing:-.8px;margin-top:10px}.nd-public .contact-form label{font-family:var(--font-body);font-size:12px;letter-spacing:0;text-transform:none}.nd-public .contact-form input,.nd-public .contact-form textarea,.nd-public .contact-form select{background:var(--paper);border-radius:9px}
.nd-public .doc-prose{gap:15px}.nd-public .clause{grid-template-columns:38px minmax(0,1fr);gap:20px;padding:25px;border:1px solid var(--rule);border-radius:14px;background:var(--glass-soft)}.nd-public .clause:first-child{border-top:1px solid var(--rule)}.nd-public .clause h2{font-size:18px;letter-spacing:-.2px;font-weight:600}.nd-public .clause p{font-size:14px;line-height:1.85;max-width:76ch}.nd-public .colophon{background:transparent}.nd-public .colophon .links a{font-family:var(--font-body);font-size:11px;letter-spacing:0;text-transform:none}.nd-public .doc-line{margin-top:10px}.nd-public .e404{min-height:70vh}.nd-public .e404 h1{font-weight:500}
/* Hub: consistent materials without modifying application visibility or geometry of remote sessions. */
.nd-hub{--paper:#0e1922;background:radial-gradient(ellipse 900px 500px at 75% 0,var(--halo),transparent 80%),var(--bg)}
.nd-hub>header{background:var(--header-surface);border-bottom-color:var(--rule);padding-inline:25px;gap:20px;min-height:76px;box-shadow:0 5px 18px #00000012}
.nd-hub .brand-word{font-family:var(--font-display);letter-spacing:-.5px}.nd-hub #hub-kind{font-family:var(--font-body);letter-spacing:.1px;font-size:10px;border-radius:20px}
.nd-hub .sidebar{top:76px;height:calc(100dvh - 76px);width:235px;padding:22px 14px;background:linear-gradient(180deg,var(--accent-wash),transparent 70%);border-color:var(--rule);gap:5px;overflow-y:auto}
.nd-hub .side-link{border-radius:9px;padding:11px 13px;font-size:12px;transition:background .2s,color .2s,border-color .2s}
.nd-hub .side-link.active{background:var(--accent-wash);border-color:var(--rule-strong);color:var(--accent);box-shadow:inset 2px 0 var(--accent)}
.nd-hub .shell>main{min-width:0;width:calc(100% - 64px);margin:36px auto 70px;max-width:1400px;padding-inline:30px}
.nd-hub .hero{margin-bottom:26px}.nd-hub .hero h1{font-size:clamp(25px,2.7vw,35px);font-weight:500;letter-spacing:-1px}.nd-hub .hero-icon{border-radius:12px;background:var(--accent-wash);border-color:var(--rule-strong)}
.nd-hub .stats{gap:14px}.nd-hub .stat{padding:21px;background:var(--glass-surface);border-color:var(--rule);border-radius:14px;box-shadow:var(--surface-shadow)}.nd-hub .stat-icon{border-radius:7px;background:var(--accent-wash)}.nd-hub .stat strong{font-size:31px;letter-spacing:-1px;font-weight:600;font-variant-numeric:tabular-nums}.nd-hub .stat-top{font-size:12px}
.nd-hub .card,.nd-hub .panel-block,.nd-hub .dash-chart-card{background:var(--glass-surface);border:1px solid var(--rule);border-radius:15px;box-shadow:var(--surface-shadow)}
.nd-hub .card{transition:border-color .2s ease}.nd-hub .card:hover{border-color:var(--rule-strong)}.nd-hub .panel-block-head{border-bottom-color:var(--rule);padding:16px 20px}.nd-hub .panel-block-head h2{font-weight:600;font-size:14px}
.nd-hub .dash-tile{border:1px solid var(--rule);background:var(--glass-surface);color:var(--ink);border-radius:13px;box-shadow:inset 0 2px var(--accent)}.nd-hub .dash-tile.c-red{box-shadow:inset 0 2px var(--red)}.nd-hub .dash-tile.c-orange{box-shadow:inset 0 2px var(--warn)}.nd-hub .dash-tile.c-purple{box-shadow:inset 0 2px #b6a1f3}.nd-hub .dash-tile.c-blue{box-shadow:inset 0 2px #78bdf1}.nd-hub .dash-tile strong{font-size:27px;font-weight:600}.nd-hub .dash-tile span{color:var(--ink-soft)}
.nd-hub .metric{background:var(--glass-soft);border-color:var(--rule);border-radius:11px}.nd-hub .metric strong{font-weight:600}.nd-hub .metric span{font-family:var(--font-body);font-size:11px;letter-spacing:0;text-transform:none}
.nd-hub .tk-row,.nd-hub .kb-row,.nd-hub .row,.nd-hub .tk-comment,.nd-hub .inv-sw-table{border-radius:10px;border-color:var(--rule);background:var(--glass-soft)}
.nd-hub .tk-row:hover,.nd-hub .kb-row:hover{border-color:var(--accent)}.nd-hub .toolbar{gap:12px}.nd-hub .tabs{background:var(--paper);gap:9px;flex-wrap:wrap}.nd-hub .tabs .btn{border-radius:20px}
.nd-hub input,.nd-hub textarea,.nd-hub select{background:var(--paper);border-color:var(--rule-strong);border-radius:9px}.nd-hub input:focus,.nd-hub textarea:focus,.nd-hub select:focus{border-color:var(--accent)}
.nd-hub .btn{min-height:37px}.nd-hub .btn.primary{font-weight:600}.nd-hub .user-pill,.nd-hub .api-pill,.nd-hub .mqtt-pill{border-radius:20px;background:var(--accent-wash)}
.nd-hub .user-menu{background:var(--paper-2);border-radius:12px;border-color:var(--rule-strong)}.nd-hub .user-menu .btn{background:transparent}.nd-hub .user-menu .btn:hover{background:var(--accent-wash)}
.nd-hub .modal{background:#030a12b8;backdrop-filter:none}.nd-hub .window{background:var(--paper);border-radius:16px;border-color:var(--rule-strong);box-shadow:var(--shadow)}.nd-hub .modal-head{background:var(--paper-2);padding:12px 15px}.nd-hub .modal-head strong{font-size:14px;font-weight:600}.nd-hub .modal .window:fullscreen{border-radius:0}
.nd-hub .login-layer{background:radial-gradient(ellipse at 25% 30%,var(--halo),transparent 65%),var(--bg)}.nd-hub .login-shell{border-radius:23px;background:var(--glass-surface);border-color:var(--rule-strong);box-shadow:var(--shadow);min-height:600px}
.nd-hub .login-showcase{background:radial-gradient(ellipse at 20% 15%,#5ae7bb12,transparent 65%),linear-gradient(135deg,#14272e,#09151e);border-right-color:var(--rule);padding:49px}
.nd-hub .login-showcase:before{content:'';position:absolute;width:390px;height:390px;right:-160px;bottom:-160px;border:1px solid #5ae7bb25;border-radius:50%;box-shadow:0 0 0 45px #5ae7bb05,0 0 0 90px #5ae7bb04;pointer-events:none}
.nd-hub .login-copy h1{font-size:clamp(34px,4vw,50px);font-weight:500;line-height:1.15;letter-spacing:-1.5px}.nd-hub .login-copy p{font-size:14px;line-height:1.85}.nd-hub .login-copy .eyebrow{font-family:var(--font-body);font-size:10px;letter-spacing:1.3px;border:1px solid #5ae7bb30;border-radius:20px;padding:7px 11px;display:inline-flex}
.nd-hub .login-points{gap:10px 14px;font-family:var(--font-body);font-size:10px;letter-spacing:0;text-transform:none}.nd-hub .login-card h2{font-weight:500;font-size:29px;letter-spacing:-1px}.nd-hub .login-card input{min-height:49px}.nd-hub .login-card .primary{min-height:49px}.nd-hub .back-site{font-family:var(--font-body);font-size:11px;letter-spacing:0;text-transform:none}
.nd-hub .nd-toast{background:var(--paper-2);border-radius:12px}.nd-hub .admin-section-help{background:var(--accent-wash);border-color:var(--rule);border-radius:12px}.nd-hub .vtb-panel,.nd-hub .vtb-tab{backdrop-filter:none;background:var(--paper-2)}
/* Motion is confined to public presentation; operational Hub controls remain stable. */
@media(hover:hover) and (pointer:fine){.nd-public .step:hover,.nd-public .contact-card:hover,.nd-public .cap3>div:hover,.nd-public .grid-spec>div:hover{transform:translateY(-4px);border-color:var(--rule-strong)}.nd-public .btn:hover{transform:translateY(-2px)}}
@media(max-width:1200px){.nd-public .topbar-in{gap:12px}.nd-public .nav{gap:14px}.nd-public .topbar .status{display:none}.nd-public .topbar .tools{margin-left:auto}.nd-hub>header{gap:12px;padding-inline:18px}.nd-hub .shell>main{padding-inline:22px;width:100%}}
@media(max-width:960px){.nd-public .hero-grid{gap:30px}.nd-public .hero{padding-block:55px}.nd-public .hero h1{font-size:44px}.nd-public .topbar-in{min-height:75px}.nd-public .nav a{font-size:11px}.nd-hub .sidebar{position:static;top:auto;width:100%;height:auto;padding:12px 20px;flex-direction:row;gap:5px;overflow:visible}.nd-hub .shell>main{width:100%;padding-inline:22px;margin-top:25px}.nd-hub .side-link{padding:9px 12px;font-size:11px}.nd-hub .login-shell{min-height:0}.nd-hub .login-showcase{min-height:290px;padding:30px;gap:25px}}
@media(max-width:800px){.nd-public .hero-grid{grid-template-columns:1fr}.nd-public .hero h1{max-width:16ch;font-size:clamp(38px,7vw,55px)}.nd-public .id-panel{max-width:100%;transform:none}.nd-public .seq{grid-template-columns:1fr}.nd-public .band{padding-block:55px}.nd-public .topbar-in{flex-wrap:nowrap}.nd-public .nav a{font-size:13px}.nd-public .step{padding:24px}.nd-public .cap3{grid-template-columns:1fr}.nd-public .cap3>div{padding:24px}.nd-public .doc{padding-block:45px 60px}}
@media(max-width:700px){.nd-hub .window{border-radius:0}.nd-hub .window.small{border-radius:16px}.nd-hub .login-shell{width:100%;border-radius:18px}.nd-hub .login-form-wrap{padding:32px 23px}.nd-hub .login-layer{padding:16px;align-items:safe center}.nd-hub .stats{gap:10px}.nd-hub .stat{padding:16px}.nd-hub .shell>main{padding-inline:15px}.nd-hub .health{gap:8px}.nd-hub .user-menu{right:0;max-width:calc(100vw - 36px);min-width:0!important}.nd-hub .row.file-row,.nd-hub .row.release-card{flex-wrap:wrap}.nd-hub .toolbar>*{min-width:0}.nd-hub .tk-row{align-items:flex-start}.nd-hub .tk-row-meta,.nd-hub .kb-row-meta{font-size:10px;white-space:normal;max-width:100px}}
@media(max-width:560px){.nd-public .hero h1{font-size:40px;letter-spacing:-1.7px}.nd-public .hero{padding-block:40px}.nd-public .hero-grid{gap:35px}.nd-public .lead{font-size:14px}.nd-public .hero-actions .btn{font-size:12px;padding:12px 16px}.nd-public .id-panel{padding:20px}.nd-public .id-row{grid-template-columns:70px 1fr;font-size:9px}.nd-public .id-foot{font-size:7px}.nd-public .gauge{font-size:8px}.nd-public .contact-grid{grid-template-columns:1fr}.nd-public .contact-card{padding:23px}.nd-public .contact-form .fields{grid-template-columns:1fr}.nd-public .contact-form{padding:23px}.nd-public .clause{padding:20px 17px;grid-template-columns:25px minmax(0,1fr);gap:10px}.nd-public .clause h2{font-size:17px}.nd-public .spec{min-width:540px}.nd-public .revtable{min-width:500px}.nd-public .cmd .bar{padding:15px;gap:9px}.nd-public .cmd .bar input{min-width:0;font-size:11px}.nd-public .cmd .out{font-size:11px}.nd-public .cta-box{padding-block:40px}.nd-public .step{grid-template-columns:22px minmax(0,1fr);gap:10px;padding:20px 16px}.nd-public .mini{padding:9px;font-size:9px}.nd-public .inv-row{font-size:8px;gap:5px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.nd-public .id-panel{transform:none!important}*,*:before,*:after{transition:none!important;animation:none!important}}
:root[data-theme="light"] .nd-hub{--paper:#f6faf8}
.nd-hub .panel-block>.dash-tiles{margin:18px 18px 22px;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}
.nd-hub .panel-block>.dash-charts{margin:0 18px 22px;gap:16px}
@media(max-width:700px){.nd-hub .panel-block>.dash-tiles{margin:14px;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.nd-hub .panel-block>.dash-charts{margin:0 14px 18px;grid-template-columns:1fr}.nd-hub .dash-tile{padding:15px}.nd-hub .dash-tile span{font-size:11px}}
