*{box-sizing:border-box}body{margin:0;font:15px system-ui,-apple-system,sans-serif;color:#1f2937;background:#f5f6f8}header{display:flex;justify-content:space-between;padding:14px 20px;background:#111827;color:#fff}nav{display:flex;gap:12px;align-items:center;padding:10px 20px;background:#fff;border-bottom:1px solid #ddd;flex-wrap:wrap}nav a{color:#1f2937;text-decoration:none;font-weight:600}main{padding:20px;max-width:1500px;margin:auto}.card{background:#fff;border:1px solid #ddd;border-radius:8px;padding:16px}.narrow{max-width:560px;margin:40px auto}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.toolbar{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin:12px 0}.inline{display:inline}.button,button{background:#1d4ed8;color:#fff;border:0;border-radius:6px;padding:9px 13px;text-decoration:none;cursor:pointer}button:disabled{opacity:.5}.flash{background:#ecfdf5;border:1px solid #10b981;padding:10px;border-radius:6px}.error{background:#fef2f2;border:1px solid #ef4444;padding:10px}label{display:grid;gap:4px;margin:8px 0}input,select{padding:8px;border:1px solid #aaa;border-radius:4px;min-width:120px}table{border-collapse:collapse;width:100%;background:#fff}th,td{border:1px solid #d1d5db;padding:6px;vertical-align:top}.matrix-wrap{overflow:auto;max-height:72vh;border:1px solid #ccc}.matrix{width:max-content;min-width:100%}.matrix th,.matrix td{text-align:center;min-width:34px}.matrix .sticky-col{position:sticky;left:0;background:#fff;z-index:2;min-width:130px;text-align:left}.matrix thead th{position:sticky;top:0;background:#f3f4f6;z-index:3}.matrix thead .sticky-col{z-index:4}.matrix small{display:block;font-size:9px}.plan-cell{cursor:pointer;min-height:36px}.plan-cell:hover{background:#dbeafe}.remove-entry{display:inline}.remove-entry button{padding:1px 4px;background:#b91c1c}.skip{position:absolute;left:-9999px}.skip:focus{left:8px;top:8px;background:#fff;padding:8px;z-index:99}@media(max-width:700px){main{padding:10px}header{padding:10px}nav{padding:8px}.matrix .sticky-col{min-width:100px}}
.matrix td.absence{background:#fee2e2}.matrix td.preference{background:#fef3c7}.matrix td.absence::after{content:" !";font-weight:700}.matrix td.preference::after{content:" ◇"}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #f59e0b;outline-offset:2px}button,.button{min-height:40px}@media print{@page{size:A4 landscape;margin:5mm}header,nav,.no-print,.skip{display:none!important}main{padding:0;max-width:none}.matrix-wrap{overflow:visible;max-height:none;border:0}.matrix{width:100%;table-layout:fixed;font-size:6pt}.matrix th,.matrix td{padding:1px;min-width:0}.matrix .sticky-col,.matrix thead th{position:static}.print-matrix{width:100%}}
