:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#182d40;background:#f3f5f7;font-size:16px;--navy:#173952;--accent:#087f82;--muted:#607486;--border:#dbe2e8;--lane:9px;--month-height:183px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid #10a3af;outline-offset:3px}button{border:1px solid var(--border);border-radius:7px;padding:9px 14px;background:#fff;color:var(--navy);font-weight:600;font-size:.875rem;line-height:1.5;white-space:nowrap}button:hover:not(:disabled){background:#edf4f6;border-color:#a6bec9}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover:not(:disabled){background:#076b6e}button.danger{color:#b42332;border-color:#edbac0}button.ghost{border-color:transparent;background:transparent}.app-header{min-height:82px;padding:0 28px;display:flex;align-items:center;gap:40px;background:#fff;border-bottom:1px solid var(--border)}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--navy);font-weight:750;font-size:1.18rem}.brand-mark{display:grid;place-items:center;background:var(--navy);color:#fff;width:40px;height:40px;border-radius:10px;font-size:1.7rem;font-weight:400}.brand-sub{display:block;font-size:.65rem;letter-spacing:.13em;font-weight:600;color:var(--muted);margin-top:3px}.app-header nav{display:flex;align-self:stretch;gap:24px}.nav{border:0;border-bottom:3px solid transparent;border-radius:0;padding:2px 0 0;color:var(--muted);background:transparent;font-weight:600}.nav.active{color:var(--accent);border-bottom-color:var(--accent)}.test-badge{margin-left:auto;display:inline-flex;padding:6px 10px;border-radius:5px;background:#fff4da;color:#8a5a06;font-size:.75rem;font-weight:650;white-space:nowrap}main{padding:24px 28px 20px}.page-heading{display:flex;align-items:center;gap:14px;justify-content:space-between;margin-bottom:19px}.page-heading h1{margin:0;font-size:1.65rem;letter-spacing:-.025em}.subheading{margin:7px 0 0;color:var(--muted);font-size:.875rem}.actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.toolbar{display:flex;gap:13px;align-items:center;padding:13px 16px;background:#fff;border:1px solid var(--border);border-radius:9px 9px 0 0}.year-control{display:flex;align-items:center;gap:4px}.year-control button{padding:5px 10px;font-size:1.1rem}.year-control input{font-weight:750;width:87px;text-align:center;padding:7px 4px;border:0;background:transparent}.state-label{border-left:1px solid var(--border);padding-left:17px;color:var(--muted);font-size:.875rem}.toolbar .right{margin-left:auto;display:flex;align-items:center;gap:14px;font-size:.75rem;color:var(--muted)}.key{display:inline-block;width:11px;height:11px;border:1px solid #d0d8e0;border-radius:2px;margin-right:5px;background:#edf0f4}.key.holiday{background:#fff0cd;border-color:#eac87a}.planning-layout{display:grid;grid-template-columns:minmax(0,1fr) 247px;gap:18px}.calendar-panel{min-width:0}.calendar-help{display:flex;align-items:center;gap:8px;background:#fff;padding:9px 16px;border:1px solid var(--border);border-top:0;font-size:.8rem;color:var(--muted);min-height:39px}.calendar-help.selecting{color:#086b70;background:#e7f6f5}.calendar-help button{font-size:.75rem;padding:1px 7px;margin-left:auto}.calendar-scroll{height:calc(100vh - 287px);min-height:400px;overflow:auto;overscroll-behavior:contain;background:#fff;border:1px solid var(--border);border-top:0;border-radius:0 0 9px 9px;position:relative;scrollbar-width:thin}.matrix{min-width:875px;user-select:none;-webkit-user-select:none}.day-numbers{display:grid;grid-template-columns:87px repeat(31,minmax(0,1fr));height:31px;position:sticky;top:0;z-index:10;background:#f7f9fb;border-bottom:1px solid #becbd5;box-shadow:0 2px 3px #19384e08;font-size:.75rem;font-weight:700}.day-numbers div{display:grid;place-items:center;border-right:1px solid #e2e8ed}.day-numbers div:first-child{justify-content:start;padding-left:12px;color:var(--muted);background:#f7f9fb;position:sticky;left:0;z-index:11}.month{display:grid;grid-template-columns:87px 1fr;height:var(--month-height);border-bottom:2px solid #cfdae3;position:relative}.month:last-child{border-bottom:0}.month-label{position:sticky;left:0;z-index:7;padding:10px 11px;background:#f7f9fb;border-right:1px solid #cbd6df;display:flex;flex-direction:column;justify-content:space-between}.month-label strong{font-size:.82rem;letter-spacing:-.015em}.month-label small{font-size:.7rem;color:#8999a6}.month-body{position:relative;display:grid;grid-template-columns:repeat(31,minmax(0,1fr));min-width:0;isolation:isolate;touch-action:pan-y}.day{border-right:1px solid #e5ebef;position:relative;min-width:0;cursor:crosshair;background:#fff}.day.weekend{background:#edf0f4}.day.weekend.weekend-black{background:#17232e}.day.weekend.weekend-dark{background:#64748b}.day.weekend.weekend-dots{background:#f4f6f8;background-image:radial-gradient(#c3ccd5 .65px,transparent .8px);background-size:5px 5px}.day.weekend.weekend-labels{background:#f8fafb}.day.holiday.holiday-tint{background:#fff2d1}.day.holiday.holiday-outline{box-shadow:inset 0 0 0 2px #e6bd5a}.day-head{height:24px;display:flex;align-items:center;justify-content:center;color:#8897a3;font-size:.625rem;border-bottom:1px solid #cbd5e12e;position:relative;z-index:2;overflow:hidden}.day.weekend-black .day-head,.day.weekend-dark .day-head{color:#fff}.day.holiday .day-head{color:#926413;font-weight:750}.day.holiday-tint .day-head{color:#926413}.day.invalid{background:repeating-linear-gradient(135deg,#e9eef2 0 4px,#e2e8ee 4px 5px);cursor:default}.day.selected::after{content:"";position:absolute;inset:0;background:#087f8224;box-shadow:inset 0 0 0 1px #087f8280;pointer-events:none;z-index:4}.day.today .day-head{background:#173952;color:#fff}.bars{position:absolute;left:0;right:0;top:26px;bottom:0;pointer-events:none;z-index:3}.vacation-bar{position:absolute;top:calc(var(--slot) * var(--lane));left:var(--left);width:var(--width);height:calc(var(--lane) - 2px);border:0;padding:0;border-radius:3px;min-height:4px;pointer-events:auto;cursor:pointer;box-shadow:inset 0 0 0 .5px #00000020;opacity:1}.vacation-bar:hover{filter:brightness(1.07);outline:2px solid #173952;outline-offset:1px;z-index:6}.vacation-bar.dimmed{opacity:.12}.vacation-bar.focused{box-shadow:0 0 0 1px #102f4855}.vacation-bar.continues-before{border-top-left-radius:0;border-bottom-left-radius:0}.vacation-bar.continues-after{border-top-right-radius:0;border-bottom-right-radius:0}.count{position:absolute;z-index:5;font-size:.56rem;font-weight:650;line-height:11px;min-width:10px;text-align:center;color:#334b5b;background:#fffffff0;border-radius:3px;padding:0 1px;pointer-events:none}.count.top-right{right:1px;top:3px}.count.top-left{left:1px;top:3px}.count.bottom-right{right:1px;bottom:2px}.count.bottom-left{left:1px;bottom:2px}.count.present{color:#167669}.legend-panel{background:#fff;border:1px solid var(--border);border-radius:9px;padding:17px 14px;align-self:start;max-height:calc(100vh - 192px);display:flex;flex-direction:column}.legend-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:13px}.legend-heading h2{font-size:.94rem;margin:0}.small-badge{border:1px solid var(--border);border-radius:20px;font-size:.7rem;padding:2px 7px;color:var(--muted)}.search{width:100%;border:1px solid var(--border);border-radius:6px;padding:9px 10px;background:#fbfcfd;font-size:.875rem;color:var(--navy)}.legend-items{overflow:auto;margin:12px -5px 0;padding:0 5px;scrollbar-width:thin}.legend-item{display:grid;grid-template-columns:16px 31px minmax(0,1fr);gap:8px;align-items:center;width:100%;padding:9px 5px;border:0;border-bottom:1px solid #f0f3f6;border-radius:4px;text-align:left;white-space:normal;background:transparent}.legend-item.active{background:#e8f5f4;border-color:#b9dbd9}.legend-slot{font-size:.65rem;color:#92a0ab;text-align:center;font-weight:500}.swatch{display:inline-block;flex-shrink:0;width:31px;height:13px;border-radius:3px;border:1px solid #00000013;vertical-align:middle}.legend-name{font-size:.75rem;line-height:1.25;color:#263d50;display:block}.legend-number{display:block;margin-top:3px;font-size:.65rem;color:#8694a1;font-weight:450}.legend-note{border-top:1px solid var(--border);padding-top:11px;margin:10px 0 0;color:var(--muted);font-size:.75rem;line-height:1.45}.focus-note{display:flex;gap:10px;align-items:center;margin:0 0 12px;padding:9px 13px;border-radius:7px;background:#dff1f0;color:#086b70;font-size:.875rem}.focus-note button{margin-left:auto;padding:4px 10px}.stats-footer{color:var(--muted);font-size:.75rem;display:flex;justify-content:space-between;margin-top:11px}.saved{color:#426a61}.panel{background:#fff;border:1px solid var(--border);border-radius:9px;padding:24px}.panel h2{margin:0 0 7px;font-size:1.05rem}.muted{color:var(--muted)}.info{font-size:.875rem;line-height:1.6;color:var(--muted);margin:8px 0 18px}.employee-tools{display:flex;gap:14px;align-items:center;margin-bottom:18px}.employee-tools .search{max-width:400px}.employee-tools label{font-size:.875rem}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;text-align:left;font-size:.875rem}th{background:#f5f8fa;color:var(--muted);font-size:.75rem;letter-spacing:.02em}th,td{padding:12px 14px;border-bottom:1px solid var(--border)}td .swatch{margin-right:8px}td:last-child .actions{justify-content:flex-end}td strong{font-weight:650}.status-pill{font-size:.75rem;padding:4px 8px;border-radius:4px;background:#eaf6ef;color:#2f7050}.status-pill.off{background:#edf0f4;color:#687987}.empty{text-align:center;padding:45px;color:var(--muted);font-size:.9rem}.settings-layout{display:grid;grid-template-columns:minmax(440px,1fr) minmax(360px,.85fr);gap:22px;max-width:1350px}.settings-stack{display:flex;flex-direction:column;gap:20px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.field{display:flex;flex-direction:column;gap:7px;margin-bottom:15px}.field label{font-size:.875rem;font-weight:650}.field input,.field select,.field textarea,.employee-tools select{width:100%;padding:10px 11px;border:1px solid #cad6df;background:#fff;border-radius:6px;color:var(--navy);min-height:42px}.field textarea{min-height:136px;line-height:1.5;resize:vertical}.field small{font-size:.75rem;color:var(--muted);line-height:1.5}.checkbox{display:flex;align-items:center;gap:9px;font-size:.875rem;line-height:1.5;margin:11px 0}.checkbox input{accent-color:var(--accent);width:17px;height:17px}.divider{border:0;border-top:1px solid var(--border);margin:23px 0}.backup-row{display:flex;gap:8px;justify-content:space-between;align-items:center;border-top:1px solid var(--border);padding:10px 0;font-size:.75rem}.backup-row span{min-width:0;overflow-wrap:anywhere}.backup-row button{padding:5px 8px;font-size:.75rem}.backup-list{max-height:260px;overflow-y:auto}.system-dl{font-size:.8rem;line-height:1.5;margin:12px 0;display:grid;grid-template-columns:135px 1fr;gap:9px}.system-dl dt{color:var(--muted)}.system-dl dd{margin:0;overflow-wrap:anywhere}.history-list{max-width:1080px}.history-entry{padding:19px 0;display:grid;grid-template-columns:162px 1fr;gap:22px;border-bottom:1px solid var(--border)}.history-date{font-size:.8rem;color:var(--muted);line-height:1.6}.history-entry h3{margin:0;font-size:.9rem}.history-entry p{margin:6px 0 0;font-size:.875rem;color:var(--muted);line-height:1.5}.history-entry details{font-size:.75rem;color:var(--muted);margin-top:8px}.history-entry pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#f6f8fa;padding:10px;max-height:300px;overflow:auto}.history-filter{margin:14px 0;max-width:450px}.loading{padding:80px;text-align:center;color:var(--muted)}dialog{border:1px solid var(--border);border-radius:13px;padding:0;max-width:650px;width:calc(100% - 32px);max-height:90vh;box-shadow:0 24px 100px #0f2d4338;color:var(--navy)}dialog::backdrop{background:#17395259}#dialog-content{padding:25px 28px}.dialog-heading{display:flex;justify-content:space-between;align-items:start;margin-bottom:21px;gap:12px}.dialog-heading h2{margin:0;font-size:1.35rem}.dialog-heading p{margin:7px 0 0;color:var(--muted);font-size:.875rem}.close{border:0;font-size:1.5rem;line-height:1;padding:5px}.dialog-footer{margin-top:23px;padding-top:18px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;align-items:center;gap:9px}.dialog-footer .danger{margin-right:auto}.picker-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;max-height:310px;overflow:auto;margin-top:12px;padding:3px}.person-choice{white-space:normal;text-align:left;display:flex;align-items:center;gap:9px;font-size:.8rem;min-height:44px}.person-choice.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent);background:#eef9f8}.person-choice small{display:block;font-size:.7rem;color:var(--muted);font-weight:400}.palette{display:flex;gap:9px;flex-wrap:wrap;margin:9px 0 17px}.color-button{width:40px;height:40px;border-radius:7px;border:3px solid #fff;box-shadow:0 0 0 1px #cdd7df;padding:0}.color-button.selected{box-shadow:0 0 0 3px var(--navy)}.pattern-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.pattern-button{text-align:left;white-space:normal;padding:10px;font-size:.75rem}.pattern-button .swatch{display:block;width:100%;height:22px;margin-bottom:6px}.pattern-button.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.pattern-button small{display:block;font-size:.65rem;margin-top:4px;color:var(--muted)}.form-error{padding:10px 12px;background:#fff0f0;color:#a62938;border-radius:5px;font-size:.875rem;margin:10px 0}.form-error:empty{display:none}.print-options{display:grid;grid-template-columns:1fr 1fr;gap:15px}.radio-card{display:flex;align-items:center;gap:12px;padding:16px;border:1px solid var(--border);border-radius:7px;font-size:.875rem}.radio-card input{accent-color:var(--accent)}#toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:100;background:#173952;color:#fff;padding:13px 22px;max-width:calc(100vw - 32px);border-radius:8px;box-shadow:0 5px 20px #17395222;font-size:.875rem}#tooltip{position:fixed;z-index:80;background:#fff;border:1px solid #c9d6df;box-shadow:0 8px 28px #17395226;border-radius:8px;padding:15px;min-width:235px;max-width:340px;pointer-events:none;font-size:.8rem}#tooltip strong{display:block;margin-bottom:5px}#tooltip p{margin:5px 0 10px;color:var(--muted);font-size:.75rem}.tooltip-person{display:flex;gap:9px;align-items:center;margin:7px 0}.tooltip-person .swatch{width:26px;height:10px}.notice{padding:12px 14px;border:1px solid #ebd6a3;background:#fff7e7;border-radius:6px;font-size:.875rem;line-height:1.5;margin:15px 0}.print-link{text-decoration:none;color:var(--accent);font-weight:650}.history-pagination{padding:18px 0;display:flex;gap:9px;align-items:center;font-size:.875rem}[hidden]{display:none!important}@media(min-width:1700px){.planning-layout{grid-template-columns:minmax(0,1fr) 275px}.legend-name{font-size:.85rem}.legend-item{padding:11px 5px}.day-head{font-size:.7rem}.count{font-size:.65rem}}@media(max-width:1150px){.app-header{padding:0 18px;gap:24px}.app-header nav{gap:16px}.test-badge{font-size:.65rem}main{padding:20px 18px}.planning-layout{grid-template-columns:minmax(0,1fr) 224px}.page-heading h1{font-size:1.4rem}.actions{gap:6px}.toolbar .right{gap:6px}.state-label{max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.settings-layout{grid-template-columns:1fr 1fr}}@media(max-width:850px){.app-header{flex-wrap:wrap;gap:12px;padding:14px 16px 0}.app-header nav{order:3;width:100%;overflow:auto;gap:23px;min-height:43px}.test-badge{margin-left:auto}.page-heading{align-items:flex-start;flex-direction:column}.planning-layout{grid-template-columns:1fr}.legend-panel{max-height:none;order:2}.legend-items{max-height:300px;display:grid;grid-template-columns:1fr 1fr}.calendar-scroll{height:600px}.toolbar .right{display:none}.settings-layout{grid-template-columns:1fr}.page-heading h1{font-size:1.45rem}.stats-footer{gap:10px;flex-wrap:wrap}.history-entry{grid-template-columns:1fr;gap:7px}.employee-tools{flex-wrap:wrap}.form-grid{grid-template-columns:1fr 1fr}}@media(max-width:480px){main{padding:18px 12px}.app-header .brand-sub{display:none}.app-header nav{font-size:.75rem}.app-header nav button{font-size:.8rem}.actions button{padding:8px 10px;font-size:.8rem}.form-grid,.print-options{grid-template-columns:1fr}.picker-grid{grid-template-columns:1fr}.panel{padding:17px}#dialog-content{padding:20px}.pattern-grid{grid-template-columns:repeat(2,1fr)}.day{touch-action:pan-x pan-y}}
