:root{color-scheme:dark}
.cab-shell{min-height:calc(100vh - 72px);padding:54px 0 80px;background:radial-gradient(circle at 80% 10%,rgba(37,99,235,.14),transparent 24%),#050505;color:#fff}
.cab-wrap{width:min(1120px,calc(100% - 36px));margin:0 auto}
.cab-login{max-width:520px;margin:26px auto 0;background:#111;border:1px solid rgba(255,255,255,.1);border-radius:24px;padding:30px}
.cab-head{text-align:center;max-width:720px;margin:0 auto 30px}
.cab-head h1{font-size:clamp(38px,5vw,58px);letter-spacing:-.045em;margin:10px 0 12px}
.cab-head p{color:#aaa;font-size:17px;line-height:1.6}
.cab-field{display:grid;gap:8px;margin:18px 0}
.cab-field label{font-size:14px;color:#ddd;font-weight:700}
.cab-input{width:100%;box-sizing:border-box;border:1px solid rgba(255,255,255,.13);background:#181818;color:#fff;border-radius:12px;padding:14px 15px;font-size:16px;outline:none}
.cab-input:focus{border-color:#4c78ef}
.cab-btn{width:100%;min-height:50px;border:0;border-radius:12px;background:#2563eb;color:#fff;font-weight:800;font-size:16px;cursor:pointer}
.cab-btn:disabled{opacity:.55;cursor:not-allowed}
.cab-btn.secondary{background:#1b1b1b;border:1px solid rgba(255,255,255,.12)}
.cab-note,.cab-status{color:#aaa;font-size:13px;line-height:1.55;margin-top:14px}
.cab-error{color:#ffb3b3}
.cab-dashboard{display:none}
.cab-toolbar{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:26px}
.cab-user{color:#aaa;font-size:14px}
.cab-logout{width:auto;padding:0 18px}
.cab-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.cab-card{background:#111;border:1px solid rgba(255,255,255,.1);border-radius:22px;padding:24px}
.cab-card h2{margin:0 0 16px;font-size:23px}
.cab-list{display:grid;gap:12px}
.cab-item{border:1px solid rgba(255,255,255,.09);background:#151515;border-radius:16px;padding:16px}
.cab-item-top{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}
.cab-license{font-weight:800;font-size:18px}
.cab-meta{color:#aaa;font-size:13px;line-height:1.55;margin-top:8px}
.cab-badge{display:inline-flex;align-items:center;min-height:28px;padding:0 10px;border-radius:999px;background:#1d2a1f;color:#9de3aa;font-size:12px;font-weight:800}
.cab-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.cab-small-btn{border:1px solid rgba(255,255,255,.12);background:#202020;color:#fff;border-radius:10px;padding:10px 13px;font-weight:700;cursor:pointer}
.cab-small-btn:disabled{opacity:.45;cursor:not-allowed}
.cab-empty{color:#888;padding:10px 0}
.cab-hidden{display:none!important}
@media(max-width:760px){.cab-grid{grid-template-columns:1fr}.cab-toolbar{align-items:flex-start;flex-direction:column}}

.cab-head{
  margin-top:12px;
}

.cab-qr-modal{position:fixed;inset:0;z-index:1000;display:none;align-items:center;justify-content:center;padding:20px;background:rgba(0,0,0,.78);backdrop-filter:blur(7px)}
.cab-qr-modal.is-open{display:flex}
.cab-qr-panel{width:min(520px,100%);background:#111;border:1px solid rgba(255,255,255,.12);border-radius:24px;padding:24px;text-align:center;box-shadow:0 24px 80px rgba(0,0,0,.45)}
.cab-qr-panel h3{margin:0 0 8px;font-size:24px}
.cab-qr-image{display:block;width:min(390px,100%);height:auto;margin:20px auto;background:#fff;border-radius:18px;padding:10px;box-sizing:border-box}
.cab-qr-expiry{color:#aaa;font-size:13px;line-height:1.5}
.cab-qr-close{margin-top:18px;width:auto;padding:0 24px}

/* VV Kiosk cabinet — device/license search v1 */
.cab-license-search{margin:14px 0 16px}
.cab-search-label{display:block;margin:0 0 7px;font-size:13px;opacity:.78}
.cab-search-input{width:100%}
.cab-license-item{gap:12px}
.cab-license-main{min-width:0}
.cab-device-name{font-size:16px;font-weight:700;line-height:1.3;overflow-wrap:anywhere}
.cab-license-item .cab-actions{margin-top:10px}
.cab-license-item .cab-qr-btn{width:100%;justify-content:center}
@media (min-width:720px){
  .cab-license-item .cab-qr-btn{width:auto;min-width:150px}
}

/* VV Kiosk QR guided instructions v1 */
.cab-qr-panel-guided{
  width:min(94vw,620px);
  max-height:92vh;
  overflow:auto;
}

.cab-qr-guide,
.cab-qr-help{
  text-align:left;
  margin:14px 0;
  padding:14px 16px;
  border:1px solid rgba(255,255,255,.09);
  border-radius:14px;
  background:rgba(255,255,255,.035);
}

.cab-qr-guide h4,
.cab-qr-help h4{
  margin:0 0 10px;
  font-size:15px;
}

.cab-qr-guide ol,
.cab-qr-help ul{
  margin:0;
  padding-left:21px;
}

.cab-qr-guide li,
.cab-qr-help li{
  margin:7px 0;
  line-height:1.45;
  color:#d7d7d7;
  font-size:14px;
}

.cab-qr-important{
  margin-top:12px;
  padding:10px 12px;
  border-radius:10px;
  background:rgba(255,255,255,.065);
  font-weight:700;
  line-height:1.4;
}

.cab-qr-help summary{
  cursor:pointer;
  font-weight:700;
  color:#fff;
}

.cab-qr-help[open] summary{
  margin-bottom:12px;
}

.cab-qr-panel-guided .cab-qr-image{
  display:block;
  margin:18px auto 8px;
  max-width:min(76vw,360px);
  width:100%;
  height:auto;
}

.cab-qr-panel-guided .cab-qr-close{
  margin-top:14px;
}

@media(max-width:560px){
  .cab-qr-panel-guided{
    width:96vw;
    padding:18px;
  }

  .cab-qr-guide,
  .cab-qr-help{
    padding:12px 13px;
  }
}

/* VV Kiosk Cabinet Clarity V2 */
.cab-license-row{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
.cab-latest-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:4px 9px;
  border-radius:999px;
  border:1px solid rgba(91,220,130,.28);
  background:rgba(91,220,130,.13);
  color:#8bf0a8;
  font-size:11px;
  line-height:1;
  font-weight:800;
  letter-spacing:.035em;
}
.cab-item-latest{
  border-color:rgba(91,220,130,.24);
  box-shadow:0 0 0 1px rgba(91,220,130,.04) inset;
}

/* VV CABINET TOPBAR ACTIONS V7 START */
.top .top-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
}

.cab-top-actions{
  margin-left:auto;
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:10px;
  flex-wrap:wrap;
}

.cab-top-btn{
  min-height:42px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:10px 16px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.14);
  font:inherit;
  font-size:14px;
  font-weight:750;
  line-height:1;
  text-decoration:none;
  cursor:pointer;
  white-space:nowrap;
  transition:transform .15s ease,background .15s ease,border-color .15s ease;
}

.cab-top-btn:hover{
  transform:translateY(-1px);
}

.cab-top-buy{
  background:#fff;
  color:#080808;
  border-color:#fff;
}

.cab-top-buy:hover{
  background:#ececec;
}

.cab-top-logout{
  background:#1b1b1b;
  color:#fff;
}

.cab-top-logout:hover{
  background:#252525;
  border-color:rgba(255,255,255,.24);
}

.cab-toolbar{
  justify-content:flex-start;
}

@media (max-width:680px){
  .top .top-inner{
    gap:10px;
  }

  .cab-top-actions{
    gap:7px;
  }

  .cab-top-btn{
    min-height:38px;
    padding:9px 11px;
    font-size:12px;
  }

  .brand span{
    display:none;
  }
}
/* VV CABINET TOPBAR ACTIONS V7 END */

/* VV Kiosk Cabinet — compact license cards + editable device name V3 */
.cab-license-compact{
  padding:14px 15px;
}

.cab-license-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
}

.cab-license-identity{
  min-width:0;
  flex:1;
}

.cab-license-compact .cab-license{
  font-size:17px;
  line-height:1.25;
  overflow-wrap:anywhere;
}

.cab-device-hardware{
  margin-top:4px;
  color:#8f8f8f;
  font-size:12px;
  line-height:1.35;
}

.cab-license-details{
  display:flex;
  flex-wrap:wrap;
  gap:5px 14px;
  margin-top:11px;
  color:#969696;
  font-size:12px;
  line-height:1.4;
}

.cab-license-details strong{
  color:#cfcfcf;
  font-weight:700;
}

.cab-license-actions{
  display:flex;
  justify-content:flex-end;
  gap:8px;
  flex-wrap:wrap;
  margin-top:12px;
}

.cab-license-actions .cab-small-btn{
  width:auto;
  min-height:0;
  padding:8px 11px;
  font-size:12px;
  line-height:1.2;
}

.cab-license-actions .cab-qr-btn{
  width:auto;
  min-width:0;
}

.cab-device-edit{
  margin-top:12px;
  padding-top:12px;
  border-top:1px solid rgba(255,255,255,.08);
}

.cab-device-edit-label{
  display:block;
  margin-bottom:6px;
  color:#aaa;
  font-size:12px;
}

.cab-device-edit-row{
  display:flex;
  align-items:center;
  gap:8px;
}

.cab-device-edit-row .cab-device-name-input{
  min-width:0;
  flex:1;
  padding:9px 11px;
  border-radius:9px;
  font-size:14px;
}

.cab-device-edit-row .cab-small-btn{
  flex:0 0 auto;
  padding:9px 11px;
  font-size:12px;
}

.cab-device-edit-status{
  margin-top:7px;
  color:#aaa;
  font-size:12px;
}

.cab-device-edit-status:empty{
  display:none;
}

.cab-device-edit-status.is-error{
  color:#ffb3b3;
}

@media(max-width:560px){
  .cab-license-compact{
    padding:13px;
  }

  .cab-license-actions{
    justify-content:stretch;
  }

  .cab-license-actions .cab-small-btn{
    flex:1 1 auto;
  }

  .cab-device-edit-row{
    flex-wrap:wrap;
  }

  .cab-device-edit-row .cab-device-name-input{
    flex:1 0 100%;
  }
}
