/* Shared component contracts. No page-specific fixed offsets. */
:root{--layer-bar:20;--layer-fab:25;--layer-navigation:30;--layer-dialog:100;--mobile-navigation:76px;--safe-bottom:env(safe-area-inset-bottom,0px)}
[hidden]{display:none!important}
.page,.main,.card,.frm>*,.form-grid>*,.kv,.tik__id{min-width:0}
.page{overflow-wrap:anywhere}
.page h1,.page h2,.page h3,.page__sub,.lrow__main{overflow-wrap:anywhere;word-break:normal;white-space:normal}
input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select,textarea{max-width:100%;min-width:0;font-size:16px;line-height:1.55}
select{height:auto;min-height:44px;white-space:normal;padding-block:10px}
textarea{resize:vertical;min-height:110px}
.btn,button.tab,.tab{min-height:44px;white-space:normal;height:auto}
.btn{line-height:1.5;text-align:center}
.btn:focus-visible,a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--tek);outline-offset:3px}
.toolbar,.form-actions,.tik__actions,.staff-admin-actions,.report-actions{flex-wrap:wrap;gap:10px}
.form-actions>form{display:flex;flex-wrap:wrap;gap:8px;min-width:0}
.tl__meta{flex-wrap:wrap;gap:8px}
.tl__date,.task-card time,.lrow time{flex-shrink:0}
.tl__txt{white-space:pre-wrap;overflow-wrap:anywhere}
.tl__item:target{outline:3px solid var(--tek);outline-offset:5px;scroll-margin-top:35px}
.save-status{font-size:.9rem;line-height:1.6;white-space:normal;margin:10px 0;color:var(--ink,#243943)}
.save-status:empty{display:none}
.save-status[role=alert]{color:#9c241e;background:#fff2f0;padding:12px;border-radius:10px}
.modal{z-index:var(--layer-dialog);height:var(--visible-height,100dvh);inset-block-start:0;inset-block-end:auto}
.modal__dialog{max-height:calc(var(--visible-height,100dvh) - 32px);overflow:auto;overscroll-behavior:contain;scroll-padding-bottom:100px}
.modal__dialog .form-actions{position:sticky;bottom:-1px;z-index:2;margin-inline:-8px;padding:12px 8px max(12px,var(--safe-bottom));background:var(--surface,#fff);border-top:1px solid var(--line,#d9e2e6);box-shadow:0 -5px 18px #152d3710}
.modal-open .quick-record-fab,.modal-open .system-assistant-launcher{visibility:hidden}
.danger-zone{border:1px solid #edc5bf;border-radius:14px;padding:14px;margin-block:18px;background:#fff8f6}
.danger-zone summary{font-weight:800;color:#972e25;cursor:pointer;min-height:44px}
.profile-section{border:1px solid var(--line,#d9e2e6);border-radius:12px;margin-block:14px;padding:12px}.profile-section summary{font-weight:700;cursor:pointer;min-height:44px;padding:8px}.profile-section[open]>.frm{margin-top:14px}
.section-nav{display:flex;flex-wrap:wrap;gap:8px;margin-block:16px}
.section-nav button[aria-selected=true]{background:var(--tek,#0d9488);color:var(--on-brand,#fff)}
.section-nav button{min-height:44px;padding:10px 16px;border:1px solid var(--line,#cfdde3);border-radius:12px;background:var(--surface,#fff);color:inherit;font:inherit;cursor:pointer}
.table-tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:12px}
.table-tools input{max-width:280px}
.table-scroll:focus-visible,.table-wrap:focus-visible{outline:3px solid var(--tek)}
.file-hint{display:block;font-size:.88rem;line-height:1.6;margin-block:6px}
.demo-banner{position:relative;background:#173944;color:#fff;padding:12px 20px;display:flex;gap:14px;align-items:center;flex-wrap:wrap;z-index:35}
.demo-banner form{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.demo-banner select{color:#172d38;background:#fff;max-width:190px}
.demo-banner .btn{color:#fff;border:1px solid #fff}
.edition-banner{padding:14px;border-radius:14px;background:var(--tek-soft,#e5f3ef);margin-bottom:20px}
.edition-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.edition-grid article{padding:20px;border:1px solid var(--line,#d9e2e6);border-radius:16px}
.edition-grid article[data-selected=true]{border:2px solid var(--tek);background:var(--tek-soft,#e5f3ef)}
.guide-checklist{display:grid;gap:12px}.guide-checklist a{display:block;padding:18px;border:1px solid var(--line,#d9e2e6);border-radius:14px}
.guide-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:16px;margin-block:20px}
.task-guide{inset:auto 16px 16px auto;width:min(440px,calc(100% - 32px));max-height:65dvh;overflow:auto;padding:24px;border:2px solid var(--tek);border-radius:18px;background:var(--paper,#fff);color:var(--ink,#19333a);box-shadow:0 12px 50px #0003}
.task-guide::backdrop{background:#001a2533}.task-guide .btn{margin:5px}.guide-highlight{outline:4px solid #dfa636;outline-offset:5px}
.modal-open .ai-launcher,.modal-open .ai-panel{visibility:hidden}
@media(max-width:820px){body:has(.bulk-action-bar:not([hidden])) .ai-launcher{visibility:hidden}.ai-launcher{bottom:calc(var(--mobile-navigation) + var(--safe-bottom) + 16px)!important}.time-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:820px){
 .side__nav{z-index:var(--layer-navigation)!important}
 .main{padding-bottom:calc(var(--mobile-navigation) + var(--safe-bottom) + 24px)}
 .page__head,.section-head,.tik__head{flex-wrap:wrap;gap:14px;align-items:flex-start}
 .page__head>*,.section-head>*,.tik__id{max-width:100%}
 .stats,.stats--four,.staff-time-stats,.trend-strip{grid-template-columns:repeat(2,minmax(0,1fr))}
 .directory-toolbar,.directory-search{grid-template-columns:minmax(0,1fr);width:100%}
 .directory-toolbar>.btn,.directory-search>.btn{display:flex;width:100%}
 .filter-open{overflow:hidden}
 .filter-drawer__panel{max-height:calc(var(--visible-height,100dvh) - 20px);overflow:auto}
 .bulk-action-bar{z-index:var(--layer-bar);bottom:calc(var(--mobile-navigation) + var(--safe-bottom) + 8px)!important;flex-wrap:wrap}
 .quick-record-fab{position:static;display:none!important}
 .tik__actions,.staff-admin-actions,.report-actions{width:100%;display:flex}
 .tik__actions .btn,.report-actions .btn{flex:1 1 130px}
 .toolbar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
 .toolbar form,.toolbar .btn{width:100%}
 .toolbar .btn{padding:10px}
 .timeline-filter{display:grid;grid-template-columns:1fr}
 .tl__txt{font-size:16px}
 .frm,.form-grid,.preference-grid,.kvgrid{grid-template-columns:1fr}
 .tabs{flex-wrap:wrap;overflow:visible;gap:6px}
 .tab{flex:1 1 130px;justify-content:center;padding:10px;font-size:.92rem}
 .path-row,.lrow{flex-wrap:wrap;gap:10px}
 .edition-grid{grid-template-columns:1fr}
 .modal{padding:8px}
 .modal__dialog{width:100%;margin:0;max-height:calc(var(--visible-height,100dvh) - 16px);border-radius:18px;padding:22px 16px 10px}
 .modal__close{min-width:44px;min-height:44px}
 .modal__dialog .form-actions>.btn{flex:1}
 .mobile-cards{display:block;min-width:0!important;width:100%!important}
 .mobile-cards thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
 .mobile-cards tbody,.mobile-cards tr{display:block;width:100%}
 .mobile-cards tbody tr{margin-block:12px;padding:12px;border:1px solid var(--line,#d9e2e6);border-radius:14px;background:var(--surface,#fff)}
 .mobile-cards tbody td,.mobile-cards tbody td.hide-sm{display:flex!important;gap:12px;justify-content:space-between;align-items:flex-start;white-space:normal!important;width:auto;min-width:0;max-width:100%;padding:8px 2px;overflow-wrap:anywhere;text-align:start}
 .mobile-cards td::before{content:attr(data-label);font-weight:700;flex:0 0 90px}
 .mobile-cards td[colspan]::before{display:none}
 .mobile-cards td form{max-width:100%}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.001ms!important;transition-duration:.001ms!important}}
@media print{.demo-banner,.section-nav,.table-tools{display:none}.mobile-cards{display:table}.mobile-cards tr{display:table-row}.mobile-cards td{display:table-cell}.mobile-cards td::before{display:none}[data-section-panel][hidden]{display:block!important}}

/* Password visibility — shared, accessible control */
.password-control{position:relative;display:block;min-width:0;max-width:100%;flex:1 1 180px}
.password-control>input{width:100%!important;max-width:100%;padding-inline-end:48px!important}
.password-toggle{position:absolute;inset-inline-end:5px;top:50%;translate:0 -50%;display:inline-flex;align-items:center;justify-content:center;width:38px;height:36px;padding:0;border:0;border-radius:9px;background:transparent;color:var(--text-soft,#64748b);cursor:pointer;z-index:2}
.password-toggle:hover{background:color-mix(in srgb,var(--brand,#0d9488) 10%,transparent);color:var(--brand,#0d9488)}
.password-toggle:focus-visible{outline:3px solid color-mix(in srgb,var(--brand,#0d9488) 30%,transparent);outline-offset:1px}
.password-toggle svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}


/* Focused directory search button — stable 15.3.0 */
.directory-search>span{display:none}
.directory-search>.search-icon-submit.btn{display:inline-flex!important;align-items:center;justify-content:center;flex:0 0 44px;width:44px!important;min-width:44px;max-width:44px;height:44px;min-height:44px;padding:0!important;border-radius:12px;line-height:1}
.directory-search>.search-icon-submit svg{width:20px;height:20px;flex:none;pointer-events:none}
.directory-search input[type="search"]{flex:1 1 0;min-width:0}
.search-icon-submit:focus-visible{outline:3px solid color-mix(in srgb,var(--brand,#0d9488) 30%,transparent);outline-offset:3px}
