/* Plan / entitlement presentation -------------------------------------------------
   Locked controls must never change the geometry of the control they decorate.
   The old inline badge could be inserted inside very small toolbar buttons and
   force the plan name (for example "Basic") into a 38 px icon button. */
.plan-locked{
  position:relative!important;
  opacity:.72!important;
  filter:saturate(.72);
  cursor:pointer!important;
}
.plan-locked::after{
  content:"";
  position:absolute;
  inset:0;
  border:1px dashed rgba(30,42,120,.30);
  border-radius:inherit;
  pointer-events:none;
}

/* Keep entitlement information as an overlay instead of part of the control's
   normal flex/grid flow. This prevents resizing, wrapping and icon displacement. */
.plan-lock-badge{
  position:absolute;
  top:-7px;
  right:-7px;
  z-index:6;
  margin:0!important;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:4px;
  padding:3px 7px;
  border:2px solid #fff;
  border-radius:999px;
  background:#eef1fb;
  color:#1e2a78;
  box-shadow:0 2px 7px rgba(30,42,120,.14);
  font-size:.56rem;
  font-weight:800;
  line-height:1;
  white-space:nowrap;
  pointer-events:none;
  box-sizing:border-box;
}

/* Compact toolbar buttons use a lock dot only. The full plan name remains
   available through the feature's title/upgrade dialog but no longer overlaps
   neighbouring buttons. */
.toolbar .tbtn.plan-locked{
  overflow:visible!important;
}
.toolbar .tbtn.plan-locked .plan-lock-badge{
  top:-5px;
  right:-5px;
  width:17px;
  height:17px;
  min-width:17px;
  padding:0;
  gap:0;
  border-radius:50%;
  font-size:0;
}
.toolbar .tbtn.plan-locked .plan-lock-badge i,
.toolbar .tbtn.plan-locked .plan-lock-badge svg{
  display:block;
  margin:0!important;
  width:auto;
  height:auto;
  font-size:.47rem;
}

/* Upgrade dialog: pin it explicitly to the viewport centre. This avoids
   inherited/previous positioning rules placing the access popup off-centre. */
