*,*:before,*:after{box-sizing:border-box}html,body,#app{margin:0;padding:0;width:100%;min-height:100%}html{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{background:var(--bg);color:var(--text);font-size:14px}h1,h2,h3,h4,h5,h6{margin:0;color:var(--text);font-weight:600}p{margin:0}a{color:inherit;text-decoration:none}small{color:var(--text-muted)}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}.app-page{width:100%;max-width:var(--page-width);margin:0 auto}.text-muted{color:var(--text-muted)}.text-secondary{color:var(--text-secondary)}:root{--primary: #4da3ff;--primary-hover: #318ef5;--primary-soft: #e8f3ff;--success: #16a34a;--warning: #f59e0b;--danger: #dc2626;--surface: #ffffff;--surface-soft: #f8fafc;--surface-muted: #f3f4f6;--text: #111827;--text-secondary: #6b7280;--text-muted: #9ca3af;--border: #d1d5db;--border-hover: #9ca3af;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--shadow-xs: 0 1px 2px rgba(0,0,0,.04);--shadow-sm: 0 1px 3px rgba(0,0,0,.08);--shadow-md: 0 4px 12px rgba(0,0,0,.08);--shadow-lg: 0 8px 24px rgba(0,0,0,.12);--focus-ring: 0 0 0 3px rgba(77,163,255,.15);--control-height-sm: 36px;--control-height-md: 44px;--control-height-lg: 52px;--control-padding-x: 12px;--control-padding-y: 10px;--page-width: 1440px;--sidebar-width: 240px;--header-height: 64px;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-2xl: 48px;--transition-fast: .15s;--transition-normal: .25s;--status-normal-bg: #ecfdf5;--status-normal-text: #166534;--status-normal-border: #22c55e;--status-warn-bg: #fffbeb;--status-warn-text: #92400e;--status-warn-border: #f59e0b;--status-error-bg: #fef2f2;--status-error-text: #991b1b;--status-error-border: #ef4444;--status-pending-bg: #f8fafc;--status-pending-text: #475569;--status-pending-border: #cbd5e1;--status-holiday-bg: #f8fafc;--status-holiday-text: #64748b;--status-holiday-border: #cbd5e1;--status-company-off-bg: #f1f5f9;--status-company-off-text: #475569;--status-company-off-border: #94a3b8;--status-leave-bg: #eef6ff;--status-leave-text: #2563eb;--status-leave-border: #60a5fa;--status-leave-work-bg: #fef2f2;--status-leave-work-text: #b91c1c;--status-leave-work-border: #ef4444;--status-holiday-work-bg: #fff7ed;--status-holiday-work-text: #c2410c;--status-holiday-work-border: #fb923c;--card-bg: var(--surface);--card-hover-bg: color-mix( in srgb, var(--primary) 2%, var(--surface) );--card-selected-bg: #eef6ff;--card-selected-border: var(--primary);--card-border: var(--border);--selection-bg: #eef6ff;--selection-border: #2563eb;--selection-check-bg: #2563eb;--selection-check-text: #ffffff;--calendar-sunday-bg: #fef2f2;--calendar-sunday-text: #dc2626;--calendar-saturday-bg: #eff6ff;--calendar-saturday-text: #2563eb;--calendar-company-off-bg: #fff7ed;--calendar-selected: #2563eb;--calendar-today-bg: #eff6ff;--chip-info-bg: #eef6ff;--chip-info-text: #2563eb;--chip-warn-bg: #fef3c7;--chip-warn-text: #92400e;--chip-danger-bg: #fee2e2;--chip-danger-text: #991b1b;--font-size-xs: 12px;--font-size-sm: 13px;--font-size-md: 14px;--font-size-lg: 16px;--font-size-xl: 18px;--font-size-2xl: 24px;--font-size-3xl: 32px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--dashboard-gap: var(--space-xl);--dashboard-sidebar-width: 420px;--dashboard-header-height: 120px;--card-radius: var(--radius-lg);--card-padding: var(--space-lg);--card-padding-sm: var(--space-md)}.status-badge{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border-radius:999px;width:fit-content}.status-badge__label{white-space:nowrap;line-height:1}.status-badge--sm{height:24px;padding:0 8px;font-size:11px}.status-badge--md{height:28px;padding:0 10px;font-size:12px}.status-badge--lg{height:32px;padding:0 12px;font-size:13px}.status-badge__dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-normal .status-badge__dot{background:var(--status-normal-border)}.status-warn .status-badge__dot{background:var(--status-warn-border)}.status-error .status-badge__dot{background:var(--status-error-border)}.status-pending .status-badge__dot{background:var(--status-pending-border)}.status-leave{background:var(--status-leave-bg);color:var(--status-leave-text)}.status-leave .status-badge__dot{background:var(--status-leave-border)}.status-holiday{background:var(--status-holiday-bg);color:var(--status-holiday-text)}.status-holiday .status-badge__dot{background:var(--status-holiday-border)}.status-leave_work{background:var(--status-leave-work-bg);color:var(--status-leave-work-text)}.status-leave_work .status-badge__dot{background:var(--status-leave-work-border)}.status-holiday_work{background:var(--status-holiday-work-bg);color:var(--status-holiday-work-text)}.status-holiday_work .status-badge__dot{background:var(--status-holiday-work-border)}.status-company_off{background:var(--status-company-off-bg);color:var(--status-company-off-text)}.status-company_off .status-badge__dot{background:var(--status-company-off-border)}.layout{display:flex;flex-direction:column;height:100vh;overflow:hidden;background:var(--bg);color:var(--text)}.body{display:flex;flex:1;min-height:0;position:relative}.content{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:32px}.footer{height:40px;background:#f5f5f5;display:flex;align-items:center;justify-content:center;color:#666;border-top:1px solid #ddd}@media(min-width:769px){.layout-sidebar{width:220px;flex-shrink:0;overflow:hidden;transition:width .3s ease}.body.sidebar-closed .layout-sidebar{width:0}}@media(max-width:768px){.layout-sidebar{position:fixed;top:var(--header-height, 56px);left:0;width:220px;height:calc(100vh - var(--header-height, 56px));transition:width .3s ease;z-index:3000}.content{padding:20px 20px 96px;margin-left:0!important}.footer{display:none}}.overlay{position:fixed;inset:0;z-index:2000;background:#00000073}.header{display:flex;align-items:center;justify-content:space-between;height:64px;padding:0 24px;background:var(--surface);border-bottom:1px solid var(--border);position:relative;z-index:2000}.left,.right{display:flex;align-items:center;gap:16px}.logo-link{display:flex;align-items:center}.logo{height:40px;object-fit:contain}.hamburger{width:40px;height:40px;padding:0;border:none;border-radius:8px;background:transparent;color:var(--text);cursor:pointer;font-size:20px}.hamburger:hover{background:var(--surface-soft)}.header-action{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:999px;cursor:pointer;color:var(--text-secondary)}.header-action:hover{background:var(--surface-soft)}.avatar{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:999px;background:var(--primary);color:#fff;font-size:14px;font-weight:600}.avatar.large{width:48px;height:48px;font-size:18px}.caret{color:var(--text-secondary);font-size:12px}@media(max-width:768px){.header{height:56px;padding:0 16px}.logo{height:32px}}.sidebar{width:100%;height:100%;background:linear-gradient(180deg,#1f2933,#111827);color:#ffffffe6;border-right:1px solid rgba(255,255,255,.08);box-shadow:2px 0 12px #00000059}.menu{margin:0;padding:8px;list-style:none}.menu-group{margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid rgba(255,255,255,.08)}.menu-group-header{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;cursor:pointer;transition:background .2s ease}.menu-group-header:hover{background:#ffffff14}.menu-icon{flex-shrink:0}.menu-label{flex:1}.menu-chevron{transition:transform .2s ease}.menu-chevron.open{transform:rotate(90deg)}.menu-items{margin-top:4px;margin-left:28px;padding-left:10px;border-left:1px solid rgba(255,255,255,.1)}.menu-item{margin:4px 0}.menu-link,.menu-text{display:block;padding:8px 12px;border-radius:6px;color:inherit;text-decoration:none;transition:background .2s ease,color .2s ease}.menu-link:hover{background:#ffffff14}.menu-link.router-link-active{color:#fff;font-weight:600;background:#ffffff1f}.collapse-enter-active,.collapse-leave-active{transition:all .2s ease}.collapse-enter-from,.collapse-leave-to{opacity:0;transform:translateY(-4px)}.app-modal-overlay{position:fixed;inset:0;z-index:7000;display:flex;align-items:center;justify-content:center;background:#000000b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:16px}.app-modal{width:100%;max-width:640px;background:var(--surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;max-height:90vh;overflow:hidden}.app-modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--border);flex-shrink:0}.app-modal-title{font-size:18px;font-weight:600}.app-modal-body{flex:1;min-height:0;overflow-y:auto;padding:24px}.app-modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid var(--border);background:var(--surface);flex-shrink:0}.app-modal-close{border:none;background:transparent;cursor:pointer;font-size:20px}.app-modal-fullscreen{width:100vw;height:100vh;max-width:none;max-height:none;border-radius:0;display:flex;flex-direction:column}.app-modal-fullscreen .app-modal-body{flex:1;min-height:0;overflow-y:auto}.app-modal-fullscreen .app-modal-footer{position:sticky;bottom:0;background:var(--surface);z-index:1}.app-page-header{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:32px}.app-page-header-title-row{display:flex;align-items:center;gap:12px;margin-top:8px}.app-page-title{font-size:42px;font-weight:700;color:var(--text)}.app-page-subtitle{margin-top:8px;color:var(--text-secondary);font-size:16px}.app-page-description{margin-top:4px;color:var(--text-secondary);font-size:14px}.app-page-actions{display:flex;gap:12px}.app-page-toolbar{display:flex;flex-direction:column;gap:16px}.app-sidebar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);overflow:hidden}.app-sidebar-item{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:var(--radius-md);transition:background var(--transition-fast),color var(--transition-fast)}.app-sidebar-item:hover{background:var(--surface-soft)}.app-sidebar-item-active{background:var(--primary-soft);color:var(--primary)}.app-list-filters{background:var(--surface);padding:20px;border-radius:var(--radius-lg);border:1px solid var(--border)}.app-list-toolbar{display:flex;justify-content:space-between;align-items:center}.app-list-total{font-size:14px;color:var(--text-secondary)}.app-workspace-page{min-height:100vh;padding:32px;background:var(--surface-soft)}.app-workspace-layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:24px;align-items:start}.app-workspace-content{display:flex;flex-direction:column;gap:24px}.app-workspace-nav{position:sticky;top:24px;display:flex;flex-direction:column;gap:24px;height:fit-content}.app-workspace-sidebar-header{padding-bottom:16px;border-bottom:1px solid var(--border)}.app-page-back{display:inline-block;margin-bottom:16px;color:var(--primary);text-decoration:none}.app-workspace-title{font-size:24px;font-weight:700;color:var(--text)}.app-workspace-subtitle{margin-top:8px;font-size:14px;color:var(--text-secondary)}.app-workspace-sidebar-sections{display:flex;flex-direction:column;gap:8px}.app-workspace-nav-item{display:flex;align-items:center;gap:12px;width:100%;padding:14px 16px;border:0;border-radius:var(--radius-lg);background:transparent;cursor:pointer;text-align:left;transition:background var(--transition-fast),color var(--transition-fast)}.app-workspace-nav-item:hover{background:var(--surface)}.app-workspace-nav-item-active{background:var(--primary-soft);color:var(--primary)}.app-nav-icon{width:18px;height:18px;flex-shrink:0}.app-workspace-sidebar-actions{display:flex;flex-direction:column;gap:8px;padding-top:16px;border-top:1px solid var(--border)}.app-workspace-form-footer{display:flex;justify-content:flex-end}.app-dropdown{position:fixed;background:var(--surface);border:1px solid var(--border);border-radius:16px;overflow:hidden;box-shadow:var(--shadow-lg);z-index:999999}.app-dropdown-header{display:flex;align-items:center;gap:12px;padding:16px;border-bottom:1px solid var(--border)}.app-dropdown button{display:block;width:100%;padding:12px 16px;text-align:left;border:none;background:transparent;cursor:pointer}.app-dropdown button:hover{background:var(--surface-soft)}.app-dropdown .danger{color:var(--danger)}.app-dropdown hr{margin:0;border:none;border-top:1px solid var(--border)}@media(max-width:768px){.app-dropdown{left:16px!important;right:16px!important;width:auto!important;max-height:70vh;overflow-y:auto}}.user-menu{position:relative}.user-trigger{display:flex;align-items:center;gap:8px;cursor:pointer}.user-info{min-width:0}.user-info .name{font-weight:600}.user-info .email{font-size:12px;color:var(--text-secondary);word-break:break-all}.notification-wrapper{position:relative}.notification-badge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;display:flex;align-items:center;justify-content:center;padding:0 4px;border-radius:999px;background:var(--danger);color:#fff;font-size:11px;font-weight:600}.notification-content{max-height:480px;overflow-y:auto}.notification-title{font-size:16px;font-weight:600}.notification-actions{display:flex;gap:8px}.notification-action{width:auto!important;padding:6px 10px!important;border-radius:8px;font-size:12px}.notification-empty{padding:24px;text-align:center;color:var(--text-secondary)}.notification-item{display:flex;gap:12px;align-items:flex-start;padding:12px 16px;cursor:pointer;border-bottom:1px solid var(--border);transition:background .2s}.notification-item:hover{background:var(--surface-soft)}.notification-item.unread{background:#3b82f614}.notification-item__icon{flex-shrink:0}.notification-item__icon--success{color:var(--success)}.notification-item__icon--error{color:var(--danger)}.notification-item__icon--warning{color:var(--warning)}.notification-item__icon--info{color:var(--info)}.notification-item__body{flex:1}.notification-item__message{font-size:14px;color:var(--text);margin-bottom:4px}.notification-item__date{font-size:12px;color:var(--text-secondary)}.notification-item--success{border-left:3px solid var(--success)}.notification-item--error{border-left:3px solid var(--danger)}.notification-item--warning{border-left:3px solid var(--warning)}.notification-item--info{border-left:3px solid var(--info)}.punch-panel{display:flex;flex-direction:column;gap:20px;align-items:center}.buttons{display:flex;flex-direction:column;gap:16px}.row{display:flex;gap:16px}.btn{width:140px;height:52px;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:600;border-radius:10px;line-height:1;transition:background-color .15s ease,box-shadow .15s ease,transform .05s ease}.btn:not(:disabled){box-shadow:0 2px 6px #00000026}.btn:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 4px 10px #0000002e}.in{background:#4caf50;color:#fff}.out{background:#f44336;color:#fff}.break{background:#ff9800;color:#fff}.return{background:#2196f3;color:#fff}.btn:disabled{background:#e0e0e0!important;color:#888!important;box-shadow:none;transform:none;cursor:not-allowed}.error{color:#e53935;text-align:center;font-size:14px}@media(max-width:768px){.punch-panel{align-items:stretch}.row{width:100%}.btn{width:100%;height:64px;font-size:18px}}.app-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:var(--radius-md);font-weight:600;transition:background var(--transition-fast),color var(--transition-fast),border-color var(--transition-fast);cursor:pointer}.app-button-small{height:var(--control-height-sm);padding:0 12px;font-size:12px}.app-button-medium{height:var(--control-height-md);padding:0 16px;font-size:14px}.app-button-large{height:var(--control-height-lg);padding:0 20px;font-size:16px}.app-button-primary{background:var(--primary);color:#fff}.app-button-primary:not(:disabled):hover{background:var(--primary-hover)}.app-button-secondary{background:var(--surface);color:var(--text);border:1px solid var(--border)}.app-button-secondary:not(:disabled):hover{background:var(--surface-soft)}.app-button-danger{background:var(--danger);color:#fff}.app-button-danger:not(:disabled):hover{opacity:.9}.app-button-outline{background:transparent;color:var(--text);border:1px solid var(--border)}.app-button-outline:not(:disabled):hover{background:var(--surface-soft)}.app-button-text{background:transparent;color:var(--primary)}.app-button-text:not(:disabled):hover{background:var(--primary-soft)}.app-button:disabled{opacity:.5;cursor:not-allowed}.app-button-icon{display:inline-flex;align-items:center}.app-control{width:100%;height:var(--control-height-md);padding:0 var(--control-padding-x);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text);transition:border-color var(--transition-fast),box-shadow var(--transition-fast),background var(--transition-fast)}.app-control:hover{border-color:var(--border-hover)}.app-control:focus{outline:none;border-color:var(--primary);box-shadow:var(--focus-ring)}.app-control:disabled{background:var(--surface-muted);color:var(--text-muted);cursor:not-allowed}.app-control::placeholder{color:var(--text-muted)}.app-number-input{appearance:textfield}.app-number-input::-webkit-outer-spin-button,.app-number-input::-webkit-inner-spin-button{opacity:1}.app-file-upload{display:flex;flex-direction:column;gap:12px}.app-file-upload-hidden{display:none}.app-file-upload-selected{display:flex;justify-content:space-between;align-items:center;padding:12px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-soft)}.app-file-upload-name{font-weight:500;color:var(--text)}.app-file-upload-size{color:var(--text-secondary);font-size:12px}.app-date-input,.app-time-input{cursor:pointer}.app-date-input::-webkit-calendar-picker-indicator,.app-time-input::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.7}.app-date-input::-webkit-calendar-picker-indicator:hover,.app-time-input::-webkit-calendar-picker-indicator:hover{opacity:1}.app-select-trigger{display:flex;align-items:center;justify-content:space-between;cursor:pointer}.app-select-value{flex:1;overflow:hidden}.app-select-placeholder{color:var(--text-muted)}.app-select-right{display:flex;align-items:center;gap:8px}.app-select-arrow{font-size:12px;color:var(--text-secondary);transition:transform .15s}.app-select-arrow-open{transform:rotate(180deg)}.app-select-open{border-color:var(--primary);box-shadow:var(--focus-ring)}.app-select-disabled{opacity:.6;cursor:not-allowed}.app-select-dropdown{position:absolute;top:calc(100% + 4px);left:0;width:100%;z-index:100;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden}.app-select-search{padding:12px;border-bottom:1px solid var(--border)}.app-select-loading{padding:16px;text-align:center;color:var(--text-secondary)}.app-select-options{overflow-y:auto}.app-select-option{display:flex;align-items:center;gap:12px;padding:12px 16px;cursor:pointer;transition:background .15s}.app-select-option:hover{background:var(--surface-soft)}.app-select-option-selected{background:var(--primary-soft);color:var(--primary)}.app-button-group{display:flex;flex-wrap:wrap;gap:8px}.app-checkbox-group{display:flex;flex-direction:column;gap:8px}.app-control-textarea{width:100%;min-height:120px;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text);resize:vertical;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.app-control-textarea:hover{border-color:var(--border-hover)}.app-control-textarea:focus{outline:none;border-color:var(--primary);box-shadow:var(--focus-ring)}.app-control-textarea::placeholder{color:var(--text-muted)}.app-radio-group{display:flex;flex-wrap:wrap;gap:16px}.app-radio{display:inline-flex;align-items:center;gap:8px;cursor:pointer;color:var(--text)}.app-radio-input{margin:0;accent-color:var(--primary);cursor:pointer}.app-radio-input:disabled{cursor:not-allowed}.app-radio-label{font-size:14px;color:var(--text)}.app-radio:has(.app-radio-input:disabled){opacity:.6;cursor:not-allowed}.app-checkbox{display:inline-flex;align-items:center;gap:8px;cursor:pointer;color:var(--text)}.app-checkbox-input{width:16px;height:16px;margin:0;accent-color:var(--primary);cursor:pointer}.app-checkbox-input:disabled{cursor:not-allowed}.app-checkbox-label{font-size:14px;color:var(--text)}.app-checkbox:has(.app-checkbox-input:disabled){opacity:.6;cursor:not-allowed}.app-form-grid{display:grid;gap:var(--space-lg)}.app-form-grid-1{grid-template-columns:1fr}.app-form-grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.app-form-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.app-form-footer{display:flex;justify-content:flex-end;margin-top:var(--space-lg)}.app-form-field{display:flex;flex-direction:column;gap:8px}.app-form-field-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.app-form-field-actions{display:flex;align-items:center;gap:8px}.app-form-label{font-size:14px;font-weight:600;color:var(--text)}.app-form-required{margin-left:4px;color:var(--danger)}.app-form-description{font-size:13px;color:var(--text-secondary)}.app-form-control{width:100%}.app-form-help{font-size:12px;color:var(--text-secondary)}.app-form-error{font-size:12px;color:var(--danger)}.app-form-field-error .app-control,.app-form-field-error .app-control-textarea,.app-form-field-error .app-select-trigger{border-color:var(--danger)}.app-form-field-horizontal{display:grid;grid-template-columns:240px 1fr;gap:16px}.app-form-field-readonly{opacity:.85}.app-segmented{display:inline-flex;border:1px solid var( --color-border, #d0d7de );border-radius:10px;overflow:hidden;background:#fff}.app-segment{border:0;background:transparent;padding:8px 16px;cursor:pointer;transition:.15s;color:#666}.app-segment:hover{background:#f5f5f5}.app-segment.active{background:#2563eb;color:#fff}.app-segment:disabled{opacity:.5;cursor:not-allowed}.app-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);overflow:hidden}.app-card-header{padding:20px 24px;border-bottom:1px solid var(--border);background:var(--surface-soft)}.app-card-body{padding:24px}.app-card-title{font-size:18px;font-weight:600;color:var(--text)}.app-card-description{margin-top:4px;font-size:14px;color:var(--text-secondary)}.att-batch-card__header{font-size:18px;font-weight:700;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--border)}.att-batch-card{padding:20px;border:1px solid var(--border);border-radius:12px;background:var(--surface);margin-bottom:20px}.app-tag{display:inline-flex;align-items:center;height:24px;padding:0 8px;border-radius:var(--radius-sm);background:var(--primary);color:#fff;font-size:12px}.app-tag-secondary{background:var(--surface-muted);color:var(--text)}.app-detail-row{display:flex;gap:24px;padding:12px 0;border-bottom:1px solid var(--border)}.app-detail-row:last-child{border-bottom:none}.app-detail-label{width:220px;flex-shrink:0;color:var(--text-secondary);font-size:14px;font-weight:500}.app-detail-value{flex:1;color:var(--text);font-weight:500}.app-summary{display:flex;flex-direction:column;gap:16px}.app-summary-title{font-size:24px;font-weight:700;color:var(--text)}.app-summary-subtitle{color:var(--text-secondary);font-size:14px}.app-summary-item{display:flex;flex-direction:column;gap:4px}.app-summary-label{font-size:12px;color:var(--text-secondary)}.app-summary-value{font-size:14px;font-weight:600;color:var(--text)}.app-table-wrapper{width:100%}.app-table{width:100%;border-collapse:separate;border-spacing:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.app-table th{padding:12px 16px;text-align:left;font-size:12px;font-weight:600;color:var(--text-secondary);background:var(--surface-soft)}.app-table td{padding:14px 16px}.app-table tbody tr{transition:background var(--transition-fast)}.app-table tbody tr:hover{background:var(--surface-soft)}.app-table tr:not(:last-child) td{border-bottom:1px solid var(--border)}.app-table-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.app-table-summary{color:var(--text-secondary);font-size:14px}.app-table-page-size{display:flex;align-items:center;gap:8px;color:var(--text-secondary);font-size:14px}.app-table-page-size select{padding:4px 8px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.app-table-sort-icon{margin-left:6px;font-size:12px}.app-table-pagination{display:flex;justify-content:flex-end;margin-top:16px}.app-table-overlay{position:absolute;inset:0;display:flex;justify-content:center;align-items:center;background:#ffffffb3;z-index:10}.app-table-empty{padding:32px;text-align:center;color:var(--text-secondary)}.att-event-card{position:relative;min-height:72px;display:flex;align-items:center;justify-content:center;padding:8px;margin:2px;border-radius:var(--radius-md);background:var(--card-bg);border:1px solid var(--card-border);border-left-width:4px;box-shadow:var(--shadow-xs);overflow:hidden;transition:transform var(--transition-fast),box-shadow var(--transition-fast),background var(--transition-fast)}.att-event-card:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm);background:var(--card-hover-bg)}.att-event-card__content{width:100%;text-align:center}.att-event-card__main{font-size:18px;font-weight:700;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.att-event-card__main--future{font-size:14px;font-weight:600;line-height:1.3;white-space:pre-line}.att-event-card__sub{margin-top:4px;font-size:12px;color:var(--text-secondary);line-height:1.2}.att-event-card__badge{position:absolute;top:8px;right:8px}.att-event-card__action{position:absolute;right:6px;bottom:6px;z-index:2}.att-event-card__dot{position:absolute;right:10px;bottom:10px;width:8px;height:8px;border-radius:50%}.att-event-card--normal{border-left-color:var(--status-normal-border);background:color-mix(in srgb,var(--status-normal-bg) 35%,var(--surface))}.att-event-card--warn{border-left-color:var(--status-warn-border);background:color-mix(in srgb,var(--status-warn-bg) 40%,var(--surface))}.att-event-card--error{border-left-color:var(--status-error-border);background:color-mix(in srgb,var(--status-error-bg) 40%,var(--surface))}.att-event-card--pending{border-left-color:var(--status-pending-border);background:color-mix(in srgb,var(--status-pending-bg) 50%,var(--surface))}.att-event-card--holiday{border-left-color:var(--status-holiday-border);background:color-mix(in srgb,var(--status-holiday-bg) 65%,var(--surface));box-shadow:none}.att-event-card--leave{border-left-color:var(--status-leave-border);background:color-mix(in srgb,var(--status-leave-bg) 45%,var(--surface))}.att-event-card--leave-work{border-left-color:var(--status-leave-work-border);background:color-mix(in srgb,var(--status-leave-work-bg) 45%,var(--surface));color:var(--status-leave-work-text)}.att-event-card--holiday-work{border-left-color:var(--status-holiday-work-border);background:color-mix(in srgb,var(--status-holiday-work-bg) 45%,var(--surface));color:var(--status-holiday-work-text)}.att-event-card--company-off{border-left-color:var(--status-company-off-border);background:color-mix(in srgb,var(--status-company-off-bg) 60%,var(--surface));color:var(--status-company-off-text)}.att-event-card--holiday .att-event-card__badge{opacity:.5}.att-event-card--warn .att-event-card__dot{background:var(--warning)}.att-event-card--error .att-event-card__dot{background:var(--danger)}@media(max-width:900px){.att-event-card{min-height:56px;padding:4px}.att-event-card__main{font-size:15px}.att-event-card__sub{font-size:10px}}.calendar-header{display:flex;flex-direction:column;gap:var(--space-md)}.calendar-header__title h2{margin:0;font-size:28px;font-weight:700;color:var(--text)}.calendar-header__description{margin-top:4px;font-size:13px;color:var(--text-secondary)}.calendar-header__controls{display:flex;align-items:center;gap:var(--space-sm)}.calendar-header__actions{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.attendance-period-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-sm) 0}.attendance-period-header__nav{display:flex;align-items:center;gap:var(--space-md)}.attendance-period-header__arrow,.attendance-period-header__title{border:none;background:transparent;cursor:pointer}.attendance-period-header__arrow{font-size:16px;font-weight:700;color:var(--text)}.attendance-period-header__title{font-size:20px;font-weight:700;color:var(--text)}.attendance-period-header__arrow:hover,.attendance-period-header__title:hover{opacity:.75}.attendance-period-header__today{min-width:80px}.att-list{display:flex;flex-direction:column;gap:4px}.att-list__empty{padding:48px 16px;text-align:center;color:var(--text-muted);border:1px dashed var(--border);border-radius:var(--radius-lg);background:var(--surface-soft)}.att-list-card{display:grid;grid-template-columns:20px 80px 80px 240px 1fr 160px;align-items:center;gap:16px;padding:18px 24px;border-radius:20px;border:1px solid var(--border);box-shadow:var(--shadow-xs);transition:background var(--transition-fast),border-color var(--transition-fast),box-shadow var(--transition-fast),transform var(--transition-fast)}.att-list-card__info{min-width:0;display:flex;flex-direction:column;gap:4px}.att-list-card:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm)}.att-list-card--selected{border-color:var(--selection-border);box-shadow:var(--focus-ring)}.att-list-card__top{display:grid;grid-template-columns:220px 1fr;align-items:center}.att-list-card__left{display:flex;align-items:center;gap:16px}.att-list-card__check{flex-shrink:0}.att-list-card__check input{width:22px;height:22px;cursor:pointer}.att-list-card__date{font-size:20px;font-weight:700;white-space:nowrap}.att-list-card__date--sun{color:var(--calendar-sunday-text)}.att-list-card__date--sat{color:var(--calendar-saturday-text)}.att-list-card__status{display:flex;justify-content:flex-start}.att-list-card__work{display:grid;grid-template-columns:220px 1fr;align-items:center}.att-list-card__main{font-size:28px;font-weight:800;line-height:1}.att-list-card__sub{font-size:16px;color:var(--text-secondary)}.att-list-card__chips{display:flex;flex-wrap:wrap;gap:6px;margin-left:0}.att-list-card__chip{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 8px;border-radius:999px;font-size:11px;font-weight:600;white-space:nowrap}.att-list-card__chip:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.att-list-card__chip--info{background:var(--chip-info-bg);color:var(--chip-info-text)}.att-list-card__chip--warn{background:var(--chip-warn-bg);color:var(--chip-warn-text)}.att-list-card__chip--danger{background:var(--chip-danger-bg);color:var(--chip-danger-text)}.att-list-card__action{justify-self:end;width:130px;height:42px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:13px;font-weight:700;cursor:pointer;transition:all .15s ease}.att-list-card__action:hover{background:var(--primary);color:#fff}.att-list-card__action i{font-size:11px}.att-list-card--normal{background:color-mix(in srgb,var(--status-normal-bg) 65%,var(--surface));border-color:var(--status-normal-border)}.att-list-card--warn{background:color-mix(in srgb,var(--status-warn-bg) 65%,var(--surface));border-color:var(--status-warn-border)}.att-list-card--error{background:color-mix(in srgb,var(--status-error-bg) 65%,var(--surface));border-color:var(--status-error-border)}.att-list-card--pending{background:color-mix(in srgb,var(--status-pending-bg) 65%,var(--surface));border-color:var(--status-pending-border)}.att-list-card--holiday{background:color-mix(in srgb,var(--status-holiday-bg) 85%,var(--surface));border-color:var(--status-holiday-border)}.att-list-card--company-off{background:color-mix(in srgb,var(--status-company-off-bg) 85%,var(--surface));border-color:var(--status-company-off-border)}.att-list-card--leave{background:color-mix(in srgb,var(--status-leave-bg) 70%,var(--surface));border-color:var(--status-leave-border)}.att-list-card--leave-work{background:color-mix(in srgb,var(--status-leave-work-bg) 70%,var(--surface));border-color:var(--status-leave-work-border)}.att-list-card--holiday-work{background:color-mix(in srgb,var(--status-holiday-work-bg) 70%,var(--surface));border-color:var(--status-holiday-work-border)}@media(max-width:900px){.att-list-card{padding:16px}.att-list-card__top,.att-list-card__work{grid-template-columns:180px 1fr}.att-list-card__chips{margin-left:180px}.att-list-card__date{font-size:18px}.att-list-card__main{font-size:26px}}@media(max-width:640px){.att-list-card__top,.att-list-card__work{grid-template-columns:1fr}.att-list-card__chips{margin-left:0}.att-list-card__footer{justify-content:stretch}.att-list-card__action{width:100%}}.fc-h-event,.fc-daygrid-event{border:none!important;background:transparent!important}.fc-daygrid-event{width:100%;height:100%;margin:0!important}.fc-daygrid-event>div{width:100%;height:100%}.fc-day-today{background:var(--calendar-today-bg)!important}.fc-col-header-cell{font-weight:700;border-bottom:2px solid var(--border)}.fc-col-header-cell:first-child{color:var(--calendar-sunday-text);background:var(--calendar-sunday-bg)}.fc-col-header-cell:last-child{color:var(--calendar-saturday-text);background:var(--calendar-saturday-bg)}.att-sunday{background:color-mix(in srgb,var(--calendar-sunday-bg) 40%,transparent)}.att-sunday .fc-daygrid-day-number{color:var(--calendar-sunday-text);font-weight:700}.att-saturday{background:color-mix(in srgb,var(--calendar-saturday-bg) 40%,transparent)}.att-saturday .fc-daygrid-day-number{color:var(--calendar-saturday-text);font-weight:700}.att-saturday .fc-daygrid-day-top{background:var(--calendar-saturday-bg)}.att-sunday .fc-daygrid-day-top{background:var(--calendar-sunday-bg)}.att-company-off{position:relative}.att-company-off:before{content:"";position:absolute;top:0;left:0;width:0;height:0;border-top:12px solid var(--warning);border-right:12px solid transparent;z-index:20}.att-personal-off:before{border-top-color:var(--primary)}.att-holiday-work:before{border-top-color:var(--danger)}.att-selected-day{position:relative}.att-selected-day:after{content:"";position:absolute;top:4px;left:4px;width:8px;height:8px;border-radius:999px;background:var(--calendar-selected);z-index:10}.att-selected-day:hover{filter:brightness(.98)}.att-disabled-day{opacity:.75}.att-disabled-day .fc-daygrid-day-frame{cursor:not-allowed}.att-disabled-day .att-event-card{opacity:.75}.fc-day-other{background:var(--surface-soft)}.fc-day-other .fc-daygrid-day-number{color:var(--text-muted)}.att-outside-month{pointer-events:none}@media(max-width:900px){.fc-col-header-cell,.fc-daygrid-day-number{font-size:12px}}@media(max-width:640px){.fc-col-header-cell,.fc-daygrid-day-number{font-size:11px}}.att-correction-form{display:flex;flex-direction:column;gap:var(--space-lg)}.att-correction-form__row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-md)}.att-correction-form__section{display:flex;flex-direction:column;gap:var(--space-sm)}.att-correction-form__label{font-size:12px;font-weight:600;color:var(--text-secondary)}.att-correction-form__help{font-size:12px;color:var(--text-muted)}.att-correction-form__footer{display:flex;justify-content:flex-end;align-items:center;gap:var(--space-sm);margin-top:var(--space-sm)}.att-correction-form--readonly{opacity:.7;pointer-events:none}@media(max-width:640px){.att-correction-form__row{grid-template-columns:1fr}.att-correction-form__footer{flex-direction:column-reverse;align-items:stretch}.att-correction-form__footer>*{width:100%}}.att-dialog-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:#00000080;z-index:6000}.att-dialog{width:480px;max-width:calc(100vw - 32px);background:var(--surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);padding:var(--space-lg)}.att-dialog__header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md)}.att-dialog__date{font-size:20px;font-weight:700;color:var(--text)}.att-dialog__day-status{margin-top:4px;font-size:13px;color:var(--text-secondary)}.att-dialog__section{margin-top:var(--space-md)}.att-dialog__section-title{margin-bottom:var(--space-xs);font-size:12px;color:var(--text-secondary)}.att-dialog__text{color:var(--text-secondary)}.att-dialog__card{margin-top:var(--space-sm);padding:var(--space-md);background:var(--surface-soft);border:1px solid var(--border);border-radius:var(--radius-lg)}.att-dialog__row{display:flex;justify-content:space-between;gap:var(--space-md)}.att-dialog__item{flex:1;text-align:center}.att-dialog__item-label{font-size:12px;color:var(--text-secondary)}.att-dialog__item-value{display:block;margin-top:4px;font-size:16px;font-weight:700;color:var(--text)}.att-dialog__chips{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.att-dialog__chip{padding:4px 10px;border-radius:999px;font-size:12px;font-weight:600}.att-dialog__chip.danger{background:var(--chip-danger-bg);color:var(--chip-danger-text)}.att-dialog__chip.warn{background:var(--chip-warn-bg);color:var(--chip-warn-text)}.att-dialog__chip.info{background:var(--chip-info-bg);color:var(--chip-info-text)}.att-dialog__actions{display:flex;justify-content:flex-end;gap:var(--space-sm);margin-top:var(--space-lg)}@media(max-width:640px){.att-dialog{width:100%;max-width:calc(100vw - 16px)}.att-dialog__row{flex-direction:column}}.dashboard-inner{margin:0 auto;padding:0 var(--space-xl) var(--space-xl);display:flex;flex-direction:column;gap:var(--dashboard-gap)}.dashboard{display:grid;grid-template-columns:var(--dashboard-sidebar-width) minmax(0,1fr);gap:var(--dashboard-gap);align-items:start}.dashboard-sidebar{display:flex;flex-direction:column;gap:var(--space-lg);min-width:0}.dashboard-main{min-width:0}.card{background:var(--card-bg);color:var(--text);border:1px solid var(--card-border);border-radius:var(--card-radius);padding:var(--card-padding);box-shadow:var(--shadow-xs);transition:background var(--transition-fast),border-color var(--transition-fast),box-shadow var(--transition-fast)}.card:hover{background:var(--card-hover-bg);box-shadow:var(--shadow-sm)}.card h2{margin:0 0 var(--space-md);color:var(--text);font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold)}.dashboard-bottom{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-lg)}.punch{padding:var(--space-lg)}.calendar{min-width:0}.dashboard-header{display:flex;align-items:center;justify-content:space-between;min-height:var(--dashboard-header-height);padding:var(--space-lg);background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--card-radius);box-shadow:var(--shadow-xs)}.datetime-area{display:flex;flex-direction:column;gap:var(--space-xs)}.date-line{display:flex;align-items:center;gap:var(--space-sm)}.date{color:var(--text);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold)}.weekday{display:inline-flex;align-items:center;padding:2px var(--space-sm);border-radius:999px;background:var(--surface-muted);color:var(--text-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold)}.time-line{display:flex;align-items:center;gap:var(--space-md)}.time{color:var(--text);font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);line-height:1;font-variant-numeric:tabular-nums;letter-spacing:.04em}.elapsed{display:inline-flex;align-items:center;width:fit-content;padding:4px 10px;border-radius:var(--radius-sm);background:var(--surface-muted);color:var(--text-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums}.notice-bar{display:flex;flex-direction:column;gap:var(--space-sm)}.notice{display:flex;align-items:center;gap:var(--space-md);padding:12px 16px;border-radius:var(--radius-md);border-left:4px solid currentColor}.notice .icon{flex-shrink:0;font-size:var(--font-size-lg)}.notice .message{flex:1;line-height:1.5}.status-normal{background:var(--status-normal-bg);color:var(--status-normal-text)}.status-warn{background:var(--status-warn-bg);color:var(--status-warn-text)}.status-error{background:var(--status-error-bg);color:var(--status-error-text)}.status-pending{background:var(--status-pending-bg);color:var(--status-pending-text)}.timeline-card{display:flex;flex-direction:column}.status-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-md);padding:14px 16px;border-radius:var(--radius-md)}.status-main{display:flex;align-items:center;gap:var(--space-sm)}.status-label{font-weight:var(--font-weight-semibold)}.status-time{font-size:var(--font-size-sm);opacity:.7}.timeline{list-style:none;margin:0;padding:0}.timeline-item{display:flex;align-items:center;gap:var(--space-md);margin-bottom:var(--space-sm)}.timeline-time{width:72px;font-weight:var(--font-weight-semibold)}.timeline-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.timeline-dot.IN,.timeline-dot.work{background:var(--status-normal-border)}.timeline-dot.OUT{background:var(--status-error-border)}.timeline-dot.BREAK_IN,.timeline-dot.break{background:var(--status-warn-border)}.timeline-dot.BREAK_OUT{background:var(--primary)}.timeline-summary{display:flex;flex-wrap:wrap;gap:var(--space-lg);margin-top:var(--space-md);font-size:var(--font-size-sm)}.monthly-stats{display:flex;flex-direction:column;gap:var(--space-lg)}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-md)}.stat-card{padding:var(--space-md);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-soft)}.stat-card span{display:block;margin-bottom:var(--space-xs);color:var(--text-secondary);font-size:var(--font-size-sm)}.stat-card strong{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--text)}.progress-section{display:flex;flex-direction:column;gap:var(--space-sm)}.progress-header{display:flex;justify-content:space-between}.progress-bar{height:10px;overflow:hidden;border-radius:999px;background:var(--surface-muted)}.progress-bar__value{height:100%;background:var(--primary);border-radius:inherit}.request-status{display:flex;flex-direction:column;gap:var(--space-md)}.request-list{display:flex;flex-direction:column;gap:var(--space-sm)}.request-item{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-soft)}.request-title{font-weight:var(--font-weight-semibold)}.request-desc{margin-top:2px;font-size:var(--font-size-sm);color:var(--text-secondary)}.request-count{padding:4px 10px;border-radius:999px;font-size:var(--font-size-sm);font-weight:var(--font-weight-bold)}.upcoming-schedule{display:flex;flex-direction:column;gap:var(--space-md)}.schedule-list{display:flex;flex-direction:column;gap:var(--space-sm)}.schedule-item{display:flex;gap:var(--space-md);padding:var(--space-md);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-soft)}.schedule-date{min-width:72px;font-weight:var(--font-weight-semibold);color:var(--primary)}.schedule-main{flex:1}.schedule-title{font-weight:var(--font-weight-semibold)}.schedule-time{margin-top:2px;font-size:var(--font-size-sm);color:var(--text-secondary)}@media(max-width:1024px){.dashboard-inner{padding:0 var(--space-md) 96px}.dashboard{grid-template-columns:1fr}.dashboard-sidebar{order:1}.dashboard-main{order:2}.dashboard-bottom{grid-template-columns:1fr}.time-line{flex-direction:column;align-items:flex-start;gap:var(--space-sm)}.time{font-size:var(--font-size-2xl)}.date{font-size:var(--font-size-lg)}}.spinner[data-v-672906cd]{border-radius:50%;animation:spin-672906cd .8s linear infinite;margin:auto;display:inline-block}@keyframes spin-672906cd{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.pagination[data-v-69768ec6]{display:flex;gap:12px;align-items:center}button[data-v-69768ec6]:disabled{opacity:.5}.badge[data-v-efb9d310]{padding:4px 8px;font-size:12px;border-radius:4px}.default[data-v-efb9d310]{background:#eee;color:#333}.success[data-v-efb9d310]{background:#4caf50;color:#fff}.danger[data-v-efb9d310]{background:#f44336;color:#fff}.warning[data-v-efb9d310]{background:#ff9800;color:#fff}.row[data-v-8db55d14]{display:flex;padding:8px 0;border-bottom:1px solid #eee}.label[data-v-8db55d14]{width:160px;color:#666}.value[data-v-8db55d14]{flex:1}.form-field[data-v-ef979826]{display:flex;flex-direction:column;gap:6px}.label[data-v-ef979826]{font-size:13px;color:#555}.control[data-v-ef979826]{display:flex}.error[data-v-ef979826]{font-size:12px;color:#e53935}.toast[data-v-22e3dd6a]{position:fixed;bottom:20px;right:20px;background:#333;color:#fff;padding:10px 14px;border-radius:6px;z-index:10000}.toolbar[data-v-3a66ac1e]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.left[data-v-3a66ac1e],.right[data-v-3a66ac1e]{display:flex;gap:8px}.punch-bar[data-v-58717317]{position:fixed;left:0;right:0;bottom:0;padding:12px;background:linear-gradient(180deg,#0000,#00000059);z-index:2000}.punch-main[data-v-58717317]{width:100%;height:56px;font-size:18px;font-weight:600;border-radius:12px;border:none;background:#4f8cff;color:#fff}.loading[data-v-58717317]{opacity:.8}.sheet-overlay[data-v-58717317]{position:fixed;inset:0;background:#00000073;z-index:3000}.bottom-sheet[data-v-58717317]{position:fixed;left:0;right:0;bottom:0;background:var(--card-bg);border-radius:16px 16px 0 0;padding:16px;z-index:4000}.sheet-handle[data-v-58717317]{width:40px;height:4px;margin:0 auto 12px;background:#ffffff4d;border-radius:2px}.sheet-title[data-v-58717317]{text-align:center;margin-bottom:12px}.sheet-btn[data-v-58717317]{width:100%;height:52px;margin-bottom:10px;border-radius:10px;border:none;font-size:16px;font-weight:600;color:#fff}.in[data-v-58717317]{background:#4caf50}.out[data-v-58717317]{background:#f44336}.break[data-v-58717317]{background:#ff9800}.return[data-v-58717317]{background:#2196f3}.error[data-v-58717317]{color:#e53935;text-align:center;margin-top:8px}.toast[data-v-58717317]{position:fixed;left:50%;bottom:100px;transform:translate(-50%);padding:12px 18px;border-radius:20px;font-size:14px;font-weight:600;color:#fff;z-index:5000;box-shadow:0 6px 16px #00000059}.att-list[data-v-c6e2786f]{display:flex;flex-direction:column;gap:16px}.att-list__empty[data-v-c6e2786f]{padding:48px 16px;text-align:center;color:var(--text-muted);border:1px dashed var(--border);border-radius:var(--radius-lg);background:var(--surface-soft)}.login-page[data-v-24d83382]{min-height:100vh;display:flex;font-family:system-ui,-apple-system,BlinkMacSystemFont}.login-left[data-v-24d83382]{flex:1;background:linear-gradient(135deg,#2f80ed,#56ccf2);display:flex;align-items:center;justify-content:center;color:#fff}.brand[data-v-24d83382]{text-align:center;max-width:420px;padding:40px}.brand .logo[data-v-24d83382]{height:72px;margin-bottom:16px}.brand .tagline[data-v-24d83382]{font-size:18px;line-height:1.6;opacity:.95}.login-right[data-v-24d83382]{flex:0 0 480px;display:flex;align-items:center;justify-content:center;background:#fff}.login-card[data-v-24d83382]{width:100%;max-width:380px;padding:40px;background:#fff;border-radius:12px}.card-brand[data-v-24d83382]{display:none;text-align:center;margin-bottom:24px}.card-brand .logo[data-v-24d83382]{height:56px;margin-bottom:8px}.card-brand .tagline[data-v-24d83382]{font-size:14px;color:#666}.field-error input[data-v-24d83382]{border-bottom-color:#e53935!important}.error[data-v-24d83382]{margin-top:16px;color:#e53935;font-size:14px}.error-banner[data-v-24d83382]{background:#fdecea;color:#d32f2f;border:1px solid #f5c2c7;padding:12px;border-radius:6px;margin-bottom:16px;font-size:14px}.caps-warning[data-v-24d83382]{font-size:12px;color:#ff9800;margin-bottom:8px}@keyframes shake-24d83382{0%{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}to{transform:translate(0)}}.login-card.shake[data-v-24d83382]{animation:shake-24d83382 .3s ease-in-out}@media(max-width:768px){.login-page[data-v-24d83382]{flex-direction:column;background:linear-gradient(135deg,#2f80ed,#56ccf2)}.login-left[data-v-24d83382]{display:none}.login-right[data-v-24d83382]{flex:1;background:transparent;padding:40px 0}.login-card[data-v-24d83382]{margin:0 16px;box-shadow:0 24px 48px #00000040}.card-brand[data-v-24d83382]{display:block}}.quick-punch[data-v-d8b22429]{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1976d2,#4fc3f7)}.card[data-v-d8b22429]{width:100%;max-width:420px;background:#fff;border-radius:24px;padding:24px}.logo[data-v-d8b22429]{display:block;width:96px;margin:0 auto 12px}.action[data-v-d8b22429]{width:100%;margin-top:12px;height:56px;border:none;border-radius:12px;color:#fff;font-size:18px;font-weight:600;cursor:pointer}.in[data-v-d8b22429]{background:#2e7d32}.out[data-v-d8b22429]{background:#c62828}.break-in[data-v-d8b22429]{background:#f9a825}.break-out[data-v-d8b22429]{background:#1565c0}.message[data-v-d8b22429]{margin-top:16px;text-align:center}.auto-punch[data-v-e314729d]{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1565c0,#42a5f5)}.card[data-v-e314729d]{width:100%;max-width:420px;background:#fff;border-radius:24px;padding:32px;text-align:center;box-shadow:0 20px 50px #00000026}.logo[data-v-e314729d]{width:96px;margin-bottom:16px}h1[data-v-e314729d]{margin-bottom:24px}.success[data-v-e314729d]{color:#2e7d32}.error[data-v-e314729d]{color:#c62828}.time[data-v-e314729d]{margin-top:12px;font-size:28px;font-weight:700}
