:root{--color-bg: #ffffff;--color-surface: #f9fafb;--color-surface-2: #f3f4f6;--color-surface-3: #e5e7eb;--color-border: #e5e7eb;--color-border-dark: #d1d5db;--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-primary-light: #eff6ff;--color-primary-border: #bfdbfe;--color-accent: #059669;--color-accent-light: #ecfdf5;--color-accent-border: #a7f3d0;--color-warning: #d97706;--color-warning-light: #fffbeb;--color-danger: #dc2626;--color-danger-light: #fef2f2;--color-danger-border: #fecaca;--color-text: #111827;--color-text-secondary: #374151;--color-text-muted: #6b7280;--color-text-placeholder: #9ca3af;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .05);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .08), 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 4px 6px rgba(0, 0, 0, .07), 0 2px 4px rgba(0, 0, 0, .04);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .08), 0 4px 6px rgba(0, 0, 0, .04);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-size-xs: 12px;--font-size-sm: 13px;--font-size-base: 15px;--font-size-lg: 17px;--font-size-xl: 20px;--font-size-2xl: 24px;--font-size-3xl: 30px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-base: 1.5;--transition-fast: .15s ease;--transition-base: .2s ease;--navbar-height: 60px;--page-max-width: 480px;--page-padding: var(--space-4);--header-height: 52px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{height:100%;-webkit-tap-highlight-color:transparent}body{height:100%;font-family:var(--font-family);font-size:var(--font-size-base);color:var(--color-text);background:var(--color-bg);line-height:var(--line-height-base);-webkit-font-smoothing:antialiased;overflow-x:hidden}#app{height:100dvh;display:flex;flex-direction:column;max-width:var(--page-max-width);margin:0 auto;background:var(--color-bg);overflow:hidden;border-left:1px solid var(--color-border);border-right:1px solid var(--color-border)}#page-container{flex:1;overflow-y:auto;overflow-x:hidden;padding-bottom:var(--navbar-height);background:var(--color-bg)}#page-container::-webkit-scrollbar{width:4px}#page-container::-webkit-scrollbar-track{background:transparent}#page-container::-webkit-scrollbar-thumb{background:var(--color-border-dark);border-radius:var(--radius-full)}.page{min-height:100%;animation:pageEnter .18s ease}@keyframes pageEnter{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.page-header{position:sticky;top:0;z-index:10;background:var(--color-bg);border-bottom:1px solid var(--color-border);padding:0 var(--page-padding);display:flex;align-items:center;justify-content:space-between;height:var(--header-height)}.page-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-text)}.page-content{padding:var(--page-padding)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border:1px solid transparent;border-radius:var(--radius-md);font-family:var(--font-family);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast);text-decoration:none;white-space:nowrap;user-select:none;-webkit-user-select:none;line-height:1}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.4;pointer-events:none}.btn-primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn-primary:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.btn-accent{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.btn-accent:hover{opacity:.9}.btn-ghost{background:transparent;color:var(--color-text-secondary);border-color:var(--color-border-dark)}.btn-ghost:hover{background:var(--color-surface-2)}.btn-danger{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.btn-danger:hover{opacity:.9}.btn-warning{background:var(--color-warning);color:#fff;border-color:var(--color-warning)}.btn-sm{min-height:40px;padding:6px 12px;font-size:var(--font-size-sm);border-radius:var(--radius-sm)}.badge .btn-sm{min-height:20px}.btn-lg{padding:14px var(--space-6);font-size:var(--font-size-lg);border-radius:var(--radius-lg);font-weight:var(--font-weight-semibold)}.btn-full{width:100%}.btn-icon{padding:var(--space-2);border-radius:var(--radius-sm)}.quick-btns-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-2)}.quick-btn{padding:10px 4px;background:var(--color-surface);border:1px solid var(--color-border-dark);border-radius:var(--radius-md);color:var(--color-text-secondary);font-family:var(--font-family);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast);text-align:center;user-select:none;-webkit-user-select:none;line-height:1.2}.quick-btn:hover{background:var(--color-primary-light);border-color:var(--color-primary);color:var(--color-primary)}.quick-btn:active{transform:scale(.95)}.quick-btn.minus{color:var(--color-danger);border-color:var(--color-danger-border)}.quick-btn.minus:hover{background:var(--color-danger-light);border-color:var(--color-danger)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4)}.card-white{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4);box-shadow:var(--shadow-xs)}.form-group{margin-bottom:var(--space-4)}.form-label{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);margin-bottom:6px}.form-input,.form-select,.form-textarea{width:100%;padding:10px var(--space-3);background:var(--color-bg);border:1px solid var(--color-border-dark);border-radius:var(--radius-md);color:var(--color-text);font-family:var(--font-family);font-size:var(--font-size-base);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);outline:none;-moz-appearance:none;appearance:none;-webkit-appearance:none;line-height:1.4}.form-input::placeholder,.form-textarea::placeholder{color:var(--color-text-placeholder)}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #2563eb1a}.form-select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:36px;cursor:pointer}.form-textarea{resize:vertical;min-height:72px}.form-hint{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:4px}.form-error{font-size:var(--font-size-xs);color:var(--color-danger);margin-top:4px}.home-job-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2)}.home-job-card{min-height:52px;padding:10px 12px;border:1px solid var(--color-border-dark);border-radius:var(--radius-md);background:linear-gradient(180deg,var(--color-bg) 0%,var(--color-surface) 100%);text-align:left;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);transition:border-color var(--transition-fast),box-shadow var(--transition-fast),background var(--transition-fast);touch-action:manipulation}.home-job-card:hover{border-color:var(--color-primary-border)}.home-job-card.active{border-color:var(--color-primary);background:linear-gradient(180deg,#f7fbff 0%,var(--color-primary-light) 100%);box-shadow:var(--shadow-xs)}.home-job-main{min-width:0;flex:1}.home-job-title{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:var(--font-weight-semibold);color:var(--color-text)}.home-job-card.active .home-job-title{color:var(--color-primary-hover)}.home-job-dot{width:8px;height:8px;border-radius:var(--radius-full);flex-shrink:0}.home-job-meta{margin-top:2px;padding-left:14px;font-size:var(--font-size-xs);color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.home-job-card.active .home-job-meta{color:var(--color-primary)}.home-job-rate{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-accent);white-space:nowrap}.hour-display{font-size:42px;font-weight:var(--font-weight-bold);color:var(--color-text);text-align:center;line-height:1;padding:var(--space-4) 0;letter-spacing:-1px}.hour-unit{font-size:var(--font-size-xl);font-weight:var(--font-weight-normal);color:var(--color-text-muted);margin-left:4px}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);margin-bottom:var(--space-4)}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4)}.stat-label{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-bottom:4px;text-transform:uppercase;letter-spacing:.4px;font-weight:var(--font-weight-medium)}.stat-value{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-text)}.stat-primary .stat-value{color:var(--color-primary)}.stat-accent .stat-value{color:var(--color-accent)}.stat-sub{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:2px}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium)}.badge-primary{background:var(--color-primary-light);color:var(--color-primary);border:1px solid var(--color-primary-border)}.badge-accent{background:var(--color-accent-light);color:var(--color-accent);border:1px solid var(--color-accent-border)}.badge-warning{background:var(--color-warning-light);color:var(--color-warning);border:1px solid #fcd34d}.badge-danger{background:var(--color-danger-light);color:var(--color-danger);border:1px solid var(--color-danger-border)}.record-day-group{margin-bottom:var(--space-5)}.record-day-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) 0 var(--space-3);border-bottom:1px solid var(--color-border);margin-bottom:var(--space-2)}.record-day-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary)}.record-day-total{font-size:var(--font-size-sm);color:var(--color-accent);font-weight:var(--font-weight-semibold)}.record-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-3);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);margin-bottom:var(--space-2);cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast);font:inherit;color:inherit}.record-item:hover{background:var(--color-surface);border-color:var(--color-border-dark)}.record-item-info{flex:1;min-width:0}.record-item-job{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text);margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.record-item-time{font-size:var(--font-size-xs);color:var(--color-text-muted)}.record-item-hours{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-primary);white-space:nowrap}.record-item-wage{font-size:var(--font-size-xs);color:var(--color-accent);text-align:right}.record-item-actions{display:flex;gap:4px;opacity:0;transition:opacity var(--transition-fast)}.record-item:hover .record-item-actions{opacity:1}@keyframes recordHighlight{0%{background:var(--color-primary-light);border-color:var(--color-primary)}to{background:var(--color-bg);border-color:var(--color-border)}}.record-highlight{animation:recordHighlight .8s ease}.job-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);margin-bottom:var(--space-3);transition:background var(--transition-fast),box-shadow var(--transition-fast)}.job-item:hover{background:var(--color-surface);box-shadow:var(--shadow-sm)}.job-avatar{width:42px;height:42px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-base);font-weight:var(--font-weight-bold);color:#fff;flex-shrink:0}.job-info{flex:1;min-width:0}.job-name{font-weight:var(--font-weight-semibold);color:var(--color-text);margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.job-wage{font-size:var(--font-size-sm);color:var(--color-accent)}.job-deleted{opacity:.45}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}.section-title{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.4px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12) var(--space-6);text-align:center;gap:var(--space-3)}.empty-icon{font-size:40px;opacity:.35}.empty-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary)}.empty-desc{font-size:var(--font-size-sm);color:var(--color-text-muted);max-width:240px}.page-loading{padding:var(--space-4)}.loading-line,.loading-card{background:linear-gradient(90deg,var(--color-surface) 20%,var(--color-surface-2) 50%,var(--color-surface) 80%);background-size:200% 100%;animation:loadingShimmer 1.2s ease-in-out infinite}.loading-line{height:14px;border-radius:var(--radius-sm);margin-bottom:var(--space-4)}.loading-line-title{width:72px;height:22px}.loading-line-wide{width:100%;height:40px}.loading-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);margin-bottom:var(--space-3)}.loading-card{height:116px;border:1px solid var(--color-border);border-radius:var(--radius-lg)}.loading-card-tall{height:184px}@keyframes loadingShimmer{to{background-position:-200% 0}}.divider{height:1px;background:var(--color-border);margin:var(--space-4) 0}.status-bar{height:28px;display:flex;align-items:center;justify-content:center;gap:var(--space-2);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium)}.status-bar.offline{background:#fffbeb;color:var(--color-warning);border-bottom:1px solid #fcd34d}.status-bar.online{display:none}.status-dot{width:6px;height:6px;border-radius:50%;background:currentColor}#modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:100;display:flex;align-items:flex-end;justify-content:center;opacity:0;pointer-events:none;transition:opacity var(--transition-base)}#modal-overlay.active{opacity:1;pointer-events:all}.modal{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding:var(--space-6);width:100%;max-width:var(--page-max-width);max-height:85vh;overflow-y:auto;transform:translateY(16px);transition:transform var(--transition-base);box-shadow:var(--shadow-lg)}.modal[hidden]{display:none}#modal-overlay.active .modal{transform:translateY(0)}.modal-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-text);margin-bottom:var(--space-2)}.modal-desc{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-5);line-height:1.6;white-space:pre-line}.modal-error{padding:10px 12px;margin:var(--space-3) 0;border:1px solid var(--color-danger-border);border-radius:var(--radius-md);background:var(--color-danger-light);color:var(--color-danger);font-size:var(--font-size-sm)}.modal-actions{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-2)}#toast-container{position:fixed;top:var(--space-4);left:50%;transform:translate(-50%);z-index:200;display:flex;flex-direction:column;gap:var(--space-2);pointer-events:none;max-width:calc(var(--page-max-width) - 32px);width:calc(100% - 32px)}.toast{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);box-shadow:var(--shadow-md);animation:toastIn .25s ease}@keyframes toastIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes toastOut{to{opacity:0;transform:translateY(-8px)}}.toast-out{animation:toastOut .2s ease forwards}.toast-success{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0}.toast-warning{background:#fffbeb;color:#92400e;border:1px solid #fcd34d}.toast-error{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.toast-info{background:#eff6ff;color:#1e40af;border:1px solid #bfdbfe}.toast-icon{font-size:var(--font-size-base)}#navbar{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:var(--page-max-width);height:var(--navbar-height);background:var(--color-bg);border-top:1px solid var(--color-border);display:flex;align-items:stretch;z-index:50}.nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;cursor:pointer;border:none;background:none;color:var(--color-text-muted);font-family:var(--font-family);text-decoration:none;transition:color var(--transition-fast);-webkit-tap-highlight-color:transparent}.nav-item.active{color:var(--color-primary)}.nav-icon{font-size:20px}.nav-label{font-size:10px;font-weight:var(--font-weight-medium)}.settings-list{display:flex;flex-direction:column;gap:var(--space-2)}.settings-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);cursor:pointer;transition:background var(--transition-fast);width:100%;font:inherit;color:inherit;text-align:left}.settings-item:hover{background:var(--color-surface)}.settings-item-icon{font-size:20px;width:38px;height:38px;border-radius:var(--radius-md);background:var(--color-surface-2);display:flex;align-items:center;justify-content:center;flex-shrink:0}.settings-item-info{flex:1}.settings-item-title{font-weight:var(--font-weight-medium);color:var(--color-text);margin-bottom:1px}.settings-item-desc{font-size:var(--font-size-sm);color:var(--color-text-muted)}.settings-item-arrow{color:var(--color-text-muted)}.chip-tabs{display:flex;gap:var(--space-2);margin-bottom:var(--space-4);overflow-x:auto;scrollbar-width:none;padding-bottom:2px}.chip-tabs::-webkit-scrollbar{display:none}.chip-tab{flex-shrink:0;padding:6px 14px;border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;border:1px solid var(--color-border-dark);background:var(--color-bg);color:var(--color-text-muted);font-family:var(--font-family)}.chip-tab.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.minute-display{font-size:48px;font-weight:var(--font-weight-bold);color:var(--color-primary);text-align:center;line-height:1;padding:var(--space-3) 0;letter-spacing:-1px}.minute-unit{font-size:var(--font-size-xl);font-weight:var(--font-weight-normal);color:var(--color-text-muted);margin-left:4px}.view-switcher{display:flex;gap:0;margin-bottom:var(--space-4);background:var(--color-surface-2);border-radius:var(--radius-lg);padding:3px}.view-switch-btn{flex:1;min-height:40px;padding:8px 12px;border:none;border-radius:var(--radius-md);background:transparent;color:var(--color-text-muted);font-family:var(--font-family);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast);text-align:center}.view-switch-btn.active{background:var(--color-bg);color:var(--color-primary);box-shadow:var(--shadow-sm);font-weight:var(--font-weight-semibold)}.view-switch-btn:hover:not(.active){color:var(--color-text-secondary)}.hist-trend-card{margin-bottom:var(--space-3);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-bg)}.hist-trend-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:var(--space-2);gap:var(--space-2)}.hist-trend-title{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text)}.hist-trend-sub{font-size:var(--font-size-xs);color:var(--color-text-muted)}.hist-trend-canvas{position:relative;height:184px;border-radius:var(--radius-md);background:linear-gradient(180deg,#fafbfd,#f3f6fb);border:1px solid var(--color-border);overflow:hidden;padding:8px 10px 2px}.hist-trend-canvas canvas{width:100%;height:100%}.hist-trend-empty{position:absolute;top:0;right:10px;bottom:2px;left:10px;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xs);color:var(--color-text-muted);background:linear-gradient(180deg,#ffffff94,#ffffffc7);pointer-events:none}.hist-trend-axis{display:flex;justify-content:space-between;margin-top:6px;font-size:var(--font-size-xs);color:var(--color-text-muted)}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:var(--space-2)}.cal-header-cell{text-align:center;font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);padding:6px 0;text-transform:uppercase;letter-spacing:.3px}.cal-cell{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);position:relative;min-height:44px;gap:1px}.cal-cell:hover{background:var(--color-surface-2)}.cal-cell.cal-empty{cursor:default}.cal-cell.cal-empty:hover{background:transparent}.cal-cell-day{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);line-height:1}.cal-cell-hours{font-size:9px;font-weight:var(--font-weight-semibold);color:var(--color-primary);line-height:1;white-space:nowrap}.cal-cell.cal-today{outline:2px solid var(--color-primary);outline-offset:-2px}.cal-cell.cal-today .cal-cell-day{color:var(--color-primary);font-weight:var(--font-weight-bold)}.cal-cell.cal-has-record{cursor:pointer}.cal-cell.cal-has-record:hover{transform:scale(1.05);box-shadow:var(--shadow-sm)}.cal-cell.cal-selected{outline:2px solid var(--color-primary);outline-offset:-2px;background:var(--color-primary-light)!important}.cal-cell.cal-selected .cal-cell-day{color:var(--color-primary);font-weight:var(--font-weight-bold)}.flatpickr-calendar{font-family:var(--font-family)!important;border:1px solid var(--color-border-dark)!important;border-radius:var(--radius-lg)!important;box-shadow:var(--shadow-lg)!important}.flatpickr-time input{color:var(--color-text)!important}.flatpickr-day.selected{background:var(--color-primary)!important;border-color:var(--color-primary)!important}.flatpickr-day:hover{background:var(--color-primary-light)!important}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:var(--color-primary)!important}.text-muted{color:var(--color-text-muted)}.text-secondary{color:var(--color-text-secondary)}.text-accent{color:var(--color-accent)}.text-primary{color:var(--color-primary)}.text-danger{color:var(--color-danger)}.text-sm{font-size:var(--font-size-sm)}.text-xs{font-size:var(--font-size-xs)}.text-bold{font-weight:var(--font-weight-bold)}.text-semibold{font-weight:var(--font-weight-semibold)}.text-center{text-align:center}.mt-1{margin-top:var(--space-1)}.mt-2{margin-top:var(--space-2)}.mt-3{margin-top:var(--space-3)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mb-2{margin-bottom:var(--space-2)}.mb-3{margin-bottom:var(--space-3)}.mb-4{margin-bottom:var(--space-4)}.flex{display:flex}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}:where(button,a,input,select,textarea):focus-visible{outline:3px solid rgba(37,99,235,.35);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@supports (padding: env(safe-area-inset-bottom)){#navbar{padding-bottom:env(safe-area-inset-bottom);height:calc(var(--navbar-height) + env(safe-area-inset-bottom))}#page-container{padding-bottom:calc(var(--navbar-height) + env(safe-area-inset-bottom))}}.entry-fields{border:0;padding:0;margin:16px 0;min-width:0}.entry-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-3)}.entry-columns .form-input{min-width:0;width:100%}.entry-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:12px 0}.entry-actions .btn{min-height:44px}.notice{padding:14px;margin:12px 0;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);line-height:1.65;overflow-wrap:anywhere}.notice a{color:var(--color-primary);text-decoration:underline}.pending-record{padding:14px 0;border-top:1px solid var(--color-border);overflow-wrap:anywhere}.pending-record p{margin:6px 0}.table-scroll{overflow-x:auto}.recovery-table{border-collapse:collapse;width:100%;font-size:13px}.recovery-table td,.recovery-table th{text-align:left;padding:8px 5px;border-bottom:1px solid var(--color-border);overflow-wrap:anywhere}.recovery-table th{font-weight:600}.form-error:empty{margin:0}#home-draft-status{overflow-wrap:anywhere}#home-feedback[hidden]{display:none}#update-notice{flex:0 0 auto;margin:8px var(--page-padding);max-height:40dvh;overflow-y:auto;background:var(--color-bg);box-shadow:var(--shadow-sm)}#update-notice .update-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}@media(max-width:360px){.entry-columns{grid-template-columns:minmax(0,1fr)}}.status-bar{flex-shrink:0;height:auto;min-height:28px;padding:4px 10px;flex-wrap:wrap;line-height:1.5}.status-bar a{color:inherit;text-decoration:underline}.schedule-page{background:#f5f7fb;color:#10152c}.schedule-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:24px 16px 14px}.schedule-header h1{font-size:23px;line-height:1.4;font-weight:750}.schedule-header p{margin-top:2px;font-size:12px;color:#737b8c}.schedule-page .page-content{padding:0 16px 24px}.schedule-refresh{flex-shrink:0;min-height:40px;padding:9px 13px;gap:6px;border:1px solid #d2dced;background:#ffffffb3;color:#202a40;font-size:13px;border-radius:9px}.schedule-refresh:hover{background:#eaf1ff}.schedule-refresh:disabled{opacity:.65;cursor:wait}.schedule-refresh .schedule-icon{color:#1762e9}.schedule-days{display:grid;gap:10px}.schedule-day{position:relative;isolation:isolate;overflow:hidden;padding:11px 16px 10px;border:1px solid #edf0f5;border-radius:12px;background:#fff;box-shadow:0 2px 5px #20366106}.schedule-day h2{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:7px;font-size:17px;line-height:1.4;font-weight:700;font-variant-numeric:tabular-nums}.schedule-weekday{padding:3px 10px;border-radius:10px;background:#f5f6f9;color:#525c70;font-size:12px;font-weight:400}.schedule-saturday{color:#2463d4;background:#eaf1ff}.schedule-sunday{color:#db485d;background:#fff0f2}.schedule-icon{width:19px;height:19px;flex-shrink:0}.schedule-icon-break,.schedule-icon-empty{color:#42ab73}.schedule-icon-hours{color:#ed9632}.schedule-icon-missing{color:#828b9f}.schedule-timeline{display:grid;grid-template-columns:66px minmax(0,1fr) 66px;align-items:end;gap:4px;padding:0 0 10px}.schedule-endpoint{display:flex;flex-direction:column;padding-bottom:1px}.schedule-endpoint strong{font-size:20px;line-height:1.15;letter-spacing:-.5px;font-variant-numeric:tabular-nums}.schedule-endpoint span{margin-top:3px;font-size:12px;color:#7b8394}.schedule-end{text-align:right}.schedule-track{position:relative;height:69px}.schedule-break-label{position:absolute;top:0;left:50%;transform:translate(-50%);display:flex;align-items:flex-start;justify-content:center;gap:4px;width:max-content;max-width:100%;padding:4px 7px;border-radius:9px;background:#eaf7ee;color:#268356;text-align:center;font-size:11px;line-height:1.35;font-variant-numeric:tabular-nums}.schedule-break-label .schedule-icon{width:14px;height:14px;margin-top:1px;color:inherit}.schedule-break-label>span{min-width:0}.schedule-break-label strong{display:block;font-weight:650;overflow-wrap:anywhere}.schedule-break-label span span{display:block}.schedule-break-unpositioned{background:#f0f2f7;color:#747f91}.schedule-track-line{position:absolute;top:49px;left:0;right:0;height:3px;background:#428cf0}.schedule-track-line:before,.schedule-track-line:after{content:"";position:absolute;top:-3px;width:9px;height:9px;border:2px solid #3286ee;border-radius:50%;background:#fff;z-index:1}.schedule-track-line:before{left:-4px}.schedule-track-line:after{right:-4px}.schedule-break-segment{position:absolute;top:0;height:100%;background:#4bb578}.schedule-break-segment:before,.schedule-break-segment:after{content:"";position:absolute;top:-7px;height:18px;border-left:1px dashed #67b786}.schedule-break-segment:before{left:0}.schedule-break-segment:after{right:0}.schedule-hours{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:6px 8px;border-radius:7px;background:#f5f7fc}.schedule-hours dt{display:flex;align-items:center;gap:9px;color:#737b88;font-size:13px}.schedule-hours dd{color:#1260df;font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}.schedule-shift+.schedule-shift{margin-top:12px;padding-top:12px;border-top:1px solid #dfe6f0}.schedule-empty{background:#f0fbf5;border-color:#dcefe4}.schedule-empty .schedule-weekday{color:#38875b;background:#e2f6ea}.schedule-missing{background:#f5f6fa;border-color:#e5e8f0}.schedule-day-status{display:flex;align-items:flex-start;gap:12px;padding:5px 0 3px}.schedule-day-status>.schedule-icon{width:23px;height:23px}.schedule-day-status h3{font-size:15px;line-height:23px;font-weight:500}.schedule-day-status p{margin-top:2px;font-size:11px;line-height:18px;color:#70798b}.schedule-illustration{position:absolute;z-index:-1;right:8px;bottom:0;width:125px;height:66px;opacity:.45}.schedule-today{border-color:#d1e0f7;background:#eef5ff}.schedule-today:before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:#1763ed}.schedule-today.schedule-empty{background:#f0fbf5}.schedule-today.schedule-missing{background:#f5f6fa}.schedule-loading{padding:40px 16px;text-align:center;color:#737b8c}.schedule-date-picker{margin-top:18px;border-top:1px solid #e5eaf2;color:#687387}.schedule-date-picker summary{padding:14px 0;min-height:44px;cursor:pointer;font-size:13px}.schedule-shortcuts{display:flex;flex-wrap:wrap;gap:6px}.schedule-shortcuts .btn{min-height:40px;font-size:13px}.schedule-filters{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin:14px 0 0}.schedule-filters label{flex:1 1 120px;min-width:0;font-size:13px}.schedule-filters input{min-width:0;width:100%;margin-top:4px}#app:has(.schedule-page) #page-container{background:#f5f7fb}#app:has(.schedule-page) .nav-icon{width:52px;height:29px;border-radius:8px}#app:has(.schedule-page) .nav-item.active .nav-icon{background:#eaf1ff}#app:has(.schedule-page) .nav-label{font-size:11px}@media(max-width:359px){.schedule-header{gap:8px;padding-inline:12px}.schedule-header p{max-width:175px}.schedule-page .page-content,.schedule-day{padding-inline:12px}.schedule-timeline{grid-template-columns:57px minmax(0,1fr) 57px}.schedule-endpoint strong{font-size:18px}.schedule-break-label{padding-inline:4px;font-size:10px}.schedule-illustration{right:-10px;opacity:.35}}.home-page{background:#fff}.home-page .page-content{margin:0;padding:16px}.home-page .entry-fields{margin:0}.home-summary{margin-top:16px;padding:18px;border:1px solid #edf3fc;border-radius:12px;background:#f0f6ff}.home-summary h2{font-size:16px;font-weight:650}.home-duration{display:flex;align-items:baseline;gap:5px;margin-top:5px;color:#0963ec;font-weight:700;line-height:1.2;font-variant-numeric:tabular-nums}.home-duration #home-min-num{font-size:52px;letter-spacing:-1px}.home-duration-unit{font-size:25px}.home-summary #home-hour-sub{margin-top:6px;color:#727c8e;font-size:12px;line-height:1.7;overflow-wrap:anywhere}.home-earned{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-top:16px;padding-top:14px;border-top:1px solid #dce5f2}.home-earned>span{font-size:16px;font-weight:650}.home-earned strong{color:#0963ec;font-size:26px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;min-width:0}.home-save{display:flex;width:100%;min-height:48px;margin:16px 0 0;border-radius:10px;background:#0969f7;font-size:18px}#app:has(.home-page) #page-container{background:#fff}#app:has(.home-page) .nav-label{font-size:11px}#app:has(.home-page) .nav-item.active .nav-icon svg{fill:#1697f5;stroke:#fff}@media(max-width:359px){.home-page .page-content{padding:12px}.home-summary{padding:14px}}
