/* iPhone browse screens (ios-browse.js): the iOS wireframes' Today, Patients, Schedule, patient record and About, New patient,
   Settings, Account and Privacy. Apple HIG structure (large titles, grouped inset lists, a five-tab bar, action sheets, a form
   sheet) in DocVoc colours from tokens.css only, so dark mode follows; iOS green is used for switches alone. Phones (≤760px)
   with html.ios only; Android and the wide layouts never see any of it. */
#ios-bar,#ios-select-bar,#phone-tabs [data-phone=settings]{display:none}
@media(max-width:760px){
:root.ios{--ios-bg:color-mix(in srgb,var(--app-bg) 62%,var(--border));--ios-card:var(--card);--ios-sep:color-mix(in srgb,var(--ink) 13%,transparent);--ios-fill:color-mix(in srgb,var(--ink) 8%,transparent);--ios-fill-strong:color-mix(in srgb,var(--ink) 16%,transparent);--ios-switch-on:#34c759;--ios-call:var(--signed-text);--ios-radius:12px;--ios-bar-bg:color-mix(in srgb,var(--ios-card) 88%,transparent)}
:root.ios[data-theme=dark]{--ios-bg:var(--app-bg);--ios-card:var(--popover);--ios-fill-strong:color-mix(in srgb,var(--ink) 26%,transparent);--ios-switch-on:#30d158;--ios-call:var(--signed-accent)}
:root.ios .ios-icon{width:22px;height:22px;flex-shrink:0;fill:currentColor}

/* ---- Tab bar: Today · Schedule · Patients · Genie · Settings; no raised record button (Record is in the nav bar) ---- */
:root.ios #phone-tabs{align-items:flex-start;padding:0 0 var(--safe-bottom);background:var(--ios-bar-bg);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-top:1px solid var(--ios-sep)}
:root.ios #phone-tabs #phone-record{display:none}
:root.ios #phone-tabs [data-phone=settings]{display:flex}
:root.ios #phone-tabs button{height:56px;padding:7px 0 0;gap:3px;font-size:10px;font-weight:500;letter-spacing:.01em;color:var(--hint)}
:root.ios #phone-tabs .icon{width:25px;height:25px}
:root.ios #phone-tabs button.active{color:var(--accent-text);font-weight:600}
:root.ios.ios-subscreen{--tabbar:var(--safe-bottom)}
:root.ios.ios-subscreen #phone-tabs,:root.ios.ios-selecting #phone-tabs{display:none}

/* ---- Large-title nav bar (Today, Schedule, Patients): the title and its subtitle, actions on the right ---- */
:root.iosb .workspace,:root.iosb .workspace-header,:root.ios-own-bar .workspace{background:var(--ios-bg)}
:root.iosb .workspace-header{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;column-gap:8px;row-gap:0;align-items:center;height:auto;padding:calc(var(--safe-top) + 8px) 12px 8px 16px;border-bottom:1px solid transparent;transition:border-color var(--motion-fast) var(--ease)}
:root.iosb .workspace-header.ios-scrolled{border-bottom-color:var(--ios-sep)}
:root.iosb .workspace-header .phone-heading{display:contents}
:root.iosb .workspace-header .toolbar{display:none}
:root.iosb #phone-title{grid-area:1/1/2/2;font-size:34px;line-height:1.2;font-weight:700;letter-spacing:.005em;color:var(--ink)}
:root.iosb #phone-subtitle{grid-area:2/1/3/2;font-size:15px;line-height:1.35;color:var(--hint)}
:root.iosb #ios-bar:not([hidden]){display:contents}
:root.ios .ios-bar-top{grid-area:1/2/2/3;position:relative;z-index:1;display:flex;align-items:center;justify-content:flex-end;gap:2px}
:root.ios .ios-bar-bottom{grid-area:2/2/3/3;display:flex;justify-content:flex-end}
:root.ios .ios-bar-bottom:not(:has(>:not([hidden]))){display:none}
:root.ios-own-bar .workspace-header{display:none!important}

/* ---- Buttons: the tinted capsule, text buttons, filled and plain ---- */
:root.ios .ios-capsule{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:6px;height:34px;min-height:34px;padding:0 16px;border:0;border-radius:999px;background:var(--accent);color:var(--on-accent);font-size:15px;font-weight:600;line-height:1;text-decoration:none;white-space:nowrap}
:root.ios .ios-capsule::after{content:'';position:absolute;inset:-6px -3px}
:root.ios .ios-capsule:hover{background:var(--accent-hover)}
:root.ios .ios-capsule.tinted{background:var(--accent-tint);color:var(--accent-text)}
:root.ios .ios-capsule.tinted:hover{background:var(--accent-tint-hover)}
:root.ios .ios-capsule.live{background:var(--danger-fill);color:var(--on-accent)}
:root.ios .ios-text,:root.ios .ios-nav-text{position:relative;min-height:44px;padding:0 8px;border:0;border-radius:8px;background:transparent;color:var(--accent-text);font-size:17px;font-weight:400;white-space:nowrap}
:root.ios .ios-text.strong,:root.ios .ios-nav-text.strong{font-weight:600}
:root.ios .ios-text:hover,:root.ios .ios-nav-text:hover{background:transparent;color:var(--accent-text-hover)}
:root.ios .ios-text:disabled{color:var(--disabled);opacity:1}
:root.ios .ios-icon-button{display:inline-grid;place-items:center;width:44px;height:44px;min-height:44px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--accent-text)}
:root.ios .ios-icon-button .ios-icon{width:28px;height:28px}
:root.ios .ios-tinted{min-height:44px;padding:0 22px;border:0;border-radius:999px;background:var(--accent-tint);color:var(--accent-text);font-size:15px;font-weight:600}
:root.ios .ios-tinted:hover{background:var(--accent-tint-hover)}
:root.ios .ios-filled{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:50px;padding:0 20px;border:0;border-radius:14px;background:var(--accent);color:var(--on-accent);font-size:17px;font-weight:600}
:root.ios .ios-filled:hover{background:var(--accent-hover)}
:root.ios .ios-filled .ios-icon{width:20px;height:20px}
:root.ios .ios-plain{display:inline-flex;align-items:center;justify-content:center;min-height:50px;padding:0 26px;border-radius:14px;background:var(--ios-card);color:var(--accent-text);font-size:17px;font-weight:600;text-decoration:none}

/* ---- Grouped inset lists: uppercase headers, rounded cards, inset hairlines, disclosure chevrons, switches ---- */
:root.ios .ios-group{display:flex;flex-direction:column;flex-shrink:0;margin:0 0 24px}
:root.ios .ios-group-title{margin:0 0 7px;padding:0 16px;font-size:13px;font-weight:400;line-height:1.3;letter-spacing:.02em;text-transform:uppercase;color:var(--hint)}
:root.ios .ios-card{display:flex;flex-direction:column;background:var(--ios-card);border-radius:var(--ios-radius);overflow:hidden}
:root.ios .ios-footnote{margin:7px 0 0;padding:0 16px;font-size:13px;line-height:1.4;color:var(--hint)}
:root.ios .ios-card>:is(.ios-item,.ios-row)+:is(.ios-item,.ios-row)::before,:root.iosb #home-records>:is(.ph-swipe,.ios-row)+:is(.ph-swipe,.ios-row)::before{content:'';position:absolute;top:0;left:16px;right:0;height:1px;background:var(--ios-sep);z-index:2}
:root.iosb #home-records>:is(.ph-swipe,.ios-row)+:is(.ph-swipe,.ios-row)::before{left:66px}
:root.iosb #home-records>.ios-selectable+.ios-selectable::before{left:104px}
:root.ios .ios-item{position:relative;display:flex;align-items:center;justify-content:flex-start;gap:12px;width:100%;min-height:44px;margin:0;padding:10px 14px 10px 16px;border:0;border-radius:0;background:transparent;color:var(--ink);font-size:17px;font-weight:400;line-height:1.3;text-align:left;text-decoration:none}
:root.ios :is(button,a).ios-item:hover{background:transparent}
:root.ios :is(button,a).ios-item:active{background:var(--ios-fill)}
:root.ios .ios-item:disabled{opacity:.45;cursor:default}
:root.ios .ios-item-copy,:root.ios .ios-row-copy{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
:root.ios .ios-item-copy strong{font-size:17px;font-weight:400;line-height:1.3;color:inherit}
:root.ios .ios-item-copy small{font-size:13px;line-height:1.35;color:var(--hint)}
:root.ios .ios-value{flex:0 1 auto;min-width:0;max-width:58%;font-size:17px;color:var(--hint);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
:root.ios .ios-item.tint{color:var(--accent-text)}
:root.ios .ios-item.danger{color:var(--danger)}
:root.ios .ios-item.stacked{padding-block:9px}
:root.ios .ios-item.stacked strong{overflow-wrap:anywhere}
:root.ios .ios-item.stacked strong.none{color:var(--hint)}
:root.ios .ios-chevron{flex:0 0 auto;width:8px;height:8px;margin:0 3px 0 2px;border-top:2px solid;border-right:2px solid;border-color:color-mix(in srgb,var(--hint) 62%,transparent);transform:rotate(45deg)}
:root.ios .ios-chevron.back{transform:rotate(-135deg)}
:root.ios .ios-switch{position:relative;flex:0 0 51px;width:51px;height:31px;border-radius:16px;background:var(--ios-fill-strong);transition:background var(--motion-fast) var(--ease)}
:root.ios .ios-switch::after{content:'';position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:50%;background:var(--on-accent);box-shadow:0 3px 8px color-mix(in srgb,#000 15%,transparent),0 1px 1px color-mix(in srgb,#000 16%,transparent);transition:transform var(--motion-fast) var(--ease)}
:root.ios [aria-checked=true]>.ios-switch{background:var(--ios-switch-on)}
:root.ios [aria-checked=true]>.ios-switch::after{transform:translateX(20px)}
:root.ios .ios-card>.empty-state{margin:0;padding:24px 20px;border:0;background:transparent}

/* Rows with a title, one line, a trailing value and a chevron (Today, Schedule, the patient record). */
:root.ios .ios-row{min-height:44px;padding:11px 12px 11px 16px;gap:12px;border:0;border-radius:0;background:var(--ios-card);color:var(--ink);transition:transform var(--motion-fast) var(--ease),background var(--motion-fast) var(--ease)}
:root.ios .ios-row:hover{background:var(--ios-card)}
:root.ios .ios-row:active{background:color-mix(in srgb,var(--ink) 6%,var(--ios-card))}
:root.ios .ios-row-copy strong{font-size:17px;font-weight:400;line-height:1.3;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
:root.ios .ios-row-copy small{font-size:14px;line-height:1.35;color:var(--hint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
:root.ios .ios-trail{flex-shrink:0;font-size:15px;color:var(--hint);font-variant-numeric:tabular-nums}
:root.ios .ios-avatar{width:38px;height:38px;flex:0 0 38px;border-radius:50%;display:grid;place-items:center;background:var(--accent-surface);color:var(--accent-strong);font-size:14px;font-weight:600;letter-spacing:.02em}
:root.ios .ios-avatar-medium{width:58px;height:58px;flex-basis:58px;font-size:21px}
:root.ios .ios-avatar-large{width:84px;height:84px;flex-basis:84px;font-size:31px}
:root.iosb .ph-end{display:none}
:root.iosb #patients-pagination.ph-end{display:block;padding:10px 16px 0;font-family:var(--font-sans);font-size:13px;letter-spacing:0;text-align:left;color:var(--hint)}
:root.iosb #patients-pagination.ph-end:empty{display:none}

/* ---- 01 Today: Next up, the unsigned queue; 19 the empty queue ---- */
:root.iosb #dashboard-page,:root.iosb #schedule-page{padding:6px 16px 24px;gap:0}
:root.ios .ios-next{display:flex;align-items:center;gap:12px;width:100%;min-height:0;margin:0 0 24px;padding:14px 12px 14px 16px;border:0;border-radius:var(--ios-radius);background:var(--ios-card);color:var(--ink);text-align:left;font-weight:400;flex-shrink:0}
:root.ios .ios-next:hover{background:var(--ios-card)}
:root.ios .ios-next:active{background:color-mix(in srgb,var(--ink) 6%,var(--ios-card))}
:root.ios .ios-next-copy{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
:root.ios .ios-next-copy small{font-size:13px;color:var(--hint)}
:root.ios .ios-next-copy strong{font-size:20px;font-weight:600;line-height:1.25;color:var(--ink);overflow-wrap:anywhere}
:root.ios .ios-next-copy span{font-size:15px;color:var(--hint)}
:root.ios .ios-empty{display:flex;flex-direction:column;align-items:center;gap:8px;margin:0;padding:32px 24px;text-align:center;flex-shrink:0}
:root.ios .ios-empty h2{margin:0;font-size:22px;font-weight:700;letter-spacing:0;color:var(--ink)}
:root.ios .ios-empty p{margin:0;max-width:300px;font-size:15px;line-height:1.45;color:var(--hint)}
:root.ios .ios-empty .ios-tinted{margin-top:12px}
:root.ios .ios-queue-empty{flex:1;justify-content:center;padding-bottom:12vh}
:root.ios .ios-empty-mark{display:grid;place-items:center;width:68px;height:68px;margin-bottom:10px;border-radius:20px;background:var(--accent-surface);color:var(--accent-strong)}
:root.ios .ios-empty-mark .ios-icon{width:36px;height:36px}

/* ---- 05 Patients: search under the title, the grouped list, swipe actions, Select mode ---- */
:root.iosb #home-page{padding:0 16px 24px;gap:0}
:root.iosb #home-page>.page-heading{position:sticky;top:0;z-index:5;margin:0 -16px;padding:2px 16px 12px;background:var(--ios-bg)}
:root.iosb #home-page .patient-filters{display:none}
:root.iosb #home-page .search-field>.search-icon{left:12px;width:19px;height:19px;color:var(--hint)}
:root.iosb #home-page #patient-search{height:44px;padding:0 38px 0 32px;border:4px solid transparent;border-radius:14px;background:var(--ios-fill);background-clip:padding-box;color:var(--ink);font-size:17px;box-shadow:none}
:root.iosb #home-page #patient-search::placeholder{color:var(--hint)}
:root.iosb #home-page .search-clear:not([hidden]){right:2px}
:root.iosb #home-records{background:var(--ios-card);border:0;border-radius:var(--ios-radius);overflow:hidden}
:root.iosb #home-records:has(>.ph-empty,>#patients-empty:not([hidden])){background:transparent}
:root.ios .ios-patient{min-height:60px;padding-block:9px}
:root.ios .ios-swipe,:root.ios .ios-swipe.has-call{background:var(--ios-card)}
:root.ios .ios-swipe .ph-swipe-action{display:flex;align-items:center;justify-content:center;width:76px;padding:0 6px;border:0;border-radius:0;color:var(--on-accent);font-size:15px;font-weight:600;text-decoration:none}
:root.ios .ios-swipe-record{right:0;background:var(--accent)}
:root.ios .ios-swipe.has-call .ios-swipe-record{right:76px}
:root.ios .ios-swipe-call{right:0;background:var(--ios-call)}
:root.ios .ios-select-mark{flex:0 0 24px;width:24px;height:24px;display:grid;place-items:center;border:1.5px solid color-mix(in srgb,var(--hint) 70%,transparent);border-radius:50%;box-sizing:border-box}
:root.ios .ios-selectable.selected .ios-select-mark{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
:root.ios .ios-select-mark .ios-icon{width:18px;height:18px}
:root.ios #ios-select-bar:not([hidden]){display:flex;position:fixed;left:0;right:0;bottom:0;z-index:11;height:var(--tabbar);align-items:flex-start;justify-content:space-between;gap:6px;padding:6px 8px var(--safe-bottom);background:var(--ios-bar-bg);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-top:1px solid var(--ios-sep)}
:root.ios .ios-select-count{align-self:center;margin-top:-6px;font-size:13px;font-weight:600;color:var(--ink);white-space:nowrap}
:root.ios .ios-select-actions{display:flex}

/* ---- 09 Schedule: segmented control, the day pager, Morning / Afternoon sections, the time gutter ---- */
:root.ios .ios-segmented{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:2px;margin:4px 0 12px;padding:2px;border-radius:9px;background:var(--ios-fill);flex-shrink:0}
:root.ios .ios-segment{position:relative;height:32px;min-height:32px;padding:0 8px;border:0;border-radius:7px;background:transparent;color:var(--ink);font-size:14px;font-weight:500;justify-content:center}
:root.ios .ios-segment::after{content:'';position:absolute;inset:-7px 0}
:root.ios .ios-segment:hover{background:transparent}
:root.ios .ios-segment[aria-selected=true]{background:var(--ios-card);font-weight:600;box-shadow:0 2px 6px color-mix(in srgb,#000 12%,transparent),0 0 0 .5px color-mix(in srgb,#000 5%,transparent)}
:root.ios[data-theme=dark] .ios-segment[aria-selected=true]{background:color-mix(in srgb,var(--ink) 22%,var(--ios-card))}
:root.ios .ios-pager{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 -10px 8px;flex-shrink:0}
:root.ios .ios-pager-button{display:grid;place-items:center;width:44px;height:44px;min-height:44px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--accent-text)}
:root.ios .ios-pager-button:hover{background:var(--ios-fill)}
:root.ios .ios-pager-button .ios-chevron{width:10px;height:10px;margin:0;border-color:currentColor}
:root.ios .ios-pager-label{font-size:15px;color:var(--hint)}
:root.ios .ios-days{display:flex;flex-direction:column;flex-shrink:0;touch-action:pan-y}
:root.ios .ios-slot{gap:14px}
:root.ios .ios-time{flex:0 0 auto;min-width:50px;font-family:var(--font-mono);font-size:14px;color:var(--hint);font-variant-numeric:tabular-nums;white-space:nowrap}
:root.ios .ios-slot.review .ios-time{color:var(--review-text)}
:root.ios .ios-slot.now .ios-time{color:var(--accent-text);font-weight:600}
:root.ios .ios-slot.now .ios-row-copy strong{font-weight:600}
:root.ios .ios-slot.past .ios-row-copy strong{color:var(--secondary)}
:root.ios .ios-week-day.today .ios-group-title{color:var(--accent-text);font-weight:600}
:root.ios .ios-week-day .ios-card>div.ios-item{color:var(--hint);font-size:15px}

/* ---- 10 and 22 The patient record: a nav bar, the centred header card, Visits, the context menu; About ---- */
:root.ios #patient-page.ios-record{padding:0 16px 32px;gap:0}
:root.ios #patient-page.ios-about{padding-bottom:calc(100px + var(--safe-bottom))}
:root.ios .ios-nav{position:sticky;top:0;z-index:6;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;min-height:calc(44px + var(--safe-top));margin:0 -16px 8px;padding:var(--safe-top) 8px 0 0;background:var(--ios-bar-bg);background:color-mix(in srgb,var(--ios-bg) 90%,transparent);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid transparent;flex-shrink:0;transition:border-color var(--motion-fast) var(--ease)}
:root.ios .ios-scrolled>.ios-nav{border-bottom-color:var(--ios-sep)}
:root.ios .ios-back{justify-self:start;display:inline-flex;align-items:center;gap:5px;max-width:100%;min-height:44px;padding:0 8px 0 18px;border:0;border-radius:0;background:transparent;color:var(--accent-text);font-size:17px;font-weight:400}
:root.ios .ios-back:hover{background:transparent;color:var(--accent-text-hover)}
:root.ios .ios-back .ios-chevron{width:11px;height:11px;margin:0 2px 0 0;border-width:2.5px;border-color:currentColor}
:root.ios .ios-back-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
:root.ios .ios-nav .ios-nav-title{grid-column:2;max-width:56vw;margin:0;font-size:17px;font-weight:600;line-height:1.3;letter-spacing:0;color:var(--ink);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:opacity var(--motion-fast) var(--ease)}
:root.ios .ios-record:not(.ios-scrolled) .ios-nav-title{opacity:0}
:root.ios .ios-nav>:last-child{grid-column:3;justify-self:end}
:root.ios .ios-head{display:flex;flex-direction:column;align-items:center;gap:6px;padding:4px 8px 24px;text-align:center;flex-shrink:0}
:root.ios .ios-head .ios-avatar-large{margin-bottom:6px}
:root.ios .ios-head h2{margin:0;font-size:26px;font-weight:700;line-height:1.2;letter-spacing:0;color:var(--ink);overflow-wrap:anywhere}
:root.ios .ios-head p{margin:0;font-size:15px;line-height:1.4;color:var(--hint)}
:root.ios .ios-head-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:10px}
:root.ios .ios-visit .ios-status{flex-shrink:0;font-size:15px;color:var(--hint)}
:root.ios .ios-visit .ios-status.review{color:var(--review-text)}
:root.ios .ios-allergies .ios-card{background:var(--danger-bg);border:1px solid var(--danger-border)}
:root.ios .ios-allergies .ios-group-title{color:var(--danger)}
:root.ios .ios-allergy{gap:12px;color:var(--danger);font-size:17px}
:root.ios .ios-allergy::after{content:'';order:-1;flex:0 0 8px;width:8px;height:8px;border-radius:50%;background:var(--danger-fill)}
:root.ios .ios-allergies .ios-card>.ios-item+.ios-item::before{background:color-mix(in srgb,var(--danger) 18%,transparent)}
:root.ios .ios-bottom{position:fixed;left:0;right:0;bottom:0;z-index:9;display:flex;gap:12px;padding:14px 16px calc(12px + var(--safe-bottom));background:linear-gradient(to bottom,transparent,var(--ios-bg) 26%)}
:root.ios .ios-bottom .ios-filled{flex:1}
/* The context menu: the row lifted above a blurred page, its menu under (or above) it. */
:root.ios dialog.ios-menu{position:fixed;inset:0;margin:0;width:100%;height:100%;max-width:none;max-height:none;padding:0;border:0;background:transparent;box-shadow:none;overflow:hidden}
:root.ios dialog.ios-menu::backdrop{background:color-mix(in srgb,#000 22%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
:root.ios .ios-menu-lift{position:fixed!important;z-index:1;margin:0;border-radius:12px;transform:scale(1.02);box-shadow:0 12px 32px color-mix(in srgb,#000 22%,transparent);pointer-events:none;animation:ios-lift var(--motion-base) var(--ease)}
:root.ios .ios-menu-lift::before{display:none}
:root.ios .ios-menu-list{position:fixed;z-index:2;width:min(250px,calc(100vw - 32px));border-radius:13px;overflow:hidden;background:var(--popover);box-shadow:var(--shadow-dialog);animation:ios-pop var(--motion-base) var(--ease)}
:root.ios .ios-menu-item{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:48px;padding:0 16px;border:0;border-radius:0;background:transparent;color:var(--ink);font-size:17px;font-weight:400}
:root.ios .ios-menu-item:hover,:root.ios .ios-menu-item:focus-visible{background:var(--ios-fill)}
:root.ios .ios-menu-item+.ios-menu-item::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:var(--ios-sep)}
:root.ios .ios-menu-item.danger{color:var(--danger)}
:root.ios .ios-menu-item .ios-icon{width:20px;height:20px}

/* ---- Action sheets: the actions in one rounded group, Cancel in its own ---- */
:root.ios dialog.ios-action{margin:auto 8px 0;width:calc(100% - 16px);max-width:none;max-height:calc(100dvh - var(--safe-top) - 16px);padding:0 0 calc(8px + var(--safe-bottom));border:0;border-radius:0;background:transparent;box-shadow:none;overflow:visible;transition:transform var(--motion-fast) var(--ease)}
:root.ios dialog.ios-action[open]{display:flex;flex-direction:column;gap:8px;animation:ios-rise var(--motion-base) var(--ease)}
:root.ios dialog.ios-action.dragging,:root.ios dialog.ios-form.dragging{transition:none}
:root.ios dialog.ios-action::backdrop,:root.ios dialog.ios-form::backdrop{background:color-mix(in srgb,#000 35%,transparent)}
:root.ios .ios-action-group{display:flex;flex-direction:column;min-height:0;overflow:auto;border-radius:14px;background:var(--popover)}
:root.ios .ios-action-head{position:relative;display:flex;flex-direction:column;gap:4px;padding:14px 18px;text-align:center}
:root.ios .ios-action-head strong{font-size:13px;font-weight:600;color:var(--hint)}
:root.ios .ios-action-head p{margin:0;font-size:13px;line-height:1.45;color:var(--hint);white-space:pre-line}
:root.ios .ios-action-item{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:57px;padding:0 48px;border:0;border-radius:0;background:transparent;color:var(--accent-text);font-size:20px;font-weight:400}
:root.ios .ios-action-item:hover,:root.ios .ios-action-item:focus-visible{background:var(--ios-fill)}
:root.ios .ios-action-group>*+*::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:var(--ios-sep)}
:root.ios .ios-action-item.danger{color:var(--danger)}
:root.ios .ios-action-item .ios-check{position:absolute;right:18px;width:22px;height:22px}
:root.ios .ios-action-cancel{flex-shrink:0;min-height:57px;border:0;border-radius:14px;background:var(--popover);color:var(--accent-text);font-size:20px;font-weight:600}
:root.ios .ios-action-cancel:hover{background:var(--popover)}

/* ---- 14 New patient: a form sheet with its own nav bar, label-left inline fields, the first visit ---- */
:root.ios dialog.ios-form{margin:calc(var(--safe-top) + 10px) 0 0;width:100%;max-width:none;height:calc(100dvh - var(--safe-top) - 10px);max-height:none;padding:0;border:0;border-radius:12px 12px 0 0;background:var(--ios-bg);color:var(--ink);box-shadow:0 -6px 30px color-mix(in srgb,#000 14%,transparent);transition:transform var(--motion-fast) var(--ease)}
:root.ios dialog.ios-form[open]{display:flex;animation:ios-rise var(--motion-base) var(--ease)}
:root.ios .ios-form form{display:flex;flex-direction:column;width:100%;height:100%;min-height:0}
:root.ios .ios-form-bar{position:relative;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;min-height:58px;padding:8px 8px 0;flex-shrink:0;touch-action:none}
:root.ios .ios-grabber{position:absolute;top:6px;left:50%;width:36px;height:5px;margin-left:-18px;border-radius:3px;background:var(--ios-fill-strong)}
:root.ios .ios-form-bar h2{grid-column:2;margin:0;font-size:17px;font-weight:600;letter-spacing:0;color:var(--ink)}
:root.ios .ios-form-bar .ios-nav-text:first-of-type{justify-self:start}
:root.ios .ios-form-bar .ios-nav-text.strong{grid-column:3;justify-self:end}
:root.ios .ios-form-body{flex:1;min-height:0;overflow:auto;padding:12px 16px 24px;overscroll-behavior:contain}
:root.ios .ios-form label.ios-field{flex-direction:row;align-items:center;margin:0;min-height:48px;padding-block:0;cursor:text}
:root.ios .ios-field-label{flex:0 0 118px;font-size:17px;color:var(--ink)}
:root.ios .ios-form .ios-field input,:root.ios .ios-form .ios-field select{flex:1;width:auto;min-width:0;height:48px;min-height:48px;margin:0;padding:0;border:0;border-radius:0;background:transparent;color:var(--ink);font-size:17px;box-shadow:none}
:root.ios .ios-form .ios-field input::placeholder{color:var(--hint)}
:root.ios .ios-form .ios-field input:focus,:root.ios .ios-form .ios-field select:focus{outline:0}
:root.ios .ios-form .ios-field:focus-within{background:color-mix(in srgb,var(--accent) 6%,var(--ios-card))}
:root.ios .ios-form-error{margin:0 16px;font-size:15px;line-height:1.4;color:var(--danger)}
:root.ios .ios-form-error:empty{display:none}
:root.ios .ios-form-foot{flex-shrink:0;padding:10px 16px calc(12px + var(--safe-bottom));border-top:1px solid var(--ios-sep);background:var(--ios-bg)}
:root.ios .ios-form-foot .ios-filled{width:100%}

/* ---- 08 Settings, 17 Account, 18 Privacy ---- */
:root.ios #local-settings.ios-settings{padding:0 16px 32px;gap:0;background:var(--ios-bg)}
:root.ios #local-settings .ios-large-title{margin:calc(var(--safe-top) + 12px) 0 16px 2px;font-size:34px;line-height:1.2;font-weight:700;letter-spacing:.005em;color:var(--ink)}
:root.ios .ios-profile{display:flex;align-items:center;gap:14px;width:100%;min-height:76px;margin:0 0 24px;padding:12px 12px 12px 16px;border:0;border-radius:var(--ios-radius);background:var(--ios-card);color:var(--ink);text-align:left;font-weight:400;flex-shrink:0}
:root.ios .ios-profile:hover{background:var(--ios-card)}
:root.ios .ios-profile:active{background:color-mix(in srgb,var(--ink) 6%,var(--ios-card))}
:root.ios .ios-profile .ios-row-copy strong{font-size:20px;font-weight:600}
:root.ios .ios-profile .ios-row-copy small{font-size:14px;white-space:normal;overflow-wrap:anywhere}
:root.ios .ios-storage{flex-direction:column;align-items:stretch;gap:10px;padding:12px 16px 14px}
:root.ios .ios-storage-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
:root.ios .ios-storage-head strong{font-size:17px;font-weight:400;color:var(--ink)}
:root.ios .ios-storage-total{font-size:15px;color:var(--hint);font-variant-numeric:tabular-nums}
:root.ios .ios-meter{display:flex;height:8px;border-radius:4px;overflow:hidden;background:var(--ios-fill)}
:root.ios .ios-meter i{display:block;height:100%;min-width:0;transition:width var(--motion-slow) var(--ease)}
:root.ios .ios-meter .kept{background:var(--accent)}
:root.ios .ios-meter .pending,:root.ios .ios-legend .pending::before{background:color-mix(in srgb,var(--accent) 45%,var(--ios-card))}
:root.ios .ios-legend{display:flex;flex-wrap:wrap;gap:4px 16px;font-size:13px;color:var(--hint)}
:root.ios .ios-legend span{display:inline-flex;align-items:center;gap:6px}
:root.ios .ios-legend span::before{content:'';width:8px;height:8px;border-radius:2px;background:var(--accent)}
:root.ios .ios-queue{display:flex;align-items:center;gap:10px;margin:0 0 24px;padding:6px 6px 6px 16px;border-radius:var(--ios-radius);background:var(--review-bg);color:var(--review-text);flex-shrink:0}
:root.ios .ios-queue::before{content:'';flex:0 0 8px;width:8px;height:8px;border-radius:50%;background:var(--review-dot)}
:root.ios .ios-queue-copy{flex:1;font-size:15px;line-height:1.4}
:root.ios .ios-queue-send{min-height:44px;padding:0 10px;border:0;border-radius:10px;background:transparent;color:var(--accent-text);font-size:15px;font-weight:600}
/* ---- No vertical scrolling anywhere (owner, 16 Sept 2026): screens clip, and what does not fit is a page away ---- */
:root.ios .workspace>.screen{overflow:hidden}
/* The stack is measured, not clipped: it keeps its content's real height so the pager can see what does not fit. */
:root.ios .ios-stack{display:flex;flex-direction:column;flex:0 0 auto;min-height:0}
:root.ios .ios-page-foot{display:flex;flex-shrink:0;margin:0;padding:0;font-family:var(--font-sans);font-size:13px;letter-spacing:0;color:var(--hint)}
:root.ios .ios-page-foot:empty{display:none}
:root.ios .ios-page-bar{display:flex;flex:1;align-items:center;justify-content:space-between;gap:8px;margin:0 -10px}
:root.ios .ios-page-label{flex:1;min-width:0;align-self:center;font-size:13px;line-height:1.3;color:var(--hint);text-align:center;font-variant-numeric:tabular-nums}
:root.ios .ios-page-bar .ios-pager-button:disabled{color:var(--disabled);opacity:1}
:root.ios .ios-days .ios-group:last-of-type,:root.ios .ios-stack>.ios-group:last-of-type{margin-bottom:8px}
:root.iosb #patients-pagination.ios-page-foot{padding:6px 0 0}
:root.ios .ios-form-body{overflow:hidden}
:root.ios .ios-form-foot .ios-page-foot{margin:0 0 6px}
:root.ios .ios-action-group{overflow:hidden}
/* The access gate, sign-in and request access: one screenful inside the safe area, never a page that scrolls. */
:root.ios .entry{height:100dvh;overflow:hidden}
:root.ios .entry-form{min-height:0;height:100%;overflow:hidden}
:root.ios .auth-card{padding:20px 0}
:root.ios .auth-card #entry-message:empty{min-height:0}
/* Genie's listening strip pins over the top: the own-bar screens move down beneath it. */
:root.ios-own-bar body.genie-strip :is(#patient-page,#local-settings){padding-top:calc(var(--genie-strip,64px) + 12px)}
@keyframes ios-rise{from{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}
@keyframes ios-pop{from{transform:scale(.9);opacity:0}to{transform:none;opacity:1}}
@keyframes ios-lift{from{transform:scale(1);box-shadow:none}to{transform:scale(1.02)}}
}
@media(prefers-reduced-motion:reduce){
  :root.ios .ios-switch,:root.ios .ios-switch::after,:root.ios .ios-meter i,:root.ios .ios-nav-title,:root.ios .ios-row,:root.ios dialog.ios-form,:root.ios dialog.ios-action{transition:none}
  :root.ios dialog.ios-action[open],:root.ios dialog.ios-form[open],:root.ios .ios-menu-list,:root.ios .ios-menu-lift{animation:none}
}
/* ---- 14 Languages in the New Patient / Edit Details sheet (clinical.js languageEditor): label-left rows, an inset list, token chips ---- */
:root.ios .ios-languages .ios-card{overflow:visible}
:root.ios .lang-ios{display:flex;flex-direction:column}
:root.ios .lang-ios>.lang-field{position:relative;display:flex;flex-direction:row;align-items:flex-start;gap:0;min-height:48px;padding:0 16px;background:transparent}
:root.ios .lang-ios>.lang-field[hidden]{display:none}
:root.ios .lang-ios>.lang-field+.lang-field::before,:root.ios .lang-ios>.lang-note::before{content:'';position:absolute;top:0;left:16px;right:0;height:1px;background:var(--ios-sep)}
:root.ios .lang-ios .ios-field-label{margin:0;padding-top:13px;line-height:22px}
:root.ios .lang-ios .lang-combo,:root.ios .lang-ios .lang-others{flex:1;display:flex;flex-direction:column;min-width:0}
:root.ios .lang-ios input{flex:1;width:100%;min-width:0;height:48px;min-height:48px;margin:0;padding:0;border:0;border-radius:0;background:transparent;color:var(--ink);font-size:17px;box-shadow:none}
:root.ios .lang-ios input:focus{outline:0}:root.ios .lang-ios input::placeholder{color:var(--hint)}
:root.ios .lang-ios .lang-field:focus-within{background:color-mix(in srgb,var(--accent) 6%,var(--ios-card))}
:root.ios .lang-ios .lang-options{list-style:none;margin:0 0 10px;padding:0;max-height:264px;overflow:auto;border-radius:10px;background:var(--ios-fill)}
:root.ios .lang-ios .lang-options[hidden]{display:none}
:root.ios .lang-ios .lang-option{position:relative;display:flex;align-items:center;flex-wrap:wrap;gap:2px 8px;min-height:44px;padding:8px 12px;font-size:17px;color:var(--ink);cursor:pointer}
:root.ios .lang-ios .lang-option+.lang-option::before{content:'';position:absolute;top:0;left:12px;right:0;height:1px;background:var(--ios-sep)}
:root.ios .lang-ios .lang-option.active,:root.ios .lang-ios .lang-option:hover{background:var(--ios-fill-strong)}
:root.ios .lang-ios .lang-option[aria-selected=true]{color:var(--accent-text);font-weight:600}
:root.ios .lang-ios .lang-native{color:var(--hint)}:root.ios .lang-ios .lang-flag{margin-left:auto;font-size:13px;color:var(--review-text)}
:root.ios .lang-ios .lang-chips{display:flex;flex-wrap:wrap;gap:14px 6px;list-style:none;margin:0;padding:10px 0 0}:root.ios .lang-ios .lang-chips[hidden]{display:none}
:root.ios .lang-ios .lang-chip{display:inline-flex;align-items:center;gap:5px;min-height:32px;max-width:100%;padding:0 0 0 12px;border-radius:16px;background:var(--ios-fill);color:var(--ink);font-size:15px}
:root.ios .lang-ios .lang-chip .lang-native{color:var(--hint)}
:root.ios .lang-ios .lang-chip-remove{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;min-height:0;margin:-6px -4px -6px -8px;padding:0;border:0;border-radius:22px;background:transparent;color:var(--hint);font-size:18px;line-height:1}
:root.ios .lang-ios .lang-note{position:relative;margin:0;padding:10px 16px 12px;font-size:13px;line-height:1.4;color:var(--review-text)}:root.ios .lang-ios .lang-note:empty{display:none}
:root.ios .iv-pick .iv-row-copy strong{font-size:inherit}
