:root{--bg:#edf2f8;--surface:#fff;--surface-muted:#f4f8fc;--surface-strong:#e8f0f8;--ink:#0f1f35;--muted:#5a6f8a;--muted-strong:#3d5166;--line:#c8d6e8;--line-soft:#d8e6f2;--primary:#174a7c;--primary-hover:#0f3460;--primary-soft:#e3eef9;--success:#047857;--success-soft:#d8f5e8;--warning:#b7791f;--warning-soft:#fef3d0;--danger:#b42318;--danger-soft:#fde8e6;--info:#026aa2;--info-soft:#daeffe;--shadow:0 2px 4px #174a7c0f, 0 12px 36px #174a7c17;--shadow-sm:0 1px 3px #174a7c14, 0 4px 12px #174a7c0f;--radius:8px}*{box-sizing:border-box}html{background:var(--bg);min-height:100%}body{min-height:100vh;color:var(--ink);background:linear-gradient(180deg, #174a7c1a 0, #edf2f800 340px), var(--bg);margin:0;font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button:disabled,input:disabled,select:disabled{cursor:not-allowed;opacity:.62}h1,h2,h3,p{margin:0}h1{font-size:30px;font-weight:720;line-height:1.12}h2{font-size:18px;font-weight:700}h3{font-size:14px;font-weight:700}.app-frame{min-height:100vh}.app-header{z-index:20;background:linear-gradient(135deg,#1b3d63 0%,#0f2240 100%);border-bottom:1px solid #ffffff14;grid-template-columns:minmax(220px,1fr) auto minmax(240px,1fr);align-items:center;gap:20px;min-height:68px;padding:0 28px;display:grid;position:sticky;top:0;box-shadow:0 2px 16px #0a193247}.app-brand,.user-menu,.app-nav{align-items:center;display:flex}.app-brand{color:#fff;gap:10px;font-weight:700}.app-brand span:last-child,.user-menu span{gap:2px;display:grid}.app-brand small,.user-menu small{color:#ffffff8c}.muted{color:var(--muted)}.brand-mark{border-radius:var(--radius);color:#fff;background:#ffffff26;border:1px solid #ffffff38;place-items:center;width:36px;height:36px;font-weight:800;display:inline-grid}.app-nav{background:#ffffff14;border:1px solid #ffffff24;border-radius:999px;flex-wrap:nowrap;justify-content:center;gap:4px;padding:4px}.app-nav a{color:#ffffffa6;white-space:nowrap;border-radius:999px;flex:none;align-items:center;min-height:34px;padding:0 14px;font-weight:650;transition:color .15s;display:inline-flex}.app-nav a.active{color:#fff;background:#ffffff2e;box-shadow:0 1px 4px #0003}.user-menu{color:#fff;justify-content:flex-end;gap:12px}.user-menu strong{color:#fff}.user-menu .button.secondary{color:#fff;box-shadow:none;background:#ffffff1a;border-color:#ffffff38}.user-menu .button.secondary:hover{background:#fff3;border-color:#ffffff59}.shell{width:min(1220px,100vw - 40px);margin:0 auto;padding:28px 0 56px}.stack{gap:18px;display:grid}.page-header{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:22px;display:flex}.page-header div:first-child{gap:8px;max-width:720px;display:grid}.page-header p{color:var(--muted);line-height:1.55}.eyebrow{color:var(--primary);letter-spacing:.08em;text-transform:uppercase;font-size:12px;font-weight:800}.page-actions,.nav,.toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.toolbar{border-radius:var(--radius);box-shadow:var(--shadow-sm);background:linear-gradient(#fff 0%,#f4f9fe 100%);border:1px solid #c8daee;justify-content:space-between;padding:14px}.panel,.card{border:1px solid var(--line-soft);border-radius:var(--radius);box-shadow:var(--shadow);background:linear-gradient(#fff 0%,#f5f9fe 100%);padding:18px}.section-title{justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px;display:flex}.button{color:#fff;cursor:pointer;background:linear-gradient(#1e5899 0%,#174a7c 100%);border:1px solid #ffffff1f;border-radius:6px;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:0 14px;font-weight:700;line-height:1;transition:box-shadow .15s,transform .1s;display:inline-flex;box-shadow:0 1px 3px #174a7c59,0 4px 12px #174a7c2e}.button:hover{background:linear-gradient(#174a7c 0%,#0f3460 100%);transform:translateY(-1px);box-shadow:0 2px 6px #174a7c66,0 6px 18px #174a7c38}.button:active{transform:translateY(0);box-shadow:0 1px 2px #174a7c4d}.button.secondary{border-color:var(--line);color:var(--ink);background:linear-gradient(#fff 0%,#f4f8fc 100%);box-shadow:0 1px 3px #174a7c0f,0 2px 8px #174a7c0a}.button.secondary:hover{border-color:var(--primary);background:linear-gradient(#f4f8fc 0%,#e8f0f8 100%);box-shadow:0 2px 6px #174a7c1a}.button.danger{background:linear-gradient(#d63b2d 0%,#b42318 100%);box-shadow:0 1px 3px #b4231859,0 4px 12px #b423182e}.form-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;display:grid}.form-row{flex-wrap:wrap;align-items:end;gap:12px;display:flex}.field{gap:6px;display:grid}.field label{color:var(--muted-strong);font-size:12px;font-weight:750}.field input,.field select{border:1px solid var(--line);width:100%;min-height:40px;color:var(--ink);background:linear-gradient(#fff 0%,#f8fbfe 100%);border-radius:6px;outline:none;padding:0 11px;transition:border-color .15s,box-shadow .15s}.field input:focus,.field select:focus{border-color:var(--primary);background:#fff;box-shadow:0 0 0 3px #174a7c1f}.field input[type=file]{background:var(--surface-muted);height:auto;padding:12px}.access-account-card{border:1px solid var(--line-soft);background:var(--surface-muted);border-radius:10px;gap:2px;padding:12px 14px;display:grid}.access-account-card small{color:var(--muted-strong)}.feedback,.notice{border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;line-height:1.45}.feedback-info,.notice{background:var(--info-soft);color:#075985;border-color:#bae6fd}.feedback-success{background:var(--success-soft);color:#065f46;border-color:#a7f3d0}.feedback-warning{background:var(--warning-soft);color:#92400e;border-color:#fde68a}.feedback-error,.error{background:var(--danger-soft);color:#991b1b;border-color:#fecaca}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;display:grid}.stat-card{border-radius:var(--radius);min-height:112px;box-shadow:var(--shadow-sm);border:1px solid #cddaee;border-left:4px solid var(--primary);background:linear-gradient(135deg,#fff 0%,#eef5ff 100%);gap:6px;padding:16px;transition:transform .15s,box-shadow .15s;display:grid}.stat-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #174a7c1f,0 16px 40px #174a7c17}.stat-card span{color:var(--muted);text-transform:uppercase;font-size:12px;font-weight:760}.stat-card strong{color:var(--primary);font-size:28px;line-height:1}.stat-card small{color:var(--muted)}.stat-success{border-left-color:var(--success);background:linear-gradient(135deg,#fff 0%,#edfaf3 100%);border-color:#b8e8cf}.stat-success .stat-card strong,.stat-success strong{color:var(--success)}.stat-warning{border-left-color:var(--warning);background:linear-gradient(135deg,#fff 0%,#fffaec 100%);border-color:#f0d99a}.stat-warning strong{color:var(--warning)}.stat-danger{border-left-color:var(--danger);background:linear-gradient(135deg,#fff 0%,#fff4f3 100%);border-color:#f5c5c0}.stat-danger strong{color:var(--danger)}.table-scroll{border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);border:1px solid #c8daee;overflow-x:auto}.data-table{border-collapse:collapse;width:100%;min-width:760px}.data-table th,.data-table td{border-bottom:1px solid var(--line-soft);text-align:left;vertical-align:top;padding:14px}.data-table th{color:var(--primary);text-transform:uppercase;background:linear-gradient(#deeaf8 0%,#d2e3f5 100%);font-size:12px;font-weight:800}.data-table tbody tr:nth-child(2n){background:#fbfcfe}.data-table tbody tr:last-child td{border-bottom:0}.role-pill,.code{border-radius:999px;align-items:center;font-weight:800;display:inline-flex}.role-pill{background:var(--primary-soft);color:var(--primary);padding:4px 8px;font-size:11px}.empty-state{border-radius:var(--radius);background:linear-gradient(135deg,#fff 0%,#f0f7ff 100%);border:1px dashed #9ab4cc;justify-items:start;gap:14px;padding:28px;display:grid}.empty-state p{max-width:620px;color:var(--muted);line-height:1.55}.empty-icon{background:var(--primary-soft);width:42px;height:42px;color:var(--primary);border-radius:50%;place-items:center;font-size:22px;font-weight:800;display:grid}.login-screen{grid-template-columns:minmax(0,1fr) minmax(360px,460px);min-height:100vh;display:grid}.login-aside{color:#fff;background:linear-gradient(135deg,#174a7cf2,#111827f5),#111827;align-content:center;gap:24px;padding:56px;display:grid}.login-aside h1{max-width:560px;font-size:42px}.login-aside p{color:#d7e3f2;max-width:560px;font-size:16px;line-height:1.6}.login-panel{background:var(--surface);align-content:center;padding:40px;display:grid}.login-card{gap:18px;display:grid}.login-help{margin:-2px 0 0;font-size:13px;line-height:1.5}.login-card>div:first-child{gap:8px;display:grid}.schedule-panel{border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);border:1px solid #c8daee;overflow:hidden}.schedule-legend{flex-wrap:wrap;gap:8px;display:flex}.schedule-grid-root{gap:14px;display:grid}.schedule-month-toolbar{border-radius:var(--radius);background:linear-gradient(#fff 0%,#edf4fc 100%);border:1px solid #c8daee;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:14px 16px;display:grid;box-shadow:0 2px 8px #174a7c14,0 1px 2px #174a7c0a}.schedule-month-selector-wrap{gap:6px;min-width:0;display:grid}.schedule-month-toolbar-label{color:var(--muted-strong);letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:800}.schedule-month-select{border:1px solid var(--line);background:var(--surface);width:min(100%,320px);min-height:46px;color:var(--ink);border-radius:10px;padding:0 14px;font-size:16px;font-weight:750;line-height:1.2}.schedule-month-arrow{width:38px;height:38px;color:var(--primary);cursor:pointer;background:linear-gradient(#fff 0%,#f0f6ff 100%);border:1px solid #c0d2e8;border-radius:10px;justify-content:center;align-items:center;font-size:24px;line-height:1;transition:all .15s;display:inline-flex;box-shadow:0 1px 3px #174a7c14}.schedule-month-arrow:hover:not(:disabled){border-color:var(--primary);color:var(--primary);background:linear-gradient(#e8f1fb 0%,#d8e8f7 100%);transform:scale(1.05);box-shadow:0 2px 6px #174a7c26}.schedule-month-arrow:disabled{cursor:default;opacity:.45}.schedule-top-switchbar{justify-content:flex-start;margin-top:-4px;display:flex}.schedule-panel-heading{text-align:center;background:linear-gradient(#edf4fc 0%,#e0edf8 100%);border-bottom:1px solid #c8daee;padding:14px 16px 12px}.schedule-panel-heading h3{color:var(--ink);margin:0;font-size:28px;line-height:1.05}.schedule-viewbar{background:linear-gradient(#f4f9ff 0%,#edf4fc 100%);border-bottom:1px solid #c8daee;justify-content:space-between;align-items:center;gap:14px;padding:12px 16px;display:flex}.schedule-viewbar-main{align-items:center;gap:14px;min-width:0;display:flex}.schedule-inline-notice{border-bottom:1px solid var(--line-soft);background:var(--info-soft);color:var(--info);padding:10px 16px;font-size:12px;font-weight:700}.schedule-view-switch{border:1px solid var(--line-soft);background:var(--surface-muted);border-radius:999px;gap:4px;padding:4px;display:inline-flex}.schedule-view-switch button{min-height:34px;color:var(--muted-strong);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:0 14px;font-weight:700}.schedule-view-switch button.is-active{background:var(--surface);color:var(--primary);box-shadow:0 1px 3px #1018281f}.schedule-employee-picker{gap:6px;min-width:240px;display:grid}.schedule-employee-picker span{color:var(--muted-strong);font-size:12px;font-weight:750}.schedule-employee-picker select{border:1px solid var(--line);background:var(--surface);width:100%;min-height:40px;color:var(--ink);border-radius:6px;padding:0 11px;font-weight:700}.day-preview-container{grid-template-rows:0fr;transition:grid-template-rows .3s cubic-bezier(.4,0,.2,1);display:grid}.day-preview-container.is-open{grid-template-rows:1fr}.day-preview-inner{min-height:0;overflow:hidden}.day-preview{border-radius:var(--radius);box-shadow:var(--shadow);background:linear-gradient(#f4f9ff 0%,#edf4fc 100%);border:1px solid #c8daee;gap:14px;padding:16px;display:grid}.day-preview-header{grid-template-columns:1fr auto;align-items:center;gap:16px;display:grid}.day-preview-header h3{margin:0;font-size:24px;line-height:1.15}.day-preview-title{text-align:center;justify-self:center}.day-preview-arrow{border:1px solid var(--line);background:var(--surface);width:32px;height:32px;color:var(--muted-strong);cursor:pointer;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;font-size:20px;line-height:1;display:inline-flex}.day-preview-arrow:hover:not(:disabled){border-color:var(--primary);background:var(--primary-soft);color:var(--primary)}.day-preview-summary{flex-wrap:wrap;gap:8px;display:flex}.day-preview-summary span{border:1px solid var(--line);background:var(--surface);color:var(--muted-strong);border-radius:999px;padding:5px 9px;font-size:12px;font-weight:750}.day-timeline-h-wrap{border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--surface);overflow-x:auto}.day-timeline-h{min-width:max-content;display:grid}.timeline-h-name-header{z-index:6;border-right:1px solid var(--line);border-bottom:1px solid var(--line-soft);background:#f8fafc;position:sticky;left:0}.timeline-h-guides{z-index:0;pointer-events:none;background-image:repeating-linear-gradient(to right, transparent 0, transparent 23px, var(--line-soft) 23px, var(--line-soft) 24px);background-size:24px 100%}.timeline-h-hour-vline{z-index:1;pointer-events:none;border-left:1px solid var(--line)}.timeline-h-hour-label{z-index:3;border-bottom:1px solid var(--line-soft);border-left:1px solid var(--line);color:var(--primary);white-space:nowrap;background:#f8fafc;align-items:center;padding:0 6px;font-size:11px;font-weight:800;display:flex;overflow:hidden}.timeline-h-worker-name{z-index:5;border-right:1px solid var(--line);border-bottom:1px solid var(--line-soft);background:var(--surface);color:var(--muted-strong);white-space:nowrap;text-overflow:ellipsis;align-items:center;padding:0 12px;font-size:12px;font-weight:700;display:flex;position:sticky;left:0;overflow:hidden}.timeline-h-work-block{z-index:4;color:#12395b;background:#eff7ffdb;border:1px solid #86a3c394;border-radius:4px;justify-content:center;align-self:center;align-items:center;height:calc(100% - 8px);margin:0 2px;padding:0 8px;display:flex;position:relative;overflow:hidden}.timeline-h-work-label{white-space:nowrap;text-overflow:ellipsis;pointer-events:none;font-size:11px;font-weight:800;overflow:hidden}.timeline-h-break-block{pointer-events:none;background:#fff4d6eb;border-left:1px solid #f2c98f;border-right:1px solid #f2c98f;position:absolute;top:0;bottom:0}.timeline-h-break-connector{z-index:4;color:#92400e;background:#fff4d6e6;border:1px solid #f2c98f;border-radius:4px;justify-content:center;align-self:center;align-items:center;height:calc(100% - 8px);margin:0 2px;padding:0 8px;display:flex;position:relative;overflow:hidden}.timeline-density-band{z-index:0;pointer-events:none;min-height:10px}.timeline-density-value{z-index:3;border-left:1px solid var(--line-soft);border-right:1px solid var(--line-soft);pointer-events:none;justify-content:center;align-items:center;min-height:10px;display:flex}.timeline-density-count{color:#17456e;font-size:11px;font-weight:900;line-height:1;display:block}.timeline-density-value.density-0{background:0 0}.timeline-density-value.density-1{background:#f1f7fdb3}.timeline-density-value.density-2{background:#e2eefad1}.timeline-density-value.density-3{background:#cfe0f1e6}.timeline-density-value.density-4{background:#b8cfe8f5}.timeline-density-band.density-0{background:0 0}.timeline-density-band.density-1{background:#f1f7fdb3}.timeline-density-band.density-2{background:#e2eefad1}.timeline-density-band.density-3{background:#cfe0f1e6}.timeline-density-band.density-4{background:#b8cfe8f5}.timeline-work-block{z-index:4;color:#12395b;text-align:center;background:#eff7ffdb;border:1px solid #86a3c394;border-radius:6px;justify-content:center;justify-self:stretch;align-items:flex-start;min-width:0;margin:2px 0;padding:8px 10px;font-size:12px;font-weight:800;display:flex;position:relative;overflow:hidden}.timeline-break-block{z-index:5;color:#92400e;text-transform:uppercase;background:#fff4d6f2;border-top:1px solid #f2c98f;border-bottom:1px solid #f2c98f;place-items:center;padding:2px;font-size:10px;font-weight:900;line-height:1.2;display:grid;position:absolute;left:0;right:0}.day-preview-empty{border-radius:var(--radius);background:var(--surface);color:var(--muted);border:1px dashed #b8c2d1;padding:14px}.individual-schedule-wrap{background:linear-gradient(180deg, #edf4fce6 0%, #fff0 200px), var(--surface);gap:14px;padding:16px;display:grid}.individual-schedule-meta{justify-content:space-between;align-items:center;gap:18px;padding:2px 2px 0;display:flex}.individual-schedule-meta div{gap:4px;display:grid}.individual-schedule-meta strong{color:var(--ink);letter-spacing:0;font-size:18px}.individual-schedule-meta small{color:var(--muted);font-weight:650}.individual-schedule-stats{flex-wrap:wrap;justify-content:flex-end;align-items:stretch;gap:8px!important;display:flex!important}.individual-schedule-stats span{border:1px solid var(--line-soft);background:#ffffffdb;border-radius:7px;gap:2px;min-width:82px;padding:8px 10px;display:grid}.individual-schedule-stats strong{color:var(--primary);font-size:14px;line-height:1}.individual-schedule-stats small{color:var(--muted);text-transform:uppercase;font-size:10px;font-weight:800}.individual-schedule-scroll{border-radius:var(--radius);background:#fff;border:1px solid #dbe4ef;overflow:auto;box-shadow:inset 0 1px #ffffffe6}.individual-schedule-grid{width:max-content;min-width:max-content;display:grid;position:relative}.individual-time-corner{z-index:7;border-right:1px solid var(--line);border-bottom:1px solid var(--line-soft);background:#f7f9fc;position:sticky;top:0;left:0}.individual-time-column{z-index:6;border-right:1px solid var(--line);background:#fff;position:sticky;left:0;box-shadow:6px 0 12px #1018280a}.individual-day-header{z-index:6;border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);text-align:left;background:#f7f9fc;align-content:center;gap:2px;padding:7px 9px;display:grid;position:sticky;top:0}.individual-day-header.weekend{background:#d9e0e8}.individual-day-header.holiday{background:#edf2f7}.individual-day-header strong{color:var(--ink);font-size:15px;line-height:1}.individual-day-header span{color:var(--muted);text-transform:uppercase;font-size:11px;font-weight:750}.individual-day-header em{color:var(--primary);font-size:10px;font-style:normal;font-weight:800}.individual-grid-guides{z-index:0;pointer-events:none;background-image:repeating-linear-gradient(to right, transparent 0, transparent calc(100% - 1px), var(--line-soft) calc(100% - 1px), var(--line-soft) 100%), repeating-linear-gradient(to bottom, transparent 0, transparent calc(var(--individual-slot-height) - 1px), #d6e2efad calc(var(--individual-slot-height) - 1px), #d6e2efad var(--individual-slot-height));background-size:var(--individual-day-width) 100%, 100% var(--individual-slot-height)}.individual-hour-label{z-index:7;width:100%;min-height:var(--individual-slot-height);border-right:1px solid var(--line);color:var(--primary);background:#fff;align-self:start;align-items:flex-start;padding:0 10px;font-size:12px;font-weight:800;display:flex;position:sticky;left:0;transform:translateY(-7px)}.individual-hour-line{z-index:2;border-top:1px solid #c9d8e8;align-self:start;min-height:1px}.individual-day-column{z-index:0;border-right:1px solid var(--line-soft)}.individual-day-column.weekend{background:#cdd6e2b8}.individual-day-column.holiday{background:#edf2f7d1}.individual-work-block{z-index:4;color:#12395b;text-align:center;background:linear-gradient(#f4f9ff 0%,#e9f4ff 100%);border:1px solid #9fb9d5;border-radius:6px;justify-content:center;justify-self:stretch;align-items:flex-start;min-width:0;margin:2px 3px;padding:7px 8px;font-size:12px;font-weight:800;display:flex;position:relative;overflow:hidden;box-shadow:0 1px 2px #174a7c1f}.individual-work-label{white-space:nowrap}.individual-break-block{z-index:5;color:#92400e;background:linear-gradient(#fff8e5 0%,#fff1c7 100%);border-top:1px solid #e8b965;border-bottom:1px solid #e8b965;place-items:center;padding:2px;font-size:10px;font-weight:900;line-height:1.2;display:grid;position:absolute;left:0;right:0}.schedule-wrap{background:var(--surface);overflow:auto visible}.schedule-grid{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:12px}.schedule-grid th,.schedule-grid td{border-right:2px solid #c9d2de;border-bottom:1px solid var(--line-soft);text-align:center;vertical-align:middle;min-width:76px;height:56px;padding:0}.schedule-grid thead th{z-index:4;color:var(--primary);background:linear-gradient(#deeaf8 0%,#d2e3f5 100%);font-weight:800;position:sticky;top:0}.schedule-grid .employee-col{z-index:5;text-align:left;background:linear-gradient(90deg,#f8fbff,#f0f6ff);min-width:220px;max-width:260px;padding:0 0 0 18px;position:sticky;left:0;box-shadow:2px 0 6px #174a7c0f}.schedule-grid thead .employee-col{z-index:6;background:linear-gradient(#deeaf8 0%,#d2e3f5 100%)}.section-separator-row th,.section-separator-row td{border-top:2px solid #b8cfe6;border-bottom:1px solid #c0d4e8;height:28px;background:linear-gradient(#deeaf8,#d4e4f2)!important}.section-separator{color:var(--muted-strong);letter-spacing:.07em;text-transform:uppercase;font-size:11px;font-weight:800}.employee-name{gap:3px;padding-right:12px;display:grid}.employee-link{width:100%;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;padding:0;display:block}.employee-link:hover .employee-name span{color:var(--primary)}.employee-name span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.employee-name small{color:var(--muted);font-weight:650}.day-heading{gap:2px;display:grid}.day-trigger,.schedule-cell-button{width:100%;height:100%;color:inherit;cursor:pointer;background:0 0;border:0}.day-trigger{padding:6px 4px}.schedule-cell-button{padding:0;display:block}.day-heading strong{color:var(--ink);font-size:14px}.day-heading span{color:var(--muted);text-transform:uppercase;font-size:11px}.weekend{background:#d7dde5}.holiday{background:#edf1f5}.selected-day{box-shadow:inset 2px 0 0 var(--primary), inset -2px 0 0 var(--primary)}.schedule-grid thead .selected-day{box-shadow:inset 2px 0 0 var(--primary), inset -2px 0 0 var(--primary), inset 0 2px 0 var(--primary)}.schedule-grid tbody tr:last-child .selected-day{box-shadow:inset 2px 0 0 var(--primary), inset -2px 0 0 var(--primary), inset 0 -2px 0 var(--primary)}.schedule-cell{background:0 0;align-content:center;gap:4px;width:100%;height:100%;min-height:55px;padding:6px 5px;display:grid}.schedule-cell.has-work{color:#12395b}.schedule-cell.is-empty{color:#98a2b3}.schedule-cell.has-code{background:0 0}.work-time{font-weight:800}.break-time{color:var(--muted-strong);font-size:11px}.code-row{flex-wrap:wrap;justify-content:center;gap:4px;display:flex}.code{min-height:20px;padding:0 7px;font-size:11px}.code-FC{color:#047857;background:#e8f7ee}.code-FO{color:#026aa2;background:#e0f2fe}.code-FE{color:#be185d;background:#fce7f3}.code-A{color:#b42318;background:#fee4e2}.code-V{color:#475467;background:#eef2f7}.import-preview-header{margin-bottom:20px}.import-preview-header h2{margin-top:4px;font-size:22px}.import-stats{flex-wrap:wrap;gap:12px;margin-bottom:20px;display:flex}.import-stat{border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--surface-muted);flex:1;gap:2px;min-width:120px;padding:12px 16px;display:grid}.import-stat strong{color:var(--primary);font-size:24px;font-weight:800;line-height:1}.import-stat span{color:var(--muted);font-size:12px;font-weight:650}.import-section-block{border-top:1px solid var(--line-soft);padding-top:14px}.import-section-label{letter-spacing:.07em;text-transform:uppercase;color:var(--muted-strong);margin-bottom:8px;font-size:11px;font-weight:800}.import-employee-names{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.import-employee-names li{border:1px solid var(--line-soft);background:var(--surface);border-radius:999px;align-items:center;gap:5px;padding:4px 10px;font-size:12px;font-weight:600;display:flex}.import-employee-names li small{color:var(--muted);font-size:11px}.import-diff{border-top:1px solid var(--line-soft);gap:14px;padding-top:14px;display:grid}.import-diff-none{color:var(--muted);font-size:13px}.import-diff-group{gap:8px;display:grid}.import-diff-tag{border-radius:999px;align-items:center;padding:3px 10px;font-size:11px;font-weight:800;display:inline-flex}.tag-added{background:var(--success-soft);color:var(--success)}.tag-removed{background:var(--danger-soft);color:var(--danger)}.tag-changed{background:var(--warning-soft);color:var(--warning)}.employee-added span{color:var(--success)}.employee-removed span{color:var(--danger);text-decoration:line-through}.import-diff-employees{gap:10px;display:grid}.import-diff-employee{border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--surface-muted);padding:10px 14px}.import-diff-employee-name{align-items:center;gap:6px;margin-bottom:6px;font-size:13px;font-weight:700;display:flex}.import-diff-employee-name small{color:var(--muted);font-size:11px;font-weight:500}.import-diff-entries{gap:4px;margin:0;padding:0;list-style:none;display:grid}.import-diff-entries li{flex-wrap:wrap;align-items:center;gap:8px;font-size:12px;display:flex}.import-diff-day{min-width:44px;color:var(--muted-strong);font-weight:700}.import-diff-before{color:var(--danger);opacity:.8;text-decoration:line-through}.import-diff-arrow{color:var(--muted)}.import-diff-after{color:var(--success);font-weight:700}.import-confirm-bar{justify-content:flex-end;align-items:center;gap:10px;display:flex}.store-credentials{gap:12px;display:grid}.store-credentials-grid{flex-wrap:wrap;gap:10px;display:flex}.store-credentials-grid>div{border-radius:var(--radius);background:var(--surface);border:1px solid #bae6fd;gap:4px;padding:10px 14px;display:grid}.store-credentials-grid span{color:#075985;text-transform:uppercase;letter-spacing:.06em;font-size:11px;font-weight:700}.store-credentials-grid code{color:var(--ink);letter-spacing:.02em;font-family:ui-monospace,monospace;font-size:14px;font-weight:700}.admin-store-cards{gap:12px;display:grid}.admin-store-card{border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);overflow:hidden}.admin-store-card-header{border-bottom:1px solid var(--line-soft);background:var(--surface-muted);gap:2px;padding:12px 16px;display:grid}.admin-store-card-header strong{font-size:15px}.admin-store-card-stats{border-bottom:1px solid var(--line-soft);color:var(--muted-strong);gap:20px;padding:9px 16px;font-size:13px;display:flex}.admin-store-card-users{display:grid}.admin-store-card-user{border-bottom:1px solid var(--line-soft);gap:10px;padding:12px 16px;display:grid}.admin-store-card-user:last-child{border-bottom:0}.admin-store-card-user-meta{align-items:center;gap:8px;display:flex}.admin-store-card-user .form-row{flex-direction:column;align-items:stretch;gap:8px}.admin-store-card-user .form-row .field{width:100%}.admin-store-card-user .form-row .field:has(>.button) label{display:none}.admin-store-card-user .form-row .button{width:100%}.schedule-mobile-only{display:none}.mobile-day-strip{scrollbar-width:none;-webkit-overflow-scrolling:touch;border-bottom:1px solid var(--line-soft);gap:4px;padding:10px 12px;display:flex;overflow-x:auto}.mobile-day-strip::-webkit-scrollbar{display:none}.mobile-day-btn{cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;flex-shrink:0;place-items:center;gap:2px;width:44px;min-height:52px;padding:4px 2px;display:grid}.mobile-day-btn strong{color:var(--ink);font-size:15px;font-weight:800;line-height:1}.mobile-day-btn span{color:var(--muted);text-transform:uppercase;font-size:10px;font-weight:700}.mobile-day-btn.weekend{background:#d7dde5}.mobile-day-btn.holiday{background:#edf1f5}.mobile-day-btn.is-active{background:var(--primary);border-color:var(--primary)}.mobile-day-btn.is-active strong,.mobile-day-btn.is-active span{color:#fff}.mobile-section-label{color:var(--muted-strong);letter-spacing:.07em;text-transform:uppercase;padding:8px 16px 4px;font-size:11px;font-weight:800}.mobile-employee-row{border:0;border-bottom:1px solid var(--line-soft);width:100%;color:inherit;cursor:pointer;text-align:left;background:0 0;justify-content:space-between;align-items:center;gap:10px;padding:12px 16px;display:flex}.mobile-employee-row:active{background:var(--surface-muted)}.mobile-employee-info{flex:none;gap:2px;min-width:0;max-width:48%;display:grid}.mobile-employee-info span{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:700;overflow:hidden}.mobile-employee-info small{color:var(--muted);font-size:12px}.mobile-shift{text-align:right;flex:1;gap:2px;min-width:0;display:grid}.mobile-shift strong{color:#12395b;font-size:14px;font-weight:800}.mobile-shift small{color:var(--muted-strong);font-size:11px}.mobile-shift-empty{color:#98a2b3;font-size:14px}.mobile-shift-codes{flex-wrap:wrap;justify-content:flex-end;gap:4px;display:flex}.mobile-individual-list{display:grid}.mobile-individual-row{border-bottom:1px solid var(--line-soft);align-items:center;gap:12px;padding:11px 16px;display:flex}.mobile-individual-row.weekend{background:#cdd6e273}.mobile-individual-row.holiday{background:#edf2f7b3}.mobile-individual-day{text-align:center;flex-shrink:0;gap:2px;width:40px;display:grid}.mobile-individual-day strong{color:var(--ink);font-size:16px;font-weight:800;line-height:1}.mobile-individual-day span{color:var(--muted);text-transform:uppercase;font-size:10px;font-weight:700}.mobile-individual-shift{flex:1;gap:2px;display:grid}.mobile-individual-shift strong{color:#12395b;font-size:14px;font-weight:800}.mobile-individual-shift small{color:var(--muted-strong);font-size:12px}.mobile-day-empty{color:#98a2b3;font-size:14px}.import-dropzone{border-radius:var(--radius);background:var(--surface-muted);border:1px dashed #98a2b3;gap:14px;padding:22px;display:grid}.import-dropzone p{color:var(--muted);line-height:1.5}@media (max-width:860px){.schedule-desktop-only{display:none}.schedule-mobile-only{display:block}.app-header{grid-template-rows:auto auto;grid-template-columns:1fr auto;align-items:center;gap:0;min-height:auto;padding:0 16px}.app-brand{grid-area:1/1;min-width:0;padding:12px 0}.app-brand span:last-child{min-width:0}.app-brand strong,.app-brand small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.user-menu{grid-area:1/2;justify-content:flex-end;align-items:center;gap:8px;padding:12px 0}.user-menu span{display:none}.app-nav{scrollbar-width:none;-webkit-overflow-scrolling:touch;background:0 0;border:0;border-top:1px solid #ffffff1f;border-radius:0;grid-area:2/1/auto/-1;justify-content:flex-start;width:100%;max-width:100%;padding:4px 0 6px;overflow:auto hidden}.app-nav::-webkit-scrollbar{display:none}.shell{width:min(100% - 24px,1220px);padding-top:18px}.page-header{flex-direction:column;align-items:flex-start;gap:12px;margin-bottom:14px}.page-header div:first-child{gap:4px}.toolbar{flex-direction:column;align-items:flex-start}.login-screen{grid-template-rows:1fr auto;grid-template-columns:1fr}.login-aside{min-height:220px;padding:36px 24px}.login-aside h1{font-size:32px}.login-panel{padding:28px 20px}.schedule-grid .employee-col{min-width:140px;max-width:180px}.day-preview-header,.hour-row{grid-template-columns:1fr}.day-preview-header{align-items:flex-start}.day-preview-title{text-align:left;justify-self:stretch}.day-preview-header h3{font-size:18px}.schedule-viewbar{flex-direction:column;align-items:stretch;gap:10px}.schedule-viewbar-main{flex-direction:column;align-items:stretch}.schedule-legend{gap:6px}.schedule-employee-picker{min-width:100%}.schedule-month-toolbar{grid-template-columns:auto minmax(0,1fr) auto;gap:8px;padding:10px 12px}.schedule-month-arrow{flex-shrink:0;width:44px;height:44px;font-size:26px}.schedule-month-select{width:100%;min-height:44px;font-size:16px}.schedule-top-switchbar{margin-top:0}.schedule-view-switch button{min-height:38px;padding:0 16px;font-size:14px}.schedule-panel-heading h3{font-size:20px}.individual-schedule-meta{flex-direction:column;align-items:flex-start;gap:12px}.individual-schedule-stats{width:100%;justify-content:flex-start!important}.individual-schedule-stats span{flex:1;min-width:70px}}@media (max-width:480px){.app-header{padding:0 12px}.shell{width:min(100% - 16px,1220px);padding-top:14px}.schedule-grid .employee-col{min-width:120px;max-width:150px}.schedule-grid th,.schedule-grid td{min-width:64px}.day-preview{padding:12px}h1{font-size:24px}}
