/* PROSTERO UI POLISH STAGE 1
   Visual-only normalization. No API/MQTT/OTA/controller logic. */

:root{--polish-radius:14px;--polish-radius-lg:18px;--polish-control-h:44px;--polish-focus:0 0 0 4px color-mix(in srgb,var(--ui-primary) 14%,transparent)}

/* One visual language for feedback */
.portal-alert,.dashboard-flash,.account-v2-message,.admin-error,.admin-success{
  position:relative;box-sizing:border-box;width:100%;margin:0 0 14px;padding:12px 14px 12px 42px!important;
  border:1px solid var(--ui-edge)!important;border-radius:var(--polish-radius)!important;
  background:var(--ui-surface-solid)!important;color:var(--ui-ink)!important;box-shadow:var(--ui-shadow-sm)!important;
  font-size:13px;font-weight:800;line-height:1.45
}
.portal-alert:before,.dashboard-flash:before,.account-v2-message:before,.admin-error:before,.admin-success:before{
  position:absolute;left:14px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:18px;height:18px;
  border-radius:999px;font-size:12px;font-weight:1000;content:'i';background:var(--ui-primary-soft);color:var(--ui-primary)
}
.portal-alert.success,.dashboard-flash.success,.account-v2-message.success,.admin-success{
  border-color:color-mix(in srgb,var(--ui-good) 35%,var(--ui-edge))!important;background:var(--ui-good-soft)!important
}
.portal-alert.success:before,.dashboard-flash.success:before,.account-v2-message.success:before,.admin-success:before{content:'✓';background:var(--ui-good);color:#fff}
.portal-alert.danger,.dashboard-flash.error,.account-v2-message.error,.admin-error{
  border-color:color-mix(in srgb,var(--ui-bad) 34%,var(--ui-edge))!important;background:var(--ui-bad-soft)!important
}
.portal-alert.danger:before,.dashboard-flash.error:before,.account-v2-message.error:before,.admin-error:before{content:'!';background:var(--ui-bad);color:#fff}
.ota-warning{border:1px solid color-mix(in srgb,var(--ui-warn) 42%,var(--ui-edge))!important;border-radius:12px!important;background:var(--ui-warn-soft)!important;color:var(--ui-ink)!important;padding:10px 12px!important;font-weight:800!important}

/* Buttons: same geometry and feedback */
.portal-btn,.portal-logout,.portal-icon-link,.admin-primary,.admin-secondary,.firmware-action-btn,.ota-update-btn,
.account-v2-primary,.account-v2-secondary,.admin-device-card button,.admin-user-card button{
  box-sizing:border-box;min-height:var(--polish-control-h);border-radius:12px!important;font-weight:900!important;
  transition:transform .12s ease,box-shadow .12s ease,background .12s ease,border-color .12s ease,color .12s ease
}
.portal-btn:hover,.admin-primary:hover,.admin-secondary:hover,.firmware-action-btn:hover,.ota-update-btn:hover,
.account-v2-primary:hover,.account-v2-secondary:hover,.admin-device-card button:hover,.admin-user-card button:hover{transform:translateY(-1px)}
.portal-btn:active,.admin-primary:active,.admin-secondary:active,.firmware-action-btn:active,.ota-update-btn:active,
.account-v2-primary:active,.account-v2-secondary:active,.admin-device-card button:active,.admin-user-card button:active{transform:translateY(0)}
button:disabled,.portal-btn[aria-disabled="true"]{opacity:.52!important;cursor:not-allowed!important;transform:none!important;box-shadow:none!important}

/* Form controls */
.portal-unified input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]),
.portal-unified select,.portal-unified textarea,.portal-admin input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]),
.portal-admin select,.portal-admin textarea{
  box-sizing:border-box;border-radius:11px!important;border-color:var(--ui-edge-strong)!important;background:var(--ui-surface-solid)!important;color:var(--ui-ink)!important
}
.portal-unified input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]),.portal-unified select,
.portal-admin input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]),.portal-admin select{min-height:var(--polish-control-h)}
.portal-unified input:focus,.portal-unified select:focus,.portal-unified textarea:focus,.portal-admin input:focus,.portal-admin select:focus,.portal-admin textarea:focus{
  outline:none!important;border-color:var(--ui-primary-edge)!important;box-shadow:var(--polish-focus)!important
}
.portal-unified input::placeholder,.portal-unified textarea::placeholder,.portal-admin input::placeholder,.portal-admin textarea::placeholder{color:var(--ui-muted)!important;opacity:.72}

