:root{--maroon:#7a0a0a;--maroon-dark:#5c0707;--maroon-tint:#f7e9e9;--charcoal:#2b2b2b;color:#1f2933;background:#f4f6f8;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px}body{background:#f4f6f8;margin:0}a{color:var(--maroon);text-decoration:none}a:hover{text-decoration:underline}.loading{text-align:center;color:#6b7280;padding:2rem}.signin{background:#fff;grid-template-columns:1fr 1fr;min-height:100vh;display:grid}.signin-quote{background:var(--maroon);color:#fff;flex-direction:column;justify-content:center;padding:3rem clamp(2rem,6vw,6rem);display:flex}.quote-mark{color:#c46a6a;height:3rem;font-family:Playfair Display,Georgia,serif;font-size:7rem;line-height:.5}.signin-quote blockquote{max-width:34rem;margin:0;font-family:Playfair Display,Georgia,serif;font-size:clamp(1.5rem,2.6vw,2.25rem);font-style:italic;line-height:1.4}.signin-quote cite{letter-spacing:.2em;text-transform:uppercase;color:#f0c9c9;margin-top:1.5rem;font-size:.8rem;font-style:normal}.signin-panel{text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:3rem 2rem;display:flex}.signin-logo{object-fit:contain;width:220px;height:220px;margin-bottom:.5rem}.signin-panel h1{color:var(--charcoal);margin:0 0 .25rem;font-size:1.6rem}.signin-panel .muted{margin:0 0 1.5rem}.google-button{background:var(--charcoal);border-radius:10px;justify-content:center;align-items:center;gap:.6rem;min-width:260px;padding:.75rem 1.5rem;font-weight:500;display:inline-flex}.google-button:hover{background:#000}.google-mark{background:#fff;border-radius:50%;place-items:center;width:22px;height:22px;display:grid}.signin-panel .error{max-width:320px;margin-top:1rem}@media (width<=760px){.signin{grid-template-rows:auto auto;grid-template-columns:1fr}.signin-panel{order:1;padding:2.5rem 1rem 2rem}.signin-quote{order:2;padding:2.5rem 1.5rem}.signin-logo{width:170px;height:170px}}h1{margin:0 0 .75rem;font-size:1.5rem}h2{margin:1.5rem 0 .5rem;font-size:1.1rem}.muted{color:#6b7280}.error{color:#b91c1c}.ok{color:#166534}.notice{background:#fef9c3;border:1px solid #fde68a;border-radius:8px;padding:.6rem .8rem}button,.button{font:inherit;background:var(--maroon);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:.45rem 1rem;display:inline-block}button:hover,.button:hover{background:var(--maroon-dark);text-decoration:none}button:disabled{opacity:.5;cursor:default}button.secondary{color:#1f2933;background:#e5e7eb}button.danger{background:#b91c1c}button.link{color:var(--maroon);background:0 0;padding:.2rem .4rem}button.link:hover{background:0 0;text-decoration:underline}.danger-text{color:#b91c1c!important}input,select,textarea{font:inherit;box-sizing:border-box;background:#fff;border:1px solid #cbd5e1;border-radius:6px;padding:.35rem .5rem}.topbar{z-index:10;background:#fff;border-bottom:1px solid #e5e7eb;flex-wrap:wrap;align-items:center;gap:1.5rem;padding:.6rem 1.25rem;display:flex;position:sticky;top:0}.topbar nav{flex-wrap:wrap;flex:1;gap:.25rem;display:flex}.topbar{border-top:3px solid var(--maroon)}.brand{color:var(--charcoal);align-items:center;gap:.5rem;font-weight:600;display:flex}.brand:hover{text-decoration:none}.brand img{object-fit:contain;width:34px;height:34px}.topbar nav a{color:#374151;border-radius:6px;padding:.35rem .7rem}.topbar nav a.active{background:var(--maroon-tint);color:var(--maroon);font-weight:600}.who{color:#6b7280;font-size:.9rem}.page{max-width:1400px;margin:0 auto;padding:1.25rem}.row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.between{justify-content:space-between}.filters{flex-wrap:wrap;align-items:center;gap:.5rem;margin:.75rem 0;display:flex}.filters input[type=search]{min-width:260px}.tiles{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem;margin:1rem 0;display:grid}.tile{color:inherit;background:#fff;border-radius:10px;padding:.9rem 1rem;box-shadow:0 1px 4px #0000000f}a.tile:hover{text-decoration:none;box-shadow:0 2px 8px #0000001f}.tile-value{font-size:1.8rem;font-weight:700}.tile-label{color:#6b7280;font-size:.9rem}.grid2{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:1.25rem;display:grid}.table-wrap{background:#fff;border-radius:10px;overflow-x:auto;box-shadow:0 1px 4px #0000000f}table{border-collapse:collapse;background:#fff;width:100%}th,td{text-align:left;vertical-align:middle;border-bottom:1px solid #eef0f3;padding:.45rem .6rem}th{text-transform:uppercase;letter-spacing:.03em;color:#6b7280;white-space:nowrap;background:#f9fafb;font-size:.8rem}table.dense td{padding:.3rem .5rem;font-size:.9rem}table.dense select{padding:.15rem .3rem;font-size:.85rem}td.num,th.num{text-align:right}td.clip{white-space:nowrap;text-overflow:ellipsis;max-width:260px;overflow:hidden}td.actions{white-space:nowrap}.chip{white-space:nowrap;border-radius:999px;padding:.1rem .55rem;font-size:.82rem;display:inline-block}.chip-select{border:none;border-radius:999px;font-weight:500}.form{background:#fff;border-radius:10px;margin-bottom:1.25rem;padding:1rem 1.25rem;box-shadow:0 1px 4px #0000000f}fieldset{border:none;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.75rem 1rem;margin:0 0 1rem;padding:0;display:grid}legend{margin-bottom:.5rem;font-weight:600}.field{flex-direction:column;gap:.25rem;font-size:.9rem;display:flex}.field>span{color:#4b5563}.field.wide{grid-column:1/-1}.field.check{flex-direction:row;align-self:end;align-items:center;gap:.4rem}.tabs{gap:.25rem;margin:.75rem 0;display:flex}.tabs button{color:#1f2933;background:#e5e7eb}.tabs button.active{background:var(--maroon);color:#fff}.danger-zone{background:#fff;border:1px solid #fecaca;border-radius:10px;margin-top:2rem;padding:1rem}@media (width<=640px){.topbar{gap:.4rem 1rem;padding:.5rem .75rem}.topbar nav{flex-wrap:nowrap;flex:0 0 100%;order:3;overflow-x:auto}.topbar nav a{white-space:nowrap}.who{margin-left:auto}.page{padding:.75rem}.filters input[type=search]{width:100%;min-width:0}}.timer-panel{border-left:4px solid #d1d5db}.timer-panel.running{border-left-color:var(--maroon);background:snow}.timer-clock{font-variant-numeric:tabular-nums;color:var(--charcoal);min-width:7.5ch;font-size:1.8rem;font-weight:600}.timer-panel.running .timer-clock{color:var(--maroon)}.timer-badge{background:var(--maroon-tint);border-radius:999px;align-items:center;gap:.25rem;padding:.15rem .3rem .15rem .7rem;font-size:.85rem;display:inline-flex}.timer-badge a{color:var(--maroon);font-variant-numeric:tabular-nums;font-weight:600}.timer-what{color:var(--charcoal);text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom;max-width:16ch;font-weight:400;display:inline-block;overflow:hidden}.field.narrow{max-width:140px}td.near{color:#b45309;font-weight:600}td.over{color:#b91c1c;font-weight:700}.roles-legend{margin:0 0 1rem;padding-left:1.2rem}.subnav{background:#fff;border-bottom:1px solid #e5e7eb;gap:.25rem;padding:.4rem 1.25rem;display:flex;overflow-x:auto}.subnav a{color:#4b5563;white-space:nowrap;border-radius:6px;padding:.3rem .65rem;font-size:.92rem}.subnav a.active{background:var(--maroon-tint);color:var(--maroon);font-weight:600}.grid-table td.cell{padding:2px}.cell-select{background:0 0;border:none;border-radius:4px;width:100%;min-width:96px;padding:.2rem;font-size:.78rem}.filing-cell{color:#374151;background:#f8fafc;border:1px dashed #e5e7eb;border-radius:4px;width:100%;min-width:52px;min-height:26px;padding:.15rem;font-size:.8rem}.filing-cell:hover{background:#eef2f7}.filing-cell.filed{color:#166534;background:#dcfce7;border-color:#0000}.filing-cell.na{color:#64748b;background:#f1f5f9;border-color:#0000}.filing-cell.overdue{color:#991b1b;background:#fee2e2;border-color:#fca5a5;font-weight:600}.cell-editor{border-left:4px solid var(--maroon)}.sticky-col{z-index:1;background:#fff;min-width:180px;position:sticky;left:0}.note-input{width:100%;min-width:120px;padding:.2rem .35rem;font-size:.85rem}.grid-table tfoot td{background:#f9fafb;font-size:.82rem}.center{text-align:center}.right{text-align:right}tr.inactive td{opacity:.55}tr.row-overdue td{background:#fef2f2}tr.row-soon td{background:#fffbeb}td.row-overdue{color:#b91c1c;font-weight:600}td.row-soon{color:#b45309;font-weight:600}tr.subrow>td{background:#fafafa;padding:.5rem 1rem 1rem 2rem}.legend{color:#4b5563;flex-wrap:wrap;gap:.5rem 1.25rem;margin:.5rem 0 1rem;font-size:.82rem;display:flex}.segmented{border:1px solid #d1d5db;border-radius:8px;display:inline-flex;overflow:hidden}.segmented button{color:#374151;background:#fff;border-radius:0;padding:.4rem .9rem}.segmented button+button{border-left:1px solid #d1d5db}.segmented button.active{background:var(--maroon-tint);color:var(--maroon);font-weight:600}.toolbar{gap:.75rem;margin:.75rem 0 1rem}.track-button{background:#15803d;padding:.55rem 1.1rem;font-weight:600}.track-button:hover{background:#166534}.date-nav{background:#fff;border:1px solid #d1d5db;border-radius:8px;align-items:center;gap:.4rem;padding:.2rem .3rem;display:inline-flex}.date-nav input[type=date]{color:#0000;cursor:pointer;border:none;width:2.2rem;padding:.2rem}.date-nav input[type=date]::-webkit-datetime-edit{display:none}.date-label{text-align:center;min-width:12rem;font-weight:500}.week-strip{border-bottom:1px solid #e5e7eb;grid-template-columns:repeat(7,1fr) 1.2fr;margin-bottom:.5rem;display:grid}.week-day{color:#374151;text-align:left;background:0 0;border-bottom:3px solid #0000;border-radius:0;flex-direction:column;gap:.1rem;padding:.5rem .6rem .6rem;display:flex}.week-day:hover{background:#f9fafb}.week-day strong{color:#6b7280;font-variant-numeric:tabular-nums;font-weight:500}.week-day.today span{font-weight:700}.week-day.active{border-bottom-color:var(--maroon)}.week-day.active strong{color:var(--charcoal);font-weight:700}.week-total{text-align:right;flex-direction:column;padding:.5rem .6rem;display:flex}.week-total strong{font-variant-numeric:tabular-nums}.week-total small{color:#6b7280}.week-total small.short{color:#b45309}.day-list{background:#fff;border-radius:10px;box-shadow:0 1px 4px #0000000f}.entry{border-bottom:1px solid #eef0f3;grid-template-columns:1fr auto auto;align-items:center;gap:1rem;padding:.9rem 1rem;display:grid}.entry.running{border-left:4px solid var(--maroon);background:snow}.entry-notes{color:#4b5563;margin-top:.15rem;font-size:.9rem}.entry-hours{font-variant-numeric:tabular-nums;text-align:right;min-width:4.5rem;font-size:1.35rem;font-weight:600}.entry.running .entry-hours{color:var(--maroon)}.entry-actions{gap:.4rem;display:flex}.day-footer{align-items:center;gap:1rem;padding:.8rem 1rem;display:flex}.day-total{margin-left:auto;font-size:1.1rem}.empty{padding:1.25rem 1rem}.grid-hours{text-align:center;font-variant-numeric:tabular-nums;width:4.2rem;padding:.25rem}.grid-hours.readonly{color:#6b7280;display:inline-block}td.short{color:#b45309}.modal-backdrop{z-index:50;background:#11182773;justify-content:center;align-items:flex-start;padding:8vh 1rem 1rem;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:14px;width:100%;max-width:640px;overflow:hidden;box-shadow:0 20px 50px #00000040}.modal-head{text-align:center;background:#f3f4f6;padding:.9rem 1.25rem;font-weight:600}.modal-body{flex-direction:column;gap:.75rem;padding:1rem 1.25rem;display:flex}.modal-body .row.two{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.modal-body .notes-row{grid-template-columns:1fr 9rem}.field.duration input{text-align:right;font-variant-numeric:tabular-nums;padding:.4rem .6rem;font-size:1.8rem}.modal-foot{border-top:1px solid #eef0f3;gap:.5rem;padding:.9rem 1.25rem 1.1rem;display:flex}.modal-foot .go{background:#15803d;font-weight:600}.modal-foot .go:hover{background:#166534}.right-push{margin-left:auto}@media (width<=640px){.week-strip{grid-template-columns:repeat(4,1fr)}.entry{grid-template-columns:1fr auto}.entry-actions{grid-column:1/-1}.modal-body .row.two,.modal-body .notes-row{grid-template-columns:1fr}}.calendar{background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 1px 4px #0000000f}.cal-head,.cal-body{grid-template-columns:56px repeat(7,1fr);display:grid}.cal-head{border-bottom:1px solid #e5e7eb}.cal-day-head{border-left:1px solid #eef0f3;flex-direction:column;gap:.25rem;min-width:0;padding:.5rem .4rem;display:flex}.cal-day-head.today strong{color:var(--maroon)}.cal-scroll{height:620px;overflow-y:auto}.cal-body,.cal-gutter{position:relative}.cal-hour-label{color:#9ca3af;white-space:nowrap;font-size:.72rem;position:absolute;right:6px;transform:translateY(-50%)}.cal-hour-label:first-child{transform:none}.cal-col{border-left:1px solid #eef0f3;min-width:0;position:relative}.cal-col.editable{cursor:crosshair}.cal-col.today{background:snow}.cal-line{pointer-events:none;border-top:1px solid #f1f2f4;position:absolute;left:0;right:0}.cal-block{text-align:left;cursor:pointer;color:#1f2933;background:#e5e7eb;border:none;border-left:3px solid #9ca3af;border-radius:6px;flex-direction:column;gap:1px;padding:.2rem .35rem;font-size:.74rem;line-height:1.25;display:flex;position:absolute;overflow:hidden}.cal-block strong{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.cal-block span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.cal-block .cal-notes{color:#4b5563;white-space:normal}.cal-block.billable{background:var(--maroon-tint);border-left-color:var(--maroon)}.cal-block.billable:hover{background:#f1d9d9}.cal-block.nonbillable{background:#eef2f7;border-left-color:#64748b}.cal-block.timeoff{background:#e8f5ec;border-left-color:#15803d}.cal-block.running{border-left-color:var(--maroon);color:var(--maroon);cursor:default;background:repeating-linear-gradient(135deg,#fdecec,#fdecec 6px,#fff 6px 12px)}.cal-chip{white-space:nowrap;text-overflow:ellipsis;width:100%;padding:.15rem .35rem;font-size:.72rem;display:block;position:static;overflow:hidden}.cal-selection{color:#166534;pointer-events:none;background:#15803d26;border:1px dashed #15803d;border-radius:6px;padding:.15rem .35rem;font-size:.72rem;position:absolute;left:2px;right:2px}.cal-now{pointer-events:none;border-top:2px solid #dc2626;position:absolute;left:0;right:0}.cal-now:before{content:"";background:#dc2626;border-radius:50%;width:8px;height:8px;position:absolute;top:-5px;left:-4px}.cal-hint{border-top:1px solid #eef0f3;margin:0;padding:.5rem .75rem}@media (width<=760px){.cal-head,.cal-body{grid-template-columns:40px repeat(7,minmax(70px,1fr))}.calendar{overflow-x:auto}}.app-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;margin-top:.75rem;display:grid}.app-card{background:#fff;border-radius:12px;grid-template-columns:auto 1fr;align-items:start;gap:.75rem .9rem;padding:1rem 1.1rem;display:grid;box-shadow:0 1px 4px #0000000f}.app-card.inactive{opacity:.55}.app-tile{color:#fff;border-radius:12px;place-items:center;width:48px;height:48px;font-size:1.4rem;font-weight:700;display:grid}.app-info{flex-direction:column;gap:.1rem;min-width:0;display:flex}.app-info strong{font-size:1.05rem}.app-host{text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;overflow:hidden}.app-info p{color:#4b5563;margin:.35rem 0 0;font-size:.9rem}.app-open{text-align:center;grid-column:1/-1;padding:.6rem;font-weight:600}.app-admin{border-top:1px solid #eef0f3;flex-wrap:wrap;grid-column:1/-1;gap:.25rem;padding-top:.5rem;display:flex}
