.week{max-width:1320px;margin:0 auto;padding:var(--s-4);display:flex;flex-direction:column;gap:var(--s-3)}.week-head{display:flex;gap:var(--s-2);align-items:center;flex-wrap:wrap}.week-head label{color:var(--ink-2);font-size:var(--t-sm);font-weight:550}.week-head select{min-width:150px}.week-head .spacer{flex:1}.day-tabs{display:flex;gap:2px;padding:3px;background:var(--paper-sunk);border:1px solid var(--rule);border-radius:var(--r-md);overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.day-tabs::-webkit-scrollbar{display:none}.day-tab{flex:1 0 auto;min-width:46px;min-height:var(--tap-fine);padding:0 var(--s-3);font-size:var(--t-sm);font-weight:560;letter-spacing:.02em;color:var(--ink-2);background:none;border:0;border-radius:var(--r-sm);cursor:pointer;transition:background-color .12s ease,color .12s ease}.day-tab:hover{color:var(--ink);background:#fff9}.day-tab[aria-current=page]{background:var(--paper);color:var(--ink);font-weight:640;box-shadow:var(--e-1),inset 0 -2px 0 var(--accent)}.day-title{display:flex;align-items:baseline;gap:var(--s-2);flex-wrap:wrap}.day-title .date{color:var(--ink-3);font-weight:500;font-size:var(--t-sm)}.summary{display:flex;flex-wrap:wrap;gap:var(--s-5);padding:var(--s-3) var(--s-4);background:var(--paper);border:1px solid var(--rule);border-radius:var(--r-lg);box-shadow:var(--e-1)}.stat{display:flex;flex-direction:column;gap:1px}.stat .v{font-size:var(--t-lg);font-weight:640;letter-spacing:-.02em}.stat .k{font-size:var(--t-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);font-weight:600}.stat.q .v{color:var(--ink-2)}.stat.progress{margin-inline-start:auto;min-width:168px}.stat.progress .of{color:var(--ink-3);font-weight:500;font-size:var(--t-base)}.meter{display:block;block-size:5px;margin-block-start:var(--s-2);border-radius:var(--r-full);background:var(--paper-sunk);overflow:hidden}.meter .fill{display:block;block-size:100%;background:var(--accent);border-radius:inherit;transition:inline-size .18s ease}.week-head .filter{min-width:190px;flex:0 1 240px}.grid{list-style:none;margin:0;padding:0;background:var(--paper);border:1px solid var(--rule);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--e-1)}.delta-row{display:grid;grid-template-columns:44px minmax(0,30%) minmax(90px,1fr) 90px 118px 118px 100px;grid-template-areas:"seq name span hours in out actions";align-items:center;gap:var(--s-2);min-height:var(--row-h);padding:var(--s-1) var(--s-3);border-top:1px solid var(--rule);transition:background-color .1s ease}.cell-seq{grid-area:seq}.cell-name{grid-area:name}.cell-span{grid-area:span}.cell-hours{grid-area:hours}.cell-in{grid-area:in}.cell-out{grid-area:out}.cell-actions{grid-area:actions}.track{position:relative;display:block;block-size:6px;border-radius:var(--r-full);background:var(--paper-sunk);overflow:hidden}.seg{position:absolute;inset-block:0;border-radius:inherit;background:var(--accent);opacity:.55}.seg.spill{opacity:.3}.delta-row:first-child{border-top:0}.delta-row:hover{background:var(--n-25)}.cell-seq{text-align:right;padding-right:var(--s-1);color:var(--ink-3);font-size:var(--t-sm);font-weight:550}.cell-name{min-width:0;overflow-wrap:break-word}.cell-name .given{color:var(--ink-2)}.cell-hours{text-align:right;font-size:var(--t-sm);color:var(--ink-3);font-variant-numeric:tabular-nums}.cell-punch{display:flex;align-items:center;justify-content:flex-end;gap:var(--s-2)}.cell-punch .time{font-size:var(--t-base)}.cell-punch .time sup{font-size:9px;color:var(--ink-3);margin-left:1px}.tick{display:grid;place-items:center;min-height:var(--tap-fine);min-width:34px;cursor:pointer;border-radius:var(--r-sm);flex:none}.tick:hover{background:var(--accent-tint)}.cell-punch input[type=checkbox]{width:22px;height:22px;min-height:22px;flex:none;accent-color:var(--accent);cursor:pointer;margin:0}.cell-punch input[disabled]{cursor:default}.chip{display:inline-flex;align-items:center;padding:1px var(--s-2);font-size:var(--t-xs);font-weight:560;border-radius:var(--r-full);border:1px solid var(--rule-strong);color:var(--ink-2);background:var(--paper-2);white-space:nowrap}.chip.leave{border-color:#cbb98a;background:var(--warn-tint);color:#6a5316}.chip.manual{border-style:dashed;margin-left:var(--s-2)}.blockhead{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-3) var(--s-1);font-size:var(--t-xs);letter-spacing:.08em;text-transform:uppercase;font-weight:650;color:var(--ink-3);background:var(--paper);border-top:1px solid var(--rule)}.blockhead:first-child{border-top:0}.blockhead:after{content:"";flex:1;height:1px;background:var(--rule)}.blockhead .n{font-variant-numeric:tabular-nums;color:var(--ink-3)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#1a161357;display:grid;place-items:center;padding:var(--s-4)}.modal{width:min(430px,100%);background:var(--paper);border-radius:var(--r-lg);padding:var(--s-5);display:flex;flex-direction:column;gap:var(--s-2);box-shadow:var(--e-3)}.modal h3{font-size:var(--t-md)}.modal label{font-size:var(--t-sm);color:var(--ink-2);font-weight:550;margin-top:var(--s-1)}.modal-actions{display:flex;justify-content:flex-end;gap:var(--s-2);margin-top:var(--s-3)}@media(max-width:1100px){.delta-row{grid-template-columns:44px minmax(0,1fr) 118px 118px 100px;grid-template-areas:"seq name in out actions"}.cell-hours,.cell-span{display:none}}@media(max-width:620px){.delta-row{grid-template-columns:30px minmax(0,1fr) auto;grid-template-areas:"seq name    actions" "seq punches punches"}.cell-span{display:none;row-gap:var(--s-1);gap:var(--s-2);padding:var(--s-2) var(--s-2);align-items:start}.cell-seq{padding-top:2px}.cell-name{align-self:center}.cell-in{grid-area:punches;justify-self:start}.cell-out{grid-area:punches;justify-self:end}.cell-actions{align-self:start}.summary{gap:var(--s-4)}.note-line{grid-column:1 / -1}}.cell-actions{display:flex;justify-content:flex-end;gap:2px;align-items:center}.cell-actions .link{padding:var(--s-1) var(--s-2);font-size:var(--t-sm);min-height:var(--tap-fine)}.cell-actions .has-note{color:var(--warn);font-weight:650;text-decoration:none}.note-list{list-style:none;margin:var(--s-2) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--s-3);max-height:220px;overflow-y:auto}.note-list li{border-inline-start:3px solid var(--rule-strong);padding-inline-start:var(--s-3)}.note-head{display:flex;align-items:center;gap:var(--s-2)}.note-head .spacer{flex:1}.note-head .link{padding:var(--s-1) var(--s-2);min-height:30px;font-size:var(--t-sm)}.note-body{margin:var(--s-1) 0 0;white-space:pre-wrap;overflow-wrap:anywhere}.modal form{display:flex;flex-direction:column;gap:var(--s-2)}.note-line{grid-column:2 / -1;margin:0 0 var(--s-1);padding-inline-start:var(--s-2);border-inline-start:2px solid var(--warn);font-size:var(--t-sm);color:var(--ink-2)}.note-line .reason{font-weight:600;color:var(--warn)}.delta-row.with-note{row-gap:2px}.warnings{display:flex;flex-direction:column;gap:var(--s-2)}.activity-row{grid-template-columns:92px 1fr max-content;align-items:baseline}@media(max-width:560px){.activity-row{grid-template-columns:1fr;gap:2px;padding:var(--s-2)}}.cell-actions .link{display:inline-flex;align-items:center;gap:3px}.cell-actions .link svg{font-size:17px}.note-count{font-size:var(--t-xs);font-weight:650;line-height:1}.upload input[type=file]{display:block;margin:16px 0}.preview{border:1px solid var(--rule);border-radius:var(--radius);padding:16px;background:var(--paper)}.facts{display:grid;grid-template-columns:max-content 1fr;gap:4px 16px;margin:0 0 16px}.facts dt{color:var(--ink-2)}.name-list{margin:4px 0 12px;padding-inline-start:20px}.notice{border-inline-start:3px solid var(--warn);background:var(--warn-tint);padding:8px 12px;margin:12px 0}.preview-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:16px}details summary{cursor:pointer;padding:6px 0}.branch-new{margin-block-start:var(--s-2)}.branch-new .name-list{margin-block-start:var(--s-1)}:root{--stack: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Noto Sans", "DejaVu Sans", sans-serif;--n-0: #ffffff;--n-25: #fcfbfa;--n-50: #f7f5f3;--n-100: #efece8;--n-200: #e3ded8;--n-300: #cec7be;--n-400: #a8a099;--n-500: #736c64;--n-600: #5b544d;--n-700: #423c36;--n-800: #2b2621;--n-900: #1a1613;--paper: var(--n-0);--paper-2: var(--n-50);--paper-sunk: var(--n-100);--ink: var(--n-900);--ink-2: var(--n-600);--ink-3: var(--n-500);--rule: var(--n-200);--rule-strong: var(--n-300);--ok: #2f6b4f;--ok-tint: #e8f1ec;--warn: #8a6a1f;--warn-tint: #fbf4e2;--danger: #9b3232;--danger-tint: #f8ecec;--brand-ink: #2d2d2d;--brand-sand: #b89f7f;--brand-bronze: #8a6e4b;--brand-cream: #faf6e7;--accent: var(--n-700);--accent-tint: rgba(66, 60, 54, .1);--accent-ink: #ffffff;--t-xs: .75rem;--t-sm: .8125rem;--t-base: .9375rem;--t-md: 1rem;--t-lg: 1.1875rem;--t-xl: 1.5rem;--lh-tight: 1.2;--lh-base: 1.5;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--s-6: 32px;--s-7: 48px;--r-sm: 4px;--r-md: 7px;--r-lg: 11px;--r-full: 999px;--e-1: 0 1px 2px rgba(26, 22, 19, .05);--e-2: 0 1px 2px rgba(26, 22, 19, .05), 0 4px 12px -4px rgba(26, 22, 19, .1);--e-3: 0 16px 40px -16px rgba(26, 22, 19, .32);--row-h: 44px;--tap: 44px;--tap-fine: 34px;--ring: 0 0 0 3px var(--accent-tint), 0 0 0 1px var(--accent)}@media(any-pointer:coarse){:root{--tap-fine: 44px}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--stack);font-size:var(--t-base);line-height:var(--lh-base);color:var(--ink);background:var(--paper-2);font-synthesis-weight:none;text-rendering:optimizeLegibility}h1,h2,h3,h4{line-height:var(--lh-tight);text-wrap:balance;margin:0;font-weight:640;letter-spacing:-.011em}h1{font-size:var(--t-xl)}h2{font-size:var(--t-lg)}h3{font-size:var(--t-md)}p{margin:0}.tabular,input.tabular,.time,.count{font-variant-numeric:tabular-nums}.shell{max-width:1080px;margin:0 auto;padding:var(--s-5) var(--s-4) var(--s-7);display:flex;flex-direction:column;gap:var(--s-4)}.muted{color:var(--ink-2)}.small{font-size:var(--t-sm)}.label{font-size:var(--t-xs);letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);font-weight:600}button,input,select,textarea{font:inherit;color:inherit}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:var(--tap);padding:0 var(--s-4);font-size:var(--t-base);font-weight:550;cursor:pointer;border-radius:var(--r-md);border:1px solid var(--rule-strong);background:var(--paper);color:var(--ink);box-shadow:var(--e-1);transition:background-color .12s ease,border-color .12s ease}.btn:hover{background:var(--n-25);border-color:var(--n-400)}.btn:active{background:var(--n-100)}.btn-primary{display:inline-flex;align-items:center;justify-content:center;min-height:var(--tap);padding:0 var(--s-4);font-size:var(--t-base);font-weight:550;cursor:pointer;border:1px solid var(--accent);border-radius:var(--r-md);background:var(--accent);color:var(--accent-ink);box-shadow:var(--e-1);transition:filter .12s ease}.btn-primary:hover{filter:brightness(1.08)}.btn-primary:active{filter:brightness(.94)}button[disabled]{opacity:.45;cursor:not-allowed;filter:none}.link{background:none;border:0;padding:var(--s-2);min-height:var(--tap);font-size:var(--t-base);color:var(--accent);cursor:pointer;border-radius:var(--r-sm);text-decoration:none;text-underline-offset:3px}.link:hover{text-decoration:underline}:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:none;box-shadow:var(--ring)}input[type=text],input[type=email],input[type=password],input[type=search],input[type=number],input[type=tel],input[type=date],input[type=file],input:not([type]),select,textarea{min-height:var(--tap);padding:0 var(--s-3);background:var(--paper);border:1px solid var(--rule-strong);border-radius:var(--r-md);box-shadow:inset 0 1px 1px #1a161308}input:hover,select:hover{border-color:var(--n-400)}.shell input:not([type=checkbox]):not([type=radio]):not([type=file]),.shell select,.shell textarea{max-width:46ch;width:100%}textarea{padding:var(--s-2) var(--s-3);min-height:84px}.card{background:var(--paper);border:1px solid var(--rule);border-radius:var(--r-lg);padding:var(--s-4);box-shadow:var(--e-1)}.stack{display:flex;flex-direction:column;gap:var(--s-2);max-width:360px}.stack label{font-size:var(--t-sm);color:var(--ink-2);font-weight:550}.stack button{align-self:flex-start;margin-top:var(--s-2);min-height:var(--tap);padding-inline:var(--s-4);border-radius:var(--r-md);border:1px solid var(--accent);background:var(--accent);color:var(--accent-ink);font-weight:550;cursor:pointer}.facts{display:grid;grid-template-columns:max-content 1fr;gap:var(--s-1) var(--s-5);margin:0}.facts dt{color:var(--ink-2);font-size:var(--t-sm)}.facts dd{margin:0}.notice{border-inline-start:3px solid var(--warn);background:var(--warn-tint);color:#4c3d12;padding:var(--s-3);border-radius:0 var(--r-md) var(--r-md) 0}.error{color:var(--danger)}.app{min-height:100vh}.topbar{position:sticky;top:0;z-index:10;display:flex;flex-direction:column;padding:0;background:var(--paper);border-bottom:1px solid var(--rule);box-shadow:var(--e-1)}.topbar-row,.topbar-nav{width:100%;max-width:1320px;margin-inline:auto;padding-inline:var(--s-4)}.topbar-row{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);flex-wrap:wrap;padding-block:var(--s-2)}.topbar-main{display:flex;align-items:baseline;gap:var(--s-3);flex-wrap:wrap}.hotel-name{font-size:var(--t-lg);font-weight:660;letter-spacing:-.015em;color:var(--accent)}.topbar .sub{color:var(--ink-3);font-size:var(--t-sm)}.topbar-actions{display:flex;gap:var(--s-1);align-items:center;flex-wrap:wrap}.who{display:inline-flex;align-items:center;gap:var(--s-2);color:var(--ink)}.who:hover{text-decoration:none;background:var(--n-25)}.avatar{display:grid;place-items:center;inline-size:30px;block-size:30px;border-radius:var(--r-full);background:var(--accent);color:var(--accent-ink);font-size:var(--t-xs);font-weight:680;letter-spacing:.02em;flex:none}.who-text{display:flex;flex-direction:column;line-height:1.15;text-align:start}.who-name{font-size:var(--t-sm);font-weight:580}.who-role{font-size:var(--t-xs);color:var(--ink-3)}.topbar-nav{display:flex;gap:var(--s-1);align-items:stretch;overflow-x:auto;scrollbar-width:none}.topbar-nav::-webkit-scrollbar{display:none}.nav-tab{display:inline-flex;align-items:center;white-space:nowrap;padding:var(--s-2) var(--s-3);min-height:var(--tap-fine);font-size:var(--t-sm);font-weight:560;color:var(--ink-2);text-decoration:none;border-bottom:2px solid transparent;transition:color .12s ease,border-color .12s ease}.nav-tab:hover{color:var(--ink);border-bottom-color:var(--rule-strong)}.nav-tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:640}.auth{max-width:420px;margin:var(--s-7) auto var(--s-6);padding:var(--s-6) var(--s-5) var(--s-5);display:flex;flex-direction:column;gap:var(--s-2);--accent: var(--brand-bronze);--accent-tint: rgba(138, 110, 75, .16);background:var(--paper);border:1px solid var(--rule);border-radius:var(--r-lg);box-shadow:var(--e-2)}.auth form{display:flex;flex-direction:column;gap:var(--s-2)}.auth label{font-size:var(--t-sm);color:var(--ink-2);font-weight:550}.auth .code{font-size:1.75rem;letter-spacing:.3em;text-align:center;padding-left:.3em;font-weight:600}.auth form>button[type=submit]{margin-top:var(--s-2);min-height:var(--tap);border:0;border-radius:var(--r-md);background:var(--accent);color:var(--accent-ink);font-weight:550;cursor:pointer}.hotel-list{list-style:none;padding:0;margin:0;display:grid;gap:var(--s-2);grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}.hotel-card{width:100%;text-align:start;padding:var(--s-4);cursor:pointer;font-size:var(--t-md);font-weight:600;background:var(--paper);border:1px solid var(--rule);border-inline-start:4px solid var(--accent);border-radius:var(--r-md);box-shadow:var(--e-1);transition:box-shadow .12s ease,transform .12s ease}.hotel-card:hover{box-shadow:var(--e-2);transform:translateY(-1px)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.dup-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--s-3)}.dup{display:flex;flex-direction:column;gap:var(--s-2);align-items:flex-start}.dup-pair{display:flex;gap:var(--s-3);align-items:center;flex-wrap:wrap;font-size:var(--t-md)}.dup-actions{display:flex;gap:var(--s-2);flex-wrap:wrap}.chip{display:inline-flex;align-items:center;padding:1px var(--s-2);font-size:var(--t-xs);font-weight:560;border-radius:var(--r-full);border:1px solid var(--rule-strong);color:var(--ink-2);background:var(--paper-2)}.check{display:inline-flex;align-items:center;gap:var(--s-2);min-height:var(--tap);padding:0 var(--s-2);font-size:var(--t-sm);cursor:pointer;border:1px solid var(--rule);border-radius:var(--r-md);background:var(--paper)}.check input{width:18px;height:18px;min-height:18px;accent-color:var(--accent)}.chip.sick{border-color:#d3aeae;background:var(--danger-tint);color:#7d2b2b}.brandmark{display:block;inline-size:168px;block-size:auto;color:var(--brand-ink);margin-block-end:var(--s-4)}.brandmark.small{inline-size:96px;margin:0;flex:none}.picker-head{display:flex;align-items:center;gap:var(--s-4);flex-wrap:wrap;margin-block-end:var(--s-2)}.auth{text-align:start}.auth .brandmark{margin-inline:auto}.auth h1{text-align:center}.auth>.muted{text-align:center;margin-block-end:var(--s-4)}.topbar-logo{inline-size:76px;block-size:auto;color:var(--brand-ink);flex:none;align-self:center}.topbar-divider{inline-size:1px;block-size:20px;background:var(--rule-strong);align-self:center}.hotel-card{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3)}.hotel-card.office .hotel-card-name{color:var(--ink-2)}.print-only{display:none}.merge-mark{font-size:20px;color:var(--ink-3);flex:none}.picker-upload{align-self:flex-start}@page{size:A4 portrait;margin:12mm 10mm}@media print{.no-print,.topbar,.day-tabs,.week-head,.summary,.modal-backdrop,.cell-actions,button{display:none!important}body{background:#fff;color:#000;font-size:10.5pt}.week,.shell{max-width:none;padding:0;gap:0}.day-title{font-size:12pt;margin:0 0 5mm}.day-title .date{color:#000}.grid{border:0;border-top:.5pt solid #000;border-radius:0;box-shadow:none;background:none}.blockhead{border:0;padding:3mm 0 1mm;font-size:8pt;color:#000;background:none}.blockhead .n{color:#666}.blockhead:after{background:#bbb}.delta-row{break-inside:avoid;page-break-inside:avoid;min-height:0;padding:1.6mm 0;border-top:0;border-bottom:.3pt solid #999;background:none!important;grid-template-columns:44px minmax(0,1fr) 118px 118px;grid-template-areas:"seq name in out"}.cell-hours,.cell-span{display:none!important}.tick{min-height:0!important;display:inline!important}.print-only{display:block!important}.print-mark{inline-size:34mm;block-size:auto;color:#000;margin-block-end:2mm}.cell-seq,.cell-name .given{color:#000}.cell-punch input[type=checkbox]{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:4mm;height:4mm;border:.4pt solid #000;border-radius:.5mm;background:#fff}.chip{border:.4pt solid #000;background:none!important;color:#000!important;border-radius:0;padding:0 1mm}.note-body{display:block!important;font-size:9pt;color:#000}.cell-punch input[type=checkbox]:checked{background:#000}a[href]:after{content:""}}