.wifi-plan-upgrade-dialog{
  position:fixed;
  inset:0;
  margin:auto;
  border:0;
  padding:0;
  background:transparent;
  max-width:none;
  max-height:none;
}
.wifi-plan-upgrade-dialog::backdrop{background:rgba(15,23,42,.48);backdrop-filter:blur(3px)}
.wifi-plan-upgrade-card{width:min(520px,calc(100vw - 28px));max-height:calc(100dvh - 28px);overflow:auto;background:#fff;border-radius:18px;box-shadow:0 24px 70px rgba(15,23,42,.28);color:#172033}
.wifi-plan-upgrade-head{display:grid;grid-template-columns:44px minmax(0,1fr) 34px;gap:12px;align-items:center;padding:20px 22px;border-bottom:1px solid #e7ebf2;background:linear-gradient(135deg,#f8faff,#fff)}
.wifi-plan-upgrade-head h2{font-size:1.05rem;margin:0}.wifi-plan-upgrade-head p{font-size:.75rem;color:#6b778c;margin:4px 0 0;line-height:1.4}
.wifi-plan-upgrade-icon{width:44px;height:44px;border-radius:13px;display:flex;align-items:center;justify-content:center;background:#eef1fb;color:#1e2a78}
.wifi-plan-upgrade-head button{border:0;background:#f2f4f8;width:34px;height:34px;border-radius:9px;color:#566176;cursor:pointer}
.wifi-plan-upgrade-body{padding:20px 22px}.wifi-plan-upgrade-compare{display:grid;grid-template-columns:1fr 32px 1fr;align-items:center;gap:8px;margin-bottom:16px}
.wifi-plan-upgrade-compare>div{border:1px solid #e4e8f0;border-radius:12px;padding:11px 12px}.wifi-plan-upgrade-compare span{display:block;font-size:.65rem;color:#7c8799}.wifi-plan-upgrade-compare strong{display:block;margin-top:2px;color:#1e2a78}.wifi-plan-upgrade-compare>i{text-align:center;color:#9aa3b3}
.wifi-plan-upgrade-body>p{font-size:.79rem;color:#596579;line-height:1.55}.wifi-plan-upgrade-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:18px}.wifi-plan-upgrade-actions button{border:0;border-radius:10px;padding:10px 14px;font-weight:800;cursor:pointer}.wifi-plan-upgrade-actions .secondary{background:#eef1f6;color:#334155}.wifi-plan-upgrade-actions .primary{background:#1e2a78;color:#fff}
.wifi-plan-upgrade-message{min-height:18px;margin-top:10px;font-size:.72rem;color:#64748b}.wifi-plan-upgrade-message.success{color:#17804f}.wifi-plan-upgrade-message.error{color:#bd2c2c}
@media(max-width:560px){.wifi-plan-upgrade-actions{flex-direction:column}.wifi-plan-upgrade-actions button{width:100%}.wifi-plan-upgrade-card{width:calc(100vw - 16px);max-height:calc(100dvh - 16px)}}

/* Locked engineering rows shown inside the free WiFi point analysis. */
.analysis-plan-lock{display:inline-flex;align-items:center;gap:7px;border:1px solid #cbd5e1;background:#f8fafc;color:#334155;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:700;cursor:pointer}
.analysis-plan-lock:hover{border-color:#2b74b8;background:#eef6ff;color:#155b97}
.analysis-locked-section{padding:12px;display:flex;justify-content:center;background:linear-gradient(145deg,#f8fafc,#eef4fa);border:1px dashed #cbd5e1;border-radius:10px}
.wifi-plan-inherits{font-weight:700;color:#285d8f}

/* Runtime service lifecycle -----------------------------------------------------
   These states sit above the commercial plan entitlement. They never change the
   user's plan; they only describe staged Beta rollout or temporary availability. */
.service-maintenance,
.service-disabled,
.service-beta,
.service-beta-limited{
  position:relative!important;
  overflow:visible!important;
}
.service-maintenance,
.service-disabled,
.service-beta-limited{
  cursor:pointer!important;
}
.service-maintenance{opacity:.82!important;filter:saturate(.62)}
.service-disabled{opacity:.66!important;filter:saturate(.45)}
.service-beta-limited{opacity:.78!important;filter:saturate(.72)}
.service-beta::after,
.service-maintenance::after,
.service-disabled::after,
.service-beta-limited::after{
  content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;
  pointer-events:none;
  box-sizing:border-box;
}
.service-beta::after{border:1px solid rgba(83,68,170,.26)}
.service-maintenance::after{border:1px dashed rgba(180,105,0,.48)}
.service-disabled::after{border:1px dashed rgba(100,116,139,.42)}
.service-beta-limited::after{border:1px dashed rgba(83,68,170,.36)}

.service-state-badge{
  position:absolute;
  top:-7px;
  right:-7px;
  z-index:7;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:4px;
  min-height:19px;
  padding:3px 7px;
  margin:0!important;
  border:2px solid #fff;
  border-radius:999px;
  box-shadow:0 2px 8px rgba(15,23,42,.16);
  font-size:.54rem;
  font-weight:850;
  letter-spacing:.025em;
  line-height:1;
  white-space:nowrap;
  pointer-events:none;
  box-sizing:border-box;
}
.service-state-badge-beta{background:#ede9fe;color:#5b21b6}
.service-state-badge-beta-limited{background:#f3e8ff;color:#6b21a8}
.service-state-badge-maintenance{background:#fff7df;color:#9a5a00}
.service-state-badge-disabled{background:#eef2f6;color:#475569}

.toolbar .tbtn .service-state-badge{
  top:-5px;
  right:-5px;
  width:18px;
  height:18px;
  min-width:18px;
  min-height:18px;
  padding:0;
  gap:0;
  border-radius:50%;
  font-size:0;
}
.toolbar .tbtn .service-state-badge i{font-size:.48rem}

.wifi-service-availability-card .wifi-service-state-icon{background:#fff7df;color:#9a5a00}
.wifi-service-availability-dialog[data-service-state="beta"] .wifi-service-state-icon{background:#ede9fe;color:#5b21b6}
.wifi-service-availability-dialog[data-service-state="disabled"] .wifi-service-state-icon{background:#eef2f6;color:#475569}
.wifi-service-status-callout{
  display:grid;
  grid-template-columns:30px minmax(0,1fr);
  align-items:start;
  gap:10px;
  padding:13px 14px;
  border:1px solid #ead8a7;
  border-radius:12px;
  background:#fffaf0;
  color:#704600;
}
.wifi-service-availability-dialog[data-service-state="beta"] .wifi-service-status-callout{border-color:#ddd3ff;background:#faf8ff;color:#51309a}
.wifi-service-availability-dialog[data-service-state="disabled"] .wifi-service-status-callout{border-color:#dbe2ea;background:#f8fafc;color:#475569}
.wifi-service-status-callout>i{margin-top:2px;text-align:center}
.wifi-service-status-callout p{margin:0;font-size:.8rem;font-weight:750;line-height:1.45}
.wifi-service-availability-card .wifi-plan-upgrade-body>p{margin-top:14px}
.service-rollout-limited,.service-early-access{position:relative!important;overflow:visible!important}.service-rollout-limited{opacity:.8!important;filter:saturate(.76);cursor:pointer!important}.service-rollout-limited::after,.service-early-access::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-sizing:border-box}.service-rollout-limited::after{border:1px dashed rgba(30,95,160,.38)}.service-early-access::after{border:1px solid rgba(30,95,160,.25)}.service-state-badge-rollout-limited{background:#eaf3ff;color:#155b97}.service-state-badge-early-access{background:#e8f5ff;color:#0f5f8d}.wifi-service-availability-dialog[data-service-state="rollout-limited"] .wifi-service-state-icon,.wifi-service-availability-dialog[data-service-state="early-access"] .wifi-service-state-icon{background:#eaf3ff;color:#155b97}.wifi-service-availability-dialog[data-service-state="rollout-limited"] .wifi-service-status-callout,.wifi-service-availability-dialog[data-service-state="early-access"] .wifi-service-status-callout{border-color:#cfe2f6;background:#f4f9ff;color:#155b97}
