.duty-roster{max-width:1180px;margin:auto}.roster-tabs,.roster-actions,.roster-rules,.roster-period{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0}.roster-tabs button,.roster-actions button,.file-button{min-height:48px;padding:10px 15px;border:1px solid #c7d2fe;border-radius:11px;background:#fff;font-weight:800;cursor:pointer}.roster-tabs .active{background:var(--primary,#6366f1);color:#fff}.roster-form{display:grid;grid-template-columns:1fr 1fr;gap:15px}.roster-form>label,.roster-form fieldset{display:grid;gap:7px;font-weight:750}.roster-form input,.roster-form textarea{padding:11px;border:1px solid #cbd5e1;border-radius:10px}.roster-form fieldset{grid-column:1/-1;display:flex;flex-wrap:wrap}.roster-form fieldset label,.roster-rules label,.roster-period label{display:flex;align-items:center;gap:6px}.privacy-note,.roster-actions,.roster-rules,.roster-period{grid-column:1/-1}.file-button input{display:none}.roster-output{overflow-x:auto;margin-top:18px}.roster-table{width:100%;min-width:720px;border-collapse:collapse}.roster-table th,.roster-table td{padding:10px;border:1px solid #cbd5e1;text-align:left}.roster-table th{background:#eef2ff}.roster-table td.missing{background:#fee2e2;color:#b91c1c;font-weight:800}.roster-warnings:not(:empty){margin:14px 0;padding:12px;border-radius:10px;background:#fff7ed;color:#9a3412}.person-cards,.summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin-top:15px}.person-card,.summary-card{padding:13px;border:1px solid #e2e8f0;border-radius:12px;background:#fff}.person-card button{min-height:44px}.signature-row{display:flex;justify-content:space-around;margin:50px 0 10px;text-align:center}.signature-row span{min-width:200px;border-top:1px solid;padding-top:8px}@media(max-width:700px){.roster-form{grid-template-columns:1fr}.roster-form>*{grid-column:1!important}.duty-roster{padding-inline:12px}}@media print{body *{visibility:hidden}.duty-roster,.duty-roster *{visibility:visible}.duty-roster{position:absolute;inset:0;max-width:none;padding:0;box-shadow:none}.roster-form,.roster-tabs,.roster-actions,.roster-warnings,.site-header,.site-footer,.language-suggestion,.seo-section{display:none!important}.roster-table{min-width:0;font-size:9pt}.roster-table th,.roster-table td{padding:5px}@page{size:A4 landscape;margin:10mm}}
