:root{--bg: #f7f8fa;--surface: #ffffff;--surface-sunk: #f2f4f8;--surface-header: #fbfcfd;--border: #e6e9f0;--border-strong: #d7dbe4;--border-subtle: #f1f3f7;--ink: #131627;--ink-muted: #4a5069;--ink-subtle: #5c6478;--ink-decor: #a4aabd;--brand: #00007f;--primary: #00007f;--primary-hover: #000063;--primary-soft: #eceefa;--primary-on: #ffffff;--focus-ring: 0 0 0 3px rgb(0 0 127 / .18);--warn: #d99100;--warn-ink: #8a5a00;--warn-bg: #fff6e5;--info: #3b56d8;--info-ink: #2a3fb8;--info-bg: #e9eefb;--ok: #1f8a54;--ok-ink: #17683f;--ok-bg: #e7f4ec;--danger: #cc3b2b;--danger-ink: #a3271b;--danger-bg: #fdecea;--font-ui: "Instrument Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-num: "IBM Plex Mono", ui-monospace, monospace;--text-2xl: 26px;--lh-2xl: 32px;--text-xl: 22px;--lh-xl: 28px;--text-lg: 19px;--lh-lg: 26px;--text-md: 15px;--lh-md: 22px;--text-sm: 13px;--lh-sm: 18px;--text-xs: 12px;--lh-xs: 16px;--text-eyebrow: 11px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: 32px;--space-12: 48px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-full: 999px;--shadow-card: 0 1px 2px rgb(19 22 39 / .06);--shadow-pop: 0 8px 24px rgb(19 22 39 / .1);--shadow-modal: 0 18px 48px rgb(19 22 39 / .15);--cell-h: 38px;--cell-w: 84px;--row-label-w: 340px;--control-h: 40px;--control-h-sm: 32px;--control-h-touch: 48px;--sidebar-w: 232px;--page-max: 1180px}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:var(--font-ui);font-size:var(--text-md);line-height:var(--lh-md);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}h1,h2,h3,p{margin:0}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--primary)}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.num,td.num,.hours,.amount,.code,kbd{font-family:var(--font-num);font-variant-numeric:tabular-nums}.spacer{flex:1}.hint{font-size:var(--text-sm);line-height:var(--lh-sm);color:var(--ink-subtle)}.muted{color:var(--ink-subtle)}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}kbd{font-size:11px;font-weight:500;line-height:1;padding:3px 6px;border-radius:5px;border:1px solid var(--border);background:var(--surface);color:var(--ink-subtle)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--control-h);padding:0 16px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface);color:var(--ink);font-size:14px;font-weight:500;white-space:nowrap;cursor:pointer}.btn:hover{background:var(--surface-sunk)}.btn:focus-visible{outline:none;box-shadow:var(--focus-ring);border-color:var(--primary)}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--primary-on)}.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.btn-subtle{background:var(--surface-sunk);border-color:transparent}.btn-danger{border-color:#f3cfca;color:var(--danger-ink)}.btn-danger:hover{background:var(--danger-bg)}.btn-sm{min-height:var(--control-h-sm);padding:0 12px;border-radius:7px;font-size:13px}.btn-large{min-height:var(--control-h-touch);padding:0 20px;border-radius:10px;font-size:15px}.btn:disabled{opacity:.45;cursor:default}.btn-primary:disabled:hover{background:var(--primary)}.btn:not(.btn-primary):disabled:hover{background:var(--surface)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--ink-muted);cursor:pointer;flex:none}.icon-btn:hover{background:var(--surface-sunk)}.icon-btn.sm{width:32px;height:32px}.icon-btn.ghost{border-color:transparent;background:transparent;color:var(--ink-decor)}.icon-btn.ghost:hover{color:var(--ink-muted);background:var(--surface-sunk)}.icon-btn:focus-visible{outline:none;box-shadow:var(--focus-ring);border-color:var(--primary)}.link-btn{border:none;background:none;padding:0;color:var(--primary);font-size:13px;font-weight:500;cursor:pointer;text-align:left}.link-btn:hover{text-decoration:underline}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:13px;font-weight:500;color:var(--ink-muted)}.input{width:100%;min-height:var(--control-h);padding:9px 12px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface);color:var(--ink)}textarea.input{resize:vertical;line-height:20px}.input::placeholder{color:var(--ink-subtle)}.input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 1px var(--primary),var(--focus-ring)}.input.invalid{border-color:var(--danger)}.input.hours{text-align:right;font-size:17px}.field-hours{max-width:160px}.field-error{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--danger-ink)}.badge{display:inline-flex;align-items:center;gap:7px;padding:5px 11px;border-radius:var(--radius-full);font-size:13px;font-weight:500;line-height:18px;white-space:nowrap}.badge .dot{width:7px;height:7px;border-radius:var(--radius-full);flex:none}.badge.warn{background:var(--warn-bg);color:var(--warn-ink)}.badge.warn .dot{background:var(--warn)}.badge.info{background:var(--info-bg);color:var(--info-ink)}.badge.info .dot{background:var(--info)}.badge.ok{background:var(--ok-bg);color:var(--ok-ink)}.badge.ok .dot{background:var(--ok)}.badge.danger{background:var(--danger-bg);color:var(--danger-ink)}.badge.danger .dot{background:var(--danger)}.badge.neutral{background:var(--surface-sunk);color:var(--ink-muted)}.badge.neutral .dot{background:var(--ink-subtle)}.tag{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:500;line-height:16px;padding:2px 8px;border-radius:var(--radius-full);white-space:nowrap;flex:none}.tag.grant{background:var(--primary-soft);color:var(--primary)}.tag.nonbillable{border:1px dashed var(--border-strong);color:var(--ink-muted)}.tag.locked{background:var(--surface-sunk);color:var(--ink-muted)}.alert{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:var(--radius-md);border:1px solid #f3cfca;background:var(--danger-bg);color:var(--danger-ink);font-size:14px}.app{display:flex;min-height:100vh}.sidebar{position:sticky;top:0;display:flex;flex-direction:column;gap:22px;width:var(--sidebar-w);height:100vh;flex:none;padding:18px 14px;background:var(--surface);border-right:1px solid var(--border)}.brand{display:inline-flex;align-items:center;gap:10px;padding:0 4px}.brand-mark{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;flex:none;border-radius:8px;background:var(--brand);color:#fff}.brand-name{font-size:17px;font-weight:700;letter-spacing:-.01em}.brand-large .brand-mark{width:52px;height:52px;border-radius:13px}.brand-large .brand-name{font-size:22px}.company-picker{position:relative;display:flex;align-items:center;gap:10px;padding:9px 10px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}.company-picker:has(select):hover{background:var(--surface-sunk)}.company-picker:focus-within{border-color:var(--primary);box-shadow:var(--focus-ring)}.company-picker select{position:absolute;inset:0;width:100%;opacity:0;cursor:pointer}.company-logo{height:20px;width:auto;border-radius:2px;flex:none}.company-swatch{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;flex:none;border-radius:5px;color:#fff;font-size:11px;font-weight:600}.company-name{flex:1;min-width:0;font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.company-chevron{color:var(--ink-subtle);flex:none}.nav{display:flex;flex-direction:column;gap:2px}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;color:var(--ink-muted);font-size:14px;text-decoration:none}.nav-item:hover{background:var(--surface-sunk)}.nav-item[aria-current=page]{background:var(--primary-soft);color:var(--primary);font-weight:600}.user-card{display:flex;align-items:center;gap:10px;margin-top:auto;padding:9px 10px;border-radius:10px;background:var(--bg)}.avatar{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;flex:none;border-radius:var(--radius-full);background:var(--brand);color:#fff;font-size:12px;font-weight:600}.user-meta{display:flex;flex-direction:column;min-width:0}.user-name{font-size:13px;font-weight:500;line-height:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-meta .link-btn{font-size:11px;line-height:16px}.main{display:flex;flex-direction:column;flex:1;min-width:0}.page-header{position:sticky;top:0;z-index:10;padding:18px 28px;border-bottom:1px solid var(--border);background:#ffffffe6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.page-header-inner{display:flex;align-items:center;flex-wrap:wrap;gap:16px;max-width:calc(var(--page-max) - 56px)}.page-title{display:flex;align-items:baseline;gap:12px;flex:none;min-width:300px}.page-title h1{font-variant-numeric:tabular-nums;font-size:var(--text-xl);line-height:var(--lh-xl);font-weight:700;letter-spacing:-.01em}.page-period{font-family:var(--font-num);font-size:14px;color:var(--ink-subtle)}.week-nav{display:flex;align-items:center;gap:4px;margin-left:4px}.week-nav .btn-sm{margin-left:4px;color:var(--ink-muted);border-color:var(--border)}.segmented{display:inline-flex;padding:3px;border-radius:9px;background:var(--surface-sunk)}.segmented button{padding:6px 14px;border:none;border-radius:6px;background:none;color:var(--ink-muted);font-size:13px;font-weight:500;cursor:pointer}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:var(--shadow-card)}.content{display:flex;flex-direction:column;gap:18px;width:100%;max-width:var(--page-max);padding:24px 28px 40px}.center-page{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;min-height:100vh;padding:24px 16px}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-card)}.status-bar{display:flex;align-items:center;flex-wrap:wrap;gap:16px;padding:14px 18px}.week-total{display:flex;align-items:baseline;gap:8px}.week-total .num{font-size:22px;line-height:28px;font-weight:600}.week-total .of{font-size:13px;color:var(--ink-subtle)}.meter{display:block;width:200px;height:6px;border-radius:var(--radius-full);background:var(--primary-soft);overflow:hidden}.meter>span{display:block;height:100%;border-radius:inherit;background:var(--primary)}.autosave{font-size:13px;color:var(--ink-subtle)}.skeleton{height:420px;background:var(--surface-sunk);border-color:var(--surface-sunk);animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.55}}.grid-card{overflow:clip}.grid-scroll{overflow-x:auto}.week-grid{width:100%;min-width:1060px;border-collapse:collapse;table-layout:fixed}.col-label{width:var(--row-label-w)}.col-day{width:92px}.col-weekend{width:80px}.col-total{width:96px}.col-action{width:44px}.week-grid th{padding:10px 8px;background:var(--surface-header);border-bottom:1px solid var(--border);font-weight:600;vertical-align:bottom}.week-grid th.label-head,.week-grid th.total-head{padding:12px 16px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-subtle);text-align:left}.week-grid th.total-head{text-align:right;border-left:1px solid var(--border)}.day-head{text-align:right}.day-head .dow,.day-head .date{display:block}.day-head .dow{font-size:11px;line-height:14px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-subtle)}.day-head .date{font-family:var(--font-num);font-size:13px;font-weight:500;line-height:18px;color:var(--ink-muted)}.day-head.weekend .date{color:var(--ink-subtle)}.day-head.today{background:#f7f8fd;border-bottom:2px solid var(--primary)}.day-head.today .dow,.day-head.today .date{color:var(--primary);font-weight:600}.week-grid td{padding:4px 8px;border-bottom:1px solid var(--border-subtle);vertical-align:middle}.week-grid td.weekend{background:var(--surface-header)}.week-grid td.today{background:#fcfcff}.section-row td{padding:14px 16px 8px;border-bottom:none;font-size:11px;font-weight:600;line-height:16px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-subtle)}.week-grid td.row-label{position:sticky;left:0;z-index:1;padding:6px 16px;background:var(--surface)}.row-label-inner{display:flex;align-items:center;gap:10px}.row-text{display:flex;flex-direction:column;flex:1;min-width:0}.row-title{font-size:14px;font-weight:600;line-height:20px}.row-title .suffix{font-size:12px;font-weight:400;color:var(--ink-subtle)}.row-sub{font-size:12px;line-height:16px;color:var(--ink-subtle);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.star{display:flex;flex:none;padding:2px;border:none;border-radius:4px;background:none;color:#d2d6e0;cursor:pointer}.star:hover,.star.on{color:var(--warn)}.star-placeholder{width:19px;flex:none}.week-grid td.row-total{padding:6px 16px;border-left:1px solid var(--border-subtle);text-align:right;font-size:15px;font-weight:600}.week-grid td.row-action{padding:6px 8px;text-align:center}.lock-mark{display:inline-flex;color:var(--ink-subtle)}.sum-row td{padding:12px 18px 12px 8px;border-top:1px solid var(--border);border-bottom:none;background:var(--surface-header);text-align:right;font-size:15px;font-weight:600}.week-grid .sum-row td.weekend{background:var(--surface-header);color:var(--ink-subtle)}.week-grid .sum-row td.today{background:#f7f8fd;color:var(--primary)}.sum-row td.sum-label{padding:12px 16px;text-align:left;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-subtle)}.week-grid .sum-row td.row-total{padding:12px 16px;border-left:1px solid var(--border);font-size:16px;font-weight:700}.empty-row td{padding:28px 16px;font-size:14px;color:var(--ink-subtle)}.grid-footer{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:14px 16px;border-top:1px solid var(--border-subtle)}tr.locked td.row-label .row-title{color:var(--ink-muted)}.cell{position:relative;display:flex;align-items:center;height:var(--cell-h);border:1px solid var(--border);border-radius:8px;background:var(--surface);transition:background-color .2s,border-color .2s}.weekend .cell{border-color:#eef0f5}.cell>input{flex:1;width:100%;min-width:0;height:100%;padding:0 10px 0 0;border:none;border-radius:8px;background:transparent;text-align:right;font-family:var(--font-num);font-size:15px;font-weight:500;font-variant-numeric:tabular-nums;color:var(--ink);outline:none}.cell>input::placeholder{color:var(--ink-decor)}.cell:focus-within{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary),var(--focus-ring)}.note-btn{display:flex;align-items:center;flex:none;height:100%;padding:0 0 0 8px;border:none;background:none;color:var(--ink-muted);cursor:pointer;visibility:hidden}.cell:hover .note-btn,.cell:focus-within .note-btn,.note-btn.has-note{visibility:visible}.cell-mark{display:flex;flex:none;padding-left:9px}.cell-value{flex:1;padding-right:10px;text-align:right;font-family:var(--font-num);font-size:15px;font-weight:500;font-variant-numeric:tabular-nums;color:var(--ink-muted)}.cell.saving{background:var(--bg);border-color:var(--border-strong);animation:pulse 1.2s ease-in-out infinite}.cell.saving>input{color:var(--ink-subtle)}.cell.saved{background:#f3fbf6;border-color:#b7e0c6}.cell.saved .cell-mark{color:var(--ok)}.cell.error{background:snow;border-color:var(--danger)}.cell.error>input{color:var(--danger-ink)}.cell.locked{background:var(--surface-sunk)}.cell.locked .cell-mark{color:var(--ink-subtle)}.cell.locked.empty .cell-value{color:var(--ink-decor)}.cell.multi{background:var(--bg);border:1px dashed var(--border-strong)}.cell.multi .cell-value{font-size:13px}.cell.unassigned{background:repeating-linear-gradient(135deg,#f7f8fa 0 6px,#eef0f5 6px 12px);border-color:#eef0f5}@media(prefers-reduced-motion:reduce){.cell.saving,.skeleton{animation:none}}dialog.modal{width:min(680px,calc(100vw - 32px));max-height:calc(100vh - 96px);margin:72px auto auto;padding:0;border:none;border-radius:var(--radius-lg);background:var(--surface);color:var(--ink);box-shadow:var(--shadow-modal);text-align:left;font-weight:400}dialog.modal::backdrop{background:#13162759}dialog.modal-small{width:min(460px,calc(100vw - 32px));margin-top:15vh}.dialog-body{display:flex;flex-direction:column;gap:16px;padding:20px 22px}.dialog-title{font-size:17px;font-weight:600;line-height:24px}.dialog-text{font-size:14px;line-height:21px;color:var(--ink-muted)}.dialog-actions{display:flex;justify-content:flex-end;gap:8px}dialog.picker{display:flex;flex-direction:column;overflow:hidden}dialog.picker:not([open]){display:none}.picker-search{display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--border)}.picker-search-icon{color:var(--ink-subtle);flex:none}.picker-search input{flex:1;min-width:0;border:none;background:transparent;font-size:16px;outline:none}.picker-list{max-height:420px;overflow-y:auto;padding:4px 10px 10px}.picker-group{padding:14px 12px 6px;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-subtle)}.picker-option{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:9px;cursor:pointer}.picker-option[aria-selected=true]{background:var(--primary-soft)}.picker-option[aria-selected=true] kbd{border-color:transparent;color:var(--primary)}.picker-empty{padding:24px 12px;font-size:14px;color:var(--ink-subtle)}.picker-footer{display:flex;justify-content:space-between;gap:12px;padding:10px 18px;border-top:1px solid var(--border);background:var(--surface-header);font-size:12px;color:var(--ink-subtle)}.login{display:grid;grid-template-columns:1fr 1fr;min-height:100vh;background:var(--bg)}.login-main{display:flex;flex-direction:column;justify-content:center;gap:28px;padding:48px 96px}.login-intro{display:flex;flex-direction:column;gap:12px}.login-intro h1{font-size:32px;line-height:38px;font-weight:700;letter-spacing:-.02em}.login-lead{max-width:400px;font-size:16px;line-height:1.6;color:var(--ink-muted)}.login-form{display:flex;flex-direction:column;gap:14px;max-width:400px}.divider{display:flex;align-items:center;gap:12px;font-size:12px;color:var(--ink-subtle)}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--border)}.login-footer{display:flex;align-items:center;gap:12px;font-size:12px;color:var(--ink-subtle)}.login-footer img{height:26px;width:auto}.login-art{display:flex;align-items:center;justify-content:center;padding:48px;background-color:var(--brand);background-image:linear-gradient(rgb(255 255 255 / .08) 1px,transparent 1px),linear-gradient(90deg,rgb(255 255 255 / .08) 1px,transparent 1px);background-size:72px 72px}.login-card{display:flex;flex-direction:column;gap:14px;width:420px;max-width:100%;padding:20px 22px;border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-modal)}.login-card-head,.login-card-total{display:flex;align-items:center;justify-content:space-between}.login-card-row{display:grid;grid-template-columns:1fr 110px 52px;align-items:center;gap:14px;font-size:13px;color:var(--ink-muted)}.login-card-row .meter{width:100%}.login-card-row .num{text-align:right;color:var(--ink);font-weight:500}.login-card-total{padding-top:12px;border-top:1px solid var(--border)}.login-card-total .num{font-weight:600}.dev-picker{display:flex;flex-direction:column;gap:16px;width:min(460px,100%);padding:24px}.user-list{display:flex;flex-direction:column;gap:4px;max-height:60vh;margin:0;padding:0;overflow-y:auto;list-style:none}.user-list button{display:flex;flex-direction:column;width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:9px;background:var(--surface);text-align:left;cursor:pointer}.user-list button:hover{background:var(--primary-soft);border-color:transparent}.day-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:24px;align-items:start}.day-main{display:flex;flex-direction:column;gap:16px;min-width:0}.day-tabs{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.day-tab{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:0;padding:12px 10px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);text-align:left;cursor:pointer}.day-tab:hover{border-color:var(--border-strong)}.day-tab-label{font-size:12px;line-height:16px;color:var(--ink-subtle)}.day-tab-letter{display:none}.day-tab-total{font-size:15px;font-weight:600;line-height:20px}.day-tab.weekend{background:var(--surface-header);border-color:#eef0f5}.day-tab.weekend .day-tab-total{color:var(--ink-subtle)}.day-tab.today .day-tab-label{color:var(--primary);font-weight:600}.day-tab.selected{background:var(--primary);border-color:var(--primary)}.day-tab.selected .day-tab-label,.day-tab.selected .day-tab-total{color:#fff}.day-tab.selected .day-tab-label{opacity:.8}.day-card{overflow:hidden}.day-card-head{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--border-subtle)}.day-card-head h2{font-size:16px;font-weight:600;line-height:22px}.day-card-head .hint{font-family:var(--font-num);font-weight:500}.day-total{font-size:17px;font-weight:600}.day-empty{padding:24px 20px;font-size:14px;color:var(--ink-subtle)}.marker{width:3px;min-height:28px;align-self:stretch;flex:none;border-radius:var(--radius-full);background:var(--border-strong)}.marker.billable{background:var(--primary)}.marker.grant{background:var(--info)}.entry-row{display:flex;align-items:flex-start;gap:16px;padding:16px 20px;border-bottom:1px solid var(--border-subtle)}.entry-row:last-child{border-bottom:none}.entry-row.locked{background:var(--surface-header)}.entry-row.active{background:var(--primary-soft)}.entry-body{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.entry-title{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.entry-title .row-title{font-size:15px}.entry-meta{font-size:13px;line-height:18px;color:var(--ink-muted)}.entry-notes{font-size:13px;line-height:1.5;color:var(--ink-subtle);white-space:pre-wrap;overflow-wrap:anywhere}.entry-hours{align-self:center;font-size:19px;font-weight:600;line-height:26px}.entry-hours.muted{color:var(--ink-muted)}.entry-actions{display:flex;align-items:center;align-self:center;gap:4px}.icon-btn.danger{color:var(--danger-ink)}.icon-btn.danger:hover{background:var(--danger-bg)}.entry-actions .tag.locked{padding:5px 11px;font-size:13px}.day-side{position:sticky;top:94px}.entry-panel{display:flex;flex-direction:column;gap:16px}.entry-panel.card{padding:20px}.panel-title{font-size:15px;font-weight:600}.panel-note{padding:20px}.search-trigger{display:flex;align-items:center;gap:10px;width:100%;padding:11px 12px;border:1px solid var(--border-strong);border-radius:9px;background:var(--surface);color:var(--ink-subtle);font-size:14px;text-align:left;cursor:pointer}.search-trigger span{flex:1}.search-trigger:hover{border-color:var(--primary)}.selected-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:9px;background:var(--bg)}.hours-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.input.hours-big{width:120px;min-height:50px;padding:12px 14px;border-radius:9px;font-size:19px;font-weight:500}.chip{padding:6px 9px;border:1px solid var(--border);border-radius:var(--radius-full);background:var(--surface);color:var(--ink-muted);font-size:12px;font-weight:500;cursor:pointer}.chip:hover{background:var(--surface-sunk)}.panel-actions{display:flex;gap:8px}.btn.grow{flex:1}.panel-hint{font-size:12px;line-height:1.5}.quick-rows{display:flex;flex-direction:column;gap:6px}.quick-row{display:flex;flex-direction:column;align-items:flex-start;padding:9px 12px;border:1px solid var(--border);border-radius:9px;background:var(--surface);text-align:left;cursor:pointer}.quick-row:hover{background:var(--primary-soft);border-color:transparent}.mobile-day-nav{display:none}.entry-cards{display:flex;flex-direction:column;gap:10px}.entry-card{display:flex;align-items:stretch;gap:12px;width:100%;padding:14px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:inherit;text-align:left;cursor:pointer}.entry-card .entry-hours{font-size:18px}.entry-card.locked{opacity:.8;cursor:default}.copy-card{display:flex;align-items:center;gap:10px;width:100%;min-height:var(--control-h-touch);padding:14px;border:1px dashed var(--border-strong);border-radius:12px;background:none;color:var(--ink-subtle);font-size:14px;text-align:left;cursor:pointer}.mobile-bar{position:fixed;left:0;right:0;bottom:0;z-index:20;display:flex;align-items:center;gap:12px;padding:14px 18px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--border);background:#fffffff2}.mobile-bar-total{flex:1;font-size:13px;color:var(--ink-subtle)}.mobile-bar-total .num{margin-left:6px;font-size:15px;font-weight:600;color:var(--ink)}.mobile-bar .btn{border-radius:12px}dialog.sheet{width:100vw;max-width:100vw;max-height:92vh;margin:auto 0 0;border-radius:18px 18px 0 0}.sheet-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 0}.sheet-body{padding:14px 18px calc(22px + env(safe-area-inset-bottom))}.sheet .input.hours-big,.sheet .btn{min-height:var(--control-h-touch)}.mweek{display:flex;flex-direction:column;gap:10px}.mweek-card{overflow:hidden}.mweek-card.locked{opacity:.85}.mweek-head{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--border-subtle)}.mweek-total{font-size:15px;font-weight:600}.mweek-days{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;padding:10px 10px 12px}.mweek-day{min-height:34px;padding:8px 0;border:none;border-radius:7px;background:var(--bg);color:var(--ink-muted);font-size:11px;font-weight:500;cursor:pointer}.mweek-day.empty{background:var(--surface-header);color:var(--ink-decor)}.mweek-day.today{background:var(--primary-soft);color:var(--primary);font-weight:600}.mweek-note{text-align:center;font-size:12px}.inline-lock{margin-left:6px;vertical-align:-1px;color:var(--ink-subtle)}.toast{position:fixed;right:24px;bottom:24px;z-index:50;display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:var(--radius-md);background:var(--ink);color:#fff;font-size:14px;box-shadow:var(--shadow-pop)}.toast-icon{flex:none;color:#7ee0a8}.toast-undo{padding:0;border:none;background:none;color:#a9b0ff;font-size:14px;font-weight:600;cursor:pointer}.skeleton-card{display:flex;flex-direction:column;gap:12px;padding:18px}.skeleton-row{height:var(--cell-h);border-radius:8px;background:var(--surface-sunk);animation:pulse 1.2s ease-in-out infinite}.skeleton-row:first-child{width:40%;height:28px}@media(prefers-reduced-motion:reduce){.skeleton-row{animation:none}}@media(min-width:1360px){.grid-scroll{overflow:visible}.week-grid thead th{position:sticky;top:69px;z-index:2}}.nav-count{margin-left:auto;padding:2px 7px;border-radius:var(--radius-full);background:var(--info-bg);color:var(--info-ink);font-family:var(--font-num);font-size:11px;font-weight:500;line-height:16px}.segmented .count{margin-left:6px;font-family:var(--font-num);font-size:11px;color:var(--ink-subtle)}.table-card{overflow:clip}.data-table{width:100%;border-collapse:collapse}.data-table th{padding:10px 16px;border-bottom:1px solid var(--border);background:var(--surface-header);text-align:left;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-subtle);white-space:nowrap}.data-table td{padding:12px 16px;border-bottom:1px solid var(--border-subtle);font-size:14px;vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:none}.data-table .right{text-align:right}.data-table td.num{font-size:15px;font-weight:500}.data-table td .row-title,.data-table td .row-sub{display:block}.data-table td.actions{text-align:right;white-space:nowrap}.data-table td.actions .btn+.btn{margin-left:8px}.data-table tfoot td{border-top:1px solid var(--border);background:var(--surface-header);font-weight:600}.data-table .weekend{background:var(--surface-header)}.data-table .decor{color:var(--ink-decor)}.data-table .strong{font-weight:600}.data-table tr.absence td{background:#fffbf2}.table-empty{padding:28px 18px;font-size:14px;color:var(--ink-subtle)}.person{display:inline-flex;align-items:center;gap:10px;font-weight:500;white-space:nowrap}.avatar.sm{width:26px;height:26px;font-size:11px}.tag.absence{margin-left:8px;background:var(--warn-bg);color:var(--warn-ink)}.note-mark{margin-right:6px;vertical-align:-1px;color:var(--ink-subtle)}.day-head button{display:flex;flex-direction:column;gap:inherit;align-items:inherit;width:100%;padding:0;border:none;background:none;font:inherit;color:inherit;text-align:inherit;cursor:pointer}.day-head button:hover .date{text-decoration:underline;text-underline-offset:3px}.day-head button:focus-visible{outline:2px solid var(--brand);outline-offset:3px;border-radius:6px}.day-head .date{white-space:nowrap}.day-head .month{margin-left:4px;font-size:.8em;font-weight:400;color:var(--ink-subtle)}.reminder-banner{align-items:center}.reminder-banner svg{margin-top:0}.reminder-list{margin:0;padding:0;list-style:none;border:1px solid var(--border);border-radius:10px}.reminder-list li{display:flex;align-items:center;gap:16px;padding:12px 14px}.reminder-list li+li{border-top:1px solid var(--border-subtle)}.reminder-week{display:flex;flex:1;flex-direction:column;min-width:0}.reminder-week .row-sub{white-space:normal}.reminder-hours{font-size:15px;font-weight:500}.reminder-actions{display:flex;gap:8px}@media(max-width:800px){.reminder-list li{flex-wrap:wrap}.reminder-actions{width:100%}.reminder-actions .btn{flex:1;justify-content:center}}.page-intro{max-width:70ch;margin:0 0 4px}.people-table{min-width:760px}.check{display:inline-flex;align-items:center;gap:8px;font-size:14px;cursor:pointer}.check input{width:16px;height:16px;accent-color:var(--brand)}.hours-input{width:90px;padding:6px 8px;text-align:right}dialog.modal-wide{width:min(1080px,calc(100vw - 32px));margin-top:48px}.review-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.review-scroll{border:1px solid var(--border);border-radius:10px}.review-table{min-width:860px}.review-table th,.review-table td{padding:9px 10px}.review-table th:first-child,.review-table td:first-child{min-width:240px;padding-left:14px}.review-head .segmented{align-self:center}.review-list{min-width:900px}.review-list tbody tr.date-row th,.review-list tbody tr.date-row td{padding-block:8px;border-bottom:1px solid var(--border-subtle);background:var(--surface-header);font-size:13px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--ink)}.review-list tbody:not(:last-of-type) tr:last-child td{border-bottom:1px solid var(--border-subtle)}.review-list td{vertical-align:top}.review-list td.notes{min-width:260px;white-space:pre-wrap}.data-table .center{text-align:center}.billable-mark{color:var(--ink-subtle)}.dialog-actions .review-edit{margin-right:auto}dialog.modal-wide .dialog-actions{position:sticky;bottom:0;margin-bottom:-4px;padding-block:12px 4px;background:var(--surface, #fff)}.page-header.acting{padding-top:0;border-top:3px solid var(--info-ink)}.acting-bar{display:flex;align-items:center;gap:12px;max-width:calc(var(--page-max) - 56px);margin:0 auto 14px;padding:8px 12px;border-radius:0 0 var(--radius-md) var(--radius-md);background:var(--info-bg);color:var(--info-ink);font-size:14px}.review-notes{display:flex;flex-direction:column;gap:4px;font-size:13px;line-height:19px}.notice{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:var(--radius-md);font-size:14px;line-height:20px}.notice.warn{border:1px solid #f2dfb6;background:var(--warn-bg);color:var(--warn-ink)}.notice svg{flex:none;margin-top:3px}@media(max-width:1100px){.day-layout{grid-template-columns:minmax(0,1fr) 320px}}@media(max-width:900px){.login{grid-template-columns:1fr}.login-art{display:none}.login-main{padding:48px 24px}}@media(max-width:800px){.app{flex-direction:column}.sidebar{position:sticky;top:0;z-index:15;flex-direction:row;align-items:center;gap:10px;width:100%;height:auto;padding:10px 16px;border-right:none;border-bottom:1px solid var(--border)}.brand{padding:0}.brand-mark{width:26px;height:26px;border-radius:7px}.brand-name{font-size:15px}.nav,.user-meta{display:none}.data-table:not(.review-table) th:nth-child(4),.data-table:not(.review-table) td:nth-child(4),.data-table:not(.review-table) th:nth-child(5),.data-table:not(.review-table) td:nth-child(5){display:none}.data-table:not(.review-table) th,.data-table:not(.review-table) td{padding-inline:10px}.data-table .person .avatar,.data-table:not(.review-table) td:nth-child(2) .row-sub{display:none}.data-table .person{white-space:normal}.data-table td.actions .btn+.btn{margin:6px 0 0}.data-table td.actions .btn{display:flex;width:100%;justify-content:center}.company-picker{max-width:55vw;margin-left:auto;padding:5px 10px;border-radius:var(--radius-full)}.company-logo{height:14px}.company-swatch{width:18px;height:18px}.company-name{font-size:12px}.user-card{margin-top:0;padding:0;background:none}.page-header{position:static;padding:12px 16px}.page-header-inner{gap:10px}.page-title{min-width:0}.page-title h1{font-size:18px;line-height:24px}.page-period{font-size:12px}.segmented button{padding:6px 10px;font-size:12px}.content{gap:12px;padding:14px 16px 32px}.content.mode-day{padding-bottom:110px}.content.mode-day .status-bar{display:none}.status-bar{gap:10px;padding:12px 14px}.status-bar .meter,.status-bar .btn-primary,.autosave{display:none}.week-total .num{font-size:18px}.mobile-day-nav{display:flex;align-items:center;gap:10px;margin-top:12px}.mobile-day-title{display:flex;flex-direction:column;flex:1;text-align:center}.mobile-day-title .title{font-size:15px;font-weight:600}.mobile-day-title .sub{font-size:12px;font-weight:500;color:var(--ink-subtle)}.day-layout{grid-template-columns:1fr}.day-tabs{gap:6px}.day-tab{align-items:center;gap:2px;padding:8px 0;border:none;border-radius:8px;background:var(--surface-sunk)}.day-tab.weekend{background:var(--surface-header)}.day-tab-label{display:none}.day-tab-letter{display:block;font-family:var(--font-num);font-size:12px;font-weight:500;color:var(--ink-muted)}.day-tab-total{font-size:12px;font-weight:500;color:var(--ink-muted)}.day-tab.selected .day-tab-letter,.day-tab.selected .day-tab-total{color:#fff;font-weight:600}.login-main{justify-content:space-between;gap:24px;padding:32px 24px}.login-intro h1{font-size:26px;line-height:32px}.login-form{width:100%;max-width:none}.login-form .btn{width:100%;min-height:var(--control-h-touch);border-radius:12px;font-size:16px}.toast{left:16px;right:16px;bottom:96px}}
