/*!
 * batedor web UI — take-02 design language.
 * Concrete & cobalt. Archivo + JetBrains Mono (Bunny Fonts).
 * Source: web/src/app.css · Spec: design-language.html.
 * Regenerate: ./web/build.sh (see web/README.md).
 * Post-banner SRI: sha384-d7GNSp3kg69raXuDRu6r4K995oeTzMKfe3ah1H+a77i22DN7K0nV4csEeZEF0l/M
 */
:root{--bg:#ECECE7;--canvas:#F7F7F3;--canvas-2:#FFFFFF;--canvas-3:#E2E2DC;--rule:#C9C9C0;--rule-2:#B0B0A6;--rule-3:#1A1A18;--ink:#0E0E0C;--ink-2:#2D2D29;--ink-3:#6B6B63;--ink-4:#9B9B91;--cobalt:#1742C9;--cobalt-2:#0E2E94;--cobalt-soft:#DCE3F7;--signal-red:#D63224;--signal-red-2:#A81C12;--signal-red-soft:#F5DAD6;--signal-amber:#C68A0E;--signal-amber-2:#8B5F00;--signal-amber-soft:#F2E2B3;--signal-green:#14723E;--signal-green-soft:#D0E5D7;--sans:"Archivo",ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,monospace;--t-xs:11px;--t-sm:13px;--t-md:15px;--t-lg:18px;--t-xl:22px;--t-2xl:30px;--t-3xl:42px;--t-4xl:64px;--t-5xl:92px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:72px}*,*::before,*::after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:var(--t-md);line-height:1.45;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:"ss01","cv11"}::selection{background:var(--cobalt);color:white}.mono{font-family:var(--mono);font-feature-settings:"zero" 1}:focus-visible{outline:2px solid var(--ink);outline-offset:2px}a{color:inherit;text-decoration:none}.app{display:grid;grid-template-rows:auto 1fr auto;grid-template-columns:minmax(0,1fr);min-height:100vh;background:var(--canvas)}.topbar{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--space-5);padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--rule);background:var(--canvas-2)}.topbar .brand{display:flex;align-items:baseline;gap:var(--space-2);font-weight:800;font-size:var(--t-xl);letter-spacing:-0.025em;color:var(--ink)}.topbar .brand .dot{width:8px;height:8px;background:var(--cobalt);border-radius:50%;margin-bottom:3px}.topbar nav{display:flex;gap:var(--space-5);font-size:var(--t-sm)}.topbar nav a{color:var(--ink-3);text-decoration:none;padding-bottom:2px;border-bottom:2px solid transparent}.topbar nav a[aria-current="page"],.topbar nav a.active{color:var(--ink);border-bottom-color:var(--ink);font-weight:600}.topbar .user{display:flex;align-items:center;gap:var(--space-3);font-family:var(--mono);font-size:var(--t-xs);color:var(--ink-3)}.topbar .user .avatar{width:28px;height:28px;background:var(--ink);color:var(--canvas);display:grid;place-items:center;font-weight:700;font-family:var(--sans);font-size:var(--t-xs)}.topbar .user .logout-form{display:inline;margin:0;padding:0}.topbar .user .logout{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;background:transparent;border:1px solid var(--rule);padding:4px 8px;color:var(--ink-2);cursor:pointer;border-radius:0}.topbar .user .logout:hover{border-color:var(--ink)}.clusterbar{display:grid;grid-template-columns:1fr auto;gap:var(--space-5);padding:var(--space-3) var(--space-6);border-top:1px solid var(--rule);background:var(--canvas);font-family:var(--mono);font-size:var(--t-xs);color:var(--ink-3)}.clusterbar .nodes{display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap}.clusterbar .node{display:inline-flex;align-items:center;gap:6px}.clusterbar .node .pip{width:6px;height:6px;border-radius:50%;background:var(--signal-green)}.clusterbar .node.leader .pip{background:var(--cobalt);box-shadow:0 0 0 2px var(--cobalt-soft)}.clusterbar .node.degraded .pip{background:var(--signal-amber)}.clusterbar .node.down .pip{background:var(--signal-red)}.clusterbar .node.down{text-decoration:line-through;opacity:0.6}.clusterbar .node .role{color:var(--ink-4);font-size:10px;text-transform:uppercase;letter-spacing:0.05em}.clusterbar .meta{text-align:right}.pagefoot{padding:var(--space-3) var(--space-6);border-top:1px solid var(--rule);background:var(--canvas-2);display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);font-family:var(--mono);font-size:var(--t-xs);color:var(--ink-3)}.pagefoot select{background:var(--canvas);border:1px solid var(--rule-2);padding:4px 8px;font-family:var(--mono);font-size:var(--t-xs);color:var(--ink-2);appearance:none;border-radius:0}.banner{background:var(--ink);color:var(--canvas);padding:var(--space-6) var(--space-6) var(--space-5);position:relative;overflow:hidden}.banner.cobalt{background:var(--cobalt);color:white}.banner.amber{background:var(--signal-amber);color:var(--ink)}.banner.red{background:var(--signal-red);color:white}.banner.muted{background:var(--canvas-3);color:var(--ink)}.banner.hatched{background:repeating-linear-gradient( 135deg,var(--signal-amber) 0 14px,var(--signal-amber-2) 14px 16px );color:var(--ink)}.banner.dryrun{background:repeating-linear-gradient( 90deg,var(--canvas-3) 0 24px,var(--canvas) 24px 48px );color:var(--ink);border-bottom:2px dashed var(--ink)}.banner-grid{display:grid;grid-template-columns:1fr auto;gap:var(--space-5);align-items:end}.banner-eyebrow{font-family:var(--mono);font-size:var(--t-xs);text-transform:uppercase;letter-spacing:0.1em;opacity:0.65;margin-bottom:var(--space-3);display:flex;align-items:center;gap:var(--space-3)}.banner-eyebrow .live-pip{width:8px;height:8px;background:currentColor;border-radius:50%;animation:live-pulse 1.6s ease-in-out infinite}@keyframes live-pulse{0%,100%{opacity:1}50%{opacity:0.3}}.banner-headline{font-family:var(--sans);font-weight:800;font-size:var(--t-5xl);letter-spacing:-0.045em;line-height:0.92;text-transform:uppercase;margin:0.67em 0}.banner-headline.italic-soft{font-style:italic;font-weight:400;text-transform:none;letter-spacing:-0.03em;font-size:var(--t-4xl)}.banner-meta{margin-top:var(--space-4);display:flex;flex-wrap:wrap;gap:var(--space-5) var(--space-6);font-family:var(--mono);font-size:var(--t-sm);opacity:0.85}.banner-meta .pair{display:flex;flex-direction:column;gap:2px}.banner-meta .pair .lbl{font-size:10px;text-transform:uppercase;letter-spacing:0.08em;opacity:0.7}.banner-meta .pair .val{font-size:var(--t-md);font-weight:500}.banner-tally{text-align:right;font-family:var(--mono);line-height:1}.banner-tally .num{font-family:var(--sans);font-weight:800;font-size:var(--t-4xl);letter-spacing:-0.04em;line-height:1}.banner-tally .lbl{font-size:10px;text-transform:uppercase;letter-spacing:0.1em;opacity:0.7;margin-top:var(--space-2)}.banner-tally .delta{font-size:var(--t-xs);opacity:0.85;margin-top:4px}.body-grid{display:grid;grid-template-columns:1.65fr 1fr;gap:0;min-height:460px}.body-grid .col-main{padding:var(--space-6)}.body-grid .col-side{border-left:1px solid var(--rule);background:var(--canvas-2);padding:var(--space-6)}.col-head{display:flex;align-items:baseline;justify-content:space-between;padding-bottom:var(--space-3);border-bottom:1px solid var(--rule);margin-bottom:var(--space-4)}.col-head h2,.col-head h3{margin:0;font-size:var(--t-xs);font-family:var(--mono);text-transform:uppercase;letter-spacing:0.1em;color:var(--ink-3);font-weight:600}.col-head .aside{font-family:var(--mono);font-size:var(--t-xs);color:var(--ink-4)}table.schedule{width:100%;border-collapse:collapse;font-size:var(--t-md)}table.schedule th{text-align:left;font-family:var(--mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:0.1em;color:var(--ink-4);padding:var(--space-2) var(--space-3) var(--space-3);border-bottom:1px solid var(--rule)}table.schedule th.right{text-align:right}table.schedule td{padding:var(--space-4) var(--space-3);border-bottom:1px solid var(--rule);vertical-align:middle}table.schedule tr.next td{background:var(--cobalt-soft);border-bottom:1px solid var(--cobalt)}table.schedule tr.next td:first-child{box-shadow:inset 4px 0 0 var(--cobalt)}table.schedule tr.future td{color:var(--ink-3)}table.schedule tr.missed td{background:var(--signal-red-soft)}table.schedule tr.inferred td{background:var(--signal-amber-soft)}table.schedule .kind{font-weight:600;letter-spacing:-0.01em}table.schedule .kind .num{display:inline-block;width:18px;font-family:var(--mono);color:var(--ink-3);font-weight:500;font-size:var(--t-sm)}table.schedule .time{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:var(--t-md);font-weight:500}table.schedule .time.actual{color:var(--cobalt)}table.schedule .time.expected{color:var(--ink-3)}table.schedule .time.tilde{font-style:italic;color:var(--signal-amber-2)}table.schedule .time.dash{color:var(--ink-4)}table.schedule .delta{font-family:var(--mono);font-size:var(--t-xs);color:var(--ink-3)}table.schedule .delta.pos{color:var(--signal-green)}table.schedule .delta.neg{color:var(--signal-red-2)}table.schedule .src-tag{display:inline-block;font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.05em;padding:2px 6px;background:var(--canvas-3);color:var(--ink-3);border:1px solid var(--rule)}table.schedule .src-tag.imported{background:var(--canvas-2);border-style:dashed}table.schedule .src-tag.manual{background:var(--cobalt);color:white;border-color:var(--cobalt)}table.schedule .src-tag.inferred{background:var(--signal-amber-soft);color:var(--signal-amber-2)}table.schedule .src-tag.skipped{background:var(--canvas-2);color:var(--ink-3);border-style:dashed}table.schedule tr.skipped td{color:var(--ink-4)}table.schedule tr.skipped td.kind{color:var(--ink-3)}table.schedule .expected-cell .time + .time{margin-left:6px}table.schedule tr{line-height:1.45}table.schedule .time{display:inline-block;vertical-align:middle;line-height:1.45}table.schedule .time.strike{color:var(--ink-4);text-decoration:line-through;text-decoration-thickness:1px;text-decoration-color:var(--ink-4)}table.schedule .time.override-shift{color:var(--cobalt);font-weight:600}table.schedule .origin-cell{text-align:right;padding-right:var(--space-2)}table.schedule .override-action-cell{text-align:right;padding-left:var(--space-2);padding-right:var(--space-3)}.override-toggle{display:inline-flex;align-items:center;gap:4px;background:transparent;border:1px solid var(--rule);padding:4px 10px;font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-2);cursor:pointer;border-radius:0}.override-toggle:hover{border-color:var(--ink)}.override-toggle:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.override-editor-row td{padding:0;background:var(--cobalt-soft);border-top:1px solid var(--cobalt);border-bottom:1px solid var(--rule)}.override-editor{padding:var(--space-4) var(--space-5)}.override-editor-row-grid{display:flex;flex-wrap:wrap;gap:var(--space-3) var(--space-4);align-items:flex-end}.override-form{display:flex;gap:var(--space-2);align-items:flex-end;margin:0}.override-form-shift{gap:var(--space-3)}.override-form-skip,.override-form-reset{align-self:flex-end}.override-field{display:flex;flex-direction:column;gap:4px}.override-field > span{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;color:var(--cobalt-2);font-weight:600}.override-time-input{background:var(--canvas-2);border:1px solid var(--cobalt);padding:8px 10px;font-family:var(--mono);font-size:var(--t-md);font-weight:600;color:var(--ink);-webkit-appearance:none;appearance:none;border-radius:0;min-width:130px}.override-time-input:focus{outline:0;box-shadow:inset 0 0 0 1px var(--cobalt)}.override-btn{background:var(--canvas-2);border:1px solid var(--rule-2);padding:8px 14px;font-family:var(--sans);font-size:var(--t-sm);font-weight:600;color:var(--ink);cursor:pointer;border-radius:0}.override-btn:hover{border-color:var(--ink)}.override-btn.primary{background:var(--cobalt);color:white;border-color:var(--cobalt)}.override-btn.primary:hover{background:var(--cobalt-2);border-color:var(--cobalt-2)}.override-btn.skip{background:var(--canvas-2);color:var(--ink-2);border-color:var(--ink-3);border-style:dashed}.override-btn.skip:hover{color:var(--ink);border-color:var(--ink);border-style:solid}.override-btn.ghost{background:transparent;color:var(--cobalt-2);border-color:var(--cobalt)}.override-btn.ghost:hover{background:var(--canvas-2);border-color:var(--cobalt-2)}.day-summary{display:flex;flex-direction:column;gap:var(--space-4);padding-top:var(--space-3)}.day-summary-stat{display:grid;grid-template-columns:1fr auto;align-items:baseline;border-bottom:1px solid var(--rule);padding-bottom:var(--space-3)}.day-summary-stat .lbl{font-family:var(--mono);font-size:var(--t-xs);text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-3)}.day-summary-stat .val{font-family:var(--sans);font-size:var(--t-xl);font-weight:700;letter-spacing:-0.02em;color:var(--ink)}.day-summary-stat .val.over{color:var(--signal-amber-2)}.day-summary-stat:last-of-type{border-bottom:0}.day-summary-msg{margin:0;font-size:var(--t-sm);color:var(--ink-2);line-height:1.5}.day-summary-msg a{color:var(--cobalt);text-decoration:none;border-bottom:1px solid var(--cobalt-soft)}.day-summary-msg a:hover{border-bottom-color:var(--cobalt)}.rail-empty{border:1px solid var(--rule);background:var(--canvas);padding:var(--space-5) var(--space-4);display:flex;flex-direction:column;gap:var(--space-2)}.rail-empty-heading{margin:0;font-family:var(--sans);font-weight:600;font-size:var(--t-md);color:var(--ink)}.rail-empty-body{margin:0;font-size:var(--t-sm);color:var(--ink-3);line-height:1.5}.action-stack{display:flex;flex-direction:column;gap:var(--space-3)}.action-stack > .action,.action-stack > form > .action{width:100%}.action{display:grid;grid-template-columns:auto 1fr;gap:var(--space-4);align-items:center;padding:var(--space-4) var(--space-5);background:var(--canvas);border:1px solid var(--rule);text-align:left;cursor:pointer;font-family:var(--sans);font-size:var(--t-md);color:var(--ink);transition:border-color 80ms;border-radius:0}.action:hover{border-color:var(--ink)}.action .num{font-family:var(--mono);font-size:var(--t-xs);color:var(--ink-3);width:24px}.receipt-actions{margin-top:var(--space-5);display:flex;gap:var(--space-2);flex-wrap:wrap}.receipt-actions .btn{display:inline-flex;align-items:center;justify-content:center;padding:10px 18px;background:var(--canvas);border:1px solid var(--rule-2);font-family:var(--sans);font-size:var(--t-sm);font-weight:600;color:var(--ink);cursor:pointer;text-decoration:none;border-radius:0;transition:border-color 80ms,background 80ms}.receipt-actions .btn:hover{border-color:var(--ink)}.receipt-actions .btn.primary{background:var(--cobalt);border-color:var(--cobalt);color:white}.receipt-actions .btn.primary:hover{background:var(--cobalt-2);border-color:var(--cobalt-2)}.action .label{font-weight:600;letter-spacing:-0.01em}.action .sub{display:block;font-weight:400;font-size:var(--t-sm);color:var(--ink-3);margin-top:2px}.action.primary{background:var(--cobalt);color:white;border-color:var(--cobalt)}.action.primary:hover{background:var(--cobalt-2);border-color:var(--cobalt-2)}.action.primary .num{color:rgba(255,255,255,0.5)}.action.primary .sub{color:rgba(255,255,255,0.75)}.action.disabled,.action[aria-disabled="true"],.action:disabled{opacity:0.45;cursor:not-allowed;background:var(--canvas-3)}.action.pending{background:var(--cobalt);color:white;border-color:var(--cobalt);cursor:wait;position:relative;overflow:hidden}.action.pending .num,.action.pending .sub{color:rgba(255,255,255,0.85)}.action.pending::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,0.25),transparent);transform:translateX(-100%);animation:pending-sweep 1.4s linear infinite}@keyframes pending-sweep{100%{transform:translateX(100%)}}@media (prefers-reduced-motion:reduce){.banner-eyebrow .live-pip{animation:none}.action.pending::after{animation:none}.passkey-ceremony .spinner{animation:none}}.ribbon{display:grid;grid-template-columns:auto 1fr auto;gap:var(--space-4);align-items:start;padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--rule);font-size:var(--t-sm)}.ribbon .badge{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.1em;font-weight:700;padding:4px 8px;background:var(--ink);color:var(--canvas)}.ribbon .body{color:var(--ink-2)}.ribbon .body strong{color:var(--ink)}.ribbon .actions{display:flex;gap:var(--space-2)}.ribbon .btn{font-family:var(--sans);font-size:var(--t-xs);font-weight:600;padding:4px 10px;border:1px solid var(--ink);background:transparent;color:var(--ink);cursor:pointer;border-radius:0}.ribbon .btn.primary{background:var(--ink);color:var(--canvas)}.ribbon.danger{background:var(--signal-red-soft);border-bottom-color:var(--signal-red)}.ribbon.danger .badge{background:var(--signal-red);color:white}.ribbon.warn{background:var(--signal-amber-soft);border-bottom-color:var(--signal-amber)}.ribbon.warn .badge{background:var(--signal-amber);color:var(--ink)}.ribbon.info{background:var(--cobalt-soft);border-bottom-color:var(--cobalt)}.ribbon.info .badge{background:var(--cobalt);color:white}.ribbon.dryrun{background:repeating-linear-gradient( 90deg,var(--canvas-3) 0 14px,var(--canvas) 14px 28px );border-bottom:2px dashed var(--ink)}.ribbon.dryrun .badge{background:var(--ink);color:var(--canvas)}table.history{width:100%;border-collapse:collapse;font-size:var(--t-md)}table.history th{text-align:left;font-family:var(--mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:0.1em;color:var(--ink-4);padding:var(--space-3);border-bottom:2px solid var(--rule-3);background:var(--canvas-2)}table.history th.right{text-align:right}table.history td{padding:var(--space-4) var(--space-3);border-bottom:1px solid var(--rule);vertical-align:middle}table.history tr.holiday td{background:var(--signal-amber-soft)}table.history tr.weekend td{background:var(--canvas-3);color:var(--ink-3)}table.history tr.partial td{background:var(--signal-red-soft)}table.history tr.imported td{background:var(--canvas-2);border-bottom-style:dashed}table.history .date{font-family:var(--mono);font-variant-numeric:tabular-nums}table.history .date .d{display:block;font-family:var(--sans);font-size:var(--t-xl);font-weight:700;letter-spacing:-0.02em;line-height:1}table.history .date .wd{font-size:10px;text-transform:uppercase;letter-spacing:0.1em;color:var(--ink-3);margin-top:4px}table.history .label{font-weight:600;letter-spacing:-0.01em}table.history .label .note{display:block;font-weight:400;font-size:var(--t-sm);color:var(--ink-3);margin-top:2px}table.history .label .note.warn{color:var(--signal-red-2)}table.history .label .note.amber{color:var(--signal-amber-2)}table.history .label .note.cobalt{color:var(--cobalt);font-weight:600}table.history .hours{font-family:var(--sans);font-weight:700;font-size:var(--t-xl);letter-spacing:-0.025em;text-align:right;line-height:1}table.history .hours .delta{display:block;font-family:var(--mono);font-weight:500;font-size:11px;margin-top:4px;color:var(--ink-3)}table.history .hours .delta.over{color:var(--signal-amber-2)}table.history .hours .delta.under{color:var(--signal-red-2)}table.history tr.expandable{cursor:pointer}table.history tr.expandable:hover td{background:var(--canvas)}table.history tr.expandable:focus{outline:none}table.history tr.expandable:focus-visible{outline:2px solid var(--cobalt);outline-offset:-2px}table.history tr.expandable.holiday:hover td{background:var(--signal-amber-soft)}table.history tr.expandable.weekend:hover td{background:var(--canvas-3)}table.history tr.expandable.partial:hover td{background:var(--signal-red-soft)}.disclosure{display:inline-flex;align-items:baseline;justify-content:flex-end;gap:6px;font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-3);transition:color 120ms ease}.disclosure.on{color:var(--cobalt)}.disclosure .chev{display:inline-block;font-size:var(--t-md);line-height:1;transition:transform 120ms ease}.disclosure.on .chev{transform:rotate(180deg)}table.history tr.detail-row td{padding:0;border-bottom:1px solid var(--rule);background:var(--canvas-2);border-top:0}table.history tr.detail-row.holiday td{background:var(--signal-amber-soft)}table.history tr.detail-row.partial td{background:var(--signal-red-soft)}table.history tr.detail-row.imported td{background:var(--canvas-2)}table.history tr.detail-row.weekend td{background:var(--canvas-3)}.day-detail{padding:var(--space-3) var(--space-4) var(--space-4)}.day-punches-list{display:flex;flex-direction:column;margin:0;padding:0;list-style:none}.day-punches-list .day-punch{display:grid;grid-template-columns:64px 1fr auto auto;gap:var(--space-4);align-items:baseline;padding:8px var(--space-2);border-bottom:1px solid var(--rule)}.day-punches-list .day-punch:last-child{border-bottom:0}.day-punches-list .day-punch .time{font-family:var(--mono);font-weight:600;font-size:var(--t-md);color:var(--ink);font-variant-numeric:tabular-nums}.day-punches-list .day-punch .kind{font-family:var(--sans);font-size:var(--t-sm);color:var(--ink)}.day-punches-list .day-punch .source{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-4)}.day-punches-list .day-punch .source.cobalt{color:var(--cobalt)}.day-punches-list .day-punch .receipt{text-align:right;min-width:110px}.day-punches-list .day-punch .receipt a{font-family:var(--sans);font-size:var(--t-sm);font-weight:600;color:var(--cobalt);text-decoration:none;border-bottom:1px solid transparent;transition:border-color 80ms}.day-punches-list .day-punch .receipt a:hover{border-bottom-color:var(--cobalt)}.day-punches-list .day-punch .receipt .muted{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-4)}.day-punches-list .day-punch .simulated-tag{display:inline-block;margin-left:var(--space-2);font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-4);padding:1px 5px;border:1px solid var(--rule-2)}.mini-tl{position:relative;width:100%;height:28px}.mini-tl .axis{position:absolute;top:13px;left:0;right:0;height:2px;background:var(--rule)}.mini-tl .axis.dashed{background:transparent;border-top:2px dashed var(--rule-2)}.mini-tl .span{position:absolute;top:9px;height:10px;background:var(--cobalt)}.mini-tl .span.imported{background:transparent;border:1px dashed var(--cobalt)}.mini-tl .span.overtime{background:var(--signal-amber)}.mini-tl .span.weekend{background:var(--ink-4)}.mini-tl .gap{position:absolute;top:12px;height:4px;background:repeating-linear-gradient( 90deg,var(--signal-red) 0 4px,transparent 4px 8px )}.mini-tl .punch{position:absolute;top:8px;width:12px;height:12px;background:var(--ink);transform:translateX(-6px);border:2px solid var(--canvas);box-sizing:border-box}.mini-tl .punch.manual{background:var(--cobalt)}.mini-tl .punch.imported{background:var(--canvas);border:2px dashed var(--cobalt)}.mini-tl .punch.missed{background:var(--signal-red-soft);border:2px solid var(--signal-red)}.mini-tl .punch.inferred{background:var(--signal-amber);border:2px solid var(--signal-amber-2)}.mini-tl .now{position:absolute;top:0;bottom:0;width:2px;background:var(--cobalt)}.mini-tl .label-ticks{position:absolute;top:24px;left:0;right:0;display:flex;justify-content:space-between;font-family:var(--mono);font-size:9px;color:var(--ink-4)}.web-receipt{background:var(--canvas-2);border:1px solid var(--rule-2);max-width:480px;margin:0 auto}.web-receipt-head{background:var(--ink);color:var(--canvas);padding:var(--space-5) var(--space-6);text-align:center}.web-receipt-head .crest{font-family:var(--mono);font-size:10px;letter-spacing:0.15em;text-transform:uppercase;opacity:0.55;margin-bottom:4px}.web-receipt-head h2,.web-receipt-head h3{margin:0;font-family:var(--sans);font-size:var(--t-lg);font-weight:700;letter-spacing:-0.015em;line-height:1.2}.web-receipt-body{padding:var(--space-6)}.web-receipt-fields{display:grid;grid-template-columns:1fr;gap:var(--space-3);margin:0;padding:0;font-family:var(--mono);font-size:var(--t-sm);line-height:1.4}.web-receipt-fields .row{display:grid;grid-template-columns:110px 1fr;gap:var(--space-3);padding-bottom:var(--space-3);border-bottom:1px dashed var(--rule)}.web-receipt-fields .row:last-child{border-bottom:0;padding-bottom:0}.web-receipt-fields dt{color:var(--ink-3);text-transform:uppercase;font-size:10px;letter-spacing:0.08em;align-self:start;padding-top:2px;font-weight:600}.web-receipt-fields dd{margin:0;color:var(--ink)}.qr-block{margin-top:var(--space-6);padding-top:var(--space-5);border-top:1px solid var(--rule);display:flex;flex-direction:column;align-items:center;gap:var(--space-3)}.qr-block .qr-frame{background:white;padding:12px;border:1px solid var(--rule)}.qr-block .qr-frame img,.qr-block .qr-frame svg{display:block;width:200px;height:200px;image-rendering:pixelated;image-rendering:-moz-crisp-edges;image-rendering:crisp-edges}.qr-block .qr-ref{font-family:var(--mono);font-size:var(--t-sm);color:var(--ink);font-weight:600;letter-spacing:0.04em}.qr-block .qr-hash{font-family:var(--mono);font-size:11px;color:var(--ink-3);word-break:break-all;text-align:center;line-height:1.5;max-width:360px}.qr-block .qr-hint{font-family:var(--sans);font-size:11px;color:var(--ink-3);text-align:center;line-height:1.4;max-width:320px;margin-top:var(--space-2);font-style:italic}.web-receipt-foot{padding:var(--space-3) var(--space-5);border-top:1px solid var(--rule);background:var(--canvas);font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-3);text-align:center}.web-receipt-foot a{color:var(--ink-2);text-decoration:none;border-bottom:1px solid var(--rule-2)}.scope-toggle{display:inline-flex;border:1px solid var(--rule-2);background:var(--canvas-2)}.scope-toggle button,.scope-toggle a{background:transparent;border:0;padding:6px 14px;font-family:var(--mono);font-size:var(--t-xs);text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-3);cursor:pointer;border-right:1px solid var(--rule);text-decoration:none}.scope-toggle button:last-child,.scope-toggle a:last-child{border-right:0}.scope-toggle button.on,.scope-toggle a.on,.scope-toggle a[aria-current="page"]{background:var(--ink);color:var(--canvas)}.month-nav-arrow{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 8px;border:1px solid var(--rule-2);background:var(--canvas-2);color:var(--ink);font-family:var(--mono);font-size:var(--t-lg);line-height:1;text-decoration:none;cursor:pointer}.month-nav-arrow:hover{border-color:var(--ink)}.month-nav-arrow.disabled,.month-nav-arrow[aria-disabled="true"]{color:var(--ink-4);border-color:var(--rule);background:var(--canvas-3);cursor:not-allowed}.month-nav-label{font-size:10px;text-transform:uppercase;letter-spacing:0.1em;color:var(--ink-2);padding:0 var(--space-2);min-width:120px;text-align:center;font-variant-numeric:tabular-nums}.chart-card{background:var(--canvas-2);border:1px solid var(--rule-2);padding:var(--space-6)}.bars{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--space-3);align-items:end;height:220px;border-bottom:1px solid var(--ink);padding-bottom:0;position:relative}.bars::before,.bars::after{content:"";position:absolute;left:0;right:0;border-top:1px dashed var(--rule)}.bars::before{top:33%}.bars::after{top:66%}.bar{display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:4px;position:relative;height:100%}.bar .stem{width:100%;background:var(--ink);position:relative}.bar .stem.today{background:var(--cobalt)}.bar .stem.weekend{background:var(--ink-4)}.bar .stem.over{background:var(--ink)}.bar .stem.over::after{content:"";position:absolute;top:0;left:0;right:0;height:var(--over-h,0);background:var(--signal-amber)}.bar .stem.partial{background:var(--signal-red);opacity:0.8}.bar .num{position:absolute;top:-22px;font-family:var(--mono);font-size:var(--t-xs);font-weight:600}.bar .lbl{margin-top:var(--space-2);font-family:var(--mono);font-size:10px;color:var(--ink-3);text-transform:uppercase;letter-spacing:0.05em}.bar .lbl.today{color:var(--cobalt);font-weight:700}.y-ticks{display:flex;justify-content:space-between;margin-bottom:var(--space-2);font-family:var(--mono);font-size:10px;color:var(--ink-4);text-transform:uppercase;letter-spacing:0.08em}.month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--rule);border:1px solid var(--ink)}.month-grid .head{background:var(--canvas-2);padding:var(--space-2);font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-3);text-align:center}.month-cell{background:var(--canvas-2);padding:var(--space-3);min-height:84px;position:relative;display:flex;flex-direction:column;justify-content:space-between}.month-cell .d{font-family:var(--mono);font-size:11px;color:var(--ink-3);font-weight:500}.month-cell .h{font-family:var(--sans);font-weight:700;font-size:var(--t-md);letter-spacing:-0.02em;line-height:1}.month-cell .h .u{font-weight:400;font-size:10px;color:var(--ink-3);margin-left:2px}.month-cell.empty{background:var(--canvas-3)}.month-cell.weekend{background:var(--canvas)}.month-cell.holiday{background:var(--signal-amber-soft)}.month-cell.holiday .d{color:var(--signal-amber-2)}.month-cell.partial{background:var(--signal-red-soft)}.month-cell.today{outline:2px solid var(--cobalt);outline-offset:-2px;background:var(--cobalt-soft)}.month-cell.today .h{color:var(--cobalt-2)}.month-cell .intensity{position:absolute;bottom:0;left:0;right:0;height:4px;background:var(--ink)}.month-cell.over .intensity{background:var(--signal-amber)}.settings-page{padding:var(--space-6) var(--space-7);max-width:880px;margin:0 auto}.settings-page h1.page-title,.settings-page h2.page-title,.settings-page .page-title{font-family:var(--sans);margin:0 0 var(--space-2);font-size:var(--t-3xl);font-weight:800;letter-spacing:-0.03em}.settings-page .page-sub{font-family:var(--mono);font-size:var(--t-xs);color:var(--ink-3);text-transform:uppercase;letter-spacing:0.1em;margin:0 0 var(--space-6)}.settings-card{background:var(--canvas-2);border:1px solid var(--rule-2);margin-bottom:var(--space-5)}.settings-card-head{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-5);border-bottom:2px solid var(--ink);gap:var(--space-3)}.settings-card-head h1,.settings-card-head h2,.settings-card-head h3{margin:0;font-size:var(--t-md);font-weight:800;text-transform:uppercase;letter-spacing:0.06em}.settings-card-head .meta{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-3)}.settings-card-body{padding:var(--space-5)}.settings-card-foot{padding:var(--space-4) var(--space-5);border-top:1px solid var(--rule);background:var(--canvas);display:flex;justify-content:space-between;align-items:center;gap:var(--space-3)}.save-banner{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-5);border-bottom:1px solid var(--rule);font-family:var(--mono);font-size:var(--t-xs);text-transform:uppercase;letter-spacing:0.08em}.save-banner.ok{background:var(--signal-green-soft);color:#0d4827;border-bottom-color:var(--signal-green)}.save-banner.err{background:var(--signal-red-soft);color:var(--signal-red-2);border-bottom-color:var(--signal-red)}.save-banner .pip{width:8px;height:8px;border-radius:50%}.save-banner.ok .pip{background:var(--signal-green)}.save-banner.err .pip{background:var(--signal-red)}.field-grid{display:grid;gap:var(--space-4)}.field-grid.cols-2{grid-template-columns:1fr 1fr}.field-grid.cols-4{grid-template-columns:repeat(4,1fr)}.field{display:flex;flex-direction:column;gap:6px}.field > label{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-3);font-weight:600}.field input[type="text"],.field input[type="password"],.field input[type="url"],.field input[type="email"],.field input[type="number"],.field input[type="time"],.field select,.field textarea{background:var(--canvas);border:1px solid var(--rule-2);padding:10px 12px;font-family:var(--sans);font-size:var(--t-md);color:var(--ink);-webkit-appearance:none;appearance:none;border-radius:0;width:100%;min-width:0}.field input.mono,.field .field-monovalue{font-family:var(--mono);letter-spacing:0.02em}.field input:focus,.field select:focus,.field textarea:focus{outline:0;border-color:var(--cobalt);box-shadow:inset 0 0 0 1px var(--cobalt)}.field.error input,.field.error select,.field.error textarea{border-color:var(--signal-red);box-shadow:inset 0 0 0 1px var(--signal-red)}.field .help,.field .err{font-family:var(--mono);font-size:11px;line-height:1.45}.field .help{color:var(--ink-3)}.field .err{color:var(--signal-red-2)}.field-row{display:grid;grid-template-columns:auto 1fr;gap:var(--space-3);align-items:center}.field-row .field-monovalue{background:var(--canvas-3);padding:4px 10px;font-family:var(--mono);font-size:var(--t-sm)}.weekday-pills{display:flex;gap:6px;flex-wrap:wrap}.weekday-pills label{flex:0 0 auto;position:relative}.weekday-pills input{position:absolute;opacity:0;pointer-events:none}.weekday-pills .pill{display:inline-block;padding:8px 14px;border:1px solid var(--rule-2);background:var(--canvas);font-family:var(--mono);font-size:var(--t-xs);text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-3);cursor:pointer;user-select:none}.weekday-pills input:checked + .pill{background:var(--ink);color:var(--canvas);border-color:var(--ink)}.weekday-pills input:disabled + .pill{opacity:0.35;cursor:not-allowed}.weekday-pills input:focus-visible + .pill{outline:2px solid var(--ink);outline-offset:2px}.schedule-toggle{display:inline-block;margin-bottom:var(--space-4);position:relative}.schedule-toggle label{position:relative;cursor:pointer;display:inline-flex;align-items:center;gap:10px}.schedule-toggle input{position:absolute;opacity:0;pointer-events:none}.schedule-toggle .pill{display:inline-flex;align-items:center;gap:10px;padding:10px 18px;border:1px solid var(--rule-2);background:var(--canvas);font-family:var(--sans);font-size:var(--t-sm);font-weight:600;color:var(--ink-3);user-select:none;transition:none}.schedule-toggle .pill::before{content:"\25CB";font-family:var(--mono);font-size:14px;line-height:0}.schedule-toggle input:checked + .pill{background:var(--ink);color:var(--canvas);border-color:var(--ink)}.schedule-toggle input:checked + .pill::before{content:"\25CF"}.schedule-toggle input:focus-visible + .pill{outline:2px solid var(--ink);outline-offset:2px}.schedule-toggle .pill .on-label{display:none}.schedule-toggle .pill .off-label{display:inline}.schedule-toggle input:checked + .pill .on-label{display:inline}.schedule-toggle input:checked + .pill .off-label{display:none}.lang-toggle{display:inline-flex;border:1px solid var(--rule-2);background:var(--canvas)}.lang-toggle label{padding:8px 16px;font-family:var(--mono);font-size:var(--t-xs);text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-3);cursor:pointer;border-right:1px solid var(--rule);user-select:none}.lang-toggle label:last-child{border-right:0}.lang-toggle input{position:absolute;opacity:0;pointer-events:none}.lang-toggle input:checked + label,.lang-toggle label.on{background:var(--cobalt);color:white;border-color:var(--cobalt)}.advanced-disclosure{margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--rule)}.advanced-disclosure summary{list-style:none;cursor:pointer;font-family:var(--mono);font-size:var(--t-xs);text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-3);padding:4px 0;user-select:none}.advanced-disclosure summary::-webkit-details-marker{display:none}.advanced-disclosure summary::before{content:"+ ";color:var(--ink-3);font-weight:600}.advanced-disclosure[open] summary::before{content:"− "}.advanced-disclosure[open] summary{color:var(--ink)}.advanced-disclosure-body{padding:var(--space-4) 0 0}.passkey-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--rule)}.passkey-row:last-child{border-bottom:0}.passkey-row .icon{width:28px;height:28px;border:1px solid var(--rule-2);background:var(--canvas);display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:10px;color:var(--ink-3);font-weight:700;letter-spacing:0.05em}.passkey-row .name{font-family:var(--sans);font-size:var(--t-md);font-weight:600;color:var(--ink)}.passkey-row .meta{font-family:var(--mono);font-size:10px;color:var(--ink-3);text-transform:uppercase;letter-spacing:0.08em;margin-top:2px}.passkey-row .actions{display:flex;gap:4px}.passkey-row .actions button,.passkey-row .actions .btn{background:transparent;border:1px solid var(--rule);padding:6px 12px;font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-2);cursor:pointer;border-radius:0}.passkey-row .actions button:hover,.passkey-row .actions .btn:hover{border-color:var(--ink)}.passkey-row .actions button.danger,.passkey-row .actions .btn.danger{color:var(--signal-red-2)}.passkey-row .actions button.danger:hover,.passkey-row .actions .btn.danger:hover{border-color:var(--signal-red)}.passkey-ceremony{padding:var(--space-6) var(--space-5);border:2px dashed var(--cobalt);background:var(--cobalt-soft);text-align:center;margin:var(--space-5)}.passkey-ceremony .spinner{width:32px;height:32px;border:3px solid var(--cobalt);border-top-color:transparent;border-radius:50%;margin:0 auto var(--space-3);animation:spin 1.2s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.passkey-ceremony h3,.passkey-ceremony h4{margin:0 0 var(--space-2);font-family:var(--sans);font-size:var(--t-lg);font-weight:700;color:var(--cobalt-2)}.passkey-ceremony p{margin:0;font-size:var(--t-sm);color:var(--ink-2)}.settings-save-btn{background:var(--ink);color:var(--canvas);border:0;padding:10px 20px;font-family:var(--sans);font-size:var(--t-sm);font-weight:600;cursor:pointer;border-radius:0}.settings-save-btn:hover{background:var(--ink-2)}.settings-save-btn.disabled-look{background:var(--canvas);color:var(--ink-3);border:1px solid var(--rule-2);cursor:not-allowed}.settings-save-btn.disabled-look:hover{background:var(--canvas);color:var(--ink-3)}.settings-register-btn{background:var(--ink);color:var(--canvas);border:0;padding:10px 20px;font-family:var(--sans);font-size:var(--t-sm);font-weight:600;cursor:pointer;border-radius:0}.settings-register-btn.cobalt{background:var(--cobalt);color:white}.settings-register-btn.cobalt:hover{background:var(--cobalt-2)}.passkey-row .name-meta{flex:1 1 auto;min-width:0}.passkey-row .rename-form{flex:1 1 auto;min-width:0;display:flex;gap:var(--space-2);align-items:center}.passkey-row .rename-form .actions{margin-left:auto}.passkey-row .remove-form{flex:0 0 auto;display:flex;gap:var(--space-2);align-items:center}.passkey-row .actions{flex:0 0 auto}.passkey-row .rename-input{flex:1 1 auto;max-width:380px;padding:6px 10px;font-family:var(--sans);font-size:var(--t-md);font-weight:600;color:var(--ink);background:var(--canvas-2);border:1px solid var(--cobalt);border-radius:0;-webkit-appearance:none;appearance:none}.passkey-row .rename-input:focus,.passkey-row .rename-input:focus-visible{outline:0;border-color:var(--cobalt);box-shadow:inset 0 0 0 1px var(--cobalt)}.passkey-row .actions button.save-rename{background:var(--cobalt);color:white;border-color:var(--cobalt)}.passkey-row .actions button.confirm-remove{background:var(--signal-red);color:white;border-color:var(--signal-red)}.passkey-row .row-warning{flex-basis:100%;margin:var(--space-3) 0 0 calc(28px + var(--space-4));font-size:var(--t-sm);line-height:1.5;color:var(--signal-red-2)}.admin-page{padding:0}.admin-status{padding:var(--space-5) var(--space-6);background:var(--canvas-2);border-bottom:1px solid var(--rule-2);display:grid;grid-template-columns:1fr auto;gap:var(--space-5);align-items:center}.admin-status.partitioned{background:var(--signal-red-soft);border-bottom-color:var(--signal-red)}.admin-status.dry{background:repeating-linear-gradient( 135deg,var(--signal-amber-soft),var(--signal-amber-soft) 10px,#ECDFA8 10px,#ECDFA8 20px );border-bottom-color:var(--signal-amber)}.admin-status.live{background:var(--cobalt-soft);border-bottom-color:var(--cobalt)}.admin-status .heading{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.1em;color:var(--ink-3);margin-bottom:6px}.admin-status h2{margin:0;font-size:var(--t-xl);font-weight:800;letter-spacing:-0.025em}.admin-status.live h2{color:var(--cobalt-2)}.admin-status.partitioned h2{color:var(--signal-red-2)}.admin-status .summary{margin-top:6px;font-size:var(--t-sm);color:var(--ink-2)}.admin-status.partitioned .summary{color:var(--signal-red-2)}.mode-badge{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border:1px solid var(--rule-2);background:var(--canvas);font-family:var(--mono);font-size:var(--t-xs);text-transform:uppercase;letter-spacing:0.08em;color:var(--ink)}.mode-badge .pip{width:8px;height:8px;border-radius:50%}.mode-badge.live{background:var(--cobalt);color:white;border-color:var(--cobalt)}.mode-badge.live .pip{background:white}.mode-badge.dry{background:var(--signal-amber-soft);color:#5d4109;border-color:var(--signal-amber)}.mode-badge.dry .pip{background:var(--signal-amber-2)}.admin-tabs{display:flex;border-bottom:1px solid var(--rule);background:var(--canvas);overflow-x:auto}.admin-tabs a{padding:var(--space-3) var(--space-5);font-family:var(--sans);font-size:var(--t-sm);font-weight:600;color:var(--ink-3);text-decoration:none;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}.admin-tabs a.on,.admin-tabs a[aria-current="page"]{color:var(--ink);border-bottom-color:var(--ink)}.admin-tabs a .count{font-family:var(--mono);font-size:10px;color:var(--ink-4);margin-left:6px;letter-spacing:0.05em}.admin-tab-body{padding:var(--space-6)}.admin-section{margin-bottom:var(--space-7)}.admin-section-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:var(--space-3);padding-bottom:var(--space-2);border-bottom:1px solid var(--rule);gap:var(--space-3)}.admin-section-head h3{margin:0;font-size:var(--t-md);font-weight:800;text-transform:uppercase;letter-spacing:0.05em}.admin-section-head .meta{font-family:var(--mono);font-size:10px;color:var(--ink-3);text-transform:uppercase;letter-spacing:0.08em}.first-run-card{background:var(--cobalt-soft);border:1px solid var(--cobalt);padding:var(--space-5) var(--space-6);margin-bottom:var(--space-6);display:grid;grid-template-columns:auto 1fr auto;gap:var(--space-5);align-items:center}.first-run-card .step{font-family:var(--sans);font-size:56px;font-weight:800;letter-spacing:-0.04em;color:var(--cobalt);line-height:0.9}.first-run-card h4{margin:0 0 6px;font-size:var(--t-lg);font-weight:800;letter-spacing:-0.02em;color:var(--cobalt-2)}.first-run-card p{margin:0;font-size:var(--t-sm);color:var(--ink-2);line-height:1.5}.first-run-card button,.first-run-card .btn{background:var(--cobalt);color:white;border:0;padding:12px 20px;font-family:var(--sans);font-size:var(--t-sm);font-weight:600;cursor:pointer;border-radius:0;text-decoration:none;display:inline-block}.nodes-table{width:100%;background:var(--canvas-2);border:1px solid var(--rule-2)}.node-row{display:grid;grid-template-columns:4px auto 1fr auto auto auto;gap:var(--space-3);align-items:center;padding:var(--space-3) var(--space-4) var(--space-3) 0;border-bottom:1px solid var(--rule);background:var(--canvas-2);position:relative}.node-row:last-child{border-bottom:0}.node-row .selfbar{width:4px;align-self:stretch;background:transparent}.node-row.self .selfbar{background:var(--cobalt)}.node-row.degraded .selfbar{background:var(--signal-amber)}.node-row.down .selfbar{background:var(--signal-red)}.node-row.pending .selfbar{background:var(--ink-3)}.node-row .nodeid{font-family:var(--mono);font-size:var(--t-xs);color:var(--ink-3);width:80px}.node-row .label-block{display:flex;flex-direction:column;gap:2px;min-width:0}.node-row .label-block .name{font-family:var(--sans);font-size:var(--t-md);font-weight:700;letter-spacing:-0.015em;display:flex;align-items:center;gap:var(--space-2)}.node-row .label-block .name .you-tag{font-family:var(--mono);font-size:9px;text-transform:uppercase;letter-spacing:0.1em;color:var(--cobalt);background:var(--cobalt-soft);padding:2px 6px;font-weight:600}.node-row .label-block .meta{font-family:var(--mono);font-size:11px;color:var(--ink-3)}.role-badge{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;padding:3px 8px;border:1px solid var(--rule-2);color:var(--ink-2);white-space:nowrap}.role-badge.leader{background:var(--ink);color:var(--canvas);border-color:var(--ink)}.health-pill{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;display:inline-flex;align-items:center;gap:6px;padding:3px 8px;background:var(--canvas);border:1px solid var(--rule-2);color:var(--ink-2);white-space:nowrap}.health-pill .pip{width:6px;height:6px;border-radius:50%;background:var(--signal-green)}.node-row.degraded .health-pill .pip{background:var(--signal-amber)}.node-row.down .health-pill .pip{background:var(--signal-red)}.node-row.pending .health-pill .pip{background:var(--ink-3)}.auth-probe-pill{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;display:inline-flex;align-items:center;gap:6px;padding:3px 8px;background:var(--canvas);border:1px solid var(--rule-2);color:var(--ink-2);white-space:nowrap}.auth-probe-pill .pip{width:6px;height:6px;border-radius:50%;background:var(--ink-3)}.auth-probe-pill.healthy .pip{background:var(--signal-green)}.auth-probe-pill.unhealthy .pip{background:var(--signal-red)}.auth-probe-pill.unknown .pip{background:var(--ink-3)}.node-row .row-actions{display:flex;gap:4px;flex-wrap:wrap}.node-row .row-actions button,.node-row .row-actions .btn{background:transparent;border:1px solid var(--rule);padding:6px 10px;font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-2);cursor:pointer;white-space:nowrap;border-radius:0;text-decoration:none;display:inline-block}.node-row .row-actions button:hover,.node-row .row-actions .btn:hover{border-color:var(--ink)}.node-row .row-actions button.primary,.node-row .row-actions .btn.primary{background:var(--cobalt);color:white;border-color:var(--cobalt)}.node-row .row-actions button.danger,.node-row .row-actions .btn.danger{color:var(--signal-red-2)}.node-row .row-actions button.danger:hover,.node-row .row-actions .btn.danger:hover{border-color:var(--signal-red)}.node-row .row-actions button:disabled,.node-row .row-actions button[disabled]{opacity:0.4;cursor:not-allowed}.node-edit-drawer{display:grid;grid-template-columns:4px 1fr;background:var(--canvas-2);border:1px solid var(--rule-2);border-top:0;margin-bottom:var(--space-3)}.node-edit-drawer::before{content:"";background:var(--cobalt)}.node-edit-drawer .head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-5);border-bottom:1px solid var(--rule)}.node-edit-drawer .head h4{margin:0;font-family:var(--sans);font-size:var(--t-md);font-weight:800;text-transform:uppercase;letter-spacing:0.06em}.node-edit-drawer .head h4 .target{margin-left:var(--space-2);font-family:var(--mono);font-size:var(--t-sm);font-weight:500;text-transform:none;letter-spacing:0.02em;color:var(--ink-2)}.node-edit-drawer .head .meta{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-3)}.node-edit-drawer .body{padding:var(--space-5)}.node-edit-drawer .foot{padding:var(--space-3) var(--space-5);border-top:1px solid var(--rule);background:var(--canvas);display:flex;justify-content:flex-end;align-items:center;gap:var(--space-2)}.node-edit-drawer .cancel-btn,.punch-on-behalf-row .cancel-btn{background:transparent;border:1px solid var(--rule-2);padding:8px 14px;font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-2);cursor:pointer;border-radius:0}.node-edit-drawer .cancel-btn:hover,.punch-on-behalf-row .cancel-btn:hover{border-color:var(--ink)}.confirm-panel{background:var(--cobalt);color:white;padding:var(--space-5) var(--space-6);margin:var(--space-5) 0;border:1px solid var(--cobalt-2);display:grid;grid-template-columns:1fr auto;gap:var(--space-4);align-items:center}.confirm-panel.danger{background:var(--signal-red);border-color:var(--signal-red-2)}.confirm-panel h4{margin:0 0 6px;font-size:var(--t-lg);font-weight:800;letter-spacing:-0.02em}.confirm-panel p{margin:0;font-size:var(--t-sm);line-height:1.5;opacity:0.95}.confirm-panel .actions{display:flex;gap:var(--space-2)}.confirm-panel button,.confirm-panel .btn{background:white;border:1px solid white;padding:10px 16px;font-family:var(--sans);font-size:var(--t-sm);font-weight:600;color:var(--cobalt-2);cursor:pointer;border-radius:0;text-decoration:none;display:inline-block}.confirm-panel.danger button,.confirm-panel.danger .btn{color:var(--signal-red-2)}.confirm-panel button.cancel,.confirm-panel .btn.cancel{background:transparent;color:white}.users-table{width:100%;background:var(--canvas-2);border:1px solid var(--rule-2);border-collapse:collapse}.users-table th,.users-table td{padding:var(--space-3) var(--space-4);text-align:left;border-bottom:1px solid var(--rule);font-size:var(--t-sm);vertical-align:middle}.users-table th{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-3);font-weight:600;background:var(--canvas);border-bottom:2px solid var(--ink)}.users-table td.user-name{font-weight:600}.users-table td .sub{display:block;font-family:var(--mono);font-size:10px;color:var(--ink-3);margin-top:2px}.users-table td.num{font-family:var(--mono)}.users-table tr.expanded{background:var(--cobalt-soft)}.users-table tr.expanded td{border-bottom-color:var(--cobalt)}.role-tag{display:inline-block;font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;padding:2px 8px;border:1px solid var(--rule-2);color:var(--ink-2)}.role-tag.admin{background:var(--ink);color:var(--canvas);border-color:var(--ink)}.role-tag.pinned::after{content:" · pin";color:var(--cobalt);font-weight:600}.role-tag.admin.pinned::after{color:white}.creds-tag{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em}.creds-tag.set{color:var(--signal-green)}.creds-tag.unset{color:var(--ink-4)}.users-table .user-name .you-tag{font-family:var(--mono);font-size:9px;text-transform:uppercase;letter-spacing:0.1em;color:var(--cobalt);background:var(--cobalt-soft);padding:2px 6px;font-weight:600;margin-left:var(--space-2)}.users-table .row-actions{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.users-table .row-actions button,.users-table .row-actions .btn{background:transparent;border:1px solid var(--rule);padding:6px 10px;font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-2);cursor:pointer;white-space:nowrap;border-radius:0}.users-table .row-actions button:hover,.users-table .row-actions .btn:hover{border-color:var(--ink)}.users-table .row-actions button.primary,.users-table .row-actions .btn.primary{background:var(--cobalt);color:white;border-color:var(--cobalt)}.users-table .row-actions button.primary:hover,.users-table .row-actions .btn.primary:hover{border-color:var(--cobalt-2);background:var(--cobalt-2)}.users-table .row-actions button:disabled,.users-table .row-actions button[disabled]{opacity:0.4;cursor:not-allowed}.users-table .row-actions .row-action-inert{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-3);padding:6px 10px;border:1px solid transparent;opacity:0.6;cursor:not-allowed;user-select:none;white-space:nowrap}.users-table tr.punch-drawer-row > td{border-bottom:0;padding:0}.tailscale-row{display:grid;grid-template-columns:auto 1fr auto auto;gap:var(--space-4);align-items:center;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--rule);background:var(--canvas-2)}.tailscale-row:last-child{border-bottom:0}.tailscale-row .ts-pip{width:8px;height:8px;border-radius:50%;background:var(--signal-green)}.tailscale-row .ts-pip.off{background:var(--ink-4)}.tailscale-row .label-block .name{font-weight:600;font-size:var(--t-sm)}.tailscale-row .label-block .meta{font-family:var(--mono);font-size:10px;color:var(--ink-3);margin-top:2px}.tailscale-row .ts-status{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-3)}.tailscale-row .ts-status.member{color:var(--cobalt)}.tailscale-row .ts-status.pending{color:var(--signal-amber-2)}.tailscale-row.pending{background:var(--signal-amber-soft)}.tailscale-row.offline .label-block .name,.tailscale-row.offline .label-block .meta{opacity:0.55}.tailscale-row .label-block .name .you-tag{font-family:var(--mono);font-size:9px;text-transform:uppercase;letter-spacing:0.1em;color:var(--cobalt);background:var(--cobalt-soft);padding:2px 6px;font-weight:600;margin-left:var(--space-2)}.tailscale-row .row-actions{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.tailscale-row .row-actions button,.tailscale-row .row-actions .btn{background:transparent;border:1px solid var(--rule);padding:6px 10px;font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-2);cursor:pointer;white-space:nowrap;border-radius:0}.tailscale-row .row-actions button:hover,.tailscale-row .row-actions .btn:hover{border-color:var(--ink)}.tailscale-row .row-actions button.primary,.tailscale-row .row-actions .btn.primary{background:var(--cobalt);color:white;border-color:var(--cobalt)}.tailscale-row .row-actions button.primary:hover,.tailscale-row .row-actions .btn.primary:hover{border-color:var(--cobalt-2);background:var(--cobalt-2)}.tailscale-row .row-actions button:disabled,.tailscale-row .row-actions button[disabled]{opacity:0.4;cursor:not-allowed}.tailscale-row .row-actions .row-action-inert{opacity:0.4;cursor:not-allowed;user-select:none}.tailscale-row .row-actions .row-actions-placeholder{font-family:var(--mono);font-size:10px;color:var(--ink-4)}.admin-section .admin-section-hint{margin:0 0 var(--space-3);font-size:var(--t-sm);color:var(--ink-3);line-height:1.5}.admin-section .admin-section-empty{margin:0;padding:var(--space-4);font-size:var(--t-sm);color:var(--ink-3);background:var(--canvas-2);border:1px solid var(--rule-2)}.punch-on-behalf-row{background:var(--cobalt-soft);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--cobalt);display:flex;flex-direction:column;gap:var(--space-4)}.punch-on-behalf-row .head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-3)}.punch-on-behalf-row .head h4{margin:0;font-size:var(--t-md);font-weight:700;letter-spacing:-0.015em}.punch-on-behalf-row .head .audit{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.08em;color:var(--cobalt-2)}.punch-on-behalf-row .picker{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-2)}.punch-on-behalf-row .picker button{background:var(--canvas-2);border:1px solid var(--rule);padding:var(--space-3);font-family:var(--sans);font-size:var(--t-sm);text-align:left;cursor:pointer;border-radius:0}.punch-on-behalf-row .picker button:hover{border-color:var(--ink)}.punch-on-behalf-row .picker button .num{display:block;font-family:var(--mono);font-size:10px;color:var(--ink-3);margin-bottom:2px}.punch-on-behalf-row .picker button.disabled,.punch-on-behalf-row .picker button:disabled{opacity:0.4;cursor:not-allowed;background:var(--canvas-3)}@media (max-width:720px){.topbar{padding:var(--space-3) var(--space-4);grid-template-columns:1fr auto;gap:var(--space-3)}.topbar .brand{font-size:var(--t-md);grid-column:1;grid-row:1}.topbar .user{grid-column:2;grid-row:1;gap:var(--space-2)}.topbar .user span:first-child{display:none}.topbar .user .avatar{width:24px;height:24px;font-size:10px}.topbar .user .logout{padding:4px 8px;font-size:9px;letter-spacing:0.06em}.topbar nav{grid-column:1 / -1;grid-row:2;display:flex;gap:var(--space-5);overflow-x:auto;margin:0 calc(-1 * var(--space-4));padding:0 var(--space-4);border-top:1px solid var(--rule);scrollbar-width:none}.topbar nav::-webkit-scrollbar{display:none}.topbar nav a{padding:var(--space-3) 0 var(--space-1);white-space:nowrap}.topbar nav[aria-hidden="true"]{display:none}.banner{padding:var(--space-4)}.banner-grid{grid-template-columns:1fr;gap:var(--space-3)}.banner-headline{font-size:48px;letter-spacing:-0.04em}.banner-headline.italic-soft{font-size:32px}.banner-meta{flex-direction:column;gap:var(--space-2)}.banner-tally{text-align:left}.banner-tally .num{font-size:var(--t-3xl)}.body-grid{grid-template-columns:1fr}.body-grid .col-side{border-left:none;border-top:1px solid var(--rule)}.body-grid .col-main,.body-grid .col-side{padding:var(--space-4)}table.schedule td,table.schedule th{padding:var(--space-3) var(--space-2);font-size:var(--t-sm)}table.history th:nth-child(3),table.history td:nth-child(3){display:none}table.history th{width:auto !important}table.history td{padding:var(--space-3) var(--space-2)}table.history th{padding:var(--space-3) var(--space-2)}table.history .date .d{font-size:var(--t-lg)}table.history .date .wd{font-size:9px;letter-spacing:0.06em}table.history .hours{font-size:var(--t-lg)}table.history .hours .delta{font-size:10px}.disclosure{font-size:9px;gap:4px}.disclosure .chev{font-size:var(--t-sm)}.day-punches-list .day-punch{grid-template-columns:56px 1fr auto;grid-template-areas:"time kind receipt" "time source receipt";column-gap:var(--space-3);row-gap:2px}.day-punches-list .day-punch .time{grid-area:time;align-self:center}.day-punches-list .day-punch .kind{grid-area:kind}.day-punches-list .day-punch .source{grid-area:source}.day-punches-list .day-punch .receipt{grid-area:receipt;align-self:center;min-width:0}#history-body > div:nth-child(2){align-items:flex-start}#history-body > div:nth-child(2) > div:nth-child(2){gap:var(--space-3)}.history-pill{padding:4px 8px !important}.month-grid .head{padding:6px 4px;font-size:9px}.month-cell{padding:6px 4px;min-height:56px}.month-cell .d{font-size:var(--t-md)}.month-cell .h{font-size:11px}.month-nav-label{min-width:0;padding:0 var(--space-2)}.settings-page{padding:var(--space-4)}.field-grid.cols-2,.field-grid.cols-4{grid-template-columns:1fr}.admin-status{grid-template-columns:1fr;padding:var(--space-4)}.admin-tab-body{padding:var(--space-4)}.node-row{grid-template-columns:4px 1fr auto;grid-auto-rows:auto;gap:var(--space-2);padding:var(--space-3) var(--space-3) var(--space-3) 0}.node-row .nodeid{display:none}.node-row .health-pill,.node-row .role-badge{grid-column:2 / span 2;justify-self:start}.node-row .row-actions{grid-column:2 / span 2;justify-self:start;flex-wrap:wrap}.node-edit-drawer .head{flex-direction:column;align-items:flex-start;gap:var(--space-1);padding:var(--space-3) var(--space-4)}.node-edit-drawer .head h4 .target{display:block;margin-left:0;margin-top:2px}.node-edit-drawer .body{padding:var(--space-4)}.node-edit-drawer .foot{padding:var(--space-3) var(--space-4)}.first-run-card{grid-template-columns:1fr;padding:var(--space-4)}.confirm-panel{grid-template-columns:1fr;padding:var(--space-4)}.punch-on-behalf-row .picker{grid-template-columns:1fr 1fr}.punch-stick{display:block;position:sticky;bottom:0;background:var(--canvas-2);border-top:1px solid var(--rule);padding:var(--space-3) var(--space-4);box-shadow:0 -8px 24px rgba(0,0,0,0.04)}.punch-stick .action.primary{width:100%;padding:var(--space-4) var(--space-5);justify-content:space-between}}.punch-stick{display:none}.m-banner-tally-line{display:grid;grid-template-columns:auto 1fr;gap:var(--space-4);align-items:baseline;margin-top:var(--space-3)}.m-banner-tally-line .num{font-family:var(--sans);font-size:44px;font-weight:800;letter-spacing:-0.035em;line-height:1}.m-banner-tally-line .ctx{font-family:var(--mono);font-size:11px;line-height:1.5;color:rgba(255,255,255,0.85)}.m-agenda{display:flex;flex-direction:column;border-top:1px solid var(--rule)}.m-agenda-row{display:grid;grid-template-columns:32px 1fr auto;gap:var(--space-3);align-items:center;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--rule)}.m-agenda-row:last-child{border-bottom:0}.m-agenda-row .num{font-family:var(--mono);font-size:var(--t-xs);color:var(--ink-3)}.m-agenda-row .kind{font-family:var(--sans);font-size:var(--t-md);font-weight:600;letter-spacing:-0.015em}.m-agenda-row .kind .sub{display:block;font-family:var(--mono);font-size:10px;color:var(--ink-3);text-transform:uppercase;letter-spacing:0.05em;font-weight:400;margin-top:2px}.m-agenda-row .right{text-align:right;font-family:var(--sans);font-size:var(--t-md);font-weight:700;letter-spacing:-0.015em}.m-agenda-row .right .delta{display:block;font-family:var(--mono);font-size:10px;color:var(--ink-3);margin-top:2px;font-weight:500}.m-agenda-row.next{background:var(--cobalt-soft);border-left:3px solid var(--cobalt);padding-left:calc(var(--space-4) - 3px)}.m-agenda-row.next .kind .sub{color:var(--cobalt-2);font-weight:600}.m-agenda-row.future{color:var(--ink-3)}.m-agenda-row.future .right{color:var(--ink-3)}.m-agenda-row.done .right .delta.neg{color:var(--signal-amber-2)}.m-history{padding:var(--space-4)}.m-history-day{display:grid;grid-template-columns:auto 1fr auto;gap:var(--space-3);padding:var(--space-4) 0;border-bottom:1px solid var(--rule);align-items:center}.m-history-day:last-child{border-bottom:0}.m-history-day .date{font-family:var(--mono);text-align:center;border:1px solid var(--rule);padding:var(--space-2);width:56px}.m-history-day .date .d{display:block;font-family:var(--sans);font-size:var(--t-xl);font-weight:700;line-height:1;letter-spacing:-0.025em}.m-history-day .date .wd{font-size:9px;text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-3);margin-top:2px}.m-history-day .lbl{font-weight:600;font-size:var(--t-sm)}.m-history-day .lbl .note{display:block;font-weight:400;font-size:var(--t-xs);color:var(--ink-3);margin-top:2px}.m-history-day .h{font-family:var(--sans);font-weight:700;font-size:var(--t-md);letter-spacing:-0.02em;text-align:right}.m-history-day .h .delta{display:block;font-family:var(--mono);font-size:10px;font-weight:500;color:var(--ink-3);margin-top:2px}.m-history-day.holiday .date{border-color:var(--signal-amber);background:var(--signal-amber-soft)}.m-history-day.partial .lbl .note{color:var(--signal-red-2)}.m-history-day.over .h .delta{color:var(--signal-amber-2)}.login-card{width:100%;max-width:420px}.login-card .btn{display:block;text-align:center;width:100%;padding:10px 16px;border:1px solid var(--ink);background:transparent;color:var(--ink);font-family:var(--sans);font-size:var(--t-sm);font-weight:600;border-radius:0;text-decoration:none;cursor:pointer}.login-card .btn:hover{background:var(--ink);color:var(--canvas)}.errorpage-section{padding:var(--space-8) var(--space-6);text-align:center;max-width:640px;margin:0 auto}.errorpage-eyebrow{font-family:var(--mono);font-size:11px;color:var(--ink-3);text-transform:uppercase;letter-spacing:0.1em}.errorpage-title{font-family:var(--sans);font-size:var(--t-3xl);font-weight:800;letter-spacing:-0.03em;margin:var(--space-4) 0 var(--space-3)}.errorpage-message{font-size:var(--t-md);color:var(--ink-2);line-height:1.5;margin:0 0 var(--space-5)}.errorpage-home{display:inline-block;padding:12px 20px;background:var(--cobalt);color:white;font-family:var(--sans);font-size:var(--t-sm);font-weight:600;border-radius:0}.errorpage-home:hover{background:var(--cobalt-2)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only:focus,.sr-only.focus\:not-sr-only:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto;white-space:normal;padding:var(--space-3) var(--space-4);background:var(--ink);color:var(--canvas);font-family:var(--mono);font-size:var(--t-xs);text-transform:uppercase;letter-spacing:0.08em}[hidden]{display:none !important}[x-cloak]{display:none !important}
