:root{--ink:#17231f;--muted:#62716a;--line:#dce5df;--paper:#fffdf9;--green:#0f6b4b;--green2:#e8f4ec;--amber:#a6570a;--amber2:#fff3df;--red:#aa3945;--red2:#fff0f1;--shadow:0 12px 35px #18392814}*{box-sizing:border-box}body{margin:0;background:#f7f8f5;color:var(--ink);font:15px/1.45 ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}.skip{position:absolute;left:-999px}.skip:focus{left:1rem;top:1rem;z-index:10;background:#fff;padding:.7rem}.topbar{min-height:74px;padding:12px max(20px,calc((100vw - 1320px)/2));display:flex;align-items:center;gap:20px;background:#183a2e;color:#fff;box-shadow:0 2px 15px #193a2c33}.brand{display:flex;align-items:center;gap:10px;min-width:180px}.brand strong{display:block;font-size:1.05rem}.brand small{color:#c6ded2;font-size:.75rem}.brand-mark{display:grid;place-items:center;width:36px;height:36px;border-radius:12px;background:#bfe5a4;color:#17402f;font:bold 19px Georgia,serif}nav{display:flex;gap:4px;background:#ffffff14;padding:4px;border-radius:9px}button,.ghost,.primary,.generate,.text-button,.icon-button,.import-label{font:inherit;border-radius:8px;cursor:pointer}.nav,.ghost,.primary,.generate,.text-button,.icon-button{border:0}.nav{padding:.45rem .75rem;background:transparent;color:#d8e8df}.nav:hover,.nav.active{background:#fff;color:#17402f}.header-actions{margin-left:auto;display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.primary,.generate{padding:.6rem .78rem;color:#fff;font-weight:700}.primary{background:var(--green)}.generate{background:#bfe5a4;color:#17402f}.ghost{padding:.55rem .72rem;background:#fff;color:#1c3b2f;border:1px solid #d5e2da}.topbar .ghost{background:#ffffff16;border-color:#ffffff35;color:#fff}.import-label{display:inline-flex;align-items:center}.import-label input{position:absolute;width:1px;height:1px;opacity:0}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #63b58c;outline-offset:2px}main{max-width:1320px;margin:auto;padding:32px 20px 56px}.intro{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;margin:6px 0 26px}.eyebrow{color:var(--green);font-weight:800;letter-spacing:.12em;font-size:.7rem;margin:0 0 5px}.intro h1,.section-heading h2,.modal h2{font-family:Georgia,serif;margin:0;color:#173426}.intro h1{font-size:clamp(1.8rem,4vw,2.7rem);line-height:1.1}.intro p:not(.eyebrow),.muted{color:var(--muted)}.muted{font-size:.82rem}.demo-note{max-width:360px;display:flex;gap:10px;background:#eef5ea;border:1px solid #cadcc4;padding:12px;border-radius:10px;color:#375746;font-size:.82rem}.demo-note strong{height:max-content;padding:2px 5px;background:#174d38;color:#fff;font-size:.68rem;border-radius:4px}.toolbar,.alerts,.view{background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:16px}.toolbar{display:flex;align-items:center;justify-content:space-between;padding:15px 18px;margin-bottom:18px}.period{display:flex;align-items:center;gap:13px}.period div{min-width:220px}.period span{display:block;font-size:1.05rem;font-weight:800}.period small{color:var(--muted);font-size:.82rem}.icon-button{width:34px;height:34px;background:#f4f8f5;font-size:1.2rem;color:var(--green)}.summary{font-weight:700;color:var(--green);font-size:.88rem}.alerts{padding:17px 18px;margin-bottom:18px}.section-heading{display:flex;justify-content:space-between;align-items:start;gap:16px;margin-bottom:14px}.section-heading h2{font-size:1.35rem}.text-button{background:none;color:var(--green);font-weight:700;padding:.3rem}.warning-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:9px}.warning{border-radius:9px;padding:10px 12px;font-size:.84rem;border:1px solid}.warning strong{display:block;font-size:.75rem;margin-bottom:2px}.warning.amber{background:var(--amber2);border-color:#f1c98a;color:#75420d}.warning.red{background:var(--red2);border-color:#f2bbc1;color:#7c2632}.warning.ok{background:var(--green2);border-color:#bce0c8;color:#17603c}.view{padding:18px}.schedule-wrap{overflow:auto;border:1px solid var(--line);border-radius:11px}.schedule{border-collapse:collapse;min-width:900px;width:100%;table-layout:fixed}.schedule th{font-size:.71rem;text-transform:uppercase;letter-spacing:.06em;background:#edf4ee;color:#385644;padding:9px 6px;border-bottom:1px solid var(--line);text-align:center}.schedule th[colspan]{background:#e1f0e5;color:#1f6546}.schedule td{vertical-align:top;border-bottom:1px solid #e6ece8;padding:6px;min-width:110px}.schedule td:first-child{width:132px;background:#fbfdfb}.day-name{font-weight:800}.day-date{display:block;font-size:.75rem;color:var(--muted);margin-top:2px}.shift-cell{background:transparent;border:0;min-height:59px;width:100%;text-align:left;padding:4px;border-radius:7px}.shift-cell:hover{background:#eef7f0}.chip{display:inline-block;margin:2px 2px 2px 0;padding:2px 6px;border-radius:99px;background:#dcefe3;color:#22583b;font-weight:700;font-size:.73rem}.empty{color:#9aa9a0;font-size:.77rem}.need,.locked{display:block;font-size:.69rem;margin-top:5px;font-weight:700}.need{color:var(--red)}.locked{color:var(--green)}.sheet-preview{max-width:980px;margin:auto;background:#fff;color:#000;padding:20px}.print-sheet{width:100%;border-collapse:collapse;table-layout:fixed;font:11px Arial,sans-serif}.print-sheet caption{caption-side:top;font:bold 17px Georgia,serif;padding:4px 0 12px}.print-sheet th,.print-sheet td{border:1px solid #111;padding:5px 4px;vertical-align:top}.print-sheet th{text-align:center;background:#e3f0e7}.print-sheet .section-row th{background:#6a9d7d;color:#fff;text-align:left;font-size:12px}.print-sheet .day{font-weight:bold;width:105px}.print-sheet .date{width:33px;text-align:center;font-weight:bold}.print-sheet .empty-cell{color:#777}.sheet-notes{border:1px solid #111;border-top:0;padding:9px;min-height:54px;font:11px Arial,sans-serif}.sheet-signature{text-align:right;padding:18px 18px 2px;font:11px Arial,sans-serif}.month-grid{display:grid;grid-template-columns:repeat(7,minmax(110px,1fr));gap:7px}.month-day{min-height:108px;border:1px solid var(--line);border-radius:10px;padding:8px;background:#fff}.month-day.outside{background:#f4f6f4;color:#94a19a}.month-day button{border:0;background:transparent;width:100%;padding:0;text-align:left}.month-number{font-weight:800;font-size:.85rem}.month-count,.month-warning{font-size:.74rem;margin-top:5px}.month-count{color:var(--muted)}.month-warning{color:var(--red);font-weight:700}.modal{width:min(650px,calc(100% - 28px));border:0;border-radius:16px;padding:0;box-shadow:0 20px 70px #10271e80;background:var(--paper);color:var(--ink)}.modal::backdrop{background:#10271e80}.modal form{padding:20px}.modal-head{display:flex;justify-content:space-between;gap:16px}.close{border:0;background:#eef4ef;border-radius:50%;width:31px;height:31px;font-size:1.35rem}.choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;border:0;padding:0;margin:16px 0}.choice{border:1px solid var(--line);border-radius:8px;padding:9px;display:flex;gap:8px;align-items:center}.choice:has(input:checked){background:var(--green2);border-color:#8dc5a2}.choice small{color:var(--muted)}.lock-choice{display:flex;gap:8px;align-items:center;font-size:.82rem;color:var(--muted)}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:16px}.roster-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:16px 0}.person{display:flex;justify-content:space-between;gap:8px;padding:9px;border:1px solid var(--line);border-radius:8px}.person strong,.person span,.person small{display:block}.person span,.person small{font-size:.76rem;color:var(--muted)}.add-person{display:grid;grid-template-columns:1fr 130px auto;gap:8px;padding-top:12px;border-top:1px solid var(--line)}.add-person label,.date-row label{font-size:.75rem;font-weight:700;color:var(--muted)}.add-person input,.add-person select,.date-row input,.rule input[type=number]{display:block;width:100%;margin-top:3px;border:1px solid #bdccc3;border-radius:7px;padding:8px;font:inherit}.rule-list{display:grid;gap:8px;border:0;padding:0;margin:16px 0}.rule{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:10px;border:1px solid var(--line);border-radius:9px}.rule>span{display:grid;gap:3px}.rule small{color:var(--muted);font-size:.78rem}.rule input[type=number]{width:92px}.weekday-choices{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px}.weekday-choice{display:flex;gap:5px;align-items:center;border:1px solid var(--line);border-radius:7px;padding:7px 9px}.absence-settings h3{font-size:.95rem;margin:16px 0 8px}.date-row{display:flex;align-items:end;gap:8px;margin:8px 0}.date-row label{flex:1}.absence-lists{display:grid;gap:7px;margin-top:12px}.absence-list{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:.78rem}.absence-list strong{min-width:80px}.absence-list span{border:1px solid var(--line);border-radius:99px;padding:3px 7px;background:#f4f8f5}.absence-list button{border:0;background:transparent;color:var(--red);font-weight:800;margin-left:3px}.toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%) translateY(100px);padding:10px 14px;background:#173e2f;color:#fff;border-radius:9px;box-shadow:var(--shadow);opacity:0;transition:.2s;z-index:4}.toast.show{transform:translateX(-50%) translateY(0);opacity:1}.hidden{display:none}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}@media(max-width:850px){.topbar{flex-wrap:wrap;gap:10px;padding:11px 16px}.header-actions{margin-left:0;width:100%}.intro{display:block}.demo-note{margin-top:16px}.toolbar{align-items:flex-start;gap:12px;flex-direction:column}.month-grid{grid-template-columns:repeat(2,1fr)}.choices,.roster-list{grid-template-columns:1fr}}@media(max-width:480px){main{padding:22px 13px 44px}.topbar nav{order:3;width:100%;justify-content:center}.header-actions button,.import-label{font-size:.74rem}.view,.alerts{padding:13px}.add-person{grid-template-columns:1fr}.date-row{align-items:stretch;flex-direction:column}}@media print{@page{size:A4 landscape;margin:10mm}body{background:#fff}.topbar,.intro,.toolbar,.alerts,#weekView,#monthView,.no-print{display:none!important}main{max-width:none;padding:0}#sheetView{display:block!important;border:0;box-shadow:none;padding:0}.sheet-preview{max-width:none;padding:0}}
.employee-rules{margin:16px 0}.employee-rules h3,.rule-summary h3,.capability-settings h3{font-size:.95rem;margin:0 0 9px}.section-hint{margin:-3px 0 10px;color:var(--muted);font-size:.78rem}.capability-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.capability{display:flex;align-items:center;gap:8px;padding:10px;border:1px solid var(--line);border-left:4px solid var(--line);border-radius:9px;font-size:.82rem;font-weight:700;background:#fff}.capability input{accent-color:var(--green)}.capability-reception{border-left-color:#258b80}.capability-reception:has(input:checked){background:#e7f5f2;border-color:#9ed0c8}.capability-breakfast{border-left-color:#d08a2e}.capability-breakfast:has(input:checked){background:#fff3df;border-color:#e8c48d}.capability-plans{border-left-color:#706bbb}.capability-plans:has(input:checked){background:#efeeff;border-color:#c1bef2}.person-badges{display:flex;flex-wrap:wrap;gap:4px;margin:6px 0}.role-badge{display:inline-flex;padding:2px 6px;border-radius:99px;font-size:.65rem;font-weight:800;line-height:1.2}.badge-reception{background:#d9efeb;color:#1d6860}.badge-breakfast{background:#ffebc7;color:#85510f}.badge-plans{background:#e5e3ff;color:#4b478f}.badge-muted{background:#edf1ee;color:var(--muted)}.reception-head{background:#dcefeb!important;color:#1d6860!important}.breakfast-head{background:#fff0d5!important;color:#85510f!important}.plans-head{background:#e8e7ff!important;color:#4b478f!important}.chip-reception{background:#d9efeb;color:#1d6860}.chip-breakfast{background:#ffebc7;color:#85510f}.chip-plans{background:#e5e3ff;color:#4b478f}.reception-shift:hover{background:#eff9f7}.breakfast-shift:hover{background:#fff8eb}.plans-shift:hover{background:#f5f4ff}.rule-summary{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}.rule-summary>p{margin:0 0 8px;color:var(--muted);font-size:.78rem}.rule-summary ul{margin:8px 0 0;padding-left:1.2rem;color:var(--muted);font-size:.82rem}.rule-summary li{margin:4px 0}
.schedule tbody tr:nth-child(odd) td{background:#fbfdfb}.schedule tbody tr:nth-child(even) td{background:#f2f7f3}.print-sheet tbody tr:nth-child(odd) td{background:#fcfdfb}.print-sheet tbody tr:nth-child(even) td{background:#f1f6f2}
.person-actions{display:flex;align-items:flex-start;gap:6px}.danger-button{padding:.55rem .72rem;border:1px solid #efc0c5;border-radius:8px;background:#fff2f3;color:#9b303c;font:inherit;cursor:pointer}.danger-button:hover{background:#ffe5e7}
.pair-rules{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}.pair-rules h3{font-size:.95rem;margin:0 0 4px}.pair-form{display:grid;grid-template-columns:1fr 1fr auto;gap:7px}.pair-form select{border:1px solid #bdccc3;border-radius:7px;padding:8px;font:inherit}.pair-list{list-style:none;padding:0;margin:10px 0 0;display:grid;gap:6px}.pair-list li{display:flex;justify-content:space-between;align-items:center;padding:7px 9px;border:1px solid var(--line);border-radius:8px;background:#f7faf7;font-size:.8rem}.remove-pair{border:0;background:transparent;color:var(--red);font-size:1.1rem;cursor:pointer}.pair-empty{color:var(--muted);font-style:italic}
.target-settings{margin:16px 0}.target-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.target-grid label{font-size:.75rem;font-weight:700;color:var(--muted)}.target-grid input{display:block;width:100%;margin-top:3px;border:1px solid #bdccc3;border-radius:7px;padding:8px;font:inherit}.month-grid{display:grid;grid-template-columns:1fr;gap:14px}.month-week{border:1px solid var(--line);border-radius:10px;overflow:auto;background:#fff}.month-week h3{margin:0;padding:10px 12px;background:#edf4ee;color:#1d5f43;font-size:.9rem}.month-week table{width:100%;min-width:760px;border-collapse:collapse;font-size:.75rem}.month-week th,.month-week td{padding:7px;border-bottom:1px solid #e6ece8;text-align:left;vertical-align:top}.month-week thead th{background:#f5f8f5;color:var(--muted);font-size:.68rem;text-transform:uppercase}.month-week tbody tr:nth-child(even) td,.month-week tbody tr:nth-child(even) th{background:#f8fbf8}.month-week tbody th{width:120px}.month-week th button{border:0;background:transparent;padding:0;text-align:left;font:inherit;font-weight:700;color:var(--ink);cursor:pointer}.month-week th small{display:block;color:var(--muted);font-size:.68rem;font-weight:400}.month-week .reception-cell{color:#1d6860}.month-week .breakfast-cell{color:#85510f}.month-week .plans-cell{color:#4b478f}
.choice-disabled{background:#f0f1f0;border-color:#d8ddda;color:#9aa19c;cursor:not-allowed}.choice-disabled small{color:#9aa19c}.choice-disabled input{cursor:not-allowed}
.morning-head{background:#e1f0e8!important;color:#246247!important}.afternoon-head{background:#e6e8f8!important;color:#4a548d!important}.night-head{background:#e9e1f2!important;color:#68468a!important}.chip-morning{background:#d8eee2;color:#246247}.chip-afternoon{background:#dfe3f7;color:#4a548d}.chip-night{background:#e5d8ef;color:#68468a}.morning-shift:hover{background:#eff9f2}.afternoon-shift:hover{background:#f2f4fc}.night-shift:hover{background:#f7f1fa}
.status-cell{font-size:.72rem;color:var(--muted);background:#fafcf9!important}
.status-name{display:inline-block;margin:1px 4px 1px 0;font-weight:800}.status-label{display:block;color:#a5303b;font-size:.66rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.status-rest{color:#a5303b}.status-absence{color:#a5303b}.schedule th:nth-last-child(2),.schedule th:last-child{background:#fae8ea!important;color:#a5303b!important}.month-assignment th:nth-last-child(2),.month-assignment th:last-child{background:#fae8ea!important;color:#a5303b!important}
.status-action{border:0;background:transparent;color:inherit;text-align:left;padding:0;font:inherit;cursor:pointer;width:100%}.status-action small{display:block;margin-top:4px;color:var(--green);font-size:.66rem;font-weight:700}.status-action:hover{text-decoration:underline}.quick-absence-form{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:14px}.quick-absence-form label{font-size:.75rem;font-weight:700;color:var(--muted)}.quick-absence-form select{display:block;width:100%;margin-top:3px;border:1px solid #bdccc3;border-radius:7px;padding:8px;font:inherit}
.assignment-block{margin-top:14px}.assignment-block h3,.month-assignment h4{font-family:Georgia,serif;color:#173426;margin:0 0 8px;font-size:1.05rem}.assignment-block .schedule{min-width:760px}.month-assignment{margin:10px 0 14px}.month-assignment h4{font-size:.95rem}.month-assignment table{width:100%;min-width:760px;border-collapse:collapse;font-size:.72rem}.month-assignment th,.month-assignment td{padding:6px;border-bottom:1px solid #e6ece8;text-align:left;vertical-align:top}.month-assignment thead th{background:#f5f8f5;color:var(--muted);font-size:.66rem;text-transform:uppercase}.month-assignment tbody tr:nth-child(even) td,.month-assignment tbody tr:nth-child(even) th{background:#f8fbf8}
.print-options{display:flex;gap:10px;border:0;padding:0;margin:16px 0}.print-options label{display:flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:8px;padding:9px 12px;cursor:pointer}.print-options label:has(input:checked){background:var(--green2);border-color:#8dc5a2}.print-date-label{display:block;font-size:.75rem;font-weight:700;color:var(--muted)}.print-date-label input{display:block;width:100%;margin-top:4px;border:1px solid #bdccc3;border-radius:7px;padding:8px;font:inherit;color:var(--ink)}.print-month>h2{font:700 20px Georgia,serif;text-align:center;margin:0 0 14px}.print-month-week{break-inside:avoid;margin:0 0 18px}.print-month-week h3{font:700 13px Arial,sans-serif;margin:0;padding:5px 0 6px;text-transform:uppercase}.print-month-week .print-sheet caption{display:none}
.quick-absence-form:has(#quickAbsenceTypeLabel.hidden){grid-template-columns:1fr}
