:root{--color-bg: #f4f5f7;--color-surface: #ffffff;--color-border: #e2e4e9;--color-border-strong: #c9cdd6;--color-text: #1c1f26;--color-text-muted: #62697a;--color-text-faint: #8a90a0;--color-primary: #2952e3;--color-primary-hover: #1f42c2;--color-primary-bg: #eef1fd;--color-success: #1f8a4c;--color-success-bg: #e9f7ef;--color-warning: #e07b00;--color-warning-bg: #fff3e0;--color-warning-text: #8a4b00;--color-confirm: #1f8a4c;--color-confirm-bg: #e9f7ef;--rule-critical: #b3261e;--rule-very-important: #d93025;--rule-important: #e07b00;--rule-normal: #b58a00;--rule-low: #8a90a0;--radius-sm: 4px;--radius-md: 8px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--font-size-sm: 13px;--font-size-md: 14px;--font-size-lg: 16px;--font-size-xl: 20px;--sidebar-width: 220px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:Pretendard,Apple SD Gothic Neo,Malgun Gothic,-apple-system,BlinkMacSystemFont,sans-serif;font-size:var(--font-size-md);line-height:1.5;-webkit-font-smoothing:antialiased}button{font-family:inherit;font-size:inherit;cursor:pointer}input,select{font-family:inherit;font-size:inherit}.app-shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-width);flex-shrink:0;background:var(--color-surface);border-right:1px solid var(--color-border);display:flex;flex-direction:column;padding:var(--space-4) var(--space-3)}.sidebar__logo{font-size:var(--font-size-lg);font-weight:700;padding:0 var(--space-2);margin-bottom:var(--space-5)}.sidebar__logo-sub{display:block;font-size:var(--font-size-sm);font-weight:400;color:var(--color-text-muted);margin-top:2px}.sidebar__section-title{font-size:11px;font-weight:600;color:var(--color-text-faint);letter-spacing:.04em;padding:0 var(--space-2);margin:var(--space-4) 0 var(--space-1)}.sidebar__nav{display:flex;flex-direction:column;gap:2px}.sidebar__nav-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-2);border:none;background:transparent;border-radius:var(--radius-sm);color:var(--color-text);text-align:left;width:100%}.sidebar__nav-item:hover{background:var(--color-bg)}.sidebar__nav-item--active{background:var(--color-primary-bg);color:var(--color-primary);font-size:calc(var(--font-size-base) + 1px);font-weight:700}.sidebar__nav-item--active:hover{background:var(--color-primary-bg)}.sidebar__nav-item--muted{color:var(--color-text-muted)}.sidebar__nav-item--disabled{color:var(--color-text-faint);font-size:var(--font-size-sm);cursor:default}.sidebar__nav-item--label{font-size:12px;font-weight:600;padding-bottom:0;cursor:default}.sidebar__nav-item--sub{padding-left:var(--space-5);font-size:var(--font-size-sm);color:var(--color-text-muted)}.sidebar__draft-row{justify-content:space-between;cursor:pointer}.sidebar__draft-row--active{background:var(--color-primary-bg);color:var(--color-primary);font-weight:700}.sidebar__draft-row--active:hover{background:var(--color-primary-bg)}.sidebar__draft-row__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar__draft-row__delete{border:none;background:transparent;color:var(--color-text-faint);font-size:14px;line-height:1;padding:2px 6px;border-radius:var(--radius-sm);cursor:pointer}.sidebar__draft-row__delete:hover{color:var(--rule-critical);background:var(--color-bg)}.content{flex:1;min-width:0;padding:var(--space-5) var(--space-6)}.content--narrow{max-width:640px;margin:0 auto;padding-top:var(--space-6)}.page-header{margin-bottom:var(--space-5)}.page-header__title{font-size:var(--font-size-xl);font-weight:700;margin:0 0 var(--space-1)}.page-header__desc{color:var(--color-text-muted);margin:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:9px 16px;border-radius:var(--radius-sm);border:1px solid transparent;font-weight:600;transition:background-color .12s ease,border-color .12s ease;white-space:nowrap}.btn:disabled{opacity:.45;cursor:not-allowed}.btn--primary{background:var(--color-primary);color:#fff}.btn--primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn--secondary{background:var(--color-surface);border-color:var(--color-border-strong);color:var(--color-text)}.btn--secondary:hover:not(:disabled){background:var(--color-bg)}.btn--warning{background:var(--color-warning);color:#fff}.btn--warning:hover:not(:disabled){background:#c26600}.btn--confirm-ready{background:var(--color-confirm);color:#fff}.btn--confirm-ready:hover:not(:disabled){background:#176b3c}.btn--ghost{background:transparent;color:var(--color-text-muted);border-color:transparent}.btn--ghost:hover:not(:disabled){background:var(--color-bg)}.btn--danger-outline{background:transparent;border-color:var(--color-border-strong);color:var(--rule-critical)}.btn--lg{padding:13px 20px;font-size:var(--font-size-lg)}.btn--sm{padding:6px 10px;font-size:var(--font-size-sm)}.btn--block{width:100%}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md)}.card--pad{padding:var(--space-4)}.section{margin-bottom:var(--space-6)}.section__title-row{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:var(--space-3)}.section__title{font-size:var(--font-size-lg);font-weight:700;margin:0}.section__count{color:var(--color-text-faint);font-weight:400;font-size:var(--font-size-sm);margin-left:var(--space-2)}.list{display:flex;flex-direction:column;gap:var(--space-2)}.list-row{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md)}.list-row--highlighted{border-color:var(--color-warning);box-shadow:0 0 0 2px var(--color-warning)}.list-row__main{display:flex;flex-direction:column;gap:2px}.list-row__title{font-weight:600}.list-row__meta{font-size:var(--font-size-sm);color:var(--color-text-muted)}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600}.badge--progress{background:var(--color-primary-bg);color:var(--color-primary)}.badge--confirmed{background:var(--color-success-bg);color:var(--color-success)}.empty-state{padding:var(--space-4);text-align:center;color:var(--color-text-faint);border:1px dashed var(--color-border-strong);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.notice-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);background:var(--color-primary-bg);color:var(--color-primary);border:1px solid #c9d4f8;border-radius:var(--radius-sm);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);font-size:var(--font-size-sm)}.notice-banner button{background:none;border:none;color:inherit;font-weight:700}.auto-generation-progress{display:inline-flex;align-items:center;gap:10px}.auto-generation-progress__spinner{width:18px;height:18px;flex:0 0 auto;border:2px solid color-mix(in srgb,var(--color-primary) 24%,transparent);border-top-color:var(--color-primary);border-radius:50%;animation:auto-generation-spin .85s linear infinite}.auto-generation-progress__spinner--sm{width:12px;height:12px;margin-right:4px}@keyframes auto-generation-spin{to{transform:rotate(360deg)}}.cta-banner{display:flex;align-items:center;justify-content:space-between;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-5);margin-bottom:var(--space-6)}.cta-banner__text h2{margin:0 0 var(--space-1);font-size:var(--font-size-xl)}.cta-banner__text p{margin:0;color:var(--color-text-muted)}.wizard-steps{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-5);font-size:var(--font-size-sm);color:var(--color-text-faint)}.wizard-step{display:flex;align-items:center;gap:6px}.wizard-step__num{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:var(--color-border);color:var(--color-text-muted);font-size:11px;font-weight:700}.wizard-step--active{color:var(--color-primary);font-weight:700}.wizard-step--active .wizard-step__num{background:var(--color-primary);color:#fff}.wizard-step--done .wizard-step__num{background:var(--color-success);color:#fff}.wizard-step-sep{width:20px;height:1px;background:var(--color-border-strong)}.form-group{margin-bottom:var(--space-4)}.form-label{display:block;font-weight:600;font-size:var(--font-size-sm);margin-bottom:var(--space-2)}.form-hint{font-size:12px;color:var(--color-text-faint);margin-top:var(--space-1)}.capacity-warning{margin-top:var(--space-2);padding:10px 12px;background:var(--color-warning-bg);border:1px solid var(--color-warning);border-radius:6px}.capacity-warning__text{margin:0;font-size:15px;line-height:1.5;color:var(--color-warning-text)}.capacity-warning__sub{margin:4px 0 0;font-size:13px;line-height:1.4;color:var(--color-warning-text)}.form-row{display:flex;align-items:center;gap:var(--space-3)}.text-input,.date-input,.select-input{border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);padding:8px 10px;background:var(--color-surface);color:var(--color-text);min-width:0}.text-input:focus,.date-input:focus,.select-input:focus,.number-input:focus{outline:2px solid var(--color-primary);outline-offset:1px}.number-input{border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);padding:8px 10px;width:90px;text-align:right}.summary-box{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2)}.summary-box__row{display:flex;align-items:baseline;justify-content:space-between}.summary-box__label{color:var(--color-text-muted);font-size:var(--font-size-sm)}.summary-box__value{font-weight:700}.wizard-actions{display:flex;justify-content:space-between;margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--color-border)}.choice-group{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);margin-bottom:var(--space-5)}.choice-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:var(--space-4);border:1.5px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);text-align:left}.choice-card:hover{border-color:var(--color-primary)}.choice-card--selected{border-color:var(--color-primary);background:var(--color-primary-bg)}.choice-card__title{font-weight:700;font-size:var(--font-size-lg)}.choice-card__desc{color:var(--color-text-muted);font-size:var(--font-size-sm)}.change-entry-form{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4);margin-bottom:var(--space-4);background:var(--color-bg)}.change-entry-form__grid{display:grid;grid-template-columns:110px 1fr 1fr 1fr;gap:var(--space-3);align-items:end}.change-type-note{font-size:12px;color:var(--color-primary);margin-top:var(--space-1)}.entry-table{width:100%;border-collapse:collapse;margin-bottom:var(--space-4)}.entry-table th,.entry-table td{text-align:left;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);font-size:var(--font-size-sm)}.entry-table th{color:var(--color-text-faint);font-weight:600;font-size:12px}.type-tag{display:inline-flex;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:700}.type-tag--입사{background:var(--color-success-bg);color:var(--color-success)}.type-tag--퇴사{background:#fdeceb;color:var(--rule-critical)}.type-tag--휴직{background:#fff4e0;color:var(--rule-important)}.type-tag--복직{background:var(--color-primary-bg);color:var(--color-primary)}.completion-panel{text-align:center;padding:var(--space-6) var(--space-4)}.completion-panel__icon{font-size:40px;margin-bottom:var(--space-3)}.completion-panel h2{margin:0 0 var(--space-2)}.completion-panel p{color:var(--color-text-muted);margin:0 auto var(--space-4);max-width:420px}.type-tag--기타{background:#eceef2;color:var(--color-text-muted)}.rule-group__head{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);margin-bottom:var(--space-3)}.rule-group__title{font-weight:700;font-size:var(--font-size-lg)}.rule-group__desc{color:var(--color-text-faint);font-size:12px;margin-top:2px}.rule-group__items{border-left:3px solid var(--color-border-strong);padding-left:var(--space-3)}.rule-group__item{padding:var(--space-2) 0;border-bottom:1px solid var(--color-border)}.rule-group__item:last-child{border-bottom:none}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#14161e6b;display:flex;align-items:center;justify-content:center;z-index:100}.modal-card{background:var(--color-surface);border-radius:var(--radius-md);width:480px;max-width:calc(100vw - 32px);max-height:calc(100vh - 64px);overflow-y:auto;box-shadow:0 12px 32px #14161e38}.modal-card__header{display:flex;align-items:flex-start;justify-content:space-between;padding:var(--space-4) var(--space-4) var(--space-3);border-bottom:1px solid var(--color-border)}.modal-card__title{font-weight:700;font-size:var(--font-size-lg)}.modal-card__subtitle{color:var(--color-text-muted);font-size:var(--font-size-sm);margin-top:2px}.modal-card__body{padding:var(--space-4)}.modal-card__footer{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-border)}.status-choice-list{display:flex;flex-wrap:wrap;gap:var(--space-2)}.status-option{padding:7px 14px;border-radius:999px;border:1.5px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text);font-weight:600;font-size:var(--font-size-sm)}.status-option--selected{border-color:currentColor;box-shadow:inset 0 0 0 1px currentColor}.status-option.tag--희망휴무.status-option--selected{background:#e3f4f7;color:#0e7490}.status-option.tag--연차.status-option--selected{background:#fbe7f0;color:#a3145f}.status-option.tag--근무불가.status-option--selected{background:#fdeceb;color:#b3261e}.status-option.tag--고정시프트.status-option--selected{background:#eef1fd;color:#2952e3}.shift-pick-list{display:flex;flex-wrap:wrap;gap:var(--space-2)}.shift-pick{display:flex;align-items:center;gap:8px;padding:6px 12px;border-radius:var(--radius-sm);border:1.5px solid var(--color-border-strong);background:var(--color-surface);font-size:var(--font-size-sm)}.shift-pick--selected{background:var(--color-bg);font-weight:700}.shift-fix-pick--selected{background:color-mix(in srgb,var(--shift-color) 22%,var(--color-surface));border-width:3px;box-shadow:0 0 0 2px var(--color-surface),0 0 0 4px var(--shift-color)}.shift-pick__code{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 4px;border-radius:5px;color:#fff;font-size:12px;font-weight:700}.headcount-table{width:100%;border-collapse:collapse}.headcount-table th,.headcount-table td{text-align:left;padding:var(--space-2) var(--space-2);border-bottom:1px solid var(--color-border);font-size:var(--font-size-sm)}.headcount-table th{font-size:12px;color:var(--color-text-faint);font-weight:600}.rule-finding-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.rule-finding{border:1px solid var(--color-border);border-left-width:4px;border-radius:var(--radius-sm);padding:var(--space-3)}.rule-finding--배정불가,.rule-finding--필수{border-left-color:var(--rule-critical)}.rule-finding--매우중요{border-left-color:var(--rule-very-important)}.rule-finding--중요{border-left-color:var(--rule-important)}.rule-finding--보통{border-left-color:var(--rule-normal)}.rule-finding--낮음{border-left-color:var(--rule-low)}.rule-finding__head{display:flex;align-items:center;gap:var(--space-2);margin-bottom:4px}.rule-finding__sev{font-size:12px;font-weight:700;padding:1px 8px;border-radius:999px;white-space:nowrap}.rule-finding__sev--배정불가,.rule-finding__sev--필수{background:#fdeceb;color:var(--rule-critical)}.rule-finding__sev--매우중요{background:#fdeceb;color:var(--rule-very-important)}.rule-finding__sev--중요{background:#fbeede;color:var(--rule-important)}.rule-finding__sev--보통{background:#f8f1d9;color:var(--rule-normal)}.rule-finding__sev--낮음{background:var(--color-bg);color:var(--rule-low)}.rule-finding__name{font-weight:700;font-size:var(--font-size-sm)}.rule-finding__msg{font-size:var(--font-size-sm);color:var(--color-text)}.rule-finding__meta{font-size:12px;color:var(--color-text-muted);margin-top:2px}.cal-legend{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4);margin-bottom:var(--space-3)}.cal-legend__item{display:inline-flex;align-items:center;gap:6px;font-size:var(--font-size-sm);color:var(--color-text-muted)}.cal-legend__swatch{display:inline-block;width:14px;height:14px;border-radius:3px;border:1px solid var(--color-border-strong)}.cal-legend__swatch.tag--희망휴무{background:#e3f4f7;border-color:#0e7490}.cal-legend__swatch.tag--연차{background:#fbe7f0;border-color:#a3145f}.cal-legend__swatch.tag--근무불가{background:#fdeceb;border-color:#b3261e}.cal-legend__swatch.tag--고정시프트{background:#eef1fd;border-color:#2952e3}.cal-legend__swatch--ineligible{background:repeating-linear-gradient(45deg,#e2e4e9,#e2e4e9 4px,#f4f5f7 4px,#f4f5f7 8px)}.cal-scroll-outer{display:flex;flex-direction:column}.cal-scroll-wrapper{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.cal-scroll-wrapper--with-nav{border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom:none}.cal-scroll-nav{display:flex;align-items:center;justify-content:center;gap:12px;padding:6px 12px;border:1px solid var(--color-border);border-top:none;border-bottom-left-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md);background:#fafbfc}.cal-scroll-nav__btn{display:flex;align-items:center;justify-content:center;width:28px;height:24px;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-size:14px;font-weight:700;line-height:1;cursor:pointer}.cal-scroll-nav__btn:hover:not(:disabled){background:var(--color-primary-bg);border-color:var(--color-primary);color:var(--color-primary)}.cal-scroll-nav__btn:disabled{opacity:.35;cursor:default}.cal-scroll-nav__label{font-size:12px;color:var(--color-text-faint);font-weight:500}.shift-scroll-wrapper,.fair-scroll{scrollbar-color:var(--color-border-strong) #f1f3f7;scrollbar-width:thin}.shift-scroll-wrapper::-webkit-scrollbar,.fair-scroll::-webkit-scrollbar{width:10px;height:10px}.shift-scroll-wrapper::-webkit-scrollbar-track,.fair-scroll::-webkit-scrollbar-track{background:#f1f3f7;border-radius:8px}.shift-scroll-wrapper::-webkit-scrollbar-thumb,.fair-scroll::-webkit-scrollbar-thumb{background:#aab3c2;border:2px solid #f1f3f7;border-radius:8px}.shift-scroll-wrapper::-webkit-scrollbar-thumb:hover,.fair-scroll::-webkit-scrollbar-thumb:hover{background:var(--color-primary)}.fair-scroll.fair-scroll--with-nav{border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom:none}.fair-scroll-nav{gap:8px}.cal-table{border-collapse:separate;border-spacing:0;font-size:12px;-webkit-user-select:none;user-select:none;table-layout:fixed}.cal-th,.cal-td{border-bottom:1px solid var(--color-border-strong);border-right:1px solid var(--color-border-strong);white-space:nowrap}.cal-td-date,.cal-th-date,.cal-td-summary,.cal-th-summary,.cal-td-name{overflow:hidden;text-overflow:ellipsis}.cal-th{position:sticky;top:0;background:#fafbfc;z-index:2;padding:var(--cal-cell-padding, 6px) 4px;font-weight:600;color:var(--color-text-muted);text-align:center;border-bottom:2px solid var(--color-border-strong)}.cal-th-name,.cal-td-name{position:sticky;left:0;z-index:6;background:var(--color-surface);text-align:left;padding:8px 12px;min-width:96px;font-weight:600;box-shadow:2px 0 0 var(--color-border-strong)}.cal-th-name{z-index:7;background:#fafbfc;border-bottom:2px solid var(--color-border-strong);font-size:11px;color:var(--color-text-faint);font-weight:700;white-space:pre-line;line-height:1.3}.cal-td-name{font-size:12px}.cal-td-name--headcount{color:var(--color-text-muted);font-weight:700;border-bottom:2px solid var(--color-border-strong)}.cal-th-date{line-height:1.3}.cal-th-date--weekend{background:#fdf1f1;color:var(--rule-very-important)}.cal-th-date__weekday{font-size:10px}.cal-th-date__day{font-size:12px;font-weight:700}.cal-th:not(.cal-th-summary)+.cal-th-summary,.cal-td:not(.cal-td-summary)+.cal-td-summary{border-left:1px solid var(--color-border-strong)}.cal-th-summary{position:sticky;top:0;z-index:7;font-size:10px;line-height:1.25}.cal-td{padding:var(--cal-cell-padding, 4px);text-align:center;height:34px}.cal-td-date{cursor:pointer;position:relative}.cal-td-headcount{cursor:pointer;background:#fafbfc;border-bottom:2px solid var(--color-border-strong)}.cal-td-headcount--override{background:#fff7e6}.headcount-status{display:inline-block;font-weight:600;color:var(--color-text-faint)}.headcount-status--override{color:#b8860b;font-weight:700}.cal-td-name--arrdep{color:var(--color-text-muted);font-weight:700;background:#fafbfc}.cal-td-arrdep{background:#fafbfc}.cal-arrdep-input{width:100%;min-width:0;box-sizing:border-box;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);padding:2px 4px;text-align:center;font-size:inherit;color:var(--color-text);background:var(--color-surface)}.cal-arrdep-input:focus{outline:2px solid var(--color-primary);outline-offset:1px}.cal-td-summary{position:sticky;z-index:6;background:var(--color-surface);font-weight:700;font-size:12px}.cal-row--headcount .cal-td-summary{background:#fafbfc;border-bottom:2px solid var(--color-border-strong)}.cal-td-summary--muted{color:var(--color-text-faint);font-weight:400}.cal-td-summary__tag{display:block;font-size:9px;font-weight:400;color:var(--color-text-faint)}.cal-cell{font-weight:600}.cal-cell__lock{font-size:8px;margin-right:1px;vertical-align:middle}.cal-cell--weekend{background:#fdf6f6}.cal-cell--selected{outline:2px solid var(--color-primary);outline-offset:-2px;background:var(--color-primary-bg)}.cal-cell--copied{outline:2px dashed var(--color-primary);outline-offset:-3px}.cal-issue-outline{outline:3px solid #b3261e;outline-offset:-3px;z-index:4}.cal-issue-advisory{outline:2px dashed #b8860b;outline-offset:-2px;z-index:4}.cal-th-date.cal-issue-outline,.cal-th-date.cal-issue-advisory{z-index:5}.cal-issue-outline--located{animation:calendar-issue-pulse 1.1s ease-in-out 2}.cal-issue-advisory--located{animation:calendar-issue-pulse-advisory 1.1s ease-in-out 2}@keyframes calendar-issue-pulse-advisory{50%{outline-color:#e0b000}}@keyframes calendar-issue-pulse{50%{outline-color:#f05a50}}.full-check-modal{width:620px}.full-check-summary{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.full-check-ok{color:var(--color-success);font-weight:700}.rule-finding__confirmed{margin-left:auto;color:var(--color-text-faint);font-size:11px;font-weight:500}.full-check-locate{margin-top:8px}.cal-cell--wish{background:#e3f4f7;color:#0e7490}.cal-cell--annual{background:#fbe7f0;color:#a3145f}.cal-cell--unavailable{background:#fdeceb;color:#b3261e}.cal-cell--off{background:#eef0f3;color:#5b6470;font-weight:700}.cal-cell__wish-note{display:block;font-size:8px;font-weight:600;color:#0e7490;line-height:1.1}.cal-legend__swatch--off{background:#eef0f3;border-color:#5b6470}.cal-cell--ineligible{background:repeating-linear-gradient(45deg,#e9ebef,#e9ebef 4px,#f4f5f7 4px,#f4f5f7 8px);color:var(--color-text-faint);font-size:9px;cursor:not-allowed;font-weight:400}.cal-cell__memo-dot{position:absolute;top:3px;right:3px;width:5px;height:5px;border-radius:50%;background:var(--rule-important)}.cal-cell__memo-only{color:var(--color-text-faint);font-size:10px;font-weight:400}.shift-dept-tabs{display:flex;gap:var(--space-2);border-bottom:1px solid var(--color-border);margin-bottom:var(--space-4)}.shift-dept-tab{padding:8px 18px;border:none;background:transparent;font-weight:600;font-size:var(--font-size-sm);color:var(--color-text-muted);border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer}.shift-dept-tab:hover{color:var(--color-text)}.shift-dept-tab--active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.shift-settings-table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm);white-space:nowrap}.shift-settings-table th,.shift-settings-table td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--color-border)}.shift-settings-table th{font-size:12px;color:var(--color-text-faint);font-weight:600;background:#fafbfc}.shift-row--inactive{background:#fafbfc;color:var(--color-text-faint)}.shift-settings-table__delete-col{position:sticky;right:0;background:var(--color-surface);box-shadow:-1px 0 0 var(--color-border-strong)}.shift-settings-table th.shift-settings-table__delete-col{background:#fafbfc}.shift-settings-empty{text-align:center;color:var(--color-text-faint);padding:var(--space-5)!important}.shift-color-input{width:40px;height:32px;padding:2px;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);cursor:pointer}.employees-table__handle-col{width:28px}.employees-table__handle{cursor:grab;text-align:center;color:var(--color-text-faint);-webkit-user-select:none;user-select:none;font-size:14px}.employees-table__handle:active{cursor:grabbing}.employees-table__row--over td{border-top:2px solid var(--color-primary)}.employees-table__shift-select{display:inline-flex;align-items:center;gap:8px;min-width:150px;max-width:240px;padding:6px 10px;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);cursor:pointer;text-align:left}.employees-table__shift-select:hover{border-color:var(--color-primary)}.employees-table__shift-select:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.employees-table__shift-chips{display:flex;flex-wrap:wrap;align-items:center;gap:4px;flex:1;min-width:0}.shift-chip{display:inline-block;padding:1px 6px;border-radius:999px;border:1px solid transparent;font-size:11px;font-weight:700;line-height:1.5;white-space:nowrap}.employees-table__chevron{color:var(--color-text-faint);font-size:10px;flex-shrink:0}.employees-table__shift-empty{color:var(--color-text-faint);font-weight:400;font-size:var(--font-size-sm)}.employees-table__shift-blocked{color:var(--color-text-faint);font-size:var(--font-size-sm);font-style:italic}.select-input--warn{border-color:#c2790f;color:#8a5600;background:#fff8ec}.ox-select{font-weight:700;text-align:center}.ox-select--on{background:#e6f4ea;border-color:#0f9d78;color:#0f7a5f}.ox-select--off{background:#fafbfc;color:var(--color-text-faint)}.ox-mark{display:inline-flex;align-items:center;justify-content:center;width:18px;font-weight:700;color:var(--color-text-muted)}.cal-name-btn{all:unset;cursor:pointer;display:inline-flex;align-items:center;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-name-btn{flex-direction:column;align-items:flex-start;max-width:150px}.cal-name-btn__main{display:flex;align-items:center;max-width:100%}.cal-name-btn__attr{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:400;line-height:1.2;color:var(--color-text-muted)}.cal-name-btn:hover,.cal-name-btn:focus-visible{text-decoration:underline}.cal-name-btn .shift-pick__code{font-size:10px;padding:1px 4px;flex-shrink:0}.cal-name-btn__pin{margin-left:4px;font-size:10px;line-height:1;color:var(--color-text-muted);flex-shrink:0}.cal-drag-menu{position:fixed;z-index:90;display:flex;align-items:center;gap:6px;padding:6px 8px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:0 8px 20px #14161e2e;transform:translate(-50%)}.cal-drag-menu__label{font-size:var(--font-size-sm);font-weight:600;margin-right:4px;white-space:nowrap}.dev-badge{position:fixed;top:2px;right:6px;z-index:9999;pointer-events:none;font-size:9px;line-height:1.2;text-align:right;opacity:.45;color:#6b7280}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.fair-period-head{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-2)}.fair-quick{display:flex;gap:var(--space-2);flex-wrap:wrap}.fair-period-list{list-style:none;margin:0 0 var(--space-2);padding:0}.fair-period-row{display:flex;align-items:center;gap:var(--space-3);min-height:44px;cursor:pointer;font-size:var(--font-size-sm)}.fair-period-row input{width:20px;height:20px;flex:none}.fair-tab{min-height:44px}.fair-tab:disabled{opacity:.6;cursor:not-allowed}.fair-tab__hint{display:block;font-size:11px;font-weight:400}.fair-legend{font-size:12px;color:var(--color-text-muted);margin:0 0 var(--space-2)}.fair-legend__warn{background:#fff3e0;border-left:3px solid var(--rule-important);padding:0 4px;color:#8a4b00;font-weight:700}.fair-info-box{background:var(--color-primary-bg);border:1px solid #c9d4f8;border-radius:var(--radius-sm);padding:var(--space-3);margin-bottom:var(--space-2);font-size:var(--font-size-sm)}.fair-scroll{position:relative;overflow:auto;max-height:70vh;border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);max-width:100%;box-shadow:0 1px 3px #14203814}.fair-scroll:focus-visible,.fair-info:focus-visible,.fair-tab:focus-visible,.fair-period-row input:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.fair-scroll-hint{margin:var(--space-1) 0 0}.fair-table{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:var(--font-size-sm)}.fair-table th,.fair-table td{padding:6px 10px;border-bottom:1px solid var(--color-border);text-align:left;vertical-align:top}.fair-th{position:sticky;top:0;z-index:2;background:#fafbfc;min-width:72px;font-size:12px;font-weight:700;color:var(--color-text-muted);border-bottom:2px solid var(--color-border-strong)!important}.fair-th__sub{display:block;font-weight:400;font-size:11px;color:var(--color-text-muted)}.fair-info{border:none;background:transparent;color:var(--color-primary);cursor:pointer;min-width:24px;min-height:24px;font-size:13px;padding:0 2px}.fair-name{position:sticky;left:0;z-index:3;background:var(--color-surface);min-width:104px;max-width:120px;box-shadow:2px 0 0 var(--color-border-strong)}thead .fair-name{z-index:4;background:#fafbfc}.fair-name__main{display:block;font-weight:700}.fair-name__sub{display:block;font-size:11px;font-weight:400;color:var(--color-text-muted)}.fair-cell{min-width:72px}.fair-cell__value{display:block;font-weight:700}.fair-cell__dev{display:block;font-size:11px;color:var(--color-text-muted)}.fair-cell--ref .fair-cell__value{font-weight:400;color:var(--color-text-muted)}.fair-cell--warn{background:#fff3e0;border-left:3px solid var(--rule-important)}.fair-cell--warn .fair-cell__dev,.fair-cell__flag{color:#8a4b00}.fair-row--off td,.fair-row--off th{opacity:.6}.fair-table tfoot th,.fair-table tfoot td{border-top:2px solid var(--color-border-strong);font-weight:700}.fair-details{margin-top:var(--space-3);font-size:var(--font-size-sm)}.fair-details dt{font-weight:700;margin-top:var(--space-2)}.fair-details dd{margin:0;color:var(--color-text-muted)}.fair-foot{padding-left:var(--space-4)}@media (max-width: 600px){.fair-quick{flex-direction:column;width:100%}.fair-quick .btn{width:100%;min-height:44px}.fair-tab{flex:1;padding:8px 4px}}.past-dock{position:sticky;bottom:0;z-index:40;margin-top:auto;background:var(--color-surface)}.past-panel{background:#f4f5f7;border-top:3px solid var(--color-border-strong);display:flex;flex-direction:column}.past-grip{flex:none;height:10px;margin-top:-3px;display:flex;align-items:center;justify-content:center;cursor:row-resize;-webkit-user-select:none;user-select:none;touch-action:none}.past-grip__bar{width:48px;height:4px;border-radius:2px;background:var(--color-border-strong);opacity:.5}.past-grip:hover .past-grip__bar,.past-grip--drag .past-grip__bar{opacity:1;background:var(--color-primary)}.past-grip:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.past-grip:focus-visible .past-grip__bar{opacity:1;background:var(--color-primary)}@media (pointer: coarse),(max-width: 640px){.past-grip{height:24px;margin-top:-8px}}.past-panel__head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;min-height:44px;padding:4px 16px;border-bottom:1px solid var(--color-border)}.past-panel__title{font-weight:600;font-size:var(--font-size-sm)}.past-panel__actions{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}.past-panel__body{flex:1;min-height:0;overflow:auto;padding:0 0 12px}.past-panel__body>p{margin:8px 16px}.past-panel__body:focus-visible,.past-tab:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.past-panel .cal-scroll-wrapper{overflow:visible;border:0;border-radius:0}.past-panel .cal-table{cursor:default}.past-badge{border:1px solid var(--color-text-muted);border-radius:4px;padding:1px 8px;font-size:12px;font-weight:700;color:var(--color-text-muted);background:var(--color-surface)}.past-gone{margin-left:4px;font-size:10px;color:var(--color-text-muted);font-weight:400}.past-tabs{display:flex;align-items:flex-end;gap:4px;height:48px;padding:0 12px;background:var(--color-bg);border-top:1px solid var(--color-border-strong)}.past-tabs__scroller{display:flex;gap:4px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none;align-items:flex-end}.past-tabs__scroller::-webkit-scrollbar{display:none}.past-tabs__empty{flex:1;align-self:center;font-size:12px;color:var(--color-text-muted)}.past-tabs__nav{align-self:center;flex-shrink:0}.past-tabs__nav[hidden]{display:none}.past-tabs__more{align-self:center;flex-shrink:0;white-space:nowrap}.past-tab{flex:0 0 auto;min-width:112px;max-width:148px;height:44px;padding:2px 10px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:0;border:1px solid var(--color-border-strong);border-bottom:none;border-radius:8px 8px 0 0;background:#e9ebf0;color:var(--color-text);cursor:pointer;line-height:1.25;text-align:left;white-space:nowrap}.past-tab:hover{background:var(--color-surface)}.past-tab--selected{background:var(--color-surface);border-bottom:3px solid var(--color-text);font-weight:700}.past-tab--current{margin-left:0;border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-bg);font-weight:700}.past-tab--current.past-tab--selected{border-bottom:3px solid var(--color-primary)}.past-tab__l1{font-size:13px;font-weight:700;overflow:hidden;text-overflow:ellipsis;max-width:100%}.past-tab__l2{font-size:12px;font-weight:400;color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;max-width:100%}.past-tab--current .past-tab__l2{color:var(--color-primary)}.past-tab__recent{font-size:11px;font-weight:700;margin-right:4px;padding:0 4px;border-radius:3px;background:var(--color-text-muted);color:#fff}@media (max-width: 480px){.past-tabs{height:auto;flex-wrap:wrap;padding-top:4px;gap:4px}.past-tabs__scroller{flex:1 1 100%}.past-tabs__more{flex:1 1 100%;min-height:44px}.past-tab{height:52px;min-width:112px}.past-panel__actions{margin-left:0;width:100%}.past-panel__actions .btn{white-space:normal;max-width:100%;flex:1 1 100%}.past-tabs__nav{display:none}.past-panel__actions .btn{min-height:44px}}.overview-modal-card{position:fixed;top:24px;right:24px;bottom:24px;left:24px;width:auto;max-width:none;height:auto;max-height:none;display:flex;flex-direction:column;overflow:hidden}.overview-modal-card .modal-card__header{padding:10px 16px 8px}.overview-modal-body{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden;padding:8px 16px}.overview-modal-body .cal-legend{margin-bottom:6px}.overview-summary-toggle{display:inline-flex;align-items:center;gap:6px;margin-bottom:4px;cursor:pointer}.overview-table-wrapper{flex:1;min-height:0;overflow:auto;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.overview-readonly-hint{margin-top:4px;flex:none}.cal-overview-table .cal-td{height:28px}.cal-overview-table .cal-td-date{cursor:default}.overview-name-cell{width:80px;min-width:0;max-width:80px;height:28px;padding:4px 8px;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.beta-badge{display:inline-flex;align-items:center;margin-top:2px;padding:1px 7px;border-radius:999px;background:var(--color-bg);border:1px solid var(--color-border-strong);color:var(--color-text-muted);font-size:11px;font-weight:700;cursor:default}.link-button{border:none;background:none;padding:0;color:var(--color-primary);text-decoration:underline;cursor:pointer;font-size:inherit}.sidebar__welcome-link{text-align:left;padding:0 var(--space-2);margin-bottom:var(--space-4);font-size:var(--font-size-sm)}.privacy-note{margin:0 0 var(--space-4);padding:var(--space-3) var(--space-4);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-sm);color:var(--color-text-muted)}.welcome-screen{max-width:560px;margin:var(--space-6) auto;display:flex;flex-direction:column;gap:var(--space-4);text-align:center}.welcome-screen__title{margin:0;font-size:var(--font-size-xl)}.welcome-screen__desc{margin:0;color:var(--color-text-muted);line-height:1.6}.welcome-screen__actions{display:flex;justify-content:center;gap:var(--space-4);flex-wrap:wrap}.welcome-screen__privacy{margin:0;font-size:var(--font-size-sm);color:var(--color-text-muted)}.welcome-screen__restore{margin:0;font-size:var(--font-size-sm)}.sample-mode-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);background:var(--color-warning-bg);color:var(--color-warning-text);border-bottom:1px solid var(--color-warning);padding:var(--space-2) var(--space-6);font-size:var(--font-size-sm)}.sample-mode-banner .link-button{color:var(--color-warning-text);font-weight:700}@media (max-width: 480px){.app-shell{flex-direction:column}.sidebar{width:100%;height:auto;border-right:none;border-bottom:1px solid var(--color-border)}.content{padding:var(--space-4) var(--space-3)}.form-row{flex-wrap:wrap}.sample-mode-banner{padding:var(--space-2) var(--space-3);flex-wrap:wrap}.welcome-screen__actions{flex-direction:column}.welcome-screen__actions .btn{width:100%}}
