:root{--ink: #2b2118;--paper: #f3ead7;--paper-deep: #e8dbbd;--surface: #fffaf0;--line: #d9c9a7;--muted: #6f6253;--mustard: #f0b33c;--mustard-soft: #fbe8b8;--orange: #f15a2b;--blue: #0b63a8;--blue-dark: #084b82;--blue-soft: #d6e6f5;--olive: #4f8a3c;--olive-dark: #3a6a2b;--olive-soft: #dcefd2;--brick: #d8352f;--brick-dark: #ad2921;--brick-soft: #f9dad6;--amber: #d98a1c;--amber-dark: #8a5608;--amber-soft: #fcebc6;--color-bg: var(--paper);--color-surface: var(--surface);--color-primary: var(--blue);--color-primary-dark: var(--blue-dark);--color-success: var(--olive);--color-danger: var(--brick);--color-warning: var(--amber);--color-text: var(--ink);--color-muted: var(--muted);--color-border: var(--line);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--radius: 12px;--radius-sm: 8px;--border: 2px solid var(--ink);--shadow: -4px 4px 0 var(--ink);--shadow-sm: -2px 2px 0 var(--ink);--control-h: 44px;--header-h: 64px;--stripe-h: 6px;--stripes: linear-gradient( to left, var(--mustard) 0 25%, var(--orange) 25% 50%, var(--brick) 50% 75%, var(--blue) 75% 100% )}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:Cairo,Segoe UI,Tahoma,sans-serif;font-size:15px;line-height:1.6;color:var(--ink);background-color:var(--paper);background-image:radial-gradient(rgba(43,33,24,.09) 1px,transparent 1.2px);background-size:16px 16px}h1,h2,h3{line-height:1.35}a{color:var(--blue-dark);font-weight:700;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px}a:hover{color:var(--brick)}:focus-visible{outline:3px solid var(--mustard);outline-offset:2px}.app-shell{display:flex;flex-direction:column;min-height:100vh}.app-body{display:flex;flex:1;min-height:0}.app-header{position:sticky;top:0;z-index:40;height:var(--header-h);flex-shrink:0;display:flex;align-items:center;gap:var(--space-3);padding:0 var(--space-4);background:var(--ink);color:var(--paper)}.app-header:after{content:"";position:absolute;inset-inline:0;bottom:calc(var(--stripe-h) * -1);height:var(--stripe-h);background:var(--stripes)}.sidebar-toggle{display:none;align-items:center;justify-content:center;width:40px;height:40px;padding:0;background:none;color:var(--paper);border:2px solid rgba(243,234,215,.35);border-radius:var(--radius-sm);cursor:pointer}.sidebar-toggle:hover{background:#f3ead71f}.app-header-brand{display:flex;align-items:center;gap:var(--space-3);min-width:0}.brand-logo{width:42px;height:42px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--surface);border:2px solid var(--mustard);border-radius:var(--radius-sm)}.brand-logo img{display:block;width:32px;height:32px}.app-header-text{display:flex;flex-direction:column;line-height:1.25;min-width:0}.app-header-title{font-size:18px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-header-subtitle{font-size:12px;color:#cbbd9f;white-space:nowrap}.app-header-spacer{flex:1}.sidebar{position:sticky;top:calc(var(--header-h) + var(--stripe-h));align-self:flex-start;width:264px;height:calc(100vh - var(--header-h) - var(--stripe-h));flex-shrink:0;overflow-y:auto;padding:var(--space-5) var(--space-4);background:var(--surface);border-inline-end:var(--border)}.sidebar .role-badge{display:inline-flex;align-items:center;height:30px;padding:0 var(--space-3);margin-bottom:var(--space-4);font-size:13px;font-weight:700;color:var(--surface);background:var(--blue);border:var(--border);border-radius:999px;box-shadow:var(--shadow-sm)}.sidebar nav{display:flex;flex-direction:column;gap:var(--space-2)}.nav-link{display:flex;align-items:center;gap:var(--space-3);min-height:var(--control-h);padding:0 var(--space-3);font-size:15px;font-weight:600;color:var(--ink);text-decoration:none;border:2px solid transparent;border-radius:var(--radius-sm)}.nav-link svg{flex-shrink:0;color:var(--muted)}.nav-link:hover{color:var(--ink);background:var(--paper);border-color:var(--line)}.nav-link.active{font-weight:800;background:var(--mustard);border-color:var(--ink);box-shadow:var(--shadow-sm)}.nav-link.active svg{color:var(--ink)}.sidebar-backdrop{display:none}.main-content{flex:1;min-width:0;max-width:1280px;padding:var(--space-6)}.page-header{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:var(--space-4);margin-bottom:var(--space-5)}.page-title{display:inline;margin:0;font-size:26px;font-weight:800;background:linear-gradient(transparent 62%,var(--mustard-soft) 62%)}.page-subtitle{margin:var(--space-1) 0 0;color:var(--muted);font-weight:600}.page-actions{display:flex;gap:var(--space-3);flex-wrap:wrap}.card{background:var(--surface);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:var(--space-5);margin-bottom:var(--space-5)}.card-narrow{max-width:520px}.card-title{margin:0 0 var(--space-4);padding-bottom:var(--space-3);font-size:17px;font-weight:800;border-bottom:2px dashed var(--line)}.grid{display:grid;gap:var(--space-4);margin-bottom:var(--space-5)}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid>.card{margin-bottom:0}.stat-box{--accent: var(--blue);min-height:116px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-4);text-align:center;background:var(--surface);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow),inset 0 6px 0 var(--accent)}.stat-box:nth-child(4n+2){--accent: var(--mustard)}.stat-box:nth-child(4n+3){--accent: var(--orange)}.stat-box:nth-child(4n+4){--accent: var(--brick)}.stat-box .value{font-size:24px;font-weight:800;line-height:1.3}.stat-box .label{margin-top:var(--space-1);font-size:13px;font-weight:600;color:var(--muted)}.status-line{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-5);margin-bottom:var(--space-4);font-weight:700}.status-line>span{display:inline-flex;align-items:center;gap:var(--space-2)}button.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--control-h);padding:0 var(--space-5);font-family:inherit;font-size:15px;font-weight:700;line-height:1.2;color:var(--surface);background:var(--blue);border:var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);cursor:pointer;transition:transform .08s ease,box-shadow .08s ease,background .15s ease}button.btn:hover{background:var(--blue-dark)}button.btn:active{transform:translate(-2px,2px);box-shadow:none}button.btn.secondary{color:var(--ink);background:var(--surface)}button.btn.secondary:hover{background:var(--paper-deep)}button.btn.success{background:var(--olive)}button.btn.success:hover{background:var(--olive-dark)}button.btn.danger{background:var(--brick)}button.btn.danger:hover{background:var(--brick-dark)}button.btn:disabled{color:#7a6e5e;background:#d8ccb4;box-shadow:none;transform:none;cursor:not-allowed}button.btn.btn-sm{min-height:36px;padding:0 var(--space-3);font-size:14px}button.btn.btn-block{width:100%}.row-actions{display:inline-flex;gap:var(--space-2)}input,select,textarea{width:100%;min-height:var(--control-h);margin:0;padding:var(--space-2) var(--space-3);font-family:inherit;font-size:15px;color:var(--ink);background:var(--surface);border:var(--border);border-radius:var(--radius-sm);transition:box-shadow .12s ease,background .12s ease}textarea{min-height:104px;resize:vertical}input::placeholder,textarea::placeholder{color:#a4967f}input:focus,select:focus,textarea:focus{outline:none;box-shadow:0 0 0 3px var(--mustard)}input[dir=ltr]{text-align:right}.date-input{position:relative}@supports selector(::-webkit-datetime-edit){.date-input[data-empty=true] input:not(:focus)::-webkit-datetime-edit{color:transparent}.date-input[data-empty=true]:not(:focus-within):after{content:attr(data-placeholder);position:absolute;top:50%;inset-inline-start:var(--space-3);transform:translateY(-50%);color:#a4967f;pointer-events:none}}input.input-sm,select.input-sm{min-height:36px;padding:var(--space-1) 10px;font-size:14px}[aria-invalid=true]{border-color:var(--brick);background:#fff4f1}[aria-invalid=true]:focus{box-shadow:0 0 0 3px var(--brick-soft)}label{display:block;margin-bottom:6px;font-size:14px;font-weight:700}.required-mark{margin-inline-start:var(--space-1);color:var(--brick)}.field{margin-bottom:var(--space-4)}.field-hint,.field-error{margin:6px 0 0;font-size:13px;line-height:1.5}.field-hint{color:var(--muted)}.field-error{display:flex;align-items:flex-start;gap:6px;font-weight:700;color:var(--brick-dark)}.field-error:before{content:"!";flex:none;width:18px;height:18px;margin-top:1px;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;color:#fff;background:var(--brick);border-radius:50%}.form-actions{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-2)}.form-note{margin:var(--space-3) 0 0;font-size:13px;color:var(--muted)}.form-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}.form-row>.field{margin-bottom:0}.form-row-hint{margin:6px 0 var(--space-4)}fieldset{min-width:0;margin:0 0 var(--space-4);padding:0;border:none}legend{margin-bottom:6px;padding:0;font-size:14px;font-weight:700}input[type=checkbox]{flex:none;width:20px;height:20px;min-height:0;padding:0;accent-color:var(--blue);cursor:pointer}.day-chips{display:flex;flex-wrap:wrap;gap:var(--space-2)}label.day-chip{position:relative;margin:0;cursor:pointer}.day-chip input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;opacity:0}.day-chip span{display:inline-flex;align-items:center;height:36px;padding:0 var(--space-3);font-size:14px;background:var(--surface);border:var(--border);border-radius:999px}.day-chip input:checked+span{background:var(--mustard);box-shadow:var(--shadow-sm)}.day-chip input:focus-visible+span{box-shadow:0 0 0 3px var(--blue)}.geo-actions{margin:calc(var(--space-2) * -1) 0 var(--space-4)}.map-preview{margin:0 0 var(--space-4)}.map-preview iframe{display:block;width:100%;height:240px;background:var(--paper-deep);border:var(--border);border-radius:var(--radius-sm)}.map-preview figcaption{margin-top:6px;font-size:13px;color:var(--muted)}label.check-row{display:flex;align-items:flex-start;gap:var(--space-3);margin:0 0 var(--space-4);padding:var(--space-3);font-weight:400;background:var(--paper);border:1.5px dashed var(--ink);border-radius:var(--radius-sm);cursor:pointer}.check-row input{margin-top:3px}.check-row strong{display:block;font-size:14px}.check-row small{display:block;margin-top:2px;font-size:13px;color:var(--muted)}.alert{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);font-size:14px;font-weight:600;line-height:1.6;border:var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm)}.alert-icon{flex:none;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;font-size:14px;font-weight:800;color:#fff;border:var(--border);border-radius:50%}.alert-body{flex:1;min-width:0}.alert-title{display:block}.alert-close{flex:none;padding:0 var(--space-1);font-family:inherit;font-size:22px;line-height:1;color:var(--ink);background:none;border:none;cursor:pointer}.alert-error{background:var(--brick-soft)}.alert-error .alert-icon{background:var(--brick)}.alert-success{background:var(--olive-soft)}.alert-success .alert-icon{background:var(--olive)}.alert-warning{background:var(--amber-soft)}.alert-warning .alert-icon{background:var(--amber)}.alert-info{background:var(--blue-soft)}.alert-info .alert-icon{background:var(--blue)}.badge{display:inline-flex;align-items:center;height:26px;padding:0 var(--space-3);font-size:13px;font-weight:700;white-space:nowrap;border:1.5px solid var(--ink);border-radius:999px}.badge.success{color:var(--olive-dark);background:var(--olive-soft)}.badge.danger{color:var(--brick-dark);background:var(--brick-soft)}.badge.warning{color:var(--amber-dark);background:var(--amber-soft)}.badge.muted{color:var(--muted);background:var(--paper-deep)}.badge.info{color:var(--blue-dark);background:var(--blue-soft)}.toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-4);padding:var(--space-4);margin-bottom:var(--space-5);background:var(--surface);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.toolbar>.field{flex:1 1 180px;margin-bottom:0}.toolbar-actions{flex:none}.table-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-4)}.table-toolbar-info{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.table-toolbar-title{margin:0;font-size:17px;font-weight:800}.table-count{display:inline-flex;align-items:center;height:28px;padding:0 var(--space-3);font-size:13px;font-weight:700;background:var(--paper);border:1.5px solid var(--ink);border-radius:999px}.table-toolbar-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-inline-start:auto}.table-search-wrap{position:relative}.table-search-icon{position:absolute;top:50%;inset-inline-start:var(--space-3);transform:translateY(-50%);color:var(--muted);pointer-events:none}input.table-search{width:240px;min-height:36px;padding-inline-start:36px;font-size:14px}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:separate;border-spacing:0;font-size:14px}th,td{padding:var(--space-3) var(--space-2);text-align:start;vertical-align:middle}th:first-child,td:first-child{padding-inline-start:var(--space-3)}th:last-child,td:last-child{padding-inline-end:var(--space-3)}th{font-size:13px;font-weight:700;white-space:nowrap;color:var(--surface);background:var(--ink)}th:first-child{border-start-start-radius:var(--radius-sm)}th:last-child{border-start-end-radius:var(--radius-sm)}td{white-space:nowrap;border-bottom:1.5px dashed var(--line)}td.cell-wrap{min-width:150px;max-width:320px;white-space:normal}tbody tr:nth-child(2n) td{background:#faf3e3}tbody tr:hover td{background:#fdf0d2}.empty-state,.loading-state{margin:0;padding:var(--space-6) var(--space-4);text-align:center;font-weight:600;color:var(--muted)}.loading-state{display:flex;align-items:center;justify-content:center;gap:var(--space-3)}.loading-state:before{content:"";width:20px;height:20px;border:3px solid var(--ink);border-top-color:var(--mustard);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.camera-box{max-width:100%;overflow:hidden;background:var(--ink);border:var(--border);border-radius:var(--radius)}.camera-box video,.camera-box img,.camera-box canvas{display:block;width:100%}.camera-live{position:relative;min-height:200px}.camera-live video{transform:scaleX(-1)}.camera-live.is-off{display:none}.face-guide{position:absolute;top:8%;bottom:8%;left:50%;aspect-ratio:3 / 4;border:3px dashed var(--mustard);border-radius:50%;transform:translate(-50%);pointer-events:none}.face-arrow{position:absolute;top:50%;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;font-size:26px;font-weight:800;color:var(--ink);background:var(--mustard);border:var(--border);border-radius:50%;transform:translateY(-50%)}.face-arrow.is-right{right:var(--space-3)}.face-arrow.is-left{left:var(--space-3)}.face-step{margin:var(--space-3) 0 0;font-size:16px;font-weight:800;text-align:center}.face-hint{margin:var(--space-1) 0 0;font-size:14px;font-weight:600;text-align:center;color:var(--brick-dark)}.camera-actions{display:flex;justify-content:center;gap:var(--space-3);padding:var(--space-3);background:var(--ink)}.camera-controls{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-3)}.cell-stack{display:flex;flex-direction:column;line-height:1.35;text-align:start}.cell-stack small{font-size:12px;color:var(--muted)}.cell-stack small.cell-warning{font-weight:700;color:var(--brick-dark)}.notes-cell{display:inline-flex;flex-wrap:wrap;gap:var(--space-1)}.session-list{margin:0;padding:0;list-style:none}.session-list li{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;font-size:14px;font-weight:600;border-bottom:1.5px dashed var(--line)}.session-list li:last-child{border-bottom:none}.session-num{flex:none;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;font-weight:800;background:var(--mustard);border:var(--border);border-radius:50%}.session-times{flex:1;min-width:0}.modal-box.modal-wide{max-width:560px}.manage-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin:calc(var(--space-2) * -1) 0 var(--space-4);font-size:14px;color:var(--muted)}.manage-section{padding:var(--space-4) 0;border-top:2px dashed var(--line)}.manage-section h3{margin:0 0 var(--space-2);font-size:16px;font-weight:800}.manage-section .form-note{margin:0 0 var(--space-3)}.manage-text{margin:0 0 var(--space-3);font-size:14px;line-height:1.7}.danger-zone h3{color:var(--brick-dark)}.manage-footer{justify-content:flex-end;padding-top:var(--space-4);border-top:2px dashed var(--line)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:var(--space-4);background:#2b211899}.modal-box{width:100%;max-width:480px;max-height:calc(100vh - 2 * var(--space-4));overflow-y:auto;padding:var(--space-5);background:var(--surface);border:var(--border);border-radius:var(--radius);box-shadow:-6px 6px 0 var(--ink)}.modal-box:before{content:"";display:block;height:var(--stripe-h);margin:calc(var(--space-5) * -1) calc(var(--space-5) * -1) var(--space-5);background:var(--stripes)}.modal-overlay.daily-overlay{z-index:60;align-items:center;padding:var(--space-4);overflow-y:auto;background:#2b2118b3}.daily-message{width:100%;max-width:460px;max-height:calc(100vh - 2 * var(--space-4));overflow-y:auto;padding:var(--space-5);background:radial-gradient(var(--mustard-soft) 1px,transparent 1px) 0 0 / 14px 14px,var(--surface);border:var(--border);border-radius:var(--radius);box-shadow:-8px 8px 0 var(--mustard),-8px 8px 0 2px var(--ink);animation:daily-in .28s ease-out}.daily-message:before{content:"";display:block;height:var(--stripe-h);margin:calc(var(--space-5) * -1) calc(var(--space-5) * -1) var(--space-5);background:var(--stripes)}@keyframes daily-in{0%{opacity:0;transform:translateY(16px) scale(.97)}}@media (prefers-reduced-motion: reduce){.daily-message{animation:none}}.daily-head{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4)}.daily-head img{flex:none;padding:4px;background:var(--surface);border:var(--border);border-radius:50%}.daily-kicker{font-size:14px;font-weight:800;color:var(--blue-dark)}.daily-count{margin-inline-start:auto;padding:2px var(--space-3);font-size:13px;font-weight:700;background:var(--mustard);border:1.5px solid var(--ink);border-radius:999px}.daily-message h2{margin:0 0 var(--space-3);font-size:22px;font-weight:800;line-height:1.35;overflow-wrap:anywhere}.daily-message p{margin:0 0 var(--space-5);font-size:16px;line-height:1.9;white-space:pre-line;overflow-wrap:anywhere}.daily-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);padding-top:var(--space-3);border-top:2px dashed var(--line)}.daily-foot small{font-size:13px;color:var(--muted)}.message-excerpt{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.people-tools{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-2)}.people-tools input{flex:1 1 160px;width:auto}.people-list{max-height:240px;margin:0;padding:0;overflow-y:auto;list-style:none;background:var(--surface);border:var(--border);border-radius:var(--radius-sm)}.people-list li+li{border-top:1.5px dashed var(--line)}.people-list label{display:flex;align-items:center;gap:var(--space-3);margin:0;padding:var(--space-2) var(--space-3);font-size:14px;font-weight:600;cursor:pointer}.people-list small{margin-inline-start:auto;font-size:12px;font-weight:400;color:var(--muted)}.people-empty{padding:var(--space-3);font-size:14px;text-align:center;color:var(--muted)}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-5) var(--space-4);background:repeating-linear-gradient(135deg,var(--paper) 0 28px,var(--paper-deep) 28px 56px)}.auth-card{position:relative;width:100%;max-width:440px;overflow:hidden;padding:var(--space-6);background:var(--surface);border:var(--border);border-radius:16px;box-shadow:-6px 6px 0 var(--ink)}.auth-card:before{content:"";position:absolute;inset-inline:0;top:0;height:8px;background:var(--stripes)}.auth-logo{display:block;width:102px;height:auto;margin:var(--space-2) auto var(--space-4)}.auth-card h1{margin:0 0 var(--space-1);font-size:24px;font-weight:800;text-align:center}.auth-card p.sub{margin:0 0 var(--space-5);color:var(--muted);font-weight:600;text-align:center}.auth-footer{margin:var(--space-5) 0 0;text-align:center;font-size:14px}.auth-note{margin:var(--space-3) 0 0;padding-top:var(--space-3);font-size:13px;color:var(--muted);border-top:2px dashed var(--line)}.profile-menu{position:relative}.profile-trigger{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1);padding-inline-end:var(--space-3);font-family:inherit;color:var(--paper);background:#f3ead714;border:2px solid rgba(243,234,215,.35);border-radius:999px;cursor:pointer}.profile-trigger:hover{background:#f3ead729}.avatar-circle{width:34px;height:34px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;color:var(--ink);background:var(--mustard);border:var(--border);border-radius:50%}.avatar-circle-lg{width:48px;height:48px;font-size:16px}.profile-trigger-text{display:flex;flex-direction:column;align-items:flex-start;line-height:1.3}.profile-name{font-size:14px;font-weight:700}.profile-status{display:flex;align-items:center;gap:6px;font-size:12px;color:#cbbd9f}.status-dot{display:inline-block;width:8px;height:8px;background:#6fcf5a;border-radius:50%}.chevron{transition:transform .18s ease}.chevron-open{transform:rotate(180deg)}.profile-dropdown{position:absolute;top:calc(100% + var(--space-3));inset-inline-end:0;z-index:60;width:270px;padding:var(--space-3);color:var(--ink);background:var(--surface);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.profile-dropdown-header{display:flex;align-items:flex-start;gap:var(--space-3)}.profile-dropdown .profile-status{color:var(--muted)}.profile-role-badge{display:inline-flex;margin:var(--space-1) 0;padding:0 10px;font-size:12px;font-weight:700;color:var(--blue-dark);background:var(--blue-soft);border:1.5px solid var(--ink);border-radius:999px}.profile-dropdown-divider{height:0;margin:var(--space-3) 0;border-top:2px dashed var(--line)}.profile-session{margin:var(--space-3) 0 0;padding:var(--space-2) var(--space-3);font-size:13px;background:var(--paper);border:1.5px dashed var(--line);border-radius:var(--radius-sm)}.toast-stack{position:fixed;inset-inline:var(--space-4);bottom:calc(var(--space-4) + env(safe-area-inset-bottom));z-index:70;display:flex;flex-direction:column;align-items:center;gap:var(--space-2);pointer-events:none}.toast-stack .alert{width:100%;max-width:480px;margin:0;box-shadow:var(--shadow);pointer-events:auto}.toast-actions{margin-top:var(--space-2)}.install-banner{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-5);background:var(--blue-soft);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.install-banner img{flex:none;border:var(--border);border-radius:var(--radius-sm)}.install-banner-text{flex:1;min-width:0;display:flex;flex-direction:column;font-size:14px;line-height:1.5}.install-banner-text span{font-size:13px;color:var(--muted)}.inline-icon{display:inline-block;vertical-align:-3px;color:var(--blue)}.install-banner-actions{flex:none;display:flex;gap:var(--space-2)}.auth-card .install-banner{flex-wrap:wrap;margin:var(--space-5) 0 0}.auth-card .install-banner-actions{flex:1 1 100%}.auth-card .install-banner-actions .btn{flex:1 1 0}.profile-dropdown-item{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:10px;font-family:inherit;font-size:14px;font-weight:700;text-align:start;color:var(--ink);background:none;border:2px solid transparent;border-radius:var(--radius-sm);cursor:pointer}.profile-dropdown-item svg{flex-shrink:0}.profile-dropdown-item small{display:block;margin-top:2px;font-size:12px;font-weight:600;color:var(--muted)}.profile-dropdown-item.danger{color:var(--brick-dark)}.profile-dropdown-item.danger:hover{background:var(--brick-soft);border-color:var(--ink)}.chart-wrap{position:relative;direction:ltr}.chart-svg{display:block;width:100%;height:auto;overflow:visible}.chart-gridline{stroke:var(--line);stroke-width:1;stroke-dasharray:4 4}.chart-baseline{stroke:var(--ink);stroke-width:2}.chart-axis-label{font-family:inherit;font-size:20px;font-weight:600;fill:var(--muted)}.chart-bar{fill:var(--blue);stroke:var(--ink);stroke-width:1.5;cursor:pointer;transition:fill .15s ease}.chart-bar-hover{fill:var(--mustard)}.chart-today-dot{fill:var(--brick)}.chart-tooltip{position:absolute;transform:translate(-50%,-125%);display:flex;flex-direction:column;gap:2px;padding:6px var(--space-3);direction:rtl;font-size:12px;white-space:nowrap;color:var(--surface);background:var(--ink);border-radius:var(--radius-sm);box-shadow:-3px 3px 0 var(--mustard);pointer-events:none}.chart-tooltip strong{font-size:14px}.chart-tooltip span{color:#cbbd9f}.status-bars{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-1) 0}.status-bar-row{display:flex;align-items:center;gap:var(--space-3)}.status-bar-label{width:96px;flex-shrink:0;font-size:14px;font-weight:700}.status-bar-track{flex:1;height:16px;overflow:hidden;background:var(--paper);border:var(--border);border-radius:999px}.status-bar-fill{height:100%;transition:width .3s ease}.status-bar-count{width:32px;flex-shrink:0;text-align:end;font-size:15px;font-weight:800}.week-grid{display:grid;gap:var(--space-2)}.week-head,.week-row{display:grid;grid-template-columns:92px 78px minmax(0,1fr);gap:var(--space-2);align-items:center}.week-head{padding:0 calc(var(--space-2) + 1.5px);font-size:12px;font-weight:700;color:var(--muted)}.week-row{padding:var(--space-2);background:var(--surface);border:1.5px solid var(--line);border-radius:var(--radius-sm)}.week-row.is-off{background:var(--paper)}.week-day{display:flex;flex-direction:column;font-weight:800;line-height:1.3}.week-day small{font-size:12px;font-weight:600;color:var(--muted)}.week-row input[type=time]{min-height:40px;padding:var(--space-1) var(--space-2)}.week-off span{height:32px;font-size:13px}.week-off-text{grid-column:3 / -1;font-size:13px;color:var(--muted)}.week-periods{display:grid;gap:var(--space-2)}.week-period{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 32px;gap:var(--space-2);align-items:center}.period-remove{width:32px;height:32px;font-family:inherit;font-size:20px;line-height:1;color:var(--brick-dark);background:var(--brick-soft);border:1.5px solid var(--ink);border-radius:50%;cursor:pointer}.period-add{justify-self:start;padding:2px var(--space-2);font-family:inherit;font-size:13px;font-weight:700;color:var(--blue-dark);background:none;border:1.5px dashed var(--blue);border-radius:var(--radius-sm);cursor:pointer}.week-error{grid-column:1 / -1;margin:0}.week-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2);margin-top:var(--space-3)}.week-total{font-size:14px;font-weight:700}.week-list{margin:0;padding:0;list-style:none}.week-list li{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-2);padding:var(--space-2) var(--space-2);font-size:14px;border-bottom:1.5px dashed var(--line)}.week-list li:last-child{border-bottom:none}.week-list li.is-off{color:var(--muted)}.week-list li.is-today{font-weight:800;background:var(--mustard-soft);border-radius:var(--radius-sm)}.week-list-day{display:inline-flex;align-items:center;gap:var(--space-2)}.closing-banner{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);max-width:520px;padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);font-size:14px;background:var(--blue-soft);border:var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm)}.closing-banner.is-soon{background:var(--amber-soft)}.closing-banner p{flex:1 1 260px;margin:0;line-height:1.7}.closing-left{display:inline-block;font-weight:800}.missed-line{display:block}.closing-banner.is-extended{background:var(--mustard-soft)}.extended-clock{display:flex;flex-direction:column;align-items:center;padding:var(--space-1) var(--space-3);line-height:1.3;background:var(--surface);border:var(--border);border-radius:var(--radius-sm)}.extended-clock small{font-size:12px;font-weight:700;color:var(--muted)}.extended-clock strong{font-size:24px;font-weight:800;font-variant-numeric:tabular-nums}.extended-note{flex:1 1 100%;font-size:12.5px;color:var(--muted)}.day-toolbar .table-toolbar:last-child{margin-bottom:0}.day-group{margin-bottom:var(--space-4);overflow:hidden;background:var(--surface);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.day-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3);padding:var(--space-3) var(--space-4);background:var(--paper-deep);border-bottom:var(--border)}.day-title{margin:0;font-size:16px;font-weight:800}.day-counts{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-3);margin:0 auto 0 0;padding:0;font-size:13px;color:var(--muted);list-style:none}.day-counts b{color:var(--ink);font-weight:800}.day-rows{margin:0;padding:0;list-style:none}.day-row{display:grid;grid-template-columns:minmax(150px,1.1fr) minmax(220px,1.5fr) 90px minmax(160px,1.4fr);gap:var(--space-2) var(--space-4);align-items:center;padding:var(--space-3) var(--space-4);border-bottom:1.5px dashed var(--line)}.day-row.is-selectable{grid-template-columns:20px minmax(150px,1.1fr) minmax(220px,1.5fr) 90px minmax(160px,1.4fr)}.day-row:last-child{border-bottom:none}.day-row.is-selected{background:var(--mustard-soft)}.day-row-check{width:18px;height:18px;margin:0}.day-row-who{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);min-width:0}.day-row-who strong{flex:1 1 100%;font-weight:800;overflow-wrap:anywhere}.day-row-who small{flex:1 1 100%;font-size:12px;line-height:1.3;color:var(--muted)}.day-row-who small.cell-warning{color:var(--brick-dark)}.day-periods{display:grid;gap:var(--space-1);margin:0;padding:0;list-style:none}.day-periods li{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-3)}.period-num{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;background:var(--mustard);border:1.5px solid var(--ink);border-radius:50%}.punch{display:inline-flex;align-items:baseline;gap:var(--space-1)}.punch small{font-size:12px;color:var(--muted)}.punch b{font-size:14px;font-weight:700;white-space:nowrap}.day-row-hours{display:flex;flex-direction:column;line-height:1.3}.day-row-hours strong{font-weight:800}.day-row-hours small{font-size:12px;color:var(--muted)}.day-row-notes{min-width:0}.day-more{display:flex;justify-content:center;margin-bottom:var(--space-4)}.edit-periods{display:grid;gap:var(--space-2);margin-bottom:var(--space-3)}.edit-period{display:grid;grid-template-columns:28px minmax(0,1fr) minmax(0,1fr) 32px;gap:var(--space-2);align-items:center}.edit-period-head{font-size:12px;font-weight:700;color:var(--muted)}.edit-period input[type=time]{min-height:40px;padding:var(--space-1) var(--space-2)}.edit-period-notes{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin:var(--space-1) 0 0;padding-inline-start:calc(28px + var(--space-2))}.edit-period-notes .field-error{margin:0}.edit-history{margin:0;padding:0;list-style:none;font-size:13px}.edit-history li{padding:var(--space-2) 0;border-bottom:1.5px dashed var(--line)}.edit-history li:last-child{border-bottom:none}.edit-history small{display:block;color:var(--muted)}.choice-cards{display:grid;gap:var(--space-2)}label.choice-card{position:relative;display:flex;align-items:flex-start;gap:var(--space-3);margin:0;padding:var(--space-3);font-weight:400;background:var(--surface);border:1.5px solid var(--line);border-radius:var(--radius-sm);cursor:pointer}.choice-card input{flex:none;width:18px;height:18px;min-height:0;margin-top:3px;padding:0;accent-color:var(--blue)}.choice-card:has(input:checked){background:var(--mustard-soft);border-color:var(--ink);box-shadow:var(--shadow-sm)}.choice-card strong{display:block;font-size:14px}.choice-card small{display:block;font-size:13px;color:var(--muted)}.duration-chips{margin:calc(var(--space-2) * -1) 0 var(--space-4)}.chip-button{height:32px;padding:0 var(--space-3);font-family:inherit;font-size:13px;font-weight:700;color:var(--ink);background:var(--surface);border:1.5px solid var(--ink);border-radius:999px;cursor:pointer}.chip-button.is-on{background:var(--mustard)}.stat-box .sub{margin-top:2px;font-size:12px;color:var(--muted)}.schedule-mismatch{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);font-size:14px;line-height:1.7;background:var(--amber-soft);border:var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm)}.schedule-mismatch p{flex:1 1 320px;margin:0}.month-bar{align-items:center}.month-label{min-width:120px;font-size:17px;text-align:center}.timesheet-person{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4)}.timesheet-person h2{margin:0;font-size:20px;font-weight:800}.timesheet-totals .stat-box .value{font-size:18px}.stat-box.tone-neg .value{color:var(--brick-dark)}.stat-box.tone-pos .value{color:var(--olive-dark)}th.cell-select,td.cell-select{width:44px}tbody tr.row-selected td{background:var(--mustard-soft)}.selection-bar{position:sticky;top:var(--space-2);z-index:5;display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);font-weight:800;background:var(--brick-soft);border:var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm)}.selection-bar>span{margin-inline-end:auto}.delete-list{margin:0 0 var(--space-4);padding-inline-start:var(--space-5);font-size:14px;line-height:1.8}@media (max-width: 1100px){.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 900px){.day-row,.day-row.is-selectable{grid-template-columns:minmax(0,1fr) auto;align-items:start}.day-row-check{grid-column:2;grid-row:1}.day-row-who{grid-column:1;grid-row:1}.day-periods{grid-column:1 / -1}.day-row-hours{grid-column:1 / -1;flex-direction:row;align-items:baseline;gap:var(--space-2)}.day-row-notes{grid-column:1 / -1}.day-counts{flex-basis:100%;margin:0}.sidebar-toggle{display:inline-flex}.sidebar{position:fixed;top:calc(var(--header-h) + var(--stripe-h));bottom:0;inset-inline-start:0;z-index:45;align-self:stretch;height:auto;border-inline-end:none;border-inline-start:var(--border);transform:translate(105%);transition:transform .22s ease}.sidebar.sidebar-open{transform:translate(0);box-shadow:-6px 0 #2b211840}.sidebar-backdrop{display:block;position:fixed;inset:calc(var(--header-h) + var(--stripe-h)) 0 0 0;z-index:44;background:#2b211880}.main-content{padding:var(--space-5)}.grid-2{grid-template-columns:minmax(0,1fr)}}@media (max-width: 640px){:root{--header-h: 58px}body{font-size:14px}input,select,textarea{font-size:16px}.main-content{padding:var(--space-4)}.card{padding:var(--space-4);margin-bottom:var(--space-4)}.grid{gap:var(--space-3);margin-bottom:var(--space-4)}.grid-4,.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3>.stat-box:last-child:nth-child(odd){grid-column:1 / -1}.stat-box{min-height:96px;padding:var(--space-3)}.stat-box .value{font-size:19px}.chart-axis-label{font-size:26px}.page-title{font-size:22px}.page-actions,.page-actions .btn{width:100%}.app-header-subtitle,.profile-trigger-text,.profile-trigger .chevron{display:none}.app-header-title{font-size:15px}.install-banner{flex-wrap:wrap}.install-banner-actions{flex:1 1 100%}.install-banner-actions .btn{flex:1 1 0}.brand-logo{width:38px;height:38px}.brand-logo img{width:28px;height:28px}.profile-trigger{padding:var(--space-1)}.toolbar{padding:var(--space-3);gap:var(--space-3)}.toolbar>.field{flex-basis:140px}.toolbar-actions,.toolbar-actions .btn{width:100%}.form-actions .btn{flex:1 1 0}.table-toolbar-actions{width:100%;margin-inline-start:0}.table-search-wrap{flex:1 1 100%}input.table-search{width:100%}.table-toolbar-actions .btn{flex:1 1 0}.table-scroll{overflow:visible}.data-table thead{display:none}.data-table,.data-table tbody,.data-table tr,.data-table td{display:block;width:100%}.data-table tr{margin-bottom:var(--space-3);padding:var(--space-1) var(--space-3);background:var(--surface);border:var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm)}.data-table tbody tr:nth-child(2n) td,.data-table tbody tr:hover td{background:transparent}.data-table td{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-height:var(--control-h);max-width:none;padding:var(--space-2) 0;text-align:end;white-space:normal}.data-table .row-actions{flex-wrap:wrap;justify-content:flex-end}.data-table td:last-child{border-bottom:none}.data-table td:empty{display:none}.data-table td:before{content:attr(data-label);flex:none;white-space:nowrap;font-size:13px;font-weight:700;text-align:start;color:var(--muted)}.data-table td input,.data-table td select{max-width:62%;min-width:0!important}.modal-overlay{align-items:flex-end;padding:0}.modal-box{max-width:none;max-height:92vh;padding:var(--space-4);border-bottom:none;border-radius:16px 16px 0 0;box-shadow:none}.modal-box:before{margin:calc(var(--space-4) * -1) calc(var(--space-4) * -1) var(--space-4)}.auth-card{padding:var(--space-5) var(--space-4)}.data-table tr.row-selected{background:var(--mustard-soft)}.week-head{display:none}.week-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.week-periods{grid-column:1 / -1}.week-off{justify-self:end}.week-off-text{display:none}}.notif-menu{position:relative}.notif-trigger{position:relative;display:flex;align-items:center;justify-content:center;width:44px;height:44px;flex-shrink:0;padding:0;color:var(--paper);background:#f3ead714;border:2px solid rgba(243,234,215,.35);border-radius:50%;cursor:pointer}.notif-trigger:hover,.notif-trigger[aria-expanded=true]{background:#f3ead729}.notif-trigger:focus-visible{outline:3px solid var(--mustard);outline-offset:2px}.notif-badge{position:absolute;top:-6px;inset-inline-end:-6px;min-width:22px;height:22px;padding:0 5px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;line-height:1;color:var(--surface);background:var(--brick);border:2px solid var(--ink);border-radius:999px}.notif-panel{position:absolute;top:calc(100% + var(--space-3));inset-inline-end:0;z-index:60;width:380px;max-width:calc(100vw - 2 * var(--space-4));max-height:min(560px,calc(100vh - var(--header-h) - 40px));display:flex;flex-direction:column;color:var(--ink);background:var(--surface);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.notif-panel-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:2px dashed var(--line)}.notif-panel-body{flex:1;min-height:0;overflow-y:auto}.notif-panel-body .empty-state,.notif-panel-body .loading-state{padding:var(--space-5) var(--space-4)}a.notif-panel-foot{display:block;padding:var(--space-3) var(--space-4);font-weight:700;text-align:center;color:var(--blue-dark);text-decoration:none;border-top:2px dashed var(--line);border-radius:0 0 var(--radius) var(--radius)}a.notif-panel-foot:hover{background:var(--paper)}button.link-button{padding:0;font-family:inherit;font-size:13px;font-weight:700;color:var(--blue-dark);background:none;border:none;text-decoration:underline;cursor:pointer}button.link-button:disabled{color:var(--muted);cursor:default}.notif-list{margin:0;padding:0;list-style:none}.notif-list li+li{border-top:1.5px dashed var(--line)}button.notif-item{display:flex;align-items:flex-start;gap:var(--space-3);width:100%;padding:var(--space-3) var(--space-4);font-family:inherit;font-size:14px;text-align:start;color:var(--ink);background:none;border:none;cursor:pointer}button.notif-item:hover{background:var(--paper)}button.notif-item:focus-visible{outline:3px solid var(--blue);outline-offset:-3px}button.notif-item.is-unread{background:#fdf3d8}button.notif-item.is-unread:hover{background:var(--mustard-soft)}.notif-dot{flex:none;width:10px;height:10px;margin-top:7px;border:1.5px solid var(--line);border-radius:50%}.is-unread .notif-dot{background:var(--orange);border-color:var(--ink)}.notif-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;line-height:1.55}.notif-title{font-weight:600;overflow-wrap:anywhere}.is-unread .notif-title{font-weight:800}.notif-body{white-space:pre-line;overflow-wrap:anywhere}.notif-list.is-compact .notif-body{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;color:var(--muted)}.notif-time{font-size:12px;color:var(--muted)}.card>.notif-list button.notif-item{padding-inline:var(--space-2);border-radius:var(--radius-sm)}.notif-filter{display:flex;gap:var(--space-2);margin-bottom:var(--space-3)}.notif-more{display:flex;justify-content:center;padding-top:var(--space-3)}.notif-settings-section+.notif-settings-section{margin-top:var(--space-5);padding-top:var(--space-4);border-top:2px dashed var(--line)}.notif-settings-section h3{margin:0 0 var(--space-2);font-size:15px;font-weight:800}.notif-device-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3)}.notif-devices{margin-top:var(--space-3);font-size:14px}.notif-devices ul{margin:var(--space-2) 0 0;padding:0;list-style:none}.notif-devices li{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) 0;border-top:1.5px dashed var(--line)}.notif-devices small{display:block;font-size:12px;color:var(--muted)}.notif-kinds{margin:0;padding:0;list-style:none}.notif-kinds li{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) 0;border-top:1.5px dashed var(--line)}.notif-kinds li:first-child{border-top:none}.notif-kind-text strong{display:block;font-size:14px}.notif-kind-text small{display:block;margin-top:2px;font-size:13px;color:var(--muted)}.notif-kind-toggles{flex:none;display:flex;gap:var(--space-4)}.notif-kind-toggles label{display:inline-flex;align-items:center;gap:var(--space-2);margin:0;font-size:13px;white-space:nowrap;cursor:pointer}@media (max-width: 640px){.notif-trigger{width:40px;height:40px}.notif-panel{position:fixed;top:calc(var(--header-h) + var(--stripe-h) + var(--space-2));inset-inline:var(--space-2);width:auto;max-width:none;max-height:calc(100vh - var(--header-h) - var(--stripe-h) - var(--space-5))}.notif-kinds li{flex-direction:column;align-items:stretch;gap:var(--space-2)}}.notif-this-device{font-weight:700;color:var(--blue-dark)}
