/* Shared tablet/phone and installed-PWA policy. Desktop geometry starts at 1200px. */
body.crm-ui #side-nav>button>.crm-nav-label,
.crm-mobile-record-list,
.crm-mobile-filter-toggle,
.crm-mobile-filter-actions,
.crm-context-more,
.crm-mobile-nav-footer,
.crm-mobile-nav-groups,
.crm-mobile-header-actions { display:none; }

.crm-ios-install-guidance { display:flex; align-items:flex-start; gap:10px; padding:12px; border:1px solid var(--crm-border); border-radius:var(--crm-radius-md); background:var(--crm-bg-surface); }
.crm-ios-install-guidance>div { min-width:0; flex:1; }
.crm-ios-install-guidance p { margin:6px 0; font-size:13px; line-height:1.5; }
.crm-ios-install-guidance>.icon-btn { min-width:44px; min-height:44px; }
.login-panel>.crm-ios-install-guidance { margin-top:18px; }
.app-shell>main>.crm-ios-install-guidance { margin:12px max(12px,env(safe-area-inset-right)) 0 max(12px,env(safe-area-inset-left)); }

@media (max-width:1199px) {
  body.crm-ui { overflow-x:clip; padding-bottom:0; --crm-mobile-header-height:56px; }
  body.crm-ui :is(.login-screen,.app-shell,.app-shell>main) { min-height:100vh; min-height:100svh; min-height:100dvh; }
  body.crm-ui .login-screen { padding: max(16px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left)); }
  body.crm-ui .login-panel { min-width:0; max-width:100%; }
  body.crm-ui.mobile-menu-open { overflow:hidden; }
  body.crm-ui .crm-topbar { display:none!important; }
  body.crm-ui .app-shell>main {
    margin-left:0!important;
    width:100%!important;
    min-width:0;
    padding-top:calc(var(--crm-mobile-header-height) + env(safe-area-inset-top));
  }
  body.crm-ui .topbar {
    position:fixed;
    inset:0 0 auto 0;
    z-index:80;
    display:flex!important;
    align-items:center;
    box-sizing:border-box;
    height:calc(var(--crm-mobile-header-height) + env(safe-area-inset-top));
    min-height:calc(var(--crm-mobile-header-height) + env(safe-area-inset-top));
    padding:env(safe-area-inset-top) max(12px,env(safe-area-inset-right)) 0 max(12px,env(safe-area-inset-left));
    gap:10px;
    background:var(--crm-bg-surface);
    border-bottom:1px solid var(--crm-border);
    box-shadow:var(--crm-shadow-xs);
  }
  body.crm-ui .topbar>.mobile-menu {
    display:grid!important;
    place-items:center;
    flex:0 0 44px;
    width:44px;
    height:44px;
    padding:0;
    border:1px solid var(--crm-border);
    border-radius:var(--crm-radius-md);
    background:var(--crm-bg-surface);
    color:var(--crm-text-primary);
  }
  body.crm-ui .topbar>.mobile-menu span { font-size:22px; line-height:1; }
  body.crm-ui .topbar>.mobile-menu b,
  body.crm-ui .topbar #eyebrow { display:none; }
  body.crm-ui .topbar>div:nth-child(2) { min-width:0; flex:1; }
  body.crm-ui .topbar #page-title {
    overflow:hidden;
    margin:0;
    color:var(--crm-text-primary);
    font-size:17px;
    font-weight:700;
    line-height:1.25;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  body.crm-ui .topbar .top-actions { display:flex; align-items:center; gap:8px; }
  .crm-mobile-header-actions { display:flex; align-items:center; gap:8px; min-width:0; }
  .crm-mobile-header-actions .btn {
    width:auto!important;
    min-width:44px;
    min-height:42px;
    max-width:170px;
    padding:0 12px!important;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  body.crm-ui .topbar .install-app:not([hidden]) { display:none!important; }

  body.crm-ui .sidebar {
    display:flex!important;
    top:calc(var(--crm-mobile-header-height) + env(safe-area-inset-top))!important;
    bottom:0!important;
    height:auto!important;
    max-height:calc(100vh - var(--crm-mobile-header-height) - env(safe-area-inset-top));
    max-height:calc(100dvh - var(--crm-mobile-header-height) - env(safe-area-inset-top));
    z-index:100!important;
    width:min(320px,calc(100vw - 48px))!important;
    padding:12px max(12px,env(safe-area-inset-right)) calc(12px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))!important;
    overflow:auto!important;
    visibility:hidden;
    pointer-events:none;
    transform:translateX(-105%)!important;
    transition:transform .18s ease,visibility .18s ease;
    box-shadow:8px 0 30px rgb(15 23 42 / 16%)!important;
  }
  body.crm-ui.mobile-menu-open .sidebar {
    visibility:visible;
    pointer-events:auto;
    transform:translateX(0)!important;
  }
  body.crm-ui #side-nav { width:100%; max-height:none; overflow:visible; }
  body.crm-ui #side-nav>button {
    display:flex;
    align-items:center;
    justify-content:flex-start;
    gap:12px;
    width:100%;
    min-height:48px;
    height:auto;
    padding:12px;
    text-align:left;
    font-size:14px;
  }
  body.crm-ui #side-nav>button>.crm-nav-label { display:inline; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  body.crm-ui #side-nav>button.active:after { top:8px; bottom:8px; width:3px; }
  body.crm-ui #side-nav>button[data-route] { display:none; }
  .crm-mobile-nav-groups { display:grid; gap:6px; }
  .crm-mobile-nav-groups summary { display:flex; align-items:center; gap:12px; min-height:48px; padding:12px; cursor:pointer; color:var(--crm-text-primary); }
  .crm-mobile-nav-groups summary .crm-icon:last-child { margin-left:auto; }
  body.crm-ui .crm-mobile-nav-groups button { min-height:44px; height:auto; padding:12px; color:var(--crm-text-secondary); }
  .crm-mobile-nav-groups .crm-nav-label { display:inline; white-space:normal; }
  body.crm-ui .crm-mobile-nav-groups button.active { background:var(--crm-primary-soft); color:var(--crm-primary); }
  body.crm-ui .mobile-nav-backdrop {
    position:fixed;
    inset:calc(var(--crm-mobile-header-height) + env(safe-area-inset-top)) 0 0;
    z-index:90!important;
    display:none!important;
    border:0;
    background:rgb(15 23 42 / 42%);
  }
  body.crm-ui.mobile-menu-open .mobile-nav-backdrop { display:block!important; }
  .crm-mobile-nav-footer {
    display:grid;
    gap:4px;
    margin-top:8px;
    padding:14px 4px 0;
    border-top:1px solid var(--crm-border);
  }
  .crm-mobile-nav-footer>strong { padding:6px 8px; font-size:12px; color:var(--crm-text-muted); }
  .crm-mobile-nav-footer>button {
    display:flex;
    align-items:center;
    gap:12px;
    min-height:44px;
    padding:10px 8px;
    border:0;
    border-radius:var(--crm-radius-sm);
    background:transparent;
    color:var(--crm-text-secondary);
    text-align:left;
  }
  .crm-mobile-nav-footer .crm-icon { width:20px; height:20px; }

  body.crm-ui .content { min-width:0; padding:20px max(20px,env(safe-area-inset-right)) calc(20px + env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left))!important; }
  body.crm-ui :is(.crm-page-header,.page-heading,.ref-heading) { display:none!important; }
  .crm-update-notice {
    left:max(12px,env(safe-area-inset-left));
    right:max(12px,env(safe-area-inset-right));
    bottom:calc(12px + env(safe-area-inset-bottom));
    flex-direction:column;
    align-items:stretch;
  }
  body.crm-ui .table-wrap { max-width:100%; overflow:auto; overscroll-behavior-inline:contain; }
  /* Match the active shared #modal specificity, not the unused legacy side sheet. */
  body.crm-ui #modal {
    z-index:120;
    padding:max(8px,env(safe-area-inset-top)) max(8px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));
  }
  body.crm-ui #modal .dialog {
    inset:auto;
    height:auto;
    max-height:calc(100vh - max(8px,env(safe-area-inset-top)) - max(8px,env(safe-area-inset-bottom)));
    max-height:calc(100dvh - max(8px,env(safe-area-inset-top)) - max(8px,env(safe-area-inset-bottom)));
    padding:0;
  }
  body.crm-ui :is(.form-grid,.record360-form-grid,.hvac-form-grid) { min-width:0; }
}

