@charset "UTF-8";*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #1e3a5f;--color-navy-dark: #16293f;--color-text: #1a1a1a;--color-text-muted: #6b7280;--color-border: #e2e5ea;--color-bg: #f7f8fa;--color-danger: #b91c1c;--color-success: #15803d;--color-surface: #fff;--color-border-dark: #b7bec9;--radius: 8px;--shadow-md: 0 4px 16px rgba(0, 0, 0, .08)}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,sans-serif;font-size:15px;line-height:1.5;color:var(--color-text);background:var(--color-bg)}#root{min-height:100vh}a{color:var(--color-navy);text-decoration:none}a:hover{text-decoration:underline}.app-loading{display:flex;align-items:center;justify-content:center;height:100vh;color:var(--color-text-muted)}.txt-center{text-align:center}.txt-late{color:var(--color-danger);font-weight:600}.logo{filter:invert(1)}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--color-navy)}.login-card{background:#fff;border-radius:12px;padding:2.5rem 2.5rem 2rem;width:100%;max-width:360px;text-align:center;box-shadow:0 10px 40px #00000040}.login-card h1{margin:0 0 .25rem;color:var(--color-navy)}.login-subtitle{color:var(--color-text-muted);margin:0 0 1.75rem;font-size:.9rem}.btn-google{width:100%;justify-content:center}.app-shell{display:flex;min-height:100vh}.app-shell__main{flex:1;display:flex;flex-direction:column;min-width:0}.app-shell__content{flex:1;padding:2rem;max-width:1100px;width:100%;margin:0 auto}.app-shell__content--wide{max-width:1600px;margin:0}.app-sidebar{width:220px;flex-shrink:0;background:var(--color-navy);color:#cdd7e3;display:flex;flex-direction:column;padding:1.25rem .75rem}.app-sidebar .logo{margin:0 auto}.app-sidebar__brand{color:#fff;font-weight:700;font-size:1.1rem;padding:.5rem .75rem 1.25rem;margin:0 auto}.app-sidebar__section{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#7e93ac;padding:1rem .75rem .35rem}.app-sidebar__link{display:block;padding:.5rem .75rem;border-radius:6px;color:#cdd7e3;font-size:.92rem}.app-sidebar__link:hover{background:#ffffff14;text-decoration:none}.app-sidebar__link--active{background:#ffffff26;color:#fff;font-weight:600}.app-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 2rem;background:#fff;border-bottom:1px solid var(--color-border)}.app-header__user{display:flex;align-items:center;gap:.75rem}.app-header__timer{display:flex;align-items:center;gap:.6rem}.app-header__name{font-size:.9rem;color:var(--color-text-muted)}.running-timer-badge{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--color-text)}.running-timer-badge--empty{color:var(--color-text-muted)}.running-timer-badge--compact{font-size:.82rem}.running-timer-badge__dot{width:8px;height:8px;border-radius:50%;background:var(--color-success);box-shadow:0 0 0 3px #15803d26;flex-shrink:0}.running-timer-badge__time{font-variant-numeric:tabular-nums;font-weight:600}.page-header{display:flex;align-items:flex-end;margin-bottom:1.5rem}.page-header h1{margin:0;font-size:1.5rem;margin-right:1rem}.page-header .page-header-details{display:flex;margin-right:1rem;align-items:center}.empty-state{text-align:center;padding:3rem 1rem;color:var(--color-text-muted)}.card{background:#fff;border:1px solid var(--color-border);border-radius:10px;padding:1.25rem 1.5rem;margin-bottom:1.25rem}.card.day-strip-card .form-row{margin-bottom:0}.form-group label{display:block;margin-bottom:.5rem;font-weight:600;font-size:.85rem}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.5rem .7rem;border:1px solid #ccd1d9;border-radius:var(--radius);font-size:.92rem;font-family:inherit}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--color-navy)}.form-group input{min-height:40px}.form-row{display:flex;gap:1rem;align-items:flex-end;margin-bottom:1rem}.form-row .form-group{flex:1}.form-error{color:var(--color-danger);font-size:.85rem;margin:.25rem 0}.form-actions{display:flex;gap:.5rem}.combobox{position:relative;display:flex;align-items:center;gap:.375rem;padding:.5rem .7rem;border:1px solid var(--color-border-dark);border-radius:var(--radius);background:var(--color-surface);cursor:pointer;min-height:38px;font-size:.92rem}.combobox:hover{border-color:var(--color-navy)}.combobox:focus{outline:none;border-color:var(--color-navy);box-shadow:0 0 0 3px #1e3a5f1f}.combobox .combobox-value{color:var(--color-text);flex:1}.combobox .combobox-placeholder{color:var(--color-text-muted);flex:1}.combobox .combobox-caret{color:var(--color-text-muted);font-size:.7rem}.combobox--disabled{cursor:default;background:var(--color-bg);opacity:.65}.combobox--disabled:hover{border-color:var(--color-border-dark)}.combobox--open{padding:0;cursor:default;border-color:var(--color-navy);box-shadow:0 0 0 3px #1e3a5f1f}.combobox--open input{flex:1;border:none;outline:none;padding:.5rem .7rem;font-size:.92rem;font-family:inherit;background:transparent;width:100%}.combobox .combobox-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-md);z-index:100;max-height:220px;overflow-y:auto}.combobox .combobox-option{padding:.5rem .7rem;font-size:.88rem;cursor:pointer;border-bottom:1px solid var(--color-border)}.combobox .combobox-option:last-child{border-bottom:none}.combobox .combobox-option:hover,.combobox .combobox-option.highlighted{background:var(--color-bg)}.combobox .combobox-option.selected{color:var(--color-navy);font-weight:600}.combobox .combobox-option--clear{color:var(--color-text-muted);font-style:italic}.combobox .combobox-empty{padding:.5rem .7rem;font-size:.88rem;color:var(--color-text-muted);font-style:italic}.actions-menu{position:relative;display:inline-block}.actions-menu-dropdown{position:absolute;top:calc(100% + 4px);right:0;min-width:160px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-md);z-index:100;overflow:hidden}.actions-menu-item{display:block;width:100%;text-align:left;background:none;border:none;padding:.6rem .9rem;font-size:.88rem;font-family:inherit;cursor:pointer;color:var(--color-text)}.actions-menu-item:hover:not(:disabled){background:var(--color-bg)}.actions-menu-item:disabled{opacity:.55;cursor:default}.actions-menu-item--danger{color:var(--color-danger)}.btn-primary,.btn-ghost,.btn-danger,.btn-link{display:inline-flex;align-items:center;gap:.4rem;border:none;border-radius:6px;font-size:.9rem;font-family:inherit;cursor:pointer;padding:.55rem 1.1rem}.btn-primary:disabled,.btn-ghost:disabled,.btn-danger:disabled,.btn-link:disabled{opacity:.55;cursor:default}.btn-primary{background:var(--color-navy);color:#fff;min-height:40px}.btn-primary:hover:not(:disabled){background:var(--color-navy-dark)}.btn-ghost{background:transparent;color:var(--color-text);border:1px solid var(--color-border);min-height:40px}.btn-ghost:hover:not(:disabled){background:#f1f3f5}.btn-danger{background:#fff;color:var(--color-danger);border:1px solid #f3caca}.btn-danger:hover:not(:disabled){background:#fdf2f2}.btn-link{background:none;color:var(--color-navy);padding:0;text-decoration:underline;margin-left:.5rem}.btn-link--danger{color:var(--color-danger)}.btn-sm{padding:.35rem .75rem;font-size:.82rem}.btn-xs{padding:.2rem .5rem;font-size:.78rem}.data-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--color-border);border-radius:10px;overflow:hidden}.data-table th{text-align:left;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);background:#fafbfc;padding:.6rem 1rem;border-bottom:1px solid var(--color-border)}.data-table td{padding:.65rem 1rem;border-bottom:1px solid #eef0f3;font-size:.9rem}.data-table tr:last-child td{border-bottom:none}.data-table tr.is-clickable{cursor:pointer}.data-table tr.is-clickable:hover td{background:#f7f9fb}.data-table td.right,.data-table th.right{text-align:right}.badge{display:inline-block;padding:.15rem .55rem;border-radius:999px;font-size:.72rem;font-weight:600;background:#eef1f4;color:var(--color-text-muted)}.badge--owner{background:#fde68a;color:#92400e}.badge--admin{background:#bfdbfe;color:#1e40af}.badge--member{background:#e2e5ea;color:#374151}.badge--billable{background:#d1fae5;color:#065f46}.badge--non-billable{background:#f3f4f6;color:#6b7280}.badge--void{background:#fee2e2;color:var(--color-danger)}.badge--paid{background:#d1fae5;color:#065f46}.badge--partial{background:#dbeafe;color:#1e40af}.badge--open{background:#eef1f4;color:var(--color-text-muted)}.badge--draft{background:#fef3c7;color:#92400e}.badge--late{background:#fee2e2;color:var(--color-danger)}.badge--active{background:#d1fae5;color:#065f46}.badge--archived{background:#f3f4f6;color:#6b7280}.badge-toggle{background:none;border:none;padding:0;cursor:pointer}.day-nav{display:flex;align-items:center;margin:1.5rem 0}.day-nav__controls{display:flex;align-items:center;gap:.75rem;margin-right:1rem}.day-nav__controls h2{margin:0 .5rem;font-size:1.1rem}.day-nav__arrow{background:transparent;border:1px solid var(--color-border);border-radius:6px;width:2rem;height:2rem;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:1rem;color:var(--color-text);font-family:inherit}.day-nav__arrow:hover{background:#f1f3f5}.day-strip{display:flex;gap:.5rem;margin-bottom:1.5rem}.day-strip__day{flex:1;display:flex;flex-direction:column;align-items:center;gap:.3rem;padding:.6rem .25rem;background:#fff;border:1px solid var(--color-border);border-radius:8px;cursor:pointer;font-family:inherit}.day-strip__day:hover{background:#f7f9fb}.day-strip__day--today{border-color:var(--color-navy)}.day-strip__day--selected{border-color:var(--color-navy);background:var(--color-navy)}.day-strip__day--selected .day-strip__label,.day-strip__day--selected .day-strip__total{color:#fff}.day-strip__label{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted)}.day-strip__total{font-size:.85rem;font-weight:600;font-variant-numeric:tabular-nums}.day-strip-card{padding:1.25rem 1.5rem}.day-strip-card .form-group{margin-bottom:0}.day-strip-card .form-group label{margin-left:.25rem}.time-stats{display:flex;gap:2.5rem;margin:0 0 1.25rem .25rem}.time-stats__group{display:flex;flex-direction:column;gap:.15rem}.time-stats__label{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted)}.time-stats__value{font-size:1.4rem;font-weight:700;font-variant-numeric:tabular-nums}.time-stats__detail{font-size:.82rem;color:var(--color-text-muted)}.timer-bar{display:flex;gap:.75rem;align-items:flex-end;flex-wrap:wrap}.timer-bar .form-group{margin-bottom:0;min-width:160px}.timer-bar__notes{flex:2;min-width:220px}.settings-layout{display:flex;gap:2rem}.settings-layout .settings-content{width:100%}.settings-layout .settings-content .btn-xs{min-height:unset}.settings-layout .settings-content .card .form-row{align-items:unset;flex-direction:column}.settings-layout .settings-content form .form-group,.settings-layout .data-table{margin-bottom:1rem}.settings-nav{width:160px;flex-shrink:0;display:flex;flex-direction:column}.settings-nav__link{display:block;padding:.4rem 0;color:var(--color-text-muted);font-size:.9rem}.settings-nav__link--active{color:var(--color-navy);font-weight:600}.settings-section{flex:1}.settings-section .form-row.billable .form-group{margin-bottom:0}.settings-section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.settings-section-header h2{margin:0 0 .15rem}.settings-section-header p{margin:0;color:var(--color-text-muted);font-size:.88rem}.timer-card .form-row{margin-bottom:1rem}.report-stats{display:flex;gap:2.5rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--color-border)}.report-stats__label{margin:0 0 .15rem;color:var(--color-text-muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.03em}.report-stats__value{margin:0;font-size:1.3rem;font-weight:600;color:var(--color-navy)}.report-calendar__legend{display:flex;flex-wrap:wrap;gap:.4rem 1.25rem;margin-bottom:.75rem}.report-calendar__legend-item{display:inline-flex;align-items:center;gap:.4rem;font-size:.82rem;color:var(--color-text-muted)}.report-calendar__swatch{width:10px;height:10px;border-radius:3px;flex-shrink:0}.report-calendar__grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;background:var(--color-border);border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}.report-calendar__weekday{background:var(--color-surface);padding:.4rem .5rem;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);text-align:center}.report-calendar__day{background:var(--color-surface);min-height:96px;padding:.3rem;display:flex;flex-direction:column;gap:2px}.report-calendar__day--outside{background:#edeff3}.report-calendar__day--outside .report-calendar__day-num{opacity:.55}.report-calendar__day-head{display:flex;justify-content:space-between;align-items:baseline;gap:.25rem}.report-calendar__day-num,.report-calendar__day-total{font-size:.74rem;color:var(--color-text-muted);font-variant-numeric:tabular-nums}.report-calendar__entry{display:flex;justify-content:space-between;align-items:baseline;gap:.3rem;width:100%;text-align:left;font:inherit;font-size:.76rem;color:var(--color-text);padding:.2rem .35rem;border:0;border-left:3px solid transparent;border-radius:3px;cursor:pointer}.report-calendar__entry:hover{filter:brightness(.96)}.report-calendar__entry-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.report-calendar__entry-hours{flex-shrink:0;color:var(--color-text-muted);font-variant-numeric:tabular-nums}.track-time .card.timer-card .form-row{align-items:center}.client-detail .card form{margin-bottom:1rem}.client-detail .card .form-row{align-items:center}.client-detail .card .form-row.invoice-filename-code{align-items:flex-end}.project-detail .card .btn-link{margin-left:1rem}.project-detail .card .form-row{margin-top:2rem}.project-detail .card .data-table .btn-link{margin-left:0}.invoice-detail .page-header .invoice-balance .form-actions{display:flex;align-items:flex-end}.invoice-detail .card div:nth-child(2 of.form-row){margin-bottom:.5rem}.invoice-detail .card .form-actions{margin-top:1rem}.invoice-detail .total{text-align:right;margin-right:1rem}
