:root {
  --ink: #12221d;
  --ink-2: #263b34;
  --muted: #697871;
  --line: #dce3df;
  --paper: #f4f6f2;
  --surface: #ffffff;
  --navy: #0b1714;
  --lime: #b7f34b;
  --lime-soft: #eafcc8;
  --green: #237a4b;
  --red: #a9433f;
  --red-soft: #fde7e5;
  --shadow: 0 12px 30px rgba(17, 34, 29, .07);
  --radius: 14px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: Inter, "Segoe UI", Arial, sans-serif; -webkit-font-smoothing: antialiased; }
button, input, select { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
a { color: inherit; text-decoration: none; }
svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.icon-sprite { position: absolute; width: 0; height: 0; overflow: hidden; }

.brand { display: inline-flex; align-items: center; gap: 11px; color: var(--ink); font-size: 20px; font-weight: 800; letter-spacing: -.6px; }
.brand > span:last-child > span { color: #70a51c; }
.brand-mark { width: 31px; height: 31px; display: flex; align-items: flex-end; justify-content: center; gap: 3px; padding: 6px; background: var(--ink); border-radius: 8px; }
.brand-mark span { width: 4px; display: block; background: var(--lime); border-radius: 1px; }
.brand-mark span:nth-child(1) { height: 10px; }.brand-mark span:nth-child(2) { height: 18px; }.brand-mark span:nth-child(3) { height: 14px; }
.brand-light { color: #fff; }.brand-light > span:last-child > span { color: var(--lime); }.brand-light .brand-mark { background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.24); }
.brand-logo-mark { width:38px; height:38px; flex:0 0 38px; object-fit:contain; border-radius:9px; background:#eefbd6; padding:3px; box-shadow:0 0 0 1px rgba(174,242,58,.22); }
.brand-light .brand-logo-mark { background:rgba(241,255,221,.96); box-shadow:0 0 0 1px rgba(255,255,255,.18),0 8px 22px rgba(0,0,0,.18); }
.sidebar .brand-logo-mark { width:40px; height:40px; flex-basis:40px; }
.atm-kiosk-header .brand-logo-mark { width:48px; height:48px; flex-basis:48px; }
.fiscal-document .brand-logo-mark { width:42px; height:42px; flex-basis:42px; }
.brand-logo-full { display:block; width:auto; height:48px; max-width:210px; object-fit:contain; }
.sidebar .brand-logo-full { width:190px; height:auto; max-height:64px; }
.landing-nav .brand-logo-full,.landing-footer .brand-logo-full { width:210px; height:auto; max-height:64px; }
.login-visual .brand-logo-full { width:230px; height:auto; max-height:70px; }
.auth-page > .brand .brand-logo-full { width:215px; height:auto; max-height:66px; }
.atm-kiosk-header .brand-logo-full { width:230px; height:auto; max-height:70px; }

/* Login */
.login-page { min-height: 100vh; display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(460px, .65fr); background: #fff; }
.login-visual { position: relative; min-height: 700px; padding: 42px 5vw; background: #07110f url('/images/parking-hero.png') center/cover no-repeat; color: white; isolation: isolate; overflow: hidden; }
.login-visual::before { content: ""; position: absolute; inset: 0; z-index: -1; background: rgba(3, 13, 18, .38); }
.login-visual .brand { position: relative; z-index: 2; }
.login-pitch { position: absolute; left: 5vw; bottom: 10vh; max-width: 610px; }
.eyebrow { display: inline-flex; align-items: center; gap: 9px; margin-bottom: 18px; color: rgba(255,255,255,.8); font-size: 12px; font-weight: 800; letter-spacing: 1.5px; text-transform: uppercase; }
.eyebrow > span { width: 25px; height: 2px; background: var(--lime); }
.eyebrow.dark { color: #53645c; }.eyebrow.dark > span { background: #79aa23; }
.login-pitch h1 { margin: 0; font-size: clamp(54px, 6vw, 92px); line-height: .95; letter-spacing: -5px; font-weight: 700; }
.login-pitch > p { max-width: 500px; margin: 26px 0 32px; color: rgba(255,255,255,.8); font-size: 18px; line-height: 1.65; }
.trust-row { display: flex; flex-wrap: wrap; gap: 10px; }
.trust-row span { display: inline-flex; align-items: center; gap: 8px; padding: 9px 12px; border: 1px solid rgba(255,255,255,.22); background: rgba(9, 24, 20, .7); font-size: 12px; font-weight: 650; }
.trust-row svg { width: 17px; color: var(--lime); }
.login-panel { display: grid; place-items: center; padding: 48px clamp(30px, 5vw, 84px); background: #fff; }
.login-card { width: min(100%, 430px); }
.login-card h2 { margin: 0 0 10px; font-size: 34px; letter-spacing: -1.3px; }
.muted { color: var(--muted); line-height: 1.6; }
.form-stack { display: grid; gap: 20px; margin-top: 34px; }
.form-stack label, .form-card label, .vehicle-form label, .simulator-controls label { display: grid; gap: 8px; color: var(--ink-2); font-size: 13px; font-weight: 700; }
input, select { width: 100%; min-height: 48px; border: 1px solid #ccd5d0; border-radius: 8px; padding: 0 14px; color: var(--ink); background: #fff; outline: none; transition: border-color .2s, box-shadow .2s; }
input:focus, select:focus { border-color: #7aa32c; box-shadow: 0 0 0 3px rgba(183, 243, 75, .24); }
label small, .validation-summary { color: var(--red); font-size: 12px; font-weight: 600; }
.validation-summary:empty { display: none; }
.validation-summary ul { margin: 0; padding-left: 18px; }
.password-field { position: relative; display: block; }.password-field input { padding-right: 50px; }
.password-toggle { position: absolute; top: 4px; right: 4px; width: 40px; height: 40px; border: 0; background: transparent; color: var(--muted); cursor: pointer; }
.check-row { display: flex !important; align-items: center; gap: 9px; font-weight: 500 !important; }.check-row input { width: 17px; min-height: 17px; accent-color: var(--ink); }
.button { min-height: 43px; display: inline-flex; align-items: center; justify-content: center; gap: 9px; border: 1px solid transparent; border-radius: 8px; padding: 0 17px; font-size: 13px; font-weight: 750; cursor: pointer; transition: transform .15s, background .15s, border-color .15s; }
.button:hover { transform: translateY(-1px); }.button svg { width: 17px; }
.button.primary { background: var(--lime); color: #152311; border-color: var(--lime); }.button.primary:hover { background: #a7e13d; }
.button.dark { background: var(--ink); color: white; border-color: var(--ink); }.button.dark:hover { background: #21362e; }
.button.light { background: #fff; color: var(--ink); }.button.outline { background: #fff; border-color: #bec9c3; color: var(--ink); }
.button.wide { width: 100%; }
.demo-box { margin-top: 28px; padding-top: 22px; border-top: 1px solid var(--line); display: grid; gap: 8px; }
.demo-box > strong { margin-bottom: 4px; font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: .7px; }
.demo-box button { display: flex; justify-content: space-between; align-items: center; gap: 10px; border: 1px solid var(--line); border-radius: 8px; padding: 10px 12px; background: #f8faf7; color: var(--ink); cursor: pointer; text-align: left; }
.demo-box button:hover { border-color: #9aad8f; }.demo-box button span { font-weight: 700; }.demo-box code { font-size: 11px; color: var(--muted); }
.security-note { display: flex; align-items: center; gap: 8px; margin-top: 18px; color: #7e8b85; font-size: 11px; }.security-note svg { width: 15px; }

/* App shell */
.app-shell { min-height: 100vh; display: grid; grid-template-columns: 246px minmax(0, 1fr); }
.sidebar { position: sticky; top: 0; height: 100vh; display: flex; flex-direction: column; overflow-y: auto; padding: 30px 20px; background: #fff; border-right: 1px solid var(--line); z-index: 20; }
.sidebar .brand { padding: 0 10px 32px; }
.side-nav { display: grid; gap: 5px; }
.side-nav a { display: flex; align-items: center; gap: 12px; min-height: 44px; padding: 0 12px; border-radius: 8px; color: #5e6c66; font-size: 13px; font-weight: 650; }
.side-nav a:hover, .side-nav a.active { color: var(--ink); background: #eef4ea; }.side-nav a.active { box-shadow: inset 3px 0 0 #82b12d; }
.side-nav svg { width: 18px; }
.nav-label { margin: 24px 12px 7px; color: #9aa59f; font-size: 10px; text-transform: uppercase; letter-spacing: 1.2px; font-weight: 800; }
.side-nav .exclusive-nav-label { color: #73911f; }
.side-nav a.exclusive-access { min-height: 54px; border: 1px solid #d8e9ad; color: #203426; background: linear-gradient(135deg,#f5faec,#edf6dc); }
.side-nav a.exclusive-access:hover,.side-nav a.exclusive-access.active { border-color: #9dc93b; background: #eaf6d4; box-shadow: inset 3px 0 0 #79aa21,0 6px 16px rgba(60,91,21,.08); }
.side-nav a.exclusive-access > svg { color: #6d9e18; }
.side-nav a.exclusive-access > span { display: grid; gap: 2px; }
.side-nav a.exclusive-access strong { color: #17291d; font-size: 13px; }
.side-nav a.exclusive-access small { color: #718078; font-size: 10px; font-weight: 600; }
.sidebar-foot { margin-top: auto; padding: 16px 12px 0; border-top: 1px solid var(--line); color: var(--muted); font-size: 11px; }
.online-dot { display: flex; align-items: center; gap: 7px; margin-bottom: 6px; color: var(--green); font-weight: 700; }.online-dot span, .status-dot, .mini-dot { width: 7px; height: 7px; display: inline-block; background: #3fba73; border-radius: 50%; box-shadow: 0 0 0 4px rgba(63,186,115,.12); }
.app-main { min-width: 0; }
.topbar { position: sticky; top: 0; z-index: 15; height: 70px; display: flex; align-items: center; justify-content: space-between; padding: 0 3.5vw; border-bottom: 1px solid var(--line); background: rgba(244,246,242,.94); backdrop-filter: blur(12px); }
.topbar-location { display: flex; align-items: center; gap: 9px; font-size: 13px; font-weight: 750; }.topbar-location small { padding-left: 8px; color: var(--muted); font-weight: 500; border-left: 1px solid var(--line); }
.topbar-actions { display: flex; align-items: center; gap: 11px; }.topbar-actions form { display: flex; }
.topbar-site-link { min-height: 36px; display: inline-flex; align-items: center; gap: 7px; padding: 0 11px; border: 1px solid var(--line); border-radius: 8px; color: #53645c; background: rgba(255,255,255,.72); font-size: 10px; font-weight: 800; }.topbar-site-link:hover { color: var(--ink); border-color: #aebcb4; background: white; }.topbar-site-link svg { width: 15px; height: 15px; }
.icon-button { position: relative; width: 38px; height: 38px; display: inline-grid; place-items: center; flex: 0 0 auto; border: 1px solid var(--line); border-radius: 8px; background: #fff; color: #465851; cursor: pointer; }
.icon-button:hover { border-color: #95a49c; color: var(--ink); }
[data-tooltip]::after { content: attr(data-tooltip); position: absolute; z-index: 40; left: 50%; top: calc(100% + 7px); transform: translateX(-50%); min-width: max-content; padding: 6px 8px; border-radius: 5px; background: #0b1714; color: white; font-size: 10px; pointer-events: none; opacity: 0; transition: opacity .15s; }
[data-tooltip]:hover::after { opacity: 1; }
.profile-chip { display: flex; align-items: center; gap: 9px; padding: 0 12px; border-left: 1px solid var(--line); border-right: 1px solid var(--line); }
.profile-chip > span { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 50%; background: var(--ink); color: var(--lime); font-size: 11px; font-weight: 800; }
.profile-chip div { display: grid; }.profile-chip strong { font-size: 12px; }.profile-chip small { color: var(--muted); font-size: 10px; }
.mobile-menu { display: none; }
.content { width: min(1480px, 100%); margin: 0 auto; padding: 40px 3.5vw 24px; }
.page-heading { display: flex; justify-content: space-between; align-items: flex-end; gap: 30px; margin-bottom: 28px; scroll-margin-top: 95px; }
.page-heading h1 { margin: 0; font-size: clamp(30px, 3vw, 44px); line-height: 1.05; letter-spacing: -1.8px; }.page-heading p { margin: 10px 0 0; color: var(--muted); }
.page-heading .eyebrow { margin-bottom: 11px; }
.heading-actions { display: flex; align-items: center; gap: 15px; color: var(--muted); font-size: 12px; white-space: nowrap; }
.live-chip, .state { display: inline-flex; align-items: center; gap: 7px; border-radius: 999px; font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .45px; }
.live-chip { padding: 7px 10px; background: #fff; border: 1px solid var(--line); color: var(--green); }.live-chip span, .state.live > span { width: 6px; height: 6px; border-radius: 50%; background: #3fba73; }

/* Dashboard */
.metric-grid { display: grid; grid-template-columns: 1.35fr repeat(3, 1fr); gap: 14px; }
.metric-card { min-height: 164px; padding: 23px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; box-shadow: 0 5px 20px rgba(21,38,31,.035); }
.primary-metric { display: grid; grid-template-columns: 42px 1fr; grid-template-rows: auto auto auto; column-gap: 14px; background: var(--ink); color: white; border-color: var(--ink); }
.metric-icon, .device-icon { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 10px; background: var(--lime); color: var(--ink); }.metric-icon svg { width: 20px; }
.primary-metric > span { color: #c5d0ca; font-size: 12px; }.primary-metric strong { grid-column: 1/-1; margin-top: 13px; font-size: 32px; }.primary-metric strong small { color: #91a098; font-size: 16px; font-weight: 500; }
.primary-metric > small { grid-column: 1/-1; color: #aebbb4; font-size: 11px; }
.progress { grid-column: 1/-1; height: 6px; overflow: hidden; margin: 8px 0 10px; background: #34473f; border-radius: 5px; }.progress span { display: block; height: 100%; background: var(--lime); }
.metric-top { display: flex; justify-content: space-between; align-items: center; color: var(--muted); font-size: 12px; font-weight: 650; }.metric-top svg { width: 19px; color: #6a8278; }
.metric-card > strong { display: block; margin: 24px 0 12px; font-size: 30px; letter-spacing: -1px; }.metric-card > strong small { color: #829088; font-size: 14px; }.metric-card > small { color: var(--muted); font-size: 11px; }
.metric-card .positive { display: inline-flex; align-items: center; gap: 6px; color: var(--green); }.metric-card .positive svg { width: 14px; }
.device-warning { display: inline-flex; align-items: center; gap: 6px; color: #9a641d !important; }.device-warning .mini-dot { background: #e5a63e; box-shadow: 0 0 0 4px rgba(229,166,62,.13); }
.occupancy-link { transition: transform .18s, box-shadow .18s; }.occupancy-link:hover { transform: translateY(-2px); box-shadow: 0 14px 32px rgba(11,23,20,.16); }.occupancy-link > small { display: flex; justify-content: space-between; gap: 10px; }.occupancy-link > small span { color: var(--lime); font-weight: 750; }
.admin-command-bar { display: grid; grid-template-columns: 1.05fr repeat(4,1fr); gap: 1px; overflow: hidden; margin-top: 14px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--line); box-shadow: 0 6px 20px rgba(21,38,31,.035); }.command-intro,.admin-command-bar > a { min-width: 0; min-height: 100px; background: white; }.command-intro { display: grid; align-content: center; gap: 5px; padding: 20px 22px; }.command-intro > strong { font-size: 15px; }.admin-command-bar > a { display: grid; grid-template-columns: 36px 1fr 16px; align-items: center; gap: 11px; padding: 17px; transition: background .16s; }.admin-command-bar > a:hover { background: #f4faeb; }.admin-command-bar > a > span { width: 36px; height: 36px; display: grid; place-items: center; border-radius: 9px; color: #557919; background: var(--lime-soft); }.admin-command-bar > a > span svg { width: 17px; }.admin-command-bar > a > div { min-width: 0; display: grid; gap: 4px; }.admin-command-bar > a strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; }.admin-command-bar > a small { overflow: hidden; color: var(--muted); text-overflow: ellipsis; white-space: nowrap; font-size: 8px; }.admin-command-bar > a > svg { width: 14px; color: #91a098; }.admin-live-grid { display: grid; grid-template-columns: minmax(0,1.5fr) minmax(310px,.62fr); gap: 14px; margin-top: 14px; }.live-vehicles-card { padding: 0; overflow: hidden; }.live-vehicles-card .panel-heading { padding: 22px; border-bottom: 1px solid var(--line); }.live-vehicle-list { display: grid; }.live-vehicle-list > a { min-width: 0; display: grid; grid-template-columns: 112px minmax(150px,1fr) 105px minmax(120px,auto); align-items: center; gap: 14px; padding: 13px 22px; border-top: 1px solid #edf0ee; }.live-vehicle-list > a:first-child { border-top: 0; }.live-vehicle-list > a:hover { background: #f7faf4; }.live-vehicle-list > a > div { min-width: 0; display: grid; gap: 4px; }.live-vehicle-list > a > div strong,.live-vehicle-list > a > div small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.live-vehicle-list > a > div strong { font-size: 11px; }.live-vehicle-list > a > div small { color: var(--muted); font-size: 9px; }.vehicle-elapsed { display: flex; align-items: center; gap: 5px; color: #60736a; font-size: 9px; font-weight: 750; }.vehicle-elapsed svg { width: 13px; }.compact-empty { min-height: 220px; display: grid; place-items: center; align-content: center; gap: 9px; color: var(--muted); text-align: center; }.compact-empty svg { width: 42px; height: 42px; color: #91a097; }.compact-empty p { margin: 0; font-size: 11px; }.admin-attention-card { display: grid; align-content: start; overflow: hidden; border-radius: var(--radius); color: white; background: var(--ink); box-shadow: 0 12px 30px rgba(17,34,29,.12); }.admin-attention-card > div { padding: 23px; }.admin-attention-card h2 { margin: 5px 0 7px; }.admin-attention-card p { margin: 0; color: #9fb0a8; font-size: 10px; }.admin-attention-card > a { display: grid; grid-template-columns: 38px 1fr 26px; align-items: center; gap: 11px; padding: 14px 18px; border-top: 1px solid rgba(255,255,255,.09); }.admin-attention-card > a:hover { background: rgba(255,255,255,.05); }.attention-icon { width: 38px; height: 38px; display: grid; place-items: center; border-radius: 9px; color: var(--lime); background: rgba(183,243,75,.08); }.attention-icon svg { width: 17px; }.admin-attention-card > a div { min-width: 0; display: grid; gap: 3px; }.admin-attention-card > a strong { font-size: 10px; }.admin-attention-card > a small { color: #8ea098; font-size: 8px; }.admin-attention-card > a b { width: 25px; height: 25px; display: grid; place-items: center; border-radius: 50%; color: var(--ink); background: var(--lime); font-size: 9px; }
.driver-overview { display: grid; grid-template-columns: .9fr 1.35fr .9fr; gap: 14px; }
.balance-card, .session-card, .vehicle-mini { min-height: 260px; padding: 25px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
.balance-card { background: var(--ink); color: white; }.balance-top { display: flex; justify-content: space-between; color: #b9c7c0; font-size: 12px; }.balance-card > strong { display: block; margin-top: 27px; font-size: 48px; letter-spacing: -2px; }.balance-card > strong small { color: #c8d3cd; font-size: 14px; letter-spacing: 0; }.balance-card p { color: #9fb0a8; font-size: 12px; }.balance-card .button { margin-top: 22px; }
.section-title-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; }.section-title-row h2, .section-title-row h3 { margin: 4px 0 0; }.kicker { color: #74857c; font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.25px; }
.state { padding: 6px 9px; }.state.live { color: var(--green); background: #e6f6ec; }.state.neutral { color: #77857e; background: #eef1ef; }.state.neutral > span { width: 6px; height: 6px; background: #99a39e; border-radius: 50%; }
.session-data { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 42px 0 24px; }.session-data div { display: grid; gap: 6px; padding-right: 10px; border-right: 1px solid var(--line); }.session-data div:last-child { border: 0; }.session-data span { color: var(--muted); font-size: 10px; text-transform: uppercase; }.session-data strong { font-size: 15px; }
.helper { display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 11px; }.helper svg { width: 15px; }
.empty-state { height: 150px; display: flex; align-items: center; justify-content: center; gap: 18px; color: var(--muted); }.empty-state > svg { width: 48px; height: 48px; color: #a6b1ab; }.empty-state p { max-width: 300px; line-height: 1.6; font-size: 12px; }
.vehicle-mini { text-align: center; }.vehicle-illustration { width: 88px; height: 70px; display: grid; place-items: center; margin: 15px auto 8px; color: #83928b; }.vehicle-illustration svg { width: 64px; height: 64px; }.vehicle-mini > strong { font-size: 23px; letter-spacing: 2px; }.vehicle-mini p { margin: 7px 0 17px; color: var(--muted); font-size: 12px; }.vehicle-mini a { display: inline-flex; align-items: center; gap: 7px; color: #628b1e; font-size: 12px; font-weight: 750; }.vehicle-mini a svg { width: 15px; }

.section-block { margin-top: 54px; padding-top: 8px; scroll-margin-top: 76px; }
.section-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 25px; margin-bottom: 20px; }.section-heading h2 { margin: 5px 0 7px; font-size: 26px; letter-spacing: -.8px; }.section-heading p { margin: 0; color: var(--muted); font-size: 13px; line-height: 1.6; }.current-balance { display: grid; padding-left: 25px; border-left: 1px solid var(--line); }.current-balance span { color: var(--muted); font-size: 10px; text-transform: uppercase; }.current-balance strong { font-size: 19px; }
.wallet-layout { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(330px, .75fr); gap: 14px; }.package-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.package-card { position: relative; min-height: 238px; display: flex; flex-direction: column; padding: 23px; border: 1px solid var(--line); border-radius: var(--radius); background: white; }.package-card.recommended { border: 2px solid #7fa62f; padding: 22px; }.recommend-label { position: absolute; top: -12px; left: 20px; padding: 5px 9px; background: var(--ink); color: white !important; border-radius: 5px; font-size: 9px !important; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; }.package-card > span { color: var(--muted); font-size: 11px; }.package-card > strong { margin: 28px 0 2px; font-size: 30px; }.package-card > strong small { font-size: 12px; color: var(--muted); }.package-card p { margin: 0 0 24px; color: #586b62; font-size: 13px; }.package-card .button { margin-top: auto; }
.activity-card, .events-card { padding: 22px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }.activity-card h3, .events-card h3 { margin: 0; font-size: 16px; }.subtle-count { display: grid; place-items: center; width: 25px; height: 25px; background: #eef2ef; border-radius: 50%; color: var(--muted); font-size: 10px; }
.activity-list { margin-top: 15px; }.activity-item { display: grid; grid-template-columns: 34px 1fr auto; align-items: center; gap: 11px; padding: 12px 0; border-top: 1px solid #edf0ee; }.activity-icon { width: 32px; height: 32px; display: grid; place-items: center; border-radius: 8px; }.activity-icon svg { width: 15px; }.activity-icon.in { background: var(--lime-soft); color: #507814; }.activity-icon.out { background: #edf0ee; color: #53655c; }.activity-item div { display: grid; gap: 3px; min-width: 0; }.activity-item div strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; }.activity-item div small { color: var(--muted); font-size: 10px; }.activity-item b { font-size: 11px; }.credit-in { color: var(--green); }.credit-out { color: var(--ink); }

.token-layout { display: grid; grid-template-columns: 320px 1fr; gap: 14px; }.form-card { padding: 23px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }.form-card h3 { margin: 0 0 20px; }.form-card { display: grid; gap: 16px; }.info-row { display: flex; gap: 9px; color: var(--muted); font-size: 11px; line-height: 1.5; }.info-row svg { flex: 0 0 auto; width: 16px; color: var(--green); }
.token-list { display: grid; gap: 9px; align-content: start; }.token-card { display: grid; grid-template-columns: 70px 1fr 38px; align-items: center; gap: 16px; padding: 16px; border: 1px solid var(--line); border-radius: 12px; background: white; }.token-code-visual { width: 64px; height: 64px; display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; padding: 5px; background: #f3f5f2; border-radius: 6px; }.token-code-visual span { background: transparent; }.token-code-visual span.on { background: var(--ink); }.token-card h3 { margin: 6px 0 4px; font-size: 15px; letter-spacing: .5px; }.token-card p, .token-card small { margin: 0; color: var(--muted); font-size: 11px; }.copy-button.copied { background: var(--lime); color: var(--ink); }
.empty-token { min-height: 220px; display: grid; place-items: center; align-content: center; gap: 10px; border: 1px dashed #c9d1cd; color: var(--muted); }.empty-token svg { width: 38px; height: 38px; }

.vehicle-form { display: grid; grid-template-columns: 240px 1fr 1.4fr auto; align-items: end; gap: 16px; padding: 22px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }.plate-preview { height: 102px; display: grid; place-items: center; align-content: center; border: 4px solid #d6dbd8; border-radius: 10px; background: #fdfdfb; box-shadow: inset 0 0 0 1px #848d88; }.plate-preview span { color: #3c65a6; font-size: 8px; font-weight: 800; letter-spacing: 1.5px; }.plate-preview strong { margin: 4px 0; font-size: 25px; letter-spacing: 2px; }.plate-preview small { color: var(--muted); font-size: 8px; text-transform: uppercase; }

.operations-grid { display: grid; grid-template-columns: 1.5fr .65fr; gap: 14px; }.camera-simulator { display: grid; grid-template-columns: 1.2fr .8fr; overflow: hidden; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }.camera-frame { position: relative; min-height: 330px; display: grid; place-items: center; align-content: center; overflow: hidden; background: #0a1613; color: white; box-shadow: inset 0 0 0 1px #29443a, inset 0 -80px 0 #0d1d18; }
.camera-label { position: absolute; top: 18px; left: 18px; display: flex; align-items: center; gap: 7px; font-size: 10px; font-weight: 700; }.camera-label span { width: 7px; height: 7px; border-radius: 50%; background: #e54e4e; }
.camera-frame small { position: relative; margin-top: 16px; color: #83a094; font-size: 10px; }.detected-plate { position: relative; z-index: 2; padding: 9px 18px; border: 2px solid var(--lime); color: white; font-family: ui-monospace, Consolas, monospace; font-size: 25px; font-weight: 800; letter-spacing: 3px; }.scan-line { position: absolute; left: 8%; right: 8%; top: 42%; height: 1px; background: var(--lime); box-shadow: 0 0 18px var(--lime); animation: scan 3s ease-in-out infinite; }
@keyframes scan { 0%,100% { transform: translateY(-55px); opacity: .4; } 50% { transform: translateY(70px); opacity: 1; } }
@media (prefers-reduced-motion: reduce) { * { scroll-behavior: auto !important; animation: none !important; transition: none !important; } }
.simulator-controls { display: grid; align-content: center; gap: 15px; padding: 25px; }.simulator-controls code, .helper code { padding: 2px 5px; border-radius: 4px; background: #edf1ee; color: var(--ink); }
.redeem-card { align-content: center; }.redeem-card p { margin: -5px 0 7px; color: var(--muted); font-size: 12px; line-height: 1.6; }
.events-card { margin-top: 14px; }.events-card .section-title-row { align-items: center; margin-bottom: 16px; }.table-wrap { overflow-x: auto; } table { width: 100%; border-collapse: collapse; font-size: 11px; } th { padding: 11px 12px; background: #f3f6f3; color: #74827b; text-align: left; text-transform: uppercase; letter-spacing: .55px; font-size: 9px; } td { padding: 13px 12px; border-top: 1px solid #e8ece9; color: #53635b; white-space: nowrap; } .table-plate { color: var(--ink); letter-spacing: 1px; }.result { padding: 5px 7px; border-radius: 5px; font-size: 9px; font-weight: 800; text-transform: uppercase; }.result.allowed { background: #e5f5eb; color: var(--green); }.result.denied { background: var(--red-soft); color: var(--red); }

.device-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; }.device-card { padding: 20px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }.device-head { display: flex; justify-content: space-between; align-items: start; }.device-icon.camera { background: #e4eee9; }.device-card h3 { margin: 20px 0 5px; font-size: 15px; }.device-card > p { margin: 0; color: var(--muted); font-size: 10px; }.device-card dl { display: grid; gap: 9px; margin: 19px 0; padding: 13px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }.device-card dl div { display: flex; justify-content: space-between; gap: 8px; }.device-card dt { color: var(--muted); font-size: 10px; }.device-card dd { margin: 0; font-size: 10px; font-weight: 750; }.button-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; }
.operations-page-heading { margin-bottom: 20px; }.operations-page-grid { margin-bottom: 14px; }.operations-events { margin-bottom: 28px; }.operations-events .section-title-row p { margin: 5px 0 0; color: var(--muted); font-size: 9px; }.operations-empty-row { padding: 30px !important; color: var(--muted); text-align: center; }.redeem-card > .kicker { margin-top: 3px; }.device-overview { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; margin-bottom: 26px; }.device-overview article { min-width: 0; display: grid; grid-template-columns: 44px 1fr; align-items: center; gap: 12px; padding: 17px 18px; border: 1px solid var(--line); border-radius: 12px; background: white; }.device-overview article > span { width: 44px; height: 44px; display: grid; place-items: center; border-radius: 10px; color: #638b20; background: var(--lime-soft); }.device-overview svg { width: 20px; }.device-overview article > div { min-width: 0; display: grid; gap: 3px; }.device-overview strong { font-size: 21px; }.device-overview small { overflow: hidden; color: var(--muted); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }.device-section-group { margin-top: 28px; }.device-section-group + .device-section-group { padding-top: 28px; border-top: 1px solid var(--line); }.device-section-group .section-heading { margin-bottom: 14px; }.device-section-group .section-heading h2 { font-size: 22px; }.infrastructure-grid { grid-template-columns: repeat(auto-fit,minmax(230px,1fr)); }
.lpr-mode-switch { display: inline-grid; grid-template-columns: 1fr 1fr; gap: 4px; margin-bottom: 14px; padding: 4px; border: 1px solid var(--line); border-radius: 12px; background: #eef2ef; }.lpr-mode-switch button { min-width: 205px; display: grid; grid-template-columns: 35px 1fr; align-items: center; gap: 10px; padding: 9px 13px; border: 0; border-radius: 8px; color: #66776f; background: transparent; text-align: left; cursor: pointer; }.lpr-mode-switch button > svg { width: 18px; justify-self: center; }.lpr-mode-switch button > span { display: grid; gap: 2px; }.lpr-mode-switch strong { font-size: 10px; }.lpr-mode-switch small { color: #8b9892; font-size: 8px; }.lpr-mode-switch button.active { color: #183028; background: white; box-shadow: 0 4px 13px rgba(15,35,27,.08); }.lpr-mode-switch button.active svg { color: #6f9b28; }[data-lpr-panel][hidden] { display: none !important; }.ocr-confidence { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 12px; border-radius: 8px; color: #5e762f; background: #f0f8e5; font-size: 8px; }.ocr-confidence span { display: flex; align-items: center; gap: 6px; font-weight: 800; text-transform: uppercase; }.ocr-confidence i { width: 7px; height: 7px; border-radius: 50%; background: #6dc949; box-shadow: 0 0 0 4px rgba(109,201,73,.12); }.ocr-confidence strong { font-size: 9px; }.manual-lpr-panel { display: grid; grid-template-columns: minmax(270px,.85fr) minmax(360px,1.15fr); gap: 28px; align-items: center; margin-bottom: 14px; }.manual-lpr-copy { display: flex; align-items: flex-start; gap: 15px; }.manual-lpr-copy > div { display: grid; gap: 5px; }.manual-lpr-copy h2 { margin: 2px 0; font-size: 21px; }.manual-lpr-copy p { margin: 0; color: var(--muted); font-size: 10px; line-height: 1.6; }.manual-lpr-form { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; align-items: end; }.manual-lpr-form .button { grid-column: 1/-1; }.manual-lpr-form label { display: grid; gap: 6px; color: var(--muted); font-size: 9px; font-weight: 750; }
.device-discovery { display: grid; grid-template-columns: 190px minmax(0,1fr); gap: 30px; align-items: center; overflow: hidden; margin-bottom: 28px; background: linear-gradient(135deg,#fff 45%,#f3f8ed); }.discovery-radar { position: relative; width: 160px; height: 160px; display: grid; place-items: center; overflow: hidden; justify-self: center; border: 1px solid #bfd0c4; border-radius: 50%; background: repeating-radial-gradient(circle,transparent 0 25px,rgba(102,139,66,.18) 26px 27px),linear-gradient(rgba(111,151,45,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(111,151,45,.08) 1px,transparent 1px),#0b1c16; background-size: auto,40px 40px,40px 40px,auto; box-shadow: inset 0 0 35px rgba(0,0,0,.38),0 12px 30px rgba(15,36,27,.09); }.discovery-radar::before,.discovery-radar::after { content: ""; position: absolute; background: rgba(183,243,75,.22); }.discovery-radar::before { width: 1px; height: 100%; }.discovery-radar::after { width: 100%; height: 1px; }.discovery-radar > b { position: relative; z-index: 3; width: 34px; height: 34px; display: grid; place-items: center; border-radius: 50%; color: #102119; background: var(--lime); box-shadow: 0 0 0 8px rgba(183,243,75,.1); }.discovery-radar > b svg { width: 17px; }.discovery-radar > i { position: absolute; z-index: 2; width: 7px; height: 7px; border-radius: 50%; background: var(--lime); box-shadow: 0 0 12px var(--lime); }.discovery-radar > i:nth-of-type(1) { left: 31px; top: 48px; }.discovery-radar > i:nth-of-type(2) { right: 35px; bottom: 38px; }.discovery-radar > i:nth-of-type(3) { right: 26px; top: 57px; }.radar-sweep { position: absolute; inset: 0; border-radius: 50%; background: conic-gradient(from 0deg,transparent 0 76%,rgba(183,243,75,.45) 96%,transparent 100%); transform: rotate(10deg); transform-origin: center; opacity: .65; }.discovery-radar.scanning .radar-sweep { animation: radar-scan 1.05s linear infinite; }.discovery-radar.scanning > i { animation: radar-blip .75s ease-in-out infinite alternate; }.discovery-radar.scan-complete > i { animation: radar-blip 1.6s ease-in-out infinite alternate; }@keyframes radar-scan { to { transform: rotate(370deg); } }@keyframes radar-blip { from { opacity: .35; transform: scale(.75); } to { opacity: 1; transform: scale(1.3); } }.discovery-copy { min-width: 0; }.discovery-copy h2 { margin: 5px 0 8px; font-size: 25px; }.discovery-copy p { max-width: 720px; margin: 0; color: var(--muted); font-size: 10px; line-height: 1.65; }.discovery-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }.discovery-actions .button.active { border-color: #6f9630; background: var(--lime-soft); }.discovery-status { display: block; margin-top: 11px; color: #75847d; font-size: 8px; }.manual-device-form[hidden] { display: none; }.manual-device-form { grid-column: 1/-1; display: grid; grid-template-columns: repeat(4,minmax(120px,1fr)); gap: 9px; padding-top: 18px; border-top: 1px solid var(--line); }.discovered-devices { margin: 30px 0; }.discovered-device-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(210px,1fr)); gap: 11px; }.discovered-device-card { min-width: 0; padding: 17px; border: 1px solid var(--line); border-radius: 12px; background: white; }.discovered-device-card.registered { background: #f5f8f3; opacity: .76; }.discovered-device-head { display: flex; align-items: center; justify-content: space-between; }.discovered-device-head > span { width: 38px; height: 38px; display: grid; place-items: center; border-radius: 9px; color: #638b20; background: var(--lime-soft); }.discovered-device-head svg { width: 18px; }.discovered-device-head b { color: #608228; font-size: 10px; }.discovered-device-card > small { display: block; margin-top: 14px; color: #74837c; font-size: 8px; text-transform: uppercase; }.discovered-device-card h3 { margin: 5px 0 10px; font-size: 14px; }.discovered-device-card code { display: inline-flex; padding: 5px 7px; border-radius: 6px; background: #eef2ef; font-size: 9px; }.discovered-device-card p { min-height: 28px; margin: 10px 0 13px; color: var(--muted); font-size: 9px; }.discovered-device-card form .button { width: 100%; }.device-registered { min-height: 39px; display: flex; align-items: center; justify-content: center; gap: 6px; border-radius: 8px; color: #54771d; background: #eaf5dc; font-size: 9px; font-weight: 850; }.device-registered svg { width: 14px; }
.app-footer { display: flex; justify-content: space-between; margin-top: 60px; padding: 22px 0 5px; border-top: 1px solid var(--line); color: #8b9791; font-size: 10px; }
.toast-message { position: fixed; z-index: 100; right: 24px; top: 86px; max-width: 440px; display: grid; grid-template-columns: 24px 1fr 25px; align-items: center; gap: 10px; padding: 13px 14px; border-radius: 9px; color: white; box-shadow: 0 14px 35px rgba(0,0,0,.2); font-size: 12px; }.toast-message.success { background: #1f6b45; }.toast-message.error { background: #8f3c38; }.toast-message button { border: 0; background: transparent; color: inherit; font-size: 20px; cursor: pointer; }.toast-message svg { width: 17px; }

/* Actualizaciones */
.panel { padding: 24px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; box-shadow: 0 5px 20px rgba(21,38,31,.035); }
.panel h2 { margin: 5px 0 0; font-size: 21px; }
.update-grid { display: grid; grid-template-columns: .72fr 1.28fr; gap: 14px; }
.update-status-card { display: flex; flex-direction: column; align-items: flex-start; background: var(--ink); color: white; }
.update-status-card p { color: #adbbb4; font-size: 12px; line-height: 1.65; }
.version-number { margin: 18px 0 8px; font-size: 38px; letter-spacing: -1.5px; }
.status-pill { display: inline-flex; align-items: center; gap: 7px; margin-top: auto; padding: 7px 10px; border-radius: 999px; font-size: 10px; font-weight: 800; text-transform: uppercase; }
.status-pill.ok { color: #b7f34b; background: rgba(183,243,75,.1); }.status-pill span { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.upload-form { display: grid; gap: 14px; margin-top: 20px; }
.file-drop { min-height: 190px; position: relative; display: grid; grid-template-columns: auto minmax(0,1fr) auto; align-items: center; gap: 18px; padding: 28px; border: 1px dashed #aebdb5; border-radius: 13px; background: linear-gradient(135deg,#fbfdf9,#f4f8f2); cursor: pointer; outline: none; transition: border-color .18s, background .18s, box-shadow .18s, transform .18s; }
.file-drop:hover,.file-drop:focus-visible,.file-drop.dragging { border-color: #78a027; background: #f1f8e8; box-shadow: 0 0 0 4px rgba(183,243,75,.2); transform: translateY(-1px); }.file-drop.has-file { border-style: solid; border-color: #8eb54a; background: #f5faee; }.file-drop.invalid { border-color: #c55b53; background: #fff6f5; box-shadow: 0 0 0 4px rgba(197,91,83,.1); }.file-input-hidden { position: absolute !important; width: 1px !important; height: 1px !important; min-height: 1px !important; overflow: hidden !important; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; opacity: 0; }.file-drop-icon { width: 58px; height: 58px; display: grid; place-items: center; border-radius: 15px; color: #5f861d; background: #e9f5d7; }.file-drop-icon svg { width: 27px; height: 27px; }.file-drop-copy { min-width: 0; display: grid; gap: 6px; text-align: left; }.file-drop-copy[hidden],.file-drop-action[hidden] { display: none; }.file-drop-copy strong { color: var(--ink); font-size: 14px; }.file-drop-copy small { color: var(--muted); font-size: 10px; }.file-drop-action { min-width: 130px; min-height: 42px; display: inline-flex; align-items: center; justify-content: center; padding: 0 17px; border: 1px solid #8ca09a; border-radius: 9px; color: #344a40; background: #fff; font-size: 11px; font-weight: 850; box-shadow: 0 4px 12px rgba(21,38,31,.05); }.file-selection { min-width: 0; grid-column: 2/-1; display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: 18px; }.file-selection[hidden] { display: none; }.file-selection > span { min-width: 0; display: grid; gap: 5px; text-align: left; }.file-selection strong { overflow: hidden; color: var(--ink); font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }.file-selection small { color: var(--muted); font-size: 10px; }.file-selection b { padding: 7px 9px; border-radius: 999px; color: #517718; background: #e6f3d2; font-size: 9px; text-transform: uppercase; white-space: nowrap; }.file-drop-requirements { position: absolute; left: 28px; bottom: 17px; color: #84918b; font-size: 9px; }.file-upload-error { margin: -5px 0 0; padding: 10px 12px; border-radius: 8px; color: #973f39; background: #fbe8e6; font-size: 10px; font-weight: 750; }.file-upload-error[hidden] { display: none; }
.pending-update { display: flex; justify-content: space-between; align-items: center; gap: 30px; margin-top: 14px; }.pending-update p { margin-bottom: 0; color: var(--muted); font-size: 12px; }.button:disabled { opacity: .45; cursor: not-allowed; transform: none; }
.notice { margin-bottom: 14px; padding: 13px 15px; border-radius: 8px; font-size: 12px; font-weight: 700; }.notice-success { color: #1c7145; background: #e3f4e9; }.notice-error { color: #9a3935; background: #f9e5e3; }
.restart-card { max-width: 620px; margin: 9vh auto; text-align: center; }.restart-card p { color: var(--muted); }.restart-card .button { margin-top: 15px; }.restart-spinner { width: 46px; height: 46px; margin: 0 auto 22px; border: 4px solid #e3e9e5; border-top-color: #76a326; border-radius: 50%; animation: spin .9s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } }

/* Módulos administrativos, estaciones y ATM */
.admin-console { display: grid; grid-template-columns: 255px minmax(0,1fr); gap: 18px; align-items: start; scroll-margin-top: 88px; }.admin-module-content { min-width: 0; }.module-tabs { position: sticky; top: 86px; z-index: 8; display: grid; gap: 4px; max-height: calc(100vh - 108px); overflow-y: auto; margin: 0; padding: 10px; border: 1px solid var(--line); border-radius: 13px; background: rgba(255,255,255,.97); box-shadow: 0 12px 35px rgba(21,38,31,.055); backdrop-filter: blur(12px); }.admin-nav-intro { display: grid; gap: 4px; padding: 10px 10px 13px; border-bottom: 1px solid var(--line); }.admin-nav-intro > span { color: #719329; font-size: 7px; font-weight: 900; letter-spacing: .8px; text-transform: uppercase; }.admin-nav-intro strong { font-size: 13px; }.admin-nav-intro small { color: var(--muted); font-size: 8px; line-height: 1.5; }.admin-nav-group { margin: 7px 10px 2px; color: #98a39e; font-size: 7px; font-weight: 900; letter-spacing: .85px; text-transform: uppercase; }.module-tabs a { min-width: 0; display: grid; grid-template-columns: 34px minmax(0,1fr) auto; align-items: center; gap: 10px; padding: 9px; border-radius: 9px; color: #607068; }.module-tabs a > span { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 8px; color: #68852d; background: #f0f5eb; }.module-tabs a > span svg { width: 16px; }.module-tabs a > div { min-width: 0; display: grid; gap: 2px; }.module-tabs a strong { overflow: hidden; color: var(--ink); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }.module-tabs a small { overflow: hidden; color: #87948e; font-size: 7px; text-overflow: ellipsis; white-space: nowrap; }.module-tabs a b { min-width: 22px; padding: 5px 6px; border-radius: 999px; color: #7d8b84; background: #edf1ee; font-size: 7px; text-align: center; }.module-tabs a:hover { color: var(--ink); background: #f3f8ed; }.module-tabs a.active { color: var(--ink); background: var(--lime-soft); box-shadow: inset 3px 0 0 #83ad32; }.module-tabs a.active > span { color: var(--ink); background: var(--lime); }.module-tabs a.active b { color: #4e6d19; background: rgba(255,255,255,.65); }.module-tabs a.needs-attention:not(.active) b { color: #a33d35; background: #fbe5e2; }
.admin-summary-grid { display: grid; grid-template-columns: repeat(5,1fr); gap: 10px; margin: -4px 0 22px; }.admin-summary-grid > a { min-width: 0; display: flex; align-items: center; gap: 12px; padding: 15px; border: 1px solid var(--line); border-radius: 11px; background: white; box-shadow: 0 4px 14px rgba(21,38,31,.025); }.admin-summary-grid > a:hover { border-color: #aebdad; background: #f9fcf6; }.admin-summary-grid > a > span { width: 36px; height: 36px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 9px; color: #5f841f; background: #eff7e3; }.admin-summary-grid > a > span svg { width: 17px; }.admin-summary-grid > a > div { min-width: 0; display: grid; gap: 2px; }.admin-summary-grid strong { font-size: 19px; }.admin-summary-grid small { overflow: hidden; color: var(--muted); text-overflow: ellipsis; white-space: nowrap; font-size: 9px; }.admin-summary-grid > a.needs-attention { color: white; border-color: var(--ink); background: var(--ink); }.admin-summary-grid > a.needs-attention > span { color: var(--ink); background: var(--lime); }.admin-summary-grid > a.needs-attention small { color: #acbbb4; }.admin-create-disclosure { margin-bottom: 12px; border: 1px solid var(--line); border-radius: 11px; background: white; }.admin-create-disclosure > summary { min-height: 70px; display: grid; grid-template-columns: 38px 1fr 18px; align-items: center; gap: 12px; padding: 13px 17px; cursor: pointer; list-style: none; }.admin-create-disclosure > summary::-webkit-details-marker { display: none; }.admin-create-disclosure > summary > span { width: 38px; height: 38px; display: grid; place-items: center; border-radius: 9px; color: #527817; background: var(--lime-soft); }.admin-create-disclosure > summary > span svg { width: 17px; }.admin-create-disclosure > summary > div { display: grid; gap: 4px; }.admin-create-disclosure > summary strong { font-size: 12px; }.admin-create-disclosure > summary small { color: var(--muted); font-size: 9px; }.admin-create-disclosure > summary > svg { width: 15px; transition: transform .2s; }.admin-create-disclosure[open] > summary > svg { transform: rotate(90deg); }.admin-create-disclosure .admin-create-form { margin: 0 12px 12px; background: #f8faf7; box-shadow: none; }
.admin-section { margin: 0; padding: 22px; scroll-margin-top: 96px; border: 1px solid var(--line); border-radius: 13px; background: rgba(255,255,255,.58); animation: adminPanelIn .22s ease both; }.admin-section[hidden],.admin-section.is-admin-hidden { display: none !important; }.admin-section > .section-heading:first-child { min-height: 72px; margin-bottom: 17px; padding-bottom: 17px; border-bottom: 1px solid var(--line); }.admin-section > .section-heading:first-child h2 { margin-bottom: 5px; font-size: 25px; letter-spacing: -.65px; }.admin-section > .section-heading:first-child p { max-width: 760px; margin: 0; color: var(--muted); font-size: 10px; line-height: 1.6; }@keyframes adminPanelIn { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: none; } }.admin-create-form, .admin-row-form { display: grid; grid-template-columns: repeat(4,minmax(120px,1fr)) auto; gap: 9px; align-items: center; }.admin-create-form { padding: 16px; border: 1px solid var(--line); border-radius: 11px; background: #fff; }.admin-create-form input, .admin-create-form select, .admin-row-form input, .admin-row-form select { min-height: 39px; font-size: 11px; }.admin-list { display: grid; gap: 7px; margin-top: 10px; }.admin-row { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 8px; padding: 9px; border: 1px solid var(--line); border-radius: 9px; background: #fff; }.danger { color: var(--red); border-color: #ecc8c5; }.mini-check { display: flex !important; align-items: center; gap: 6px; color: var(--muted); font-size: 10px; white-space: nowrap; }.mini-check input { width: 15px !important; min-height: 15px !important; accent-color: #6b9225; }
.admin-table { overflow-x: auto; border: 1px solid var(--line); border-radius: 11px; background: #fff; }.admin-table table { min-width: 760px; }.admin-table td small { color: var(--muted); }.admin-table form { margin: 0; }
.occupancy-summary { display: grid; grid-template-columns: repeat(3,1fr); gap: 14px; margin-bottom: 14px; }.occupancy-stat { min-height: 126px; display: grid; align-content: center; gap: 6px; padding: 22px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }.occupancy-stat.dark { color: #fff; background: var(--ink); border-color: var(--ink); }.occupancy-stat > span { color: var(--muted); font-size: 11px; font-weight: 750; text-transform: uppercase; letter-spacing: .7px; }.occupancy-stat.dark > span,.occupancy-stat.dark > small { color: #aebbb4; }.occupancy-stat > strong { font-size: 31px; letter-spacing: -1px; }.occupancy-stat > small { color: var(--muted); font-size: 10px; }.progress.light { width: 100%; margin: 8px 0 0; background: #e7ece9; }.occupancy-panel { padding: 0; overflow: hidden; }.occupancy-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 22px; border-bottom: 1px solid var(--line); }.occupancy-toolbar h2 { margin: 4px 0 0; }.occupancy-search { width: min(100%,380px); position: relative; }.occupancy-search svg { position: absolute; top: 15px; left: 14px; width: 18px; color: #6b7c74; }.occupancy-search input { padding-left: 43px; }.occupancy-table { border: 0; border-radius: 0; }.occupancy-table table { min-width: 1160px; }.occupancy-table td { vertical-align: middle; }.occupancy-table td > strong,.occupancy-table td > small { display: block; }.occupancy-table td > small { margin-top: 5px; }.vehicle-plate-chip { display: inline-flex; padding: 7px 10px; border: 2px solid #cbd3cf; border-radius: 6px; color: #15231d; background: #fdfefb; font-family: ui-monospace,Consolas,monospace; font-size: 12px; font-weight: 900; letter-spacing: 1.5px; box-shadow: inset 0 0 0 1px #fff; }.duration-label { display: flex !important; align-items: center; gap: 5px; color: #628b1e !important; font-weight: 750; }.duration-label svg { width: 13px; height: 13px; }.occupancy-status { display: inline-flex; align-items: center; padding: 6px 8px; border-radius: 999px; font-size: 9px; font-weight: 850; white-space: nowrap; }.occupancy-status.ready { color: #1f7044; background: #e3f4e9; }.occupancy-status.pending { color: #9a463f; background: #fbe8e5; }.occupancy-status.grace { color: #835e19; background: #fff2d8; }.amount-due { color: var(--ink); }.button.compact { min-height: 34px; padding-inline: 11px; font-size: 10px; white-space: nowrap; }.occupancy-empty { min-height: 300px; display: grid; place-items: center; align-content: center; gap: 8px; padding: 30px; color: var(--muted); text-align: center; }.occupancy-empty svg { width: 48px; height: 48px; color: #8ca12c; }.occupancy-empty h3,.occupancy-empty p { margin: 0; }.occupancy-empty p { font-size: 11px; }.occupancy-empty.filtered { min-height: 210px; }
.tariff-form { grid-template-columns: 1.5fr repeat(4,.7fr) auto; }.rate-card { margin-top: 10px; padding: 18px; border: 1px solid var(--line); border-radius: 11px; background: #fff; }.rate-head { display: grid; grid-template-columns: 1.4fr repeat(4,.7fr) auto auto; gap: 9px; align-items: end; }.rate-head label { display: grid; gap: 5px; color: var(--muted); font-size: 9px; font-weight: 700; }.rate-head input { min-height: 39px; }.band-list { display: flex; flex-wrap: wrap; gap: 7px; margin: 15px 0; }.band-chip { display: inline-flex; align-items: center; gap: 7px; padding: 7px 9px; border-radius: 999px; background: #eef3eb; font-size: 10px; }.band-chip button { border: 0; background: transparent; color: var(--red); cursor: pointer; }.band-form { display: grid; grid-template-columns: repeat(3,1fr) auto; gap: 8px; }.band-form input { min-height: 39px; }
.rate-card-title { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:14px; }.rate-type-badge { display:inline-flex; align-items:center; min-height:28px; padding:0 11px; border-radius:999px; color:#4c7208; background:#ecfbd3; font-size:9px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; }.rate-card-title small { color:var(--muted); }.monthly-rate-summary { display:grid; grid-template-columns:auto 1fr; align-items:center; gap:18px; margin-top:16px; padding:15px; border:1px solid #d8ebbc; border-radius:10px; background:linear-gradient(135deg,#f7fdea,#fff); }.monthly-rate-summary span { display:grid; }.monthly-rate-summary strong { color:#213719; font-size:24px; }.monthly-rate-summary small,.monthly-rate-summary p { color:var(--muted); }.monthly-rate-summary p { margin:0; line-height:1.6; }.tag-plan-form > label { display:grid; gap:6px; min-width:0; color:var(--muted); font-size:9px; font-weight:750; }.tag-plan-form > label > span { min-height:11px; }.command-queue-panel { margin-top:18px; padding:18px; border:1px solid var(--line); border-radius:12px; background:#fbfcfa; }.section-heading.compact { margin-bottom:12px; }.section-heading.compact h3 { margin:3px 0; font-size:18px; }.command-queue-panel code { color:#31520c; font-size:10px; }
.rate-plan-form [hidden],.tag-plan-form [hidden] { display:none !important; }
.settings-form { display: grid; grid-template-columns: repeat(2,1fr); gap: 15px; }.settings-form label { display: grid; gap: 7px; color: var(--muted); font-size: 11px; font-weight: 700; }.settings-form .button { align-self: end; }
.settings-divider { grid-column: 1/-1; margin-top: 9px; padding-top: 18px; border-top: 1px solid var(--line); }.settings-divider h3 { margin: 4px 0; }.settings-divider p { margin: 0; color: var(--muted); font-size: 11px; }.settings-wide { grid-column: 1/-1; }.fiscal-security-note { padding: 11px 13px; border-radius: 8px; color: #53655c; background: #eef3eb; font-size: 10px; }.fiscal-security-note code { font-weight: 800; }
.email-settings-head { position: relative; padding-right: 160px; }.email-settings-head::after { content: "mail.adisparking.com : 465"; position: absolute; top: 22px; right: 0; padding: 8px 11px; border-radius: 999px; color: #557c1c; background: #eff8df; font-family: ui-monospace,Consolas,monospace; font-size: 9px; font-weight: 800; }.email-secret-status { display: grid; grid-template-columns: 43px 1fr auto; align-items: center; gap: 13px; padding: 15px 17px; border: 1px solid #d9e3dc; border-radius: 10px; background: #f7faf8; }.email-secret-status.ready { border-color: #cce4bd; background: #f1f8e9; }.email-secret-status.pending { border-color: #eadbb9; background: #fff9ed; }.email-secret-icon { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 50%; color: #648d21; background: #e8f5d2; }.email-secret-icon svg { width: 20px; }.email-secret-status > div { display: grid; gap: 3px; }.email-secret-status strong { color: var(--ink); font-size: 11px; }.email-secret-status p { margin: 0; color: var(--muted); font-size: 9px; line-height: 1.55; }.settings-save { grid-column: 1/-1; justify-self: end; min-width: 210px; }.email-test-card { display: grid; grid-template-columns: 48px minmax(190px,1fr) minmax(220px,.7fr) auto; align-items: end; gap: 15px; margin-top: 14px; }.email-test-card > span { width: 46px; height: 46px; display: grid; place-items: center; align-self: center; border-radius: 12px; color: var(--lime); background: var(--ink); }.email-test-card > span svg { width: 22px; }.email-test-card > div { display: grid; align-self: center; gap: 4px; }.email-test-card > div strong { font-size: 13px; }.email-test-card > div small { color: var(--muted); font-size: 9px; line-height: 1.5; }.email-test-card label { display: grid; gap: 6px; color: var(--muted); font-size: 9px; font-weight: 750; }
.edit-detail { margin-top: 8px; padding: 10px 13px; border: 1px solid var(--line); border-radius: 9px; background: #fff; }.edit-detail summary { color: var(--muted); font-size: 11px; font-weight: 750; cursor: pointer; }.edit-detail .admin-create-form { margin-top: 11px; padding: 0; border: 0; }.delete-inline { margin-top: 10px; text-align: right; }
.atm-layout { display: grid; grid-template-columns: minmax(0,1.5fr) minmax(290px,.55fr); gap: 14px; }.atm-main { min-height: 560px; }.panel-heading { display: flex; justify-content: space-between; align-items: start; }.large-icon { width: 38px; height: 38px; color: #6d9029; }.scan-form { display: grid; grid-template-columns: 1fr auto; gap: 8px; margin: 24px 0; }.ticket-summary { display: grid; grid-template-columns: repeat(4,1fr); gap: 1px; overflow: hidden; margin: 20px 0; border: 1px solid var(--line); border-radius: 10px; background: var(--line); }.ticket-summary div { display: grid; gap: 6px; padding: 15px; background: #fff; }.ticket-summary span { color: var(--muted); font-size: 9px; text-transform: uppercase; }.ticket-summary strong { font-size: 13px; }.ticket-summary .amount { background: var(--ink); color: white; }.ticket-summary .amount span { color: #bac7c1; }.ticket-summary .amount strong { color: var(--lime); font-size: 22px; }.payment-form { display: grid; grid-template-columns: repeat(2,1fr); gap: 13px; }.payment-form label { display: grid; gap: 7px; color: var(--muted); font-size: 10px; font-weight: 700; }.payment-form .wide { grid-column: 1/-1; }.atm-side { display: grid; align-content: start; gap: 14px; }.atm-side textarea { min-height: 80px; resize: vertical; padding: 10px; border: 1px solid #ccd5d0; border-radius: 8px; }.atm-empty { min-height: 320px; display: grid; place-items: center; align-content: center; gap: 12px; color: var(--muted); }.atm-empty svg { width: 52px; height: 52px; }.cash-balance > strong { display: block; margin: 18px 0; font-size: 34px; }.cash-balance dl { display: grid; gap: 7px; }.cash-balance dl div { display: flex; justify-content: space-between; }.cash-balance dt { color: var(--muted); }.cash-balance dd { margin: 0; font-weight: 750; }
.station-grid { display: grid; grid-template-columns: 1.4fr .6fr; gap: 14px; }.station-camera { min-height: 390px; }.printed-ticket { text-align: center; }.printed-ticket img { width: 180px; height: 180px; display: block; margin: 12px auto; }.printed-ticket > strong { font-family: ui-monospace,monospace; }.printed-ticket dl, .exit-result dl { display: grid; gap: 8px; margin: 18px 0; }.printed-ticket dl div, .exit-result dl div { display: flex; justify-content: space-between; border-bottom: 1px solid var(--line); padding-bottom: 7px; }.printed-ticket dd, .exit-result dd { margin: 0; font-weight: 700; }.station-ready { display: grid; place-items: center; align-content: center; text-align: center; color: var(--muted); }.station-ready svg { width: 56px; height: 56px; color: #78942d; }.station-ready h2 { color: var(--ink); }.exit-validator { display: grid; align-content: center; gap: 15px; min-height: 330px; }.exit-result { min-height: 330px; }.report-grid, .payment-stats { display: grid; grid-template-columns: repeat(3,1fr); gap: 14px; }.report-card { display: grid; gap: 8px; }.report-card > svg { width: 28px; height: 28px; color: #70962a; }.report-card > strong { font-size: 34px; }.report-card > span { color: var(--muted); }.report-card .button { margin-top: 9px; }.payment-stats .panel { display: grid; gap: 6px; }.payment-stats strong { font-size: 27px; }.payment-stats small { color: var(--green); }

@media (max-width: 1180px) {
  .metric-grid { grid-template-columns: repeat(2, 1fr); }
  .admin-command-bar { grid-template-columns: repeat(2,1fr); }.command-intro { grid-column: 1/-1; min-height: 72px; }.admin-summary-grid { grid-template-columns: repeat(3,1fr); }.admin-console { grid-template-columns: 1fr; }.module-tabs { top: 70px; display: flex; max-height: none; overflow-x: auto; overflow-y: hidden; padding: 8px; }.admin-nav-intro,.admin-nav-group { display: none; }.module-tabs a { flex: 0 0 185px; }
  .driver-overview { grid-template-columns: 1fr 1fr; }.vehicle-mini { grid-column: 1/-1; min-height: auto; }
  .wallet-layout { grid-template-columns: 1fr; }.device-grid { grid-template-columns: repeat(3, 1fr); }
  .vehicle-form { grid-template-columns: 220px 1fr 1fr; }.vehicle-form .button { grid-column: 2/-1; }
}
@media (max-width: 900px) {
  .login-page { grid-template-columns: 1fr; }.login-visual { min-height: 430px; }.login-pitch { bottom: 45px; }.login-pitch h1 { font-size: 55px; letter-spacing: -3px; }.login-pitch > p { margin: 18px 0; }.login-panel { padding: 50px 25px; }
  .app-shell { grid-template-columns: 1fr; }.sidebar { position: fixed; left: -260px; width: 246px; box-shadow: var(--shadow); transition: left .2s; }.sidebar.open { left: 0; }.mobile-menu { display: grid; }.topbar-location small { display: none; }
  .operations-grid, .token-layout { grid-template-columns: 1fr; }.camera-simulator { grid-template-columns: 1fr; }.device-grid { grid-template-columns: repeat(2, 1fr); }.device-overview { grid-template-columns: 1fr; }.manual-lpr-panel { grid-template-columns: 1fr; }.manual-device-form { grid-template-columns: repeat(2,1fr); }
  .update-grid { grid-template-columns: 1fr; }
  .atm-layout, .station-grid, .admin-live-grid { grid-template-columns: 1fr; }.admin-create-form, .admin-row-form, .rate-head { grid-template-columns: repeat(2,1fr); }.tariff-form { grid-template-columns: repeat(2,1fr); }
  .occupancy-toolbar { align-items: stretch; flex-direction: column; }.occupancy-search { width: 100%; max-width: none; }
}
@media (max-width: 660px) {
  .content { padding: 28px 18px 20px; }.topbar { padding: 0 15px; }.profile-chip div { display: none; }.profile-chip { padding: 0 8px; }
  .page-heading { align-items: flex-start; }.heading-actions time { display: none; }.metric-grid, .driver-overview, .package-grid, .device-grid, .admin-summary-grid { grid-template-columns: 1fr; }.module-tabs a { flex-basis: 150px; grid-template-columns: 30px minmax(0,1fr); }.module-tabs a > span { width: 30px; height: 30px; }.module-tabs a b,.module-tabs a small { display: none; }.admin-section { padding: 17px 14px; }.vehicle-mini { grid-column: auto; }.metric-card { min-height: 145px; }.topbar-site-link { display: none; }.operations-page-heading > .live-chip,.operations-page-heading > .state { align-self: flex-start; }.lpr-mode-switch { width: 100%; }.lpr-mode-switch button { min-width: 0; }.manual-lpr-form,.manual-device-form { grid-template-columns: 1fr; }.device-discovery { grid-template-columns: 1fr; padding: 22px; }.discovery-radar { width: 140px; height: 140px; }.discovery-copy { text-align: center; }.discovery-actions { justify-content: center; }
  .wallet-layout { display: block; }.activity-card { margin-top: 14px; }.section-heading { align-items: flex-start; }.current-balance { display: none; }
  .vehicle-form { grid-template-columns: 1fr; }.vehicle-form .button { grid-column: auto; }.plate-preview { height: 90px; }
  .token-card { grid-template-columns: 55px 1fr 38px; }.token-code-visual { width: 52px; height: 52px; }.token-card h3 { font-size: 12px; }
  .file-drop { grid-template-columns: 1fr; justify-items: center; padding: 24px 20px 48px; text-align: center; }.file-drop-copy { text-align: center; }.file-drop-action { width: 100%; }.file-selection { width: 100%; grid-column: 1; grid-template-columns: 1fr; justify-items: center; }.file-selection > span { width: 100%; text-align: center; }.file-drop-requirements { left: 15px; right: 15px; text-align: center; }
  .camera-frame { min-height: 270px; }.session-data { margin-top: 25px; }.trust-row { display: none; }.login-visual { min-height: 360px; }.login-pitch { left: 25px; right: 25px; }.login-visual { padding: 28px 25px; }
  .app-footer { display: grid; gap: 7px; }.toast-message { left: 15px; right: 15px; top: 80px; }
  .pending-update { align-items: flex-start; flex-direction: column; }
  .admin-create-form, .admin-row-form, .rate-head, .band-form, .settings-form, .payment-form, .ticket-summary, .report-grid, .payment-stats, .email-test-card { grid-template-columns: 1fr; }.payment-form .wide { grid-column: auto; }.admin-row { align-items: start; }.scan-form { grid-template-columns: 1fr; }.email-settings-head { padding-right: 0; }.email-settings-head::after { position: static; display: inline-flex; margin-top: 12px; }.email-secret-status { grid-template-columns: 43px 1fr; }.email-secret-status > .state { grid-column: 2; justify-self: start; }.settings-save { justify-self: stretch; }
  .occupancy-summary { grid-template-columns: 1fr; }
  .admin-command-bar { grid-template-columns: 1fr; }.command-intro { grid-column: auto; }.live-vehicle-list > a { grid-template-columns: 90px 1fr; }.live-vehicle-list .vehicle-elapsed,.live-vehicle-list .occupancy-status { display: none; }
}

/* Cajero automático de autoservicio / tótem */
.kiosk-body { min-width: 320px; background: #07110f; }
.kiosk-root { min-height: 100vh; }
.atm-kiosk { min-height: 100vh; display: grid; grid-template-rows: auto 1fr auto; color: #f7faf8; background: radial-gradient(circle at 12% 20%, rgba(183,243,75,.08), transparent 27%), #07110f; }
.atm-kiosk-header { min-height: 82px; display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 18px clamp(24px,4vw,68px); border-bottom: 1px solid rgba(255,255,255,.1); background: rgba(7,17,15,.86); }
.atm-terminal-state { display: flex; align-items: center; gap: 12px; text-align: right; }
.atm-terminal-state > span { width: 10px; height: 10px; background: #5add88; border-radius: 50%; box-shadow: 0 0 0 6px rgba(90,221,136,.12); }
.atm-terminal-state div { display: grid; gap: 2px; }.atm-terminal-state strong { font-size: 13px; }.atm-terminal-state small { color: #8fa39a; font-size: 10px; }
.atm-kiosk-screen { width: min(100%,1440px); min-height: 0; display: grid; grid-template-columns: minmax(430px,.85fr) minmax(560px,1.15fr); align-items: stretch; margin: 0 auto; }
.atm-ticket-pane, .atm-payment-pane { padding: clamp(28px,4.2vw,66px); }
.atm-ticket-pane { display: flex; flex-direction: column; border-right: 1px solid rgba(255,255,255,.1); }
.atm-payment-pane { display: flex; flex-direction: column; background: #f4f7f3; color: var(--ink); }
.atm-step { display: flex; align-items: center; gap: 16px; }.atm-step > span { width: 48px; height: 48px; display: grid; place-items: center; flex: 0 0 auto; border: 1px solid rgba(183,243,75,.45); border-radius: 50%; color: var(--lime); background: rgba(183,243,75,.08); font-size: 18px; font-weight: 850; }.atm-step small { display: block; margin-bottom: 3px; color: #8fa39a; font-size: 10px; font-weight: 800; letter-spacing: 1.2px; text-transform: uppercase; }.atm-step h1, .atm-step h2 { margin: 0; color: white; font-size: clamp(27px,3vw,42px); letter-spacing: -1.5px; }.atm-step.light > span { border-color: #9eb3a8; color: #557064; background: white; }.atm-step.light small { color: #73837c; }.atm-step.light h2 { color: var(--ink); font-size: clamp(24px,2.3vw,34px); }
.atm-lead { max-width: 520px; margin: 22px 0 28px 64px; color: #9db0a7; font-size: 14px; line-height: 1.65; }
.kiosk-scan-form { display: grid; gap: 9px; }.kiosk-scan-form > label { color: #91a49b; font-size: 11px; font-weight: 750; }.kiosk-scan-form > div { display: grid; grid-template-columns: 56px 1fr auto; align-items: center; overflow: hidden; border: 1px solid #3a5148; border-radius: 13px; background: #10201b; box-shadow: 0 14px 30px rgba(0,0,0,.16); }.kiosk-scan-form input { min-height: 62px; border: 0; border-radius: 0; padding: 0 10px; background: transparent; color: white; font-family: ui-monospace,Consolas,monospace; font-size: 16px; letter-spacing: .5px; box-shadow: none; }.kiosk-scan-form input::placeholder { color: #60736b; }.kiosk-scan-form button { min-height: 48px; margin-right: 7px; border: 0; border-radius: 9px; padding: 0 22px; background: var(--lime); color: #142010; font-weight: 850; cursor: pointer; }.scan-prefix { display: grid; place-items: center; color: var(--lime); border-right: 1px solid #30463d; }.scan-prefix svg { width: 25px; height: 25px; }
.kiosk-scanner-idle { flex: 1; min-height: 240px; display: grid; place-items: center; align-content: center; gap: 23px; text-align: center; }.kiosk-scanner-idle > div { display: grid; gap: 5px; }.kiosk-scanner-idle strong { font-size: 16px; }.kiosk-scanner-idle small { color: #7f958b; }.scanner-frame { position: relative; width: 118px; height: 118px; display: grid; place-items: center; border: 2px solid #456054; border-radius: 22px; color: var(--lime); background: rgba(255,255,255,.025); }.scanner-frame::before, .scanner-frame::after { content: ""; position: absolute; inset: 12px; border: solid var(--lime); border-width: 2px 0; opacity: .7; }.scanner-frame::after { transform: rotate(90deg); }.scanner-frame svg { width: 45px; height: 45px; }.scanner-frame i { position: absolute; left: 16px; right: 16px; top: 50%; height: 2px; background: var(--lime); box-shadow: 0 0 13px var(--lime); animation: kiosk-scan 2.4s ease-in-out infinite; }
@keyframes kiosk-scan { 0%,100% { transform: translateY(-30px); opacity: .45; } 50% { transform: translateY(30px); opacity: 1; } }
.kiosk-ticket-card { margin-top: 30px; overflow: hidden; border: 1px solid #30463d; border-radius: 14px; background: #0e1d18; }.ticket-card-head { display: flex; justify-content: space-between; gap: 20px; padding: 16px 18px; border-bottom: 1px solid #30463d; }.ticket-card-head span { color: #8ea097; font-size: 10px; font-weight: 800; text-transform: uppercase; }.ticket-card-head strong { color: var(--lime); font-family: ui-monospace,Consolas,monospace; font-size: 13px; }.kiosk-ticket-card dl { display: grid; grid-template-columns: repeat(2,1fr); gap: 1px; margin: 0; background: #30463d; }.kiosk-ticket-card dl div { display: grid; gap: 7px; padding: 16px 18px; background: #0e1d18; }.kiosk-ticket-card dt { color: #758b81; font-size: 9px; text-transform: uppercase; }.kiosk-ticket-card dd { margin: 0; color: white; font-size: 14px; font-weight: 750; }
.kiosk-help { display: flex; align-items: center; gap: 10px; margin-top: auto; padding-top: 24px; color: #81968c; font-size: 10px; }.kiosk-help svg { width: 17px; color: var(--lime); }
.payment-waiting, .payment-result { flex: 1; display: grid; place-items: center; align-content: center; text-align: center; }.payment-waiting > span, .result-icon { width: 88px; height: 88px; display: grid; place-items: center; margin-bottom: 22px; border-radius: 50%; background: #e4ebe6; color: #6f847a; }.payment-waiting svg, .result-icon svg { width: 39px; height: 39px; }.payment-waiting > small, .payment-result > small { color: #79932d; font-size: 10px; font-weight: 850; letter-spacing: 1.3px; text-transform: uppercase; }.payment-waiting h2, .payment-result h2 { max-width: 500px; margin: 9px 0 12px; font-size: clamp(28px,3vw,42px); letter-spacing: -1.5px; }.payment-waiting p, .payment-result > p { max-width: 470px; margin: 0; color: var(--muted); font-size: 14px; line-height: 1.65; }.payment-result.success .result-icon { background: #dff4e6; color: #258451; }.payment-result.grace .result-icon { background: var(--lime-soft); color: #658b1f; }
.result-ticket { min-width: min(100%,410px); display: grid; gap: 6px; margin: 28px 0; padding: 20px; border: 1px solid var(--line); border-radius: 13px; background: white; }.result-ticket span, .result-ticket small { color: var(--muted); font-size: 10px; text-transform: uppercase; }.result-ticket strong { font-family: ui-monospace,Consolas,monospace; font-size: 19px; }
.kiosk-total { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 4px 20px; margin: 24px 0 18px; padding: 18px 21px; border-radius: 13px; background: var(--ink); color: white; }.kiosk-total span { color: #adbbb4; font-size: 11px; text-transform: uppercase; }.kiosk-total strong { grid-row: 1/3; grid-column: 2; color: var(--lime); font-size: clamp(32px,4vw,50px); letter-spacing: -2px; }.kiosk-total small { color: #7f958b; font-family: ui-monospace,Consolas,monospace; font-size: 10px; }.kiosk-total.free { width: min(100%,410px); margin: 27px 0 18px; text-align: left; }
.kiosk-payment-form { display: grid; gap: 15px; }.kiosk-payment-methods { display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; }.kiosk-payment-methods button { min-height: 118px; display: grid; place-items: center; align-content: center; gap: 4px; border: 1px solid #ccd6d0; border-radius: 12px; padding: 12px 8px; background: white; color: var(--ink); cursor: pointer; transition: border-color .15s, box-shadow .15s, transform .15s; }.kiosk-payment-methods button:hover { transform: translateY(-1px); }.kiosk-payment-methods button.selected { border-color: #6e9626; box-shadow: 0 0 0 3px rgba(183,243,75,.34); }.kiosk-payment-methods button:disabled { opacity: .42; cursor: not-allowed; transform: none; }.kiosk-payment-methods button strong { font-size: 13px; }.kiosk-payment-methods button small { color: var(--muted); font-size: 9px; }.method-glyph { width: 36px; height: 28px; display: grid; place-items: center; margin-bottom: 3px; border: 1px solid #a5b3ac; border-radius: 6px; color: #53665d; font-size: 11px; font-weight: 900; }.method-glyph.cash { border-radius: 50%; background: var(--lime-soft); color: #5a7d19; }
.payment-device-panel { padding: 17px; border: 1px solid var(--line); border-radius: 12px; background: white; }.payment-device-panel[hidden] { display: none; }.payment-device-panel > div:first-child { display: flex; align-items: center; gap: 13px; margin-bottom: 14px; }.payment-device-panel > div > div { display: grid; gap: 3px; }.payment-device-panel > div strong { font-size: 13px; }.payment-device-panel > div small { color: var(--muted); font-size: 10px; }.payment-device-panel label, .kiosk-invoice label { display: grid; gap: 6px; color: #607169; font-size: 10px; font-weight: 750; }.payment-device-panel input, .kiosk-invoice input, .kiosk-invoice select { min-height: 44px; }.device-animation { position: relative; width: 44px; height: 44px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 10px; background: #eef3ef; }.device-animation.cash b { color: #5f8420; }.device-animation.cash i { position: absolute; width: 25px; height: 6px; top: 7px; border: 1px solid #87a652; border-radius: 2px; }.device-animation.card::before { content: ""; width: 26px; height: 18px; border: 2px solid #61746b; border-radius: 3px; }.device-animation.card i { position: absolute; width: 15px; height: 2px; top: 16px; background: #61746b; }.change-preview { display: flex !important; justify-content: space-between; margin: 13px 0 0 !important; padding-top: 12px; border-top: 1px solid var(--line); color: var(--muted); font-size: 11px; }.change-preview strong { color: var(--green); font-size: 15px !important; }
.card-payment-steps { display: grid; gap: 8px; margin: 5px 0 13px; padding: 0; list-style: none; }.card-payment-steps li { display: flex; align-items: center; gap: 9px; color: #53655c; font-size: 10px; }.card-payment-steps li span { width: 21px; height: 21px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 50%; color: #54771c; background: var(--lime-soft); font-weight: 850; }.terminal-security { display: flex !important; align-items: center; gap: 8px; margin: 0 !important; padding: 10px; border-radius: 8px; color: #496057; background: #eef5f0; font-size: 9px; }.terminal-security svg { width: 16px; height: 16px; color: #638b20; }.card-processing[hidden] { display: none; }.card-processing { position: fixed; z-index: 140; inset: 0; display: grid; place-items: center; align-content: center; gap: 12px; padding: 30px; color: white; text-align: center; background: rgba(5,15,12,.94); backdrop-filter: blur(9px); }.card-processing strong { margin-top: 10px; font-size: clamp(25px,4vw,42px); }.card-processing p { max-width: 520px; margin: 0; color: #b4c4bc; font-size: 14px; }.card-processing small { color: var(--lime); font-size: 10px; text-transform: uppercase; letter-spacing: .8px; }.terminal-pulse { position: relative; width: 92px; height: 92px; display: grid; place-items: center; border: 2px solid rgba(183,243,75,.3); border-radius: 50%; }.terminal-pulse::before { content: ""; width: 38px; height: 27px; border: 3px solid var(--lime); border-radius: 5px; }.terminal-pulse i { position: absolute; inset: -2px; border: 2px solid var(--lime); border-radius: 50%; animation: terminal-pulse 1.45s ease-out infinite; }@keyframes terminal-pulse { from { transform: scale(.72); opacity: 1; } to { transform: scale(1.34); opacity: 0; } }
.kiosk-invoice { border: 1px solid var(--line); border-radius: 10px; background: #f9fbf8; }.kiosk-invoice summary { padding: 13px 15px; color: #53655c; font-size: 11px; font-weight: 750; cursor: pointer; }.kiosk-invoice > div { padding: 0 15px 15px; }.kiosk-invoice [data-invoice-details] { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 10px; }.kiosk-invoice [data-invoice-details][hidden] { display: none; }
.kiosk-fiscal-warning { margin: 0 0 12px; padding: 10px; border-radius: 7px; color: #8a5d14; background: #fff3d6; font-size: 10px; line-height: 1.5; }.kiosk-receipt-note { display: flex; justify-content: space-between; gap: 16px; padding: 13px 15px; border: 1px solid var(--line); border-radius: 10px; background: #f9fbf8; font-size: 11px; }.kiosk-receipt-note span { color: var(--muted); }.kiosk-document-state { min-width: min(100%,410px); display: grid; gap: 4px; margin: 0 0 12px; padding: 14px; border: 1px solid var(--line); border-radius: 10px; background: #fff; }.kiosk-document-state span { color: var(--muted); font-size: 9px; text-transform: uppercase; }.kiosk-document-state strong { font-family: ui-monospace,Consolas,monospace; }.kiosk-document-state small.authorized { color: #21824e; }.kiosk-document-state small.pending { color: #a16a10; }.kiosk-secondary-action { width: min(100%,410px); min-height: 48px; display: inline-flex; align-items: center; justify-content: center; margin-bottom: 10px; border: 1px solid #9bad9f; border-radius: 10px; color: #34483e; font-size: 12px; font-weight: 800; }
.kiosk-primary-action { width: 100%; min-height: 58px; display: inline-flex; align-items: center; justify-content: center; border: 0; border-radius: 11px; padding: 0 22px; background: var(--lime); color: #142010; font-size: 14px; font-weight: 850; cursor: pointer; }.kiosk-primary-action:hover { background: #a9e63f; }.kiosk-cancel-action { padding: 5px; color: #6e7d76; font-size: 11px; font-weight: 700; text-align: center; }
.atm-kiosk-footer { min-height: 42px; display: flex; align-items: center; justify-content: space-between; padding: 0 clamp(24px,4vw,68px); border-top: 1px solid rgba(255,255,255,.08); color: #71867c; font-size: 9px; text-transform: uppercase; letter-spacing: .8px; }
.kiosk-toast { position: fixed; z-index: 100; top: 94px; left: 50%; width: min(calc(100% - 30px),620px); display: grid; grid-template-columns: 25px 1fr 28px; align-items: center; gap: 11px; transform: translateX(-50%); padding: 14px 16px; border-radius: 10px; color: white; box-shadow: 0 18px 38px rgba(0,0,0,.3); font-size: 12px; }.kiosk-toast.success { background: #1f6b45; }.kiosk-toast.error { background: #943e39; }.kiosk-toast button { border: 0; background: transparent; color: white; font-size: 22px; cursor: pointer; }
.cashier-admin-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 14px; }.cashier-admin-card { display: grid; gap: 17px; }.embedded-form { padding: 0; border: 0; box-shadow: none; }.embedded-form textarea { min-height: 80px; padding: 10px; border: 1px solid #ccd5d0; border-radius: 8px; font: inherit; }.cash-session-summary { display: grid; grid-template-columns: repeat(4,1fr); gap: 1px; margin: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 9px; background: var(--line); }.cash-session-summary div { display: grid; gap: 4px; padding: 12px; background: #f8faf7; }.cash-session-summary dt { color: var(--muted); font-size: 9px; text-transform: uppercase; }.cash-session-summary dd { margin: 0; font-size: 14px; font-weight: 800; }.cashier-history { margin-top: 14px; }
.fiscal-document-page { min-height: 100vh; display: grid; place-items: center; align-content: center; gap: 18px; padding: 30px; color: #17231d; background: #e8eeea; }.fiscal-document { width: min(100%,620px); padding: 38px; background: #fff; box-shadow: 0 20px 55px rgba(7,17,15,.15); }.fiscal-document > header { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding-bottom: 20px; border-bottom: 2px solid #17231d; }.fiscal-document > header > div { display: flex; align-items: center; gap: 10px; }.document-kind { color: #64766d; font-size: 10px; font-weight: 800; text-transform: uppercase; }.fiscal-issuer { padding: 24px 0 14px; }.fiscal-issuer h1 { margin: 0 0 10px; font-size: 24px; }.fiscal-issuer p { margin: 3px 0; color: #53655c; font-size: 11px; }.fiscal-data { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; margin: 12px 0 22px; background: #dce4df; border: 1px solid #dce4df; }.fiscal-data div { padding: 11px; background: #f8faf8; }.fiscal-data dt { color: #728078; font-size: 8px; text-transform: uppercase; }.fiscal-data dd { margin: 4px 0 0; font-size: 11px; font-weight: 750; }.fiscal-totals { width: 100%; border-collapse: collapse; }.fiscal-totals th, .fiscal-totals td { padding: 10px 0; border-bottom: 1px solid #dde5e0; font-size: 11px; }.fiscal-totals th { text-align: left; }.fiscal-totals td { text-align: right; }.fiscal-totals .total { font-size: 16px; }.sri-authorization { display: grid; gap: 5px; margin-top: 24px; padding: 14px; border-radius: 8px; font-size: 10px; }.sri-authorization.authorized { color: #1e6f43; background: #e1f2e7; }.sri-authorization.pending { color: #855d1e; background: #fff1d6; }.sri-authorization small { font-weight: 750; }.fiscal-document footer { margin-top: 28px; color: #738179; font-size: 9px; text-align: center; }.fiscal-document-actions { display: flex; gap: 9px; }.fiscal-document-actions button { min-width: 130px; }.card-authorization-slip { display: grid; gap: 11px; margin-top: 20px; padding: 14px; border: 1px dashed #80958a; background: #f6faf7; }.card-authorization-slip > strong { font-size: 11px; text-transform: uppercase; }.card-authorization-slip dl { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 18px; margin: 0; }.card-authorization-slip dl div { display: flex; justify-content: space-between; gap: 10px; }.card-authorization-slip dt { color: #718178; font-size: 9px; }.card-authorization-slip dd { margin: 0; font-family: ui-monospace,Consolas,monospace; font-size: 9px; font-weight: 750; text-align: right; }
@media print { .fiscal-document-page { display: block; padding: 0; background: #fff; }.fiscal-document { width: 100%; box-shadow: none; }.fiscal-document-actions { display: none; } }

@media (max-width: 980px) {
  .atm-kiosk-screen { grid-template-columns: 1fr; }.atm-ticket-pane { border-right: 0; border-bottom: 1px solid rgba(255,255,255,.1); }.atm-payment-pane { min-height: 620px; }.atm-lead { margin-left: 0; }.cashier-admin-grid { grid-template-columns: 1fr; }
}
@media (max-width: 620px) {
  .atm-kiosk-header { min-height: 70px; padding: 14px 18px; }.atm-terminal-state div { display: none; }.atm-ticket-pane, .atm-payment-pane { padding: 26px 18px; }.kiosk-scan-form > div { grid-template-columns: 46px 1fr; }.kiosk-scan-form button { grid-column: 1/-1; min-height: 52px; margin: 0; border-radius: 0; }.kiosk-payment-methods { grid-template-columns: 1fr; }.kiosk-payment-methods button { min-height: 78px; grid-template-columns: 45px 1fr; justify-items: start; text-align: left; }.kiosk-payment-methods button small { grid-column: 2; }.kiosk-ticket-card dl, .kiosk-invoice [data-invoice-details], .cash-session-summary { grid-template-columns: 1fr 1fr; }.atm-kiosk-footer { display: none; }
}

/* Landing informativo y recuperación de acceso */
.landing-page { min-height: 100vh; color: #f6faf7; background: #07110f; }
.landing-nav { position: absolute; z-index: 20; top: 0; left: 0; right: 0; height: 86px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 28px; padding: 0 clamp(24px,5vw,84px); border-bottom: 1px solid rgba(255,255,255,.1); background: linear-gradient(180deg,rgba(3,10,8,.75),transparent); }
.landing-nav nav { display: flex; gap: 30px; }.landing-nav nav a { color: #becbc5; font-size: 11px; font-weight: 700; }.landing-nav nav a:hover { color: white; }.landing-login { justify-self: end; display: inline-flex; align-items: center; gap: 9px; color: white; font-size: 11px; font-weight: 800; }.landing-login svg { width: 17px; height: 17px; color: var(--lime); }
.landing-hero { position: relative; min-height: min(900px,100vh); overflow: hidden; display: flex; align-items: center; padding: 128px clamp(24px,7vw,118px) 70px; }
.landing-hero-image { position: absolute; inset: -3%; background: url('/images/parking-hero-v2.png') 54% center/cover no-repeat; transform: scale(1.035); animation: landing-drive 11s ease-in-out infinite alternate; will-change: transform,background-position; }
.landing-hero-image::after { content: ""; position: absolute; inset: 0; background: linear-gradient(100deg,rgba(4,12,10,.98) 3%,rgba(4,12,10,.8) 31%,rgba(4,12,10,.16) 65%,rgba(4,12,10,.08)); }
.landing-hero-shade { position: absolute; inset: 0; background: linear-gradient(180deg,transparent 60%,#07110f 100%); }
@keyframes landing-drive { 0% { transform: scale(1.035) translate3d(0,0,0); filter: saturate(.9); } 55% { filter: saturate(1.04); } 100% { transform: scale(1.075) translate3d(-1.2%,0,0); filter: saturate(1.08); } }
.landing-hero-content { position: relative; z-index: 3; width: min(670px,57vw); }.landing-pill { display: inline-flex; align-items: center; gap: 9px; padding: 8px 12px; border: 1px solid rgba(183,243,75,.26); border-radius: 999px; color: #d6e0db; background: rgba(5,17,13,.56); backdrop-filter: blur(10px); font-size: 9px; font-weight: 800; letter-spacing: 1.2px; text-transform: uppercase; }.landing-pill i { width: 7px; height: 7px; border-radius: 50%; background: var(--lime); box-shadow: 0 0 12px var(--lime); }
.landing-hero h1 { margin: 25px 0 22px; font-size: clamp(53px,7vw,104px); line-height: .93; letter-spacing: clamp(-6px,-.4vw,-3px); }.landing-hero h1 em { color: var(--lime); font-style: normal; }.landing-hero-content > p { width: min(100%,570px); color: #afbeb7; font-size: clamp(15px,1.45vw,20px); line-height: 1.65; }
.landing-hero-actions { display: flex; align-items: center; gap: 26px; margin-top: 34px; }.landing-hero-actions > a:last-child { color: #d3ddd8; font-size: 11px; font-weight: 750; text-decoration: underline; text-underline-offset: 5px; }.landing-main-cta { min-height: 55px; display: inline-flex; align-items: center; justify-content: center; gap: 14px; padding: 0 23px; border-radius: 8px; color: #142010; background: var(--lime); font-size: 12px; font-weight: 900; box-shadow: 0 12px 30px rgba(183,243,75,.13); }.landing-main-cta:hover { background: #a9e63f; transform: translateY(-1px); }.landing-main-cta svg { width: 18px; height: 18px; }
.landing-live-sequence { display: flex; align-items: center; width: min(100%,620px); margin-top: 52px; color: #879990; font-size: 9px; font-weight: 800; text-transform: uppercase; }.landing-live-sequence span { display: flex; align-items: center; gap: 6px; white-space: nowrap; animation: sequence-state 6s infinite; }.landing-live-sequence span:nth-of-type(2) { animation-delay: 2s; }.landing-live-sequence span:nth-of-type(3) { animation-delay: 4s; }.landing-live-sequence span b { color: var(--lime); }.landing-live-sequence > i { width: clamp(20px,4vw,60px); height: 1px; margin: 0 10px; background: #53655d; }
@keyframes sequence-state { 0%,28% { color: white; text-shadow: 0 0 12px rgba(183,243,75,.6); } 33%,100% { color: #71837a; text-shadow: none; } }
.landing-access-card { position: absolute; z-index: 4; right: clamp(24px,5vw,80px); bottom: 75px; display: flex; align-items: center; gap: 14px; padding: 15px 18px; border: 1px solid rgba(255,255,255,.18); border-radius: 12px; background: rgba(8,20,16,.68); backdrop-filter: blur(15px); box-shadow: 0 16px 40px rgba(0,0,0,.25); }.landing-access-card > div { display: grid; gap: 3px; }.landing-access-card small { color: #8fa198; font-size: 8px; font-weight: 800; }.landing-access-card strong { font-size: 14px; }.landing-access-card div span { color: var(--lime); font-size: 9px; }.access-signal { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 50%; background: rgba(183,243,75,.1); }.access-signal i { width: 12px; height: 12px; border-radius: 50%; background: var(--lime); box-shadow: 0 0 0 7px rgba(183,243,75,.12),0 0 18px var(--lime); animation: access-pulse 1.8s infinite; } @keyframes access-pulse { 50% { box-shadow: 0 0 0 11px rgba(183,243,75,0),0 0 25px var(--lime); } }
.landing-trust { min-height: 74px; display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 0 clamp(24px,7vw,118px); border-block: 1px solid rgba(255,255,255,.09); color: #80938a; font-size: 9px; text-transform: uppercase; letter-spacing: 1px; }.landing-trust span { color: var(--lime); font-weight: 850; }.landing-trust strong { font-weight: 700; }
.landing-section,.landing-modules,.landing-flow { max-width: 1240px; margin: 0 auto; padding: 115px 40px; }.landing-kicker { color: var(--lime); font-size: 9px; font-weight: 850; letter-spacing: 1.5px; text-transform: uppercase; }.landing-intro { display: grid; grid-template-columns: 1.2fr .8fr; gap: 90px; align-items: end; }.landing-intro h2,.landing-section-title h2,.landing-final-cta h2 { margin: 13px 0 0; font-size: clamp(38px,5vw,68px); line-height: 1; letter-spacing: -3px; }.landing-intro > p { margin: 0; color: #8fa299; font-size: 15px; line-height: 1.8; }
.landing-feature-grid { max-width: 1240px; display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 13px; margin: -40px auto 90px; padding: 0 40px; }
.landing-feature-grid article { min-height: 440px; position: relative; display: flex; flex-direction: column; overflow: hidden; padding: 28px 28px 18px; border: 1px solid rgba(174,208,186,.16); border-radius: 16px; background: linear-gradient(150deg,rgba(17,38,29,.94),rgba(8,24,19,.98)); isolation: isolate; transition: border-color .35s,transform .35s,box-shadow .35s; }
.landing-feature-grid article::before { content: ""; position: absolute; z-index: -2; inset: 0; opacity: .22; background-image: linear-gradient(rgba(183,243,75,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(183,243,75,.05) 1px,transparent 1px); background-size: 34px 34px; mask-image: linear-gradient(to bottom,transparent 25%,black); }
.landing-feature-grid article::after { content: ""; position: absolute; z-index: -1; right: -90px; bottom: -110px; width: 330px; height: 330px; border-radius: 50%; background: rgba(183,243,75,.07); filter: blur(38px); transition: transform .4s,background .4s; }
.landing-feature-grid article:hover { transform: translateY(-5px); border-color: rgba(183,243,75,.32); box-shadow: 0 24px 60px rgba(0,0,0,.2); }.landing-feature-grid article:hover::after { transform: scale(1.12); background: rgba(183,243,75,.1); }
.feature-number { position: absolute; top: 25px; right: 27px; color: #496357; font-family: ui-monospace,Consolas,monospace; font-size: 11px; font-weight: 900; }
.feature-icon { width: 50px; height: 50px; display: grid; place-items: center; border: 1px solid rgba(183,243,75,.07); border-radius: 11px; color: var(--lime); background: rgba(183,243,75,.09); box-shadow: inset 0 0 20px rgba(183,243,75,.03); }.feature-icon svg { width: 25px; height: 25px; }
.feature-copy { position: relative; z-index: 2; }.landing-feature-grid h3 { margin: 26px 0 10px; color: #f4f8f5; font-size: 21px; letter-spacing: -.55px; }.landing-feature-grid p { margin: 0; color: #8da299; font-size: 11px; line-height: 1.7; }
.feature-visual { min-height: 180px; position: relative; display: grid; place-items: center; margin: 20px -12px 0; padding: 0; }.feature-visual::before { content: ""; position: absolute; right: 10%; bottom: 7%; left: 10%; height: 38%; border-radius: 50%; background: rgba(183,243,75,.06); filter: blur(24px); }.feature-visual img { position: relative; z-index: 1; width: 100%; height: 178px; object-fit: contain; filter: drop-shadow(0 12px 20px rgba(0,0,0,.22)); transition: transform .4s,filter .4s; }.landing-feature-grid article:hover .feature-visual img { transform: translateY(-3px) scale(1.012); filter: drop-shadow(0 16px 25px rgba(0,0,0,.3)); }
.feature-signal { position: absolute; z-index: 3; right: 9px; bottom: 0; display: flex; align-items: center; gap: 6px; padding: 7px 9px; border: 1px solid rgba(183,243,75,.18); border-radius: 999px; color: #a9c49e; background: rgba(7,22,17,.82); backdrop-filter: blur(8px); font-size: 8px; font-weight: 800; letter-spacing: .35px; text-transform: uppercase; }.feature-signal i { width: 6px; height: 6px; border-radius: 50%; background: var(--lime); box-shadow: 0 0 10px var(--lime); animation: feature-pulse 2s infinite; }
.feature-access .feature-visual img { width: 112%; max-width: none; border-radius: 10px; animation: lpr-image-read 3.6s ease-in-out infinite; }
.feature-access .feature-visual::after { content: ""; position: absolute; z-index: 2; top: 27%; left: 4%; width: 61%; height: 2px; transform-origin: center; background: linear-gradient(90deg,transparent,var(--lime) 15%,#f1ffd6 50%,var(--lime) 85%,transparent); box-shadow: 0 0 14px rgba(183,243,75,.95),0 -10px 24px rgba(183,243,75,.2),0 10px 24px rgba(183,243,75,.16); opacity: 0; animation: feature-scan 3.6s cubic-bezier(.45,.05,.35,1) infinite; }
@keyframes feature-pulse { 50% { opacity: .45; box-shadow: 0 0 2px var(--lime); } }
@keyframes feature-scan { 0%,10% { transform: translateY(0) scaleX(.55); opacity: 0; } 17% { transform: translateY(0) scaleX(1); opacity: .92; } 67% { transform: translateY(78px) scaleX(1); opacity: .92; } 76%,100% { transform: translateY(78px) scaleX(.72); opacity: 0; } }
@keyframes lpr-image-read { 0%,100% { filter: brightness(.9) saturate(.9) drop-shadow(0 12px 20px rgba(0,0,0,.22)); } 45%,70% { filter: brightness(1.08) saturate(1.08) drop-shadow(0 0 18px rgba(183,243,75,.12)); } }
.landing-modules { max-width: none; padding-inline: max(40px,calc((100vw - 1160px)/2)); background: #f0f4f1; color: #13201a; }.landing-section-title { max-width: 760px; margin-bottom: 55px; }.module-showcase { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; overflow: hidden; border: 1px solid #cdd7d1; border-radius: 14px; background: #cdd7d1; }.module-showcase article { min-height: 190px; display: grid; grid-template-columns: 90px 1fr; align-items: center; gap: 28px; padding: 30px; background: white; }.module-showcase article > span { width: 78px; height: 78px; display: grid; place-items: center; border: 1px solid #dbe3de; border-radius: 50%; color: #60736a; font-family: ui-monospace,Consolas,monospace; font-size: 15px; font-weight: 850; }.module-showcase small { color: #7ca129; font-size: 9px; font-weight: 900; }.module-showcase h3 { margin: 5px 0 8px; font-size: 19px; }.module-showcase p { margin: 0; color: #718078; font-size: 11px; }
.landing-flow ol { display: grid; grid-template-columns: repeat(4,1fr); gap: 1px; margin: 50px 0 0; padding: 0; list-style: none; background: #31433b; }.landing-flow li { min-width: 0; min-height: 390px; display: flex; flex-direction: column; overflow: hidden; background: #0a1713; }.flow-visual { position: relative; height: 220px; flex: 0 0 auto; overflow: hidden; background-image: linear-gradient(180deg,rgba(5,15,12,.03) 45%,rgba(5,15,12,.92) 100%),url('/images/parking-journey-v1.png'); background-size: 400% auto; background-repeat: no-repeat; transition: background-size .5s ease,filter .5s ease; }.landing-flow li:hover .flow-visual { background-size: 415% auto; filter: saturate(1.08) brightness(1.04); }.flow-arrival { background-position: 0 center; }.flow-ticket { background-position: 33.333% center; }.flow-payment { background-position: 66.667% center; }.flow-exit { background-position: 100% center; }.flow-visual > span { position: absolute; top: 18px; left: 20px; width: 35px; height: 35px; display: grid; place-items: center; border: 1px solid rgba(255,255,255,.45); border-radius: 50%; color: var(--lime); background: rgba(5,18,14,.72); box-shadow: 0 8px 24px rgba(0,0,0,.2); backdrop-filter: blur(8px); font-size: 10px; font-weight: 850; }.flow-copy { flex: 1; padding: 22px 25px 27px; }.landing-flow h3 { margin: 0 0 8px; font-size: 16px; }.landing-flow p { margin: 0; color: #81948a; font-size: 10px; line-height: 1.65; }
.landing-contact { max-width: 1240px; display: grid; grid-template-columns: .9fr 1.1fr; gap: clamp(45px,8vw,110px); align-items: center; margin: 0 auto; padding: 115px 40px; }.landing-contact-copy h2 { margin: 14px 0 22px; font-size: clamp(38px,5vw,67px); line-height: 1; letter-spacing: -3px; }.landing-contact-copy p { color: #8fa299; font-size: 14px; line-height: 1.8; }.landing-contact-copy > a { display: inline-flex; margin-top: 15px; color: var(--lime); font-size: 12px; font-weight: 800; }.landing-contact-form { position: relative; display: grid; gap: 15px; padding: 32px; border: 1px solid rgba(255,255,255,.13); border-radius: 16px; background: #0c1915; box-shadow: 0 24px 55px rgba(0,0,0,.18); }.contact-form-head { display: flex; align-items: center; gap: 13px; margin-bottom: 6px; }.contact-form-head > span { width: 43px; height: 43px; display: grid; place-items: center; border-radius: 50%; color: #13201a; background: var(--lime); }.contact-form-head > span svg { width: 21px; }.contact-form-head > div { display: grid; gap: 3px; }.contact-form-head strong { font-size: 16px; }.contact-form-head small { color: #81948a; font-size: 9px; }.landing-contact-form label { display: grid; gap: 7px; color: #b9c8c1; font-size: 10px; font-weight: 750; }.landing-contact-form input,.landing-contact-form textarea { width: 100%; border: 1px solid #31473e; border-radius: 9px; padding: 12px 13px; color: white; background: #10221b; font: inherit; outline: none; }.landing-contact-form input { min-height: 48px; }.landing-contact-form textarea { resize: vertical; }.landing-contact-form input:focus,.landing-contact-form textarea:focus { border-color: #83aa35; box-shadow: 0 0 0 3px rgba(183,243,75,.1); }.contact-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }.landing-contact-form .landing-main-cta { border: 0; cursor: pointer; }.contact-whatsapp-link { display: flex; align-items: center; justify-content: center; gap: 8px; color: #95d06d; font-size: 10px; font-weight: 800; }.contact-whatsapp-link svg { width: 18px; }.contact-feedback { padding: 11px 13px; border-radius: 8px; font-size: 10px; line-height: 1.5; }.contact-feedback.success { color: #a7eac2; background: rgba(39,153,88,.16); }.contact-feedback.error { color: #ffbab5; background: rgba(190,66,58,.16); }.contact-honeypot { position: absolute !important; left: -10000px; width: 1px; height: 1px; overflow: hidden; }.whatsapp-widget { position: fixed; z-index: 70; right: clamp(18px,2.5vw,40px); bottom: 24px; }.whatsapp-float { position: relative; width: 62px; height: 62px; display: grid; place-items: center; border: 0; border-radius: 50%; color: white; background: #25d366; box-shadow: 0 12px 32px rgba(0,0,0,.3); cursor: pointer; transition: transform .2s,box-shadow .2s; }.whatsapp-float:hover { transform: translateY(-3px) scale(1.03); box-shadow: 0 16px 38px rgba(0,0,0,.38); }.whatsapp-float svg { width: 31px; height: 31px; stroke-width: 1.6; }.whatsapp-float > span { position: absolute; top: -2px; right: -1px; width: 19px; height: 19px; display: grid; place-items: center; border: 2px solid white; border-radius: 50%; color: white; background: #e54c45; font-size: 9px; font-weight: 900; }.whatsapp-popover { position: absolute; right: 0; bottom: 76px; width: min(330px,calc(100vw - 36px)); padding: 25px; border-radius: 15px; color: #183028; background: white; box-shadow: 0 20px 55px rgba(0,0,0,.28); }.whatsapp-popover[hidden] { display: none; }.whatsapp-popover::after { content: ""; position: absolute; right: 22px; bottom: -8px; width: 16px; height: 16px; transform: rotate(45deg); background: white; }.whatsapp-avatar { width: 42px; height: 42px; display: grid; place-items: center; margin-bottom: 13px; border-radius: 50%; color: white; background: #25d366; }.whatsapp-avatar svg { width: 23px; }.whatsapp-popover > strong { display: block; font-size: 17px; }.whatsapp-popover > p { margin: 8px 0 17px; color: #697b73; font-size: 11px; line-height: 1.6; }.whatsapp-popover > a { min-height: 42px; display: flex; align-items: center; justify-content: center; border-radius: 8px; color: #13301f; background: #dff8e8; font-size: 11px; font-weight: 850; }.whatsapp-popover > a.whatsapp-direct { margin-top: 7px; color: white; background: #25b85a; }.whatsapp-close { position: absolute; top: 10px; right: 12px; border: 0; color: #75847d; background: transparent; font-size: 22px; cursor: pointer; }.contact-admin-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }.contact-admin-card { display: flex; flex-direction: column; gap: 14px; }.contact-admin-card.read { opacity: .72; }.contact-admin-head { display: flex; justify-content: space-between; gap: 20px; }.contact-admin-head h3 { margin: 9px 0 0; }.contact-admin-head time { color: var(--muted); font-size: 10px; }.contact-admin-card > p { margin: 0; color: #53655c; line-height: 1.65; white-space: pre-wrap; }.contact-admin-meta { display: flex; flex-wrap: wrap; gap: 8px; }.contact-admin-meta a { padding: 6px 9px; border-radius: 6px; color: #547921; background: #eff6e7; font-size: 10px; font-weight: 750; }.contact-admin-card form { margin-top: auto; }.contact-admin-empty { color: var(--muted); }
.landing-final-cta { min-height: 530px; display: grid; place-items: center; align-content: center; padding: 80px 25px; text-align: center; background: radial-gradient(circle at 50% 40%,rgba(183,243,75,.1),transparent 36%),#091612; }.landing-final-cta p { color: #8ea097; }.landing-final-cta .landing-main-cta { margin-top: 22px; }.landing-footer { min-height: 110px; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 0 clamp(24px,7vw,118px); border-top: 1px solid rgba(255,255,255,.09); color: #71857b; font-size: 9px; }.landing-footer > a:last-child { color: #b9c7c0; }.landing-signature { display: grid; gap: 4px; text-align: center; }.landing-signature strong { color: #a9bab1; font-size: 9px; letter-spacing: .2px; }.landing-signature small { color: #657a70; font-size: 8px; }
.auth-simple-page { min-height: 100vh; display: grid; place-items: center; align-content: center; gap: 25px; padding: 35px 20px; background: radial-gradient(circle at 50% 15%,rgba(183,243,75,.09),transparent 30%),#eef3ef; }.auth-simple-page > .brand { color: var(--ink); }.auth-simple-card { width: min(100%,480px); padding: 38px; border: 1px solid var(--line); border-radius: 14px; background: white; box-shadow: var(--shadow); }.auth-simple-card h1 { margin: 14px 0 10px; font-size: 34px; letter-spacing: -1.5px; }.auth-simple-card > p { margin-bottom: 25px; color: var(--muted); font-size: 12px; line-height: 1.65; }.auth-round-icon { width: 52px; height: 52px; display: grid; place-items: center; margin-bottom: 22px; border-radius: 50%; color: #678d22; background: var(--lime-soft); }.auth-round-icon svg { width: 24px; height: 24px; }.auth-back-link { display: block; margin-top: 22px; color: var(--muted); font-size: 10px; font-weight: 750; text-align: center; }.auth-notice { margin-bottom: 18px; padding: 12px; border-radius: 8px; font-size: 10px; line-height: 1.5; }.auth-notice.success { color: #226744; background: #e3f4e9; }.login-options { display: flex; align-items: center; justify-content: space-between; gap: 15px; }.login-options > a { color: #57771f; font-size: 10px; font-weight: 800; }
.auth-simple-card { position: relative; overflow: hidden; }.auth-simple-card::before { content: ""; position: absolute; inset: 0 0 auto; height: 4px; background: linear-gradient(90deg,var(--lime),#6fa925); }.auth-security-row { display: flex; flex-wrap: wrap; gap: 7px; margin: -10px 0 22px; }.auth-security-row span { display: inline-flex; align-items: center; gap: 5px; padding: 6px 8px; border-radius: 999px; color: #587721; background: #eff7e2; font-size: 8px; font-weight: 800; }.auth-security-row svg { width: 12px; height: 12px; }
@media (max-width: 900px) { .landing-nav { grid-template-columns: 1fr auto; }.landing-nav nav { display: none; }.landing-hero-content { width: min(100%,680px); }.landing-hero-image { background-position: 62% center; }.landing-access-card { display: none; }.landing-intro { grid-template-columns: 1fr; gap: 35px; }.landing-feature-grid { grid-template-columns: 1fr 1fr; }.landing-feature-grid .feature-large { grid-column: 1/-1; }.module-showcase { grid-template-columns: 1fr; }.landing-flow ol { grid-template-columns: 1fr 1fr; }.landing-trust strong:nth-last-child(-n+2) { display: none; }.landing-contact { grid-template-columns: 1fr; }.contact-admin-list { grid-template-columns: 1fr; } }
@media (max-width: 600px) { .landing-nav { height: 72px; padding-inline: 18px; }.landing-login { font-size: 0; }.landing-login::before { content: "Ingresar"; font-size: 10px; }.landing-hero { min-height: 780px; align-items: end; padding: 110px 20px 65px; }.landing-hero-image { background-position: 68% center; }.landing-hero-image::after { background: linear-gradient(180deg,rgba(4,12,10,.12) 5%,rgba(4,12,10,.7) 50%,rgba(4,12,10,.98) 86%); }.landing-hero-content { width: 100%; }.landing-hero h1 { font-size: 52px; }.landing-hero-actions { align-items: stretch; flex-direction: column; gap: 18px; }.landing-hero-actions > a { text-align: center; }.landing-live-sequence { overflow: hidden; margin-top: 36px; }.landing-live-sequence span { font-size: 7px; }.landing-trust { justify-content: center; }.landing-trust strong { display: none; }.landing-section,.landing-modules,.landing-flow,.landing-contact { padding: 80px 20px; }.landing-intro h2,.landing-section-title h2,.landing-final-cta h2,.landing-contact-copy h2 { font-size: 40px; letter-spacing: -2px; }.landing-feature-grid { grid-template-columns: 1fr; margin-top: -25px; padding: 0 20px; }.landing-feature-grid .feature-large { grid-column: auto; }.module-showcase article { grid-template-columns: 65px 1fr; gap: 18px; padding: 22px 18px; }.module-showcase article > span { width: 60px; height: 60px; }.landing-flow ol { grid-template-columns: 1fr; }.landing-flow li { min-height: 355px; }.flow-visual { height: 235px; }.landing-footer { flex-direction: column; justify-content: center; padding-block: 28px; }.auth-simple-card { padding: 28px 22px; }.login-options { align-items: flex-start; flex-direction: column; }.landing-contact-form { padding: 25px 18px; }.contact-form-row { grid-template-columns: 1fr; }.whatsapp-widget { right: 16px; bottom: 16px; }.whatsapp-float { width: 56px; height: 56px; } }
@media (prefers-reduced-motion: reduce) { .landing-hero-image,.landing-live-sequence span,.access-signal i { animation: none; } }

/* Refinamiento de experiencia pública y contacto */
.contact-feedback.warning { color: #ffe2a3; background: rgba(196,138,34,.16); }
.landing-nav { position: fixed; background: rgba(5,15,12,.72); backdrop-filter: blur(16px); }
.contact-channel-row { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; padding-top: 3px; }.contact-channel-row > a { min-height: 58px; display: flex; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid #294238; border-radius: 9px; color: #bce9ca; background: #10251d; }.contact-channel-row > a:hover { border-color: #4b8061; background: #153026; }.contact-channel-row svg { width: 20px; color: #55dd86; }.contact-channel-row span { display: grid; gap: 3px; }.contact-channel-row strong { color: #eff8f2; font-size: 10px; }.contact-channel-row small { color: #829a8f; font-size: 8px; }
.whatsapp-float { width: auto; min-width: 148px; grid-template-columns: 32px auto; gap: 9px; padding: 0 21px 0 16px; border-radius: 999px; }.whatsapp-float svg { width: 27px; height: 27px; }.whatsapp-float > b { display: block; font-size: 12px; }.whatsapp-popover { bottom: 78px; }.whatsapp-popover > a { justify-content: flex-start; gap: 10px; padding: 8px 14px; }.whatsapp-popover > a svg { width: 19px; flex: 0 0 auto; }.whatsapp-popover > a > span { display: grid; gap: 2px; }.whatsapp-popover > a > span strong { font-size: 10px; }.whatsapp-popover > a > span small { font-size: 8px; font-weight: 650; opacity: .78; }.whatsapp-popover > a.whatsapp-app { margin-top: 7px; color: #225d38; background: #eef7f1; }.whatsapp-popover > a.whatsapp-app:hover { background: #e2f2e8; }

@media (max-width: 600px) {
  .contact-channel-row { grid-template-columns: 1fr; }
  .whatsapp-float { min-width: 56px; width: 56px; grid-template-columns: 1fr; padding: 0; border-radius: 50%; }
  .whatsapp-float > b { display: none; }
}
@media (max-width: 660px) { .admin-summary-grid { grid-template-columns: repeat(2,minmax(0,1fr)); } }

@media (max-width: 900px) {
  .landing-feature-grid .feature-security { grid-column: 1/-1; }
  .feature-security .feature-visual img { width: min(100%,620px); }
}
@media (max-width: 600px) {
  .landing-feature-grid article { min-height: 420px; padding: 25px 22px 16px; }
  .landing-feature-grid .feature-security { grid-column: auto; }
  .feature-visual { min-height: 175px; margin: 18px -10px 0; }.feature-visual img { height: 175px; }
}
@media (prefers-reduced-motion: reduce) {
  .feature-signal i,.feature-access .feature-visual::after,.feature-access .feature-visual img,.feature-scan-status { animation: none; }
  .feature-scan-status { opacity: .8; }
  .landing-feature-grid article,.feature-visual img { transition: none; }
}

/* Ilustraciones minimalistas con movimiento funcional */
.feature-scan-status { position: absolute; z-index: 3; left: 28px; bottom: 1px; display: inline-flex; align-items: center; gap: 6px; color: #a7c89b; font-size: 7px; font-weight: 850; letter-spacing: .8px; text-transform: uppercase; opacity: 0; animation: feature-read-status 3.6s ease-in-out infinite; }
.feature-scan-status::before { content: ""; width: 5px; height: 5px; border-radius: 50%; background: var(--lime); box-shadow: 0 0 9px rgba(183,243,75,.85); }
.feature-payment .feature-visual img { animation: payment-device-breathe 4.2s ease-in-out infinite; }
.payment-wave { position: absolute; z-index: 3; top: 48%; left: 32%; width: 58px; height: 58px; pointer-events: none; }
.payment-wave i { position: absolute; inset: 50% auto auto 50%; width: 12px; height: 12px; border: 2px solid var(--lime); border-radius: 50%; transform: translate(-50%,-50%) scale(.3); opacity: 0; animation: payment-contactless 2.4s ease-out infinite; }
.payment-wave i:nth-child(2) { animation-delay: .55s; }.payment-wave i:nth-child(3) { animation-delay: 1.1s; }
.payment-confirmation { position: absolute; z-index: 3; top: 42%; left: 57%; width: 29px; height: 29px; display: grid; place-items: center; border: 1px solid rgba(183,243,75,.45); border-radius: 50%; color: #142010; background: var(--lime); box-shadow: 0 0 20px rgba(183,243,75,.3); animation: payment-approved 4.2s ease-in-out infinite; }
.payment-confirmation svg { width: 15px; height: 15px; stroke-width: 2.6; }
.feature-security .feature-visual img { animation: security-shield-breathe 3.8s ease-in-out infinite; }
.security-ring { position: absolute; z-index: 2; top: 49%; left: 50%; width: 104px; height: 104px; border: 1px solid rgba(183,243,75,.38); border-radius: 50%; transform: translate(-50%,-50%); animation: security-ring 2.8s ease-out infinite; }
.security-node { position: absolute; z-index: 3; top: 49%; width: 7px; height: 7px; border-radius: 50%; background: var(--lime); box-shadow: 0 0 12px var(--lime); animation: security-node 2.8s ease-in-out infinite; }
.security-node-left { left: 25%; }.security-node-right { right: 25%; animation-delay: 1.4s; }
@keyframes payment-device-breathe { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-5px); } }
@keyframes payment-contactless { 0% { transform: translate(-50%,-50%) scale(.25); opacity: .9; } 75%,100% { transform: translate(-50%,-50%) scale(4); opacity: 0; } }
@keyframes payment-approved { 0%,35%,100% { transform: scale(.75); opacity: .25; } 48%,78% { transform: scale(1); opacity: 1; } }
@keyframes feature-read-status { 0%,66% { transform: translateY(3px); opacity: 0; } 74%,92% { transform: translateY(0); opacity: .9; } 100% { transform: translateY(0); opacity: 0; } }
@keyframes security-shield-breathe { 0%,100% { transform: scale(1); filter: drop-shadow(0 14px 24px rgba(0,0,0,.25)); } 50% { transform: scale(1.018); filter: drop-shadow(0 0 18px rgba(183,243,75,.13)); } }
@keyframes security-ring { 0% { transform: translate(-50%,-50%) scale(.55); opacity: .75; } 78%,100% { transform: translate(-50%,-50%) scale(1.65); opacity: 0; } }
@keyframes security-node { 0%,100% { opacity: .25; transform: scale(.7); } 45%,60% { opacity: 1; transform: scale(1.25); } }

/* Cuatro módulos conectados */
.landing-modules { position: relative; overflow: hidden; background: linear-gradient(145deg,#f2f6f2 0%,#eaf1ec 100%); }
.landing-modules::before { content: ""; position: absolute; top: -190px; right: -100px; width: 520px; height: 520px; border-radius: 50%; background: rgba(142,190,64,.08); filter: blur(20px); pointer-events: none; }
.landing-modules-heading { position: relative; display: grid; grid-template-columns: 1.2fr .8fr; gap: 75px; align-items: end; margin-bottom: 48px; }
.landing-modules-heading .landing-section-title { margin: 0; }.landing-modules-heading > p { margin: 0 0 7px; color: #65766e; font-size: 14px; line-height: 1.8; }
.module-showcase { position: relative; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 12px; overflow: visible; border: 0; border-radius: 0; background: transparent; }
.module-showcase::before { content: ""; position: absolute; z-index: 0; top: 52px; right: 9%; left: 9%; height: 1px; background: linear-gradient(90deg,transparent,#9fbd71 12%,#9fbd71 88%,transparent); }
.module-showcase article { min-height: 320px; position: relative; z-index: 1; display: flex; flex-direction: column; align-items: stretch; gap: 0; padding: 26px; border: 1px solid #d5dfd8; border-radius: 16px; background: rgba(255,255,255,.9); box-shadow: 0 12px 32px rgba(29,53,42,.05); transition: transform .28s,border-color .28s,box-shadow .28s; }
.module-showcase article:hover { transform: translateY(-5px); border-color: #a7c373; box-shadow: 0 20px 45px rgba(29,53,42,.1); }
.module-card-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 40px; }.module-card-head small { color: #9aaca3; font-family: ui-monospace,Consolas,monospace; font-size: 10px; }
.module-icon { width: 54px; height: 54px; display: grid; place-items: center; border: 1px solid #d8e5cf; border-radius: 14px; color: #6c9823; background: #eff7e8; box-shadow: 0 0 0 8px rgba(255,255,255,.9); }.module-icon svg { width: 25px; height: 25px; }
.module-code { color: #739329; font-size: 8px; font-weight: 900; letter-spacing: 1.2px; }.module-showcase h3 { margin: 9px 0 12px; font-size: 20px; letter-spacing: -.45px; }.module-showcase p { color: #687971; font-size: 11px; line-height: 1.7; }
.module-showcase article > .module-status { width: max-content; height: auto; display: inline-flex; align-items: center; gap: 7px; margin-top: auto; padding: 7px 10px; border: 0; border-radius: 999px; color: #587126; background: #eef6e5; font-family: inherit; font-size: 8px; font-weight: 850; line-height: 1; letter-spacing: .35px; text-transform: uppercase; white-space: nowrap; }.module-status i { width: 6px; height: 6px; flex: 0 0 6px; border-radius: 50%; background: #80ad2c; box-shadow: 0 0 0 4px rgba(128,173,44,.12); animation: feature-pulse 2.2s infinite; }

/* SweetAlert con identidad AdisParking */
[data-swal],[data-toast] { display: none !important; }
.swal2-container { font-family: Inter,"Segoe UI",Arial,sans-serif; }
.swal2-popup.adis-swal { width: min(430px,calc(100vw - 32px)); padding: 30px; border: 1px solid #dfe7e2; border-radius: 16px; color: var(--ink); background: #fff; box-shadow: 0 28px 80px rgba(6,23,17,.24); }
.adis-swal .swal2-title { padding: 0; color: var(--ink); font-size: 25px; letter-spacing: -.7px; }.adis-swal .swal2-html-container { margin: 12px 0 0; color: #687970; font-size: 13px; line-height: 1.65; }.adis-swal .swal2-actions { gap: 9px; margin-top: 24px; }.adis-swal .swal2-input { height: 48px; margin: 20px 0 0; border: 1px solid #cbd6d0; border-radius: 8px; color: var(--ink); box-shadow: none; font: inherit; }.adis-swal .swal2-input:focus { border-color: #7fa82e; box-shadow: 0 0 0 3px rgba(183,243,75,.22); }
.adis-swal-confirm,.adis-swal-cancel { min-height: 43px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid transparent; border-radius: 8px; padding: 0 18px; font-size: 12px; font-weight: 800; cursor: pointer; }.adis-swal-confirm { color: #152311; background: var(--lime); }.adis-swal-confirm:hover { background: #a7e13d; }.adis-swal-cancel { color: var(--ink); background: white; border-color: #c6d1cb; }
.swal2-popup.adis-toast { padding: 14px 16px; border: 1px solid #dbe5df; border-radius: 11px; color: var(--ink); background: white; box-shadow: 0 16px 42px rgba(8,28,21,.18); }.adis-toast .swal2-title { margin: 0; color: var(--ink); font-size: 13px; }.adis-toast .swal2-html-container { margin: 5px 0 0; color: #6c7d74; font-size: 11px; }.adis-toast .swal2-icon { width: 28px; height: 28px; margin: 0 10px 0 0; }.adis-toast .swal2-timer-progress-bar { background: #8ab832; }

@media (max-width: 1000px) { .module-showcase { grid-template-columns: repeat(2,minmax(0,1fr)); }.module-showcase::before { display: none; } }
@media (max-width: 900px) { .landing-modules-heading { grid-template-columns: 1fr; gap: 24px; } }
@media (max-width: 600px) { .module-showcase { grid-template-columns: 1fr; }.module-showcase article { min-height: 275px; padding: 23px; }.module-card-head { margin-bottom: 28px; } }
@media (prefers-reduced-motion: reduce) { .feature-payment .feature-visual img,.payment-wave i,.payment-confirmation,.feature-security .feature-visual img,.security-ring,.security-node,.module-status i { animation: none; } }

/* Centro operacional avanzado */
.notification-button { position: relative; }
.notification-button > span { position: absolute; top: 8px; right: 8px; width: 7px; height: 7px; border: 2px solid #fff; border-radius: 50%; background: #e16a45; box-sizing: content-box; }
.dashboard-refresh { background: transparent; }
.dashboard-refresh.is-loading svg { animation: dashboard-spin .7s linear infinite; }
@keyframes dashboard-spin { to { transform: rotate(360deg); } }
.operations-intelligence { display: grid; grid-template-columns: minmax(0,1.25fr) minmax(0,1.15fr) minmax(290px,.9fr); gap: 14px; margin: 14px 0; }
.operations-intelligence .panel { min-width: 0; padding: 22px; }
.operations-intelligence .panel-heading h2 { margin: 4px 0 0; font-size: 18px; letter-spacing: -.45px; }
.operations-intelligence .panel-heading > a { display: inline-flex; align-items: center; gap: 5px; color: #63851f; font-size: 9px; font-weight: 800; }
.operations-intelligence .panel-heading > a svg { width: 13px; }
.trend-chart { height: 210px; display: grid; grid-template-columns: repeat(7,1fr); gap: 9px; align-items: end; margin-top: 20px; padding: 17px 10px 0; border-bottom: 1px solid #dce4df; background: repeating-linear-gradient(to top,#edf1ee 0,#edf1ee 1px,transparent 1px,transparent 52px); }
.trend-day { height: 100%; display: grid; grid-template-rows: 1fr auto auto; gap: 5px; align-items: end; text-align: center; }
.trend-bars { height: 150px; display: flex; align-items: end; justify-content: center; gap: 4px; }
.trend-bars > span { width: min(13px,40%); min-height: 6px; border-radius: 4px 4px 1px 1px; transition: height .35s ease,filter .2s; }
.trend-bars:hover > span { filter: brightness(.9); }
.trend-bars .revenue { background: #7fab2d; }.trend-bars .traffic { background: #203a31; }
.trend-day strong { color: #53655d; font-size: 9px; text-transform: capitalize; }.trend-day small { color: #849189; font-size: 8px; }
.chart-legend { display: flex; gap: 16px; margin-top: 15px; color: var(--muted); font-size: 9px; font-weight: 700; }.chart-legend span { display: flex; align-items: center; gap: 6px; }.chart-legend i { width: 9px; height: 9px; border-radius: 2px; }.chart-legend i.revenue { background: #7fab2d; }.chart-legend i.traffic { background: #203a31; }
.alert-total,.period-chip { min-width: 29px; height: 29px; display: grid; place-items: center; border-radius: 999px; color: #52731e; background: #edf7dd; font-size: 9px; font-weight: 900; }
.alert-list { display: grid; gap: 7px; margin-top: 18px; }
.operational-alert { display: grid; grid-template-columns: 34px minmax(0,1fr) auto; align-items: center; gap: 10px; padding: 11px; border: 1px solid #e1e6e3; border-radius: 9px; background: #fbfcfa; transition: border-color .2s,transform .2s,box-shadow .2s; }
.operational-alert:hover { transform: translateY(-1px); border-color: #bdc9c2; box-shadow: 0 8px 18px rgba(18,34,29,.06); }
.alert-indicator { width: 32px; height: 32px; display: grid; place-items: center; border-radius: 8px; color: #557a20; background: #edf6df; }.alert-indicator svg { width: 16px; }
.operational-alert > span:nth-child(2) { min-width: 0; display: grid; gap: 3px; }.operational-alert strong { font-size: 10px; }.operational-alert small { overflow: hidden; color: var(--muted); font-size: 8px; line-height: 1.45; }
.operational-alert > b { display: inline-flex; align-items: center; gap: 4px; color: #61726a; font-size: 8px; white-space: nowrap; }.operational-alert > b svg { width: 11px; }
.operational-alert.critical { border-color: #f1cbc6; background: #fff9f8; }.operational-alert.critical .alert-indicator { color: #a33f37; background: #fae5e2; }
.operational-alert.warning { border-color: #eadbb9; background: #fffcf5; }.operational-alert.warning .alert-indicator { color: #966a17; background: #fff0ce; }
.operational-alert.info .alert-indicator { color: #326d84; background: #e4f2f7; }.operational-alert.success .alert-indicator { color: #257249; background: #e2f4e9; }
.performance-metrics { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; overflow: hidden; margin-top: 18px; border: 1px solid var(--line); border-radius: 10px; background: var(--line); }.performance-metrics > div { min-height: 78px; display: grid; align-content: center; gap: 5px; padding: 13px; background: #fbfcfa; }.performance-metrics span { color: var(--muted); font-size: 8px; }.performance-metrics strong { font-size: 17px; letter-spacing: -.4px; }
.payment-breakdown { margin-top: 19px; }.subsection-title { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }.subsection-title strong { font-size: 10px; }.subsection-title small { color: var(--muted); font-size: 8px; }
.payment-method-row { display: grid; gap: 5px; margin-top: 9px; }.payment-method-row > div:first-child { display: flex; justify-content: space-between; gap: 10px; font-size: 9px; }.payment-method-row > div:first-child span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.payment-method-row > small { color: var(--muted); font-size: 7px; }.payment-track { height: 5px; overflow: hidden; border-radius: 999px; background: #e7ece9; }.payment-track span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg,#88b532,var(--lime)); }
.device-row-offline { background: #fff9f7; }.device-row-offline td:first-child { box-shadow: inset 3px 0 0 #d76a55; }
.device-health-table table { min-width: 640px; }.device-health-table td:nth-child(4) strong { font-size: 9px; }.device-last-seen { display: block; margin-top: 6px; color: var(--muted); font-size: 8px; font-weight: 700; }

@media (max-width: 1180px) {
  .operations-intelligence { grid-template-columns: 1fr 1fr; }
  .performance-card { grid-column: 1/-1; }
}
@media (max-width: 900px) {
  .operations-intelligence { grid-template-columns: 1fr; }
  .performance-card { grid-column: auto; }
}
@media (max-width: 660px) {
  .dashboard-refresh { width: 39px; min-width: 39px; padding: 0; font-size: 0; }
  .operations-intelligence .panel { padding: 18px; }
  .trend-chart { gap: 4px; padding-inline: 2px; }.trend-bars { gap: 2px; }
  .operational-alert { grid-template-columns: 32px minmax(0,1fr); }.operational-alert > b { grid-column: 2; }
  .subsection-title { align-items: flex-start; flex-direction: column; gap: 3px; }
}

/* Multiempresa, selector de sede e interlock del loop de entrada */
.sr-only { position: absolute !important; width: 1px !important; height: 1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; }
.topbar-tenant { min-width: 0; display: flex; align-items: center; gap: 10px; }
.topbar-tenant > div { min-width: 0; display: grid; gap: 2px; }
.topbar-tenant > div small { overflow: hidden; color: var(--muted); font-size: 8px; font-weight: 750; text-overflow: ellipsis; white-space: nowrap; }
.topbar-tenant > div strong { overflow: hidden; max-width: 220px; color: var(--ink); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.tenant-switcher select { max-width: 240px; height: 34px; padding: 0 30px 0 10px; border: 1px solid var(--line); border-radius: 8px; color: #496057; background: #f8faf8; font-size: 9px; font-weight: 750; }
.tenant-code { padding: 6px 9px; border-radius: 999px; color: #587523; background: #edf6e1; font: 750 8px ui-monospace,Consolas,monospace; }
.tenant-admin { scroll-margin-top: 92px; }
.tenant-current-chip { display: inline-flex; align-items: center; gap: 8px; padding: 8px 11px; border-radius: 999px; color: #4f6f1d; background: #edf6df; font-size: 9px; font-weight: 850; }.tenant-current-chip i { width: 7px; height: 7px; border-radius: 50%; background: #82b22a; box-shadow: 0 0 0 4px rgba(130,178,42,.14); }
.tenant-context-card { display: grid; grid-template-columns: repeat(3,1fr); gap: 1px; overflow: hidden; margin-bottom: 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--line); }
.tenant-context-card > div { min-height: 105px; display: grid; align-content: center; gap: 5px; padding: 20px; background: #f9fbf9; }.tenant-context-card small,.tenant-context-card span { color: var(--muted); font-size: 9px; }.tenant-context-card strong { font-size: 16px; letter-spacing: -.3px; }
.tenant-create-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 14px; }.tenant-create-grid .admin-create-disclosure { margin: 0; }.tenant-create-grid .admin-create-form { grid-template-columns: 1fr 1fr; }.tenant-form .button { min-height: 44px; }.tenant-active-row td:first-child { box-shadow: inset 3px 0 0 #86b431; }.tenant-active-row { background: #f8fcec; }
.tenant-edit-button,.table-edit-button { display: inline-flex; align-items: center; justify-content: center; gap: 6px; border: 1px solid #b9c7bd; border-radius: 7px; color: #40534a; background: #fff; font-size: 9px; font-weight: 800; cursor: pointer; transition: .18s ease; }
.tenant-edit-button { width: max-content; min-height: 31px; margin-top: 6px; padding: 0 10px; }.tenant-edit-button svg,.table-edit-button svg { width: 13px; height: 13px; color: #668d22; }
.tenant-edit-button:hover,.table-edit-button:hover { border-color: #86ad3a; color: #24351d; background: #f0f8e4; transform: translateY(-1px); }
.table-edit-button { min-height: 32px; padding: 0 11px; }.tenant-sites-table table { min-width: 900px; }.tenant-sites-table th:last-child,.tenant-sites-table td:last-child { width: 105px; text-align: right; }
.admin-edit-dialog { width: min(620px,calc(100vw - 30px)); max-height: calc(100vh - 40px); overflow: auto; padding: 0; border: 0; border-radius: 16px; color: var(--ink); background: #fff; box-shadow: 0 30px 90px rgba(8,22,16,.28); }
.admin-edit-dialog::backdrop { background: rgba(10,22,17,.62); backdrop-filter: blur(5px); }
.admin-edit-dialog > form > header { min-height: 84px; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 18px 22px; border-bottom: 1px solid var(--line); background: #f8faf7; }
.admin-edit-dialog > form > header > div { display: flex; align-items: center; gap: 13px; }.admin-edit-dialog > form > header > div > span { width: 43px; height: 43px; display: grid; place-items: center; border-radius: 11px; color: #557d19; background: var(--lime-soft); }.admin-edit-dialog > form > header svg { width: 19px; height: 19px; }.admin-edit-dialog > form > header small { display: block; margin-bottom: 3px; color: #77932f; font-size: 8px; font-weight: 900; letter-spacing: .75px; text-transform: uppercase; }.admin-edit-dialog > form > header h3 { margin: 0; font-size: 21px; }.admin-edit-dialog > form > header > button { width: 36px; height: 36px; border: 0; border-radius: 9px; color: #68766f; background: #edf1ee; font-size: 22px; cursor: pointer; }
.admin-edit-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 15px; padding: 22px; }.admin-edit-grid label { display: grid; gap: 7px; color: #66736d; font-size: 10px; font-weight: 750; }.admin-edit-grid label > span { color: #53625b; }.admin-edit-grid input,.admin-edit-grid select { width: 100%; min-height: 44px; padding: 0 12px; border: 1px solid #c7d0cb; border-radius: 8px; color: var(--ink); background: #fff; font-size: 12px; outline: 0; }.admin-edit-grid input:focus,.admin-edit-grid select:focus { border-color: #83ad31; box-shadow: 0 0 0 3px rgba(174,242,58,.2); }.admin-edit-grid .wide { grid-column: 1/-1; }.admin-edit-grid .admin-switch { grid-column: 1/-1; display: flex; align-items: center; gap: 9px; padding: 12px; border-radius: 9px; background: #f3f7ee; }.admin-edit-grid .admin-switch input[type="checkbox"] { width: 18px; min-height: 18px; padding: 0; accent-color: #77a323; }.admin-edit-dialog > form > footer { display: flex; justify-content: flex-end; gap: 9px; padding: 16px 22px; border-top: 1px solid var(--line); background: #fbfcfa; }.admin-edit-dialog > form > footer .button { min-height: 42px; }
@media (max-width: 620px) { .admin-edit-grid { grid-template-columns: 1fr; }.admin-edit-grid .wide,.admin-edit-grid .admin-switch { grid-column: auto; }.admin-edit-dialog > form > footer { align-items: stretch; flex-direction: column-reverse; }.admin-edit-dialog > form > footer .button { width: 100%; } }

.loop-interlock { position: relative; display: grid; grid-template-columns: 74px minmax(0,1fr) auto auto; align-items: center; gap: 20px; overflow: hidden; margin: 0 0 14px; padding: 17px 19px; border: 1px solid #d5dfd9; border-radius: 13px; background: #fff; box-shadow: 0 8px 24px rgba(18,42,32,.04); }
.loop-interlock::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 4px; background: #a8b5ae; }.loop-interlock.is-detected::before { background: #84b52d; }.loop-interlock.is-stale::before { background: #df9a35; }
.loop-visual { position: relative; width: 70px; height: 60px; display: grid; place-items: center; }.loop-visual svg { position: relative; z-index: 2; width: 31px; height: 31px; color: #70827a; }.loop-visual span { position: absolute; inset: 50% auto auto 50%; width: 30px; height: 30px; border: 1px solid #9eaaa4; border-radius: 50%; transform: translate(-50%,-50%); opacity: .45; }.loop-visual span:nth-child(2) { width: 53px; height: 53px; }
.is-detected .loop-visual svg { color: #658d22; }.is-detected .loop-visual span { border-color: #89b73b; animation: loop-wave 1.8s ease-out infinite; }.is-detected .loop-visual span:nth-child(2) { animation-delay: .55s; }
@keyframes loop-wave { 0% { transform: translate(-50%,-50%) scale(.65); opacity: .9; } 80%,100% { transform: translate(-50%,-50%) scale(1.25); opacity: 0; } }
.loop-copy { min-width: 0; display: grid; gap: 4px; }.loop-copy .kicker { color: #78922f; }.loop-copy strong { font-size: 15px; letter-spacing: -.25px; }.loop-copy p { margin: 0; color: var(--muted); font-size: 9px; line-height: 1.55; }
.loop-meta { display: flex; align-items: center; gap: 16px; padding-inline: 14px; border-inline: 1px solid var(--line); }.loop-meta > span { display: inline-flex; align-items: center; gap: 7px; color: #6c7771; font-size: 8px; font-weight: 900; letter-spacing: .6px; }.loop-meta > span i { width: 7px; height: 7px; border-radius: 50%; background: #aab4af; }.is-detected .loop-meta > span { color: #638920; }.is-detected .loop-meta > span i { background: #83b72b; box-shadow: 0 0 0 5px rgba(131,183,43,.14); }.loop-meta small { color: var(--muted); font-size: 8px; line-height: 1.45; }.loop-meta b { color: var(--ink); font-family: ui-monospace,Consolas,monospace; }
.loop-simulator .button { min-width: 170px; white-space: nowrap; }.station-step { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; padding-bottom: 15px; border-bottom: 1px solid var(--line); }.station-step > span { width: 29px; height: 29px; display: grid; place-items: center; border-radius: 8px; color: #5d811f; background: #edf7df; font-size: 9px; font-weight: 900; }.station-step > div { display: grid; gap: 2px; }.station-step strong { font-size: 11px; }.station-step small { color: var(--muted); font-size: 8px; }.interlock-note { display: flex; align-items: center; gap: 6px; color: #77867f; font-size: 8px; line-height: 1.5; }.interlock-note svg { width: 14px; height: 14px; flex: 0 0 auto; color: #78952e; }.simulator-controls .button:disabled { cursor: not-allowed; color: #7d8a84; background: #e6ebe8; box-shadow: none; }.station-ready.ready-active { border-color: #bbd590; background: linear-gradient(145deg,#fff,#f4fae9); }.station-ready.ready-active svg { color: #7da72e; }
.interlock-note[hidden] { display: none; }

@media (max-width: 1050px) { .loop-interlock { grid-template-columns: 65px minmax(0,1fr) auto; }.loop-meta { border-right: 0; }.loop-simulator { grid-column: 2/-1; }.tenant-create-grid { grid-template-columns: 1fr; } }
@media (max-width: 760px) { .topbar-tenant > div small,.tenant-code { display: none; }.tenant-switcher select { width: 42px; max-width: 42px; padding: 0; color: transparent; }.tenant-context-card { grid-template-columns: 1fr; }.loop-interlock { grid-template-columns: 55px minmax(0,1fr); gap: 13px; }.loop-meta,.loop-simulator { grid-column: 1/-1; }.loop-meta { justify-content: space-between; padding: 12px 0 0; border: 0; border-top: 1px solid var(--line); }.loop-simulator .button { width: 100%; }.tenant-create-grid .admin-create-form { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) { .is-detected .loop-visual span { animation: none; } }

/* Caja atendida de caseta */
.cashier-heading { margin-bottom: 18px; }.cashier-stats { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 12px; margin-bottom: 14px; }.cashier-stats article { min-width: 0; display: grid; grid-template-columns: 43px 1fr; gap: 12px; align-items: center; padding: 17px; border: 1px solid var(--line); border-radius: 12px; background: white; }.cashier-stats article > span { width: 43px; height: 43px; display: grid; place-items: center; border-radius: 10px; color: #648b21; background: #edf6e1; }.cashier-stats svg { width: 20px; }.cashier-stats article > div { min-width: 0; display: grid; gap: 3px; }.cashier-stats small,.cashier-stats p { overflow: hidden; margin: 0; color: var(--muted); font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }.cashier-stats strong { overflow: hidden; font-size: 17px; letter-spacing: -.35px; text-overflow: ellipsis; white-space: nowrap; }
.cashier-workspace { display: grid; grid-template-columns: minmax(0,1fr) 340px; gap: 14px; align-items: start; }.cashier-operation { min-height: 625px; padding: 23px; }.cashier-side { display: grid; gap: 14px; }.cashier-search { display: grid; gap: 9px; padding-bottom: 20px; border-bottom: 1px solid var(--line); }.cashier-search > label { display: flex; justify-content: space-between; align-items: end; gap: 15px; }.cashier-search > label span { font-size: 12px; font-weight: 850; }.cashier-search > label small { color: var(--muted); font-size: 8px; }.cashier-search > div { display: grid; grid-template-columns: 38px 1fr auto; align-items: center; border: 1px solid #bfcac4; border-radius: 10px; background: #fafcfa; }.cashier-search > div > svg { width: 18px; justify-self: center; color: #6c7f75; }.cashier-search input { min-height: 49px; border: 0; background: transparent; box-shadow: none; font-family: ui-monospace,Consolas,monospace; }.cashier-search button { margin-right: 5px; }
.cashier-empty { min-height: 410px; display: grid; place-items: center; align-content: center; gap: 10px; text-align: center; }.cashier-empty > span { width: 68px; height: 68px; display: grid; place-items: center; border-radius: 50%; color: #6d9428; background: #edf6e2; }.cashier-empty svg { width: 31px; }.cashier-empty h2 { margin: 8px 0 0; font-size: 20px; }.cashier-empty p { max-width: 420px; margin: 0; color: var(--muted); font-size: 11px; line-height: 1.65; }
.cashier-ticket-summary { margin: 19px 0 14px; padding: 18px; border: 1px solid var(--line); border-radius: 11px; background: #fbfcfa; }.cashier-ticket-head { display: flex; justify-content: space-between; gap: 15px; align-items: start; }.cashier-ticket-head h2 { margin: 5px 0 0; font: 850 16px ui-monospace,Consolas,monospace; }.cashier-ticket-summary dl { display: grid; grid-template-columns: repeat(4,1fr); gap: 1px; overflow: hidden; margin: 16px 0 0; border: 1px solid var(--line); border-radius: 8px; background: var(--line); }.cashier-ticket-summary dl div { display: grid; gap: 5px; padding: 11px; background: white; }.cashier-ticket-summary dt { color: var(--muted); font-size: 8px; text-transform: uppercase; }.cashier-ticket-summary dd { overflow: hidden; margin: 0; font-size: 11px; font-weight: 800; text-overflow: ellipsis; }.status-pill.warning { color: #95630d; background: #fff0ce; }
.lost-ticket-action { margin-top: 12px; text-align: right; }.lost-ticket-action button { display: inline-flex; align-items: center; gap: 7px; border: 0; color: #9b571f; background: transparent; font-size: 9px; font-weight: 800; cursor: pointer; }.lost-ticket-action svg { width: 14px; }
.cashier-total { display: flex; justify-content: space-between; gap: 20px; align-items: center; margin: 14px 0; padding: 17px 19px; border-radius: 11px; color: white; background: var(--ink); }.cashier-total > div,.cashier-total.free { display: grid; gap: 4px; }.cashier-total span { color: #b4c2bb; font-size: 9px; font-weight: 750; text-transform: uppercase; }.cashier-total small { color: #80968c; font-size: 8px; }.cashier-total strong { color: var(--lime); font-size: 33px; letter-spacing: -1.2px; }.cashier-total.free { color: var(--ink); background: #f1f7e6; }.cashier-total.free strong { color: #628822; }
.cashier-payment-form { display: grid; gap: 12px; }.cashier-payment-methods { display: grid; grid-template-columns: repeat(3,1fr); gap: 8px; }.cashier-payment-methods button { min-height: 69px; display: grid; grid-template-columns: 38px 1fr; align-items: center; gap: 9px; border: 1px solid var(--line); border-radius: 9px; padding: 9px; color: var(--ink); background: white; text-align: left; cursor: pointer; }.cashier-payment-methods button > span { width: 35px; height: 28px; display: grid; place-items: center; border: 1px solid #aab8b0; border-radius: 6px; font-size: 9px; font-weight: 900; }.cashier-payment-methods button > div { display: grid; gap: 3px; }.cashier-payment-methods strong { font-size: 10px; }.cashier-payment-methods small { color: var(--muted); font-size: 7px; }.cashier-payment-methods button.selected { border-color: #759c2d; box-shadow: 0 0 0 3px rgba(183,243,75,.25); }.cashier-payment-methods button:disabled { opacity: .42; cursor: not-allowed; }
.cashier-payment-detail { display: grid; grid-template-columns: 1fr 180px; gap: 10px; align-items: end; padding: 13px; border: 1px solid var(--line); border-radius: 9px; background: #fafcfa; }.cashier-payment-detail[hidden] { display: none; }.cashier-payment-detail label,.cashier-fiscal label,.cashier-close label { display: grid; gap: 6px; color: #617168; font-size: 9px; font-weight: 750; }.cashier-payment-detail input,.cashier-fiscal input,.cashier-fiscal select,.cashier-close input,.cashier-close textarea { min-height: 41px; }.cashier-change { min-height: 41px; display: flex; align-items: center; justify-content: space-between; padding: 0 12px; border-radius: 7px; color: var(--muted); background: #edf2ee; font-size: 9px; }.cashier-change strong { color: #547a1d; font-size: 15px; }.cashier-terminal { grid-column: 1/-1; display: flex; align-items: center; gap: 11px; }.cashier-terminal > span { width: 40px; height: 40px; display: grid; place-items: center; border-radius: 9px; color: #638824; background: #edf6e1; }.cashier-terminal svg { width: 20px; }.cashier-terminal > div { display: grid; gap: 3px; }.cashier-terminal strong { font-size: 11px; }.cashier-terminal small { color: var(--muted); font-size: 8px; }
.cashier-fiscal { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; padding: 13px; border: 1px solid var(--line); border-radius: 9px; }.cashier-fiscal [data-invoice-details] { grid-column: 1/-1; display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }.cashier-fiscal [data-invoice-details][hidden],.cashier-fiscal [data-sri-note][hidden] { display: none; }.cashier-fiscal p { grid-column: 1/-1; display: flex; align-items: center; gap: 7px; margin: 0; padding: 9px; border-radius: 7px; color: #6a7d32; background: #f1f6e8; font-size: 8px; }.cashier-fiscal p svg { width: 14px; }.cashier-charge-button { min-height: 49px; }.cashier-release-state { display: flex; align-items: center; gap: 15px; margin: 20px 0 14px; padding: 19px; border: 1px solid #bdd893; border-radius: 11px; background: #f4fae9; }.cashier-release-state > span { width: 48px; height: 48px; display: grid; place-items: center; border-radius: 50%; color: #5f861d; background: #dff0c5; }.cashier-release-state svg { width: 23px; }.cashier-release-state div { display: grid; gap: 4px; }.cashier-release-state small { color: #6b882e; font-size: 8px; font-weight: 850; text-transform: uppercase; }.cashier-release-state h2,.cashier-release-state p { margin: 0; }.cashier-release-state h2 { font-size: 17px; }.cashier-release-state p { color: #627269; font-size: 9px; }
.cashier-session-card,.cashier-active-card { padding: 19px; }.cashier-session-card .embedded-form { margin-top: 15px; }.cashier-session-numbers { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; overflow: hidden; margin: 15px 0 0; border: 1px solid var(--line); border-radius: 8px; background: var(--line); }.cashier-session-numbers div { display: grid; gap: 4px; padding: 11px; background: #fafcfa; }.cashier-session-numbers dt { color: var(--muted); font-size: 8px; }.cashier-session-numbers dd { margin: 0; font-size: 13px; font-weight: 850; }.cashier-close { margin-top: 13px; border-top: 1px solid var(--line); padding-top: 12px; }.cashier-close summary { color: #687971; font-size: 9px; font-weight: 800; cursor: pointer; }.cashier-close form { display: grid; gap: 9px; margin-top: 12px; }.cashier-close textarea { resize: vertical; padding: 9px; border: 1px solid #ccd5d0; border-radius: 8px; font: inherit; }.cashier-ticket-list { display: grid; gap: 4px; margin-top: 14px; }.cashier-ticket-list a { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px; border-radius: 8px; color: var(--ink); background: #f7f9f7; }.cashier-ticket-list a:hover { background: #edf5e3; }.cashier-ticket-list a > span { min-width: 0; display: grid; gap: 3px; }.cashier-ticket-list strong { font-size: 10px; }.cashier-ticket-list small { overflow: hidden; color: var(--muted); font-size: 7px; text-overflow: ellipsis; white-space: nowrap; }.cashier-ticket-list svg { width: 13px; color: #709329; }
.cashier-heading-actions { display: flex; align-items: center; gap: 10px; }.cashier-heading-actions .button { min-height: 38px; display: inline-flex; align-items: center; gap: 7px; }.cashier-heading-actions .button svg { width: 15px; }.cashier-close-link { display: grid; grid-template-columns: 36px 1fr 16px; align-items: center; gap: 10px; margin-top: 13px; padding: 12px; border: 1px solid #c7dca5; border-radius: 9px; color: var(--ink); background: #f4faea; }.cashier-close-link > span { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 8px; color: #668e22; background: #e4f2cc; }.cashier-close-link svg { width: 16px; }.cashier-close-link > div { display: grid; gap: 3px; }.cashier-close-link strong { font-size: 9px; }.cashier-close-link small { color: #718078; font-size: 7px; line-height: 1.45; }.cashier-close-link > svg { color: #6c9228; }
.cashier-reconciliation { margin-top: 18px; padding: 24px; scroll-margin-top: 88px; }.reconciliation-heading { display: flex; justify-content: space-between; align-items: center; gap: 24px; padding-bottom: 19px; border-bottom: 1px solid var(--line); }.reconciliation-heading h2 { margin: 5px 0 4px; font-size: 25px; letter-spacing: -.6px; }.reconciliation-heading p { max-width: 710px; margin: 0; color: var(--muted); font-size: 10px; line-height: 1.65; }.reconciliation-session { min-width: 210px; display: flex; align-items: center; gap: 10px; padding: 11px 13px; border: 1px solid #cfe2b0; border-radius: 10px; background: #f5faed; }.reconciliation-session > i { width: 9px; height: 9px; border-radius: 50%; background: #7fb42d; box-shadow: 0 0 0 5px rgba(127,180,45,.12); }.reconciliation-session > span { display: grid; gap: 2px; color: #66766e; font-size: 8px; }.reconciliation-session strong { color: var(--ink); }.reconciliation-session small { color: #7a8981; font-size: 7px; }
.reconciliation-payments { display: grid; grid-template-columns: repeat(4,1fr); gap: 10px; margin: 16px 0; }.reconciliation-payments article { display: grid; grid-template-columns: 40px 1fr; align-items: center; gap: 11px; padding: 14px; border: 1px solid var(--line); border-radius: 10px; background: #fafcfa; }.payment-code { width: 40px; height: 35px; display: grid; place-items: center; border: 1px solid #bac8c0; border-radius: 8px; color: #4e6459; font-size: 9px; font-weight: 900; }.payment-code.cash { color: #567d1a; border-color: #bcd78d; background: #eef7e1; }.payment-code.credit { color: #315c8b; border-color: #bed1e4; background: #edf5fc; }.payment-code.debit { color: #725795; border-color: #d3c6e4; background: #f6f0fb; }.payment-code.grace { color: #8b6a28; border-color: #ead7a9; background: #fff8e6; }.payment-code svg { width: 17px; }.reconciliation-payments article > div { display: grid; gap: 3px; }.reconciliation-payments small,.reconciliation-payments p { margin: 0; color: var(--muted); font-size: 7px; }.reconciliation-payments strong { font-size: 16px; }
.reconciliation-layout { display: grid; grid-template-columns: minmax(0,1fr) 330px; gap: 14px; }.denomination-counter { min-width: 0; padding: 19px; border: 1px solid var(--line); border-radius: 11px; background: white; }.counter-heading { display: flex; justify-content: space-between; align-items: center; gap: 15px; margin-bottom: 14px; }.counter-heading h3,.expected-cash-card h3 { margin: 4px 0 0; font-size: 17px; }.counter-clear { border: 0; color: #66786f; background: transparent; font-size: 8px; font-weight: 800; cursor: pointer; }.counter-clear:hover { color: #476a19; }.denomination-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 7px; }.denomination-item { min-width: 0; display: grid; grid-template-columns: minmax(62px,1fr) 62px 66px; align-items: center; gap: 7px; padding: 8px 9px; border: 1px solid #dbe2de; border-radius: 8px; background: #fafcfa; }.denomination-item > span { display: grid; gap: 2px; }.denomination-item small { color: #829089; font-size: 6px; text-transform: uppercase; }.denomination-item strong { font-size: 10px; }.denomination-item input { width: 100%; min-height: 34px; padding: 0 7px; border-radius: 6px; text-align: center; }.denomination-item output { color: #617269; font-family: ui-monospace,Consolas,monospace; font-size: 8px; font-weight: 800; text-align: right; }.reconciliation-notes { display: grid; gap: 6px; margin-top: 12px; color: #617168; font-size: 8px; font-weight: 750; }.reconciliation-notes textarea { min-height: 58px; resize: vertical; padding: 9px 11px; border: 1px solid #ccd5d0; border-radius: 8px; font: inherit; }.reconciliation-submit { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 12px; padding-top: 14px; border-top: 1px solid var(--line); }.reconciliation-submit > div { display: grid; gap: 3px; }.reconciliation-submit span { color: var(--muted); font-size: 7px; text-transform: uppercase; }.reconciliation-submit strong { font-size: 23px; }.reconciliation-submit .button { min-height: 46px; display: inline-flex; align-items: center; gap: 7px; }.reconciliation-submit .button svg { width: 15px; }
.expected-cash-card { padding: 21px; border-radius: 11px; color: white; background: var(--ink); }.expected-cash-card .kicker { color: #a8bd75; }.expected-total { display: block; margin: 14px 0 15px; color: var(--lime); font-size: 38px; letter-spacing: -1.5px; }.expected-cash-card dl { display: grid; gap: 1px; overflow: hidden; margin: 0; border-radius: 8px; background: rgba(255,255,255,.09); }.expected-cash-card dl div { display: flex; justify-content: space-between; gap: 15px; padding: 10px 11px; background: rgba(255,255,255,.035); }.expected-cash-card dt { color: #96aaa0; font-size: 8px; }.expected-cash-card dd { margin: 0; font-size: 9px; font-weight: 800; }.reconciliation-difference { display: grid; gap: 3px; margin-top: 13px; padding: 13px; border-radius: 9px; }.reconciliation-difference span,.reconciliation-difference small { font-size: 7px; }.reconciliation-difference strong { font-size: 20px; }.reconciliation-difference.balanced { color: #d9ff9a; background: rgba(124,177,42,.18); }.reconciliation-difference.shortage { color: #ffd0ca; background: rgba(196,64,52,.2); }.reconciliation-difference.surplus { color: #baf2d0; background: rgba(38,139,83,.2); }.audit-note { display: flex; align-items: start; gap: 7px; margin: 14px 0 0; color: #82978d; font-size: 7px; line-height: 1.55; }.audit-note svg { width: 14px; flex: 0 0 auto; color: #91b94b; }.inventory-preview { max-width: 190px; display: block; overflow: hidden; color: #65766d; font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }
.tariff-form { grid-template-columns: 1.4fr repeat(5,.8fr) auto; }.tariff-form label,.band-form label { display: grid; gap: 5px; color: var(--muted); font-size: 8px; font-weight: 750; }.rate-head { grid-template-columns: 1.25fr repeat(5,.75fr) auto auto; }
@media (max-width: 1180px) { .cashier-stats { grid-template-columns: repeat(2,1fr); }.cashier-workspace { grid-template-columns: 1fr; }.cashier-side { grid-template-columns: 1fr 1fr; }.reconciliation-payments { grid-template-columns: repeat(2,1fr); }.reconciliation-layout { grid-template-columns: 1fr; }.denomination-grid { grid-template-columns: repeat(2,1fr); }.tariff-form,.rate-head { grid-template-columns: repeat(3,1fr); } }
@media (max-width: 720px) { .cashier-heading-actions,.reconciliation-heading,.reconciliation-submit { align-items: stretch; flex-direction: column; }.cashier-stats,.cashier-side,.reconciliation-payments,.denomination-grid { grid-template-columns: 1fr; }.cashier-search > label { align-items: start; flex-direction: column; }.cashier-search > div { grid-template-columns: 38px 1fr; }.cashier-search button { grid-column: 1/-1; margin: 0 5px 5px; }.cashier-ticket-summary dl,.cashier-payment-methods,.cashier-fiscal,.cashier-fiscal [data-invoice-details] { grid-template-columns: 1fr 1fr; }.cashier-payment-detail { grid-template-columns: 1fr; }.reconciliation-session { min-width: 0; }.reconciliation-submit .button { justify-content: center; }.tariff-form,.rate-head,.band-form { grid-template-columns: 1fr; } }
.report-grid-four { grid-template-columns: repeat(4,1fr); }.dark-report { color: white; border-color: var(--ink); background: var(--ink); }.dark-report > svg,.dark-report > strong { color: var(--lime); }.dark-report > span,.dark-report > small { color: #9eafa6; }.cash-closure-report { margin-top: 28px; }.report-filters { display: grid; grid-template-columns: 1.25fr 1.1fr .8fr .8fr auto auto; gap: 10px; align-items: end; padding: 17px; }.report-filters label { display: grid; gap: 6px; color: var(--muted); font-size: 8px; font-weight: 800; text-transform: uppercase; letter-spacing: .35px; }.report-filters select,.report-filters input { min-height: 41px; }.closure-summary { display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; margin: 12px 0; }.closure-summary article { display: grid; gap: 5px; padding: 17px 19px; border: 1px solid var(--line); border-radius: 10px; background: white; }.closure-summary span { color: var(--muted); font-size: 8px; font-weight: 850; text-transform: uppercase; }.closure-summary strong { font-size: 24px; }.closure-summary small { color: var(--muted); font-size: 8px; }.closure-summary .balanced { border-color: #cde1ac; background: #f5faed; }.closure-summary .shortage { border-color: #efc8c2; background: #fff5f3; }.closure-summary .surplus { border-color: #c0ddca; background: #f0faf3; }.closure-table table { min-width: 1320px; }.closure-table td strong,.closure-table td small { white-space: nowrap; }.closure-difference { display: inline-flex; padding: 6px 8px; border-radius: 999px; font-size: 8px; font-weight: 850; }.closure-difference.balanced { color: #4c7420; background: #edf6df; }.closure-difference.shortage { color: #a43e35; background: #fce9e6; }.closure-difference.surplus { color: #247047; background: #e4f4e9; }.table-empty { padding: 34px; color: var(--muted); text-align: center; font-size: 11px; }
@media (max-width: 1180px) { .report-grid-four { grid-template-columns: repeat(2,1fr); }.report-filters { grid-template-columns: repeat(2,1fr); }.report-filters .button { width: 100%; } }
@media (max-width: 720px) { .report-grid-four,.closure-summary,.report-filters { grid-template-columns: 1fr; } }

/* Select2 global y contexto de sucursal activo */
.select2-container { min-width: 0; max-width: 100%; color: var(--ink); font: inherit; }
.select2-container .select2-selection--single { height: 48px; border: 1px solid #ccd5d0; border-radius: 8px; background: #fff; outline: none; transition: border-color .2s,box-shadow .2s,background .2s; }
.select2-container .select2-selection--single .select2-selection__rendered { height: 100%; display: flex; align-items: center; padding: 0 42px 0 14px; color: var(--ink); font-size: 12px; line-height: normal; }
.select2-container .select2-selection--single .select2-selection__placeholder { color: #87938d; }
.select2-container .select2-selection--single .select2-selection__arrow { width: 38px; height: 100%; top: 0; right: 0; }
.select2-container .select2-selection--single .select2-selection__arrow b { width: 7px; height: 7px; margin: -5px 0 0 -5px; border: 0; border-right: 1.5px solid #5d7067; border-bottom: 1.5px solid #5d7067; transform: rotate(45deg); transition: transform .18s,margin .18s; }
.select2-container--open .select2-selection--single .select2-selection__arrow b { margin-top: -1px; transform: rotate(225deg); }
.select2-container--default.select2-container--focus .select2-selection--single,.select2-container--default.select2-container--open .select2-selection--single,.select2-container--default.select2-container--focus .select2-selection--multiple { border-color: #7da42f; box-shadow: 0 0 0 3px rgba(183,243,75,.24); }
.select2-container--default.select2-container--disabled .select2-selection--single,.select2-container--default.select2-container--disabled .select2-selection--multiple { color: #8a9690; background: #eef1ef; cursor: not-allowed; }
.select2-container .select2-selection--multiple { min-height: 48px; border: 1px solid #ccd5d0; border-radius: 8px; padding: 4px 8px; background: #fff; }
.select2-container--default .select2-selection--multiple .select2-selection__choice { margin: 3px 4px 3px 0; border: 0; border-radius: 999px; padding: 5px 9px 5px 24px; color: #3d5e20; background: #eaf7d7; font-size: 10px; font-weight: 750; }
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove { height: 100%; padding: 0 7px; border-right: 0; color: #66872b; }
.select2-dropdown.adis-select2-dropdown { overflow: hidden; margin-top: 6px; border: 1px solid #bdc9c3; border-radius: 10px; background: #fff; box-shadow: 0 18px 42px rgba(11,23,20,.17); }
.select2-container--open { z-index: 80; }
.select2-search--dropdown { padding: 10px; border-bottom: 1px solid #e4e9e6; background: #f8faf8; }
.select2-search--dropdown .select2-search__field { min-height: 38px; border: 1px solid #bdc8c2 !important; border-radius: 7px; padding: 0 11px; color: var(--ink); font-size: 11px; outline: none; }
.select2-search--dropdown .select2-search__field:focus { border-color: #7da42f !important; box-shadow: 0 0 0 3px rgba(183,243,75,.2); }
.select2-results__options { padding: 6px; }
.select2-results__option { margin: 2px 0; border-radius: 7px; padding: 9px 11px; color: #4f6259; font-size: 11px; }
.select2-container--default .select2-results__option--highlighted.select2-results__option--selectable { color: var(--ink); background: #edf7df; }
.select2-container--default .select2-results__option--selected { color: #426513; background: #e3f3c9; font-weight: 800; }
.select2-results__message { color: var(--muted); text-align: center; }
.admin-create-form .select2-selection--single,.admin-row-form .select2-selection--single,.report-filters .select2-selection--single { height: 41px; }
.admin-create-form .select2-selection--single .select2-selection__rendered,.admin-row-form .select2-selection--single .select2-selection__rendered,.report-filters .select2-selection--single .select2-selection__rendered { font-size: 10px; }
.cashier-fiscal .select2-selection--single,.kiosk-invoice .select2-selection--single { height: 44px; }

.topbar { height: 78px; }
.topbar-tenant { gap: 12px; }
.tenant-symbol { position: relative; width: 42px; height: 42px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 11px; color: var(--lime); background: var(--ink); box-shadow: 0 7px 18px rgba(18,34,29,.12); }
.tenant-symbol svg { width: 20px; height: 20px; }
.tenant-symbol i { position: absolute; right: -2px; bottom: -2px; width: 10px; height: 10px; border: 2px solid var(--paper); border-radius: 50%; background: #3fba73; }
.topbar-tenant .tenant-identity { min-width: 135px; display: grid; gap: 3px; }
.topbar-tenant .tenant-identity small { color: #7f8c86; font-size: 7px; font-weight: 850; letter-spacing: .65px; text-transform: uppercase; }
.topbar-tenant .tenant-identity strong { max-width: 175px; font-size: 11px; }
.tenant-switcher { width: clamp(245px,22vw,330px); display: grid; gap: 4px; padding-left: 13px; border-left: 1px solid #d5ded9; }
.tenant-switcher-label { display: flex; align-items: center; justify-content: space-between; gap: 12px; color: #607168; font-size: 7px; font-weight: 900; letter-spacing: .55px; text-transform: uppercase; }
.tenant-switcher-label > span { display: inline-flex; align-items: center; gap: 6px; }
.tenant-switcher-label i,.tenant-single-site small i { width: 6px; height: 6px; display: inline-block; border-radius: 50%; background: #84b42e; box-shadow: 0 0 0 4px rgba(132,180,46,.12); }
.tenant-switcher-label small { color: #8a9690; font-size: 7px; font-weight: 700; letter-spacing: 0; text-transform: none; }
.tenant-switcher .select2-container { width: 100% !important; }
.tenant-switcher .select2-selection--single.adis-site-selection { height: 43px; border: 1px solid #a9c777; border-radius: 9px; background: linear-gradient(135deg,#fff 0,#f7fbea 100%); box-shadow: 0 0 0 3px rgba(183,243,75,.14),0 5px 14px rgba(35,65,28,.06); }
.tenant-switcher .select2-container--focus .select2-selection--single.adis-site-selection,.tenant-switcher .select2-container--open .select2-selection--single.adis-site-selection { border-color: #6f9924; box-shadow: 0 0 0 4px rgba(183,243,75,.26),0 9px 20px rgba(35,65,28,.1); }
.tenant-switcher .select2-selection--single .select2-selection__rendered { padding-left: 11px; }
.site-select2-option { min-width: 0; display: flex; align-items: center; gap: 9px; }
.site-select2-option > i { width: 8px; height: 8px; flex: 0 0 auto; border: 2px solid #7ea72f; border-radius: 50%; box-shadow: 0 0 0 4px rgba(126,167,47,.1); }
.site-select2-option > span { min-width: 0; display: grid; gap: 2px; }
.site-select2-option strong,.site-select2-option small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.site-select2-option strong { color: var(--ink); font-size: 10px; letter-spacing: -.1px; }
.site-select2-option small { color: #73827b; font: 700 7px ui-monospace,Consolas,monospace; letter-spacing: .2px; }
.site-select2-dropdown .select2-results__option { min-height: 50px; display: flex; align-items: center; padding: 8px 12px; }
.site-select2-dropdown .select2-results__option--selected .site-select2-option > i { border-color: #5f8720; background: var(--lime); }
.tenant-single-site { min-width: 230px; display: grid; grid-template-columns: 1fr auto; gap: 3px 14px; padding: 8px 12px; border: 1px solid #c8d8ae; border-radius: 9px; background: #f7fbea; }
.tenant-single-site small { grid-column: 1/-1; display: inline-flex; align-items: center; gap: 6px; color: #6b7c73; font-size: 7px; font-weight: 900; text-transform: uppercase; }
.tenant-single-site strong { max-width: 180px; font-size: 10px; }.tenant-single-site span { align-self: center; color: #617c31; font: 750 7px ui-monospace,Consolas,monospace; }

@media (max-width: 1120px) {
  .topbar-tenant .tenant-identity { display: none; }
  .tenant-switcher { padding-left: 0; border-left: 0; }
}
@media (max-width: 760px) {
  .topbar { height: 72px; gap: 8px; }
  .topbar-tenant { gap: 8px; }
  .tenant-symbol { width: 37px; height: 37px; border-radius: 9px; }
  .tenant-switcher { width: clamp(165px,37vw,225px); }
  .tenant-switcher-label small { display: none; }
  .tenant-switcher .select2-selection--single.adis-site-selection { height: 39px; }
  .site-select2-option small { display: none; }
}
@media (max-width: 520px) {
  .tenant-symbol,.notification-button { display: none; }
  .tenant-switcher { width: min(45vw,185px); }
  .profile-chip { display: none; }
  .tenant-switcher-label { font-size: 6px; }
}

/* Consola privada de datos */
.data-console { overflow: hidden; min-height: calc(100vh - 118px); border: 1px solid #24332e; border-radius: 10px; color: #dce5e0; background: #101815; box-shadow: 0 20px 55px rgba(10,20,17,.16); }
.data-console-topbar { min-height: 62px; display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 0 19px; border-bottom: 1px solid #33433d; background: linear-gradient(180deg,#25342f,#1b2924); }
.data-console-brand,.data-console-connection,.data-server-node,.data-tree-label,.data-result-heading > div { display: flex; align-items: center; }
.data-console-brand { gap: 11px; }.data-console-brand > div,.data-console-connection > span { display: grid; gap: 2px; }.data-console-brand strong { color: #fff; font-size: 13px; }.data-console-brand small,.data-console-connection small { color: #8fa19a; font-size: 7px; letter-spacing: .55px; text-transform: uppercase; }
.database-cylinder { position: relative; width: 27px; height: 30px; display: inline-block; border: 2px solid var(--lime); border-radius: 50%/18%; }.database-cylinder::before,.database-cylinder::after { content: ""; position: absolute; left: -2px; width: 27px; height: 8px; border: 2px solid var(--lime); border-top: 0; border-radius: 0 0 50% 50%; }.database-cylinder::before { top: 8px; }.database-cylinder::after { top: 17px; }.database-cylinder.small { width: 17px; height: 20px; border-width: 1px; }.database-cylinder.small::before,.database-cylinder.small::after { left: -1px; width: 17px; height: 5px; border-width: 1px; }.database-cylinder.small::before { top: 5px; }.database-cylinder.small::after { top: 11px; }
.data-console-connection { gap: 9px; }.data-console-connection > i,.data-statusbar i { width: 7px; height: 7px; border-radius: 50%; background: #59d98d; box-shadow: 0 0 0 4px rgba(89,217,141,.12); }.data-console-connection strong { color: #e7efe9; font: 700 9px ui-monospace,Consolas,monospace; }.data-console-connection code { padding: 5px 7px; border: 1px solid #43544d; border-radius: 4px; color: #a9bbb3; background: #13201c; font-size: 7px; }
.data-console-layout { min-height: calc(100vh - 181px); display: grid; grid-template-columns: 235px minmax(0,1fr); }
.data-object-browser { overflow: auto; border-right: 1px solid #34443e; background: #17221e; }.object-browser-title { min-height: 39px; display: flex; align-items: center; justify-content: space-between; padding: 0 12px; border-bottom: 1px solid #31413b; color: #8fa099; font-size: 7px; font-weight: 850; letter-spacing: .5px; }.object-browser-title a { width: 25px; height: 25px; display: grid; place-items: center; color: #9bacA5; }.object-browser-title svg { width: 13px; height: 13px; }
.data-server-node { width:100%; gap: 8px; padding: 13px 12px 8px; border:0; color: #f0f5f2; background:transparent; font:inherit; font-size: 10px; text-align:left; cursor:pointer; }.data-server-node:hover,.data-tree-label:hover { background:#202e29; }.tree-toggle { display:inline-grid; place-items:center; width: 14px; color: #9caf9f; text-align: center; font-size:14px; line-height:1; }.data-tree-label { width:100%; gap: 6px; padding: 8px 13px 7px 27px; border:0; color: #aebdb5; background:transparent; font:inherit; font-size: 8px; font-weight: 750; text-align:left; cursor:pointer; }.data-tree-label svg { width: 12px; height: 12px; }.data-tree-label b { margin-left:auto; min-width:22px; padding:2px 5px; border-radius:8px; color:#7f9389; background:#101a16; font-size:7px; text-align:center; }.data-tree-branch[hidden] { display:none !important; }
.data-collection-list { display: grid; gap: 1px; padding-bottom: 16px; }.data-collection-list a { position:relative; min-height:31px; display:grid; grid-template-columns:10px 18px minmax(0,1fr) auto; align-items:center; gap:7px; padding:0 11px 0 35px; border-left:2px solid transparent; color:#aab9b2; font-size:8px; }.data-collection-list a:hover { color: #fff; background: #202e29; }.data-collection-list a.active { border-left-color: var(--lime); color: #fff; background: #2a3a34; }.data-collection-list b { min-width: 24px; padding: 3px 5px; border-radius: 8px; color: #83958c; background: #101a16; text-align: center; font-size: 7px; }.tree-connector { width:10px; height:16px; border-left:1px solid #40514a; border-bottom:1px solid #40514a; transform:translateY(-8px); }.table-grid-icon { color: #91c43a; font-size: 14px; }
.data-console-main { min-width: 0; background: #e8ece9; color: #17231f; }.data-tabs { height: 39px; display: flex; align-items: end; gap: 1px; padding-left: 10px; border-bottom: 1px solid #aeb9b4; background: #d4dbd7; }.data-tabs a { height: 31px; min-width: 84px; display: flex; align-items: center; justify-content: center; gap: 7px; border: 1px solid transparent; color: #5e6d66; font-size: 8px; }.data-tabs a:hover { color: #17231f; background: rgba(255,255,255,.45); }.data-tabs a.active { border-color: #aeb9b4; border-bottom-color: #f4f6f4; color: #17231f; background: #f4f6f4; font-weight: 800; }.data-tabs a svg { width: 12px; height: 12px; }
.data-toolbar { min-height: 52px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 11px; border-bottom: 1px solid #c1cac5; background: #f5f7f5; }.data-toolbar > div { display: flex; gap: 5px; }.data-tool { min-height: 31px; display: inline-flex; align-items: center; gap: 6px; padding: 0 10px; border: 1px solid #b8c2bd; border-radius: 4px; color: #33423b; background: linear-gradient(#fff,#e9eeeb); font-size: 8px; font-weight: 750; }.data-tool.primary { border-color: #779c36; color: #15220d; background: linear-gradient(#c3f867,#a9e842); }.data-tool svg { width: 12px; height: 12px; }
.data-filter { width: min(330px,40%); display: grid; grid-template-columns: 27px 1fr auto; align-items: center; border: 1px solid #aeb9b4; border-radius: 4px; background: #fff; }.data-filter svg { width: 13px; height: 13px; margin-left: 9px; color: #7e8c85; }.data-filter input { min-height: 31px; padding: 0 5px; border: 0; background: transparent; font: 8px ui-monospace,Consolas,monospace; outline: 0; }.data-filter button { min-height: 31px; padding: 0 10px; border: 0; border-left: 1px solid #c3ccc7; background: #e8edea; font-size: 8px; font-weight: 800; cursor: pointer; }
.data-query-strip { min-height: 39px; display: flex; align-items: center; gap: 6px; padding: 0 13px; border-bottom: 1px solid #bdc7c1; color: #586860; background: #fff; font: 8px ui-monospace,Consolas,monospace; }.data-query-strip span { color: #7a43bd; font-weight: 850; }.data-query-strip b { color: #186893; }.data-query-strip i { flex: 1; }.data-query-strip small { color: #738078; font: 700 7px system-ui,sans-serif; }
.data-result-panel { margin: 10px; border: 1px solid #aeb9b4; border-radius: 4px; background: #fff; }.data-result-heading { height: 36px; display: flex; align-items: center; justify-content: space-between; padding: 0 11px; border-bottom: 1px solid #b8c2bd; background: linear-gradient(#f8faf8,#e7ebe8); }.data-result-heading > div { gap: 7px; }.data-result-heading strong { font-size: 9px; }.data-result-heading small,.data-result-heading > span { color: #718079; font-size: 7px; }.data-result-heading small { padding-left: 7px; border-left: 1px solid #bac4bf; font-family: ui-monospace,Consolas,monospace; }
.data-grid-wrap { overflow: auto; max-height: 53vh; }.data-grid { width: max-content; min-width: 100%; border-collapse: separate; border-spacing: 0; font: 7.5px ui-monospace,Consolas,monospace; }.data-grid th { position: sticky; top: 0; z-index: 2; padding: 8px 9px; border-right: 1px solid #c5cdc9; border-bottom: 1px solid #aeb8b3; color: #35443d; background: #dfe5e1; text-align: left; white-space: nowrap; }.data-grid td { max-width: 240px; overflow: hidden; padding: 7px 9px; border-right: 1px solid #e0e5e2; border-bottom: 1px solid #e0e5e2; color: #25342d; text-overflow: ellipsis; white-space: nowrap; }.data-grid tbody tr:nth-child(even) td { background: #f7f9f7; }.data-grid tbody tr:hover td { background: #ecf6dc; }.data-grid .row-number { width: 38px; color: #748179; background: #edf0ee; text-align: right; }.data-grid .null-value { color: #9d62bd; font-style: italic; }.data-actions-column { min-width: 112px; }.data-row-actions { display: flex; gap: 8px; }.data-row-actions a,.data-row-actions button { border: 0; color: #276785; background: transparent; font: 750 7px ui-monospace,Consolas,monospace; cursor: pointer; }.data-row-actions button { color: #aa443d; }.data-empty { padding: 40px !important; color: #75827c !important; text-align: center; }
.data-statusbar { min-height: 30px; display: flex; align-items: center; gap: 20px; padding: 0 10px; border-top: 1px solid #bdc7c1; color: #5f6e67; background: #e8edea; font-size: 7px; }.data-statusbar span { display: inline-flex; align-items: center; gap: 6px; }.data-statusbar span:nth-child(2) { flex: 1; }
.data-editor-panel { margin: 10px; border: 1px solid #384942; border-radius: 5px; background: #13201b; }.data-editor-panel > header { min-height: 39px; display: flex; align-items: center; justify-content: space-between; padding: 0 12px; border-bottom: 1px solid #35473f; color: white; }.data-editor-panel > header > div { display: flex; align-items: center; gap: 9px; }.data-editor-panel > header span { padding: 4px 6px; border-radius: 3px; color: #15200d; background: var(--lime); font: 850 7px ui-monospace,Consolas,monospace; }.data-editor-panel > header strong { font-size: 9px; }.data-editor-panel > header a { color: #aebdb6; font-size: 18px; }.data-editor-panel textarea { width: 100%; min-height: 310px; resize: vertical; padding: 15px; border: 0; color: #cfe6d8; background: #0d1713; font: 9px/1.65 ui-monospace,Consolas,monospace; outline: 0; tab-size: 2; }.data-editor-panel form > footer { display: flex; align-items: center; justify-content: space-between; gap: 15px; padding: 9px 11px; border-top: 1px solid #34463e; }.data-editor-panel footer p { display: flex; align-items: center; gap: 7px; margin: 0; color: #91a59c; font-size: 7px; }.data-editor-panel footer svg { width: 13px; height: 13px; color: var(--lime); }.data-editor-panel .button { min-height: 34px; }
@media (max-width: 1050px) { .data-console-layout { grid-template-columns: 190px minmax(0,1fr); }.data-collection-list a { padding-left: 20px; }.data-filter { width: 250px; } }
@media (max-width: 760px) { .data-console { border-radius: 0; }.data-console-topbar { align-items: flex-start; flex-direction: column; padding: 12px; }.data-console-connection { width: 100%; }.data-console-layout { grid-template-columns: 1fr; }.data-object-browser { max-height: 220px; border-right: 0; border-bottom: 1px solid #34443e; }.data-toolbar { align-items: stretch; flex-direction: column; }.data-filter { width: 100%; }.data-query-strip { overflow-x: auto; white-space: nowrap; }.data-editor-panel form > footer { align-items: stretch; flex-direction: column; } }

/* Data Studio · espacio de trabajo de pantalla completa */
.data-console-body { overflow: hidden; background: #101815; }
.data-console-root { width: 100%; height: 100vh; }
.data-console-root .data-console { width: 100%; height: 100vh; min-height: 0; border: 0; border-radius: 0; box-shadow: none; }
.data-console-root .data-console-topbar { min-height: 72px; padding: 0 24px; gap: 24px; border-color: #3b4b45; }
.data-console-root .data-console-brand { gap: 13px; }
.data-console-root .data-console-brand > div,.data-console-root .data-console-connection > span { gap: 3px; }
.data-console-root .data-console-brand strong { font-size: 16px; }
.data-console-root .data-console-brand small,.data-console-root .data-console-connection small { font-size: 9px; letter-spacing: .65px; }
.data-console-header-actions { display: flex; align-items: center; gap: 20px; }
.data-console-root .data-console-connection { gap: 10px; }
.data-console-root .data-console-connection > i,.data-console-root .data-statusbar i { width: 8px; height: 8px; }
.data-console-root .data-console-connection strong { font-size: 11px; }
.data-console-root .data-console-connection code { padding: 6px 9px; border-radius: 5px; font-size: 9px; }
.data-console-exit { min-height: 40px; display: inline-flex; align-items: center; gap: 8px; padding: 0 14px; border: 1px solid #52645c; border-radius: 6px; color: #e9f0ed; background: rgba(255,255,255,.035); font-size: 11px; font-weight: 750; }
.data-console-exit:hover { border-color: var(--lime); color: var(--lime); background: rgba(174,242,58,.06); }
.data-console-exit svg { width: 15px; height: 15px; transform: rotate(180deg); }
.data-console-root .data-console-layout { height: calc(100vh - 72px); min-height: 0; grid-template-columns: 300px minmax(0,1fr); }
.data-console-root .object-browser-title { min-height: 46px; padding: 0 16px; font-size: 9px; }
.data-console-root .object-browser-title a { width: 30px; height: 30px; }
.data-console-root .object-browser-title svg { width: 15px; height: 15px; }
.data-console-root .data-server-node { gap: 10px; padding: 16px 15px 10px; font-size: 13px; }
.data-console-root .tree-toggle { width: 16px; }
.data-console-root .data-tree-label { gap: 8px; padding: 10px 15px 9px 34px; font-size: 11px; }
.data-console-root .data-tree-label svg { width: 14px; height: 14px; }
.data-console-root .data-collection-list { padding-bottom: 20px; }
.data-console-root .data-collection-list a { min-height: 39px; grid-template-columns: 20px minmax(0,1fr) auto; gap: 9px; padding: 0 14px 0 50px; border-left-width: 3px; font-size: 11px; }
.data-console-root .data-collection-list b { min-width: 28px; padding: 4px 6px; border-radius: 10px; font-size: 9px; }
.data-console-root .table-grid-icon { font-size: 16px; }
.data-console-root .data-console-main { overflow: auto; }
.data-console-root .data-tabs { height: 48px; padding-left: 13px; }
.data-console-root .data-tabs a { height: 38px; min-width: 110px; font-size: 11px; }
.data-console-root .data-toolbar { min-height: 66px; gap: 16px; padding: 10px 14px; }
.data-console-root .data-toolbar > div { gap: 7px; }
.data-console-root .data-tool { min-height: 40px; gap: 8px; padding: 0 14px; border-radius: 5px; font-size: 11px; }
.data-console-root .data-tool svg { width: 14px; height: 14px; }
.data-console-root .data-filter { width: min(440px,42%); grid-template-columns: 34px 1fr auto; border-radius: 5px; }
.data-console-root .data-filter svg { width: 15px; height: 15px; margin-left: 11px; }
.data-console-root .data-filter input { min-height: 40px; padding: 0 7px; font-size: 11px; }
.data-console-root .data-filter button { min-height: 40px; padding: 0 15px; font-size: 11px; }
.data-console-root .data-query-strip { min-height: 47px; gap: 8px; padding: 0 16px; font-size: 10.5px; }
.data-console-root .data-query-strip small { font-size: 10px; }
.data-console-root .data-result-panel { margin: 14px; border-radius: 5px; }
.data-console-root .data-result-heading { height: 46px; padding: 0 14px; }
.data-console-root .data-result-heading > div { gap: 9px; }
.data-console-root .data-result-heading strong { font-size: 12px; }
.data-console-root .data-result-heading small,.data-console-root .data-result-heading > span { font-size: 10px; }
.data-console-root .data-result-heading small { padding-left: 9px; }
.data-console-root .data-grid-wrap { max-height: calc(100vh - 330px); }
.data-console-root .data-console.has-editor .data-grid-wrap { max-height: 38vh; }
.data-console-root .data-grid { font-size: 10.5px; }
.data-console-root .data-grid th { padding: 11px 12px; }
.data-console-root .data-grid td { max-width: 320px; padding: 10px 12px; }
.data-console-root .data-grid .row-number { width: 44px; }
.data-console-root .data-actions-column { min-width: 130px; }
.data-console-root .data-row-actions { gap: 11px; }
.data-console-root .data-row-actions a,.data-console-root .data-row-actions button { font-size: 10px; }
.data-console-root .data-empty { padding: 55px !important; }
.data-console-root .data-statusbar { min-height: 38px; gap: 24px; padding: 0 13px; font-size: 10px; }
.data-console-root .data-editor-panel { margin: 14px; }
.data-console-root .data-editor-panel > header { min-height: 46px; padding: 0 14px; }
.data-console-root .data-editor-panel > header span { font-size: 9px; }
.data-console-root .data-editor-panel > header strong { font-size: 12px; }
.data-console-root .data-editor-panel textarea { min-height: 360px; padding: 18px; font-size: 12px; }
.data-console-root .data-editor-panel form > footer { padding: 12px 14px; }
.data-console-root .data-editor-panel footer p { gap: 8px; font-size: 10px; }
.data-console-root .data-editor-panel footer svg { width: 15px; height: 15px; }
.data-console-root .data-editor-panel .button { min-height: 40px; }
@media (max-width: 1100px) {
  .data-console-root .data-console-layout { grid-template-columns: 245px minmax(0,1fr); }
  .data-console-root .data-collection-list a { padding-left: 28px; }
  .data-console-root .data-filter { width: 330px; }
}
@media (max-width: 760px) {
  .data-console-body { overflow: auto; }
  .data-console-root,.data-console-root .data-console { height: auto; min-height: 100vh; }
  .data-console-root .data-console-topbar { align-items: flex-start; flex-direction: column; padding: 14px; }
  .data-console-header-actions { width: 100%; justify-content: space-between; }
  .data-console-root .data-console-connection { width: auto; min-width: 0; }
  .data-console-root .data-console-connection code { display: none; }
  .data-console-root .data-console-layout { height: auto; grid-template-columns: 1fr; }
  .data-console-root .data-object-browser { max-height: 300px; }
  .data-console-root .data-toolbar > div { flex-wrap: wrap; }
  .data-console-root .data-filter { width: 100%; }
  .data-console-root .data-grid-wrap,.data-console-root .data-console.has-editor .data-grid-wrap { max-height: 52vh; }
}

/* Data Studio · esquema, índices, auditoría y editor AdisQL */
.data-workspace-panel,.data-query-workspace { margin: 16px; border: 1px solid #aeb9b4; border-radius: 7px; background: #f7f9f7; box-shadow: 0 8px 24px rgba(15,34,26,.05); }
.data-workspace-panel > header,.data-query-workspace > header { min-height: 74px; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 14px 17px; border-bottom: 1px solid #c3ccc7; background: #edf1ee; }
.data-workspace-panel > header > div,.data-query-workspace > header > div { display: flex; align-items: center; gap: 12px; }
.data-workspace-panel > header small,.data-query-workspace > header small { display: block; margin-bottom: 3px; color: #6f8d30; font-size: 8px; font-weight: 900; letter-spacing: .7px; }
.data-workspace-panel > header h2,.data-query-workspace > header h2 { margin: 0; font-size: 17px; letter-spacing: -.3px; }
.data-query-workspace > header p { margin: 4px 0 0; color: #64746d; font-size: 9px; }
.data-workspace-panel > header > span { color: #66766e; font-size: 10px; font-weight: 750; }
.workspace-icon { width: 40px; height: 40px; display: grid; flex: 0 0 auto; place-items: center; border-radius: 8px; color: #648b21; background: #dff0c5; }
.workspace-icon svg { width: 20px; height: 20px; }
.data-workspace-panel .data-grid-wrap { max-height: calc(100vh - 220px); }
.data-workspace-panel .data-grid td strong { color: #21332b; }.data-workspace-panel .data-grid td code { color: #5b762a; font-size: 10px; }
.data-index-list { display: grid; gap: 8px; padding: 16px; }
.data-index-list article { display: grid; grid-template-columns: 42px minmax(0,1fr) auto; align-items: center; gap: 13px; padding: 14px; border: 1px solid #cbd3cf; border-radius: 6px; background: #fff; }
.index-key { width: 40px; height: 40px; display: grid; place-items: center; border-radius: 7px; color: #5f861c; background: #e9f4d8; font: 900 9px ui-monospace,Consolas,monospace; }
.data-index-list article > div { min-width: 0; display: grid; grid-template-columns: max-content 1fr; gap: 4px 12px; align-items: baseline; }.data-index-list strong { font-size: 11px; }.data-index-list code { overflow: hidden; color: #61736a; font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }.data-index-list p { grid-column: 1/-1; margin: 0; color: #78857e; font-size: 9px; }.data-index-list article > b { padding: 5px 8px; border-radius: 999px; color: #557820; background: #eff6e5; font-size: 8px; }
.data-engine-note { display: flex; align-items: center; gap: 8px; margin: 0 16px 16px; padding: 11px; border-radius: 6px; color: #68766f; background: #edf1ee; font-size: 9px; }.data-engine-note svg { width: 15px; height: 15px; color: #749a2d; }
.query-access-badge { display: inline-flex; align-items: center; gap: 7px; padding: 7px 10px; border-radius: 999px; color: #506d23; background: #e5f1d3; font-size: 8px; font-weight: 850; white-space: nowrap; }.query-access-badge i { width: 7px; height: 7px; border-radius: 50%; background: #7faf27; box-shadow: 0 0 0 4px rgba(127,175,39,.14); }
.data-query-editor { margin: 16px; overflow: hidden; border: 1px solid #233b31; border-radius: 7px; background: #0d1b16; box-shadow: 0 10px 28px rgba(11,29,21,.16); }
.query-editor-bar { min-height: 38px; display: flex; align-items: center; justify-content: space-between; padding: 0 13px; border-bottom: 1px solid #293f36; color: #9eb1a8; background: #14271f; }.query-editor-bar span { color: var(--lime); font: 900 9px ui-monospace,Consolas,monospace; letter-spacing: .8px; }.query-editor-bar small { font-size: 8px; }
.data-query-editor textarea { width: 100%; min-height: 190px; resize: vertical; padding: 17px; border: 0; outline: 0; color: #e5eee9; background: #0d1b16; caret-color: var(--lime); font: 12px/1.7 ui-monospace,Consolas,monospace; tab-size: 2; }
.data-query-editor > footer { min-height: 54px; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 8px 11px; border-top: 1px solid #293f36; background: #14271f; }.data-query-editor > footer > div { display: flex; flex-wrap: wrap; gap: 6px; }.data-query-editor > footer > div button { min-height: 29px; padding: 0 9px; border: 1px solid #42584f; border-radius: 4px; color: #b7c6bf; background: transparent; font-size: 8px; cursor: pointer; }.data-query-editor > footer > div button:hover { border-color: #92bd3e; color: var(--lime); }.data-query-editor > footer .button { min-height: 36px; min-width: 150px; }
.query-help { display: grid; grid-template-columns: max-content repeat(2,minmax(0,1fr)); gap: 7px; margin: 0 16px 16px; padding: 12px; border: 1px solid #cbd3cf; border-radius: 6px; background: #fff; }.query-help strong { grid-row: 1/3; align-self: center; color: #43534b; font-size: 9px; }.query-help code { overflow: hidden; padding: 7px 8px; border-radius: 4px; color: #5d6e66; background: #eef2ef; font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }
.query-result { margin: 0 16px 16px; overflow: hidden; border: 1px solid #c2ccc7; border-radius: 7px; background: #fff; }.query-result > header { min-height: 52px; display: flex; align-items: center; justify-content: space-between; gap: 15px; padding: 10px 13px; border-bottom: 1px solid #d0d7d3; background: #f0f3f1; }.query-result > header > div { display: grid; gap: 3px; }.query-result > header strong { font: 900 10px ui-monospace,Consolas,monospace; }.query-result > header span { color: #69776f; font-size: 9px; }.query-result > header b { padding: 6px 8px; border-radius: 999px; color: #526f24; background: #e5f1d3; font-size: 8px; }.query-result.error { border-color: #e0b8b2; }.query-result.error > header { background: #fff0ee; }.query-result.error > header strong,.query-result.error > header b { color: #9c392d; }.query-result.error > header b { background: #f8dcd8; }.query-result .data-grid-wrap { max-height: calc(100vh - 555px); }
@media (max-width: 920px) { .query-help { grid-template-columns: 1fr; }.query-help strong { grid-row: auto; }.data-query-editor > footer { align-items: stretch; flex-direction: column; }.data-query-editor > footer .button { width: 100%; }.data-query-workspace > header { align-items: flex-start; flex-direction: column; } }
@media (max-width: 760px) { .data-tabs { overflow-x: auto; align-items: end; }.data-console-root .data-tabs a { min-width: 98px; }.data-workspace-panel,.data-query-workspace { margin: 10px; }.data-index-list article { grid-template-columns: 40px 1fr; }.data-index-list article > b { grid-column: 2; justify-self: start; }.query-result .data-grid-wrap { max-height: 50vh; } }

/* Escala de lectura global · interfaz operativa y administrativa */
.app-body { font-size: 15px; }
.app-body .content { width: min(1640px,100%); padding: 44px clamp(30px,3.2vw,58px) 38px; }
.app-body .page-heading { margin-bottom: 32px; }
.app-body .page-heading h1 { font-size: clamp(36px,3.1vw,48px); }
.app-body .page-heading p { font-size: 15px; line-height: 1.55; }
.app-body .content p { font-size: 13px; line-height: 1.6; }
.app-body .content small { font-size: 11px; line-height: 1.45; }
.app-body .content label { font-size: 12px; }
.app-body .content input,.app-body .content select,.app-body .content textarea { min-height: 46px; font-size: 13px; }
.app-body .content .button { min-height: 46px; padding-inline: 19px; font-size: 13px; }
.app-body .content table { font-size: 13px; }
.app-body .content th { padding: 13px 14px; font-size: 10px; }
.app-body .content td { padding: 15px 14px; }
.app-body .content .kicker { font-size: 11px; }
.app-body .content .state,.app-body .content .live-chip,.app-body .content .status-pill,.app-body .content .result { font-size: 10px; }
.app-body .panel { padding: 27px; }
.app-body .panel-heading h2 { font-size: 21px; }

.app-body .sidebar { padding: 32px 22px; }
.app-body .sidebar .brand { padding-inline: 9px; font-size: 21px; }
.app-body .side-nav { gap: 6px; }
.app-body .side-nav a { min-height: 50px; padding-inline: 14px; font-size: 14px; }
.app-body .side-nav svg { width: 20px; height: 20px; }
.app-body .nav-label { margin-top: 27px; font-size: 11px; }
.app-body .side-nav a.exclusive-access { min-height: 62px; }
.app-body .side-nav a.exclusive-access strong { font-size: 14px; }
.app-body .side-nav a.exclusive-access small,.app-body .sidebar-foot { font-size: 11px; }
.app-body .topbar { height: 84px; padding-inline: clamp(26px,3vw,54px); }
.app-body .tenant-symbol { width: 46px; height: 46px; }
.app-body .topbar-tenant .tenant-identity small,.app-body .tenant-switcher-label,.app-body .tenant-switcher-label small { font-size: 9px; }
.app-body .topbar-tenant .tenant-identity strong { font-size: 13px; }
.app-body .tenant-switcher { width: clamp(280px,22vw,360px); }
.app-body .tenant-switcher .select2-container .select2-selection--single { min-height: 48px; }
.app-body .site-select2-option strong { font-size: 12px; }
.app-body .site-select2-option small { font-size: 10px; }
.app-body .topbar-site-link { min-height: 42px; padding-inline: 14px; font-size: 12px; }
.app-body .icon-button { width: 42px; height: 42px; }
.app-body .profile-chip > span { width: 39px; height: 39px; font-size: 12px; }
.app-body .profile-chip strong { font-size: 13px; }
.app-body .profile-chip small { font-size: 11px; }

.app-body .admin-summary-grid { gap: 12px; margin-bottom: 26px; }
.app-body .admin-summary-grid > a { min-height: 84px; gap: 14px; padding: 17px; }
.app-body .admin-summary-grid > a > span { width: 42px; height: 42px; }
.app-body .admin-summary-grid strong { font-size: 22px; }
.app-body .admin-summary-grid small { font-size: 11px; }
.app-body .admin-console { grid-template-columns: 286px minmax(0,1fr); gap: 22px; }
.app-body .module-tabs { top: 92px; gap: 5px; padding: 12px; }
.app-body .admin-nav-intro { gap: 5px; padding: 12px 11px 15px; }
.app-body .admin-nav-intro > span,.app-body .admin-nav-group { font-size: 9px; }
.app-body .admin-nav-intro strong { font-size: 15px; }
.app-body .admin-nav-intro small { font-size: 10px; }
.app-body .module-tabs a { min-height: 56px; grid-template-columns: 40px minmax(0,1fr) auto; gap: 11px; padding: 9px 10px; }
.app-body .module-tabs a > span { width: 40px; height: 40px; }
.app-body .module-tabs a > span svg { width: 18px; height: 18px; }
.app-body .module-tabs a strong { font-size: 11px; }
.app-body .module-tabs a small,.app-body .module-tabs a b { font-size: 9px; }
.app-body .admin-section { padding: 27px; }
.app-body .admin-section > .section-heading:first-child { min-height: 82px; margin-bottom: 20px; padding-bottom: 20px; }
.app-body .admin-section > .section-heading:first-child h2 { font-size: 29px; }
.app-body .admin-section > .section-heading:first-child p { font-size: 13px; }
.app-body .tenant-context-card > div { min-height: 122px; padding: 23px; }
.app-body .tenant-context-card small,.app-body .tenant-context-card span { font-size: 11px; }
.app-body .tenant-context-card strong { font-size: 19px; }
.app-body .admin-create-disclosure > summary { min-height: 80px; }
.app-body .admin-create-disclosure > summary strong { font-size: 14px; }
.app-body .admin-create-disclosure > summary small { font-size: 11px; }
.app-body .admin-create-form input,.app-body .admin-create-form select,.app-body .admin-row-form input,.app-body .admin-row-form select { min-height: 45px; font-size: 13px; }
.app-body .table-edit-button,.app-body .tenant-edit-button { min-height: 38px; padding-inline: 13px; font-size: 11px; }

.data-console-body { font-size: 14px; }
.data-console-root .data-console-topbar { min-height: 78px; }
.data-console-root .data-console-layout { height: calc(100vh - 78px); grid-template-columns: 320px minmax(0,1fr); }
.data-console-root .data-console-brand strong { font-size: 18px; }
.data-console-root .data-console-brand small,.data-console-root .data-console-connection small { font-size: 10px; }
.data-console-root .data-console-connection strong { font-size: 12px; }
.data-console-root .data-collection-list a { min-height: 43px; font-size: 12px; }
.data-console-root .data-collection-list b { font-size: 10px; }
.data-console-root .data-tabs { height: 54px; }
.data-console-root .data-tabs a { height: 44px; min-width: 124px; font-size: 12px; }
.data-console-root .data-tool,.data-console-root .data-filter input,.data-console-root .data-filter button { font-size: 12px; }
.data-console-root .data-query-strip,.data-console-root .data-grid { font-size: 12px; }
.data-console-root .data-grid th { font-size: 10px; }
.data-console-root .data-row-actions a,.data-console-root .data-row-actions button { font-size: 11px; }
.data-console-root .data-statusbar { font-size: 11px; }
.data-console-root .data-workspace-panel > header small,.data-console-root .data-query-workspace > header small { font-size: 10px; }
.data-console-root .data-query-workspace > header p,.data-console-root .data-index-list code,.data-console-root .data-index-list p,.data-console-root .data-engine-note { font-size: 11px; }
.data-console-root .data-query-editor textarea { font-size: 13px; }
.data-console-root .query-editor-bar small,.data-console-root .data-query-editor > footer > div button,.data-console-root .query-help code { font-size: 10px; }
.data-console-root .query-result > header span { font-size: 11px; }

@media (min-width: 1181px) {
  .app-shell { grid-template-columns: 274px minmax(0,1fr); }
}
@media (max-width: 1180px) {
  .app-body .tenant-switcher { width: min(30vw,280px); min-width: 0; }
  .app-body .topbar-site-link { display: none; }
  .app-body .profile-chip { padding-inline: 8px; }
  .app-body .profile-chip div { display: none; }
  .app-body .admin-console { grid-template-columns: 1fr; }
  .app-body .module-tabs { top: 82px; display: flex; max-height: none; overflow-x: auto; overflow-y: hidden; }
  .app-body .admin-nav-intro,.app-body .admin-nav-group { display: none; }
  .app-body .module-tabs a { flex: 0 0 210px; }
}
@media (max-width: 760px) {
  .app-body .content { padding: 28px 18px; }
  .app-body .topbar { height: 72px; padding-inline: 14px; }
  .app-body .tenant-switcher { min-width: 0; }
  .app-body .page-heading h1 { font-size: 34px; }
  .app-body .admin-section { padding: 20px 15px; }
  .data-console-root .data-console-layout { height: auto; grid-template-columns: 1fr; }
}

/* Data Studio 1.9.7 · espacio de trabajo tipo SQLyog */
.data-console-root .data-console { min-width: 0; color: #20302a; background: #d7dfdb; }
.data-console-root .data-console-topbar { min-height: 48px; padding: 0 16px; border-bottom: 1px solid #183c5d; color: #fff; background: linear-gradient(180deg,#2f79b4,#276aa0); }
.data-console-root .data-console-brand { gap: 9px; }
.data-console-root .data-console-brand img { width: 34px; height: 34px; object-fit: contain; }
.data-console-root .data-console-brand strong { color: #fff; font-size: 14px; }
.data-console-root .data-console-brand small { color: #d7ebfb; font-size: 9px; }
.data-console-root .data-console-header-actions { gap: 12px; }
.data-console-root .data-console-connection { min-width: 230px; color: #eaf7ff; background: rgba(7,43,70,.3); }
.data-console-root .data-console-connection small { color: #b9dcf4; }
.data-console-root .data-console-connection strong { color: #fff; }
.data-console-root .data-console-connection code { border-color: rgba(255,255,255,.3); color: #fff; }
.data-console-root .data-console-exit { color: #fff; }
.data-console-root .data-console-exit:hover { background: rgba(255,255,255,.14); }

.data-console-root .data-menu-bar { min-height: 31px; display: flex; align-items: center; gap: 1px; padding: 0 8px; border-bottom: 1px solid #b7c0c5; background: #f5f6f7; }
.data-console-root .data-menu-bar a { padding: 7px 10px; color: #263b4b; border-radius: 2px; font-size: 11px; text-decoration: none; }
.data-console-root .data-menu-bar a:hover { color: #fff; background: #347fb7; }
.data-console-root .data-desktop-toolbar { min-height: 56px; display: flex; align-items: center; gap: 4px; padding: 6px 11px; border-bottom: 1px solid #aab6bc; background: #fff; }
.data-console-root .data-desktop-toolbar > a { min-width: 58px; min-height: 42px; display: grid; grid-template-rows: 22px auto; place-items: center; padding: 4px 8px; border: 1px solid transparent; border-radius: 3px; color: #365062; font-size: 9px; font-weight: 700; text-decoration: none; }
.data-console-root .data-desktop-toolbar > a:hover,.data-console-root .data-desktop-toolbar > a.primary { border-color: #9dc6e3; background: #e8f4fb; }
.data-console-root .data-desktop-toolbar > a.primary { color: #477c15; }
.data-console-root .data-desktop-toolbar svg { width: 20px; height: 20px; }
.data-console-root .toolbar-separator { width: 1px; height: 37px; margin: 0 5px; background: #d3dade; }
.data-console-root .toolbar-context { min-width: 230px; display: grid; gap: 2px; margin-left: auto; padding: 5px 10px; border-left: 1px solid #d6dde1; }
.data-console-root .toolbar-context small { color: #7d8a92; font-size: 8px; font-weight: 850; letter-spacing: .7px; }
.data-console-root .toolbar-context strong { color: #2b4659; font-size: 10px; }

.data-console-root .data-console-layout { height: calc(100vh - 135px); grid-template-columns: 285px minmax(0,1fr); }
.data-console-root .data-object-browser { border-right: 1px solid #87959d; color: #263b49; background: #eef2f4; }
.data-console-root .object-browser-title { min-height: 35px; padding: 0 10px; border-bottom: 1px solid #b5c0c6; color: #fff; background: #347fb7; }
.data-console-root .object-browser-title span { font-size: 9px; letter-spacing: .6px; }
.data-console-root .object-browser-title a { color: #fff; }
.data-console-root .data-object-filter { height: 32px; display: flex; align-items: center; gap: 7px; margin: 7px; padding: 0 8px; border: 1px solid #9dabb3; border-radius: 2px; background: #fff; }
.data-console-root .data-object-filter svg { width: 14px; height: 14px; color: #5e7380; }
.data-console-root .data-object-filter input { width: 100%; height: 28px; min-height: 0; padding: 0; border: 0; outline: 0; color: #2b3c47; background: transparent; font-size: 11px; }
.data-console-root .data-server-node { min-height: 36px; color: #203b4f; background: #dfe8ed; }
.data-console-root .data-server-node:hover,.data-console-root .data-tree-label:hover { background: #d4e8f6; }
.data-console-root .database-cylinder.small { border-color: #4b98ca; }
.data-console-root .data-tree-label { min-height: 32px; color: #354d5c; background: transparent; }
.data-console-root .data-tree-label.secondary { padding-left: 21px; }
.data-console-root .data-tree-label svg { color: #4c8bb3; }
.data-console-root .data-tree-label b { color: #6c7c86; background: #dbe3e7; }
.data-console-root .data-collection-list a { min-height: 31px; grid-template-columns: 11px 19px minmax(0,1fr) auto; gap: 6px; padding: 4px 10px 4px 31px; color: #324a5a; font-size: 10px; }
.data-console-root .data-collection-list a:hover { color: #123d5a; background: #dbeaf4; }
.data-console-root .data-collection-list a.active { color: #fff; background: #347fb7; box-shadow: inset 3px 0 #aefd32; }
.data-console-root .data-collection-list a.active b { color: #fff; background: rgba(255,255,255,.16); }
.data-console-root .tree-connector { border-color: #9dabb3; }
.data-console-root .table-grid-icon { color: #619f25; }
.data-console-root .data-tree-empty { padding: 5px 12px 8px 60px; color: #86939b; font-size: 9px; font-style: italic; }

.data-console-root .data-console-main { min-width: 0; overflow: auto; color: #20302a; background: #eef2f0; }
.data-console-root .data-tabs { height: 38px; align-items: stretch; gap: 1px; padding: 0 8px; border-bottom: 3px solid #347fb7; background: #d3dde2; }
.data-console-root .data-tabs a { height: 35px; min-width: 128px; justify-content: center; padding: 0 14px; border: 1px solid transparent; border-bottom: 0; border-radius: 3px 3px 0 0; color: #355061; font-size: 10px; }
.data-console-root .data-tabs a:hover { background: #eaf3f8; }
.data-console-root .data-tabs a.active { color: #174466; border-color: #8eabbc; background: #fff; box-shadow: inset 0 3px #abef35; }
.data-console-root .data-tabs a.query-tab::after { content: none; }

.data-console-root .data-sql-editor-pane { border-bottom: 1px solid #8fa1aa; background: #fff; }
.data-console-root .data-sql-editor-head { min-height: 31px; display: flex; align-items: center; justify-content: space-between; padding: 0 12px; border-bottom: 1px solid #ced7db; background: #edf2f5; }
.data-console-root .data-sql-editor-head > div { display: flex; align-items: baseline; gap: 10px; }
.data-console-root .data-sql-editor-head strong { color: #174466; font-size: 10px; }
.data-console-root .data-sql-editor-head span,.data-console-root .data-sql-editor-head small { color: #71818a; font-size: 9px; }
.data-console-root .data-query-editor-inline { margin: 0; border: 0; border-radius: 0; background: #fff; box-shadow: none; }
.data-console-root .sql-editor-surface { min-height: 145px; display: grid; grid-template-columns: 38px minmax(0,1fr); background: #fff; }
.data-console-root .sql-line-numbers { padding: 10px 9px; border-right: 1px solid #e2e6e8; color: #98a3a9; background: #f6f7f8; text-align: right; font: 11px/1.65 ui-monospace,Consolas,monospace; user-select: none; }
.data-console-root .data-query-editor-inline textarea { min-height: 145px; resize: vertical; padding: 10px 12px; color: #234b88; background: #fff; caret-color: #111; font: 12px/1.65 ui-monospace,Consolas,monospace; }
.data-console-root .data-query-editor-inline > footer { min-height: 43px; padding: 5px 9px; border-top: 1px solid #d6dde1; background: #f5f7f8; }
.data-console-root .data-query-editor-inline > footer > div button { color: #425967; border-color: #abb8bf; background: #fff; }
.data-console-root .data-query-editor-inline > footer .button { min-height: 32px; min-width: 134px; border-radius: 2px; background: #5c9f27; }

.data-console-root .data-toolbar { min-height: 50px; border-bottom-color: #a9b5bb; background: #f6f8f8; }
.data-console-root .data-tool { border-radius: 2px; }
.data-console-root .data-filter { border-radius: 2px; }
.data-console-root .data-query-strip { min-height: 32px; color: #324f61; border-bottom-color: #bcc6cb; background: #fff; }
.data-console-root .data-query-strip span { color: #397eb1; }
.data-console-root .data-result-panel,.data-console-root .data-workspace-panel,.data-console-root .data-query-workspace { margin: 10px; border-radius: 3px; box-shadow: none; }
.data-console-root .data-result-heading { min-height: 38px; background: #eef3f5; }
.data-console-root .data-grid-wrap { max-height: calc(100vh - 510px); min-height: 180px; background: #fff; }
.data-console-root .data-grid { font-size: 11px; }
.data-console-root .data-grid th { padding: 8px 9px; color: #27455a; border-color: #aebac0; background: #dfe7eb; }
.data-console-root .data-grid td { padding: 7px 9px; border-color: #ccd4d8; }
.data-console-root .data-grid tbody tr:nth-child(even) { background: #f7f9fa; }
.data-console-root .data-grid tbody tr:hover { background: #e7f2f9; }
.data-console-root .data-statusbar { color: #4f6571; border-top-color: #a9b6bc; background: #edf2f4; }
.data-console-root .data-query-results-pane { margin-top: 10px; }
.data-console-root .data-query-results-pane .query-help { margin-top: 12px; }

@media (max-width: 1050px) {
  .data-console-root .data-console-layout { grid-template-columns: 235px minmax(0,1fr); }
  .data-console-root .toolbar-context { display: none; }
}
@media (max-width: 760px) {
  .data-console-root .data-console-topbar { min-height: 54px; }
  .data-console-root .data-menu-bar,.data-console-root .data-desktop-toolbar { overflow-x: auto; }
  .data-console-root .data-menu-bar a,.data-console-root .data-desktop-toolbar > a { flex: 0 0 auto; }
  .data-console-root .data-console-layout { height: auto; }
  .data-console-root .data-object-browser { max-height: 330px; }
  .data-console-root .sql-editor-surface { min-height: 125px; }
  .data-console-root .data-query-editor-inline textarea { min-height: 125px; }
  .data-console-root .data-grid-wrap { max-height: 52vh; }
}

/* Explorador de objetos · columnas y sangrías consistentes */
.data-console-root .data-server-node {
  display: grid;
  grid-template-columns: 18px 22px minmax(0,1fr);
  align-items: center;
  column-gap: 8px;
  box-sizing: border-box;
  padding: 9px 14px 9px 18px;
}
.data-console-root .data-tree-label,
.data-console-root .data-tree-label.secondary {
  display: grid;
  grid-template-columns: 18px 18px minmax(0,1fr) 28px;
  align-items: center;
  column-gap: 8px;
  box-sizing: border-box;
  min-height: 35px;
  padding: 7px 14px 7px 27px;
}
.data-console-root .data-server-node .tree-toggle,
.data-console-root .data-tree-label .tree-toggle {
  width: 18px;
  justify-self: center;
}
.data-console-root .data-tree-label svg {
  width: 16px;
  height: 16px;
  justify-self: center;
}
.data-console-root .data-tree-label strong,
.data-console-root .data-server-node strong {
  min-width: 0;
  line-height: 1.2;
  white-space: nowrap;
}
.data-console-root .data-tree-label b {
  width: 28px;
  min-width: 28px;
  box-sizing: border-box;
  justify-self: end;
  margin-left: 0;
}
.data-console-root .data-tree-empty {
  padding-left: 79px;
}

/* Radar de dispositivos · exploración dentro de modal */
.device-discovery-launcher { grid-template-columns: 1fr; padding: 28px 32px; }
.device-discovery-launcher .discovery-copy { max-width: 880px; }
.device-discovery-launcher .discovery-copy p { max-width: 780px; }
.device-scan-dialog { width: min(1040px,calc(100vw - 32px)); max-height: calc(100vh - 32px); overflow: auto; padding: 0; border: 0; border-radius: 20px; color: var(--ink); background: #f7faf7; box-shadow: 0 34px 100px rgba(5,20,13,.34); }
.device-scan-dialog::backdrop { background: rgba(5,18,12,.72); backdrop-filter: blur(7px); }
.device-scan-shell > header { min-height: 86px; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 18px 24px; border-bottom: 1px solid #dce5df; background: #fff; }
.device-scan-shell > header > div { display: flex; align-items: center; gap: 14px; }
.device-scan-shell > header > div > span { width: 46px; height: 46px; display: grid; place-items: center; border-radius: 12px; color: #587f1c; background: var(--lime-soft); }
.device-scan-shell > header svg { width: 21px; height: 21px; }
.device-scan-shell > header small { display: block; margin-bottom: 3px; color: #74942d; font-size: 9px; font-weight: 900; letter-spacing: .8px; text-transform: uppercase; }
.device-scan-shell > header h2 { margin: 0; font-size: 24px; letter-spacing: -.45px; }
.device-scan-shell > header > button { width: 40px; height: 40px; border: 0; border-radius: 10px; color: #66756d; background: #edf2ee; font-size: 24px; cursor: pointer; }
.device-scan-stage { display: grid; grid-template-columns: 330px minmax(0,1fr); gap: 34px; align-items: center; padding: 30px 34px; color: #fff; background: linear-gradient(135deg,#081a13,#102b21); }
.device-scan-visual { display: grid; justify-items: center; gap: 16px; }
.device-scan-dialog .discovery-radar { width: 235px; height: 235px; border-color: rgba(177,244,61,.38); box-shadow: inset 0 0 55px rgba(0,0,0,.44),0 0 45px rgba(139,206,32,.11); }
.device-scan-dialog .discovery-radar > b { width: 46px; height: 46px; box-shadow: 0 0 0 11px rgba(183,243,75,.1); }
.device-scan-dialog .discovery-radar > b svg { width: 21px; }
.device-scan-dialog .discovery-radar > i:nth-of-type(1) { left: 48px; top: 69px; }
.device-scan-dialog .discovery-radar > i:nth-of-type(2) { right: 52px; bottom: 55px; }
.device-scan-dialog .discovery-radar > i:nth-of-type(3) { right: 39px; top: 83px; }
.scan-network-chip { display: inline-flex; align-items: center; gap: 8px; padding: 8px 11px; border: 1px solid rgba(183,243,75,.2); border-radius: 999px; color: #c6d4cd; background: rgba(255,255,255,.04); font-size: 9px; font-weight: 750; }
.scan-network-chip i { width: 8px; height: 8px; border-radius: 50%; background: #a9ef35; box-shadow: 0 0 0 5px rgba(169,239,53,.12); }
.device-scan-progress { min-width: 0; }
.device-scan-progress .kicker { color: #a9ef35; }
.device-scan-progress h3 { margin: 8px 0 9px; color: #fff; font-size: clamp(25px,3vw,37px); letter-spacing: -1px; }
.device-scan-progress > p { max-width: 570px; margin: 0; color: #afc0b7; font-size: 12px; line-height: 1.65; }
.device-scan-counter { display: flex; align-items: center; gap: 16px; margin: 27px 0 17px; }
.device-scan-counter strong { min-width: 85px; color: var(--lime); font-size: 70px; line-height: .86; letter-spacing: -4px; }
.device-scan-counter span { color: #d2ded7; font-size: 11px; font-weight: 800; line-height: 1.35; text-transform: uppercase; }
.device-scan-progressbar { height: 7px; overflow: hidden; border-radius: 999px; background: rgba(255,255,255,.1); }
.device-scan-progressbar span { width: 8%; height: 100%; display: block; border-radius: inherit; background: linear-gradient(90deg,#71a522,var(--lime)); box-shadow: 0 0 16px rgba(183,243,75,.3); transition: width .32s ease; }
.device-scan-progress > small { display: block; min-height: 18px; margin-top: 10px; color: #83998d; font-size: 9px; }
.device-scan-results { padding: 25px 28px 10px; background: #f7faf7; }
.device-scan-results[hidden] { display: none; }
.device-scan-results > div:first-child { display: grid; gap: 3px; margin-bottom: 16px; }
.device-scan-results h3 { margin: 1px 0; font-size: 23px; }
.device-scan-results p { margin: 0; color: var(--muted); font-size: 10px; }
.device-scan-result-grid { max-height: 330px; display: grid; grid-template-columns: repeat(auto-fit,minmax(185px,1fr)); gap: 10px; overflow: auto; padding: 2px 3px 8px; }
.scan-result-card { min-width: 0; padding: 15px; border: 1px solid #d7e0da; border-radius: 12px; background: #fff; box-shadow: 0 7px 22px rgba(15,39,27,.04); animation: scan-result-in .26s ease both; }
@keyframes scan-result-in { from { opacity: 0; transform: translateY(8px); } }
.scan-result-card.registered { background: #f0f5ec; }
.scan-result-card-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.scan-result-card-head > span { width: 38px; height: 38px; display: grid; place-items: center; border-radius: 9px; color: #638b20; background: var(--lime-soft); }
.scan-result-card-head svg { width: 18px; height: 18px; }
.scan-result-card-head b { color: #648727; font-size: 10px; }
.scan-result-card > small { display: block; margin-top: 13px; color: #77867e; font-size: 8px; text-transform: uppercase; }
.scan-result-card h4 { margin: 5px 0 9px; font-size: 13px; }
.scan-result-card code { display: inline-flex; padding: 5px 7px; border-radius: 6px; color: #426050; background: #edf2ef; font-size: 9px; }
.scan-result-card p { min-height: 27px; margin: 9px 0 12px; color: var(--muted); font-size: 9px; }
.scan-result-card > .button { width: 100%; min-height: 37px; }
.device-scan-error { margin: 16px 28px 4px; padding: 12px 14px; border: 1px solid #edc4be; border-radius: 9px; color: #a03d31; background: #fff0ee; font-size: 10px; }
.device-scan-error[hidden] { display: none; }
.device-scan-shell > footer { display: flex; justify-content: flex-end; gap: 9px; padding: 16px 24px; border-top: 1px solid #dce4df; background: #fff; }
.device-scan-shell > footer .button { min-height: 43px; }
@media (max-width: 720px) {
  .device-discovery-launcher { padding: 22px 18px; }
  .device-scan-dialog { width: calc(100vw - 18px); max-height: calc(100vh - 18px); border-radius: 15px; }
  .device-scan-shell > header { min-height: 72px; padding: 13px 15px; }
  .device-scan-shell > header > div > span { width: 39px; height: 39px; }
  .device-scan-shell > header h2 { font-size: 19px; }
  .device-scan-stage { grid-template-columns: 1fr; gap: 22px; padding: 24px 18px; text-align: center; }
  .device-scan-dialog .discovery-radar { width: 180px; height: 180px; }
  .device-scan-progress > p { margin-inline: auto; }
  .device-scan-counter { justify-content: center; margin-top: 19px; }
  .device-scan-counter strong { min-width: 70px; font-size: 58px; }
  .device-scan-results { padding: 20px 15px 8px; }
  .device-scan-result-grid { grid-template-columns: 1fr; max-height: none; }
  .device-scan-shell > footer { position: sticky; bottom: 0; padding: 12px 15px; }
  .device-scan-shell > footer .button { flex: 1; }
}
@media (prefers-reduced-motion: reduce) { .scan-result-card { animation: none; } }
