/* Shared browser/PWA constraints. Wide tables scroll inside their own panels,
   never by hiding horizontal overflow on the page. Desktop sizing is unchanged. */
@media (max-width: 760px) {
  html { -webkit-text-size-adjust:100%; text-size-adjust:100%; }
  body { --ui-text:16px; --ui-control:16px; --ui-label:14px; --ui-meta:13px; --ui-heading:20px; font-size:var(--ui-text); }
  :is(#app,#admin-app), :is(#app,#admin-app) :is(.container,.panel,.grid4,.grid-form-fields,.controls-row,.case-form-grid,.case-field,.task-form-field,.task-content,.reference-workspace,.ai-chat-main,.ai-chat-messages,.adm-row2,.adm-card,.adm-toolbar) { min-width:0; max-width:100%; }
  :is(#app,#admin-app) :is(.grid4,.grid-form-fields,.case-form-grid) { grid-template-columns:minmax(0,1fr); }
  :is(#app,#admin-app) :is(label,.case-field,.task-form-field,.ux-field,.fs-select) { min-width:0; max-width:100%; }
  :is(#app,#admin-app,dialog) :is(input,select,textarea):not([type=checkbox],[type=radio],[type=range],[type=file],[type=color],.pdf-inline-editor) {
    box-sizing:border-box; min-width:0; max-width:100%; font-size:16px; line-height:1.4;
  }
  :is(#app,#admin-app) :is(.grid4,.grid-form-fields,.case-form-grid,.task-form-field,.ux-field,.app-drawer) :is(input,select,textarea):not([type=checkbox],[type=radio],[type=range]) { width:100%; min-height:44px; padding:10px 12px; }
  :is(#app,#admin-app,dialog) input:is([type=date],[type=time],[type=datetime-local]) { display:block; width:100%; min-inline-size:0; inline-size:100%; max-inline-size:100%; appearance:none; -webkit-appearance:none; text-align:left; }
  input:is([type=date],[type=time],[type=datetime-local])::-webkit-date-and-time-value { text-align:left; min-height:1.4em; }
  :is(#app,#admin-app) :is(.btn,.type-tab,.fs-trigger) { box-sizing:border-box; min-width:0; max-width:100%; min-height:44px; padding:10px 12px; font-size:var(--ui-control,16px); line-height:1.35; white-space:normal; overflow-wrap:anywhere; }
  :is(#app,#admin-app) .fs-trigger { font-size:16px; }
  :is(#app,#admin-app) :is(.fs-label,.fs-trigger-text) { min-width:0; }
  #app #add-panel .grid-form-fields { gap:12px; }
  #app #add-panel :is(.grid-form-fields label,.ux-add-extra summary) { font-size:15px; line-height:1.35; }
  #app #add-panel .field-hint { font-size:13px; line-height:1.4; }
  #app #add-panel .type-tabs { display:grid; grid-template-columns:minmax(0,1fr); gap:6px; }
  #app .case-scan { padding:12px; }
  #app .case-scan-row { align-items:center; flex-wrap:wrap; }
  #app .case-scan-row > div { flex:1 1 145px; }
  #app .case-scan-row strong { font-size:16px; line-height:1.3; }
  #app .case-scan .btn { flex:0 0 auto; width:auto; }
  #app .case-scan :is([data-status],.case-scan-original) { font-size:14px; line-height:1.45; overflow-wrap:anywhere; }
  #app .case-scan p.case-scan-note { font-size:13px; line-height:1.4; }
  #app :is(.record-col,.record-sub,.task-title,.case-card-title,.case-card-meta,.tst-text,.ref-article-text,.ai-chat-bubble,.today-item-main) { min-width:0; overflow-wrap:anywhere; }
  #app .record-number { min-width:0; max-width:100%; overflow-wrap:anywhere; word-break:normal; font-size:16px; line-height:1.4; text-overflow:clip; white-space:normal; }
  body:not(.mobile-app) #app .record-header { grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto; }
  body:not(.mobile-app) #app .record-header > :first-child { grid-column:1 / -1; grid-row:1; }
  body:not(.mobile-app) #app .record-header > :nth-child(5) { grid-column:3; grid-row:2; }
  #app :is(.ext-row,.record-actions,.case-form-actions,.task-form-actions,.controls-row) { flex-wrap:wrap; }
  #app :is(.ext-row,.record-actions,.case-form-actions) > * { min-width:0; max-width:100%; }
  #app :is(.ext-row,.record-actions) label { flex:1 1 140px; }
  :is(#app,#admin-app) :is(.topbar-inner,.adm-toolbar,.adm-alert,.adm-card-head) { flex-wrap:wrap; }
  #app :is(.ai-chat-bubble table,.ai-chat-bubble pre,.tst-text pre) { display:block; max-width:100%; overflow-x:auto; overscroll-behavior-inline:contain; }
  #app .ai-chat-bubble table { width:max-content; border-collapse:collapse; }
  #app .ai-chat-bubble pre { white-space:pre; }
  :is(#app,#admin-app) :is(img,video,audio) { max-width:100%; }
  dialog:not([data-swipe-stage]) { box-sizing:border-box; min-width:0; max-width:calc(100% - max(8px,env(safe-area-inset-left)) - max(8px,env(safe-area-inset-right))); max-height:calc(100dvh - max(8px,env(safe-area-inset-top)) - max(8px,env(safe-area-inset-bottom))); }
  dialog :is(input,textarea,select,.row) { min-width:0; max-width:100%; }
  dialog .row { flex-wrap:wrap; }
  .ai-reference-content,.access-subscription-body { min-height:0; overflow-y:auto; overscroll-behavior:contain; }
  .access-subscription-head { flex:none; }
  .access-subscription-body > * { min-width:0; }
  #admin-app .adm-card { overflow-x:visible; }
  #admin-app .adm-table-scroll { min-width:0; max-width:100%; overflow-x:auto; }
  #admin-app .adm-alert { gap:8px; }
  #admin-app .adm-alert-go { min-height:44px; white-space:normal; }
  #admin-app .adm-kpi-label,#admin-app .adm-kpi-sub { font-size:13px; }
}
/* The phone shell also runs on tablets. A number gets a whole row before
   considering a wrap; unusually long identifiers wrap and remain selectable. */
body.mobile-app { --ui-text:16px; --ui-control:16px; --ui-label:14px; --ui-meta:13px; --ui-heading:20px; font-size:var(--ui-text); font-family:var(--font-sans); }
body.mobile-app :is(button,input,textarea,select,h1,h2,h3,strong,.record-number) { font-family:inherit!important; }
body.mobile-app #app .mobile-case-title-row { display:grid; grid-template-columns:minmax(0,1fr) 44px; gap:6px 8px; align-items:center; margin-bottom:14px; }
body.mobile-app #app .mobile-case-title-row > div { display:contents; }
body.mobile-app #app .mobile-case-title-row small { grid-column:1; grid-row:1; }
body.mobile-app #app .mobile-case-title-row .mobile-case-more { grid-column:2; grid-row:1; }
body.mobile-app #app .mobile-case-title-row h2 { grid-column:1 / -1; grid-row:2; width:100%; min-width:0; margin:0; font-size:20px; line-height:1.35; overflow-wrap:anywhere; word-break:normal; user-select:text; }
body.mobile-app #app .mobile-record-header .record-number { font-size:17px; white-space:normal; text-overflow:clip; word-break:normal; overflow-wrap:anywhere; }
body.mobile-app #app .mobile-record-header { min-height:0; padding:12px!important; }
body.mobile-app #app .mobile-record-footer { flex-wrap:wrap; gap:6px 10px; }
body.mobile-app #app .mobile-record-footer .mobile-record-deadline { min-width:0; flex:1 1 180px; }
body.mobile-app #app .mobile-workspace-heading h2 { font-size:18px; line-height:1.4; }
body.mobile-app .case-number-value { display:inline-block; max-width:100%; overflow-wrap:anywhere; word-break:normal; user-select:text; }
body.mobile-app #app :is(.mobile-workspace-record,.mobile-home-card) > strong { font-size:16px; }
body.mobile-app #app .mobile-section-editor-head { flex-wrap:wrap; column-gap:12px; row-gap:4px; padding-bottom:8px; min-height:60px; }
body.mobile-app #app .mobile-section-editor-head h2 { min-width:0; flex:1 1 140px; font-size:18px; line-height:1.3; }
body.mobile-app #app .mobile-section-editor-head button { flex:0 0 auto; min-width:70px; }
body.mobile-app #app #case-workspace .mobile-section-editor :is(input,select,textarea):not([type=checkbox],[type=radio]) { min-width:0; max-width:100%; font-size:16px; min-height:44px; padding:10px 12px; }
body.mobile-app #app #case-workspace .mobile-section-editor textarea { min-height:110px; }
body.mobile-app #app #case-workspace .mobile-section-editor .case-form-grid { grid-template-columns:minmax(0,1fr); gap:12px; }
body.mobile-app #app #tab-content-tasks :is(.task-form-title,.task-edit-title input,.task-form-field input,.task-form-field select,.task-form-field textarea) { font-size:16px; min-height:46px; padding:10px 12px; }
body.mobile-app #app .mobile-person-heading { padding-top:calc(10px + env(safe-area-inset-top)); }
body.mobile-app #app :is(.mobile-person-heading h2,.mobile-org-page-head h2) { font-size:20px; }
body.mobile-app #app .mobile-case-info > div { min-width:0; gap:8px; }
body.mobile-app #app .mobile-case-info :is(dt,dd) { min-width:0; overflow-wrap:anywhere; }
body.mobile-app #app .mobile-case-info dd { margin:0; }
body.mobile-app #app .topbar { padding-top:env(safe-area-inset-top); }
body.mobile-app #app .container { padding-left:max(16px,env(safe-area-inset-left)); padding-right:max(16px,env(safe-area-inset-right)); }
html:not(.ios-app) body.mobile-app .mobile-case-back { margin-top:env(safe-area-inset-top); }
body.mobile-app #app #tab-content-tasks .task-edit-btn { grid-column:2 / -1; justify-self:start; font-size:14px; }
body.mobile-app #app #tab-content-tasks .task-row { grid-template-columns:32px minmax(0,1fr); }
body.mobile-keyboard-open .access-banner { display:none; }
body.mobile-app.mobile-keyboard-open #app :is(.task-form:not(.hidden),.task-edit-form,.mobile-section-editor:not(.hidden),#org-manual-form:not(.hidden),.case-person.open),
body.mobile-app.mobile-keyboard-open .mobile-reminder-panel { height:min(100dvh,var(--mobile-visible-height,100dvh)); }
body.mobile-app.mobile-keyboard-open #app #tab-content-ai-chat { height:calc(min(100dvh,var(--mobile-visible-height,100dvh)) - var(--announcement-height,0px)); }
@media (max-width:360px) {
  body.mobile-app #app .mobile-stats { gap:6px; }
  body.mobile-app #app .mobile-stats button { padding:12px 8px; }
  body.mobile-app #app .mobile-stats span { font-size:12px; }
  body.mobile-app #app .controls-row .checkbox-label { flex-basis:100%; font-size:13px; }
  body.mobile-app #app .controls-row #btn-add { margin-left:0; }
}

/* A floating subscription notice must never cover the bottom navigation. */
body.mobile-app .access-banner:not(.access-banner-free) { bottom:calc(80px + env(safe-area-inset-bottom)); max-width:calc(100% - 24px); font-size:13px; }
body.mobile-app:is(.mobile-section-editor-open,.mobile-person-open,.mobile-task-editor-open,.mobile-keyboard-open) .access-banner { display:none; }
body.mobile-app[data-mobile-screen="cases"]:is([data-mobile-case-view="detail"],[data-mobile-case-view="action"]) .access-banner { bottom:calc(12px + env(safe-area-inset-bottom)); }

body.mobile-app #app :is(#case-workspace,#tab-content-tasks,#tab-content-reference) .btn,
body.mobile-app #app :is(.mobile-case-primary-actions .btn,.mobile-home-add,.voice-quick-button,.mobile-case-link,.mobile-menu-item) { font-size:var(--ui-control); line-height:1.4; }
body.mobile-app #app :is(.mobile-section-heading h2,.mobile-case-section h3,.mobile-menu-heading) { font-size:18px; line-height:1.35; }
body.mobile-app #app :is(.mobile-case-section button,.mobile-section-heading button) { font-size:15px; min-height:44px; }
body.mobile-app #app :is(.mobile-record-type,.mobile-record-sub,.mobile-record-deadline,.mobile-open-label,.mobile-section-footnote,.mobile-search,.mobile-reference-notes-status) { font-size:var(--ui-meta); line-height:1.4; }
body.mobile-app #app #case-workspace .mobile-section-editor .case-field,
body.mobile-app #app #tab-content-tasks .task-form-field { font-size:var(--ui-label); line-height:1.4; }
body.mobile-app[data-mobile-screen="ai-chat"] .access-banner,
body.mobile-app[data-mobile-reference-view="detail"] .access-banner,
body.mobile-app.mobile-reminder-open .access-banner { display:none; }
@media(max-width:760px) {
  :is(#app,#admin-app) .btn.small { font-size:var(--ui-control); }
  dialog :is(.access-primary,.access-secondary) { font-size:var(--ui-control,16px); }
}

@media(max-width:760px) {
  #app .summary-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  #app .summary-value { font-size:24px; }
  #app :is(#btn-add,#btn-add-task,#btn-add-reference) { font-size:var(--ui-control,16px); }
  .access-hero h2 { font-size:24px; line-height:1.25; }
}
@media(max-width:760px) {
  #admin-app .topbar-actions { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); width:100%; gap:8px; }
  #admin-app .topbar-actions .btn { width:100%; font-size:16px; line-height:1.35; min-height:44px; }
  #admin-app #admin-receipts { grid-column:1 / -1; grid-row:2; }
}

body.mobile-app #app .mobile-case-primary-actions { display:flex; flex-wrap:wrap; gap:8px; }
body.mobile-app #app .mobile-case-primary-actions .btn { flex:1 1 170px; min-height:46px; padding:10px 12px; }
body.mobile-app[data-mobile-screen="cases"]:is([data-mobile-case-view="detail"],[data-mobile-case-view="action"]) .access-banner { display:none; }
body.mobile-app #app .controls-row #btn-add { width:max-content; max-width:100%; white-space:nowrap; padding:10px 12px; }
@media(max-width:760px) {
  body:has(#add-panel:not(.hidden)) .access-banner { display:none; }
}
/* Keep the header bounded during rotation, before JS moves these same
   controls into the phone menu. They remain visible inside that menu. */
@media(max-width:720px) {
  #app .topbar-actions > :is(#btn-export,#btn-logout) { display:none; }
}
@media(max-width:760px) {
  #admin-app .topbar-actions .who { grid-column:1 / -1; grid-row:1; min-width:0; margin:0; white-space:normal; font-size:13px; }
  #admin-app :is(#admin-refresh,#admin-logout),#admin-app .topbar-actions > a { grid-row:2; }
  #admin-app #admin-receipts { grid-row:3; }
}
@media(max-width:319px) {
  body.mobile-app #app .controls-row #btn-add { width:100%; white-space:normal; }
}
