/* Portal layout only. All appearance and interaction primitives live in AppKit. */
.portal-main { max-width: 1120px; margin: auto; padding: var(--space-8) var(--space-6); }
.portal-heading { display: flex; justify-content: space-between; align-items: flex-start; flex-wrap: wrap; gap: var(--space-4); margin-block: var(--space-8); }
.portal-heading h1 { margin: 0; }
.portal-heading p { margin: var(--space-2) 0 0; color: var(--muted); }
.preview-note { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3); padding: var(--space-3) var(--space-4); border: 1px solid var(--line); border-radius: var(--control-radius); }
.preview-note p { margin: 0; color: var(--muted); }
.preview-picker { display: flex; flex-wrap: wrap; align-items: end; gap: var(--space-2); }
.device-list { display: grid; gap: var(--space-3); }
.device-row { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr) auto; gap: var(--space-4); align-items: center; }
.device-row h2 { margin: 0 0 var(--space-2); font-size: 18px; }
.device-row p { margin: 0; color: var(--muted); }
.device-row a { text-decoration: none; }
.portal-main .kit-empty { padding: clamp(24px, 5vw, 64px); }
.portal-main .kit-empty p { max-width: 620px; }
.portal-main dl { margin: 0; }
.portal-main dt { color: var(--muted); font-size: 12px; margin-top: var(--space-4); }
.portal-main dd { margin: var(--space-1) 0 0; overflow-wrap: anywhere; }
.portal-main .kit-grid { margin-block: var(--space-6); }
.portal-main .kit-panel h2 { margin-top: 0; }
.portal-footer { display: flex; flex-wrap: wrap; gap: var(--space-4); margin-top: var(--space-8); padding-top: var(--space-4); border-top: 1px solid var(--line); color: var(--muted); font-size: 12px; }
.portal-footer a { margin-left: auto; }
.auth-panel { max-width: 480px; margin-inline: auto; }
.account-form { display: grid; gap: var(--space-4); max-width: 520px; }
.account-section { margin-top: var(--space-6); }
.wrap-code, .recovery-codes { white-space: pre-wrap; overflow-wrap: anywhere; font: 12px/1.7 var(--desk-mono); }
@media (max-width: 600px) {
  .portal-main { padding: var(--space-6) var(--space-4); }
  .device-row { grid-template-columns: minmax(0, 1fr); }
  .device-row .kit-status { justify-self: start; }
  .preview-picker { width: 100%; }
  .preview-picker label { flex: 1; }
  .portal-footer a { margin-left: 0; }
}
.device-updates { margin-block:16px; }
.device-updates summary { cursor:pointer; min-height:44px; align-content:center; }
.update-consent { display:flex; align-items:flex-start; gap:12px; line-height:1.6; }
.update-consent input { flex:0 0 auto; margin-top:6px; }
.update-history { border-top:1px solid var(--line); margin-top:20px; padding-top:16px; }
.update-history > div { display:flex; align-items:center; justify-content:space-between; gap:16px; }
