:root{--color-primary: #00ACD7;--color-primary-light: #E0F6FC;--color-primary-dark: #0095BB;--color-success: #1D9E75;--color-success-light: #E1F5EE;--color-warning: #BA7517;--color-warning-light: #FAEEDA;--color-danger: #E24B4A;--color-danger-light: #FCEBEB;--color-info: #378ADD;--color-info-light: #E6F1FB;--color-bg: #F4F8FB;--color-surface: #FFFFFF;--color-surface-2: #E8EEF2;--color-border: #DDE8EF;--color-border-strong: #B8CDD8;--color-text: #111111;--color-text-secondary: #606060;--color-text-tertiary: #9ca3af;--color-text-inverse: #FFFFFF;--sidebar-width: 240px;--topbar-height: 56px;--border-radius-sm: 4px;--border-radius-md: 8px;--border-radius-lg: 12px;--border-radius-xl: 16px;--shadow-sm: 0 1px 3px rgba(0,172,215,.06), 0 1px 2px rgba(0,0,0,.04);--shadow-md: 0 4px 20px rgba(0,172,215,.1), 0 2px 6px rgba(0,0,0,.05);--shadow-lg: 0 8px 40px rgba(0,172,215,.12), 0 2px 8px rgba(0,0,0,.06);--font-sans: "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "Fira Code", "Courier New", monospace;--transition: .15s ease}[data-theme=dark] input[type=date],[data-theme=dark] input[type=time],[data-theme=dark] input[type=datetime-local]{color-scheme:dark}[data-theme=dark]{--color-bg: #0d1117;--color-surface: #151c26;--color-surface-2: #1c2535;--color-border: #243045;--color-border-strong: #334460;--color-text: #e4edf5;--color-text-secondary: #8098b0;--color-text-tertiary: #4d6278;--color-text-inverse: #151c26;--color-primary-light: rgba(0, 172, 215, .14);--color-success-light: #0b2e22;--color-warning-light: #2e1f04;--color-danger-light: #2e1010;--color-info-light: #0a1e30;--shadow-sm: 0 1px 2px rgba(0,0,0,.4);--shadow-md: 0 2px 10px rgba(0,0,0,.5);--shadow-lg: 0 8px 32px rgba(0,0,0,.6)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased}html{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}body{font-family:var(--font-sans);font-size:.9375rem;line-height:1.6;color:var(--color-text);background:var(--color-bg)}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font-family:inherit}input,textarea,select{font-family:inherit;font-size:inherit}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-tertiary)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-sm{font-size:.8125rem}.text-xs{font-size:.75rem}.text-muted{color:var(--color-text-secondary)}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:20px;font-size:.75rem;font-weight:500;white-space:nowrap}.badge-success{background:var(--color-success-light);color:var(--color-success)}.badge-warning{background:var(--color-warning-light);color:var(--color-warning)}.badge-danger{background:var(--color-danger-light);color:var(--color-danger)}.badge-info{background:var(--color-info-light);color:var(--color-info)}.badge-neutral{background:var(--color-surface-2);color:var(--color-text-secondary)}.badge-primary{background:var(--color-primary-light);color:var(--color-primary)}.app-shell{display:flex;height:100dvh;overflow:hidden}.page-content{flex:1;min-width:0;margin-left:var(--sidebar-width);height:100dvh;display:flex;flex-direction:column;overflow:hidden}.page-body{flex:1;min-height:0;padding:28px 32px;max-width:1400px;width:100%;overflow-y:auto}.page-body--flush{padding:0;max-width:none;overflow:hidden}.page-header{margin-bottom:24px;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}.page-title{font-size:1.375rem;font-weight:600;color:var(--color-text);line-height:1.3}.page-subtitle{font-size:.875rem;color:var(--color-text-secondary);margin-top:2px}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--border-radius-lg);padding:20px 24px}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;padding-bottom:14px;border-bottom:1px solid var(--color-border)}.card-title{font-size:.9375rem;font-weight:600;color:var(--color-text)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--border-radius-lg);padding:20px}.stat-label{font-size:.8125rem;color:var(--color-text-secondary);font-weight:500;text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px}.stat-value{font-size:1.75rem;font-weight:700;color:var(--color-text);line-height:1}.stat-sub{font-size:.8125rem;color:var(--color-text-tertiary);margin-top:4px}.table-wrapper{overflow-x:auto;border-radius:var(--border-radius-lg);border:1px solid var(--color-border)}table{width:100%;border-collapse:collapse;font-size:.875rem}thead th{background:var(--color-surface-2);padding:11px 16px;text-align:left;font-size:.75rem;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;border-bottom:1px solid var(--color-border)}tbody td{padding:13px 16px;border-bottom:1px solid var(--color-border);color:var(--color-text);vertical-align:middle}tbody tr:last-child td{border-bottom:none}tbody tr:hover td{background:var(--color-bg)}.form-group{margin-bottom:16px}.form-label{display:block;font-size:.875rem;font-weight:500;color:var(--color-text);margin-bottom:6px}.form-label .required{color:var(--color-danger);margin-left:2px}.form-input,.form-select,.form-textarea{width:100%;padding:9px 12px;border:1px solid var(--color-border-strong);border-radius:var(--border-radius-md);background:var(--color-surface);color:var(--color-text);font-size:.9375rem;transition:border-color var(--transition),box-shadow var(--transition);outline:none}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #00acd726}.form-input::placeholder,.form-textarea::placeholder{color:var(--color-text-tertiary)}.form-textarea{resize:vertical;min-height:80px}.form-error{font-size:.8125rem;color:var(--color-danger);margin-top:4px}.form-hint{font-size:.8125rem;color:var(--color-text-secondary);margin-top:4px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 18px;border-radius:var(--border-radius-md);font-size:.9rem;font-weight:500;border:1px solid transparent;transition:all var(--transition);white-space:nowrap;line-height:1}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-dark);border-color:var(--color-primary-dark)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border-strong)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-2)}.btn-danger{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.btn-danger:hover:not(:disabled){background:#c73b3a}.btn-ghost{background:transparent;color:var(--color-text-secondary);border-color:transparent}.btn-ghost:hover:not(:disabled){background:var(--color-surface-2);color:var(--color-text)}.btn-sm{padding:6px 12px;font-size:.8125rem}.btn-lg{padding:12px 24px;font-size:1rem}.btn-full{width:100%}.toggle-wrap{display:flex;align-items:center;gap:10px;cursor:pointer}.toggle{position:relative;width:36px;height:20px}.toggle input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--color-border-strong);border-radius:20px;transition:background var(--transition)}.toggle-slider:before{content:"";position:absolute;width:14px;height:14px;left:3px;top:3px;background:#fff;border-radius:50%;transition:transform var(--transition)}.toggle input:checked+.toggle-slider{background:var(--color-primary)}.toggle input:checked+.toggle-slider:before{transform:translate(16px)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#00000073;display:flex;align-items:center;justify-content:center;padding:16px}.modal{background:var(--color-surface);border-radius:var(--border-radius-xl);box-shadow:var(--shadow-lg);width:100%;max-width:520px;max-height:90vh;overflow-y:auto}.modal-header{padding:20px 24px 16px;border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between}.modal-title{font-size:1.0625rem;font-weight:600}.modal-body{padding:20px 24px}.modal-footer{padding:16px 24px 20px;border-top:1px solid var(--color-border);display:flex;justify-content:flex-end;gap:10px}.empty-state{text-align:center;padding:48px 24px;color:var(--color-text-secondary)}.empty-state-icon{font-size:2.5rem;margin-bottom:12px;opacity:.4}.empty-state-title{font-weight:600;color:var(--color-text);margin-bottom:6px}.empty-state-text{font-size:.875rem}@keyframes spin{to{transform:rotate(360deg)}}.spinner{width:20px;height:20px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .7s linear infinite;display:inline-block}.loading-page{display:flex;align-items:center;justify-content:center;min-height:100vh;flex-direction:column;gap:16px;color:var(--color-text-secondary)}.alert{padding:12px 16px;border-radius:var(--border-radius-md);font-size:.875rem;border:1px solid transparent;margin-bottom:16px}.alert-danger{background:var(--color-danger-light);border-color:var(--color-danger);color:var(--color-danger)}.alert-success{background:var(--color-success-light);border-color:var(--color-success);color:var(--color-success)}.alert-warning{background:var(--color-warning-light);border-color:var(--color-warning);color:var(--color-warning)}.alert-info{background:var(--color-info-light);border-color:var(--color-info);color:var(--color-info)}.divider{border:none;border-top:1px solid var(--color-border);margin:20px 0}.sidebar{transition:transform .25s ease}.sidebar-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:99;cursor:pointer}.menu-toggle{display:none}@media (max-width: 1024px){.sidebar{transform:translate(-100%);box-shadow:none}.sidebar--open{transform:translate(0);box-shadow:var(--shadow-lg)}.menu-toggle{display:flex}.page-content{margin-left:0;overflow-x:hidden;max-width:100vw}.page-body{padding:16px}.form-row{grid-template-columns:1fr}.stat-grid{grid-template-columns:1fr 1fr}.page-header{flex-direction:column;align-items:stretch}.page-header .btn{width:100%;justify-content:center}.table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch}.card{padding:14px 16px}.tabs{overflow-x:auto;-webkit-overflow-scrolling:touch;flex-wrap:nowrap}.hide-mobile{display:none}}@media (max-width: 1024px){.time-log-body{flex-direction:column}.time-log-grid-panel{width:100%!important;border-right:none!important;border-bottom:1px solid var(--color-border);height:320px;flex-shrink:0!important;transition:height .25s ease}.time-log-form-panel{flex:1;min-height:0}.time-log-body:has(.time-log-form-panel--collapsed) .time-log-grid-panel{height:auto;flex:1}.time-log-form-panel--collapsed{flex:none!important}.time-log-form-panel--collapsed>div:first-child{padding-bottom:max(env(safe-area-inset-bottom,0px),8px)}}@media (max-width: 480px){.stat-grid{grid-template-columns:1fr}.page-title{font-size:1.125rem}.modal{margin:0;border-radius:var(--border-radius-lg) var(--border-radius-lg) 0 0}.modal-overlay{align-items:flex-end}}@media (max-height: 500px) and (max-width: 1024px){.time-log-top-bar{padding:6px 12px!important}.time-log-top-bar h1{display:none}.time-log-top-bar p{margin:0;font-size:11px!important}.time-log-day-strip>div{padding:4px 2px!important}.time-log-day-strip>div>div:first-child{font-size:8px!important}.time-log-day-strip>div>div:nth-child(2){font-size:13px!important;margin-bottom:2px!important}.time-log-day-strip>div>div:last-child{margin-top:1px!important}.time-log-day-header{padding:4px 12px!important}.time-log-day-header span{font-size:11px!important}.time-log-grid-panel{height:130px!important}.time-log-body:has(.time-log-form-panel--collapsed) .time-log-grid-panel{height:auto!important;flex:1}}
