:root{--text:#1f2430;--text-muted:#5b6270;--bg:#f5f6f8;--surface:#fff;--border:#d7dae0;--accent:#2f6fed;--accent-hover:#2559c4;--accent-bg:#f5f8ff;--danger:#c62828;--danger-bg:#fdecea;--success:#2e7d32;--success-bg:#eaf6ec;--warning:#a05a00;--warning-bg:#fff4e0;--weekend-bg:#f2f4f7;--readonly-bg:#eef1f5;--overridden:#b8641a;color:var(--text);background:var(--bg);font:15px/1.6 system-ui,Segoe UI,Hiragino Kaku Gothic ProN,sans-serif}*{box-sizing:border-box}body{margin:0}h1{margin:0 0 16px;font-size:22px}h2{margin:0 0 12px;font-size:17px}.page{flex:1;min-width:0;max-width:1080px;margin:0 auto;padding:24px 16px 64px}.page--wide{max-width:1310px}.centered-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;max-width:380px;margin:64px auto;padding:32px}@media (width<=1365px){.centered-card{max-width:none;margin:40px 16px;padding:20px 16px}.centered-card input[type=email],.centered-card input[type=password],.centered-card input[type=text]{min-height:52px;font-size:16px}.centered-card .btn-primary{min-height:52px}.centered-card .btn-link{justify-content:center;align-items:center;min-height:44px;padding:4px 0;display:inline-flex}}.password-field-row{gap:8px;display:flex}.password-field-row input{flex:1;min-width:0}.password-toggle-button{border:1px solid var(--border);background:var(--surface);width:60px;min-height:52px;color:var(--accent);border-radius:10px;flex-shrink:0;font-size:12px;font-weight:700}form{flex-direction:column;gap:16px;display:flex}label{color:var(--text-muted);flex-direction:column;gap:4px;font-size:14px;display:flex}input[type=email],input[type=password],input[type=text],input[type=number],input[type=datetime-local]{font:inherit;border:1px solid var(--border);color:var(--text);background:var(--surface);border-radius:4px;padding:8px 10px}input[type=email]:disabled,input[type=password]:disabled,input[type=text]:disabled,input[type=number]:disabled,input[type=datetime-local]:disabled{color:var(--text-muted);background:var(--readonly-bg)}input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}button{font:inherit;cursor:pointer}.btn-primary{background:var(--accent);color:#fff;border:none;border-radius:4px;padding:10px 16px;font-weight:600}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:disabled{background:var(--border);cursor:not-allowed}.btn-secondary{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:8px 14px}.btn-secondary:disabled{color:var(--text-muted);cursor:not-allowed}.btn-warning{background:var(--warning-bg);color:var(--warning);border:1px solid var(--warning);border-radius:4px;padding:8px 14px;font-weight:600}.btn-warning:disabled{opacity:.6;cursor:not-allowed}.btn-submit-outline{background:var(--surface);color:var(--disabled-text);border:1px solid var(--border);border-radius:4px;padding:8px 14px}.btn-submit-outline--active{background:var(--accent-bg);color:var(--accent);border-color:var(--accent);font-weight:700}.btn-submit-outline:disabled{cursor:not-allowed}.btn-link{color:var(--accent);background:0 0;border:none;padding:0;font-size:14px;text-decoration:underline}.btn-danger{background:var(--surface);color:var(--danger);border:1px solid var(--danger);border-radius:4px;padding:8px 14px}.btn-danger:hover{background:var(--danger-bg)}.btn-danger:disabled{color:var(--text-muted);border-color:var(--border);cursor:not-allowed}.error-banner{background:var(--danger-bg);color:var(--danger);border-radius:4px;padding:10px 12px;font-size:14px}.info-banner{background:var(--success-bg);color:var(--success);border-radius:4px;padding:10px 12px;font-size:14px}.field-error{color:var(--danger);font-size:13px}.required>.field-label-text:after{content:" *";color:var(--danger)}.app-shell{flex-direction:column;min-height:100vh;display:flex}.app-body{flex:1;align-items:stretch;min-height:0;display:flex}nav.side-nav{top:var(--mobile-header-height);height:calc(100vh - var(--mobile-header-height));z-index:20;background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:20px;width:220px;padding:20px 16px;display:flex;position:sticky;overflow-y:auto}nav.side-nav .nav-links{flex-direction:column;gap:4px;display:flex}nav.side-nav .nav-link{color:var(--text-muted);border-left:3px solid #0000;border-radius:4px;align-items:center;padding:8px 10px;font-size:14px;text-decoration:none;display:flex}nav.side-nav .nav-link.active{color:var(--accent);background:var(--bg);border-left-color:var(--accent);font-weight:600}.nav-link-badge{background:var(--danger);color:#fff;text-align:center;border-radius:999px;min-width:18px;height:18px;margin-left:auto;padding:0 5px;font-size:11px;font-weight:700;line-height:18px}.attendance-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.period-nav{align-items:center;gap:8px;font-weight:600;display:flex}.attendance-summary-tiles{gap:10px;display:flex}.attendance-summary-tile{background:var(--bg);min-width:72px;font:inherit;cursor:pointer;border:1px solid #0000;border-radius:10px;flex-direction:column;align-items:center;gap:2px;padding:4px 12px;display:flex}.attendance-summary-tile--warning{background:var(--warning-bg);border-color:var(--holiday-work-border);color:var(--warning)}.attendance-summary-tile--accent{background:var(--accent-bg);border-color:var(--accent);color:var(--accent)}.attendance-summary-label{color:var(--text-muted);font-size:11px}.attendance-summary-value{font-size:18px;font-weight:700}.status-badge{border-radius:12px;padding:2px 10px;font-size:13px;font-weight:600;display:inline-block}.leave-badge-button{font:inherit;cursor:pointer;border:none}.leave-badge-button:hover,.leave-badge-button:focus-visible{filter:brightness(.92)}.status-badge.editing{background:var(--readonly-bg);color:var(--text-muted)}.status-badge.submitted{color:#a05a00;background:#fff4e0}.status-badge.approved{background:var(--success-bg);color:var(--success)}.status-badge.returned,.status-badge.locked{background:var(--danger-bg);color:var(--danger)}.status-badge.fixed{background:var(--readonly-bg);color:var(--text-muted)}.rest-slot-fixed{background:var(--readonly-bg);border-radius:6px;padding:8px}.approval-step-list{margin:0;padding-left:0;list-style:none}.approval-step-item{cursor:grab;border-radius:6px;align-items:center;gap:8px;padding:4px 6px;display:flex}.approval-step-item--dragging{opacity:.4}.approval-step-handle{color:var(--text-muted);font-size:14px}.approval-step-number{background:var(--accent);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;font-size:12px;font-weight:700;display:inline-flex}.approval-step-connector{color:var(--text-muted);padding-left:28px;font-size:13px;line-height:1.4}.approval-stamp-thumbnail{object-fit:contain;vertical-align:middle;border:1px solid var(--border);border-radius:50%;width:28px;height:28px;margin:0 6px;display:inline-block}.approval-stamp-thumbnail--loading{background:var(--surface-alt,#f0f0f0)}.notice-banner{background:#fff8e1;border:1px solid #f0d896;border-radius:6px;margin-bottom:16px;padding:12px 16px;font-size:14px}.attendance-table-wrapper{border:1px solid var(--border);max-height:70vh;overflow:auto}table.attendance-table{table-layout:fixed;border-collapse:separate;border-spacing:0;background:var(--surface);width:100%;min-width:1236px;font-size:13px}table.attendance-table th,table.attendance-table td{border-style:solid;border-width:0 1px 1px 0;border-color:var(--border);text-align:center;white-space:nowrap;padding:6px 8px}table.attendance-table td.col-request-type,table.attendance-table td.col-start,table.attendance-table td.col-end,table.attendance-table td.col-remarks{white-space:normal}table.attendance-table th{background:#f0f2f5;font-weight:600}table.attendance-table tr.weekend td{background:var(--weekend-bg)}table.attendance-table tr.holiday-worked td{background:var(--warning-bg)}table.attendance-table tr.row-pending-save td{outline:1px solid var(--accent);outline-offset:-1px}table.attendance-table tr.row-flash td{outline:2px solid var(--warning);outline-offset:-2px}table.attendance-table thead th{z-index:2;position:sticky;top:0}table.attendance-table td.col-date,table.attendance-table td.col-weekday,table.attendance-table th.col-date,table.attendance-table th.col-weekday{position:sticky;left:0}table.attendance-table td.col-date,table.attendance-table td.col-weekday{z-index:1;background:var(--surface)}table.attendance-table td.col-weekday,table.attendance-table th.col-weekday{left:64px}table.attendance-table col.col-date{width:64px}table.attendance-table col.col-weekday{width:48px}table.attendance-table col.col-request-type{width:200px}table.attendance-table col.col-start,table.attendance-table col.col-end{width:100px}table.attendance-table col.col-rest,table.attendance-table col.col-rest-night{width:90px}table.attendance-table col.col-worked,table.attendance-table col.col-night{width:82px}table.attendance-table col.col-overtime{width:72px}table.attendance-table col.col-remarks{min-width:160px}table.attendance-table col.col-action{width:148px}table.attendance-table td.col-action,table.attendance-table th.col-action{position:sticky;right:0}table.leave-request-table{min-width:660px}table.leave-request-table col.col-leave-date{width:130px}table.leave-request-table col.col-leave-type{width:140px}table.leave-request-table col.col-leave-reason{min-width:160px}table.leave-request-table col.col-leave-submitted-date{width:90px}table.leave-request-table col.col-leave-status{width:110px}table.leave-request-table col.col-leave-action{width:140px}.leave-request-action-buttons{flex-wrap:wrap;gap:6px;display:flex}.leave-request-action-button{height:28px;padding:0 10px;font-size:12px}table.attendance-table td.col-action button+button{margin-left:6px}table.attendance-table td.col-action{z-index:1;background:var(--surface);text-align:left}table.attendance-table thead th.col-date,table.attendance-table thead th.col-weekday,table.attendance-table thead th.col-action{z-index:3}table.attendance-table tr.weekend td.col-date,table.attendance-table tr.weekend td.col-weekday,table.attendance-table tr.weekend td.col-action{background:var(--weekend-bg)}table.attendance-table tr.holiday-worked td.col-date,table.attendance-table tr.holiday-worked td.col-weekday,table.attendance-table tr.holiday-worked td.col-action{background:var(--warning-bg)}table.attendance-table td.readonly{background:var(--readonly-bg);color:var(--text-muted)}table.attendance-table td.overridden{color:var(--overridden);font-weight:600}table.attendance-table input[type=datetime-local]{width:100%;min-width:150px;padding:4px;font-size:12px}table.attendance-table input[type=number]{width:64px;padding:4px;font-size:12px}table.attendance-table select{width:100%;font-size:12px}table.attendance-table input[type=text]{width:100%;min-width:100px;padding:4px;font-size:12px}table.approval-table col.col-select{width:40px}table.approval-table col.col-name{width:110px}table.approval-table col.col-target{width:200px}table.approval-table col.col-applied-date,table.approval-table col.col-status{width:90px}table.approval-table col.col-action{width:80px}table.approval-table td.col-target{white-space:normal}table.approval-table col.col-dept-path{width:180px}table.approval-table col.col-target-date{width:90px}table.approval-table col.col-request-type{width:100px}table.approval-table col.col-reason{width:220px}table.approval-table td.col-reason{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}table.attendance-table.leave-request-preview-table{width:100%;min-width:0}table.leave-request-preview-table th{white-space:nowrap;width:140px}table.attendance-table.master-list-table{table-layout:auto;width:100%;min-width:0}table.attendance-table.master-list-table col.col-user-employee-code{width:90px}table.attendance-table.master-list-table col.col-user-name{width:100px}table.attendance-table.master-list-table col.col-user-dept{width:110px}table.attendance-table.master-list-table col.col-user-master,table.attendance-table.master-list-table col.col-user-affairs{width:80px}table.attendance-table.master-list-table col.col-user-status{width:140px}.user-list-scroll{max-height:60vh;overflow:auto}.user-list-scroll table.master-list-table thead th{z-index:1;position:sticky;top:0}table.attendance-table.master-list-table.locations-list-table{table-layout:fixed;min-width:720px}table.attendance-table col.col-location-schedule,table.attendance-table col.col-location-night-shift{width:170px}table.attendance-table col.col-location-rest-slots{width:110px}table.attendance-table col.col-location-user-count{width:90px}table.attendance-table col.col-location-status{width:130px}.empty-guidance{background:#fff8e1;border:1px solid #f0d896;border-radius:6px;margin-bottom:16px;padding:12px 16px;font-size:14px}.footer-summary{color:var(--text-muted);gap:32px;margin-top:16px;font-size:14px;display:flex}.footer-summary strong{color:var(--text)}.master-detail{position:relative}.master-detail-backdrop{z-index:9;cursor:default;background:0 0;position:fixed;inset:0}.master-detail-overlay{background:var(--surface);border-left:1px solid var(--border);z-index:10;width:min(640px,90vw);padding:24px;position:fixed;top:0;bottom:0;right:0;overflow-y:auto;box-shadow:-8px 0 24px #0000001f}.master-detail-back-btn{margin-bottom:16px}.edit-panel-tabs{border-bottom:1px solid var(--border);gap:4px;margin-top:16px;display:flex;overflow-x:auto}.edit-panel-tab{color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:3px solid #0000;padding:10px 14px;font-size:14px}.edit-panel-tab:hover{color:var(--text)}.edit-panel-tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.edit-panel-tab--danger,.edit-panel-tab--danger:hover{color:var(--danger)}.edit-panel-tab--danger.active{border-bottom-color:var(--danger)}.approval-tab-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:18px;display:flex}.approval-type-toggle{gap:28px;display:flex}.approval-type-toggle-button{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-bottom:3px solid #0000;align-items:center;gap:8px;height:auto;margin-bottom:-1px;padding:0 2px 11px;font-size:19px;font-weight:700;display:flex}.approval-type-toggle-button:hover{color:var(--text)}.approval-type-toggle-button--active{color:var(--text);border-bottom-color:var(--accent);background:0 0}.approval-status-tabs{border:1px solid var(--border);border-radius:4px;margin-bottom:9px;display:inline-flex;overflow:hidden}.approval-status-tab{background:var(--surface);height:32px;color:var(--text-muted);cursor:pointer;border:none;align-items:center;gap:6px;padding:0 16px;font-size:13px;font-weight:500;display:inline-flex}.approval-status-tab+.approval-status-tab{border-left:1px solid var(--border)}.approval-status-tab--active{background:var(--accent);color:#fff}.approval-filter-row{flex-wrap:wrap;align-items:flex-end;gap:16px;margin-bottom:12px;display:flex}.approval-only-pending-filter{flex-direction:row;align-items:center;gap:6px;padding-bottom:2px}.approval-step-progress{color:var(--text-muted);margin-top:4px;font-size:11px;display:block}.unsubmitted-section{background:var(--readonly-bg);border-radius:6px;margin-bottom:16px;padding:12px 16px}.unsubmitted-section h3{margin:0 0 8px;font-size:14px}.unsubmitted-list{margin:0;padding-left:20px;font-size:13px}.unsubmitted-progress{color:var(--text-muted);font-size:12px}.unsubmitted-list-empty{color:var(--text-muted);margin:0;font-size:13px}.approval-attendance-summary{background:var(--readonly-bg);border-radius:6px;margin-bottom:16px;padding:12px 16px}.approval-attendance-summary h3{margin:0 0 8px;font-size:14px}.approval-summary-list{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px 16px;margin:0;display:grid}.approval-summary-item{flex-direction:column;display:flex}.approval-summary-item dt{color:var(--text-muted);font-size:12px}.approval-summary-item dd{margin:0;font-size:14px;font-weight:600}.approval-summary-item--attention dd{color:var(--danger)}.edit-panel-section{background:var(--bg);border:1px solid var(--border);border-radius:6px;margin-top:16px;padding:16px}.edit-panel-section h3{margin-top:0}.edit-panel-section--danger{background:var(--danger-bg);border-color:var(--danger)}.edit-panel-subsection+.edit-panel-subsection{border-top:1px solid var(--border);margin-top:24px;padding-top:24px}.edit-panel-subsection h3{margin-top:0}.modal-overlay{z-index:40;background:#0f121973;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-overlay--nested{z-index:41}.modal-content{background:var(--surface);border-radius:8px;width:min(720px,92vw);max-height:85vh;padding:24px;overflow-y:auto;box-shadow:0 16px 48px #0003}.modal-content--wide{width:min(1300px,95vw)}.modal-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.modal-header h2{margin:0;font-size:18px}.form-grid-2col{grid-template-columns:1fr 1fr;gap:16px;display:grid}@media (width<=480px){.form-grid-2col{grid-template-columns:1fr}}.delegation-form{flex-direction:column;gap:16px;display:flex}.delegation-form-row{align-items:center;gap:12px;display:flex}.delegation-form-row label,.delegation-form-row .delegation-form-row-label{color:var(--text-muted);flex:0 0 200px;font-size:14px}.delegation-form-row select,.delegation-form-row input[type=date]{font:inherit;border:1px solid var(--border);color:var(--text);background:var(--surface);border-radius:4px;flex:1;padding:8px 10px}@media (width<=480px){.delegation-form-row{flex-wrap:wrap}.delegation-form-row label,.delegation-form-row .delegation-form-row-label{flex-basis:100%}}.delegation-card{background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:12px;margin-bottom:8px;padding:12px;box-shadow:0 1px 2px #1018280a}.delegation-card-row1{justify-content:space-between;align-items:center;margin-bottom:9px;display:flex}.delegation-card-delete{height:32px;font-size:12px}.delegation-card-row2{align-items:center;gap:10px;display:flex}.delegation-card-person{flex-direction:column;flex:1;min-width:0;display:flex}.delegation-card-person-label{color:var(--text-muted);font-size:10px}.delegation-card-person-name{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:700;overflow:hidden}.delegation-card-arrow{color:var(--text-faintest);flex-shrink:0;font-size:15px}.delegation-card-row3{border-top:1px dashed var(--border);color:var(--text-muted);font-variant-numeric:tabular-nums;margin-top:9px;padding-top:9px;font-size:12px}.status-badge.active{background:var(--success-bg);color:var(--success)}.status-badge.ended{background:var(--readonly-bg);color:var(--text-muted)}.delegation-sheet-field{flex-direction:column;gap:4px;margin-bottom:16px;display:flex}.delegation-sheet-field label,.delegation-sheet-field-label{color:var(--text-muted);font-size:14px}.delegation-sheet-field select{font:inherit;border:1px solid var(--border);min-height:44px;color:var(--text);background:var(--surface);border-radius:4px;padding:8px 10px;font-size:16px}.delegation-sheet-date-row{align-items:center;gap:8px;display:flex}.delegation-sheet-date-row input[type=date]{border:1px solid var(--border);min-height:44px;color:var(--text);background:var(--surface);border-radius:4px;flex:1;padding:8px 10px;font-size:16px}.delegation-sheet-date-row+.delegation-sheet-date-row{margin-top:8px}.delegation-user-select-button{border:1px solid var(--border);background:var(--surface);width:100%;min-height:44px;color:var(--text);font:inherit;border-radius:4px;justify-content:space-between;align-items:center;padding:8px 10px;font-size:16px;display:flex}.delegation-user-sheet-list{overflow-y:auto}.delegation-user-sheet-row{border:none;border-bottom:1px solid var(--readonly-bg);width:100%;min-height:52px;font:inherit;color:var(--text);text-align:left;cursor:pointer;background:0 0;justify-content:space-between;align-items:center;padding:0 16px;font-size:15px;display:flex}.delegation-user-sheet-row--selected{background:var(--accent-bg);color:var(--accent);font-weight:700}.modal-footer{justify-content:flex-end;gap:8px;margin-top:20px;display:flex}.bulk-apply-date-cell{border:1px solid var(--border);background:var(--surface);min-width:0;color:var(--text);cursor:pointer;border-radius:6px;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;display:flex}.bulk-apply-date-cell-month{font-size:9px}.bulk-apply-date-cell-day{font-size:13px;font-weight:700}.bulk-apply-date-cell.weekend{background:var(--weekend-bg)}.bulk-apply-date-cell.selected{background:var(--accent);border-color:var(--accent);color:#fff}.bulk-apply-date-cell.disabled{background:var(--readonly-bg);color:var(--text-muted);cursor:not-allowed}.leave-calendar-grid{border:none;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;min-width:0;margin:0 0 16px;padding:0;display:grid}.leave-calendar-grid legend{color:var(--text-muted);grid-column:1/-1;padding:0 0 8px;font-size:13px}.leave-calendar-weekday-row{display:contents}.leave-calendar-weekday-label{text-align:center;color:var(--text-muted);padding-bottom:4px;font-size:12px}.leave-calendar-pad{visibility:hidden}.leave-request-form select{width:auto;min-width:120px}.hourly-leave-time-range{color:var(--text-muted);margin:4px 0 0;font-size:13px}.hourly-leave-time-range:empty{margin:0}.hourly-leave-time-range strong{color:var(--text);font-variant-numeric:tabular-nums}.request-type-select-button{border:1px solid var(--border);background:var(--surface);width:100%;min-height:52px;color:var(--text);font:inherit;border-radius:10px;justify-content:space-between;align-items:center;padding:0 12px;font-size:15px;font-weight:500;display:flex}.request-type-sheet{max-height:80%}.request-type-sheet-list{overflow-y:auto}.request-type-sheet-row{border:none;border-bottom:1px solid var(--readonly-bg);width:100%;min-height:52px;font:inherit;color:var(--text);text-align:left;cursor:pointer;background:0 0;justify-content:space-between;align-items:center;padding:0 16px;font-size:15px;display:flex}.request-type-sheet-row--selected{background:var(--accent-bg);color:var(--accent);font-weight:700}.late-early-toggle{gap:8px;display:flex}.late-early-toggle-button{border:1px solid var(--border);background:var(--surface);min-height:44px;color:var(--text);font:inherit;border-radius:10px;flex:1;font-size:14px;font-weight:500}.late-early-toggle-button--active{background:var(--accent);border-color:var(--accent);color:#fff}.bulk-apply-pattern-fields{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.bulk-apply-pattern-group-label{color:var(--text-muted);font-size:13px;font-weight:600}.bulk-apply-pattern-fields label{flex-direction:column;gap:4px;font-size:13px;display:flex}.bulk-actions-bar{border-top:1px solid var(--border);gap:24px;margin-top:16px;padding-top:16px;display:flex}.bulk-actions-hint{color:var(--text-muted);white-space:nowrap;margin:6px 0 0;font-size:12px}:root{--text-faint:#9aa1ab;--text-faintest:#c3c8d0;--accent-bg:#eef4ff;--accent-border-soft:#cfd9f5;--accent-border:#9fbcf5;--info-bg:#fff8e1;--info-border:#f0d896;--disabled-bg:#e8eaee;--disabled-text:#9aa1ab;--holiday-work-border:#e6c893;--mobile-header-height:52px;--bottom-nav-height:73px}.material-symbols-outlined{font-variation-settings:"FILL" 0, "wght" 400, "GRAD" 0, "opsz" 20;vertical-align:middle;font-size:20px;line-height:1}@keyframes sheetUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.side-nav .nav-icon{display:none}.app-header{min-height:var(--mobile-header-height);background:var(--accent);color:#fff;z-index:21;align-items:center;gap:10px;padding:8px 16px;display:flex;position:sticky;top:0}.app-header .status-badge{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.app-header-system-name{white-space:nowrap;font-size:14px;font-weight:700}.app-header-title{text-overflow:ellipsis;white-space:nowrap;margin-right:auto;font-size:16px;font-weight:700;overflow:hidden}.app-header-back-button{color:#fff;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;align-items:center;margin-right:auto;padding:0;font-size:16px;font-weight:700;display:flex;overflow:hidden}.app-header-action-button{color:#fff;white-space:nowrap;background:#ffffff38;border:none;border-radius:8px;flex-shrink:0;height:32px;padding:0 12px;font-size:13px;font-weight:700}.app-header-opinion-button{color:#fff;cursor:pointer;background:#ffffff38;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.app-header-user{flex-shrink:0;position:relative}.app-header-user-button{color:#fff;cursor:pointer;background:#ffffff38;border:none;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:13px;font-weight:700;display:flex}.app-header-popover{z-index:22;background:var(--surface);min-width:170px;color:var(--text);border:1px solid var(--border);white-space:nowrap;text-align:left;border-radius:8px;padding:10px 12px;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 4px 12px #00000026}.app-header-popover-dept{color:var(--text-muted);margin:0;font-size:11px}.app-header-popover-name{margin:2px 0 0;font-size:13px;font-weight:700}.app-header-popover-balance{border-top:1px solid var(--border);margin-top:8px;padding-top:8px}.app-header-popover-balance-list{margin:0;padding:0;font-size:12px;line-height:1.6;list-style:none}.app-header-popover-balance-error{color:var(--text-muted);margin:0;font-size:12px}.app-header-popover-actions{border-top:1px solid var(--border);flex-direction:column;gap:2px;margin-top:10px;padding-top:10px;display:flex}.app-header-popover-action{color:var(--text);font:inherit;text-align:left;white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;gap:8px;padding:8px 4px;font-size:13px;display:flex}.app-header-popover-action:hover{background:var(--bg)}@media (width<=1365px){.app-header{padding-top:calc(8px + env(safe-area-inset-top,0px))}}.bottom-nav{display:none}.more-profile-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;align-items:center;gap:12px;margin-bottom:20px;padding:16px;display:flex}.more-profile-avatar{background:var(--accent-bg);width:44px;height:44px;color:var(--accent);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;font-size:16px;font-weight:700;display:flex}.more-profile-name{margin:0;font-size:15px;font-weight:700}.more-profile-meta{color:var(--text-muted);margin:2px 0 0;font-size:11px}.more-section{margin-bottom:20px}.more-section h2{color:var(--text-muted);margin-bottom:4px;font-size:13px}.more-list-item{width:100%;min-height:44px;font:inherit;color:var(--text);background:var(--surface);border:none;border-bottom:1px solid var(--border);text-align:left;cursor:pointer;justify-content:space-between;align-items:center;padding:12px;font-size:14px;text-decoration:none;display:flex}.more-list-item--pc-only{opacity:.6}.more-pc-chip{background:var(--readonly-bg);color:var(--text-muted);border-radius:6px;padding:3px 7px;font-size:10px;font-weight:700}.more-pc-only-notice{color:var(--text-muted);margin:8px 0 0;font-size:12px}.more-logout-button{border:1px solid var(--border);background:var(--surface);width:100%;min-height:52px;color:var(--danger);font:inherit;cursor:pointer;border-radius:12px;margin-top:8px;font-weight:500}@media (width<=1365px){nav.side-nav{display:none}.bottom-nav{z-index:30;height:calc(var(--bottom-nav-height) + env(safe-area-inset-bottom,0px));background:var(--surface);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom,0px);box-sizing:border-box;display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav-link{min-height:60px;color:var(--text-muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;padding:6px 0;font-size:10px;text-decoration:none;display:flex;position:relative}.bottom-nav-link.active{color:var(--accent)}.bottom-nav-badge{background:var(--danger);color:#fff;text-align:center;border-radius:999px;min-width:16px;height:16px;padding:0 3px;font-size:10px;font-weight:700;line-height:16px;position:absolute;top:2px;right:calc(50% - 20px)}.app-body>.page{padding-bottom:calc(var(--bottom-nav-height) + env(safe-area-inset-bottom,0px) + 16px)}.modal-overlay{align-items:flex-end}.modal-content{border-radius:18px 18px 0 0;width:100%;max-width:100%;max-height:92%;transition:transform .2s ease-out;animation:.26s cubic-bezier(.32,.72,0,1) sheetUp}.modal-content--tall{flex-direction:column;height:92%;display:flex}.modal-content--tall form{flex-direction:column;flex:1;min-height:0;display:flex}.modal-content--tall .modal-footer{margin-top:auto}.delegation-user-sheet{max-height:80%}.leave-request-form select,.leave-request-form input[type=text],.leave-request-form input[type=date],.leave-request-form textarea{min-height:44px;font-size:16px}.leave-request-form textarea{min-height:80px}.bulk-apply-date-cell{min-height:44px}}.mobile-header{background:var(--surface);border-bottom:1px solid var(--border);margin:-24px -16px 16px;padding:12px 16px 10px}.mobile-period-nav{justify-content:center;align-items:center;gap:8px;margin-top:10px;font-size:14px;display:flex}.mobile-summary-tiles{gap:8px;margin-top:10px;display:flex}.mobile-summary-tile{background:var(--bg);font:inherit;cursor:pointer;border:1px solid #0000;border-radius:10px;flex-direction:column;flex:1;align-items:center;gap:2px;padding:7px 9px;display:flex}.mobile-summary-tile--warning{background:var(--warning-bg);border-color:var(--holiday-work-border);color:var(--warning)}.mobile-summary-label{color:var(--text-muted);font-size:10px}.mobile-summary-value{font-size:15px;font-weight:700}.mobile-day-list{padding-bottom:180px}.mobile-day-card{background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:12px;margin-bottom:8px;padding:12px;box-shadow:0 1px 2px #1018280a}.mobile-day-card.weekend{background:var(--weekend-bg)}.mobile-day-card.holiday-worked{background:var(--warning-bg);border-color:var(--holiday-work-border)}.mobile-day-card--flash{box-shadow:0 0 0 2px var(--warning)}.mobile-day-card-row1{align-items:center;gap:8px;display:flex}.mobile-day-date{flex-direction:column;flex-shrink:0;width:46px;display:flex}.mobile-day-date-num{font-size:15px;font-weight:700;line-height:1.2}.mobile-day-weekday{color:var(--text-muted);font-size:11px}.mobile-day-badges{flex:1;min-width:0}.mobile-day-hours{text-align:right;flex-direction:column;flex-shrink:0;display:flex}.mobile-day-worked{font-size:15px;font-weight:700}.mobile-day-overtime{color:var(--text-muted);font-size:10px}.mobile-day-chevron{color:var(--text-faintest);flex-shrink:0}.mobile-day-card-row2{align-items:center;gap:6px;margin-top:8px;font-size:13px;display:flex}.mobile-day-times{font-variant-numeric:tabular-nums}.mobile-day-times--missing{color:var(--warning)}.mobile-day-rest-chip{color:var(--text-muted);background:#0000000a;border-radius:6px;padding:2px 7px;font-size:11px}.mobile-day-card-row3{border-top:1px dashed var(--border);color:var(--text-muted);margin-top:7px;padding-top:7px;font-size:12px;line-height:1.5}.leave-request-list{padding:10px 12px 24px}.leave-request-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;margin-bottom:8px;padding:12px;box-shadow:0 1px 2px #1018280a}.leave-request-card--clickable{cursor:pointer;align-items:center;gap:10px;display:flex}.leave-request-card--clickable .leave-request-card-body{flex:1;min-width:0}.leave-request-card-row1{align-items:center;gap:8px;display:flex}.leave-request-card-date{flex-shrink:0;font-size:14px;font-weight:700}.leave-request-card-weekday{color:var(--text-muted);font-size:11px;font-weight:400}.leave-request-type-chip{background:var(--readonly-bg);min-width:0;color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;border-radius:999px;flex:1;padding:3px 8px;font-size:11px;font-weight:500;overflow:hidden}.leave-request-card-reason{margin:7px 0 0;font-size:13px;line-height:1.5}.leave-request-card-submitted{color:var(--text-muted);margin:3px 0 0;font-size:12px}.leave-request-card-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:8px;display:flex}.approval-segment{background:var(--readonly-bg);border-radius:10px;gap:3px;margin-bottom:12px;padding:3px;display:flex}.approval-segment-tab{height:34px;color:var(--text-muted);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:8px;flex:1;font-size:13px;font-weight:700}.approval-segment-tab--active{background:var(--surface);color:var(--text);box-shadow:0 1px 2px #1018281f}.approval-subtab-row{border-bottom:1px solid var(--border);gap:16px;margin-bottom:12px;display:flex}.approval-subtab{color:var(--text-muted);font:inherit;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:8px 2px;font-size:13px;font-weight:700}.approval-subtab--active{color:var(--accent);border-bottom-color:var(--accent)}.approval-card-list{padding-bottom:90px}.approval-card{background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:12px;align-items:center;gap:10px;margin-bottom:8px;padding:12px;display:flex;box-shadow:0 1px 2px #1018280a}.approval-card--selected{border-color:var(--accent-border)}.approval-card--static{cursor:default}.approval-card-checkbox{flex-shrink:0;width:24px;height:24px}.approval-card-checkbox-slot{flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;display:inline-flex}.approval-card-body{flex:1;min-width:0}.approval-card-row1{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.approval-card-name{font-size:15px;font-weight:700}.approval-card-subject{margin:5px 0 0;font-size:13px}.approval-card-meta{color:var(--text-muted);margin:3px 0 0;font-size:11px}.approval-card-chevron{color:var(--text-faintest);flex-shrink:0}.approval-bulk-bar{padding:10px 12px}.approval-bulk-button{border-radius:10px;width:100%;height:48px;font-size:15px;font-weight:700}.approval-attendance-preview-sp{border:1px solid var(--border);border-radius:12px;overflow:hidden}.approval-attendance-preview-row{border-bottom:1px solid var(--readonly-bg);grid-template-columns:38px 44px 92px 40px minmax(0,1fr);align-items:center;gap:6px;padding:6px 8px;font-size:11px;display:grid}.approval-attendance-preview-row:last-child{border-bottom:none}.approval-attendance-preview-row.weekend{background:var(--weekend-bg)}.approval-attendance-preview-row.holiday-worked{background:var(--warning-bg)}.approval-attendance-preview-date{flex-direction:column;font-weight:700;display:flex}.approval-attendance-preview-weekday{color:var(--text-muted);font-size:9px;font-weight:400}.approval-attendance-preview-type{color:var(--text-muted);font-size:9px;font-weight:700}.approval-attendance-preview-type-button{font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.approval-attendance-preview-time{font-variant-numeric:tabular-nums}.approval-attendance-preview-worked{text-align:right;font-weight:700}.approval-attendance-preview-remarks{min-width:0;color:var(--text-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.45;display:-webkit-box;overflow:hidden}.approval-timeline{margin:0;padding:0;list-style:none}.approval-timeline-item{padding:0 0 14px 18px;font-size:13px;position:relative}.approval-timeline-item:before{content:"";background:var(--accent);border-radius:50%;width:8px;height:8px;position:absolute;top:5px;left:0}.approval-timeline-item:after{content:"";background:var(--border);width:1px;position:absolute;top:13px;bottom:0;left:3px}.approval-timeline-item:last-child:after{display:none}.approval-detail-footer-sp{gap:8px;margin-top:24px;display:flex}.approval-detail-reject-button{border-radius:12px;flex-shrink:0;width:112px;height:50px}.approval-detail-approve-button{border-radius:12px;flex:1;height:50px;font-size:15px}.reject-reason-textarea{min-height:110px;font:inherit;border:1px solid var(--border);color:var(--text);background:var(--surface);border-radius:10px;padding:8px 10px;font-size:14px}.mobile-action-bar{left:0;right:0;bottom:calc(var(--bottom-nav-height) + env(safe-area-inset-bottom,0px));-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--border);z-index:25;background:#ffffffeb;gap:8px;padding:10px 12px;display:flex;position:fixed}.btn-clock{background:var(--accent);color:#fff;border:1px solid var(--accent);border-radius:10px;justify-content:center;align-items:center;gap:7px;font-size:12px;font-weight:600;display:inline-flex}.btn-clock:disabled{background:var(--bg);color:var(--text-muted);border-color:var(--border);cursor:not-allowed}.btn-clock-icon{font-size:13px}.btn-clock-text{text-align:left;flex-direction:column;display:flex}.btn-clock-label{font-size:15px;font-weight:700;line-height:1.2}.btn-clock-sub{opacity:.82;font-variant-numeric:tabular-nums;font-size:10px;line-height:1.3}.mobile-action-bar .btn-clock{flex:1;height:48px}.mobile-action-chip{box-sizing:border-box;text-align:center;border-radius:10px;flex:none;width:74px;height:48px;font-size:11px;line-height:1.3}.mobile-action-chip--neutral{border:1px solid var(--border);background:var(--surface);color:var(--text-muted);font-weight:500}.mobile-action-chip--submit-disabled{border:1px solid var(--border);background:var(--surface);color:var(--disabled-text);font-weight:500}.mobile-action-chip--submit-active{border:1px solid var(--accent);background:var(--accent-bg);color:var(--accent);font-weight:700}.btn-soft-disabled{background:var(--disabled-bg);color:var(--disabled-text);border:1px solid var(--border)}.mobile-locked-action-button{flex:1;height:48px;font-size:14px}.sheet-handle{box-sizing:content-box;background:var(--border);touch-action:none;cursor:grab;background-clip:content-box;border-radius:99px;width:36px;height:4px;margin:-14px auto -4px;padding:14px 20px}.sheet-handle:active{cursor:grabbing}.sheet-header-actions{align-items:center;gap:12px;display:flex}.sheet-delete-button{padding:4px 10px;font-size:12px}.sheet-quick-actions{gap:8px;margin-bottom:14px;display:flex}.btn-quick{border:1px solid var(--accent-border-soft);background:var(--accent-bg);height:40px;color:var(--accent);border-radius:10px;flex:1;font-size:13px}.btn-quick--secondary{background:var(--surface);border-color:var(--border);color:var(--text)}.chip-field{flex-direction:column;gap:4px;display:flex}.chip-field-label{color:var(--text-muted);font-size:14px}.time-fields{gap:10px;margin-bottom:14px;display:flex}.time-field{flex-direction:column;flex:1;gap:6px;display:flex}.time-field-value{border:1px solid var(--border);background:var(--surface);width:100%;height:56px;color:var(--text);text-align:center;font-variant-numeric:tabular-nums;border-radius:10px;font-size:22px;font-weight:700}.time-field-value--empty{color:var(--text-faintest)}.time-field-value--active{border-color:var(--accent);background:var(--accent-bg);color:var(--accent)}.time-wheel{border:1px solid var(--border);border-radius:10px;margin-bottom:14px;overflow:hidden}.time-wheel-bar{background:var(--surface);border-bottom:1px solid var(--border);color:var(--text-muted);justify-content:space-between;align-items:center;padding:8px 16px;font-size:13px;display:flex}.time-wheel-actions{align-items:center;gap:8px;display:flex}.time-wheel-done{background:var(--accent);color:#fff;border:none;border-radius:6px;padding:5px 14px;font-size:13px;font-weight:600}.time-wheel-done:hover{background:var(--accent-hover)}.time-wheel-clear{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:5px 14px;font-size:13px;font-weight:600}.time-wheel-clear:hover{background:var(--readonly-bg)}.time-wheel-body{background:var(--bg);height:210px;position:relative}.time-wheel-frame{background:var(--accent-bg);pointer-events:none;border-radius:9px;height:42px;margin-top:-21px;position:absolute;top:50%;left:12px;right:12px}.time-wheel-scroll{scroll-snap-type:y mandatory;overscroll-behavior:contain;height:100%;position:relative;overflow-y:scroll}.time-wheel-row{scroll-snap-align:center;font-variant-numeric:tabular-nums;width:100%;height:42px;color:var(--text-faint);background:0 0;border:none;justify-content:center;align-items:center;font-size:18px;display:flex}.time-wheel-row--pad{scroll-snap-align:none}.time-wheel-row--d1{color:var(--text-muted);font-size:20px}.time-wheel-row--d0{color:var(--text);font-size:25px;font-weight:700}.rest-stepper{align-items:center;gap:12px;margin:12px 0;display:flex}.rest-stepper-label{width:56px;color:var(--text-muted);font-size:13px}.rest-stepper button{border:1px solid var(--border);background:var(--surface);border-radius:10px;width:44px;height:44px}.rest-stepper-value{text-align:center;min-width:32px;font-size:16px;font-weight:700}.sheet-calc-result{background:var(--bg);border-radius:10px;margin-bottom:16px;padding:10px;display:flex}.sheet-calc-result>div{flex-direction:column;flex:1;align-items:center;display:flex}.sheet-calc-label{color:var(--text-muted);font-size:10px}.sheet-calc-value{font-size:16px;font-weight:700}
