:root{--paper:#faf8f4;--surface:#fff;--ink:#211f1c;--ink-soft:#6f6a5e;--line:#e8e2d7;--line-strong:#d9d2c3;--danger:#b3402e;--hover:#211f1c0f;--track:#efe9dd;--overlay:#211f1c61;--accent-warm:#c2543c;--today-bg:#d983240e;--nonbusiness:#211f1c06;--focus-ring:#211f1c40;--btn-primary-hover:#3a3630;--font-display:"Fraunces", Georgia, serif;--font-ui:"IBM Plex Sans", -apple-system, "Segoe UI", sans-serif;--radius:8px;--shadow-card:0 1px 2px #211f1c0d, 0 8px 32px #211f1c17;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--paper:#191713;--surface:#232019;--ink:#ece7db;--ink-soft:#a29a88;--line:#353127;--line-strong:#4a4435;--danger:#e06a55;--hover:#ece7db12;--track:#2e2a21;--overlay:#0000008c;--accent-warm:#e07856;--today-bg:#e078560a;--nonbusiness:#ece7db08;--focus-ring:#ece7db4d;--btn-primary-hover:#d6d0c2;--shadow-card:0 1px 2px #0000004d, 0 8px 32px #00000073;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--paper);color:var(--ink);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.45}.app-shell{flex-direction:column;height:100%;display:flex}.top-nav{border-bottom:1px solid var(--line);flex-shrink:0;align-items:center;gap:28px;height:54px;padding:0 24px;display:flex}.wordmark{font-family:var(--font-display);letter-spacing:.01em;font-size:21px;font-style:italic;font-weight:600}.nav-tabs{gap:4px;height:100%;display:flex}.nav-tabs button{appearance:none;font:inherit;color:var(--ink-soft);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:0 10px;font-weight:500}.nav-tabs button:hover{color:var(--ink)}.nav-tabs button.active{color:var(--ink);border-bottom-color:var(--ink)}.nav-right{gap:4px;margin-left:auto;display:flex}.app-main{flex-direction:column;flex:1;min-height:0;display:flex}.btn{appearance:none;font:inherit;border-radius:var(--radius);cursor:pointer;border:1px solid #0000;padding:7px 14px;font-weight:500;transition:background .12s,border-color .12s}.btn-sm{padding:4px 10px;font-size:13px}.btn-primary{background:var(--ink);color:var(--paper)}.btn-primary:hover{background:var(--btn-primary-hover)}.btn-primary:disabled{opacity:.4;cursor:default}.btn-ghost{color:var(--ink);background:0 0}.btn-ghost:hover{background:var(--hover)}.btn-danger{border-color:var(--danger);color:var(--danger);background:0 0}.btn-danger:hover{background:color-mix(in srgb, var(--danger) 10%, transparent)}.btn-danger-text{color:var(--danger)}.btn-pair{display:flex}.icon-btn{appearance:none;color:var(--ink-soft);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:2px 6px;font-size:22px;line-height:1}.icon-btn:hover{background:var(--hover);color:var(--ink)}.theme-toggle{align-self:center;padding:5px 8px;font-size:15px}.view-switch{background:var(--track);border-radius:9px;gap:2px;padding:3px;display:flex}.view-switch button{appearance:none;font:inherit;color:var(--ink-soft);cursor:pointer;background:0 0;border:none;border-radius:7px;padding:5px 12px;font-size:13px;font-weight:500}.view-switch button.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #0000002e}.calendar-view{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.cal-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;padding:18px 24px 14px;display:flex}.cal-total{flex-direction:column;gap:2px;display:flex}.cal-total-num{font-family:var(--font-display);letter-spacing:-.01em;font-variant-numeric:tabular-nums;font-size:38px;font-weight:600;line-height:1}.cal-total-label{color:var(--ink-soft);font-size:13px}.cal-controls{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.cal-body{flex:1;min-height:0;padding:0 24px 20px}.fc{--fc-border-color:var(--line);--fc-page-bg-color:transparent;--fc-today-bg-color:var(--today-bg);--fc-now-indicator-color:var(--accent-warm);--fc-non-business-color:var(--nonbusiness);font-family:var(--font-ui);font-size:13px}.fc .fc-scrollgrid{background:var(--surface);border-radius:10px;overflow:hidden}.fc .fc-timegrid-slot{height:2.6em}.fc .fc-timegrid-slot-label,.fc .fc-timegrid-axis{color:var(--ink-soft);font-size:11px}.fc .fc-col-header-cell{background:var(--surface);padding:8px 0 7px}.fc .fc-col-header-cell-cushion{color:inherit;text-decoration:none}.day-header{flex-direction:column;gap:1px;display:flex}.day-header-name{font-size:13px;font-weight:600}.day-header-total{color:var(--ink-soft);font-variant-numeric:tabular-nums;font-size:11.5px;font-weight:400}.fc .fc-day-today .day-header-name{color:var(--accent-warm)}.fc .fc-timegrid-event{border-radius:6px;padding:2px 3px;box-shadow:0 1px 2px #211f1c2e}.tg-event{line-height:1.25;overflow:hidden}.tg-event-title{white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:600;overflow:hidden}.tg-event-meta{opacity:.85;font-variant-numeric:tabular-nums;font-size:11px}.tg-event-note{opacity:.75;white-space:nowrap;text-overflow:ellipsis;font-size:11px;font-style:italic;overflow:hidden}.fc .fc-daygrid-day-frame{min-height:96px}.month-cell-top{align-items:baseline;gap:6px;padding:2px 4px;display:flex}.month-cell-total{color:var(--ink-soft);font-variant-numeric:tabular-nums;font-size:11px}.month-cell-num{margin-left:auto;font-weight:500}.fc .fc-day-today .month-cell-num{color:var(--accent-warm);font-weight:600}.chip-event{cursor:pointer;border-radius:5px;font-size:11px}.chip-inner{white-space:nowrap;text-overflow:ellipsis;padding:1px 5px;font-weight:500;overflow:hidden}.fc .fc-daygrid-more-link{color:var(--ink-soft);font-size:11px}.welcome-card{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-card);text-align:center;border-radius:14px;max-width:380px;padding:28px 32px;position:absolute;top:42%;left:50%;transform:translate(-50%,-50%)}.welcome-card h2{font-family:var(--font-display);margin:0 0 8px;font-size:22px;font-weight:600}.welcome-card p{color:var(--ink-soft);margin:0 0 16px}.page{width:100%;max-width:760px;margin:0 auto;padding:26px 24px 60px;overflow-y:auto}.page-head{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.page-head h1{font-family:var(--font-display);margin:0;font-size:28px;font-weight:600}.section-label{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);margin:28px 0 8px;font-size:12px;font-weight:600}.empty-note{color:var(--ink-soft)}.project-list{background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden}.project-list.archived{opacity:.7}.project-row{align-items:center;gap:12px;padding:12px 16px;display:flex}.project-row+.project-row{border-top:1px solid var(--line)}.dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.dot-lg{width:13px;height:13px}.project-name{font-weight:500}.project-hours{color:var(--ink-soft);font-variant-numeric:tabular-nums;margin-left:auto}.project-actions{gap:2px;display:flex}.report-controls{flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:22px;display:flex}.custom-range{color:var(--ink-soft);align-items:center;gap:8px;display:flex}.report-total{flex-direction:column;gap:2px;margin-bottom:26px;display:flex}.report-total-num{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:44px;font-weight:600;line-height:1}.report-total-label{color:var(--ink-soft)}.report-bars{flex-direction:column;gap:18px;display:flex}.report-row-label{align-items:center;gap:8px;margin-bottom:6px;display:flex}.report-row-name{font-weight:500}.archived-tag{color:var(--ink-soft);font-size:11px;font-style:italic}.report-row-hours{font-variant-numeric:tabular-nums;margin-left:auto}.report-row-pct{color:var(--ink-soft);text-align:right;font-variant-numeric:tabular-nums;width:38px;font-size:12px}.report-bar-track{background:var(--track);border-radius:5px;height:10px;overflow:hidden}.report-bar{border-radius:5px;min-width:2px;height:100%}.modal-overlay{background:var(--overlay);z-index:50;justify-content:center;align-items:flex-start;padding-top:12vh;display:flex;position:fixed;inset:0}.modal-card{background:var(--surface);box-shadow:var(--shadow-card);border-radius:14px;width:min(420px,100vw - 32px);padding:20px 22px}.modal-head{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.modal-head h2{font-family:var(--font-display);margin:0;font-size:20px;font-weight:600}.form-grid{flex-direction:column;gap:14px;display:flex}.field{flex-direction:column;gap:5px;display:flex}.field>span{color:var(--ink-soft);font-size:12px;font-weight:600}.field-row{align-items:flex-end;gap:12px;display:flex}.field-row .field{flex:1}.duration-preview{color:var(--ink-soft);font-variant-numeric:tabular-nums;text-align:right;min-width:52px;padding:8px 2px}input[type=text],input[type=date],input[type=time],select{font:inherit;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);color:var(--ink);width:100%;padding:7px 10px}input:focus,select:focus{outline:2px solid var(--focus-ring);outline-offset:1px}.form-error{color:var(--danger);margin:0;font-size:13px}.form-hint{color:var(--ink-soft);margin:0;font-size:12px}.modal-actions{gap:8px;margin-top:6px;display:flex}.modal-actions .spacer{flex:1}.project-picker{align-items:center;gap:8px;display:flex}.project-picker select{flex:1}.project-create-inline{flex-direction:column;gap:10px;display:flex}.swatch-row{flex-wrap:wrap;gap:6px;display:flex}.swatch{cursor:pointer;border:2px solid #0000;border-radius:50%;width:22px;height:22px;padding:0}.swatch.selected{border-color:var(--ink);box-shadow:0 0 0 2px var(--surface) inset}.inline-actions{gap:8px;display:flex}.auth-screen{background:var(--paper);justify-content:center;align-items:center;min-height:100%;padding:24px;display:flex}.auth-card{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-card);border-radius:16px;flex-direction:column;gap:12px;width:100%;max-width:400px;padding:36px 36px 32px;display:flex}.auth-card .wordmark{margin-bottom:6px;font-size:26px}.auth-card h1{font-family:var(--font-display);margin:0;font-size:24px;font-weight:600}.auth-card p{color:var(--ink-soft);margin:0 0 6px}.auth-links{flex-wrap:wrap;justify-content:space-between;gap:8px;margin-top:2px;display:flex}.link-btn{appearance:none;font:inherit;color:var(--ink-soft);cursor:pointer;text-underline-offset:3px;background:0 0;border:none;padding:0;font-size:13px;text-decoration:underline}.link-btn:hover{color:var(--ink)}.form-notice{color:var(--accent-warm);margin:0;font-size:13px}@media (width<=720px){.top-nav{gap:12px;padding:0 12px}.cal-toolbar,.cal-body{padding-left:12px;padding-right:12px}.cal-total-num{font-size:28px}.project-actions .btn{padding:4px 6px}}
