/* V15.9: field browser layout. Desktop rules remain in style.css. */
.field-browser .desktop-hardware:not([data-terminal-feature]):not([data-terminal-container]),
.field-browser .desktop-upload:not([data-terminal-feature]),
.field-browser .draft-photo-qr:not([data-terminal-feature]) { display:none!important; }

/* SVG styling is shared by desktop and mobile; permissions still use .hidden. */
#nav .nav-icon { display:flex;align-items:center;justify-content:center;flex:0 0 22px;width:22px;height:22px; }
#nav .nav-icon svg,.mobile-nav svg { width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round; }
#nav button.hidden { display:none!important; }
.sidebar-close { display:none; }
.field-filter-toggle { display:none; }

@media(max-width:920px), (max-width:1100px) and (hover:none) and (pointer:coarse) {
  :root { --mobile-nav-height:58px;--page-gutter:12px; }
  /* One document scroller: body must not become a second 100%-high scroller. */
  html { width:100%;min-width:0;height:auto;min-height:100%;overflow-x:hidden;overflow-y:auto;scroll-behavior:auto;scroll-padding-top:80px; }
  body,.pwa-standalone body { width:100%;min-width:0;height:auto;min-height:100%;margin:0;padding:0;overflow:visible;-webkit-text-size-adjust:100%;text-size-adjust:100%; }
  .app-shell { display:block;width:100%;min-width:0;min-height:var(--layout-height,100vh); }
  .main { width:100%!important;max-width:none;min-width:0;margin:0!important;padding:0 max(var(--page-gutter),env(safe-area-inset-right)) calc(20px + var(--mobile-nav-height) + env(safe-area-inset-bottom)) max(var(--page-gutter),env(safe-area-inset-left))!important; }
  .page { width:100%;max-width:none;min-width:0;margin:0;padding-top:10px; }
  .main>.page>* { min-width:0;max-width:100%; }
  .topbar { position:sticky!important;top:0;z-index:150;display:grid!important;grid-template-columns:44px minmax(0,1fr)!important;gap:6px!important;min-height:56px;height:auto!important;margin:0 calc(-1 * var(--page-gutter));padding:calc(6px + env(safe-area-inset-top)) var(--page-gutter) 6px!important;background:#fff;backdrop-filter:none;border-bottom:1px solid #dce5f0; }
  .topbar>.topbar-heading { grid-column:2!important;grid-row:1!important;min-width:0; }
  .topbar h2 { margin:0;font-size:20px;line-height:1.3;white-space:normal; }
  .topbar p,.online-pill { display:none!important; }
  #menuBtn { display:grid!important;place-items:center;grid-column:1;grid-row:1;width:44px;height:44px;border:1px solid #cddcec;border-radius:10px;background:#f1f6fc;color:#125cb5; }
  .topbar>#pageHeaderActions { grid-column:1/-1!important;grid-row:2!important;min-width:0;width:100%;margin:0!important; }
  .topbar>#pageHeaderActions.field-empty { display:none!important; }
  .page-header-action-group { flex-wrap:wrap;gap:6px; }
  .page-header-action-group .btn { min-height:42px; }

  .mobile-nav { display:grid;grid-template-columns:repeat(var(--mobile-nav-count,5),minmax(0,1fr));position:fixed;inset:auto 0 0;z-index:180;min-height:0;height:calc(var(--mobile-nav-height) + env(safe-area-inset-bottom));padding:4px max(6px,env(safe-area-inset-right)) calc(4px + env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left));background:#fff;border-top:1px solid #cfdaea;box-shadow:0 -3px 12px #18365a0a; }
  .mobile-nav button { display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:0;min-height:44px;height:50px;padding:3px;border-radius:10px;color:#526780;font-size:12px; }
  .mobile-nav button.active { color:#0b57d0;background:#edf4ff; }
  .mobile-nav button i { display:flex;align-items:center;justify-content:center;height:22px;font-size:20px; }
  .keyboard-open .mobile-nav { display:none!important; }
  .keyboard-open .main { padding-bottom:20px!important; }

  .sidebar { position:fixed;inset:0 auto auto 0!important;top:var(--visual-top,0px)!important;width:min(88vw,340px)!important;max-width:calc(100% - 36px);height:var(--app-height,100vh)!important;min-height:0;padding:calc(10px + env(safe-area-inset-top)) 12px calc(8px + env(safe-area-inset-bottom))!important;display:flex!important;flex-direction:column;overflow:hidden!important;transform:translateX(-104%)!important;z-index:270!important; }
  .sidebar.open { transform:translateX(0)!important; }
  .sidebar-scrim { position:fixed!important;inset:0!important;z-index:260!important;background:#04122470; }
  .sidebar .brand { position:relative;gap:10px;min-width:0;padding:2px 36px 12px 2px; }
  .sidebar .brand strong { font-size:17px; }
  .sidebar .brand small { font-size:12px; }
  .sidebar .sidebar-logo { flex:0 0 56px;width:56px;height:46px;object-fit:contain;background:#fff;border-radius:6px;padding:3px; }
  .sidebar-close { display:grid;place-items:center;position:absolute;right:-3px;top:0;width:36px;height:40px;border:0;border-radius:8px;color:#fff;background:#ffffff14;font-size:25px; }
  .sidebar nav { display:flex!important;flex:1 1 auto!important;min-height:0!important;flex-direction:column;gap:3px;padding:4px 0 10px;overflow-y:auto!important;overflow-x:hidden!important;overscroll-behavior:contain; }
  #nav button:not(.hidden) { display:flex!important;align-items:center;gap:10px;flex:0 0 auto;min-width:0;min-height:46px;width:100%;padding:10px 12px;font-size:16px;line-height:1.3; }
  #nav button>span:not(.nav-icon) { min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
  #nav .nav-count { flex:0 0 auto;margin-left:auto; }
  #nav button.hidden { display:none!important; }
  .nav-group-label { padding:12px 12px 3px;font-size:11px;letter-spacing:0;color:#a7bcdc; }
  .sidebar .sidebar-user.account-bar { flex:0 0 auto;min-width:0;margin:0!important;padding:7px 2px 0!important; }
  .account-trigger { min-height:54px;padding:5px; }
  .account-avatar { width:36px;height:36px;flex-basis:36px; }
  .account-summary strong { font-size:16px; }
  .account-summary small { margin:3px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
  .account-menu { max-height:calc(var(--app-height,100vh) - 140px); }

  .panel { min-width:0;padding:12px!important;margin-bottom:10px; }
  .panel-head { margin-bottom:10px;gap:8px; }
  .panel-head>div { flex:1 1 160px; }
  .panel-head p,.procurement-intro,.maintenance-history-summary em,.inventory-role-guide,.linen-c72-guide { display:none; }
  .workspace-tabs,.procurement-tabs,.maintenance-tabs { position:static!important;margin-bottom:10px; }
  .procurement-tabs button { flex:1 1 auto;min-width:0;min-height:44px;padding:8px;font-size:14px; }
  input,select,textarea { box-sizing:border-box;min-width:0;max-width:100%;font-size:16px!important;scroll-margin-block:85px; }
  input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select { min-height:44px; }
  input[type=date],input[type=time],input[type=datetime-local] { display:block;min-width:0!important;width:100%;max-width:100%;min-inline-size:0;appearance:none;-webkit-appearance:none;padding:9px 8px;text-align:left; }
  input::-webkit-date-and-time-value { min-width:0;min-height:1.4em;text-align:left; }
  input::-webkit-datetime-edit { min-width:0;padding:0; }
  fieldset { min-inline-size:0;max-width:100%; }
  .form-grid,.form-grid-3 { gap:10px;grid-template-columns:repeat(2,minmax(0,1fr))!important; }
  .form-grid .full,.form-grid-3 .full { grid-column:1/-1!important; }
  .form-grid>label,.form-grid-3>label { min-width:0;margin:0;font-size:13px;line-height:1.5; }
  .form-grid label input,.form-grid label select { margin-top:5px; }
  .form-grid .location-picker input { margin-top:0; }
  .procurement-core-grid>label:first-child { grid-column:1/-1; }
  .form-section-title { margin:16px 0 9px;padding-top:10px;font-size:14px; }
  .form-section-title:first-child { margin-top:0;padding-top:0; }
  #assetCreateForm .required-label::after { content:none; }
  #assetCreateForm .required-label>.field-label::after { content:' *';color:#c42d25; }
  #assetCreateForm .required-field:not(.invalid) { border-color:#c7d5e5!important;box-shadow:none!important;background:#fff; }
  #assetCreateForm .required-field:focus { border-color:#2670c8!important;box-shadow:0 0 0 2px #2670c818!important; }
  #assetCreateForm .field-help,.form-details>summary>span,.form-section-title>small { display:none; }
  #assetCreateForm #acWarrantyHint,#assetCreateForm #acResult { display:block; }
  .form-details { margin:12px 0; }
  .form-details>summary { padding:11px;gap:8px;font-size:14px; }
  .form-details>summary::after { content:'＋';color:#38668f; }
  .form-details[open]>summary::after { content:'−'; }
  .form-details>.form-grid { padding:11px; }
  .procurement-submit-bar { position:static;inset:auto;margin:12px 0 0;padding:12px 0 0;box-shadow:none;display:flex;flex-wrap:wrap;gap:8px; }
  .procurement-submit-bar #acSubmitBtn { flex:1; }
  .procurement-submit-bar #acResult { flex-basis:100%; }
  .transfer-policy-segment { flex-wrap:wrap; }
  .transfer-policy-segment label { flex:1 1 100%; }

  /* Keyword/status remain visible. Other filters keep their values when folded. */
  .business-range-filter,.business-range-filter.disposal-filters { grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px;margin-top:8px;padding:10px; }
  .business-range-filter>label { display:flex;flex-direction:column;align-items:stretch;gap:5px;margin:0;min-width:0; }
  .business-range-filter .filter-wide { grid-column:1/-1!important; }
  .business-range-filter input,.business-range-filter select { margin:0; }
  .field-filter-toggle { display:flex;align-items:center;justify-content:center;gap:4px;min-width:0;min-height:44px;border:1px solid #c9d9eb;border-radius:9px;background:#fff;color:#245990;font:inherit;font-size:14px; }
  .business-range-filter:not(.field-filters-open)>.field-filter-extra { display:none; }
  .business-range-filter>.range-filter-actions { grid-column:1/-1!important;display:flex;gap:8px; }
  .range-filter-actions>.btn { flex:1; }
  .maintenance-history-summary { gap:5px;margin:10px 0; }
  .maintenance-history-summary span { padding:5px 7px;font-size:12px; }

  .login-shell { min-height:var(--app-height,100vh);padding:calc(18px + env(safe-area-inset-top)) 16px calc(18px + env(safe-area-inset-bottom));align-items:center; }
  .login-card { width:100%;max-width:400px;padding:22px;border-radius:16px; }
  .login-logo { max-height:64px;object-fit:contain; }
  .login-card h1 { margin-top:12px;font-size:24px; }
  .login-card p { margin-bottom:12px; }
  .login-card label { margin:12px 0; }
  .keyboard-open .login-shell { align-items:start;padding-top:12px; }
  .keyboard-open .login-logo,.keyboard-open .login-card>p { display:none; }
  .keyboard-open .login-card { padding:16px; }
  .keyboard-open .login-card h1 { margin-top:0; }
  .modal,.modal.modal-room-return { top:var(--visual-top,0px)!important;bottom:auto!important;left:0!important;width:100%!important;max-width:100%!important;height:var(--app-height,100vh)!important;max-height:var(--app-height,100vh)!important;border-radius:0!important; }
  .drawer { top:var(--visual-top,0px)!important;bottom:auto!important;width:100%!important;height:var(--app-height,100vh)!important; }
  .modal .modal-head { padding-top:calc(10px + env(safe-area-inset-top)); }
  .modal .modal-actions { position:static; }
  .keyboard-open .modal .modal-head,.keyboard-open .drawer-head { padding-top:8px; }
}

@media(max-width:360px) {
  .form-grid,.form-grid-3 { grid-template-columns:minmax(0,1fr)!important; }
  .business-range-filter,.business-range-filter.disposal-filters { grid-template-columns:minmax(0,1fr)!important; }
}
@supports(overflow:clip) {
  @media(max-width:920px), (max-width:1100px) and (hover:none) and (pointer:coarse) {
    html { overflow-x:clip; }
  }
}

/* V16.1: field operations, selection targets and an accessible photo footer. */
.field-browser .desktop-only:not([data-terminal-feature]):not([data-terminal-container]){display:none!important}
.asset-card-check{display:grid!important;place-items:center;width:44px;height:44px;min-height:44px;padding:0!important;margin:0!important;border:0;background:transparent;box-shadow:none;line-height:1}
.asset-card-check input[type=checkbox]{display:block;appearance:auto;-webkit-appearance:checkbox;width:22px!important;height:22px!important;min-width:22px!important;min-height:22px!important;margin:0!important;padding:0!important;border-radius:4px;box-shadow:none;transform:none;accent-color:#155dd3}
.asset-card.selectable .asset-info h4{padding-right:38px}
.page-inline-hint{font-size:13px;line-height:1.4;color:#60758e;margin:0}
.custody-people-panel>.panel-head{justify-content:flex-end;margin-bottom:6px}
.image-zoom-toolbar .image-close-button{min-width:66px;background:#fff;color:#153956;border-color:#fff;font-size:16px}
@media(max-width:920px),(max-width:1100px) and (hover:none) and (pointer:coarse){
 .asset-command-toolbar{padding:8px!important;margin:8px 0}
 .asset-command-groups{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px!important}
 .asset-command-group{padding:0!important;border:0!important;background:none!important;box-shadow:none!important;gap:0!important;min-width:0}
 .asset-command-group-title{display:none!important}
 .asset-command-buttons{gap:6px!important}
 #assetFilterToolGroup,#assetSelectionToolGroup{grid-column:1/-1}
 .asset-command-buttons>.btn{min-height:44px!important;padding:7px 5px!important;font-size:14px!important;min-width:0}
 #assetBatchToolGroup{grid-column:2;grid-row:2}
 #assetCaptureToolGroup{grid-column:1;grid-row:2}
 #assetCaptureToolGroup .asset-command-buttons{grid-template-columns:minmax(0,1fr)}
 .asset-card-check{top:4px;right:4px}
 .asset-info{min-width:0;padding:10px!important}
 .asset-info h4{margin-bottom:6px!important}
 .image-backdrop{top:var(--visual-top,0px)!important;bottom:auto!important;height:var(--app-height,100dvh);padding:0!important;overflow:hidden}
 .image-preview-stage{width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;padding:calc(46px + env(safe-area-inset-top)) 8px calc(112px + env(safe-area-inset-bottom));box-sizing:border-box}
 .image-preview-stage img{max-height:100%!important;max-width:100%!important}
 .image-backdrop>.image-close{display:none}
 .image-zoom-toolbar{position:absolute!important;left:50%!important;top:auto!important;bottom:calc(14px + env(safe-area-inset-bottom))!important;transform:translateX(-50%);white-space:nowrap;gap:6px;padding:7px;max-width:calc(100% - 20px)}
 .image-zoom-toolbar button{min-width:40px!important;height:44px!important;padding:0 8px!important;font-size:16px!important}
 .image-zoom-toolbar strong{font-size:13px}
 .image-zoom-toolbar span{display:none}
 .image-zoom-toolbar .image-close-button{min-width:64px!important}
 .image-preview-stage .image-counter{top:calc(12px + env(safe-area-inset-top))!important;bottom:auto!important}
 .image-nav{position:absolute!important;top:auto!important;bottom:calc(84px + env(safe-area-inset-bottom))!important;width:44px;height:44px;transform:none}
 .image-prev{left:calc(50% - 58px)}.image-next{right:calc(50% - 58px)}
 .energy-room-heading{display:none}
 .page-inline-hint{font-size:12px}
}

.luggage-order-card{grid-template-columns:minmax(0,1fr) auto auto}
@media(max-width:600px){.luggage-order-card{grid-template-columns:minmax(0,1fr) auto}.luggage-order-card>.btn{grid-column:1/-1}}

/* V16.8: the shared close controls must stay below the phone status bar,
   including delivery/energy overrides, landscape and the open keyboard. */
@media(max-width:920px), (max-width:1100px) and (hover:none) and (pointer:coarse) {
  #modal > .modal-head, #drawer > .drawer-head {
    box-sizing:border-box;display:flex;align-items:center;gap:10px;flex:0 0 auto;
    position:sticky;top:0;z-index:12;background:#fff;
    padding:calc(10px + env(safe-area-inset-top,0px)) max(14px,env(safe-area-inset-right,0px)) 10px max(14px,env(safe-area-inset-left,0px))!important;
    min-height:calc(64px + env(safe-area-inset-top,0px))!important;
  }
  #modalTitle, #drawer > .drawer-head > div {flex:1 1 auto;min-width:0;margin:0;overflow-wrap:anywhere;}
  #modalTitle, #dTitle {max-height:3.9em;overflow:auto;line-height:1.3;font-size:19px;}
  #modalClose, #drawerClose {
    position:relative;inset:auto;flex:0 0 44px;display:grid;place-items:center;
    width:44px!important;min-width:44px!important;height:44px!important;min-height:44px!important;
    padding:0!important;margin:0!important;border-radius:10px;line-height:1;font-size:28px;
    pointer-events:auto;touch-action:manipulation;z-index:1;
  }
  #modal > #modalBody {min-height:0;overscroll-behavior:contain;}
}
.field-browser #navParameters:not([data-terminal-feature]),.field-browser [data-page="parameters"]:not([data-terminal-feature]){display:none!important}

/* Weak-network status stays below the safe area and never covers modal controls. */
.network-banner{display:flex;align-items:center;gap:10px;max-width:calc(100vw - 24px);border-radius:12px;top:auto;bottom:calc(76px + env(safe-area-inset-bottom));font-size:12px;line-height:1.4;z-index:250}
.network-banner button{flex-shrink:0;border:1px solid #ffffff80;background:transparent;color:white;padding:6px 10px;border-radius:8px}
.has-modal .network-banner{display:none}.image-loading{background:linear-gradient(100deg,#f2f6fc,#e4edf8,#f2f6fc)}.image-retry{border:0;background:#eef4fc;color:#245f9d;border-radius:6px;font-size:12px;padding:7px}

/* Quiet cache indicator stays in the header's status area, never above form controls. */
#networkBanner{position:static;transform:none;inset:auto;display:inline-flex;max-width:100%;gap:4px;background:transparent;color:#72839b;padding:0;border-radius:0;box-shadow:none;font-size:10px;line-height:1.3;z-index:auto;white-space:nowrap}
#networkBanner button{padding:1px 4px;color:#64748b;border:0;background:transparent;font-size:10px}
#networkBanner.hidden{display:none!important}
.task-workspace-shade{position:fixed;inset:0;background:#17345866;z-index:89;display:flex;align-items:center;justify-content:center;padding:20px}
.task-workspace-dialog{background:#f7faff;border-radius:16px;width:min(1400px,96vw);max-height:94dvh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 70px #142a4b44}
.task-workspace-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;background:white;border-bottom:1px solid #dce5ef;flex:none}
.task-workspace-head h3{margin:0;font-size:18px}.task-workspace-body{overflow:auto;padding:12px;min-height:0;overscroll-behavior:contain}.task-workspace-body>.panel{margin:0}
.task-workspace-body [data-inv-back]{display:none}.has-task-workspace{overflow:hidden}
@media(max-width:700px){.task-workspace-shade{padding:0;z-index:300}.task-workspace-dialog{width:100%;height:100dvh;max-height:100dvh;border-radius:0;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}.task-workspace-head{padding:10px 12px}.task-workspace-body{padding:8px}}

/* Field browsers keep asset scanning in the sticky header. The query toolbar
   remains focused on filters and selection, so no empty capture slot is left. */
@media(max-width:920px),(max-width:1100px) and (hover:none) and (pointer:coarse){
  .field-browser .topbar{position:sticky!important;top:0}
  .field-browser .topbar-heading{padding-right:138px}
  .field-browser #assetScanHeaderGroup:not(.hidden):not(.terminal-feature-hidden){display:flex!important;position:absolute;top:calc(6px + env(safe-area-inset-top));right:var(--page-gutter);z-index:2;width:auto}
  .field-browser #assetScanHeaderGroup .asset-header-scan{display:inline-flex!important;min-height:42px;padding:7px 11px;font-size:14px}
  .field-browser #assetCaptureToolGroup:not([data-terminal-feature]){display:none!important}
  .field-browser #assetFilterToolGroup{grid-column:1/-1!important}
  .field-browser #assetFilterToolGroup .asset-command-buttons{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .field-browser #assetFilterToolGroup #assetNoRfidBtn{grid-column:1/-1}
  .field-browser #assetBatchToolGroup{grid-column:1/-1!important;grid-row:auto!important;display:grid!important}
  .field-browser #assetBatchToolGroup .asset-command-buttons{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .field-browser #assetBatchToolGroup #assetBatchOpsBtn{grid-column:1/-1}
  .asset-scan-modal .scan-manual-fallback{grid-template-columns:1fr}
  .asset-scan-modal .scan-manual-fallback .btn{width:100%}
  .asset-scan-modal .scan-result dl{grid-template-columns:1fr}
  .linen-entry-guide{align-items:stretch;flex-direction:column}.linen-entry-guide .btn{width:100%}
}
