:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:#1a1a1a;background:#f5f5f5}*{margin:0;padding:0;box-sizing:border-box}.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh}.login-form{background:#fff;padding:2rem 2.5rem;border-radius:8px;box-shadow:0 2px 12px #00000014;width:360px}.login-form h1{font-size:1.25rem;margin-bottom:.25rem;color:#06c}.login-form h2{font-size:1rem;font-weight:400;color:#666;margin-bottom:1.25rem}.form-group{margin-bottom:1rem}.form-group label{display:block;font-size:.85rem;font-weight:600;margin-bottom:.25rem}.form-group input{width:100%;padding:.5rem .75rem;border:1px solid #ccc;border-radius:4px;font-size:.95rem}.form-group input:focus{outline:none;border-color:#06c;box-shadow:0 0 0 2px #0066cc26}.error{background:#fef2f2;color:#b91c1c;padding:.5rem .75rem;border-radius:4px;font-size:.85rem;margin-bottom:1rem}.success-banner{background:#f0fdf4;color:#15803d;padding:.5rem .75rem;border-radius:4px;font-size:.85rem;margin-bottom:1rem}.link-button{width:auto;background:none;border:none;color:#06c;text-decoration:underline;cursor:pointer;font-size:.85rem;margin-top:.75rem;padding:.25rem}button{width:100%;padding:.6rem;background:#06c;color:#fff;border:none;border-radius:4px;font-size:.95rem;cursor:pointer}button:hover{background:#0052a3}.app nav{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;background:#fff;box-shadow:0 1px 3px #0000000f}.app nav h1{font-size:1.1rem;color:#06c}.nav-right{display:flex;align-items:center;gap:1rem;font-size:.9rem}.nav-right button{width:auto;padding:.4rem 1rem;font-size:.85rem}.app main{padding:1rem 2rem;max-width:1400px;margin:0 auto}.app main h2{margin-bottom:.5rem}.app main p{color:#666}.app-loading{display:flex;justify-content:center;align-items:center;min-height:100vh;font-size:1.1rem;color:#666}.app-nav{display:flex;justify-content:flex-start;align-items:flex-start;flex-wrap:wrap;padding:.5rem 2rem .6rem;background:#fafafa;border-bottom:1px solid #e5e5e5}.nav-group{display:flex;flex-direction:column;gap:.2rem;padding:0 1rem}.nav-group:first-child{padding-left:0}.nav-group+.nav-group{border-left:1px solid #e5e5e5}.nav-group-label{font-size:.62rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#999;-webkit-user-select:none;user-select:none;line-height:1}.nav-group-links{display:flex;gap:1rem}.nav-link{color:#06c;text-decoration:none;font-size:.9rem;font-weight:500;padding:.25rem 0;border-bottom:2px solid transparent;transition:border-color .15s}.nav-link:hover{border-bottom-color:#06c}.calendar-page{max-width:1200px}.calendar-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;padding:0 .5rem}.calendar-header button{width:auto;padding:.4rem 1rem;font-size:.85rem}.calendar-header h2{font-size:1.1rem}.calendar-loading{text-align:center;padding:2rem;color:#666}.calendar-grid{border:1px solid #e0e0e0;border-radius:6px;overflow:hidden;background:#fff}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);background:#f0f4f8;border-bottom:1px solid #e0e0e0}.cal-dow{padding:.5rem;text-align:center;font-size:.8rem;font-weight:600;color:#555}.calendar-week{display:grid;grid-template-columns:repeat(7,1fr);border-top:1px solid #e0e0e0}.calendar-cell{min-height:100px;padding:4px;border-right:1px solid #eee;border-bottom:1px solid #eee;cursor:default;position:relative}.calendar-cell:nth-child(7n){border-right:none}.cal-other-month{background:#f9f9f9}.cal-other-month .cal-day-num{color:#bbb}.cal-day-num{font-size:.8rem;font-weight:600;color:#333;padding:2px 4px}.cal-dow-weekend{background:#eef0ff}.cal-weekend{background:#f8f9ff}.cal-covered{background:#f0fdf4}.cal-awaiting{background:#fffbeb}.cal-unassigned{background:#fef2f2}.cal-assignment{font-size:.7rem;line-height:1.3}.cal-staff{font-weight:600;color:#1a1a1a}.cal-resident{color:#666}.cal-resident.cal-missing{color:#d97706;font-style:italic;font-size:.65rem}.cal-unfilled{color:#dc2626;font-weight:500;font-size:.65rem}.cal-clickable{cursor:pointer}.cal-clickable:hover{outline:2px solid #0066cc;outline-offset:-2px;z-index:1}.cal-add-hint{position:absolute;bottom:4px;right:4px;width:20px;height:20px;border-radius:50%;background:#06c;color:#fff;font-size:16px;font-weight:700;line-height:1;padding:0;margin:0;text-align:center;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.6;transition:opacity .15s}.cal-add-hint:before{content:"+";position:relative;top:-1px}.cal-clickable:hover .cal-add-hint{opacity:1}.cal-clear-banner{background:#e8f5e9;border:1px solid #a5d6a7;color:#1b5e20;border-radius:6px;padding:.5rem .9rem;margin:0 .5rem .75rem;font-size:.85rem}.clear-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100}.clear-modal{background:#fff;border-radius:8px;padding:1.5rem 2rem;width:560px;max-width:92vw;max-height:86vh;overflow-y:auto;box-shadow:0 4px 24px #00000026}.clear-modal h3{margin-bottom:1rem;font-size:1rem}.clear-scope{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.clear-scope label{font-size:.9rem}.clear-scope select{margin-left:.25rem}.clear-impact{font-size:.9rem;margin-bottom:.5rem}.clear-list{margin:0 0 .75rem;max-height:240px;overflow-y:auto;font-size:.85rem;background:#fafafa;border:1px solid #eee;border-radius:6px;padding:.5rem .5rem .5rem 1.75rem}.clear-list li{margin:.15rem 0}.clear-list-event{color:#4527a0}.clear-list-event:before{content:"⚑ ";font-size:.7rem}.clear-empty{font-size:.9rem;color:#555}.clear-note{font-size:.8rem;color:#666;margin-bottom:.5rem}.clear-error{margin-bottom:.75rem}.clear-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.75rem}.import-warnings{background:#fff3e0;border:1px solid #ffcc80;border-radius:6px;padding:.5rem .75rem;margin-bottom:.75rem}.import-warning{font-size:.85rem;color:#795548;margin:.15rem 0}.import-person-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100}.import-person-modal{background:#fff;border-radius:8px;padding:1.5rem 2rem;width:440px;max-width:90vw;box-shadow:0 4px 24px #00000026}.import-person-modal h3{margin-bottom:.25rem;font-size:1rem}.import-person-sub{font-size:.8rem;color:#666;margin-bottom:1rem}.import-person-modal .form-group{margin-bottom:1rem}.import-person-modal .form-group label{display:block;font-size:.8rem;font-weight:600;margin-bottom:.25rem}.import-person-existing{background:#fff8e1;border:1px solid #ffe082;border-radius:6px;padding:.6rem .75rem;font-size:.85rem;margin-bottom:1rem}.import-person-existing button{margin-top:.4rem}.import-person-dup{background:#fff3e0;border:1px solid #ffcc80;border-radius:6px;padding:.4rem .6rem;font-size:.8rem;color:#795548;margin-bottom:.75rem}.import-person-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.75rem}.editor-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100}.editor-modal{background:#fff;border-radius:8px;padding:1.5rem 2rem;width:420px;box-shadow:0 4px 24px #00000026}.editor-warnings{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1rem}.editor-warning{font-size:.8rem;line-height:1.35;padding:.45rem .6rem;border-radius:6px;border:1px solid}.editor-warning-hard{background:#fdecea;border-color:#f2c1bb;color:#8a2c22}.editor-warning-soft{background:#fff7e0;border-color:#eeda9f;color:#7a5b12}.editor-modal h3{margin-bottom:.75rem;font-size:1rem}.editor-info{display:flex;gap:.5rem;margin-bottom:1rem;font-size:.85rem;color:#555}.editor-call-type{background:#e8f0fe;color:#06c;padding:.1rem .5rem;border-radius:3px;font-size:.75rem;font-weight:600}.editor-event-context{background:#fff3e0;color:#b45309;padding:.1rem .5rem;border-radius:3px;font-size:.75rem;font-weight:600}.editor-event-note{margin:-.5rem 0 1rem;font-size:.8rem;color:#666}.editor-field{margin-bottom:1.25rem}.editor-field label{display:block;font-size:.8rem;font-weight:600;margin-bottom:.4rem}.editor-field select{width:100%;padding:.55rem;border:1px solid #ccc;border-radius:4px;font-size:.9rem}.editor-field select:focus{outline:none;border-color:#06c;box-shadow:0 0 0 2px #0066cc26}.editor-actions{display:flex;gap:.5rem;justify-content:flex-end}.editor-actions button{width:auto;padding:.4rem 1rem;font-size:.85rem}.btn-secondary{background:#e5e7eb!important;color:#333!important}.btn-secondary:hover{background:#d1d5db!important}.btn-primary{background:#06c!important;color:#fff!important}.btn-primary:hover{background:#0052a3!important}.people-page{max-width:900px}.people-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.people-header button{width:auto;padding:.4rem 1rem;font-size:.85rem}.people-tabs{display:flex;gap:0;margin-bottom:1rem;border-bottom:2px solid #e5e5e5}.tab-btn{width:auto;padding:.5rem 1.25rem;font-size:.85rem;background:transparent!important;color:#666!important;border-bottom:2px solid transparent;margin-bottom:-2px;border-radius:0;transition:all .15s}.tab-btn:hover{color:#06c!important;background:transparent!important}.tab-btn.active{color:#06c!important;border-bottom-color:#06c;font-weight:600}.people-table{width:100%;border-collapse:collapse;background:#fff;border-radius:6px;overflow:hidden;box-shadow:0 1px 3px #0000000f}.people-table thead{background:#f8f9fa;border-bottom:2px solid #e5e5e5}.people-table th{padding:.6rem 1rem;font-size:.8rem;font-weight:600;color:#555;text-align:left}.people-table td{padding:.6rem 1rem;font-size:.9rem;border-bottom:1px solid #f0f0f0}.person-name{font-weight:600}.role-badge{display:inline-block;padding:.15rem .6rem;border-radius:10px;font-size:.75rem;font-weight:600}.role-staff{background:#e8f0fe;color:#06c}.role-resident{background:#fef3c7;color:#92400e}.role-admin{background:#f3e8ff;color:#6d28d9}.status-active{color:#16a34a;font-size:.8rem;font-weight:500}.status-inactive{color:#999;font-size:.8rem;font-style:italic}.actions-cell{display:flex;gap:.4rem}.btn-sm{width:auto;padding:.3rem .7rem;font-size:.8rem}.btn-danger{background:#fee2e2!important;color:#dc2626!important}.btn-danger:hover{background:#fecaca!important}.row-inactive{opacity:.5}.section-divider td{padding:.4rem 1rem;font-size:.75rem;font-weight:600;color:#999;text-transform:uppercase;letter-spacing:.05em;background:#fafafa;border-bottom:1px solid #e5e5e5}.empty-state{text-align:center;color:#999;padding:2rem!important}.people-loading{text-align:center;padding:2rem;color:#666}.people-form-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100}.people-form{background:#fff;border-radius:8px;padding:1.5rem 2rem;width:420px;max-width:90vw;box-shadow:0 4px 24px #00000026}.people-form h3{margin-bottom:1rem;font-size:1rem}.people-form .form-group{margin-bottom:1rem}.people-form .form-group label{display:block;font-size:.8rem;font-weight:600;margin-bottom:.25rem}.people-form .form-group input,.people-form .form-group select{width:100%;padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:.9rem}.people-form .form-group input:focus,.people-form .form-group select:focus{outline:none;border-color:#06c;box-shadow:0 0 0 2px #0066cc26}.form-row{display:flex;gap:1rem}.form-row .form-group{flex:1}.form-actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:.5rem}.form-actions button{width:auto;padding:.4rem 1rem;font-size:.85rem}.cal-remove-btn{cursor:pointer;color:#dc2626;font-size:.75rem;font-weight:700;margin-left:.25rem;opacity:.5;transition:opacity .15s;-webkit-user-select:none;user-select:none}.cal-remove-btn:hover{opacity:1}.rules-page{max-width:900px}.rules-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:1rem}.rules-header button{width:auto;padding:.4rem 1rem;font-size:.85rem;flex-shrink:0}.rules-description{margin:.25rem 0 0;font-size:.8rem;color:#666;max-width:640px}.rules-filter{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem;font-size:.85rem}.rules-filter label{font-weight:600;color:#555}.rules-filter select{padding:.4rem .75rem;border:1px solid #ccc;border-radius:4px;font-size:.85rem;background:#fff}.rules-filter select:focus{outline:none;border-color:#06c;box-shadow:0 0 0 2px #0066cc26}.rules-table{width:100%;border-collapse:collapse;background:#fff;border-radius:6px;overflow:hidden;box-shadow:0 1px 3px #0000000f}.rules-table thead{background:#f8f9fa;border-bottom:2px solid #e5e5e5}.rules-table th{padding:.6rem 1rem;font-size:.8rem;font-weight:600;color:#555;text-align:left}.rules-table td{padding:.6rem 1rem;font-size:.9rem;border-bottom:1px solid #f0f0f0}.rule-date{font-variant-numeric:tabular-nums}.rule-notes{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#666;font-size:.85rem}.constraint-hard{color:#dc2626;font-size:.8rem;font-weight:600}.constraint-soft{color:#d97706;font-size:.8rem;font-style:italic}.field-hint{margin-left:.25rem;font-weight:400;color:#888;font-size:.8rem}.rules-loading{text-align:center;padding:2rem;color:#666}.rules-form-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100}.rules-form{background:#fff;border-radius:8px;padding:1.5rem 2rem;width:420px;max-width:90vw;box-shadow:0 4px 24px #00000026}.rules-form h3{margin-bottom:1rem;font-size:1rem}.rules-form .form-group{margin-bottom:1rem}.rules-form .form-group label{display:block;font-size:.8rem;font-weight:600;margin-bottom:.25rem}.rules-form .form-group input,.rules-form .form-group select{width:100%;padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:.9rem}.rules-form .form-group input:focus,.rules-form .form-group select:focus{outline:none;border-color:#06c;box-shadow:0 0 0 2px #0066cc26}.rules-form .form-group label>input[type=checkbox]{width:auto;margin-right:.4rem}.rules-form .form-group label>span{font-weight:400;font-size:.85rem}.rule-kind-toggle{display:flex;gap:1.25rem;padding:.5rem .75rem;border:1px solid #ccc;border-radius:4px;background:#fafafa}.rule-kind-toggle label{display:flex;align-items:center;gap:.4rem;font-size:.85rem;font-weight:400;margin-bottom:0;cursor:pointer}.rules-form input[type=radio],.rules-form input[type=checkbox]{width:auto;margin:0;padding:0;border:none;box-shadow:none;font-size:inherit;accent-color:#0066cc}.rules-form label:has(>input[type=checkbox]){display:flex;align-items:center;gap:.45rem;font-weight:400}.events-page{max-width:900px}.events-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.events-note{margin:-.5rem 0 1rem;font-size:.85rem;color:var(--text-secondary, #6b7280)}.events-header button{width:auto;padding:.4rem 1rem;font-size:.85rem}.events-loading{text-align:center;padding:2rem;color:#666}.events-table{width:100%;border-collapse:collapse;background:#fff;border-radius:6px;box-shadow:0 1px 3px #0000000f}.events-table thead th:first-child{border-top-left-radius:6px}.events-table thead th:last-child{border-top-right-radius:6px}.events-table tbody tr:last-child td:first-child{border-bottom-left-radius:6px}.events-table tbody tr:last-child td:last-child{border-bottom-right-radius:6px}.events-table thead{border-bottom:2px solid #e5e5e5}.events-table th{padding:.6rem 1rem;font-size:.8rem;font-weight:600;color:#555;text-align:left;white-space:nowrap;background:#f8f9fa}.events-table td{padding:.6rem 1rem;font-size:.9rem;border-bottom:1px solid #f0f0f0}.coverage-cell{text-align:right;font-variant-numeric:tabular-nums;color:#555}.coverage-full{color:#15803d;font-weight:600}.coverage-partial{color:#b45309;font-weight:600}.event-name{font-weight:600}.event-current-badge{display:inline-block;margin-left:.4rem;padding:.1rem .45rem;border-radius:10px;font-size:.7rem;font-weight:600;background:#fef3c7;color:#92400e;vertical-align:middle}.event-date{font-variant-numeric:tabular-nums;color:#555}.event-gap-hint{color:#b45309;font-size:.8rem}.event-type-badge{display:inline-block;padding:.15rem .5rem;border-radius:10px;font-size:.75rem;font-weight:600}.event-type-holiday{background:#dcfce7;color:#166534}.event-type-conference{background:#e8f0fe;color:#06c}.cal-event{background:#fef3c7!important}.cal-event-assignment{border-left:3px solid #d97706;padding-left:4px}.cal-event-label{font-size:.6rem;font-weight:700;color:#d97706;text-transform:uppercase;letter-spacing:.05em;margin-bottom:2px}.events-form-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100}.events-form{background:#fff;border-radius:8px;padding:1.5rem 2rem;width:440px;max-width:90vw;box-shadow:0 4px 24px #00000026}.events-form h3{margin-bottom:1rem;font-size:1rem}.events-form .form-group{margin-bottom:1rem}.events-form .form-group label{display:block;font-size:.8rem;font-weight:600;margin-bottom:.25rem}.events-form .form-group input,.events-form .form-group select{width:100%;padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:.9rem}.events-form .form-group input:focus,.events-form .form-group select:focus{outline:none;border-color:#06c;box-shadow:0 0 0 2px #0066cc26}.events-form .form-row{display:flex;gap:1rem}.events-form .form-row .form-group{flex:1}.events-form .error{background:#fef2f2;color:#b91c1c;padding:.5rem .75rem;border-radius:4px;font-size:.85rem;margin-bottom:1rem}.events-form .form-actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:.5rem}.events-form .form-actions button{width:auto;padding:.4rem 1rem;font-size:.85rem}.dashboard-page{max-width:1100px}.dashboard-loading{text-align:center;padding:2rem;color:#666}.dashboard-header{margin-bottom:.5rem}.dashboard-month-selector{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.month-label{font-size:1.1rem;font-weight:600}.dashboard-month-selector button{width:auto;padding:.4rem 1rem;font-size:.85rem}.fairness-warning-banner{background:#fef3c7;border:1px solid #f59e0b;border-radius:6px;padding:1rem 1.25rem;margin-bottom:1rem;color:#92400e}.fairness-warning-banner strong{font-size:.95rem}.fairness-warning-banner p{margin-top:.4rem;font-size:.85rem;color:#78350f}.fairness-warning-banner ul{margin:.5rem 0 0 1.25rem;font-size:.85rem}.fairness-warning-banner li{margin-bottom:.2rem}.dashboard-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:1.5rem}.summary-card{background:#fff;border-radius:6px;padding:1rem;text-align:center;box-shadow:0 1px 3px #0000000f}.summary-value{font-size:1.75rem;font-weight:700;color:#06c}.summary-label{font-size:.8rem;color:#666;margin-top:.25rem}.dashboard-section{background:#fff;border-radius:6px;padding:1.25rem;margin-bottom:1.5rem;box-shadow:0 1px 3px #0000000f}.dashboard-section h3{font-size:1rem;margin-bottom:1rem;color:#333}.metric-info{position:relative;display:inline-block;width:1rem;height:1rem;margin-left:.45rem;border-radius:50%;background:#06c;color:#fff;font-size:.7rem;font-weight:700;font-style:italic;font-family:Georgia,serif;line-height:1rem;text-align:center;cursor:help;vertical-align:middle}.metric-info-pop{display:none;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);width:320px;padding:.55rem .7rem;background:#1f2937;color:#f9fafb;font-size:.78rem;font-weight:400;font-style:normal;font-family:inherit;line-height:1.4;border-radius:6px;box-shadow:0 4px 12px #00000040;z-index:50;text-align:left;white-space:normal}.metric-info-pop:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:#1f2937}.metric-info:hover .metric-info-pop,.metric-info:focus .metric-info-pop{display:block}.chart-container{padding:.5rem 0}.dashboard-table{width:100%;border-collapse:collapse}.dashboard-table thead{background:#f8f9fa;border-bottom:2px solid #e5e5e5}.dashboard-table th{padding:.6rem 1rem;font-size:.8rem;font-weight:600;color:#555;text-align:left}.dashboard-table td{padding:.6rem 1rem;font-size:.9rem;border-bottom:1px solid #f0f0f0}.num-cell{font-variant-numeric:tabular-nums;text-align:center}.import-page{max-width:1100px}.import-header h2{margin-bottom:.25rem}.import-subtitle{color:#666;font-size:.9rem;margin-bottom:1rem}.import-upload-card{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;background:#fff;padding:1rem 1.25rem;border-radius:6px;box-shadow:0 1px 3px #0000000f;margin-bottom:1rem}.import-upload-card .btn-primary{width:auto;padding:.45rem 1.1rem;font-size:.9rem}.import-uploading{color:#666;font-size:.9rem}.import-error{width:100%}.import-result{background:#f0f9ff;border:1px solid #bae6fd;border-radius:6px;padding:1rem 1.25rem;margin-bottom:1rem}.import-result h3{font-size:1rem;margin-bottom:.5rem}.import-result p{font-size:.9rem;margin-bottom:.5rem}.import-result .btn-primary{width:auto;padding:.4rem 1rem;font-size:.85rem;display:inline-block;margin-top:.5rem;text-decoration:none}.import-result-errors{margin:.5rem 0 .5rem 1.25rem;font-size:.85rem;color:#991b1b}.import-preview-header{background:#fff;border-radius:6px;box-shadow:0 1px 3px #0000000f;padding:1rem 1.25rem;margin-bottom:1rem}.import-doc-title{margin-bottom:.75rem;font-size:.95rem;color:#444}.import-doc-month{font-weight:700;font-size:1.05rem;color:#1a1a1a}.import-summary{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem}.import-summary-chip{display:inline-block;padding:.2rem .6rem;border-radius:10px;font-size:.78rem;font-weight:600;background:#eef1f4;color:#444}.import-chip-ok{background:#dcfce7;color:#166534}.import-chip-mapping{background:#fef3c7;color:#92400e}.import-chip-conflict{background:#ffedd5;color:#9a3412}.import-chip-error{background:#fee2e2;color:#991b1b}.import-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.import-global-label{font-size:.85rem;display:flex;align-items:center;gap:.4rem;cursor:pointer}.import-toolbar .btn-primary{width:auto;padding:.45rem 1.1rem;font-size:.9rem}.import-table{width:100%;border-collapse:collapse;background:#fff;border-radius:6px;overflow:hidden;box-shadow:0 1px 3px #0000000f}.import-table thead{background:#f8f9fa;border-bottom:2px solid #e5e5e5}.import-table th{padding:.6rem 1rem;font-size:.8rem;font-weight:600;color:#555;text-align:left}.import-table td{padding:.5rem 1rem;font-size:.88rem;border-bottom:1px solid #f0f0f0;vertical-align:top}.import-col-include{width:2rem}.import-unit-header td{background:#f8f9fa;border-top:2px solid #e5e5e5;padding:.5rem 1rem}.import-unit-label{display:flex;align-items:center;gap:.5rem;font-weight:600;font-size:.9rem;cursor:pointer}.import-unit-type{display:inline-block;padding:.1rem .45rem;border-radius:8px;font-size:.7rem;font-weight:600;text-transform:uppercase}.import-unit-type-weekday{background:#e8f0fe;color:#06c}.import-unit-type-weekend{background:#dcfce7;color:#166534}.import-unit-type-event{background:#fef3c7;color:#92400e}.import-unit-error{color:#991b1b;font-size:.78rem;font-weight:600}.import-unit-policy{margin-left:1rem;font-size:.8rem;display:inline-flex;align-items:center;gap:.5rem}.import-unit-policy label{display:inline-flex;align-items:center;gap:.2rem;cursor:pointer}.import-policy-label{color:#666;font-weight:600}.import-row-error td{background:#fef2f2}.import-row-conflict td{background:#fff7ed}.import-row-needs_mapping td{background:#fffbeb}.import-date{font-variant-numeric:tabular-nums;white-space:nowrap}.import-bad{color:#991b1b}.import-empty{color:#aaa}.import-notes{font-size:.78rem;max-width:280px}.import-note{color:#666;margin-bottom:.15rem}.import-issue{color:#991b1b;margin-bottom:.15rem}.import-conflict{color:#c2410c;margin-bottom:.15rem}.import-badge{display:inline-block;padding:.15rem .5rem;border-radius:10px;font-size:.75rem;font-weight:600;white-space:nowrap}.import-badge-ok{background:#dcfce7;color:#166534}.import-badge-needs_mapping{background:#fef3c7;color:#92400e}.import-badge-conflict{background:#ffedd5;color:#9a3412}.import-badge-error{background:#fee2e2;color:#991b1b}.import-name-cell{min-width:160px}.import-doc-name{font-size:.7rem;color:#888;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.import-name-select{width:100%;padding:.3rem .4rem;border:1px solid #ccc;border-radius:4px;font-size:.85rem;background:#fff}.import-name-select:disabled{background:#f5f5f5;color:#888}.notifications-page{max-width:1100px;margin:0 auto;padding:1.5rem 2rem}.notifications-page .people-header{margin-bottom:1.25rem}.page-subtitle{color:#6b7280;margin-top:.25rem;font-size:.9rem}.page-loading{padding:2rem;text-align:center;color:#6b7280}.notify-card{background:#fff;border-radius:8px;box-shadow:0 1px 3px #00000014;padding:1.25rem 1.5rem;margin-bottom:1.25rem}.notify-card h3{margin:0 0 1rem;font-size:1.05rem}.notify-card-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:.75rem}.notify-card-head h3{margin-bottom:0}.notify-settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem 1.5rem;margin-bottom:1rem}.notify-settings-grid .form-group{margin:0}.checkbox-label{display:flex;align-items:center;gap:.5rem;font-weight:600;margin-bottom:.25rem;cursor:pointer}.checkbox-label input{width:auto}.hint{color:#6b7280;font-size:.78rem;margin:.15rem 0 0;line-height:1.35}.muted{color:#9ca3af}.nowrap{white-space:nowrap}.notify-actions{display:flex;align-items:center;gap:.75rem;margin-top:1rem}.notify-actions .btn-primary{width:auto}.saved-flash{color:#15803d;font-size:.85rem;font-weight:600}.notify-run-info{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.5rem 1.5rem;margin-top:1rem;padding-top:1rem;border-top:1px solid #f0f0f0;font-size:.88rem}.run-label{color:#6b7280}.notify-kind-toggle{display:inline-flex;border:1px solid #d1d5db;border-radius:6px;overflow:hidden}.notify-kind-toggle button{width:auto;padding:.35rem .9rem;background:#fff;color:#374151;font-size:.85rem;border:none;border-radius:0}.notify-kind-toggle button+button{border-left:1px solid #d1d5db}.notify-kind-toggle .toggle-active{background:#06c;color:#fff}.notify-preview-table,.notify-card .data-table{width:100%;border-collapse:collapse;font-size:.88rem;margin:.5rem 0 1rem}.notify-card .data-table thead{background:#f8f9fa;border-bottom:2px solid #e5e5e5}.notify-card .data-table th{padding:.5rem .75rem;text-align:left;font-size:.78rem;text-transform:uppercase;letter-spacing:.03em;color:#6b7280}.notify-card .data-table td{padding:.5rem .75rem;border-bottom:1px solid #f0f0f0;vertical-align:middle}.notify-card .row-muted td{opacity:.75}.notify-card .row-failed td{background:#fef2f2}.notify-log-wrap{max-height:420px;overflow-y:auto;border:1px solid #f0f0f0;border-radius:6px}.notify-subject-cell{max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#6b7280;font-size:.82rem}.chip{display:inline-block;padding:.15rem .55rem;border-radius:999px;font-size:.72rem;font-weight:600;letter-spacing:.02em}.chip-sent{background:#dcfce7;color:#15803d}.chip-failed{background:#fee2e2;color:#b91c1c}.chip-no-email{background:#fef3c7;color:#92400e}.alert{padding:.6rem .9rem;border-radius:6px;font-size:.88rem;margin:.75rem 0}.alert-error{background:#fef2f2;color:#b91c1c}.alert-success{background:#f0fdf4;color:#166534}.absence-summary{margin-bottom:1rem}.absence-summary-controls{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem;font-size:.9rem;color:#555}.absence-summary-controls select{padding:.25rem .5rem}.absence-scope{color:#888;font-size:.85rem}.absence-summary .dashboard-summary{margin-bottom:0}.cat-badge{display:inline-block;padding:.15rem .55rem;border-radius:10px;font-size:.75rem;font-weight:600;white-space:nowrap}.cat-vacation{background:#dbeafe;color:#1e40af}.cat-cme{background:#f3e8ff;color:#6b21a8}.cat-travel{background:#dcfce7;color:#166534}.absence-rule-badge{display:inline-block;margin-top:.2rem;padding:.05rem .45rem;border-radius:8px;background:#e0e7ff;color:#3730a3;font-size:.7rem;font-weight:600;white-space:nowrap}.rule-row-managed td{color:#666}.btn-sm:disabled{opacity:.45;cursor:not-allowed}.cal-show-absences{display:inline-flex;align-items:center;gap:.35rem;font-size:.8rem;color:#555;cursor:pointer;-webkit-user-select:none;user-select:none;padding:.2rem .5rem;border:1px solid #e0e0e0;border-radius:6px;background:#fafafa}.cal-show-absences input{margin:0;cursor:pointer}.cal-absences{display:flex;flex-direction:column;gap:1px;margin-top:3px}.cal-absence-chip{display:block;width:fit-content;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 .3rem;border-radius:3px;font-size:.62rem;font-weight:600;line-height:1.45}.cal-absence-chip.absence-vacation{background:#dbeafe;color:#1e40af}.cal-absence-chip.absence-cme{background:#f3e8ff;color:#6b21a8}.cal-absence-chip.absence-travel{background:#dcfce7;color:#166534}.print-only{display:none}@media print{@page{size:letter landscape;margin:10mm}body{background:#fff!important}nav,.app-nav,.calendar-header,.cal-clear-banner,.cal-add-hint,.cal-remove-btn,.app-loading,.assignment-overlay,.people-form-overlay,.events-form-overlay,.import-person-overlay,.people-page .people-form-overlay{display:none!important}.app,.app main{display:block;padding:0!important;margin:0!important;max-width:none!important;box-shadow:none!important}.calendar-page{max-width:none!important;padding:0!important}.print-only{display:block}.print-header{margin-bottom:10px}.print-title{font-size:17px;font-weight:700;color:#111;margin-bottom:2px}.print-subtitle{font-size:10.5px;color:#555;margin-bottom:8px}.print-legend{display:flex;gap:18px;font-size:10px;color:#333;flex-wrap:wrap}.print-legend-item{display:inline-flex;align-items:center;gap:5px}.print-swatch{width:12px;height:12px;border-radius:3px;border:1px solid #bbb;display:inline-block;-webkit-print-color-adjust:exact;print-color-adjust:exact}.swatch-covered{background:#f0fdf4}.swatch-awaiting{background:#fffbeb}.swatch-unassigned{background:#fef2f2}.swatch-event{background:#fef3c7}.calendar-grid{border:1px solid #999;border-radius:0;box-shadow:none}.calendar-cell{-webkit-print-color-adjust:exact;print-color-adjust:exact;break-inside:avoid;min-height:74px}.calendar-week{break-inside:avoid}.calendar-cell.cal-clickable{cursor:default}.cal-assignment{font-size:6.5px;line-height:1.25}.cal-day-num{font-size:8.5px}.cal-dow{font-size:8px;padding:.3rem}.cal-absence-chip{font-size:5.5px;padding:0 .2rem}}.sync-modal{width:600px}.sync-section{margin-bottom:1.1rem;padding-bottom:.9rem;border-bottom:1px solid #eee}.sync-section:last-of-type{border-bottom:none}.sync-section h4{margin:0 0 .5rem;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:#666}.sync-muted{font-size:.8rem;color:#666;margin:.4rem 0 0}.sync-stream{display:flex;gap:.6rem;align-items:flex-start;padding:.4rem 0;font-size:.9rem;cursor:pointer}.sync-stream input{margin-top:.2rem}.sync-stream-label{display:block;font-weight:500}.sync-stream-desc{display:block;font-size:.78rem;color:#888}.sync-title{width:100%;max-width:320px;font-size:.9rem;padding:.4rem .6rem;border:1px solid #ccc;border-radius:6px}.sync-url-row{display:flex;gap:.5rem;align-items:center}.sync-url{flex:1;font-size:.8rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:#fafafa}.sync-warning{font-size:.8rem;color:#7a4b00;background:#fff8e6;border:1px solid #ffe0a3;border-radius:6px;padding:.5rem .65rem;margin:.6rem 0}.sync-notice{font-size:.85rem;color:#1b5e20;background:#e8f5e9;border:1px solid #c8e6c9;border-radius:6px;padding:.4rem .65rem;margin-bottom:.75rem}.audit-page{max-width:1200px;margin:0 auto;padding:1.5rem 2rem}.audit-page .people-header{margin-bottom:1.25rem}.audit-filter{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;font-size:.85rem}.audit-filter select{padding:.4rem .75rem;border:1px solid #ccc;border-radius:4px;font-size:.85rem;background:#fff;max-width:250px}.audit-filter select:focus{outline:none;border-color:#06c;box-shadow:0 0 0 2px #0066cc26}.audit-filter-daterange{display:inline-flex;align-items:center;gap:.35rem;font-weight:600;color:#555}.audit-filter-daterange input{padding:.35rem .5rem;border:1px solid #ccc;border-radius:4px;font-size:.85rem}.audit-table{width:100%;border-collapse:collapse;background:#fff;border-radius:6px;overflow:hidden;box-shadow:0 1px 3px #0000000f}.audit-table thead{background:#f8f9fa;border-bottom:2px solid #e5e5e5}.audit-table th{padding:.6rem 1rem;font-size:.8rem;font-weight:600;color:#555;text-align:left}.audit-table td{padding:.55rem 1rem;font-size:.88rem;border-bottom:1px solid #f0f0f0;vertical-align:top}.audit-when{font-variant-numeric:tabular-nums;white-space:nowrap;color:#444}.audit-action{display:inline-block;padding:.1rem .5rem;border-radius:3px;font-size:.75rem;font-weight:600;background:#e8f0fe;color:#06c}.audit-entity-id{color:#999;font-size:.8rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.audit-details-preview{max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#666;font-size:.82rem}.audit-null-user{color:#999}.audit-pagination{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:1rem;font-size:.85rem;color:#555}.audit-modal{background:#fff;border-radius:8px;padding:1.5rem 2rem;width:640px;max-width:92vw;max-height:85vh;overflow:auto;box-shadow:0 4px 24px #00000026}.audit-modal h3{margin-bottom:.5rem;font-size:1rem;word-break:break-all}.audit-modal-entity{font-weight:400;color:#666;font-size:.85rem}.audit-modal-meta{display:flex;gap:1rem;margin-bottom:1rem;font-size:.85rem;color:#555}.audit-modal-actions{margin-top:1rem;text-align:right}.audit-diff{width:100%;border-collapse:collapse;font-size:.82rem}.audit-diff th{text-align:left;padding:.4rem .5rem;border-bottom:2px solid #e5e5e5;font-size:.75rem;color:#555}.audit-diff td{padding:.4rem .5rem;border-bottom:1px solid #f0f0f0;vertical-align:top}.audit-diff code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;word-break:break-all}.audit-diff-field{font-weight:600;white-space:nowrap}.audit-diff-changed{background:#fff7e0}.audit-raw{background:#f8f9fa;border:1px solid #e5e5e5;border-radius:6px;padding:.75rem;font-size:.78rem;overflow:auto;max-height:300px;white-space:pre-wrap;word-break:break-word}.audit-raw-footer{margin-top:1rem}