/* Empty / no-result states */
.portal-empty,.empty,.list-search-empty,.firmware-empty,.fw-admin-no-results,.portal-no-results,.admin-empty{
  box-sizing:border-box;margin:12px 0!important;padding:28px 20px!important;border:1px dashed var(--ui-edge-strong)!important;border-radius:var(--polish-radius-lg)!important;
  background:var(--ui-surface-soft)!important;color:var(--ui-muted)!important;text-align:center!important;font-weight:800!important
}
.portal-empty h3{color:var(--ui-ink)!important;margin:8px 0 4px!important}.portal-empty p{color:var(--ui-muted)!important}
.list-search-empty:not([style*="display: none"]),.portal-no-results:not([hidden]){min-height:82px;display:grid!important;place-items:center}

/* Card rhythm */
.portal-unified .portal-card,.portal-unified .ota-panel,.portal-unified .account-v2-card,.portal-admin .admin-card,
.portal-admin .admin-device-card,.portal-admin .admin-user-card{border-radius:var(--polish-radius-lg)!important}
.portal-unified .portal-card-head,.portal-admin .admin-page-heading,.account-v2-card-head{gap:14px}
.portal-main>section+section,.account-v2-grid,.admin-container>.admin-card+.admin-card{margin-top:14px}

/* Search / toolbar normalization */
.portal-list-toolbar,.list-search-bar,.fw-admin-controls{border-radius:14px!important}
.list-search-field,.portal-search,.fw-admin-search-row{min-width:0}.list-search-input,.portal-search input,.fw-admin-search input{min-width:0;width:100%}
.portal-page-size select,.fw-admin-size select{cursor:pointer}

/* Status chips: consistent weight */
.portal-status,.firmware-state,.admin-status,.admin-user-chip,.portal-chip{font-weight:950!important;letter-spacing:.15px}

/* Admin action areas must not force horizontal scrolling */
.portal-admin .admin-device-actions,.portal-admin .admin-user-actions,.firmware-release-actions{min-width:0;flex-wrap:wrap!important}
.portal-admin .admin-device-card,.portal-admin .admin-user-card,.firmware-release-card{overflow:hidden}
.portal-admin code,.portal-admin .firmware-release-hash,.portal-admin .admin-device-id{overflow-wrap:anywhere;word-break:break-word}

/* Mobile polish */
@media(max-width:760px){
  .portal-main,.portal-unified .account-v2-shell{padding-left:10px!important;padding-right:10px!important}
  .portal-hero,.account-v2-hero{border-radius:16px!important}
  .portal-hero-actions{width:100%;display:grid!important;grid-template-columns:1fr!important;gap:8px!important}
  .portal-hero-actions .portal-btn{width:100%!important;justify-content:center!important}
  .portal-card,.ota-panel,.account-v2-card,.admin-card,.admin-device-card,.admin-user-card{padding-left:14px!important;padding-right:14px!important}
  .portal-list-toolbar,.list-search-bar,.fw-admin-controls{gap:9px!important}
  .portal-pairing-form .portal-btn,.account-v2-form .account-v2-primary,.account-v2-actions form,.account-v2-actions button{width:100%!important}
  .firmware-release-actions,.firmware-release-actions form,.firmware-action-btn{width:100%!important}
  .admin-device-actions>*,.admin-user-actions>*{max-width:100%}
}
@media(max-width:520px){
  .portal-alert,.dashboard-flash,.account-v2-message,.admin-error,.admin-success{padding:11px 12px 11px 38px!important;font-size:12px}
  .portal-alert:before,.dashboard-flash:before,.account-v2-message:before,.admin-error:before,.admin-success:before{left:12px}
  .portal-unified input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]),.portal-unified select,.portal-admin input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]),.portal-admin select{font-size:16px!important}
}

@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.portal-btn,.admin-primary,.admin-secondary,.firmware-action-btn,.ota-update-btn,.account-v2-primary,.account-v2-secondary{transition:none!important}}
