/* Zentra RC3. Shared UI tokens; PDF fonts and layouts are deliberately separate. */
:root {
 --green:#506d25; --green-dark:#3e561b; --pale:#eff4e8;
 --ink:#162017; --muted:#596452; --line:#dbe3d5; --bg:#f6f8f3;
 --radius:16px; --nav-height:108px;
 font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
 color-scheme:light; line-height:1.45; -webkit-text-size-adjust:100%;
}
[hidden]{display:none!important}
html,body{width:100%;min-width:0;max-width:100%;margin:0}
body{overflow-wrap:anywhere}
*,*::before,*::after{box-sizing:border-box}
button,input,select,textarea{font-family:inherit;max-width:100%;min-width:0}
button{min-height:48px;padding:12px 16px;font-size:.9375rem;line-height:1.35;border-radius:12px;white-space:normal;overflow-wrap:anywhere}
button .ui-icon{vertical-align:middle}
button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #506d25;outline-offset:3px}
/* Programmatic landmarks stay accessible without the browser's blue rectangle
   on touch. Keyboard navigation retains an explicit branded focus indicator. */
#dialog-title:focus,#main:focus{outline:none}
body[data-focus-mode=keyboard] #dialog-title:focus,body[data-focus-mode=keyboard] #main:focus{outline:2px solid var(--green);outline-offset:4px;border-radius:4px}
.zentra-app-update{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.zentra-app-update button{min-height:44px}
.appt-reminder-summary{display:flex;align-items:center;gap:10px;list-style:none}
.appt-reminder-summary::-webkit-details-marker{display:none}
.appt-reminder-summary .ui-icon{flex:none}
.appt-reminder-summary>span{flex:1}
.appt-reminder-items{display:grid;gap:0;margin-top:8px}
.appt-reminder-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-top:1px solid var(--line)}
.appt-reminder-item p{margin:4px 0 0}
.appt-reminder-item button{flex:none}
.appt-reminder-item strong{display:block}
input,select,textarea{font-size:1rem;min-height:48px;width:100%;line-height:1.4;padding:12px;border-color:#a5b29a}
input[type=date],input[type=time],input[type=datetime-local],input[type=month]{min-width:0;max-width:100%;box-sizing:border-box}
input[type=file]{font-size:.875rem;overflow:hidden}
input[type=checkbox],input[type=radio],.inlinecheck input,.checkboxes input{width:24px!important;height:24px;min-height:24px;flex:0 0 24px;margin:0;accent-color:var(--green)}
label{font-size:.875rem;line-height:1.5;min-width:0}
.inlinecheck,.checkboxes label{min-height:48px;align-items:center!important;gap:12px;padding:8px 0}
form>label,form>details{margin-bottom:16px}
textarea{line-height:1.55;min-height:112px}
a{text-decoration:underline;text-underline-offset:3px}
a.brand{text-decoration:none}
a.link,.doc a,.archive-row a{font-size:.9375rem;min-height:48px;display:inline-flex;align-items:center;max-width:100%;overflow-wrap:anywhere}
summary{cursor:pointer;min-height:48px;font-size:.9375rem;line-height:1.5;padding:12px 2px}
summary .ui-icon{vertical-align:middle;margin-right:6px}
h1{font-size:1.875rem;line-height:1.17;letter-spacing:-.035em;overflow-wrap:anywhere}
h2{font-size:1.375rem;line-height:1.3;letter-spacing:-.02em;min-width:0}
h3{font-size:1rem;line-height:1.4;min-width:0}
p{line-height:1.5}
.small,small,.task .desc small,.tile small,.fin-grid small,.metric span{font-size:.8125rem;line-height:1.5}
.eyebrow{font-size:.75rem;line-height:1.5;letter-spacing:.07em;color:var(--green-dark);margin-bottom:8px}
.notice{font-size:.875rem;line-height:1.5;padding:12px 14px;margin-bottom:12px}
.notice details p,.notice>p{font-size:.875rem}
.chip{font-size:.75rem;line-height:1.4;padding:4px 8px}
.hero .eyebrow,.hero a,.hero .muted,.hero .small{color:#e6efd9}
.hero a{text-decoration:underline}
.hero .primary{border:1px solid #a2b987}
.hero button:not(.primary):not(.danger){background:#eff4e8;color:#29361f;border-color:#eff4e8}
.hero{padding:20px}
.login-screen{padding:24px 16px;min-width:0;min-height:100dvh}
.login-card{min-width:0;width:100%;max-width:440px;padding:28px 24px;border-radius:22px}
.login-card h1{font-size:2rem;max-width:100%}
.login-card .login-logo{margin-bottom:20px;width:52px;height:52px}
.login-card form{gap:16px}
.login-card .notice{margin:16px 0}
.login-card label{font-size:.9375rem}
.topbar{height:auto;min-height:66px;padding:10px max(16px,calc((100vw - 900px)/2));padding-top:max(10px,env(safe-area-inset-top));gap:12px;align-items:center}
.brand{min-width:0;gap:10px;font-size:.9375rem;letter-spacing:.06em}
.brand img{width:40px;height:40px;flex:0 0 40px;object-fit:contain}
.brand small{font-size:.75rem;line-height:1.4;letter-spacing:0;overflow-wrap:anywhere}
#role-caption{font-size:.75rem;color:var(--muted)}
.icon-btn{width:48px;min-width:48px;height:48px;min-height:48px;flex:0 0 48px;display:inline-flex;align-items:center;justify-content:center;font-size:1.375rem}
.ui-icon{width:24px;height:24px;flex-shrink:0;display:inline-block}
.app-shell{padding:0 16px calc(var(--nav-height) + env(safe-area-inset-bottom));max-width:900px;min-width:0}
.context{padding-top:14px;margin-bottom:12px}
.context-row{grid-template-columns:minmax(0,1fr) minmax(130px, .68fr);gap:10px}
.context select,.context input{font-size:1rem;padding:10px;font-weight:600;min-height:48px}
.context label .small{font-size:.75rem}
.context-caption{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px;font-size:.75rem;color:var(--muted)}
.context-caption>span:last-child{min-width:0;flex:1 1 150px}
.panel,.metric{min-width:0}
.panel{padding:16px;border-radius:var(--radius)}
.section-heading{flex-wrap:wrap;align-items:center;margin:16px 0 12px}
.section-heading>div{min-width:0}
.section-heading h2{margin:0}
.section-heading>button{flex:0 1 auto}
.metrics{grid-template-columns:repeat(auto-fit,minmax(min(100%,7rem),1fr));gap:10px}
.metric{padding:14px 12px}.metric strong{font-size:1.5rem;line-height:1.25;overflow-wrap:anywhere}
.money{font-size:1.5rem!important}
.fin-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,8rem),1fr));gap:16px}
.fin-grid strong{font-size:1rem}
.tiles{grid-template-columns:repeat(auto-fit,minmax(min(100%,9rem),1fr));gap:10px}
.tile{padding:14px;min-height:92px;gap:8px}.tile .symbol{margin:0;font-size:1.5rem;line-height:1;color:var(--green)}
.tile strong{font-size:.9375rem;line-height:1.4}.tile small{margin-top:0}
.management-tiles{margin-bottom:18px}
.care-start{padding:14px;background:white;margin-bottom:14px}
.care-start-top,.care-start-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.care-start-top>div:first-child{flex:1;min-width:0}
.care-start .eyebrow{margin-bottom:4px}.care-start h2{font-size:1.25rem;margin:0}
.care-start-bottom{margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.care-start-bottom .small{flex:1;min-width:90px}
.care-start-bottom button{font-size:.875rem;padding:10px 12px}
.shift-switch{display:flex;gap:4px;padding:4px;border:1px solid var(--line);border-radius:12px;background:var(--bg)}
.shift-switch button{min-height:48px;min-width:48px;padding:8px 10px;background:transparent}
.shift-switch .selected{background:white;color:var(--green-dark);box-shadow:0 1px 4px #24331815;border:1px solid #bccbab}
.work-heading{font-size:1.125rem;margin:0 0 10px}
.care-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}
.care-tile{min-height:82px;flex-direction:row;align-items:center;justify-content:flex-start;gap:10px}
.care-tile strong{font-size:.9375rem}
.further-doku{margin-top:10px;padding:2px 12px;background:transparent}
.further-doku>summary{font-size:.875rem}.further-doku>summary .small{color:var(--muted);margin-left:4px}
.further-doku[open]{padding-bottom:14px}
.tasks-panel .section-heading{margin-top:0}
.tasks-panel>details{border-top:1px solid var(--line);margin-top:8px}
.task{gap:10px;flex-wrap:wrap;padding:12px 0;align-items:center}
.task .desc{flex:1 1 110px;min-width:0}
.task .desc strong{font-size:.9375rem}
.task button{font-size:.875rem;min-height:48px;padding:10px 12px;display:inline-flex;align-items:center;gap:6px;max-width:100%}
.task button .ui-icon{width:18px;height:18px}
.task .time{font-size:.8125rem;max-width:100%}
.actions,.quicklinks,.subnav{display:flex;flex-wrap:wrap;gap:8px;overflow:visible}
.actions button,.subnav button,.pdf-row button,.shiftline button{min-height:48px;font-size:.875rem;white-space:normal;padding:10px 14px}
.quicklinks{margin:12px 0}
.quicklinks button{font-size:.875rem}
.shiftpill strong{font-size:.9375rem}.shiftpill span,.shiftpill small{font-size:.8125rem}
.source-text{font-size:.9375rem;line-height:1.6}
.event-data p,.event-top strong,.event-title,.userrow strong{font-size:.9375rem}
.archive-row,.auditrow,pre{font-size:.8125rem}
.pdf-row{flex-wrap:wrap;padding:6px 0 12px;border-bottom:1px solid var(--line)}
.pdf-row:last-child{border:0}.pdf-row>div{flex:1 1 170px;min-width:0}.pdf-row p{font-size:.8125rem}
.kv{grid-template-columns:minmax(0,.6fr) minmax(0,1fr);font-size:.875rem}
.bottomnav{padding:6px max(8px,env(safe-area-inset-left)) calc(6px + env(safe-area-inset-bottom));gap:2px}
.bottomnav button{max-width:175px;min-width:0;min-height:58px;font-size:.75rem;line-height:1.25;flex:1;padding:6px 3px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;overflow-wrap:anywhere}
.bottomnav button>span{font-size:inherit;line-height:inherit;margin:0}
.bottomnav button .nav-label{font-size:.75rem;line-height:1.25;display:block;max-width:100%}
.bottomnav button .ui-icon{width:22px;height:22px;display:block}
.desktop-footer{font-size:.75rem;margin-top:24px;line-height:1.5}
/* Dialog content scrolls independently. Status stays visible with the keyboard. */
dialog{min-width:0;width:min(680px,calc(100% - 24px));max-width:calc(100% - 24px);max-height:var(--dialog-height,calc(100dvh - 24px));padding:0;overflow:hidden;border-radius:18px}
dialog:not([open]){display:none}
dialog[open]{display:flex;flex-direction:column}
.dialog-head{flex-shrink:0;position:relative;top:auto;min-width:0;gap:8px;padding:10px 14px;align-items:flex-start}
.dialog-head h2{font-size:1.125rem;line-height:1.45;margin:10px 0;overflow-wrap:anywhere;min-width:0}
.dialog-status{flex-shrink:0;padding:8px 14px;font-size:.8125rem;line-height:1.45;background:#edf2e8;border-bottom:1px solid var(--line);color:#445239}
.dialog-status[data-level=pending]{background:#fff5df;color:#675019}
.dialog-status[data-level=error]{background:#ffede8;color:#802d24}
#dialog-body{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:16px 16px 12px;scroll-padding-block:16px 100px}
#dialog-body>form{margin:0;min-width:0}
#dialog-body form>label{margin:16px 0}
#dialog-body form>label:first-child{margin-top:0}
.form-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr))!important;gap:16px 14px;min-width:0}
.form-grid>*,.form-grid>label{min-width:0}
.form-grid label{font-size:.875rem}
.form-grid .unit{font-size:.8125rem}
.form-grid .span{grid-column:1/-1}
.form-actions{position:sticky;bottom:-12px;z-index:2;padding:12px 0 calc(12px + env(safe-area-inset-bottom));margin-top:20px;background:var(--bg);border-top:1px solid var(--line);flex-wrap:wrap}
.form-actions>button{flex:1 1 120px;min-height:48px;font-size:.9375rem}
.form-actions .primary{flex:2 1 150px}
.field-error{font-size:.875rem;line-height:1.5}
.extra{padding:0 12px}.extra summary{font-size:.875rem;min-height:48px}
.extra[open]{padding-bottom:12px}
.profile-groups{margin:16px 0}
.profile-group{border:1px solid var(--line);background:white;border-radius:12px;margin-bottom:12px;padding:2px 12px}
.profile-group>summary{font-weight:650;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.profile-group>summary::before{content:'›';font-size:1.25rem;transition:transform .1s}
.profile-group[open]>summary::before{transform:rotate(90deg)}
.profile-group>summary>span{flex:1;min-width:0}
.profile-group>summary>small{color:var(--muted);font-weight:400}
.rule.profile-rule{padding:4px 0 8px}.rule.profile-rule:last-child{border:0}
.rule.profile-rule>summary{font-size:.9375rem;margin:0;display:list-item}
.rule-summary{display:block;margin-top:3px;color:var(--muted);font-weight:400;font-size:.8125rem}
.rule-config{min-width:0}.rule-config>label{margin-bottom:12px}
.form-section-title{margin:24px 0 10px}
.appt-form-section{padding:2px 12px;margin:12px 0;background:white}
.appt-form-section[open]{padding-bottom:14px}.appt-form-section summary{margin:0;font-size:.9375rem;min-height:48px}
.appt-form-section summary .small{color:var(--muted);display:block;font-weight:400}
.appt-reminder-bar{margin:0 0 12px;padding:10px 12px;gap:10px;flex-wrap:wrap}
.appt-reminder-bar>div{min-width:0;flex:1 1 160px}.appt-reminder-bar b{font-size:.875rem;font-weight:650;line-height:1.4}.appt-reminder-bar b .ui-icon{width:18px;height:18px;vertical-align:middle}
.appt-reminder-bar span{font-size:.8125rem;color:var(--muted);margin-top:2px}.appt-reminder-bar button{min-height:48px;font-size:.875rem;padding:10px 12px}
.appt-check{flex-wrap:wrap;align-items:center}.appt-check>div{flex:1 1 140px}.appt-check>button{min-height:48px;font-size:.875rem}
.appt-check strong{font-size:.9375rem}.appt-check span.small{font-size:.8125rem}.appt-content h2{font-size:1.25rem}
.appt-date{min-width:0;flex-wrap:wrap}.appt-date span{font-size:1.0625rem}.appt-time-big{font-size:1.375rem}
.appt-keyvalues p{font-size:.9375rem}
.discard-content{padding:22px;overflow:auto}.discard-content .form-actions{position:static;padding-bottom:0}
#discard-dialog{max-width:440px;width:calc(100% - 32px)}
#discard-dialog::backdrop{background:#0d170e88}
.install-card,.offline-card{min-width:0;overflow-wrap:anywhere}
.install-card h1,.offline-card h1{font-size:1.875rem}
.install-logo{width:56px}.install-caption,.connection-note{font-size:.9375rem}
.mfa-qr,.install-qr{max-width:100%;height:auto;aspect-ratio:1;object-fit:contain}
.mfa-secret{font-size:.9375rem}
@media(max-width:360px){.app-shell{padding-left:12px;padding-right:12px}.login-screen{padding:20px 12px}.login-card{padding:24px 20px}.context-row{grid-template-columns:minmax(0,1fr)}.context-caption>span:last-child{flex-basis:100%}.topbar{padding-left:12px;padding-right:12px}.care-tile{flex-direction:column;align-items:flex-start;padding:12px}.panel{padding:14px}.task button{flex:1 1 100px}.brand{font-size:.8125rem}.appt-reminder-bar>div{flex-basis:135px}}
@media(min-width:760px){.app-shell{padding-top:12px}.context-row{grid-template-columns:minmax(0,1fr) 220px}.care-tiles{grid-template-columns:repeat(4,minmax(0,1fr))}.management-tiles{grid-template-columns:repeat(4,minmax(0,1fr))}.care-tile{min-height:96px;flex-direction:column;align-items:flex-start}.context-caption{margin-top:10px}.dayplan{width:calc(50% - 8px)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
@media print{.bottomnav,.topbar{position:static}.app-shell{padding-bottom:0}}

.dashboard-start{margin-top:14px}
@media(max-width:759px){.care-tiles>.care-tile:nth-child(3):last-child{grid-column:1/-1}}

/* Native progress defaults to 10em; constrain it at 200% text as well. */
progress{max-width:100%;width:100%;min-width:0;display:block;margin-top:8px;accent-color:var(--green)}
.progress-line{min-width:0;max-width:100%;font-size:.875rem}

/* Scale the button bases with text so long actions stack, not split mid-word. */
.form-actions>button{flex:1 1 7.5rem}
.form-actions .primary{flex:2 1 9.375rem}
