*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-page-bg: #F8F7F5;--color-surface: #FFFFFF;--color-surface-secondary: #F2F0EC;--color-border: rgba(60,50,40,.1);--color-border-secondary: #B4B2A9;--color-text-primary: #2C2C2A;--color-text-secondary: #5F5E5A;--color-text-tertiary: #888780;--brand-primary: #9B7080;--brand-fg: #6B4A58;--brand-bg-tint: #F2EAEE;--brand-decorative: #9B7080;--color-success-bg: #E1F5EE;--color-success-fg: #085041;--color-success-dot: #0F6E56;--color-warning-bg: #FAEEDA;--color-warning-fg: #633806;--color-warning-border: #EF9F27;--color-warning-strong: #412402;--color-flagged-bg: #FAECE7;--color-flagged-fg: #993C1D;--color-flagged-border: #F0997B;--color-flagged-edge: #D85A30;--color-flagged-strong: #4A1B0C;--color-resolved-fg: #4C6146;--color-destructive: #791F1F;--text-danger: var(--color-destructive);--border-danger: #F09595;--color-info-bg: #E6F1FB;--color-info-fg: #0C447C;--color-info-border: #85B7EB;--color-neutral-bg: var(--color-surface-secondary);--color-neutral-fg: var(--color-text-secondary);--color-neutral-border: var(--color-border);--chart-regular: var(--brand-primary);--chart-regular-fallback: #5F6B7A;--chart-overtime: #BA7517;--chart-leave: #97C459;--color-avatar-sage-bg: #E3EBDF;--color-avatar-sage-fg: #4C6146;--color-avatar-sage-border: #97C459;--color-avatar-periwinkle-bg: #E0E5EF;--color-avatar-periwinkle-fg: #48546B;--color-avatar-periwinkle-border: #94A3C4;--color-avatar-lavender-bg: #E4E1EE;--color-avatar-lavender-fg: #524A78;--color-avatar-lavender-border: #B0A3D4;--color-avatar-dustyrose-bg: #EDDFE0;--color-avatar-dustyrose-fg: #7E5158;--color-avatar-dustyrose-border: #C99598;--color-avatar-oat-bg: #EDE7DC;--color-avatar-oat-fg: #6B5B3E;--color-avatar-oat-border: #C7B78E;--color-avatar-honey-bg: #EFE7CE;--color-avatar-honey-fg: #75601F;--color-avatar-honey-border: #C9A94D;--color-followup-helper-text: #9A6B4A;--color-break-bg: #E3EBDF;--color-break-fg: #4C6146;--color-break-border: #97C459;--color-charcoal: #2C2C2A;--text-xs: 12px;--text-sm: 13px;--text-base: 14px;--text-lg: 16px;--text-xl: 20px;--text-display: 36px;--font-sans: "Inter", system-ui, sans-serif;--font-display: "Lora", Georgia, serif;--radius-md: 8px;--radius-lg: 12px;--radius-pill: 999px;--admin-content-width: 930px;--color-accent: var(--brand-primary);--accent: var(--brand-primary);--accent-light:var(--brand-bg-tint);--accent-text: var(--brand-fg);--brand: var(--brand-primary);--brand-dark: var(--brand-fg);--brand-light: var(--brand-bg-tint);--sidebar-bg: var(--color-surface);--sidebar-txt: var(--color-text-secondary);--sidebar-act: var(--color-page-bg);--surface: var(--color-surface);--surface-2: var(--color-page-bg);--border: rgba(60,50,40,.1);--text: var(--color-text-primary);--text-muted: var(--color-text-tertiary);--success: var(--color-success-dot);--warning: var(--color-warning-fg);--danger: var(--color-destructive);--radius: var(--radius-lg);--shadow: 0 1px 3px rgba(44,44,42,.06), 0 1px 2px rgba(44,44,42,.04);--shadow-md: 0 4px 16px rgba(44,44,42,.08)}@font-face{font-family:Lora;src:url(/fonts/Lora.ttf) format("truetype-variations");font-weight:400 700;font-style:normal;font-display:swap}html,body,#root{height:100%;font-family:Inter,system-ui,sans-serif}body{background:var(--surface-2);color:var(--text);font-size:var(--text-base);line-height:1.6}.page-title{font-family:var(--font-display);font-size:var(--text-display);font-weight:500;letter-spacing:-.02em;line-height:1.3;color:var(--color-text-primary);margin:0}.card-heading{font-family:var(--font-sans);font-size:18px;font-weight:500;letter-spacing:-.01em;line-height:1.3;color:var(--color-text-primary)}.layout{display:flex;height:100vh;overflow:hidden}.sidebar{width:240px;flex-shrink:0;background:var(--color-surface);color:var(--color-text-secondary);display:flex;flex-direction:column;padding:0;overflow-y:auto;border-right:1px solid var(--color-border)}.sidebar-logo{padding:14px 8px 18px;border-bottom:1px solid rgba(60,50,40,.06)}.sidebar-logo img{height:40px;max-height:40px;max-width:160px;width:auto;display:block;object-fit:contain}.sidebar-nav{padding:14px 0 0;flex:1}.sidebar-group{margin-top:14px}.sidebar-item{display:flex;align-items:center;gap:10px;padding:6px 10px;min-height:32px;text-decoration:none;color:#7a746c;font-size:13.5px;font-weight:400;white-space:nowrap;border-radius:6px;transition:background .12s,color .12s;margin:0 0 1px}.sidebar-item svg{width:17px;height:17px;flex-shrink:0;color:#7a746c;transition:color .12s}.sidebar-item:hover{background:#3c32280d;color:var(--color-text-primary)}.sidebar-item:hover svg{color:var(--color-text-primary)}.sidebar-item.active{background:#3c322817;color:var(--color-text-primary);font-weight:500}.sidebar-item.active svg{color:var(--color-text-primary)}.sidebar-badge{margin-left:auto;color:var(--brand-primary);font-size:11.5px;font-weight:500;font-variant-numeric:tabular-nums;line-height:1}.sidebar-bottom{margin-top:auto;padding:10px 10px 6px;border-top:1px solid rgba(60,50,40,.06);display:flex;align-items:center;gap:8px;position:relative}.sidebar-user-info{min-width:0;flex:1}.sidebar-user-name{font-size:var(--text-xs);font-weight:500;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user-role{font-size:10px;color:var(--color-text-tertiary);text-transform:capitalize}.sidebar-dots-btn{background:none;border:none;padding:4px;cursor:pointer;color:#7a746c;border-radius:4px;display:flex;align-items:center;flex-shrink:0;transition:background .12s,color .12s}.sidebar-dots-btn:hover{background:#3c322812;color:var(--color-text-primary)}.sidebar-menu{position:absolute;bottom:calc(100% + 4px);right:10px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;box-shadow:var(--shadow-md);min-width:140px;padding:4px;z-index:100}.sidebar-menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;background:none;border:none;border-radius:6px;font-size:var(--text-sm);color:var(--color-text-secondary);cursor:pointer;text-align:left;transition:background .12s,color .12s}.sidebar-menu-item:hover{background:var(--color-page-bg);color:var(--color-text-primary)}.sidebar-menu-item svg{width:15px;height:15px;flex-shrink:0}.sidebar-footer{padding:6px 10px 12px;text-align:center;font-size:9px;color:var(--color-text-tertiary);opacity:.6}.sidebar-section{padding:4px 0}.sidebar-divider,.sidebar-label{display:none}.main{flex:1;display:flex;flex-direction:column;overflow:hidden}.topbar{background:var(--surface-2);padding:32px 28px 0;flex-shrink:0}.topbar-inner{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;max-width:1400px;margin-left:auto;margin-right:auto}.topbar-title{font-family:var(--font-display);font-size:var(--text-display);font-weight:500;letter-spacing:-.02em;line-height:1.3;color:var(--color-text-primary)}.topbar-subtitle{font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:4px}.topbar-actions{display:flex;align-items:center;gap:8px;margin-left:auto}.content{flex:1;overflow-y:auto;padding:32px 28px}.content>*{max-width:1400px;margin-left:auto;margin-right:auto}.period-dropdown-btn{color:var(--color-text-primary)}.period-dropdown-btn:hover{background:#3c32280d!important}.period-dropdown-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:6px}.period-stepper-btn{color:var(--color-text-secondary)}.period-stepper-btn:not(:disabled):hover{background:#3c32280d!important;color:var(--color-text-primary)}.period-stepper-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:6px}.period-picker-search{outline:none;border:none;background:transparent;font-size:13px;color:var(--color-text-primary);width:100%}.period-picker-search::placeholder{color:var(--color-text-tertiary)}.period-picker-row{display:flex;align-items:baseline;justify-content:space-between;width:100%;padding:9px 12px;border:none;background:transparent;cursor:pointer;text-align:left;border-radius:6px}.period-picker-row:hover{background:#3c32280d}.period-picker-row.selected,.period-picker-row.keyboard-focused{background:#3c322812}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px}.clock-in-btn{width:100%;padding:16px;border-radius:10px;background:transparent;border:1px solid rgba(0,0,0,.2);color:var(--color-text-primary);font-size:15px;font-weight:500}.clock-in-btn:hover:not(:disabled){background:var(--color-page-bg)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;border:none;border-radius:8px;font-size:var(--text-sm);font-weight:500;cursor:pointer;line-height:1;box-sizing:border-box;text-decoration:none;transition:background .12s,transform .06s,box-shadow .12s;-webkit-appearance:none;-moz-appearance:none;appearance:none;box-shadow:none}.btn:active{transform:scale(.97)}.btn-primary{background:var(--color-charcoal);color:#fff;border-radius:var(--radius-pill)}.btn-success{border-radius:var(--radius-pill)}.btn-primary:hover{background:#333330}.btn-hero{background:var(--accent-light);color:var(--color-charcoal);border:.5px solid var(--accent)}.btn-hero:hover{background:color-mix(in srgb,var(--accent) 22%,var(--accent-light))}.btn-success{background:var(--success);color:#fff}.btn-success:hover{background:#22875a}.btn-danger{background:#fcebeb;color:#791f1f;border:.5px solid #F09595}.btn-danger:hover{background:#f9dbdb}.btn-outline{background:transparent;color:var(--color-charcoal);border:.5px solid #B4B2A9}.btn-outline:hover{background:var(--surface-2)}.btn-ghost{background:transparent;color:var(--text-muted)}.btn-ghost:hover{background:var(--surface-2);color:var(--text)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-sm{padding:6px 12px;font-size:var(--text-sm);border-radius:8px}.btn-lg{padding:13px 28px;font-size:15px;font-weight:600}button:focus,button:focus-visible{outline:none}.form-group{margin-bottom:16px}label{display:block;font-size:var(--text-sm);font-weight:600;margin-bottom:6px;color:var(--text);letter-spacing:.01em}input:not([type=checkbox]):not([type=radio]),select,textarea{width:100%;max-width:100%;box-sizing:border-box;padding:8px 12px;border:.5px solid var(--border);border-radius:8px;font-size:var(--text-sm);font-family:inherit;color:var(--text);background:var(--surface);outline:none;transition:border-color .12s,box-shadow .12s}input:not([type=checkbox]):not([type=radio]):focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #e5aabb26}input[type=checkbox],input[type=radio]{width:14px;height:14px;margin:0;cursor:pointer}.hairline-search-input:focus{border-color:var(--color-border);box-shadow:none}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}th{text-align:left;padding:11px 14px;background:var(--surface-2);color:var(--text-muted);font-size:11px;font-weight:700;border-bottom:1px solid var(--border)}td{padding:13px 14px;border-bottom:1px solid var(--border);vertical-align:middle}.timecard-table td,.timecard-table th{padding:4px 8px!important;line-height:1.2}.timecard-table tr:hover td{background:inherit}.tc-minimal td{border-bottom:none;padding:2px 6px;vertical-align:middle}.tc-minimal th{border-bottom:none;background:transparent}.tc-minimal{border:none}.tc-edit-pencil{opacity:0;transition:opacity .12s ease}.tc-punch-row:hover .tc-edit-pencil{opacity:1}tr:last-child td{border-bottom:none}tr:hover td{background:#fdfcfb}.clock-widget{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:32px 28px;text-align:center;min-width:280px;box-shadow:var(--shadow)}.clock-date{font-size:13px;color:var(--text-muted);margin-bottom:20px;margin-top:4px}.clock-status{font-size:var(--text-sm);font-weight:600;margin-bottom:8px;padding:4px 16px;border-radius:6px;display:inline-block}.clock-status.in{background:#2d9e6b1f;color:#1e8a5a}.clock-status.out{background:var(--surface-2);color:var(--text-muted);border:1px solid var(--border)}.clock-elapsed{font-size:13px;color:var(--text-muted);margin-bottom:24px;min-height:20px}.clock-btn{width:100%;font-size:14px;padding:12px;font-weight:600}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px;margin-bottom:24px}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}.stat-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.stat-value{font-size:28px;font-weight:700;letter-spacing:-.5px;margin-top:6px;color:var(--text)}.stat-sub{font-size:12px;color:var(--text-muted);margin-top:3px}.flex-row{display:flex;align-items:center;gap:10px}.flex-between{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px}.mt-4{margin-top:16px}.mt-6{margin-top:24px}.mb-4{margin-bottom:20px}.text-muted{color:var(--text-muted)}.text-sm{font-size:var(--text-sm)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}.num{font-variant-numeric:tabular-nums}.login-page{min-height:100vh;display:flex;align-items:flex-start;justify-content:center;background:var(--color-page-bg);padding-top:44px}.login-card{background:var(--color-surface);border-radius:16px;padding:20px 24px 28px;max-width:380px;width:100%;margin:0 auto;box-shadow:var(--shadow-md);border:.5px solid var(--color-border)}.login-logo{display:flex;justify-content:center;margin-bottom:24px;margin-top:0}.login-logo img{height:56px;width:auto}.login-title{font-family:var(--font-display);font-size:56px;font-weight:400;color:var(--color-text-primary);text-align:center;letter-spacing:-.01em;margin:0 0 32px;line-height:1}.login-subtitle{text-align:center;font-size:14px;color:var(--text-muted);margin-bottom:28px}.forgot-link{background:none;border:none;color:var(--brand-primary);font-weight:500;font-size:14px;cursor:pointer;display:block;margin:16px auto 0;text-align:center}.error-box{background:#fee2e2;border:1px solid #fca5a5;border-radius:7px;padding:10px 14px;font-size:13px;color:#991b1b;margin-bottom:16px}.export-number{text-align:right;font-variant-numeric:tabular-nums}.total-row td{font-weight:700;background:var(--surface-2);border-top:2px solid var(--border)}.spinner{display:flex;justify-content:center;padding:48px;color:var(--text-muted)}@media (max-width: 640px){.sidebar{width:200px}.grid-2,.grid-3{grid-template-columns:1fr}.content{padding:20px}}@media print{body{background:#fff}.sidebar,.topbar,.no-print{display:none!important}.content{padding:0;margin:0}.print-view{box-shadow:none!important;border:none!important;border-radius:0!important}}
