/* SensorMax AMS V3.1 Enterprise UI Framework */
:root{
  --smx-radius-xs:6px;--smx-radius-sm:8px;--smx-radius-md:12px;--smx-radius-lg:16px;
  --smx-space-1:4px;--smx-space-2:8px;--smx-space-3:12px;--smx-space-4:16px;--smx-space-5:20px;--smx-space-6:24px;
  --smx-focus:0 0 0 3px rgba(255,50,22,.18);--smx-shadow-float:0 22px 55px rgba(15,23,42,.18);
  --smx-transition:160ms ease;
}
:focus-visible{outline:0;box-shadow:var(--smx-focus)}
html{scrollbar-gutter:stable}
body.smx-overlay-open{overflow:hidden;width:100%}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px}
.btn-secondary{background:#fff;color:#344054;border-color:#d0d5dd}.btn-danger{background:#dc2626;border-color:#dc2626;color:#fff}.btn-success{background:#15803d;border-color:#15803d;color:#fff}.btn-info{background:#2563eb;border-color:#2563eb;color:#fff}.btn-warning{background:#d97706;border-color:#d97706;color:#fff}
.btn:disabled,.btn[aria-disabled="true"]{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}.smx-btn-loading{position:relative;color:transparent!important;pointer-events:none}.smx-btn-loading:after{content:"";position:absolute;width:17px;height:17px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:smx-spin .7s linear infinite;color:#fff}
.smx-badge{display:inline-flex;align-items:center;min-height:24px;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:800;line-height:1}.smx-badge-neutral{background:#f2f4f7;color:#475467}.smx-badge-success{background:#dcfce7;color:#166534}.smx-badge-danger{background:#fee2e2;color:#991b1b}.smx-badge-warning{background:#fef3c7;color:#92400e}.smx-badge-info{background:#dbeafe;color:#1d4ed8}
[data-tooltip]{position:relative}[data-tooltip]:hover:after,[data-tooltip]:focus-visible:after{content:attr(data-tooltip);position:absolute;z-index:1200;left:50%;bottom:calc(100% + 9px);transform:translateX(-50%);padding:6px 8px;border-radius:6px;background:#101828;color:#fff;font-size:11px;font-weight:650;line-height:1.2;white-space:nowrap;box-shadow:0 8px 20px rgba(0,0,0,.18);pointer-events:none}
.smx-empty-state{min-height:220px;display:grid;place-items:center;align-content:center;text-align:center;padding:34px 20px;color:#667085}.smx-empty-icon{width:54px;height:54px;border-radius:14px;display:grid;place-items:center;background:#f2f4f7;color:#475467;font-size:24px}.smx-empty-state h3{margin:14px 0 5px;color:#1d2939;font-size:17px}.smx-empty-state p{margin:0;max-width:480px;line-height:1.6}.smx-empty-action{margin-top:16px}
.smx-is-loading{position:relative;min-height:110px}.smx-loading-overlay{position:absolute;z-index:30;inset:0;display:flex;align-items:center;justify-content:center;gap:10px;background:rgba(255,255,255,.78);backdrop-filter:blur(2px);border-radius:inherit;color:#475467;font-weight:700}.smx-spinner{width:22px;height:22px;border:3px solid #e4e7ec;border-top-color:var(--primary);border-radius:50%;animation:smx-spin .7s linear infinite}@keyframes smx-spin{to{transform:rotate(360deg)}}
.modal-backdrop,.smx-drawer-shell{position:fixed;z-index:1000;inset:0;background:rgba(15,23,42,.48);backdrop-filter:blur(3px)}.modal-backdrop{display:grid;place-items:center;padding:20px}.modal{width:min(680px,100%);max-height:min(90vh,900px);overflow:auto;box-shadow:var(--smx-shadow-float)}.modal[data-size="sm"]{width:min(460px,100%)}.modal[data-size="lg"]{width:min(900px,100%)}.modal[data-size="xl"]{width:min(1180px,100%)}.modalhead{position:sticky;top:0;z-index:2;background:#fff}.modalfoot{position:sticky;bottom:0;z-index:2;background:#fff}.modalhead button{width:38px;height:38px;border-radius:9px;display:grid;place-items:center}
.smx-confirm{text-align:center;padding:8px 4px 18px}.smx-confirm-icon{width:52px;height:52px;margin:0 auto 14px;border-radius:50%;display:grid;place-items:center;background:#eff6ff;color:#1d4ed8;font-size:26px;font-weight:900}.smx-confirm-icon.danger{background:#fee2e2;color:#b91c1c}.smx-confirm p{margin:0;color:#475467;line-height:1.65}
.smx-drawer-shell{display:flex;justify-content:flex-end}.smx-drawer{width:min(560px,100%);height:100%;background:#fff;box-shadow:-24px 0 60px rgba(15,23,42,.2);display:grid;grid-template-rows:auto 1fr;animation:smx-drawer-in .2s ease-out}.smx-drawer[data-width="sm"]{width:min(420px,100%)}.smx-drawer[data-width="lg"]{width:min(720px,100%)}.smx-drawer[data-width="xl"]{width:min(960px,100%)}.smx-drawer-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:22px 24px;border-bottom:1px solid var(--line)}.smx-drawer-head h2{margin:0;font-size:21px}.smx-drawer-head p{margin:5px 0 0;color:var(--muted)}.smx-drawer-close{width:40px;height:40px;border:1px solid var(--line);border-radius:10px;background:#fff;font-size:24px;cursor:pointer}.smx-drawer-body{overflow:auto;padding:24px}@keyframes smx-drawer-in{from{transform:translateX(28px);opacity:.65}to{transform:none;opacity:1}}
.smx-tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);overflow:auto}.smx-tab{border:0;background:transparent;padding:11px 14px;color:#667085;font-weight:750;white-space:nowrap;cursor:pointer;border-bottom:2px solid transparent}.smx-tab.active{color:var(--primary);border-bottom-color:var(--primary)}
.smx-breadcrumb{display:flex;align-items:center;gap:7px;flex-wrap:wrap;color:#667085;font-size:12px}.smx-breadcrumb a{color:inherit;text-decoration:none}.smx-breadcrumb strong{color:#344054}
@media(max-width:760px){.modal-backdrop{padding:8px}.modal{max-height:96vh}.smx-drawer{width:100%!important}.smx-drawer-head,.smx-drawer-body{padding:16px}.smx-drawer-head h2{font-size:19px}[data-tooltip]:hover:after{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
@media(hover:none){.btn:hover,.action-btn:hover{transform:none}}


/* V3.1.2 enterprise form, security, navigation and timezone standards */
.smx-required-mark{display:none!important}.smx-label-text{display:inline}.smx-required-label>.smx-label-text::after{content:' *';display:inline;color:#dc2626;font-weight:900;line-height:1}.smx-required-label>input,.smx-required-label>select,.smx-required-label>textarea,.smx-required-label>.smx-sensitive-control{margin-top:7px}
.smx-invalid{border-color:#dc2626!important;box-shadow:0 0 0 3px rgba(220,38,38,.12)!important}
.smx-field-error{display:block!important;color:#b91c1c!important;font-size:12px!important;font-weight:650!important;margin-top:6px!important;grid-column:1/-1}
.smx-sensitive-control{position:relative;width:100%}
.smx-sensitive-control input{padding-right:64px!important}
.smx-sensitive-toggle{position:absolute;right:7px;top:50%;transform:translateY(-50%);height:30px;min-width:48px;padding:0 8px;border:0;border-radius:6px;background:#f1f5f9;color:#334155;font-size:11px;font-weight:800;cursor:pointer}
.smx-sensitive-toggle:hover{background:#e2e8f0}.smx-sensitive-toggle:focus-visible{outline:3px solid rgba(37,99,235,.2);outline-offset:1px}
.smx-masked-value{display:inline-flex;align-items:center;gap:7px;max-width:100%}.smx-inline-reveal{border:0;background:#eef2ff;color:#3730a3;border-radius:6px;padding:4px 7px;font-size:10px;font-weight:800;cursor:pointer}
.sidebar{width:290px;min-width:290px}.app{grid-template-columns:290px minmax(0,1fr)}
.nav{display:grid;grid-template-columns:25px minmax(0,1fr);align-items:center;column-gap:0;width:100%;white-space:nowrap;line-height:1.2;font-size:13px}
.nav span{width:25px}.sidebar nav{min-width:0}.sidebar .nav{overflow:hidden;text-overflow:ellipsis}
@media(max-width:1150px) and (min-width:761px){.sidebar{width:260px;min-width:260px}.app{grid-template-columns:260px minmax(0,1fr)}.nav{font-size:12px;padding-left:10px;padding-right:8px}}
@media(min-width:761px){body.smx-overlay-open .app{grid-template-columns:var(--smx-sidebar-lock-width,290px) minmax(0,1fr)}body.smx-overlay-open .sidebar{width:var(--smx-sidebar-lock-width,290px);min-width:var(--smx-sidebar-lock-width,290px);max-width:var(--smx-sidebar-lock-width,290px)}}
@media(max-width:760px){.sidebar{width:290px;min-width:290px;left:-310px}.app{display:block}.nav{font-size:13px}}

/* V3.1.3 searchable checkbox relationship selector */
.smx-multicheck{grid-column:1/-1;border:1px solid #d6dce5;border-radius:10px;padding:0;margin:0 0 16px;min-width:0;background:#fff}
.smx-multicheck legend{padding:0 7px;font-size:13px;font-weight:800;color:#101828}
.smx-multicheck-search{display:flex;align-items:center;margin:10px 12px;border:1px solid #d6dce5;border-radius:8px;padding:0 10px;background:#fff}
.smx-multicheck-search:focus-within{border-color:#ff785f;box-shadow:0 0 0 3px rgba(255,50,22,.1)}
.smx-multicheck-search span{color:#98a2b3}.smx-multicheck-search input{border:0!important;box-shadow:none!important;padding:10px 8px!important}
.smx-multicheck-list{max-height:230px;overflow:auto;padding:2px 8px 8px;display:grid;gap:4px;scrollbar-gutter:stable}
.smx-check-option{position:relative;display:flex!important;align-items:center;gap:10px!important;margin:0!important;padding:10px 11px;border-radius:8px;font-size:13px!important;font-weight:650!important;cursor:pointer;transition:background var(--smx-transition),border-color var(--smx-transition);border:1px solid transparent}
.smx-check-option:hover{background:#f8fafc;border-color:#e4e7ec}.smx-check-option.is-selected{background:#fff4f2;border-color:#ffc8be}
.smx-check-option input{position:absolute;opacity:0;pointer-events:none;width:1px!important;height:1px!important}
.smx-checkbox-ui{width:20px;height:20px;flex:0 0 20px;border:1.5px solid #98a2b3;border-radius:6px;background:#fff;display:grid;place-items:center;transition:.16s}
.smx-check-option input:checked+.smx-checkbox-ui{background:var(--primary);border-color:var(--primary)}
.smx-check-option input:checked+.smx-checkbox-ui::after{content:'';width:9px;height:5px;border-left:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(-45deg) translateY(-1px)}
.smx-check-option input:focus-visible+.smx-checkbox-ui{box-shadow:var(--smx-focus)}
.smx-check-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.smx-multicheck-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 13px;border-top:1px solid #eaecf0;color:#667085;font-size:12px;font-weight:700;background:#fcfcfd;border-radius:0 0 10px 10px}
.smx-link-btn{border:0;background:transparent;color:#d92d20;font-size:12px;font-weight:800;cursor:pointer;padding:4px}.smx-link-btn:hover{text-decoration:underline}
.smx-multicheck-empty{padding:24px;text-align:center;color:#98a2b3}
@media(max-width:520px){.smx-multicheck-list{max-height:190px}.smx-multicheck-footer{align-items:flex-start;flex-direction:column}}

/* V3.1.5 centralized confirmation dialog */
.smx-confirm{display:flex;gap:16px;text-align:left;padding:10px 2px 18px;align-items:flex-start}.smx-confirm-icon{flex:0 0 50px;margin:0;border-radius:14px}.smx-confirm-copy h3{margin:1px 0 7px;font-size:17px;color:#101828}.smx-confirm-copy p{margin:0;color:#667085;line-height:1.6}.smx-confirm-danger-btn{background:#d92d20!important;border-color:#d92d20!important;color:#fff!important}.smx-confirm-danger-btn:hover{background:#b42318!important;border-color:#b42318!important}.smx-confirm-danger-btn:focus-visible{outline:3px solid rgba(217,45,32,.22)!important;outline-offset:2px}
@media(max-width:520px){.smx-confirm{gap:12px}.smx-confirm-icon{flex-basis:44px;width:44px;height:44px}.smx-confirm-copy h3{font-size:16px}}


/* V3.1.6 centralized relationship and clone dialogs */
.smx-relation-list{display:grid;gap:10px;width:100%}.smx-relation-row{display:flex;align-items:center;gap:12px;padding:13px 14px;border:1px solid var(--smx-border,#dbe3ef);border-radius:10px;background:#fff}.smx-relation-index{display:grid;place-items:center;min-width:30px;height:30px;border-radius:8px;background:#f1f5f9;color:#334155;font-weight:800}.smx-relation-row div{display:grid;gap:3px;min-width:0}.smx-relation-row b{font-size:14px;color:#0f172a;overflow-wrap:anywhere}.smx-relation-row small{font-size:12px;color:#64748b}.smx-empty-compact{padding:28px;text-align:center;border:1px dashed #cbd5e1;border-radius:10px;color:#64748b;background:#f8fafc}.smx-link-button{appearance:none;border:0;background:transparent;padding:0;color:#2563eb;font:inherit;font-weight:750;cursor:pointer;text-decoration:none}.smx-link-button:hover{text-decoration:underline}.smx-link-button:focus-visible{outline:3px solid rgba(37,99,235,.22);outline-offset:3px;border-radius:4px}.smx-more-wrap{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.smx-more-summary{max-width:260px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.smx-clone-options{display:grid;gap:12px}.smx-clone-option{display:flex;gap:12px;align-items:flex-start;padding:14px;border:1px solid #dbe3ef;border-radius:10px;background:#fff;cursor:pointer}.smx-clone-option:hover{border-color:#94a3b8;background:#f8fafc}.smx-clone-option input{margin-top:3px;width:18px;height:18px;accent-color:#ff341f}.smx-clone-option span{display:grid;gap:3px}.smx-clone-option b{color:#0f172a}.smx-clone-option small{color:#64748b;line-height:1.45}.smx-clone-note{padding:12px 14px;border-radius:10px;background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;font-size:13px;line-height:1.5}

/* V3.1.10 centralized single modal content hierarchy */
.modal,
.modal[data-size="sm"],
.modal[data-size="md"],
.modal[data-size="lg"],
.modal[data-size="xl"]{
  width:min(720px,calc(100vw - 40px));
  max-width:720px;
  border-radius:16px;
  overflow:hidden;
  display:flex;
  flex-direction:column;
}
.modalhead{
  flex:0 0 auto;
  padding:22px 24px 18px;
  gap:20px;
}
.modalhead>div{min-width:0;flex:1}
.modalhead h2{
  font-size:22px;
  line-height:1.28;
  overflow-wrap:anywhere;
}
.modalhead p{line-height:1.5}
.modalform,
#modalForm{
  min-height:0;
  display:flex;
  flex-direction:column;
}
#modalFields{
  width:100%;
  min-width:0;
  overflow-wrap:break-word;
}
.modalfoot{
  flex:0 0 auto;
  padding:16px 24px;
  min-height:72px;
}
.smx-confirm{
  grid-column:1/-1;
  width:100%;
  min-width:0;
  display:grid;
  grid-template-columns:52px minmax(0,1fr);
  align-items:start;
  gap:16px;
  padding:8px 2px 18px;
  text-align:left;
}
.smx-confirm-icon{
  width:52px;
  height:52px;
  margin:0;
  border-radius:14px;
}
.smx-confirm-copy{min-width:0;width:100%}
.smx-confirm-context{
  display:inline-flex;
  max-width:100%;
  margin:1px 0 8px;
  padding:5px 9px;
  border:1px solid #e4e7ec;
  border-radius:8px;
  background:#f8fafc;
  color:#344054;
  font-size:13px;
  font-weight:700;
  line-height:1.4;
  overflow-wrap:anywhere;
}
.smx-confirm-copy p{
  max-width:none;
  margin:0;
  font-size:14px;
  line-height:1.65;
  white-space:normal;
  overflow-wrap:break-word;
}
@media(max-width:760px){
  .modal,
  .modal[data-size="sm"],
  .modal[data-size="md"],
  .modal[data-size="lg"],
  .modal[data-size="xl"]{
    width:calc(100vw - 16px);
    max-width:none;
    max-height:calc(100dvh - 16px);
    border-radius:14px;
  }
  .modalhead{padding:18px 18px 15px}
  .modalhead h2{font-size:20px}
  .modalfoot{padding:14px 18px;min-height:68px;flex-wrap:wrap}
  .smx-confirm{grid-template-columns:46px minmax(0,1fr);gap:13px;padding-bottom:14px}
  .smx-confirm-icon{width:46px;height:46px;border-radius:12px}
}
@media(max-width:420px){
  .modalfoot .btn{flex:1 1 auto}
  .smx-confirm{grid-template-columns:40px minmax(0,1fr);gap:11px}
  .smx-confirm-icon{width:40px;height:40px;border-radius:10px;font-size:22px}
  .smx-confirm-context{font-size:12px}
  .smx-confirm-copy p{font-size:13px;line-height:1.6}
}


/* V3.1.11 centralized typography system */
:root{
  --smx-font-family:Inter,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --smx-font-size-xs:11px;
  --smx-font-size-sm:12px;
  --smx-font-size-md:14px;
  --smx-font-size-lg:16px;
  --smx-font-size-xl:20px;
  --smx-font-size-2xl:26px;
  --smx-font-weight-regular:400;
  --smx-font-weight-medium:500;
  --smx-font-weight-semibold:600;
  --smx-font-weight-bold:700;
  --smx-line-height-tight:1.3;
  --smx-line-height-normal:1.5;
  --smx-line-height-relaxed:1.65;
}
html,body,button,input,select,textarea{font-family:var(--smx-font-family)}
body{font-size:var(--smx-font-size-md);font-weight:var(--smx-font-weight-regular);line-height:var(--smx-line-height-normal);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2,h3,h4,h5,h6,b,strong{font-weight:var(--smx-font-weight-semibold)}
.pagehead h1{font-size:var(--smx-font-size-2xl);font-weight:var(--smx-font-weight-bold);line-height:var(--smx-line-height-tight);letter-spacing:-.02em}
.pagehead p,.panel-title p,.crumb small,.modalhead p{font-size:var(--smx-font-size-md);font-weight:var(--smx-font-weight-regular);line-height:var(--smx-line-height-normal)}
.panel-title h3,.panel h3{font-size:var(--smx-font-size-lg);font-weight:var(--smx-font-weight-semibold);line-height:1.4}
.crumb b,.userbox b,.user-mini b{font-size:var(--smx-font-size-md);font-weight:var(--smx-font-weight-semibold)}
.nav,.logout{font-size:13px;font-weight:var(--smx-font-weight-medium)}
.nav-label{font-size:var(--smx-font-size-xs);font-weight:var(--smx-font-weight-semibold)}
.btn,.action-btn,.iconbtn{font-size:13px;font-weight:var(--smx-font-weight-semibold);line-height:1.25}
label,.login-card label,.formgrid label,.header-scope label{font-size:13px;font-weight:var(--smx-font-weight-semibold);line-height:1.4}
input,select,textarea{font-size:var(--smx-font-size-md);font-weight:var(--smx-font-weight-regular);line-height:1.45}
.tablewrap table{font-size:var(--smx-font-size-md)}
.tablewrap th{
  font-size:var(--smx-font-size-sm);
  font-weight:var(--smx-font-weight-semibold);
  line-height:1.35;
  letter-spacing:.035em;
  text-transform:uppercase;
  color:#475467;
}
.tablewrap td{
  font-size:var(--smx-font-size-md);
  font-weight:var(--smx-font-weight-regular);
  line-height:1.5;
  color:#172033;
}
.tablewrap td b,.tablewrap td strong{font-weight:var(--smx-font-weight-semibold)}
.table-footer,.footer-page-size label,.footer-record-count,.pagination{font-size:var(--smx-font-size-sm);font-weight:var(--smx-font-weight-medium)}
.badge,.status-badge,.field-class{font-size:var(--smx-font-size-xs);font-weight:var(--smx-font-weight-semibold);letter-spacing:0}
.modalhead h2{font-size:22px;font-weight:var(--smx-font-weight-bold);letter-spacing:-.015em}
.smx-confirm-copy p,.smx-relation-row small,.smx-clone-option small{font-weight:var(--smx-font-weight-regular)}
.detail-grid span{font-size:var(--smx-font-size-xs);font-weight:var(--smx-font-weight-semibold);letter-spacing:.035em}
.detail-grid b{font-size:var(--smx-font-size-md);font-weight:var(--smx-font-weight-medium)}
.card span{font-size:13px;font-weight:var(--smx-font-weight-medium)}
.card b{font-weight:var(--smx-font-weight-bold)}
code{font-family:"SFMono-Regular",Consolas,"Liberation Mono",monospace;font-size:.92em}
@media(max-width:760px){
  .pagehead h1{font-size:23px}
  .tablewrap th{font-size:11px}
  .tablewrap td{font-size:13px}
}


/* V3.1.13 modal viewport and internal scrolling repair */
.modal{
  max-height:calc(100dvh - 40px);
}
#modalForm{
  flex:1 1 auto;
  min-height:0;
  overflow:hidden;
}
#modalFields{
  flex:1 1 auto;
  min-height:0;
  overflow-y:auto;
  overflow-x:hidden;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
}
.modalhead,.modalfoot{
  position:relative;
  top:auto;
  bottom:auto;
}
@media(max-width:760px){
  .modal{max-height:calc(100dvh - 16px)}
}

/* V3.1.22 sensitive asset values: preserve database case and mask by default */
.smx-masked-value,.detail-grid .smx-masked-value,.detail-grid .smx-masked-text{ text-transform:none!important; letter-spacing:normal!important; }
.smx-masked-text{font-family:inherit;font-weight:var(--smx-font-weight-medium);white-space:nowrap;}
td .smx-masked-value{min-width:118px;}

/* V3.1.23 centralized header form sizing and privacy */
#modalForm>label>input,#modalForm>label>select{height:46px;min-height:46px;padding:11px 13px;margin-top:7px}#modalForm>label>textarea{min-height:96px;margin-top:7px}.badge.privacy{background:#ede9fe;color:#6d28d9}.js-field-key-preview{background:#f8fafc!important;color:#475467}

/* V3.1.24 SMX Form System — standardized by control type */
:root{
  --smx-control-height:48px;
  --smx-control-radius:9px;
  --smx-control-pad-x:13px;
  --smx-control-border:#d6dce5;
  --smx-textarea-min-height:112px;
  --smx-field-help-height:18px;
}

/* Text-like controls and dropdowns share one physical size. */
#modalForm input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
#modalForm select{
  display:block;
  width:100%;
  height:var(--smx-control-height);
  min-height:var(--smx-control-height);
  padding:0 var(--smx-control-pad-x);
  border-radius:var(--smx-control-radius);
  box-sizing:border-box;
}

/* Textareas remain a separate component and are not forced into textbox height. */
#modalForm textarea{
  display:block;
  width:100%;
  min-height:var(--smx-textarea-min-height);
  padding:12px var(--smx-control-pad-x);
  border-radius:var(--smx-control-radius);
  resize:vertical;
  box-sizing:border-box;
}

/* Dynamic Header modal fields reserve the same helper-text row, keeping paired controls aligned. */
#modalForm .smx-field{
  display:grid;
  grid-template-rows:auto var(--smx-field-help-height) auto;
  align-content:start;
  gap:5px;
  min-width:0;
  margin-bottom:16px;
}
#modalForm .smx-field>.smx-field-help{
  display:block;
  height:var(--smx-field-help-height);
  min-height:var(--smx-field-help-height);
  margin:0;
  overflow:hidden;
  line-height:var(--smx-field-help-height);
  white-space:nowrap;
  text-overflow:ellipsis;
  color:var(--muted);
  font-size:12px;
  font-weight:var(--smx-font-weight-regular);
}
#modalForm .smx-field>.smx-field-help-empty{visibility:hidden}
#modalForm .smx-field>input,
#modalForm .smx-field>select,
#modalForm .smx-field>textarea{margin-top:0!important}
#modalForm .smx-field-textarea>.smx-field-help{white-space:normal;height:auto;min-height:var(--smx-field-help-height);overflow:visible}

/* Native checkbox/radio retain their proper compact size. */
#modalForm input[type="checkbox"],
#modalForm input[type="radio"]{
  width:18px;
  height:18px;
  min-height:18px;
  padding:0;
}

@media(max-width:760px){
  :root{--smx-control-height:46px;--smx-textarea-min-height:104px}
  #modalForm .smx-field>.smx-field-help{white-space:normal;height:auto;min-height:var(--smx-field-help-height);overflow:visible}
}


/* V3.1.27 — centralized relationship listing modal */
.smx-relation-list{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
  width:100%;
  align-items:stretch;
}
.smx-relation-row{
  min-width:0;
  height:100%;
  align-items:flex-start;
}
.smx-relation-row>div{
  min-width:0;
}
@media (max-width:700px){
  .smx-relation-list{grid-template-columns:1fr}
}

/* V3.1.27 — refined styled relationship listing modal */
#modalFields > .smx-relation-list{
  grid-column:1 / -1;
}
.smx-relation-list{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
  width:100%;
  min-width:0;
  align-items:stretch;
}
.smx-relation-row{
  display:grid;
  grid-template-columns:36px minmax(0,1fr);
  align-items:center;
  gap:13px;
  width:100%;
  min-width:0;
  min-height:78px;
  padding:14px 16px;
  border:1px solid #dbe3ef;
  border-radius:11px;
  background:linear-gradient(180deg,#ffffff 0%,#fbfcfe 100%);
  box-shadow:0 2px 8px rgba(15,23,42,.035);
  transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease;
}
.smx-relation-row:hover{
  border-color:#c5cfdd;
  box-shadow:0 6px 16px rgba(15,23,42,.07);
  transform:translateY(-1px);
}
.smx-relation-index{
  display:grid;
  place-items:center;
  width:36px;
  min-width:36px;
  height:36px;
  border-radius:9px;
  background:#f1f5f9;
  color:#334155;
  font-size:13px;
  font-weight:800;
}
.smx-relation-row>div{
  display:grid;
  gap:4px;
  width:100%;
  min-width:0;
}
.smx-relation-row b{
  display:block;
  min-width:0;
  color:#0f172a;
  font-size:14px;
  font-weight:700;
  line-height:1.4;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  overflow-wrap:normal;
  word-break:normal;
}
.smx-relation-row small{
  display:block;
  min-width:0;
  color:#64748b;
  font-size:12px;
  line-height:1.4;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
#modalCancel[hidden]{display:none!important}
@media(max-width:700px){
  .smx-relation-list{grid-template-columns:1fr}
  .smx-relation-row b,.smx-relation-row small{white-space:normal;overflow:visible;text-overflow:clip}
}

/* V3.1.45 — global modal readability, wrapping and responsive layout repair */
.modal{
  display:flex;
  flex-direction:column;
  overflow:hidden!important;
  max-width:calc(100vw - 32px);
}
.modalhead,.modalfoot{flex:0 0 auto}
#modalForm{
  min-height:0;
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
#modalFields{
  min-height:0;
  overflow-y:auto;
  overflow-x:hidden;
  scrollbar-gutter:stable;
}
#modalFields,
#modalFields *{min-width:0}
.detail-grid>div,
.smx-relation-row,
.smx-clone-option,
.smx-process-impact{overflow:hidden}
.detail-grid b,
.detail-grid span,
.smx-relation-row b,
.smx-relation-row small,
.smx-clone-option b,
.smx-clone-option small,
.smx-process-impact li,
.smx-process-impact p{
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  overflow-wrap:anywhere;
  word-break:break-word;
}
.smx-relation-list{
  grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));
}
.smx-relation-row{
  align-items:start;
  min-height:86px;
}
.smx-relation-row>div{align-self:center}
.smx-relation-row b{font-size:14px;line-height:1.45}
.smx-relation-row small{line-height:1.45}
.modal[data-size="md"] .smx-relation-list{grid-template-columns:1fr}
.modal[data-size="lg"] .smx-relation-list,
.modal[data-size="xl"] .smx-relation-list{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:760px){
  .modal{max-width:calc(100vw - 16px)}
  #modalFields{padding-left:16px;padding-right:16px}
  .modal[data-size="lg"] .smx-relation-list,
  .modal[data-size="xl"] .smx-relation-list{grid-template-columns:1fr}
  .smx-relation-row{padding:13px 14px;grid-template-columns:34px minmax(0,1fr)}
}

/* V3.1.46 — global modal content flow and initial-scroll repair */
#modalFields.formgrid{
  align-content:start;
  grid-auto-rows:max-content;
  row-gap:16px;
}
#modalFields > *{
  min-height:0;
}
#modalFields > .smx-process-impact{
  grid-column:1/-1;
  height:auto!important;
  min-height:max-content!important;
  max-height:none!important;
  overflow:visible!important;
  margin:0 0 4px!important;
  align-self:start;
}
.smx-process-impact > div:last-child{
  min-width:0;
  overflow:visible;
}
.smx-process-impact p,
.smx-process-impact ul,
.smx-process-impact li{
  max-height:none!important;
  height:auto!important;
}
.modalhead{
  z-index:3;
}
.modalfoot{
  z-index:3;
}
#modalFields{
  scroll-behavior:auto;
  scroll-padding-top:18px;
}
@media(max-width:760px){
  #modalFields.formgrid{row-gap:14px}
  #modalFields > .smx-process-impact{margin-bottom:2px!important}
}


/* V3.1.48 Global Search asset status */
.global-result-title{display:flex;align-items:center;gap:8px;min-width:0}.global-result-title b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-status-badge{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;padding:3px 8px;border-radius:999px;font-size:10px;font-weight:800;line-height:1.2;text-transform:capitalize}.global-status-badge.active{background:#dcfce7;color:#166534}.global-status-badge.inactive{background:#f1f5f9;color:#475569}


/* V3.1.60 — standardized asset IP actions */
.smx-ip-link{display:inline-flex;align-items:center;gap:7px;max-width:100%;color:#174ea6;text-decoration:none;font-weight:750;line-height:1.25}
.smx-ip-link:hover{text-decoration:underline;text-underline-offset:3px}
.smx-ip-link:focus-visible,.smx-ip-open:focus-visible,.smx-ip-copy:focus-visible{outline:3px solid rgba(37,99,235,.2);outline-offset:2px}
.smx-ip-link svg,.smx-ip-open svg,.smx-ip-copy svg{width:15px;height:15px;flex:0 0 15px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.smx-ip-link.compact{font-size:13px;white-space:nowrap}
.smx-ip-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-width:0}
.smx-ip-value{min-width:0;overflow-wrap:anywhere;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;color:inherit}
.smx-ip-buttons{display:inline-flex;align-items:center;gap:7px;flex:0 0 auto}
.smx-ip-copy,.smx-ip-open{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:34px;padding:7px 10px;border:1px solid #d5deea;border-radius:9px;background:#fff;color:#344054;font:inherit;font-size:12px;font-weight:750;line-height:1;text-decoration:none;cursor:pointer;transition:background .16s ease,border-color .16s ease,color .16s ease,transform .16s ease}
.smx-ip-copy:hover,.smx-ip-open:hover{background:#f8fafc;border-color:#aebed2;color:#174ea6;transform:translateY(-1px)}
.smx-ip-copy.copied{background:#ecfdf3;border-color:#abefc6;color:#067647}.smx-ip-copy:disabled{cursor:default;transform:none;opacity:1}
.smx-ip-open{background:#eff6ff;border-color:#bfd4ff;color:#174ea6}
.detail-grid>div:has(.smx-ip-actions)>b{width:100%}
@media(max-width:640px){.smx-ip-actions{align-items:flex-start;flex-direction:column}.smx-ip-buttons{width:100%}.smx-ip-copy,.smx-ip-open{flex:1}}


/* V3.1.89 — authentication-safe full-height shell and single-title page hierarchy */
:root{--smx-shell-sidebar-width:290px}
@media(max-width:1150px) and (min-width:761px){:root{--smx-shell-sidebar-width:260px}}
@media(min-width:761px){
  .app:not(.hidden),
  body.smx-overlay-open .app:not(.hidden){
    display:block!important;
    width:100%;
    min-height:100vh;
    min-height:100dvh;
    overflow:visible;
  }
  .sidebar,
  body.smx-overlay-open .sidebar{
    position:fixed!important;
    inset:0 auto 0 0!important;
    width:var(--smx-shell-sidebar-width)!important;
    min-width:var(--smx-shell-sidebar-width)!important;
    max-width:var(--smx-shell-sidebar-width)!important;
    height:100vh!important;
    height:100dvh!important;
    min-height:100vh!important;
    min-height:100dvh!important;
    max-height:100dvh!important;
    align-self:auto!important;
    overflow-x:hidden!important;
    overflow-y:auto!important;
    overscroll-behavior:contain;
    scrollbar-gutter:stable;
    z-index:20;
  }
  .app>main{
    display:block;
    width:calc(100% - var(--smx-shell-sidebar-width))!important;
    max-width:calc(100% - var(--smx-shell-sidebar-width))!important;
    min-width:0;
    min-height:100vh;
    min-height:100dvh;
    margin-left:var(--smx-shell-sidebar-width)!important;
    overflow:visible;
  }
}
/* Authentication boundary: the application shell must never be rendered while
   #appView is marked hidden, even when desktop or overlay layout rules are active. */
#appView.hidden{display:none!important}
body.smx-auth-view #appView{display:none!important}

/* The sticky top bar is the single page identity. Repeated body titles are removed,
   while page-specific actions stay available in a compact action row. */
:is(
  #standardDashboard,
  #page-sites,
  #page-contractors,
  #page-users,
  #page-assets,
  #page-categories,
  #page-subcategories,
  #page-headers,
  #page-announcements,
  #page-audit,
  #page-search,
  #page-settings
)>.pagehead>:first-child{
  display:none!important;
}
:is(
  #standardDashboard,
  #page-sites,
  #page-contractors,
  #page-users,
  #page-assets,
  #page-categories,
  #page-subcategories,
  #page-headers,
  #page-announcements,
  #page-audit,
  #page-search,
  #page-settings
)>.pagehead{
  min-height:40px;
  justify-content:flex-end;
  align-items:center;
  margin-bottom:16px;
}
#page-reports>.pagehead,
#page-imports>.pagehead,
#page-about>.pagehead{
  display:none!important;
}
#page-search>.pagehead .smart-search-page-actions,
#page-settings>.pagehead>button,
#page-announcements>.pagehead>button,
#page-audit>.pagehead>button,
#standardDashboard>.pagehead>button{
  margin-left:auto;
}
@media(max-width:760px){
  :is(
    #standardDashboard,
    #page-sites,
    #page-contractors,
    #page-users,
    #page-assets,
    #page-categories,
    #page-subcategories,
    #page-headers,
    #page-announcements,
    #page-audit,
    #page-search,
    #page-settings
  )>.pagehead{
    min-height:0;
    margin-bottom:12px;
    align-items:stretch;
  }
  #page-search>.pagehead .smart-search-page-actions,
  #page-settings>.pagehead>button,
  #page-announcements>.pagehead>button,
  #page-audit>.pagehead>button,
  #standardDashboard>.pagehead>button{
    width:100%;
    margin-left:0;
  }
}
