.week{max-width:940px;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:38px;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)}.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:46px 1fr 128px 128px 64px;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}.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:anywhere}.cell-name .given{color:var(--ink-2)}.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}.cell-punch input[type=checkbox]{width:22px;height:22px;min-height:22px;flex:none;accent-color:var(--accent);cursor:pointer}.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(--n-400)}.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:560px){.delta-row{grid-template-columns:34px 1fr 96px 96px 48px;gap:var(--s-1);padding:var(--s-1) var(--s-2)}.summary{gap:var(--s-4)}}.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:32px}.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)}}.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}: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: #7c756d;--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;--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;--ring: 0 0 0 3px var(--accent-tint), 0 0 0 1px var(--accent)}*,*: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:940px;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: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)}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)}.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;align-items:center;justify-content:space-between;gap:var(--s-3);flex-wrap:wrap;padding:var(--s-3) var(--s-4);background:var(--paper);border-bottom:3px solid var(--accent);box-shadow:var(--e-1)}.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}.auth{max-width:400px;margin:0 auto;padding-top:var(--s-6)}.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}@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}.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:""}}
