/* NQ Glass Architecture: shared tokens, surfaces, controls and motion for both portals. */
:root{color-scheme:dark;--bg:#080b11;--panel:#131923;--panel2:#17202c;--gold:#e4c589;--ice:#b6e4f5;--line:rgba(209,223,237,.16);--text:#edf1f7;--muted:#a8b3c2;--green:#a8dbb6;--gl-radius:22px;--gl-surface:linear-gradient(138deg,rgba(34,43,56,.76),rgba(14,19,28,.84));--gl-shadow:0 3px 0 #06090e,0 14px 28px #0006,0 26px 45px #0003,inset 0 1px 0 #f0e9db14;--gl-spring:cubic-bezier(.2,1.4,.35,1)}
*{box-sizing:border-box}body{background:radial-gradient(ellipse 80% 600px at 8% -12%,#a27a3420,transparent 75%),radial-gradient(ellipse 70% 700px at 100% 20%,#529fc415,transparent 74%),#080b11!important;color:var(--text);font-family:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}body:before{content:'';position:fixed;inset:0;pointer-events:none;background:linear-gradient(110deg,#fff0,#d5eafb02,#fff0);z-index:-1}
.shell,.portal-restaurant main.shell{background:transparent!important;box-shadow:none;border:0;padding-bottom:calc(154px + env(safe-area-inset-bottom))!important}.portal-admin .shell{max-width:1180px;margin:auto}.portal-restaurant main.shell{max-width:1120px;padding:22px 18px}.portal-restaurant #access{max-width:480px;background:transparent;padding-bottom:100px}.portal-restaurant header{margin-top:20px}.brand{color:var(--gold)}h1,h2,h3{color:var(--text);letter-spacing:-.025em}h1{font-family:Georgia,serif;font-weight:500}h2{font-weight:650}.portal-restaurant #heading{font-size:clamp(24px,6vw,34px);line-height:1.2}
.panel,.metric,.device,.card,.float-surface,.card.hero,.hero,.grid .card,.card .card{background:var(--gl-surface)!important;border:1px solid var(--line)!important;border-top-color:#f1dbb84d!important;border-radius:var(--gl-radius);box-shadow:var(--gl-shadow)!important;backdrop-filter:blur(18px) saturate(1.08);-webkit-backdrop-filter:blur(18px) saturate(1.08)}
.card.hero,.hero{background:radial-gradient(ellipse at 0 0,#d3a65a15,transparent 65%),var(--gl-surface)!important}.panel,.card,.device,.metric{padding:18px}.card{margin-bottom:14px}.grid{gap:12px}.gl-card{transform-origin:center;transition:transform 300ms var(--gl-spring),box-shadow 300ms var(--gl-spring),border-color 220ms}.gl-card.is-pressed,.gl-card.nq-pressed,.gl-card.pressed{transform:translate3d(0,5px,0) scale(.978)!important;box-shadow:0 1px 2px #0009,inset 0 4px 16px #0005!important}
@media(hover:hover) and (pointer:fine){.gl-card:not(.is-pressed):hover{transform:translateY(-3px);border-top-color:#f3d69b88!important;box-shadow:0 4px 0 #06090e,0 20px 35px #0007,inset 0 1px 0 #f0e9db22!important}}
.metric-icon,.big-icon{color:var(--gold)}.metrics .metric:nth-child(2) .metric-icon,.gl-channel-metrics>.card:nth-child(2) .value{color:var(--ice)}.metrics .metric:nth-child(2) strong{color:#ddf4ff}.gl-channel-metrics>.card:nth-child(2){border-top-color:#b6e4f570!important}.nfc-value{color:var(--gold)}.qr-value{color:var(--ice)}
.legend span:first-child{color:var(--gold)}.legend span:last-child{color:var(--ice)}.chart-qr,.portal-restaurant .chart path[stroke='#99714e']{stroke:var(--ice)!important}.chart-nfc{stroke:var(--gold)!important}.portal-restaurant .chart stop[stop-color='#99714e']{stop-color:var(--ice)}.portal-restaurant .chart path[stroke]{animation:none!important;stroke-dasharray:none;stroke-dashoffset:0}.chart{filter:none!important}.chart .grid-line{stroke:#dceafa10}.portal-restaurant .row span[style*='#99714e']{color:var(--ice)!important}
.big,.value,[data-counter]{font-variant-numeric:tabular-nums lining-nums}.nq-number-rolling,.rolling-number{animation:none!important}.gl-number{display:inline-flex;align-items:baseline;white-space:pre;font-variant-numeric:tabular-nums;line-height:1.15;vertical-align:baseline}.gl-digit-window{display:inline-block;position:relative;height:1.15em;overflow:hidden;vertical-align:baseline}.gl-digit-track{display:flex;flex-direction:column;line-height:1.15}.gl-digit-track>span{display:block;flex:0 0 1.15em;height:1.15em}.gl-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}
.button,.btn,.filter,.icon-button{border-radius:13px;transition:transform .22s var(--gl-spring),filter .2s,background .2s}.btn,.button.primary{background:linear-gradient(135deg,#f0d99e,#c7a56a)!important;color:#17170f!important;border:1px solid #f7e5bd66!important;box-shadow:0 4px 14px #0003,inset 0 1px 0 #fff6}.btn.secondary,.button:not(.primary):not(.danger),.filter{background:#171f2cba!important;border:1px solid #d5e5f225!important;color:var(--text)!important}.filter.active{background:#d6b47b22!important;border-color:#dfc48a88!important;color:#f6e5be!important}.button.danger,.btn.danger,.btn.logout-btn{background:linear-gradient(135deg,#592c37,#301c29)!important;color:#ffd4d8!important;border:1px solid #e48c9b66!important}.btn:active,.button:active,.filter:active,.icon-button:active{transform:translateY(2px) scale(.976)}
input,textarea,select{background:#111925e8!important;border:1px solid #d5e5f228!important;color:var(--text)!important;border-radius:12px}input:focus-visible,textarea:focus-visible,select:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--ice);outline-offset:3px}button,input,select,textarea,a{scroll-margin-bottom:140px;scroll-margin-top:24px}.notice,.local-tag,#feedback:not(:empty){background:#162130c4!important;border:1px solid #afc6dd28!important;color:#d7e1ee;border-radius:13px}.notice.error,[role=alert]:not(:empty){border-color:#e2889955!important;color:#ffc4cf}#toast:not(:empty),#feedback:not(:empty){box-shadow:0 7px 24px #0004;animation:gl-status .25s ease}@keyframes gl-status{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.item,.list-row{border-color:#d5e5f21a}.pill,.badge{background:#a7bdd30d;color:var(--gold);border-color:#e3c68b40}.state-active,.badge.green{color:#b6e4c4}.state-pending,.badge.sky{color:var(--ice);background:#9bd8ef16}.state-denied,.badge.red{color:#ffc5cb}.symbol{background:linear-gradient(140deg,#273344,#141c29)!important;color:var(--gold);border-color:#dfc48a44}.row{gap:12px}.row>*{min-width:0}.muted,.label,.subtle{color:var(--muted)}
.floating-nav.signature-nav,.nav#nav{display:grid!important;grid-template-columns:repeat(6,minmax(0,1fr));position:fixed;left:50%;transform:translateX(-50%);bottom:calc(16px + env(safe-area-inset-bottom));width:calc(100% - 28px);max-width:680px;border-radius:25px;padding:7px 5px!important;gap:0;background:linear-gradient(130deg,#263140bc,#0e1620e8)!important;border:1px solid #d1e0ef33;box-shadow:0 14px 40px #000b,inset 0 1px 0 #e8f1ff19;backdrop-filter:blur(28px) saturate(1.2);-webkit-backdrop-filter:blur(28px) saturate(1.2);z-index:30;isolation:isolate;overflow:hidden}
.floating-nav button,.nav#nav button{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;min-height:56px;padding:7px 1px;font-size:10px;gap:5px;border:0;border-radius:18px;background:transparent!important;color:#aab9c9;animation:none!important;transition:color .2s,transform .2s}.nav#nav button .ico{height:20px}.nav#nav button .ico svg,.floating-nav .icon{width:20px;height:20px}.floating-nav button.active,.nav#nav button.active{color:#f0d8a1!important;background:transparent!important}.floating-nav button.active:after,.nav#nav button.active:after{display:none!important}.gl-nav-indicator{position:absolute;left:0;top:0;pointer-events:none;z-index:0;border-radius:18px;background:linear-gradient(130deg,#e3c78e23,#e3c78e08);border:1px solid #efd49e45;box-shadow:inset 0 1px 0 #ffecc525,0 5px 13px #0004;will-change:transform}
dialog{background:linear-gradient(140deg,#202c3af5,#101722fa)!important;color:var(--text);border:1px solid #d9c69455!important;border-radius:23px;box-shadow:0 28px 100px #000c;max-height:calc(100dvh - 44px);overflow:auto;opacity:0;transform:translateY(12px) scale(.97);filter:blur(3px);transition:opacity .19s ease,transform .22s var(--gl-spring),filter .19s ease,display .22s allow-discrete,overlay .22s allow-discrete}dialog[open]{opacity:1;transform:none;filter:blur(0)}dialog:not([open]){pointer-events:none}dialog::backdrop{background:#03070bb8;backdrop-filter:blur(5px);transition:opacity .2s,display .2s allow-discrete,overlay .2s allow-discrete}dialog:not([open])::backdrop{opacity:0}@starting-style{dialog[open]{opacity:0;transform:translateY(14px) scale(.97);filter:blur(3px)}dialog[open]::backdrop{opacity:0}}
#gl-progress{position:fixed;left:0;right:0;top:0;height:3px;z-index:100;overflow:hidden;background:#9ad7f012;pointer-events:none}#gl-progress:after{content:'';display:block;width:35%;height:100%;background:linear-gradient(90deg,var(--gold),var(--ice));animation:gl-loading 1s ease-in-out infinite}@keyframes gl-loading{from{transform:translateX(-110%)}to{transform:translateX(390%)}}#gl-progress[hidden]{display:none!important}.gl-loading button[disabled]{opacity:.55}
.portal-restaurant #localMode{font-size:10px;letter-spacing:.04em}.portal-restaurant #switch-fixture{font-size:10px;padding:7px;margin-top:7px;min-height:30px;width:auto}.portal-restaurant #tenantBox{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;margin:14px 0}.portal-restaurant #tenantBox label{grid-column:1/-1;margin:0}.portal-restaurant #tenant{margin:0}.portal-restaurant #refresh{width:auto;padding:11px;font-size:12px}.portal-restaurant #updated{grid-column:1/-1;margin:0;font-size:10px}.portal-restaurant #journeyCard>.btn{margin-top:12px;width:100%}.portal-restaurant #devices{display:grid;gap:14px}.portal-restaurant #devices>.card{margin:0}.portal-restaurant #cuenta{max-width:780px;margin-inline:auto}.portal-restaurant .footer{grid-column:1/-1}.portal-restaurant #resenas .card{background:var(--gl-surface)!important}
@media(min-width:900px){.portal-restaurant main.shell{padding-inline:30px}.portal-restaurant #inicio.active{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start}.portal-restaurant #inicio>.hero,.portal-restaurant #inicio>.grid,.portal-restaurant #inicio>.card:last-of-type,.portal-restaurant #inicio>button{grid-column:1/-1}.portal-restaurant #inicio>.card{margin:0}.portal-restaurant #devices{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-restaurant .section:not(#inicio){max-width:960px;margin-inline:auto}.portal-restaurant #resenas .grid{grid-template-columns:1fr 1fr}}
@media(max-width:390px){.panel,.metric,.device,.card{padding:15px}.portal-restaurant main.shell{padding-inline:14px}.floating-nav button span{font-size:9px}.nav#nav button{font-size:9px}.portal-admin .topbar .local-tag{max-width:90px}.portal-restaurant .big{font-size:34px}.portal-restaurant .row{gap:8px}.portal-restaurant #refresh{font-size:10px;padding:11px 8px}.portal-restaurant .card-name{overflow-wrap:anywhere}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.gl-card:hover,.gl-card.is-pressed,.gl-card.nq-pressed,.gl-card.pressed{transform:none!important}.gl-nav-indicator{will-change:auto}#gl-progress:after{width:100%;transform:none}}
.nav#nav[hidden],.portal-restaurant main[hidden],.portal-restaurant #access[hidden]{display:none!important}
/* Restaurant-only refinements: shared channel glyphs and compact settings. */
.portal-restaurant .nav#nav{grid-template-columns:repeat(5,minmax(0,1fr))}
.portal-restaurant .gl-metric-label{position:relative;padding-right:28px;display:flex;align-items:center}.portal-restaurant .gl-channel-icon{position:absolute;right:0;top:50%;transform:translateY(-50%);width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center}.portal-restaurant .gl-channel-icon .icon{width:22px;height:22px;flex-shrink:0;vertical-align:middle}.portal-restaurant .gl-nfc{color:var(--gold)}.portal-restaurant .gl-qr{color:var(--ice)}
.portal-restaurant .gl-settings-group{margin-bottom:14px;border:1px solid var(--line);border-radius:22px;background:var(--gl-surface);box-shadow:var(--gl-shadow);overflow:hidden}.portal-restaurant .gl-settings-group>summary{padding:18px;cursor:pointer;color:var(--gold);font-weight:650;list-style-position:inside;min-height:54px}.portal-restaurant .gl-settings-group>summary:focus-visible{outline:2px solid var(--ice);outline-offset:-4px}.portal-restaurant .gl-settings-group>.card{margin:0 12px 12px}.portal-restaurant .gl-settings-group[open]>.card{animation:gl-status .22s ease}.portal-restaurant #ajustes{max-width:780px}

/* NQ-UI-3: spacing, responsive equal-height device rows and checkbox alignment only. */
.portal-admin #main > .panel + .panel,.portal-restaurant main > .panel + .panel{margin-block-start:18px}
.portal-admin .device-grid,.portal-restaurant #devices{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));align-items:stretch;gap:18px}
.portal-admin .device-grid>.device,.portal-restaurant #devices>.card{height:100%;min-width:0;margin-bottom:0;overflow-wrap:anywhere}
.portal-admin dialog label:has(>input[type="checkbox"]){display:flex;align-items:flex-start;justify-content:flex-start;gap:10px}
.portal-admin dialog label>input[type="checkbox"]{width:auto;flex:0 0 auto;margin:3px 0 0}
@media(max-width:600px){.portal-admin .device-grid,.portal-restaurant #devices{grid-template-columns:1fr}}

/* NQ-UI-6: actual Restaurant section cards/panels; override old inline spacing only. */
.portal-restaurant .section > :is(.card,.panel) ~ :is(.card,.panel),.portal-restaurant main > .panel + .panel{margin-block-start:18px!important}

/* NQ-UI-7: direct content siblings only; grid gaps and heading/dialog layout stay intact. */
.portal-admin #main > :not(.heading):not(.footer-note){margin-block-end:0!important}
.portal-admin #main > :not(.heading):not(.footer-note) + :not(.heading):not(.footer-note),.portal-restaurant main > .section > * + *{margin-block-start:18px!important}
.portal-restaurant main > .section > *{margin-block-end:0!important}
.portal-admin #main form:not(dialog form):has(>label>input[type="checkbox"]),.portal-restaurant main form:not(dialog form):has(>label>input[type="checkbox"]){display:grid;row-gap:18px}
.portal-admin #main form:not(dialog form):has(>label>input[type="checkbox"])>label,.portal-restaurant main form:not(dialog form):has(>label>input[type="checkbox"])>label{margin-block-end:0}
.portal-admin #main form:not(dialog form) label:has(>input[type="checkbox"]),.portal-restaurant main form:not(dialog form) label:has(>input[type="checkbox"]){display:flex;align-items:flex-start;justify-content:flex-start;gap:10px;margin-block-end:0}
.portal-admin #main form:not(dialog form) label>input[type="checkbox"],.portal-restaurant main form:not(dialog form) label>input[type="checkbox"]{width:auto;flex:0 0 auto;margin:3px 0 0}
.portal-admin #main form:not(dialog form) label:has(>input[type="checkbox"])+button,.portal-restaurant main form:not(dialog form) label:has(>input[type="checkbox"])+button{margin-block-start:0!important}
