:root{--bg:#f5f7f8;--surface:#fff;--border:#e3e4e5;--text:#404041;--muted:#6d6e71;--primary:#00aec5;--primary-dark:#007fb2;--primary-tint:#e0f7fa;--secondary:#324f96;--secondary-dark:#1f3164;--danger:#e31b23;--danger-dark:#8a1f03;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}button{cursor:pointer;border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:8px 14px;font-family:inherit;font-size:14px}button.primary{background:var(--primary);border-color:var(--primary);color:#fff}button.primary:hover{background:var(--primary-dark)}button.danger{background:var(--danger);border-color:var(--danger);color:#fff}button.danger:hover{background:var(--danger-dark);border-color:var(--danger-dark)}button.link-button{color:var(--primary);background:0 0;border:none;padding:4px 6px}button.link-button.inline{vertical-align:baseline;padding:0}button.danger-text{color:var(--danger)}input,select{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;padding:8px 10px;font-family:inherit;font-size:14px}input[type=checkbox],input[type=radio]{background:0 0;border:none;flex:none;width:auto;padding:0}label{color:var(--muted);flex-direction:column;gap:4px;font-size:13px;display:flex}.app-shell{min-height:100vh;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;width:220px;padding:20px 16px;display:flex}.brand{align-items:center;gap:8px;margin-bottom:24px;font-size:18px;font-weight:700;display:flex}.brand-mark{width:auto;height:22px}.auth-mark{width:auto;height:40px;margin:0 auto 8px;display:block}.owners-area-button{text-align:center;background:var(--secondary);color:#fff;border-radius:8px;margin-bottom:20px;padding:10px 12px;font-size:13px;font-weight:600;text-decoration:none;display:block}.owners-area-button:hover{background:var(--secondary-dark)}.owners-area-button.active{background:var(--primary)}.sidebar nav{flex-direction:column;gap:4px;display:flex}.sidebar nav a{color:var(--text);border-radius:8px;padding:8px 10px;font-size:14px;text-decoration:none}.sidebar nav a.active{background:var(--primary-tint);color:var(--primary-dark);font-weight:600}.nav-drag-row{align-items:center;gap:2px;display:flex}.nav-drag-row a{flex:1}.nav-drag-row.dragging{opacity:.4}.drag-handle{cursor:grab;color:var(--muted);flex-shrink:0;padding:4px 2px;font-size:13px}.drag-handle:active{cursor:grabbing}.sidebar-footer{border-top:1px solid var(--border);margin-top:auto;padding-top:16px}.user-name{font-size:14px;font-weight:600}.user-role{color:var(--muted);text-transform:capitalize;font-size:12px}.content{flex:1;max-width:1100px;padding:32px}.mobile-topbar,.sidebar-backdrop{display:none}.hamburger-button{cursor:pointer;background:0 0;border:none;flex-direction:column;justify-content:center;gap:4px;width:32px;height:32px;padding:0;display:flex}.hamburger-button span{background:var(--text);border-radius:1px;height:2px;display:block}@media (width<=768px){.app-shell{display:block}.mobile-topbar{background:var(--surface);border-bottom:1px solid var(--border);z-index:150;align-items:center;gap:12px;padding:14px 16px;display:flex;position:sticky;top:0}.mobile-topbar .brand{margin-bottom:0}.sidebar-backdrop{z-index:200;background:#0006;display:block;position:fixed;inset:0}.sidebar{z-index:210;width:260px;max-width:80vw;height:100vh;transition:transform .25s;position:fixed;top:0;left:0;transform:translate(-100%);box-shadow:2px 0 16px #0003}.sidebar.open{transform:translate(0)}.content{max-width:100%;padding:20px}}@media (width<=767px){.hide-on-mobile{display:none}}.page h1{margin-top:0}.auth-screen{justify-content:center;align-items:center;min-height:100vh;display:flex}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:14px;width:340px;padding:32px;display:flex}.auth-divider{color:var(--muted);text-transform:uppercase;align-items:center;gap:10px;font-size:12px;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--border);flex:1;height:1px}.ms-signin-button{border:1px solid var(--border);color:var(--text);background:var(--surface);border-radius:8px;justify-content:center;align-items:center;gap:10px;padding:9px 14px;font-size:14px;font-weight:500;text-decoration:none;display:flex}.ms-signin-button:hover{background:var(--bg)}.ms-signin-button:before{content:"";background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 21 21'%3E%3Crect x='1' y='1' width='9' height='9' fill='%23f25022'/%3E%3Crect x='11' y='1' width='9' height='9' fill='%237fba00'/%3E%3Crect x='1' y='11' width='9' height='9' fill='%2300a4ef'/%3E%3Crect x='11' y='11' width='9' height='9' fill='%23ffb900'/%3E%3C/svg%3E");background-size:contain;flex-shrink:0;width:16px;height:16px}.auth-switch{color:var(--muted);text-align:center;font-size:13px}.error{color:var(--danger);background:#fef2f2;border:1px solid #fecaca;border-radius:8px;margin-bottom:16px;padding:8px 12px;font-size:13px}.notice{background:var(--primary-tint);border:1px solid #ade0ee;border-radius:8px;margin-bottom:16px;padding:10px 14px;font-size:13px}.timer-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-direction:column;align-items:center;gap:12px;margin-bottom:24px;padding:24px;display:flex}.timer-display{font-variant-numeric:tabular-nums;font-size:48px;font-weight:700}.timer-meta{color:var(--muted)}.timer-start-row{gap:8px;width:100%;display:flex}.timer-start-row input{flex:1}.section-header{justify-content:space-between;align-items:center;display:flex}.manual-form{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-wrap:wrap;gap:8px;margin-bottom:20px;padding:16px;display:flex}.manual-form input,.manual-form select{flex:1;min-width:140px}.entry-group h3{text-transform:uppercase;color:var(--muted);letter-spacing:.04em;margin:20px 0 8px;font-size:13px}.entry-row{background:var(--surface);border:1px solid var(--border);border-radius:10px;align-items:center;gap:12px;margin-bottom:8px;padding:12px 14px;display:flex}.entry-desc{flex:1}.entry-duration{font-variant-numeric:tabular-nums;color:var(--muted)}.project-dot{vertical-align:middle;border-radius:50%;flex-shrink:0;width:10px;height:10px;display:inline-block}.project-dot-button{cursor:pointer;border:none;padding:0}.project-dot-button:hover{outline:2px solid var(--border);outline-offset:2px}.color-dot-cell{position:relative}.project-form{flex-direction:column;align-items:stretch;gap:12px}.project-form-fields{flex-wrap:wrap;gap:8px;display:flex}.project-form-fields input,.project-form-fields select{flex:1;min-width:140px}.swatch-label{color:var(--muted);margin-bottom:6px;font-size:12px;display:block}.swatch-grid{flex-wrap:wrap;gap:10px;display:flex}.swatch-group{gap:3px;display:flex}.swatch{cursor:pointer;border:1px solid #0000001a;border-radius:4px;width:20px;height:20px;padding:0}.swatch.selected{outline:2px solid var(--text);outline-offset:2px}.swatch-popover-backdrop{z-index:19;position:fixed;inset:0}.swatch-popover{z-index:20;background:var(--surface);border:1px solid var(--border);border-radius:10px;width:max-content;max-width:280px;padding:12px;position:fixed;box-shadow:0 8px 20px #00000026}.muted{color:var(--muted)}.small{font-size:12px}.cell-input{background:0 0;border:1px solid #0000;width:100%;padding:4px 6px}.cell-input:hover,.cell-input:focus{border-color:var(--border);background:var(--surface)}.rate-input-wrap{color:var(--muted);align-items:center;gap:2px;font-size:13px;display:inline-flex}.rate-input{text-align:right;width:56px}.code-input{text-transform:uppercase;width:90px}.project-name-link{color:var(--text);font-weight:500;text-decoration:none}.project-name-link:hover{color:var(--primary);text-decoration:underline}.breadcrumb-link{color:var(--primary);font-size:14px;text-decoration:none}.breadcrumb-link:hover{text-decoration:underline}.detail-title{margin:12px 0 2px}.detail-subtitle{color:var(--muted);margin:0 0 20px}.detail-tabs{border-bottom:1px solid var(--border);display:flex}.detail-tab{background:var(--bg);color:var(--muted);letter-spacing:.03em;text-transform:uppercase;border:none;border-bottom:2px solid #0000;border-radius:0;padding:12px 20px;font-size:13px;font-weight:600}.detail-tab.active{background:var(--surface);color:var(--text);border-bottom:2px solid var(--primary)}.detail-panel{background:var(--surface);border:1px solid var(--border);border-top:none;border-radius:0 0 12px 12px;margin-bottom:24px;padding:24px}.empty-state{text-align:center;flex-direction:column;align-items:center;gap:4px;padding:48px 16px;display:flex}.empty-state-icon{width:64px;height:64px;color:var(--border);margin-bottom:12px}.empty-state h3{margin:0}.task-empty-form{gap:8px;max-width:360px;margin:8px auto 0;display:flex}.task-empty-form input{flex:1}.task-list{margin:0 0 16px;padding:0;list-style:none}.task-list-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:10px 4px;display:flex}.task-list-row:last-child{border-bottom:none}.task-name.completed{color:var(--muted);text-decoration:line-through}.settings-panel{flex-direction:column;display:flex}.settings-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:24px;padding:20px 0;display:flex}.settings-row:last-child{border-bottom:none}.settings-row-text{max-width:420px}.settings-row-text h3{margin:0 0 4px;font-size:15px}.settings-row-text p{margin:0}.settings-row-control{flex-shrink:0;align-items:center;gap:10px;display:flex}.settings-row-control label{flex-direction:row;align-items:center;gap:6px}.settings-row-actions{gap:8px;display:flex}.settings-rate-value{text-align:right;min-width:60px;font-weight:600}.segmented-control{border:1px solid var(--border);border-radius:8px;display:inline-flex;overflow:hidden}.segmented-control button{background:var(--surface);border:none;border-radius:0}.segmented-control button+button{border-left:1px solid var(--border)}.segmented-control button.active{background:var(--primary);color:#fff}.progress-header{justify-content:space-between;align-items:baseline;display:flex}.progress-header h3{margin:0}.progress-percent{color:var(--primary);font-size:18px;font-weight:700}.progress-percent.over{color:var(--danger)}.progress-bar{background:var(--bg);border:1px solid var(--border);border-radius:999px;height:10px;margin:10px 0;overflow:hidden}.progress-bar-fill{background:var(--primary);border-radius:999px;height:100%;transition:width .2s}.progress-bar-fill.over{background:var(--danger)}.progress-caption{margin:0}.chart-block-title{margin:0;font-size:16px}.weekly-chart{width:100%;height:220px;margin-top:12px;display:block;overflow:visible}.weekly-chart-label{fill:var(--muted);text-transform:none;font-size:11px}.weekly-chart-total{fill:var(--text);font-size:11px;font-weight:600}.weekly-chart-budget-line{stroke:var(--danger);stroke-width:2px;stroke-dasharray:6 4}.weekly-chart-legend{flex-wrap:wrap;gap:16px;margin-top:8px;display:flex}.weekly-chart-legend-item{color:var(--muted);align-items:center;gap:6px;font-size:13px;display:inline-flex}.weekly-chart-swatch{border-radius:3px;flex-shrink:0;width:10px;height:10px}.status-charts{border-top:1px solid var(--border);flex-wrap:wrap;align-items:flex-start;gap:32px;margin-top:28px;padding-top:24px;display:flex}.chart-block{flex:1;min-width:260px}.chart-block-donut{flex:none}.chart-title{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;margin:0 0 12px;font-size:12px;font-weight:600}.daily-hours-chart{width:100%;height:140px;display:block;overflow:visible}.chart-bar-nonbillable{fill:var(--border)}.chart-x-labels{color:var(--muted);justify-content:space-between;margin-top:6px;font-size:12px;display:flex}.donut-chart-wrap{width:140px;height:140px;position:relative}.donut-chart{width:100%;height:100%}.donut-track{fill:none;stroke:var(--border);stroke-width:12px}.donut-value{fill:none;stroke-width:12px;stroke-linecap:round;transition:stroke-dasharray .3s}.donut-center{flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex;position:absolute;inset:0}.donut-center strong{font-size:20px}.donut-center span{font-size:11px}.project-note-input{resize:vertical;width:100%;margin-bottom:12px;font-family:inherit}.project-note-text{white-space:pre-wrap;margin:0}.access-members-section{padding-top:20px}.access-add-row{gap:8px;max-width:420px;margin-bottom:16px;display:flex}.access-add-row select{flex:1}.access-members-table td,.access-members-table th{vertical-align:middle}.member-rate-cell{align-items:center;gap:8px;display:inline-flex}.member-rate-cell input{width:90px}.table-scroll{margin-bottom:20px;overflow-x:auto}.ts-table{table-layout:fixed;min-width:720px}.ts-table th:not(:first-child):not(.ts-actions-col){text-align:right}.ts-table th:not(:first-child):not(.ts-actions-col),.ts-table td.ts-cell,.ts-table td.ts-total{text-align:right;width:70px}.ts-table th.ts-actions-col,.ts-table td.ts-actions-col{width:70px}.ts-day-name{color:var(--text);text-transform:none;font-size:13px;display:block}.ts-row-label{align-items:center;gap:10px;display:flex}.ts-project-name{font-weight:500}.ts-task-name{color:var(--muted);margin-top:2px;font-size:12px}.ts-week-label{align-items:center;gap:14px;min-width:220px;font-weight:600;display:flex}.ts-week-range{font-weight:600}.week-picker{color:var(--primary);border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:8px;padding:6px 10px;font-weight:600}.ts-cell{padding:4px 14px 4px 4px!important}.ts-input{text-align:right;background:0 0;border:1px solid #0000;width:46px;padding:6px 4px}.ts-input:hover,.ts-input:focus{border-color:var(--border);background:var(--surface)}.ts-cell-locked{color:var(--muted);cursor:help}.ts-total{font-weight:600}.ts-table tfoot td{border-top:2px solid var(--border);background:var(--bg);border-bottom:none}.approval-bar{align-items:center;gap:12px;margin-bottom:16px;display:flex}.status-badge{border-radius:999px;align-items:center;padding:4px 10px;font-size:12px;font-weight:600;display:inline-flex}.status-pending{color:#92400e;background:#fef3c7}.status-approved{color:#166534;background:#dcfce7}.status-rejected{color:#991b1b;background:#fee2e2}.modal-backdrop{z-index:50;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-card{background:var(--surface);border-radius:12px;width:340px;padding:24px;box-shadow:0 12px 32px #00000040}.modal-card h2{margin-top:0}.modal-card>input{width:100%;margin-top:8px}.task-checklist{flex-direction:column;gap:6px;max-height:200px;margin-top:8px;display:flex;overflow-y:auto}.task-checklist-row{flex-direction:row;align-items:center;gap:8px;font-size:14px;display:flex}.modal-actions{justify-content:flex-end;gap:8px;margin-top:20px;display:flex}.status-filter{width:fit-content;margin-bottom:16px;display:inline-flex}.list-toolbar{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.list-toolbar .status-filter{margin-bottom:0}.list-search{width:240px;max-width:100%}.table{border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:12px;width:100%;overflow:hidden}.table th,.table td{text-align:left;border-bottom:1px solid var(--border);padding:10px 14px;font-size:14px}.table th{color:var(--muted);text-transform:uppercase;white-space:nowrap;font-size:12px;font-weight:600}.table th.text-right,.table td.text-right{text-align:right}.row-actions{gap:8px;display:flex}.section-heading{margin:32px 0 16px;font-size:18px}.filters-row{flex-wrap:wrap;align-items:end;gap:12px;margin-bottom:24px;display:flex}.reports-filters-row{flex-wrap:nowrap;padding-bottom:2px;overflow-x:auto}.reports-filters-row>*{flex-shrink:0}.stat-row{gap:16px;margin-bottom:24px;display:flex}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex:1;padding:16px 20px}.stat-label{color:var(--muted);font-size:13px}.stat-value{font-size:24px;font-weight:700}.two-col{grid-template-columns:1fr 1fr;gap:24px;display:grid}.cal-scroll{border:1px solid var(--border);background:var(--surface);border-radius:12px;height:600px;margin-bottom:24px;overflow:auto}.cal-grid{min-width:760px;display:flex}.cal-hour-col{border-right:1px solid var(--border);flex-shrink:0;width:56px}.cal-corner{background:var(--surface);z-index:6;border-bottom:1px solid var(--border);height:48px;position:sticky;top:0}.cal-hour-label{color:var(--muted);text-align:right;padding-right:8px;font-size:11px;transform:translateY(-6px)}.cal-day-col{border-right:1px solid var(--border);flex:1;min-width:100px}.cal-day-col:last-child{border-right:none}.cal-day-header{background:var(--surface);z-index:5;border-bottom:1px solid var(--border);text-align:center;height:48px;padding-top:6px;font-size:13px;font-weight:600;position:sticky;top:0}.cal-day-body{cursor:crosshair;-webkit-user-select:none;user-select:none;touch-action:none;position:relative}.cal-hour-line{border-top:1px solid var(--border);pointer-events:none;position:absolute;left:0;right:0}.cal-entry-wrap{position:absolute;left:4px;right:4px}.cal-entry-wrap.resizing{z-index:15}.cal-entry-wrap.moving{z-index:15;pointer-events:none}.cal-entry-wrap.moving .cal-entry{opacity:.85;cursor:grabbing;box-shadow:0 6px 16px #0000004d}.cal-entry{color:#fff;text-align:left;cursor:grab;touch-action:none;border:none;border-radius:6px;width:100%;height:100%;padding:3px 6px;font-size:12px;overflow:hidden;box-shadow:0 1px 2px #00000026}.cal-entry:active{cursor:grabbing}.cal-entry-project{white-space:nowrap;text-overflow:ellipsis;font-weight:600;display:block;overflow:hidden}.cal-entry-description{color:#ffffffd9;white-space:nowrap;text-overflow:ellipsis;font-size:11px;display:block;overflow:hidden}.cal-resize-handle{cursor:ns-resize;opacity:0;touch-action:none;height:7px;position:absolute;left:0;right:0}.cal-entry-wrap:hover .cal-resize-handle,.cal-entry-wrap.resizing .cal-resize-handle{opacity:1}.cal-resize-handle:after{content:"";background:#ffffffd9;border-radius:2px;width:24px;height:3px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.cal-tooltip{z-index:50;background:var(--text);color:#fff;pointer-events:none;border-radius:6px;max-width:280px;padding:6px 10px;font-size:12px;line-height:1.5;position:fixed;transform:translate(-50%,calc(-100% - 8px));box-shadow:0 4px 12px #00000040}.cal-resize-top{top:-3px}.cal-resize-bottom{bottom:-3px}@media (pointer:coarse){.cal-resize-handle{height:28px}.cal-resize-top{top:-14px}.cal-resize-bottom{bottom:-14px}}.cal-ghost{border:1px dashed var(--primary);pointer-events:none;background:#4f46e533;border-radius:6px;position:absolute;left:4px;right:4px}.cal-popup{z-index:20;background:var(--surface);border:1px solid var(--border);border-radius:8px;min-width:200px;padding:10px;position:absolute;left:4px;right:-140px;box-shadow:0 8px 20px #00000026}.cal-popup form{flex-direction:column;gap:6px;display:flex}.cal-popup-title{margin-bottom:2px;font-weight:600}.cal-popup-actions{justify-content:space-between;margin-top:4px;display:flex}.cal-popup-actions-right{gap:8px;display:flex}.centered{min-height:100vh;color:var(--muted);justify-content:center;align-items:center;display:flex}