@media (max-width:767px) {
  body.crm-ui .content { padding:12px max(12px,env(safe-area-inset-right)) calc(16px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))!important; }
  body.crm-ui :is(.panel,.ref-panel,.record360-panel,.supplier-panel,.hvac-section) { border-radius:10px; }
  body.crm-ui .panel { overflow:visible; }
  body.crm-ui [data-crm-context]:empty { display:none; }

  .crm-context-card {
    display:grid;
    gap:12px;
    margin-bottom:12px;
    padding:12px;
  }
  .crm-context-identity { min-width:0; gap:12px; }
  .crm-context-identity .crm-thumbnail-lg { width:48px; height:48px; }
  .crm-context-identity h2 { margin:2px 0; font-size:16px; line-height:1.25; }
  .crm-context-identity p { font-size:12px; }
  .crm-context-identity .btn { min-height:40px; margin-top:8px; }
  .crm-context-fields { grid-template-columns:repeat(2,minmax(0,1fr)); gap:0; width:100%; }
  .crm-context-fields>div { min-width:0; padding:9px 8px; border-top:1px solid var(--crm-divider); }
  .crm-context-fields>div:nth-child(n+4) { display:none; }
  .crm-context-card.is-expanded .crm-context-fields>div { display:block; }
  .crm-context-more {
    display:inline-flex;
    justify-self:start;
    min-height:40px;
    align-items:center;
    border:0;
    background:transparent;
    color:var(--crm-primary);
    font-weight:650;
  }

  .crm-toolbar,
  body.crm-ui :is(.supplier-filters,.filters,.ref-filterbar) {
    display:flex;
    align-items:stretch;
    gap:8px;
    padding:10px;
    flex-wrap:wrap;
  }
  .crm-toolbar .crm-search,
  body.crm-ui :is(.supplier-filters,.filters,.ref-filterbar) :is(.crm-search,label:has(input[type=search]),input[type=search]) {
    flex:1 0 100%;
    width:100%;
    max-width:none;
    min-width:0;
  }
  body.crm-ui :is(.crm-toolbar,.supplier-filters,.filters,.ref-filterbar) :is(input,select,button) { min-height:44px; font-size:14px; }
  .crm-mobile-filter-toggle { display:inline-flex; align-items:center; justify-content:center; gap:7px; }
  .crm-mobile-filter-toggle .crm-icon { width:17px; height:17px; }
  .crm-mobile-quick-filter { flex:1; min-width:0; }
  .crm-mobile-advanced-filter,
  .crm-mobile-filter-actions { display:none!important; }
  .crm-mobile-filters-open .crm-mobile-advanced-filter { display:flex!important; flex:1 0 100%; width:100%; }
  .crm-mobile-filters-open select.crm-mobile-advanced-filter,
  .crm-mobile-filters-open input.crm-mobile-advanced-filter,
  .crm-mobile-filters-open button.crm-mobile-advanced-filter { display:block!important; }
  .crm-mobile-filters-open .crm-mobile-filter-actions {
    display:flex!important;
    justify-content:space-between;
    gap:8px;
    flex:1 0 100%;
    padding-top:8px;
    border-top:1px solid var(--crm-divider);
  }
  .crm-mobile-filter-actions .btn { flex:1; }

  .crm-mobile-table-source { display:none!important; }
  .crm-mobile-record-list { display:grid; gap:10px; padding:10px; background:var(--crm-bg-app); }
  .crm-mobile-record-item {
    min-width:0;
    overflow:visible;
    padding:12px;
    border:1px solid var(--crm-border);
    border-radius:var(--crm-radius-md);
    background:var(--crm-bg-surface);
    box-shadow:var(--crm-shadow-xs);
  }
  .crm-mobile-record-item.crm-selected { border-color:var(--crm-primary-border); box-shadow:inset 3px 0 0 var(--crm-primary); }
  .crm-mobile-record-item>header { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
  .crm-mobile-record-main {
    display:flex;
    align-items:center;
    gap:11px;
    min-width:0;
    min-height:48px;
    flex:1;
    padding:0;
    border:0;
    background:transparent;
    color:inherit;
    text-align:left;
  }
  .crm-mobile-record-main>.crm-thumbnail { width:44px; height:44px; flex:0 0 44px; }
  .crm-mobile-record-main>span { min-width:0; }
  .crm-mobile-record-main strong,
  .crm-mobile-record-main small { display:block; overflow:hidden; text-overflow:ellipsis; }
  .crm-mobile-record-main strong { font-size:15px; line-height:1.3; }
  .crm-mobile-record-main small { margin-top:3px; color:var(--crm-text-muted); font-size:12px; white-space:normal; }
  .crm-mobile-record-item>header>.crm-badge { flex:none; max-width:42%; text-align:center; }
  .crm-mobile-record-summary { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin-top:10px; }
  .crm-mobile-record-summary>span { min-width:0; padding:8px; border-radius:var(--crm-radius-sm); background:var(--crm-bg-subtle); }
  .crm-mobile-record-summary small,
  .crm-mobile-record-summary strong { display:block; min-width:0; }
  .crm-mobile-record-summary small { margin-bottom:3px; color:var(--crm-text-muted); font-size:11px; }
  .crm-mobile-record-summary strong { overflow-wrap:anywhere; font-size:13px; font-weight:650; }
  .crm-mobile-record-summary strong :is(small,.crm-badge) { display:inline-flex; margin:2px 0; }
  .crm-mobile-record-item>footer { display:flex; align-items:center; justify-content:flex-end; gap:8px; margin-top:10px; padding-top:9px; border-top:1px solid var(--crm-divider); }
  .crm-mobile-record-actions { display:flex; align-items:center; margin-right:auto; }
  .crm-mobile-record-actions>.crm-actions>summary,
  .crm-mobile-details-toggle { min-width:44px; min-height:44px; }
  .crm-mobile-details-toggle { display:inline-flex; align-items:center; gap:6px; }
  .crm-mobile-details-toggle .crm-icon { width:15px; height:15px; transition:transform .15s ease; }
  .crm-mobile-details-toggle[aria-expanded=true] .crm-icon { transform:rotate(180deg); }
  .crm-mobile-record-details { margin-top:10px; padding-top:10px; border-top:1px solid var(--crm-divider); }
  .crm-mobile-record-details>dl { display:grid; gap:0; margin:0; }
  .crm-mobile-record-details>dl>div { display:grid; grid-template-columns:minmax(92px,38%) 1fr; gap:10px; padding:8px 0; border-bottom:1px solid var(--crm-divider); }
  .crm-mobile-record-details dt { color:var(--crm-text-muted); font-size:12px; }
  .crm-mobile-record-details dd { min-width:0; margin:0; overflow-wrap:anywhere; font-size:13px; text-align:right; }
  .crm-mobile-domain-detail { margin-top:12px; }
  .crm-mobile-domain-detail>.table-wrap { overflow:auto; }
  .crm-mobile-domain-detail table { min-width:560px; }
  .crm-mobile-record-list+.crm-pagination { padding:10px; }
  .crm-pagination { gap:8px; }
  .crm-pagination>div { margin-left:auto; }
  .crm-pagination label { display:none; }
  .crm-pagination button { min-width:44px; min-height:44px; }

  .crm-kpis { grid-template-columns:repeat(2,minmax(0,1fr))!important; gap:8px; }
  .crm-kpi { min-height:112px; padding:12px; gap:10px; }
  .crm-kpi>span { padding:9px; }
  .crm-kpi strong { font-size:17px; }
  .crm-tabs { width:100%; max-width:100%; overflow-x:auto; scroll-snap-type:x proximity; }
  .crm-tabs button { min-height:44px; padding:10px 12px; white-space:nowrap; scroll-snap-align:start; }

  body.crm-ui :is(.form-grid,.record360-form-grid,.hvac-form-grid,.company-profile-form .form-grid) { grid-template-columns:1fr!important; }
  body.crm-ui :is(input,select,textarea) { max-width:100%; font-size:16px; }
  body.crm-ui :is(.field input,.field select,.field textarea) { min-height:44px; }
  body.crm-ui :is(#content form,.dialog form):has(.form-actions) { padding-bottom:calc(76px + env(safe-area-inset-bottom)); }
  body.crm-ui :is(#content form,.dialog form)>.form-actions {
    position:sticky;
    z-index:12;
    bottom:0;
    display:flex;
    gap:8px;
    margin:16px -12px -12px;
    padding:10px max(12px,env(safe-area-inset-right)) calc(10px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));
    border-top:1px solid var(--crm-border);
    background:rgb(255 255 255 / 96%);
  }
  body.crm-ui :is(#content form,.dialog form)>.form-actions .btn { flex:1; min-height:44px; }

  body.crm-ui :is(.reports-grid,.report-grid,.report-cards,.dashboard-grid) { grid-template-columns:1fr!important; }
  body.crm-ui :is(.chart-card,.report-chart) { min-width:0; }
  body.crm-ui .calendar-layout { display:block!important; }
  body.crm-ui .calendar-month { display:none!important; }
  body.crm-ui .calendar-agenda { display:block!important; width:100%!important; }
  body.crm-ui .calendar-toolbar { display:flex!important; flex-direction:column; align-items:stretch; gap:10px; padding:12px; }
  body.crm-ui .calendar-toolbar h3 { margin:0; text-align:center; font-size:16px; }
  body.crm-ui .calendar-toolbar>span { text-align:center; }
  body.crm-ui .calendar-toolbar>.calendar-nav-controls { display:grid!important; grid-template-columns:44px minmax(0,1fr) 44px; gap:8px; width:100%; }
  body.crm-ui .calendar-toolbar>.calendar-view-switch { display:grid!important; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; width:100%; }
  body.crm-ui .calendar-toolbar :is(.btn,.icon-btn) { width:auto!important; min-height:44px; }
  body.crm-ui .hvac-photo-grid { grid-template-columns:repeat(2,minmax(0,1fr))!important; gap:8px; padding:8px; }
  body.crm-ui .hvac-photo-grid img { width:100%; aspect-ratio:1; object-fit:cover; }
  body.crm-ui .hvac-device-grid { grid-template-columns:1fr!important; }
}

@media (max-width:1199px) {
  html[data-crm-standalone=true] body.crm-ui .content { padding-bottom:calc(20px + env(safe-area-inset-bottom))!important; }
}

@media (max-width:380px) {
  .crm-mobile-header-actions .btn { max-width:132px; padding-inline:10px!important; }
  .crm-mobile-record-summary { grid-template-columns:1fr; }
  .crm-context-fields { grid-template-columns:1fr; }
}

@media (display-mode:standalone) {
  body.crm-ui .topbar { padding-top:env(safe-area-inset-top); }
  body.crm-ui .content { padding-bottom:calc(20px + env(safe-area-inset-bottom))!important; }
  body.crm-ui .sidebar { padding-bottom:calc(12px + env(safe-area-inset-bottom))!important; }
}
