@import "https://fonts.googleapis.com/css2?family=Roboto+Slab:wght@500;600;700&family=Source+Sans+3:wght@400;500;600;700&display=swap";:root{--font-display:"Roboto Slab", serif;--font-body:"Source Sans 3", system-ui, sans-serif;--page-bg:oklch(97% .006 85);--surface:#fff;--border:oklch(91% .009 85);--ink:oklch(20% .015 250);--ink-muted:oklch(46% .01 250);--teal-deep:oklch(32% .07 195);--teal-deep-2:oklch(38% .09 195);--teal-tint:oklch(92% .038 195);--amber-deep:oklch(45% .12 60);--amber-tint:oklch(92% .048 68);--danger-deep:oklch(50% .15 25);--danger-tint:oklch(94% .035 25);--success-deep:oklch(35% .07 150);--success-tint:oklch(92% .03 150);--pending-bg:oklch(95% .05 70);--pending-fg:oklch(40% .13 65);--shadow-modal:0 20px 60px oklch(20% .02 250/.25);--shadow-drawer:-10px 0 40px oklch(20% .02 250/.18);--scrim:oklch(20% .01 250/.34);--radius-card:12px;--radius-control:7px}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--page-bg);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0}button,input,textarea,select{font-family:inherit;font-size:inherit;color:inherit}button{cursor:pointer}.app-shell{flex-direction:column;min-height:100%;display:flex}.topbar{background:var(--surface);border-bottom:1px solid var(--border);z-index:20;flex-wrap:wrap;align-items:center;gap:20px;padding:10px 20px;display:flex;position:sticky;top:0}.wordmark{font-family:var(--font-display);color:var(--teal-deep);white-space:nowrap;align-items:center;gap:7px;font-size:19px;font-weight:700;display:flex}.brand-dot{background:var(--amber-deep);border-radius:50%;flex:none;width:10px;height:10px}.tabnav{background:oklch(96% .008 85);border-radius:10px;gap:2px;padding:4px;display:flex}.tab-btn{color:oklch(35% .02 250);background:0 0;border:none;border-radius:7px;padding:8px 14px;font-size:13px;font-weight:600;transition:background .15s,color .15s}.tab-btn.active{background:var(--teal-deep);color:#fff}.topbar-spacer{flex:1}.role-switcher{border:1px dashed var(--ink-muted);border-radius:var(--radius-control);background:var(--surface);color:var(--ink-muted);padding:6px 10px;font-size:12.5px}.role-switcher-label{color:var(--ink-muted);margin-right:6px;font-size:11px}.signout-btn{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);color:var(--ink-muted);padding:6px 12px;font-size:12.5px;font-weight:600}.page{flex:1;width:100%;max-width:1280px;margin:0 auto;padding:20px}.page-scroll-x{overflow-x:auto}.subheader{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;display:flex}.acting-user,.week-nav{align-items:center;gap:10px;display:flex}.week-nav-btn{border:1px solid var(--border);background:var(--surface);width:30px;height:30px;color:var(--ink);border-radius:50%;justify-content:center;align-items:center;font-size:15px;display:flex}.week-nav-btn:disabled{opacity:.35;cursor:not-allowed}.week-label{font-family:var(--font-display);text-align:center;min-width:160px;font-size:14px;font-weight:600}.branch-lock-label{color:var(--ink-muted);border-radius:var(--radius-control);background:oklch(96% .008 85);padding:6px 12px;font-size:12.5px;font-weight:600}.segmented{background:oklch(96% .008 85);border-radius:10px;flex-wrap:wrap;gap:2px;margin-bottom:16px;padding:4px;display:inline-flex}.segmented-btn{color:oklch(35% .02 250);background:0 0;border:none;border-radius:7px;padding:7px 13px;font-size:12.5px;font-weight:600}.segmented-btn.active{background:var(--teal-deep);color:#fff}.avatar{font-family:var(--font-display);border-radius:50%;flex:none;justify-content:center;align-items:center;font-weight:600;display:flex}.rota-branch-block{margin-bottom:28px}.rota-branch-heading{align-items:baseline;gap:8px;margin-bottom:10px;display:flex}.rota-branch-heading .rota-branch-title,.rota-branch-heading .rota-branch-count{margin:0}.branch-collapse-btn{cursor:pointer;color:var(--ink-muted);background:0 0;border:none;padding:2px 4px;font-size:12px}.rota-branch-title{font-family:var(--font-display);margin:0 0 4px;font-size:15px;font-weight:600}.rota-branch-count{color:var(--ink-muted);margin:0 0 10px;font-size:12px;font-weight:600}.rota-grid{background:#fff;border:1px solid oklch(89% .01 85);border-radius:10px;grid-template-columns:190px repeat(7,1fr);min-width:760px;display:grid}.rota-header-cell,.rota-corner-cell{z-index:4;background:oklch(96% .008 85);border-bottom:1px solid oklch(89% .01 85);position:sticky;top:72px}.rota-corner-cell{color:oklch(46% .01 250);text-transform:uppercase;letter-spacing:.05em;align-items:center;padding:9px 14px;font-size:10.5px;font-weight:700;display:flex}.rota-header-cell{text-align:center;color:oklch(30% .01 250);border-left:1px solid oklch(91% .008 85);justify-content:center;align-items:center;gap:6px;padding:9px 6px;font-size:12px;font-weight:600;display:flex}.staff-label-cell{background:var(--surface);border-bottom:1px solid oklch(93% .008 85);align-items:center;gap:8px;padding:9px 14px;display:flex}.col-select-box{cursor:pointer;background:#fff;border:1.5px solid oklch(80% .01 85);border-radius:3px;flex:none;width:13px;height:13px;padding:0}.col-select-box.checked{background:oklch(38% .09 195);border-color:oklch(38% .09 195)}.col-select-box.partial{background:oklch(85% .05 195);border-color:oklch(55% .09 195)}.staff-name-block{min-width:0}.staff-name{color:oklch(20% .015 250);white-space:nowrap;text-overflow:ellipsis;font-size:12.5px;font-weight:600;line-height:1.2;overflow:hidden}.staff-role-label{color:oklch(46% .01 250);font-size:10.5px}.rota-day-cell{cursor:pointer;border-bottom:1px solid oklch(93% .008 85);border-left:1px solid oklch(94% .008 85);align-items:stretch;min-height:54px;padding:5px;display:flex;position:relative}.cell-select-box{z-index:2;cursor:pointer;background:#fff;border:1.5px solid oklch(80% .01 85);border-radius:3px;width:12px;height:12px;padding:0;position:absolute;top:3px;right:3px}.cell-select-box.checked{background:oklch(38% .09 195);border-color:oklch(38% .09 195)}.shift-chip{border-radius:7px;flex-direction:column;justify-content:center;gap:1px;width:100%;padding:5px 6px;display:flex}.shift-chip .time-tag{font-size:11px;font-weight:700}.shift-chip .status-chip-tag{text-transform:uppercase;letter-spacing:.04em;opacity:.85;font-size:10px;font-weight:700}.shift-chip .draft-tag{text-transform:uppercase;letter-spacing:.05em;color:oklch(45% .13 65);font-size:10px;font-weight:800}.shift-chip.removing .time-tag{color:oklch(52% .02 70);text-decoration:line-through;text-decoration-thickness:1.5px}.removing-row{align-items:center;gap:4px;display:flex}.removing-label{text-transform:uppercase;letter-spacing:.05em;color:oklch(45% .13 65);font-size:10px;font-weight:800}.undo-link{text-transform:uppercase;letter-spacing:.05em;color:oklch(42% .09 195);cursor:pointer;background:0 0;border:none;margin:0;padding:0;font-family:inherit;font-size:10px;font-weight:800;text-decoration:underline}.shift-chip.empty{color:oklch(72% .008 85);background:0 0;border:1px dashed oklch(88% .01 85);align-items:center;font-size:15px;font-weight:400}.banner{border-radius:9px;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;padding:10px 14px;font-size:12.5px;display:flex}.banner-amber{background:var(--amber-tint);color:oklch(35% .09 60);border:1px solid oklch(80% .06 65)}.banner-green{background:var(--success-tint);color:var(--success-deep);border:1px solid oklch(78% .07 150)}.rota-toolbar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-card);flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:18px;padding:12px 14px;display:flex}.rota-toolbar input,.rota-toolbar select{max-width:fit-content}.rota-search-input{flex:none;width:auto;min-width:170px}.toolbar-divider{background:var(--border);flex:none;width:1px;height:22px}.selection-count-label{color:var(--teal-deep);white-space:nowrap;font-size:12.5px;font-weight:700}.toolbar-hint{min-width:200px;color:var(--ink-muted);flex:1;font-size:12px}.select-sm{flex:none;width:auto;padding:6px 9px;font-size:12px}.toolbar-to{color:var(--ink-muted);font-size:12px}.toolbar-duration{color:var(--ink-muted);white-space:nowrap;font-size:12px}.context-menu-scrim{z-index:60;position:fixed;inset:0}.context-menu{z-index:61;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-modal);border-radius:9px;flex-direction:column;min-width:180px;padding:6px;display:flex;position:fixed}.context-menu-title{color:var(--ink-muted);border-bottom:1px solid var(--border);margin-bottom:4px;padding:6px 10px 8px;font-size:11px;font-weight:700}.context-menu-item{text-align:left;color:var(--ink);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:8px 10px;font-size:12.5px}.context-menu-item:hover:not(:disabled){background:oklch(96% .008 85)}.context-menu-item:disabled{color:var(--ink-muted);cursor:not-allowed;opacity:.5}.context-menu-item.danger{color:var(--danger-deep)}.context-menu-item.danger:hover:not(:disabled){background:var(--danger-tint)}.btn{border-radius:var(--radius-control);border:1px solid #0000;padding:9px 16px;font-size:13px;font-weight:600;transition:filter .1s}.btn:hover{filter:brightness(.97)}.btn-primary{background:var(--teal-deep);color:#fff}.btn-outline{background:var(--surface);border-color:var(--border);color:var(--ink)}.btn-danger{background:var(--danger-tint);color:var(--danger-deep);border-color:oklch(80% .08 25)}.btn-danger-solid{background:var(--danger-deep);color:#fff}.btn-tint{background:var(--teal-tint);color:var(--teal-deep)}.btn-block{width:100%}.btn-sm{padding:6px 11px;font-size:12px}.btn:disabled{opacity:.5;cursor:not-allowed}.overlay{background:var(--scrim);z-index:100;display:flex;position:fixed;inset:0}.overlay.modal-overlay{justify-content:center;align-items:center;padding:20px}.overlay.drawer-overlay{justify-content:flex-end}.modal-card{background:var(--surface);border-radius:var(--radius-card);box-shadow:var(--shadow-modal);width:100%;max-width:fit-content;max-height:90vh;padding:22px;overflow-y:auto}.drawer-card{background:var(--surface);box-shadow:var(--shadow-drawer);width:340px;max-width:100%;height:100%;padding:22px;overflow-y:auto}.panel-title{font-family:var(--font-display);margin:0 0 2px;font-size:16px;font-weight:600}.panel-subtitle{color:var(--ink-muted);margin:0 0 18px;font-size:12.5px}.field-label{color:var(--ink-muted);margin-top:14px;margin-bottom:6px;font-size:12px;font-weight:600;display:block}.field-label:first-child{margin-top:0}.text-input,.textarea-input,.select-input{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);width:100%;padding:9px 11px;font-size:13px}.textarea-input{resize:vertical;min-height:64px}.modal-actions,.drawer-actions{gap:10px;margin-top:20px;display:flex}.drawer-actions{flex-direction:column}.divider{border:none;border-top:1px solid var(--border);margin:18px 0}.section-label{letter-spacing:.08em;text-transform:uppercase;color:var(--ink);margin:0 0 12px;font-size:11.5px;font-weight:700}.time-field-row{gap:16px;display:flex}.time-field{flex-direction:column;flex:1;display:flex}.time-field .field-label{color:var(--ink);text-transform:none;margin-top:0;margin-bottom:8px;font-size:13px}.select-lg{padding:12px 14px;font-size:15px}.shift-duration{color:var(--ink-muted);margin:10px 0 0;font-size:13px}.cards-row{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:20px;display:grid}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-card);padding:14px 16px}.stat-card-label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.03em;margin:0 0 6px;font-size:11.5px;font-weight:600}.stat-card-value{font-family:var(--font-display);margin:0;font-size:24px;font-weight:700}.stat-card-value.danger{color:var(--danger-deep)}.stat-card-value.teal{color:var(--teal-deep-2)}.day-list{flex-direction:column;gap:10px;display:flex}.day-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-card);flex-wrap:wrap;align-items:center;gap:14px;padding:14px 16px;display:flex}.day-card.today{border-color:var(--teal-deep-2)}.day-date-block{font-family:var(--font-display);text-align:center;min-width:44px}.day-date-abbr{color:var(--ink-muted);text-transform:uppercase;font-size:11px;font-weight:600}.day-date-num{font-size:19px;font-weight:700}.day-info{flex:1;min-width:140px}.day-shift-time{font-size:13.5px;font-weight:700}.day-shift-off{color:var(--ink-muted);font-size:13.5px}.day-with-line{color:var(--ink-muted);margin-top:2px;font-size:11.5px}.status-tag{letter-spacing:.04em;text-transform:uppercase;border-radius:5px;margin-top:4px;padding:2px 7px;font-size:9.5px;font-weight:800;display:inline-block}.status-tag.noshow{background:var(--danger-tint);color:var(--danger-deep)}.status-tag.rejected{color:oklch(52% .01 85);background:oklch(96% .004 85);border:1px dashed oklch(75% .01 85)}.day-actions{gap:8px;display:flex}.timeoff-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-card);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.timeoff-dates{font-size:13.5px;font-weight:700}.timeoff-reason{color:var(--ink-muted);margin-top:2px;font-size:12.5px}.status-pill{white-space:nowrap;border-radius:999px;padding:5px 12px;font-size:11.5px;font-weight:700}.status-pill.pending{background:var(--pending-bg);color:var(--pending-fg)}.status-pill.approved{background:var(--success-tint);color:var(--success-deep)}.status-pill.denied{background:var(--danger-tint);color:var(--danger-deep)}.status-pill.awaiting_confirmation{background:var(--pending-bg);color:var(--pending-fg)}.status-pill.in_review{background:var(--teal-tint);color:var(--teal-deep)}.status-pill.finalized{background:var(--success-tint);color:var(--success-deep)}.status-pill.blocked{background:var(--danger-tint);color:var(--danger-deep)}.status-pill.declined{color:oklch(45% .01 85);background:oklch(94% .01 85)}.hours-table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-card);overflow:hidden}.hours-table{border-collapse:collapse;width:100%;min-width:720px}.hours-table th{text-align:left;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-muted);border-bottom:1px solid var(--border);background:oklch(96% .008 85);padding:10px 14px;font-size:11px;font-weight:700}.hours-table td{border-bottom:1px solid var(--border);padding:10px 14px;font-size:13px}.hours-table tr:last-child td{border-bottom:none}.hours-staff-cell{align-items:center;gap:9px;display:flex}.progress-track{background:var(--border);vertical-align:middle;border-radius:3px;width:90px;height:6px;margin-right:8px;display:inline-block;overflow:hidden}.progress-fill{border-radius:3px;height:100%}.swap-list{flex-direction:column;gap:10px;display:flex}.swap-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-card);padding:14px 16px}.swap-card-top{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.swap-title{font-size:14px;font-weight:700}.swap-meta{color:var(--ink-muted);margin-top:3px;font-size:12px}.swap-actions{gap:8px;margin-top:12px;display:flex}.block-reason-row{flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;display:flex}.block-reason-row .text-input{flex:1;min-width:160px}.empty-state{color:var(--ink-muted);text-align:center;padding:30px 0;font-size:13.5px}.section-title{font-family:var(--font-display);margin:0 0 12px;font-size:15px;font-weight:600}.role-note{color:var(--ink-muted);background:oklch(96% .008 85);border-radius:8px;margin-bottom:16px;padding:8px 12px;font-size:11.5px}@media (width<=640px){.subheader,.day-card{flex-direction:column;align-items:flex-start}.day-actions{width:100%}.timeoff-card{flex-direction:column;align-items:flex-start}}.dash-page{max-width:1200px;padding:22px 24px 60px}.dash-greeting{margin-bottom:20px}.dash-greeting-title{font-family:var(--font-display);color:oklch(20% .015 250);margin:0;font-size:21px;font-weight:700}.dash-greeting-sub{color:oklch(46% .01 250);margin:3px 0 0;font-size:13px}.dash-announcements{flex-direction:column;gap:10px;margin-bottom:18px;display:flex}.dash-announcement-card{background:oklch(98% .02 70);border:1px solid oklch(86% .06 70);border-left:3px solid oklch(62% .13 70);border-radius:10px;padding:15px 17px}.dash-announcement-row{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.dash-announcement-text{min-width:0}.dash-announcement-title{font-family:var(--font-display);color:oklch(24% .03 70);margin:0;font-size:14.5px;font-weight:700;line-height:1.3}.dash-announcement-body{color:oklch(35% .02 70);text-wrap:pretty;margin:6px 0 0;font-size:12.5px;line-height:1.55}.dash-announcement-meta{color:oklch(46% .02 70);margin:9px 0 0;font-size:11.5px;font-weight:600}.dash-announcement-dismiss{color:oklch(38% .06 70);cursor:pointer;background:#fff;border:1px solid oklch(80% .05 70);border-radius:7px;flex:none;padding:7px 13px;font-size:12px;font-weight:600}.dash-card{background:#fff;border:1px solid oklch(90% .01 85);border-radius:12px;margin-bottom:18px;overflow:hidden}.dash-card:last-child{margin-bottom:0}.dash-card-header{border-bottom:1px solid oklch(93% .008 85);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:16px 18px;display:flex}.dash-card-title{font-family:var(--font-display);color:oklch(20% .015 250);margin:0;font-size:16px;font-weight:700}.dash-card-sub{color:oklch(48% .01 250);margin:2px 0 0;font-size:12.5px}.dash-offweek-note{color:oklch(45% .13 65);margin:6px 0 0;font-size:12px;font-weight:600}.dash-clear-btn{color:oklch(35% .01 250);cursor:pointer;background:#fff;border:1px solid oklch(85% .01 85);border-radius:8px;padding:8px 14px;font-size:12.5px;font-weight:600}.dash-group-header{background:oklch(96.5% .008 85);border-bottom:1px solid oklch(93% .008 85);align-items:center;gap:8px;padding:8px 18px;display:flex}.dash-group-label{color:oklch(42% .01 250);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:700}.dash-group-pill{color:#fff;background:oklch(52% .16 25);border-radius:9px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 6px;font-size:10.5px;font-weight:700;display:flex}.dash-group-body{grid-template-columns:repeat(auto-fill,minmax(290px,1fr));display:grid}.dash-notice-item{border-bottom:1px solid oklch(95% .006 85);border-right:1px solid oklch(95% .006 85);align-items:flex-start;gap:11px;padding:13px 16px;display:flex}.dash-notice-text{flex:1;min-width:0}.dash-notice-name-row{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.dash-notice-name{color:oklch(20% .015 250);font-size:13px;font-weight:600}.dash-notice-kind{text-transform:uppercase;letter-spacing:.04em;border-radius:5px;padding:2px 7px;font-size:10px;font-weight:700}.dash-notice-when{color:oklch(46% .01 250);margin:2px 0 0;font-size:12px}.dash-notice-detail{color:oklch(52% .01 250);margin:1px 0 0;font-size:11.5px}.dash-notice-dismiss{color:oklch(66% .01 250);cursor:pointer;background:0 0;border:none;flex:none;padding:2px 4px;font-size:14px;line-height:1}.dash-tile-grid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));display:grid}.dash-tile{border-bottom:1px solid oklch(95% .006 85);border-right:1px solid oklch(95% .006 85);flex-direction:column;gap:3px;padding:18px;display:flex}.dash-tile-label{color:oklch(48% .01 250);font-size:12px}.dash-tile-value{font-family:var(--font-display);color:oklch(20% .015 250);margin:0;font-size:26px;font-weight:700;line-height:1.15}.dash-tile-link{color:oklch(42% .09 195);cursor:pointer;background:0 0;border:none;align-self:flex-start;margin-top:4px;padding:0;font-size:12px;font-weight:600;text-decoration:underline}.dash-messages-link{color:oklch(38% .09 195);cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:0;font-size:12.5px;font-weight:700;text-decoration:underline}.auth-layer{z-index:90;background:oklch(97.5% .008 195);justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0;overflow-y:auto}.auth-column{width:100%;max-width:400px}.auth-brand{text-align:center;margin-bottom:26px}.auth-brand-name{color:oklch(32% .07 195);letter-spacing:-.01em;font-family:Roboto Slab,serif;font-size:27px;font-weight:700}.auth-brand-tagline{color:oklch(46% .01 250);margin-top:4px;font-size:13px}.auth-card{background:#fff;border:1px solid oklch(90% .01 85);border-radius:14px;padding:26px 24px;box-shadow:0 8px 28px oklch(30% .02 250/.06)}.auth-footer{text-align:center;color:oklch(56% .01 250);margin-top:18px;font-size:11.5px;line-height:1.5}.auth-h-signin{color:oklch(20% .015 250);margin:0;font-family:Roboto Slab,serif;font-size:17px;font-weight:700}.auth-h-checking{color:oklch(20% .015 250);margin:0;font-family:Roboto Slab,serif;font-size:16px;font-weight:700}.auth-h-fail{color:oklch(20% .015 250);margin:0;font-family:Roboto Slab,serif;font-size:16.5px;font-weight:700}.auth-h-error{color:oklch(35% .15 25);margin:0;font-family:Roboto Slab,serif;font-size:16.5px;font-weight:700}.auth-h-offline{color:oklch(35% .06 55);margin:0;font-family:Roboto Slab,serif;font-size:16.5px;font-weight:700}.auth-subcopy{color:oklch(48% .01 250);margin-top:5px;margin-bottom:20px;font-size:12.5px;line-height:1.5}.auth-session-expired{color:oklch(45% .12 60);margin:-12px 0 16px;font-size:11.5px;line-height:1.5}.auth-body{color:oklch(46% .01 250);text-wrap:pretty;margin-top:7px;font-size:12.5px;line-height:1.55}.auth-reassurance{color:oklch(54% .01 250);margin-top:18px;font-size:11.5px;line-height:1.5}.auth-provider-stack{flex-direction:column;gap:9px;display:flex}.auth-provider-btn{text-align:left;background:#fff;border:1px solid oklch(87% .01 85);border-radius:10px;align-items:center;gap:11px;width:100%;padding:12px 14px;display:flex}.auth-provider-mark{border-radius:50%;flex:none;justify-content:center;align-items:center;width:26px;height:26px;font-size:12.5px;font-weight:700;display:flex}.auth-provider-label{color:oklch(24% .015 250);font-size:13.5px;font-weight:600}.auth-checking{text-align:center;padding:14px 0}.auth-progress-track{background:oklch(93% .01 195);border-radius:3px;height:4px;margin-top:18px;overflow:hidden}.auth-progress-fill{background:oklch(55% .09 195);border-radius:3px;width:45%;height:100%}.auth-infobox{color:oklch(45% .01 250);background:oklch(97% .008 85);border:1px solid oklch(93% .008 85);border-radius:9px;margin-top:16px;padding:12px 14px;font-size:12px;line-height:1.5}.auth-infobox-amber{color:oklch(38% .04 70);background:oklch(98% .02 70);border:1px solid oklch(88% .05 70);font-weight:600}.auth-btn-primary{color:#fff;background:oklch(38% .09 195);border:none;border-radius:9px;width:100%;margin-top:18px;padding:11px;font-size:13px;font-weight:700}.auth-btn-secondary{color:oklch(35% .01 250);background:#fff;border:1px solid oklch(85% .01 85);border-radius:9px;width:100%;margin-top:18px;padding:11px;font-size:13px;font-weight:600}.auth-btn-row{gap:8px;margin-top:18px;display:flex}.auth-btn-row .auth-btn-flex{margin-top:0}.auth-btn-flex{flex:1}.auth-dev-tools{border-top:1px dashed oklch(85% .01 85);margin-top:20px;padding-top:16px}.auth-dev-tools-label{color:oklch(56% .01 250);margin:0 0 8px;font-size:11px}.auth-dev-tools-row{flex-wrap:wrap;gap:6px;display:flex}.auth-dev-tools-row button{color:oklch(40% .01 250);background:oklch(97% .008 85);border:1px dashed oklch(75% .01 85);border-radius:7px;padding:5px 9px;font-size:11px}.clock-column{max-width:440px}.clock-header{margin-bottom:0}.clock-title{color:oklch(20% .015 250);margin:0;font-family:Roboto Slab,serif;font-size:19px;font-weight:700}.clock-subline{color:oklch(46% .01 250);margin-top:3px;margin-bottom:18px;font-size:13px}.clock-card{background:#fff;border:1px solid oklch(90% .01 85);border-radius:14px;padding:22px}.clock-onshift-marker{align-items:center;gap:8px;margin-bottom:12px;display:flex}.clock-onshift-dot{background:oklch(58% .14 145);border-radius:50%;flex:none;width:9px;height:9px}.clock-onshift-label{color:oklch(42% .11 145);text-transform:uppercase;letter-spacing:.05em;font-size:11px;font-weight:800}.clock-headline{color:oklch(20% .015 250);margin:0;font-family:Roboto Slab,serif;font-size:21px;font-weight:700;line-height:1.25}.clock-subcopy{color:oklch(46% .01 250);text-wrap:pretty;margin-top:8px;font-size:13px;line-height:1.55}.clock-banner{border-radius:9px;margin-top:14px;padding:11px 13px;font-size:12px;font-weight:600;line-height:1.5}.clock-banner-late{color:oklch(38% .07 60);background:oklch(96% .03 65);border:1px solid oklch(87% .06 65)}.clock-banner-pending{color:oklch(38% .05 250);background:oklch(96% .02 250);border:1px solid oklch(88% .04 250)}.clock-primary-btn{border:none;border-radius:11px;width:100%;margin-top:20px;padding:15px;font-size:15px;font-weight:700}.clock-primary-btn-in{color:#fff;background:oklch(38% .09 195)}.clock-primary-btn-out{color:#fff;background:oklch(32% .07 195)}.clock-primary-btn-disabled{color:oklch(60% .01 250);cursor:not-allowed;background:oklch(97% .006 85);border:1px solid oklch(90% .01 85)}.clock-footnote{color:oklch(48% .01 250);border-top:1px solid oklch(94% .008 85);margin-top:18px;padding-top:16px;font-size:12.5px}.clock-noshift-footnote{color:oklch(50% .01 250);margin-top:14px;font-size:12.5px}.scanner-overlay{z-index:80;background:oklch(22% .015 250);justify-content:center;align-items:center;padding:22px;display:flex;position:fixed;inset:0;overflow-y:auto}.scanner-column{width:100%;max-width:380px}.scanner-heading-block{text-align:center;margin-bottom:20px}.scanner-heading{color:#fff;margin:0;font-family:Roboto Slab,serif;font-size:17px;font-weight:700}.scanner-subcopy{color:oklch(78% .01 250);margin-top:5px;font-size:12.5px}.scanner-viewfinder{aspect-ratio:1;background:oklch(30% .015 250);border-radius:16px;width:100%;position:relative;overflow:hidden}.scanner-scrim{border-radius:10px;position:absolute;inset:46px;box-shadow:0 0 0 9999px oklch(22% .015 250/.55)}.scanner-bracket{border:3px solid oklch(72% .12 195);width:34px;height:34px;position:absolute}.scanner-bracket-tl{border-bottom:none;border-right:none;border-radius:10px 0 0;top:46px;left:46px}.scanner-bracket-tr{border-bottom:none;border-left:none;border-radius:0 10px 0 0;top:46px;right:46px}.scanner-bracket-bl{border-top:none;border-right:none;border-radius:0 0 0 10px;bottom:46px;left:46px}.scanner-bracket-br{border-top:none;border-left:none;border-radius:0 0 10px;bottom:46px;right:46px}.scanner-status-line{text-align:center;color:oklch(82% .01 250);width:100%;font-size:12px;font-weight:600;position:absolute;bottom:16px}.scanner-actions{flex-direction:column;gap:10px;margin-top:20px;display:flex}.scanner-btn-outline{color:#fff;background:0 0;border:1px solid oklch(45% .02 250);border-radius:10px;padding:12px;font-size:13px;font-weight:600}.scanner-btn-text{color:oklch(78% .01 250);background:0 0;border:none;border-radius:10px;padding:12px;font-size:13px;font-weight:600}.scanner-card{background:#fff;border-radius:14px;padding:24px}.scanner-manual-heading{color:oklch(20% .015 250);margin:0;font-family:Roboto Slab,serif;font-size:16.5px;font-weight:700}.scanner-manual-body{color:oklch(46% .01 250);text-wrap:pretty;margin-top:7px;font-size:12.5px;line-height:1.55}.scanner-code-input{letter-spacing:.06em;text-transform:uppercase;border:1px solid oklch(86% .01 85);border-radius:10px;width:100%;margin-top:16px;padding:13px 14px;font-family:ui-monospace,monospace;font-size:16px}.scanner-confirm-btn{color:#fff;background:oklch(38% .09 195);border:none;border-radius:10px;width:100%;margin-top:12px;padding:13px;font-size:14px;font-weight:700}.scanner-confirm-btn:disabled{opacity:.45}.scanner-row{gap:8px;margin-top:10px;display:flex}.scanner-row-btn{color:oklch(35% .01 250);background:#fff;border:1px solid oklch(85% .01 85);border-radius:9px;flex:1;padding:11px;font-size:12.5px;font-weight:600}.scanner-result-disc{border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;margin-bottom:14px;font-size:21px;font-weight:700;display:flex}.scanner-result-disc-ok{color:oklch(40% .13 145);background:oklch(93% .06 145)}.scanner-result-disc-fail{color:oklch(45% .16 25);background:oklch(95% .04 25)}.scanner-result-title{color:oklch(20% .015 250);margin:0;font-family:Roboto Slab,serif;font-size:17px;font-weight:700;line-height:1.3}.scanner-result-body{color:oklch(46% .01 250);text-wrap:pretty;margin-top:8px;font-size:12.5px;line-height:1.55}.scanner-result-done-btn{color:#fff;background:oklch(38% .09 195);border:none;border-radius:10px;width:100%;margin-top:20px;padding:13px;font-size:14px;font-weight:700}.scanner-result-actions{margin-top:20px}.scanner-result-retry-btn{color:#fff;background:oklch(38% .09 195);border:none;border-radius:10px;flex:1;padding:13px;font-size:13px;font-weight:700}.scanner-result-close-btn{color:oklch(35% .01 250);background:#fff;border:1px solid oklch(85% .01 85);border-radius:10px;flex:1;padding:13px;font-size:13px;font-weight:600}.qrcode-column{max-width:720px}.qrcode-title{color:oklch(20% .015 250);margin:0;font-family:Roboto Slab,serif;font-size:19px;font-weight:700}.qrcode-subline{color:oklch(46% .01 250);max-width:560px;margin-top:3px;margin-bottom:18px;font-size:13px;line-height:1.5}.qrcode-card{background:#fff;border:1px solid oklch(90% .01 85);border-radius:14px;padding:22px}.qrcode-control-row{flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:18px;display:flex}.qrcode-site-field{flex-direction:column;gap:5px;min-width:180px;display:flex}.qrcode-field-label{color:oklch(42% .01 250);font-size:11.5px;font-weight:600}.qrcode-site-locked{color:oklch(38% .01 250);background:oklch(97% .006 85);border:1px solid oklch(91% .008 85);border-radius:8px;padding:10px 12px;font-size:13.5px}.qrcode-site-select{color:oklch(20% .015 250);background:#fff;border:1px solid oklch(86% .01 85);border-radius:8px;padding:10px 12px;font-size:13.5px}.qrcode-btn-primary{color:#fff;background:oklch(38% .09 195);border:none;border-radius:9px;padding:11px 18px;font-size:13.5px;font-weight:700}.qrcode-btn-secondary{color:oklch(38% .01 250);background:#fff;border:1px solid oklch(85% .01 85);border-radius:9px;padding:11px 16px;font-size:13.5px;font-weight:600}.qrcode-empty-body{text-align:center;border-radius:12px;padding:40px 24px}.qrcode-empty-body-idle{border:1px dashed oklch(88% .01 85)}.qrcode-empty-body-requesting{border:1px solid oklch(93% .008 85)}.qrcode-empty-heading{color:oklch(35% .015 250);margin:0;font-size:13.5px;font-weight:600}.qrcode-empty-text{color:oklch(50% .01 250);max-width:380px;margin-top:6px;margin-left:auto;margin-right:auto;font-size:12.5px;line-height:1.55}.qrcode-progress-track{background:oklch(93% .01 195);border-radius:3px;max-width:220px;height:4px;margin:16px auto 0;overflow:hidden}.qrcode-progress-fill{background:oklch(55% .09 195);width:45%;height:100%}.qrcode-error-body{background:oklch(97% .025 25);border:1px solid oklch(80% .1 25);border-left:3px solid oklch(55% .17 25);border-radius:12px;padding:18px 20px}.qrcode-error-title{color:oklch(35% .15 25);margin:0;font-size:14.5px;font-weight:700}.qrcode-error-text{color:oklch(38% .06 25);text-wrap:pretty;margin-top:6px;font-size:12.5px;line-height:1.55}.qrcode-error-retry{color:#fff;background:oklch(38% .09 195);border:none;border-radius:8px;margin-top:14px;padding:9px 16px;font-size:12.5px;font-weight:700}.qrcode-live-body{flex-wrap:wrap;align-items:flex-start;gap:24px;display:flex}.qrcode-qr-panel{background:#fff;border:1px solid oklch(91% .008 85);border-radius:12px;flex:none;padding:14px}.qrcode-live-right{flex:1;min-width:230px}.qrcode-showing-for{color:oklch(46% .01 250);text-transform:uppercase;letter-spacing:.04em;margin:0;font-size:11px;font-weight:700}.qrcode-site-name{color:oklch(20% .015 250);margin-top:3px;font-family:Roboto Slab,serif;font-size:20px;font-weight:700}.qrcode-countdown-label{color:oklch(48% .01 250);margin:0;font-size:12px}.qrcode-countdown-value{color:oklch(35% .02 250);font-variant-numeric:tabular-nums;font-size:12px;font-weight:700}.qrcode-countdown-track{background:oklch(93% .008 85);border-radius:3px;height:5px;margin-top:6px;overflow:hidden}.qrcode-countdown-fill{border-radius:3px;height:100%;transition:width 1s linear}.qrcode-stale-banner{color:oklch(38% .09 40);background:oklch(96% .03 45);border:1px solid oklch(86% .07 45);border-radius:9px;margin-top:14px;padding:11px 13px;font-size:12px;font-weight:600}.qrcode-manual-block{border-top:1px solid oklch(94% .008 85);margin-top:16px;padding-top:14px}.qrcode-manual-heading{color:oklch(46% .01 250);text-transform:uppercase;letter-spacing:.04em;margin:0;font-size:11px;font-weight:700}.qrcode-manual-body{color:oklch(48% .01 250);margin-top:5px;font-size:12.5px;line-height:1.5}.qrcode-token-text{color:oklch(24% .015 250);letter-spacing:.12em;margin-top:7px;font-family:ui-monospace,monospace;font-size:15px;font-weight:700;transition:opacity .2s}.qrcode-qr-image{display:block}.tablet-display{z-index:85;background:#fff;flex-direction:column;justify-content:center;align-items:center;padding:32px;display:flex;position:fixed;inset:0;overflow-y:auto}.tablet-exit-btn{color:oklch(45% .01 250);background:#fff;border:1px solid oklch(88% .01 85);border-radius:9px;padding:10px 16px;font-size:13px;font-weight:600;position:fixed;top:18px;right:18px}.tablet-headline{color:oklch(20% .015 250);text-align:center;margin:0;font-family:Roboto Slab,serif;font-size:30px;font-weight:700;line-height:1.2}.tablet-sitename{color:oklch(44% .01 250);text-align:center;margin-top:7px;font-size:17px}.tablet-qr-panel{border:1px solid oklch(92% .008 85);border-radius:16px;margin-top:20px;padding:20px}.tablet-qr-image{width:min(58vh,380px);height:min(58vh,380px);display:block}.tablet-countdown-row{justify-content:space-between;width:min(58vh,380px);margin-top:18px;font-size:14px;display:flex}.tablet-countdown-label{color:oklch(48% .01 250)}.tablet-countdown-value{color:oklch(35% .02 250);font-variant-numeric:tabular-nums;font-weight:700}.tablet-countdown-track{background:oklch(93% .008 85);border-radius:3px;width:min(58vh,380px);height:6px;margin-top:7px;overflow:hidden}.tablet-countdown-fill{border-radius:3px;height:100%;transition:width 1s linear}.tablet-stale-banner{color:oklch(37% .1 40);text-align:center;background:oklch(96% .03 45);border:1px solid oklch(86% .07 45);border-radius:11px;max-width:440px;margin-top:18px;padding:14px 18px;font-size:15px;font-weight:600}.tablet-fallback-prompt{color:oklch(50% .01 250);text-align:center;margin-top:20px;font-size:14px}.tablet-token-text{color:oklch(24% .015 250);letter-spacing:.14em;margin-top:8px;font-family:ui-monospace,monospace;font-size:26px;font-weight:700;transition:opacity .2s;display:inline-block}.toast{color:#fff;z-index:70;text-align:center;background:oklch(26% .03 250);border-radius:10px;max-width:90vw;padding:12px 20px;font-size:13px;font-weight:600;position:fixed;bottom:22px;left:50%;transform:translate(-50%);box-shadow:0 12px 34px oklch(20% .02 250/.3)}.sites-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:18px;display:flex}.sites-title{font-family:var(--font-display);color:var(--ink);margin:0;font-size:19px;font-weight:700}.sites-subline{color:var(--ink-muted);margin:3px 0 0;font-size:13px}.sites-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;display:grid}.site-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-card);cursor:pointer;text-align:left;font:inherit;color:inherit;flex-direction:column;gap:12px;padding:18px;transition:border-color .15s;display:flex}.site-card:hover{border-color:var(--teal-deep-2)}.site-card-name{font-family:var(--font-display);color:var(--ink);font-size:16px;font-weight:700}.site-card-address{color:var(--ink-muted);margin-top:4px;font-size:12.5px;line-height:1.45}.site-card-stats{border-top:1px solid var(--border);flex-direction:column;gap:6px;padding-top:12px;display:flex}.site-stat-row{justify-content:space-between;font-size:12.5px;display:flex}.site-stat-label{color:var(--ink-muted)}.site-stat-value{color:var(--ink);font-weight:600}.site-card-view-link{color:var(--teal-deep);font-size:12.5px;font-weight:700}.site-modal-header{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.site-modal-name{font-family:var(--font-display);color:var(--ink);margin:0;font-size:19px;font-weight:700}.site-modal-address{color:var(--ink-muted);margin:3px 0 0;font-size:12.5px}.site-modal-section{border-top:1px solid var(--border);margin-top:18px;padding-top:16px}.site-mgr-helper{color:var(--ink-muted);margin-top:6px;font-size:11.5px}.site-mgr-confirm{background:var(--pending-bg);border:1px solid var(--amber-deep);color:var(--pending-fg);border-radius:9px;margin-top:10px;padding:12px 14px;font-size:12.5px;font-weight:600;line-height:1.5}.site-mgr-confirm-actions{gap:8px;margin-top:10px;display:flex}.site-people-header{justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}.site-people-list{border:1px solid var(--border);border-radius:var(--radius-card);overflow:hidden}.site-person-row{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:10px 13px;display:flex}.site-person-row:last-child{border-bottom:none}.site-person-name{color:var(--ink);font-size:13px;font-weight:600}.site-person-sub{color:var(--ink-muted);margin-top:1px;font-size:11px}.site-person-remove{color:var(--danger-deep);cursor:pointer;background:0 0;border:none;flex:none;font-size:12px;font-weight:600;text-decoration:underline}.site-add-panel{border:1px solid var(--teal-deep-2);background:var(--teal-tint);border-radius:11px;margin-bottom:14px;padding:14px}.site-add-search{margin-bottom:10px}.site-candidate-list{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);max-height:220px;overflow-y:auto}.site-candidate-row{border-bottom:1px solid var(--border);cursor:pointer;align-items:center;gap:10px;padding:9px 12px;display:flex}.site-candidate-row:last-child{border-bottom:none}.site-candidate-row.selected{background:var(--teal-tint)}.site-candidate-name{color:var(--ink);font-size:13px;font-weight:600}.site-candidate-meta{color:var(--ink-muted);margin-top:1px;font-size:11px}.site-add-empty{text-align:center;color:var(--ink-muted);padding:24px 14px;font-size:12.5px}.pill{border:1px solid var(--border);background:var(--surface);color:var(--ink-muted);cursor:pointer;border-radius:20px;padding:7px 13px;font-size:12.5px;font-weight:600}.site-mode-hint{color:var(--ink-muted);margin-top:7px;font-size:11.5px;line-height:1.5}.addsite-title{font-family:var(--font-display);color:var(--ink);margin:0;font-size:17px;font-weight:700}.addsite-subcopy{color:var(--ink-muted);margin:6px 0 18px;font-size:12.5px;line-height:1.45}.people-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:18px;display:flex}.people-title{font-family:var(--font-display);margin:0;font-size:19px;font-weight:700}.people-subtitle{color:var(--ink-muted);margin:4px 0 0;font-size:12.5px}.people-controls{flex-wrap:wrap;gap:8px;display:flex}.people-table-wrap{border:1px solid var(--border);background:#fff;border-radius:11px;overflow:hidden}.people-table-scroll{overflow-x:auto}.people-table-inner{min-width:1040px}.people-grid-row{grid-template-columns:2.1fr 1.2fr 1.3fr 1.9fr 1fr 1fr 1.2fr 70px;display:grid}.people-grid-row.people-header-row{border-bottom:1px solid var(--border);background:oklch(96% .008 85)}.people-grid-row.people-header-row .people-cell{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.04em;font-size:10.5px;font-weight:700}.people-grid-row:not(.people-header-row){border-bottom:1px solid var(--border);align-items:center}.people-cell{padding:10px 6px}.people-cell:first-child{padding:10px 14px}.people-grid-row:not(.people-header-row) .people-cell:last-child{padding:10px 14px 10px 6px}.people-row-suspended{opacity:.6}.people-name-cell{align-items:center;gap:9px;display:flex}.people-name-primary{font-size:13px;font-weight:600}.people-name-role{color:var(--ink-muted);font-size:11px}.people-site-primary{font-size:12.5px;font-weight:600}.people-site-also{color:var(--teal-deep);margin-top:2px;font-size:10.5px;font-weight:600}.people-text-cell{font-size:12.5px}.people-email-cell{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.people-id-cell{font-variant-numeric:tabular-nums}.people-badge{white-space:nowrap;border-radius:5px;padding:3px 8px;font-size:10.5px;font-weight:700;display:inline-block}.people-badge-active{background:var(--success-tint);color:var(--success-deep)}.people-badge-none{color:var(--ink-muted);background:oklch(94% .006 85)}.people-badge-suspended{background:var(--danger-tint);color:var(--danger-deep)}.people-joined-line{color:var(--ink-muted);margin-top:3px;font-size:10.5px}.people-empty-row{text-align:center;color:var(--ink-muted);padding:32px 14px;font-size:13px}.person-modal-title{font-family:var(--font-display);margin:0 0 4px;font-size:17px;font-weight:700}.person-modal-subtitle{color:var(--ink-muted);margin:0 0 18px;font-size:12.5px;line-height:1.45}.person-modal-grid{grid-template-columns:1fr 1fr;gap:14px;margin-bottom:16px;display:grid}.person-field{flex-direction:column;gap:5px;display:flex}.person-locked-field{border:1px solid var(--border);border-radius:var(--radius-control);color:var(--ink-muted);background:oklch(96% .008 85);padding:9px 11px;font-size:13px}.person-email-hint{color:var(--danger-deep);font-size:11px;font-weight:600}.person-section{margin-bottom:18px}.person-section-helper{color:var(--ink-muted);margin:0 0 10px;font-size:12px}.pill-row{flex-wrap:wrap;gap:8px;display:flex}.pill{border:1px solid var(--border);color:var(--ink-muted);background:#fff;border-radius:20px;padding:7px 13px;font-size:12.5px;font-weight:600}.pill.selected{background:var(--teal-tint);border-color:var(--teal-deep-2);color:var(--teal-deep)}.person-access-hint{color:var(--ink-muted);margin-top:9px;font-size:12px;line-height:1.5}.person-modal-actions{gap:8px;margin-top:4px;display:flex}.person-modal-actions .btn{flex:1}.pi-modal-title{font-family:var(--font-display);margin:0 0 6px;font-size:17px;font-weight:700}.pi-modal-subcopy{color:var(--ink-muted);margin:0 0 18px;font-size:12.5px;line-height:1.45}.pi-form-grid{grid-template-columns:1fr 1fr 1fr;gap:12px;margin-bottom:14px;display:grid}.pi-locked-site{color:var(--ink-muted);background:var(--page-bg);cursor:not-allowed}.pi-create-btn{border-radius:9px;width:100%;padding:11px;font-size:13px;font-weight:700}.pi-warning{color:var(--ink-muted);margin:8px 0 0;font-size:11.5px;line-height:1.5}.pi-links-label{margin:22px 0 8px}.pi-links-list{border:1px solid var(--border);border-radius:10px}.pi-empty{color:var(--ink-muted);padding:14px;font-size:12.5px}.pi-link-row{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.pi-link-row:last-child{border-bottom:none}.pi-link-row.pi-just-created{background:var(--teal-tint)}.pi-link-info{flex:1;min-width:200px}.pi-link-url-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.pi-link-url{color:var(--ink);font-family:ui-monospace,monospace;font-size:12.5px;font-weight:700}.pi-status-badge{border-radius:5px;padding:2px 7px;font-size:10px;font-weight:700}.pi-status-badge.pi-status-active{background:var(--success-tint);color:var(--success-deep)}.pi-status-badge.pi-status-expired{background:var(--border);color:var(--ink-muted)}.pi-status-badge.pi-status-revoked{background:var(--danger-tint);color:var(--danger-deep)}.pi-link-meta{color:var(--ink-muted);margin-top:3px;font-size:11.5px}.pi-link-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.pi-revoke-btn{color:var(--danger-deep);font-weight:600}.pi-preview-btn{color:var(--teal-deep);cursor:pointer;background:0 0;border:none;padding:0;font-size:11.5px;font-weight:700;text-decoration:underline}.pi-done-btn{margin-top:18px}.pi-csv-instructions{color:var(--ink-muted);margin:0 0 14px;font-size:12.5px;line-height:1.45}.pi-csv-instructions strong{color:var(--ink);font-weight:600}.pi-csv-textarea{min-height:130px;font-family:ui-monospace,monospace;font-size:12.5px;line-height:1.6}.pi-csv-preview-header{justify-content:space-between;align-items:center;gap:12px;margin:16px 0 8px;display:flex}.pi-csv-preview-summary{color:var(--ink-muted);font-size:11.5px;font-weight:600}.pi-csv-preview-list{border:1px solid var(--border);border-radius:10px;margin-bottom:10px;padding:10px 12px}.pi-csv-preview-row{color:var(--ink);padding:3px 0;font-size:12.5px}.pi-csv-preview-more{color:var(--ink-muted);padding-top:4px;font-size:11.5px}.pi-csv-error-band{background:var(--danger-tint);color:var(--danger-deep);border-radius:8px;margin-bottom:14px;padding:10px 12px;font-size:11.5px;line-height:1.6}.analytics-permission-banner{background:var(--amber-tint);color:oklch(38% .07 60);border:1px solid oklch(87% .06 65);border-radius:9px;margin-bottom:14px;padding:11px 13px;font-size:12px;font-weight:600}.analytics-offline-line{color:oklch(45% .13 65);margin:-4px 0 14px;font-size:12px;font-weight:600}.analytics-fail-panel{background:oklch(97% .025 25);border:1px solid oklch(80% .1 25);border-left:3px solid oklch(55% .17 25);border-radius:12px;padding:18px 20px}.analytics-fail-title{color:oklch(35% .15 25);margin:0 0 6px;font-size:14.5px;font-weight:700}.analytics-fail-body{color:oklch(38% .06 25);margin:0 0 14px;font-size:12.5px;line-height:1.55}.analytics-fail-actions{gap:8px;display:flex}.analytics-empty-period{text-align:center;color:var(--ink-muted);flex-direction:column;align-items:center;gap:12px;margin-bottom:18px;padding:26px 16px;font-size:13px;display:flex}.analytics-footnote{color:oklch(52% .01 250);margin-top:12px;font-size:11.5px}.analytics-header-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:18px;display:flex}.analytics-header-title{font-family:var(--font-display);color:var(--ink);margin:0;font-size:19px;font-weight:700}.analytics-header-subline{color:var(--ink-muted);margin:3px 0 0;font-size:13px}.analytics-header-controls{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.analytics-site-select{border-radius:8px;width:auto;padding:8px 10px;font-size:12.5px;font-weight:600}.analytics-period-toggle{gap:6px;display:flex}.analytics-period-btn{color:oklch(35% .02 250);border:1px solid var(--border);background:#fff;border-radius:8px;padding:8px 14px;font-size:12.5px;font-weight:600}.analytics-period-btn-selected{background:var(--teal-deep-2);color:#fff;border-color:var(--teal-deep-2)}.analytics-kpis{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:18px;display:grid}.analytics-kpi{background:var(--surface);border:1px solid var(--border);border-radius:11px;padding:14px 16px}.analytics-kpi__label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.03em;font-size:11px;font-weight:700}.analytics-kpi__value{font-family:var(--font-display);color:var(--ink);margin-top:4px;font-size:24px;font-weight:700}.analytics-kpi__skeleton{background:oklch(94% .006 85);border-radius:6px;width:60%;height:28px;margin-top:4px}.hbwc-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-card);margin-bottom:18px;padding:16px 18px}.hbwc-header{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.hbwc-title{font-family:var(--font-display);color:var(--ink);margin:0;font-size:15px;font-weight:700}.hbwc-legend{color:var(--ink-muted);gap:14px;font-size:11.5px;display:flex}.hbwc-legend-item{align-items:center;gap:6px;display:flex}.hbwc-swatch{border-radius:2px;width:10px;height:10px;display:inline-block}.hbwc-swatch--scheduled,.hbwc-bar--scheduled{background:oklch(88% .03 195)}.hbwc-swatch--worked,.hbwc-bar--worked{background:oklch(40% .09 195)}.hbwc-grid{grid-template-columns:repeat(4,minmax(0,1fr));align-items:end;gap:14px;display:grid}.hbwc-col{flex-direction:column;align-items:center;gap:6px;display:flex}.hbwc-bars{align-items:flex-end;gap:5px;height:120px;display:flex}.hbwc-bar,.hbwc-bar-skeleton{border-radius:4px 4px 0 0;width:26px}.hbwc-bar-skeleton{background:oklch(94% .006 85)}.hbwc-week-label{color:var(--ink);text-align:center;font-size:11.5px;font-weight:600}.hbwc-week-value{color:var(--ink-muted);font-variant-numeric:tabular-nums;text-align:center;font-size:11px}.hbwc-label-skeleton{background:oklch(94% .006 85);border-radius:4px;width:70%;height:11.5px}.att-bar{align-items:center;gap:8px;display:flex}.att-bar__track{background:oklch(92% .008 85);border-radius:4px;flex:1;height:6px;overflow:hidden}.att-bar__fill{border-radius:4px;height:100%}.att-bar__label{width:36px;color:var(--ink);font-size:11.5px;font-weight:700}.bysite-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-card);margin-bottom:18px;overflow:hidden}.bysite-title-bar{border-bottom:1px solid var(--border);padding:13px 16px}.bysite-title{font-family:var(--font-display);color:var(--ink);margin:0;font-size:15px;font-weight:700}.bysite-scroll{overflow-x:auto}.bysite-inner{min-width:640px}.bysite-grid-row{grid-template-columns:1.4fr .8fr 1fr 1fr 1.6fr .8fr;display:grid}.bysite-header-row{border-bottom:1px solid var(--border);background:oklch(96% .008 85)}.bysite-header-row .bysite-cell{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.04em;font-size:10.5px;font-weight:700}.bysite-body-row{border-bottom:1px solid var(--border);color:var(--ink);cursor:pointer;align-items:center;font-size:12.5px}.bysite-body-row:hover{background:var(--teal-tint)}.bysite-cell{padding:9px 6px}.bysite-cell:first-child{padding:9px 16px}.bysite-header-row .bysite-cell:last-child{padding:9px 16px 9px 6px}.bysite-body-row .bysite-cell{padding:11px 6px}.bysite-body-row .bysite-cell:first-child{padding:11px 16px}.bysite-body-row .bysite-cell:last-child{padding:11px 16px 11px 6px}.bysite-site-name{color:var(--teal-deep-2);font-weight:700}.bysite-worked-cell{font-weight:600}.bysite-skeleton{background:oklch(94% .006 85);border-radius:4px;height:12px;display:inline-block}.bp-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-card);margin-bottom:18px;overflow:hidden}.bp-title-bar{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:12px 16px;display:flex}.bp-title{font-family:var(--font-display);color:var(--ink);margin:0;font-size:15px;font-weight:700}.bp-sort-select{border-radius:7px;width:auto;padding:7px 9px;font-size:12px}.bp-scroll{overflow-x:auto}.bp-inner{min-width:760px}.bp-grid-row{grid-template-columns:2fr 1fr .7fr .9fr .9fr 1.6fr .8fr;display:grid}.bp-header-row{border-bottom:1px solid var(--border);background:oklch(96% .008 85)}.bp-header-row .bp-cell{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.04em;font-size:10.5px;font-weight:700}.bp-body-row{border-bottom:1px solid var(--border);color:var(--ink);cursor:pointer;align-items:center;font-size:12.5px}.bp-body-row:hover{background:var(--teal-tint)}.bp-cell{padding:9px 6px}.bp-cell:first-child{padding:9px 16px}.bp-cell:last-child{padding:9px 16px 9px 6px}.bp-name-cell{align-items:center;gap:9px;display:flex}.bp-name-cell__text{flex-direction:column;display:flex}.bp-name-cell__name{color:var(--ink);font-size:13px;font-weight:600}.bp-name-cell__role{color:var(--ink-muted);font-size:10.5px}.bp-worked-cell{font-weight:600}.bp-noshow-cell{color:var(--ink-muted);font-weight:700}.bp-noshow-cell--positive{color:var(--danger-deep)}.bp-empty-row{text-align:center;color:var(--ink-muted);padding:26px 16px;font-size:13px}.bp-skeleton,.bp-skeleton-avatar{background:oklch(94% .006 85);border-radius:4px;height:12px;display:inline-block}.bp-skeleton-avatar{border-radius:50%;flex:none;width:28px;height:28px}.pc-card{background:#fff;border:1px solid oklch(80% .06 195);border-radius:12px;margin-bottom:18px;padding:18px}.pc-header{flex-wrap:wrap;justify-content:space-between;gap:12px;display:flex}.pc-header-info{align-items:center;gap:12px;display:flex}.pc-name{font-family:var(--font-display);color:var(--ink);font-size:16px;font-weight:700}.pc-subline{color:var(--ink-muted);margin-top:2px;font-size:12px}.pc-empty{text-align:center;color:var(--ink-muted);padding:26px 16px;font-size:13px}.pc-kpis{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin-top:16px;display:grid}.pc-kpi{background:oklch(97.5% .006 85);border-radius:9px;padding:11px 13px}.pc-kpi__label{color:var(--ink-muted);font-size:11px}.pc-kpi__value{font-family:var(--font-display);color:var(--ink);margin-top:2px;font-size:19px;font-weight:700}.pc-trend{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:18px;display:grid}.pc-trend-col{flex-direction:column;align-items:center;display:flex}.pc-trend-bars{align-items:flex-end;gap:4px;height:110px;display:flex}.pc-trend-bar{border-radius:3px 3px 0 0;width:20px}.pc-trend-bar--scheduled{background:oklch(88% .03 195)}.pc-trend-bar--worked{background:oklch(40% .09 195)}.pc-trend-label{color:var(--ink);text-align:center;margin-top:8px;font-size:11px;font-weight:600}.pc-trend-value{color:var(--ink-muted);text-align:center;margin-top:2px;font-size:10.5px}.pc-average{color:var(--ink-muted);margin-top:12px;font-size:12px}
