:root{font-family:Arial,Helvetica,sans-serif;color:#2d393b;background:#f5f7f5;font-size:16px;--orange:#ef7924;--green:#467963;--muted:#788580;--line:#e1e7e2;--red:#ba3038}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}button,.button{border:1px solid var(--line);background:white;color:inherit;border-radius:8px;padding:10px 14px;font-size:.875rem;font-weight:600}button:hover{border-color:#bdc9be}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #ef792499;outline-offset:2px}.primary{background:var(--orange);color:white;border-color:var(--orange)}.danger{color:var(--red)}aside{position:fixed;inset:0 auto 0 0;width:218px;background:white;border-right:1px solid var(--line);padding:26px 18px;display:flex;flex-direction:column}.brand{display:block;text-decoration:none;color:var(--orange)}.brand img{width:156px;height:85px;object-fit:contain}.brand small{display:block;font-size:.7rem;letter-spacing:2px;margin-top:8px}.site-label{font-size:.75rem;letter-spacing:1px;line-height:1.6;margin:34px 4px 24px;font-weight:700}.site-label span{color:var(--muted);font-weight:400;letter-spacing:0}nav{display:grid;gap:7px}nav button{text-align:left;border:none;background:transparent;font-weight:400;padding:14px 12px}nav button.active{background:#fff0e3;color:#b85713;font-weight:600}nav button span{display:inline-block;width:26px;font-size:1.15rem}.side-bottom{margin-top:auto;color:var(--muted);font-size:.75rem;line-height:1.6;padding:20px 4px 0}.app{margin-left:218px}header{height:78px;background:white;border-bottom:1px solid var(--line);padding:0 32px;display:flex;align-items:center;justify-content:space-between;font-size:.875rem;gap:15px}header b{padding:0 12px;color:#abb5ac}#account{display:flex;gap:10px;align-items:center}#account select{font-size:.875rem;border:1px solid var(--line);border-radius:8px;padding:9px;background:white}main{padding:28px 32px 50px;max-width:1800px;margin:auto}.demo-banner{background:#fff7e9;border:1px solid #edd9b1;border-radius:8px;padding:10px 14px;font-size:.8rem;color:#8b652b;margin-bottom:24px}.title-row{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}h1{font-size:1.8rem;letter-spacing:-.6px;margin:0 0 7px}h2{font-size:1.25rem;margin:0 0 15px}h3{font-size:1rem;margin:0 0 12px}p{line-height:1.55}small,.muted{color:var(--muted)}.title-row p{margin:0;font-size:.875rem;color:var(--muted)}.actions{display:flex;gap:9px;flex-wrap:wrap;align-items:center}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:20px 0}.stat{background:white;border:1px solid var(--line);border-radius:10px;padding:18px}.stat small{font-size:.8rem;display:block}.stat strong{font-size:1.7rem;display:block;margin:10px 0 5px}.stat span{font-size:.75rem;color:var(--muted)}.stat.red strong{color:var(--red)}.stat.orange strong{color:#ca7616}.panel{background:white;border:1px solid var(--line);border-radius:10px;padding:22px;margin-bottom:18px}.toolbar{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:14px}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:.75rem}.dot{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:5px}.m{background:#e4eee5;color:#355841}.s{background:#dfeaf5;color:#355977}.n{background:#e8e3f3;color:#655081}.red-bg{background:#ffe0e1}.orange-bg{background:#ffe6bc}.planning-wrap{overflow:auto;border:1px solid var(--line);border-radius:9px;background:white;max-height:700px}.planning{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;min-width:1020px}.planning th,.planning td{border-bottom:1px solid #e9eee9;border-right:1px solid #edf0ec;padding:7px;height:54px}.planning thead th{position:sticky;top:0;z-index:3;background:#f9faf8;font-size:.8rem;font-weight:500;text-align:center;height:58px}.planning th:first-child,.planning td:first-child{position:sticky;left:0;background:white;z-index:2;width:218px;text-align:left}.planning thead th:first-child{z-index:4;background:#f9faf8}.planning th:last-child,.planning td:last-child{width:85px;text-align:center;font-size:.8rem}.employee-name{border:0;padding:0;background:none;text-align:left;font-size:.8rem;font-weight:600;display:block}.job-label{font-size:.7rem;color:var(--muted);display:block;margin-top:4px}.initials{width:30px;height:30px;border-radius:50%;background:#eff2ec;display:flex;align-items:center;justify-content:center;font-size:.7rem;color:#6c7e6e;float:left;margin-right:10px}.weekend{background:#f2f4ef!important}.cell{position:relative;vertical-align:middle}.cell.drop-hover{outline:2px solid var(--orange);outline-offset:-2px}.cell.available{cursor:pointer}.shift{width:100%;padding:7px 5px;border:1px solid transparent;border-radius:6px;display:block;font-size:.75rem;text-align:left;line-height:1.2;min-height:37px}.shift small{color:inherit;display:block;font-size:.65rem;margin-top:3px;opacity:.85}.shift.conflict{background:#ffe2e4;border:1px solid #e49197;color:#a1232d}.shift.preference{background:#ffebcd;border:1px solid #e9bd78;color:#9e5e0b}.shift[draggable=true]{cursor:grab}.absence{display:block;font-size:.7rem;color:#a95d5d;text-align:center;background:repeating-linear-gradient(135deg,#fff1f1,#fff1f1 5px,#fbe8e8 5px,#fbe8e8 10px);padding:9px 3px;border-radius:5px}.rest{font-size:.7rem;color:#aab4ab;text-align:center}.reserve{background:#fff9f1;border:1px dashed #d3ad82;border-radius:10px;margin-top:16px;padding:20px}.reserve.active-drop{outline:3px solid var(--orange)}.reserve-title{display:flex;justify-content:space-between;align-items:center}.reserve p{color:#98754e;font-size:.8rem;margin:8px 0 14px}.tokens{display:flex;flex-wrap:wrap;gap:8px}.token{background:white;border:1px solid #e7d2bb;padding:9px 12px;min-width:150px;text-align:left}.token.selected{outline:2px solid var(--orange)}.token small{display:block;font-size:.7rem;color:#937858;margin-top:4px}.callout{background:#f0f4ef;border-left:3px solid #7c9679;padding:12px 16px;font-size:.8rem;line-height:1.6;margin-top:20px}.callout.warning{background:#fff3df;border-color:#d69b3e}.callout.error{background:#fff0f0;border-color:#b33;color:#a22}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.employee-card{background:white;border:1px solid var(--line);border-radius:10px;padding:20px}.employee-card .initials{width:38px;height:38px}.employee-card h3{margin:2px 0 5px}.employee-card p{font-size:.8rem;color:var(--muted)}.tags{display:flex;flex-wrap:wrap;gap:6px;margin:16px 0}.tag{background:#eff3ee;font-size:.7rem;padding:5px 8px;border-radius:4px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:20px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}label.field{display:block;font-size:.875rem;margin-bottom:15px;font-weight:500}.field input,.field select,.field textarea{display:block;width:100%;padding:10px 11px;border:1px solid #cdd6cd;border-radius:7px;background:white;margin-top:7px;font-size:.875rem}.field textarea{min-height:90px}label.check{display:flex;align-items:center;gap:9px;margin:12px 0;font-size:.875rem}.check input{width:18px;height:18px}.helper{font-size:.75rem;color:var(--muted);line-height:1.6}.table{border-collapse:collapse;width:100%;font-size:.875rem}.table th,.table td{border-bottom:1px solid var(--line);padding:13px 10px;text-align:left}.table th{color:var(--muted);font-weight:500;background:#f8faf7}.table input{width:70px;padding:8px;border:1px solid var(--line);border-radius:5px}.status{border-radius:4px;padding:5px 8px;font-size:.75rem;display:inline-block;background:#edf4ec;color:#527650}.status.red{background:#ffe1e1;color:#aa2d35}.status.orange{background:#ffedd2;color:#a96f20}.audit{padding:11px 0;border-bottom:1px solid var(--line);font-size:.8rem}.audit small{margin-left:15px}.filters{display:flex;gap:10px;margin-bottom:20px}.filters input,.filters select{padding:10px;border:1px solid var(--line);border-radius:7px}.filters input{flex:1}.source a{color:#517965}.source{font-size:.8rem;line-height:1.8}dialog{width:min(820px,95vw);max-height:90vh;overflow:auto;border:0;border-radius:13px;padding:26px;box-shadow:0 18px 80px #20352940}dialog::backdrop{background:#22382e66}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.modal-head small{letter-spacing:2px;color:var(--orange);font-size:.7rem}.modal-head button{border:0;padding:4px 10px;font-size:1.6rem}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.preference-row,.absence-row{display:grid;grid-template-columns:repeat(3,1fr) auto;gap:8px;margin-bottom:10px;align-items:center}.preference-row select,.absence-row input{padding:8px;border:1px solid var(--line);border-radius:6px;min-width:0;width:100%;font-size:.8rem}.remove{padding:8px;color:var(--red)}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#2e4738;color:white;padding:14px 22px;border-radius:9px;box-shadow:0 4px 20px #0002;z-index:20;display:none;max-width:80vw;font-size:.875rem}.pending{opacity:.5;pointer-events:none}.tabs{display:flex;gap:7px}.tabs button.active{background:#eaf0e6}.result{font-size:.8rem;margin:15px 0}.permission-table{overflow:auto}@media(max-width:1100px){aside{width:180px;padding:20px 10px}.app{margin-left:180px}header{padding:0 20px}main{padding:22px 20px}.cards{grid-template-columns:repeat(2,1fr)}.stats{gap:8px}.title-row{align-items:flex-start}}@media(max-width:720px){aside{position:static;width:auto;padding:12px}.brand img{width:100px;height:55px}.brand small,.site-label,.side-bottom{display:none}nav{display:flex;overflow:auto}nav button{white-space:nowrap;padding:10px}nav button span{display:none}.app{margin-left:0}header{height:auto;padding:12px;flex-wrap:wrap}main{padding:18px 12px}.title-row{display:block}.title-row .actions{margin-top:16px}.stats{grid-template-columns:1fr 1fr}.two-col,.cards,.form-grid{grid-template-columns:1fr}.toolbar{flex-wrap:wrap}.preference-row,.absence-row{grid-template-columns:1fr 1fr}.planning-wrap{max-height:600px}h1{font-size:1.5rem}}
.view-controls{margin:16px 0;gap:15px}.view-controls label{font-size:.875rem}.view-controls select,.view-controls input{border:1px solid var(--line);background:white;border-radius:6px;padding:8px;margin-left:6px}.timeline-wrap{overflow:auto;max-height:700px;border:1px solid var(--line);border-radius:9px;background:white}.time-table{table-layout:fixed;border-collapse:separate;border-spacing:0}.time-table th{font-size:.8rem;text-align:left;font-weight:500}.time-table thead th{position:sticky;top:0;background:#f7f9f5;z-index:5;padding:10px 5px}.time-table tr>th:first-child{position:sticky;left:0;width:218px;background:white;z-index:6;border-right:1px solid var(--line);padding:10px;height:61px}.time-table thead tr>th:first-child{z-index:7;background:#f7f9f5}.time-cell{position:relative;height:61px;padding:0;border-bottom:1px solid var(--line);border-right:1px solid #ccd7cd;background:repeating-linear-gradient(to right,transparent 0,transparent calc(25% - 1px),#edf1ed calc(25% - 1px),#edf1ed 25%)}.time-cell.outside{background-color:#f4f5f3}.hour-axis{display:flex;margin-top:9px;color:#8a968b;font-size:.7rem}.hour-axis span{width:25%}.time-bar{position:absolute;top:10px;height:42px;z-index:3;padding:5px 7px;border:1px solid #bdcdbd;text-align:left;overflow:hidden;white-space:nowrap;border-radius:5px}.time-bar strong{font-size:.8rem;display:block;overflow:hidden;text-overflow:ellipsis}.time-bar small{font-size:.7rem;display:block;color:inherit;opacity:.8}.time-bar.conflict{background:#ffe2e4;border-color:#e49197;color:#a1232d}.time-bar.preference{background:#ffebcd;border-color:#e9bd78;color:#9e5e0b}.time-bar.historical{filter:grayscale(1);opacity:.6}.outside-label{font-size:.7rem;color:#a4aba4;position:absolute;top:22px;left:8px}.time-cell.drop-hover{outline:3px solid var(--orange);outline-offset:-3px}
