/* Portal visibility is controlled with the HTML hidden attribute.
   Keep this explicit because component display rules such as .portal-form { display:grid }
   must never make a hidden authentication panel visible. */
.portal-shell [hidden] { display: none !important; }

.portal-shell { min-height: calc(100vh - 72px); }
.portal-intro { padding: 74px 0 26px; }
.portal-intro-grid { display: grid; grid-template-columns: 1.2fr .8fr; gap: 34px; align-items: end; }
.portal-intro h1 { font-size: clamp(2.8rem, 6vw, 5.2rem); margin-bottom: 18px; }
.portal-width { max-width: 980px; }
.security-card { display: flex; gap: 18px; align-items: flex-start; padding: 24px; border: 1px solid rgba(97,231,168,.2); border-radius: 22px; background: rgba(97,231,168,.055); }
.security-card p { margin: 5px 0 0; color: var(--muted); }
.security-mark { flex: 0 0 auto; width: 58px; height: 58px; display: grid; place-items: center; border-radius: 16px; background: rgba(97,231,168,.12); color: var(--success); font-weight: 850; letter-spacing: -.03em; }
.portal-alert { margin-bottom: 18px; padding: 14px 16px; border: 1px solid var(--line); border-radius: 14px; background: rgba(139,124,255,.07); color: #dedaff; }
.portal-alert[data-type="success"] { border-color: rgba(97,231,168,.26); background: rgba(97,231,168,.06); color: #bff6d8; }
.portal-alert[data-type="error"] { border-color: rgba(255,120,120,.3); background: rgba(255,90,90,.06); color: #ffc5c5; }
.portal-auth { padding: 0; overflow: hidden; }
.portal-tabs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-bottom: 1px solid var(--line); background: rgba(0,0,0,.12); }
.portal-tab { appearance: none; border: 0; border-right: 1px solid var(--line); background: transparent; color: var(--muted); padding: 15px 12px; cursor: pointer; font-weight: 760; min-width: 0; }
.portal-tab:last-child { border-right: 0; }
.portal-tab.is-active { color: var(--text); background: rgba(139,124,255,.09); box-shadow: inset 0 -2px 0 #9b90ff; }
.portal-form { display: grid; gap: 17px; padding: 32px; }
.portal-form.compact { padding: 22px 0 0; }
.portal-form label { display: grid; gap: 7px; font-size: .9rem; font-weight: 720; color: #dce2eb; }
.portal-form input, .portal-form textarea, .portal-form select { width: 100%; border: 1px solid var(--line); border-radius: 12px; padding: 13px 14px; background: rgba(0,0,0,.25); color: var(--text); outline: none; }
.portal-form textarea { resize: vertical; }
.portal-form input:focus, .portal-form textarea:focus, .portal-form select:focus { border-color: rgba(139,124,255,.65); box-shadow: 0 0 0 3px rgba(139,124,255,.11); }
.portal-form button:disabled, .portal-tab:disabled { opacity: .5; cursor: not-allowed; }
.form-hint { margin: -4px 0 0; color: var(--muted); font-size: .86rem; }
.portal-mfa, .recovery-card { margin-inline: auto; }
.portal-secret-row, .portal-key-row { display: flex; align-items: center; justify-content: space-between; gap: 18px; flex-wrap: wrap; padding: 18px; border: 1px solid var(--line); border-radius: 15px; background: rgba(0,0,0,.2); }
.portal-secret-row code, .portal-key { display: block; margin-top: 5px; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; color: #d7d1ff; overflow-wrap: anywhere; }
.field-label { display: block; color: var(--muted); font-size: .76rem; text-transform: uppercase; letter-spacing: .08em; font-weight: 760; }
.portal-details { margin-top: 16px; border: 1px solid var(--line); border-radius: 14px; padding: 13px 16px; background: rgba(255,255,255,.025); }
.portal-details summary { cursor: pointer; font-weight: 700; }
.long-code { display: block; margin: 13px 0; white-space: normal; overflow-wrap: anywhere; color: #c8c1ff; }
.btn-small { min-height: 38px; padding: 0 14px; font-size: .86rem; }
.recovery-card pre { padding: 20px; border-radius: 14px; border: 1px solid var(--line); background: rgba(0,0,0,.28); color: #c8f4e7; font: 700 .95rem/1.8 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; white-space: pre-wrap; }
.portal-dashboard { display: grid; gap: 32px; }
.portal-dashboard-head, .portal-section-head { display: flex; justify-content: space-between; gap: 22px; align-items: end; }
.portal-dashboard-head h2 { margin-bottom: 0; font-size: clamp(1.7rem, 4vw, 2.7rem); }
.portal-section-head p { max-width: 460px; margin: 0; }
.portal-license-list { display: grid; gap: 18px; }
.portal-license-card { display: grid; gap: 20px; }
.portal-license-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
.portal-license-top h3 { margin: 8px 0 0; font-size: 1.7rem; }
.portal-status { display: inline-flex; align-items: center; justify-content: center; padding: 6px 10px; border-radius: 999px; border: 1px solid var(--line); font-size: .76rem; font-weight: 800; text-transform: uppercase; letter-spacing: .07em; }
.portal-status.is-active { color: var(--success); border-color: rgba(97,231,168,.25); background: rgba(97,231,168,.06); }
.portal-status.is-inactive { color: #d3a8a8; border-color: rgba(255,160,160,.18); background: rgba(255,120,120,.04); }
.portal-metrics { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.portal-metric { padding: 14px; border: 1px solid var(--line); border-radius: 13px; background: rgba(255,255,255,.025); }
.portal-metric strong { display: block; margin-top: 3px; }
.portal-subheading { margin: 0; font-size: 1rem; letter-spacing: -.01em; }
.device-list { display: grid; gap: 9px; }
.device-row { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 14px 15px; border: 1px solid var(--line); border-radius: 13px; background: rgba(0,0,0,.18); }
.device-meta { margin-top: 3px; color: var(--muted); font-size: .82rem; overflow-wrap: anywhere; }
.portal-billing-note { border-top: 1px solid var(--line); padding-top: 18px; }
.portal-billing-note strong { display: block; margin-top: 4px; }
.portal-billing-note p { margin-top: 8px; }
.portal-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }

@media (max-width: 860px) {
  .portal-intro-grid, .portal-grid { grid-template-columns: 1fr; }
  .portal-dashboard-head, .portal-section-head { align-items: flex-start; flex-direction: column; }
}

@media (max-width: 620px) {
  .portal-intro { padding-top: 44px; }
  .portal-tabs { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .portal-tab { border-right: 1px solid var(--line); border-bottom: 0; padding: 13px 5px; font-size: .78rem; white-space: nowrap; }
  .portal-tab:last-child { border-right: 0; }
  .portal-form { padding: 24px; }
  .portal-form.compact { padding: 20px 0 0; }
  .portal-metrics { grid-template-columns: 1fr; }
  .device-row { align-items: flex-start; flex-direction: column; }
  .portal-secret-row, .portal-key-row { align-items: flex-start; }
}
