:root{--ipsoft-color-primary: #2563eb;--ipsoft-color-primary-hover: #1d4ed8;--ipsoft-color-danger: #dc2626;--ipsoft-color-success: #16a34a;--ipsoft-color-text: #1a202c;--ipsoft-color-text-muted: #718096;--ipsoft-color-bg: #f7fafc;--ipsoft-color-card-bg: #ffffff;--ipsoft-color-border: #e2e8f0;--ipsoft-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--ipsoft-border-radius: .5rem;--ipsoft-shadow: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1)}.ipsoft-login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background-color:var(--ipsoft-color-bg);padding:1rem;font-family:var(--ipsoft-font-family)}.ipsoft-login-card{background:var(--ipsoft-color-card-bg);border-radius:var(--ipsoft-border-radius);box-shadow:var(--ipsoft-shadow);padding:2.5rem;width:100%;max-width:420px}.ipsoft-login-card h1{margin:0 0 .25rem;font-size:1.5rem;font-weight:700;color:var(--ipsoft-color-text);text-align:center}.ipsoft-login-card>p{margin:0 0 1.5rem;color:var(--ipsoft-color-text-muted);text-align:center;font-size:.875rem}.ipsoft-login-logo{display:block;margin:0 auto 1rem;max-height:56px;width:auto}.ipsoft-login-divider{display:flex;align-items:center;margin:1.5rem 0;color:var(--ipsoft-color-text-muted);font-size:.75rem}.ipsoft-login-divider:before,.ipsoft-login-divider:after{content:"";flex:1;height:1px;background:var(--ipsoft-color-border)}.ipsoft-login-divider span{padding:0 .75rem}.ipsoft-form-group{margin-bottom:1rem}.ipsoft-form-group label{display:block;margin-bottom:.375rem;font-size:.875rem;font-weight:500;color:var(--ipsoft-color-text)}.ipsoft-form-group input{width:100%;padding:.625rem .75rem;font-size:.9375rem;border:1px solid var(--ipsoft-color-border);border-radius:var(--ipsoft-border-radius);background:var(--ipsoft-color-card-bg);color:var(--ipsoft-color-text);transition:border-color .15s ease,box-shadow .15s ease;box-sizing:border-box}.ipsoft-form-group input:focus{outline:none;border-color:var(--ipsoft-color-primary);box-shadow:0 0 0 3px #2563eb1a}.ipsoft-form-group-error input{border-color:var(--ipsoft-color-danger)}.ipsoft-form-help{display:block;margin-top:.25rem;font-size:.75rem;color:var(--ipsoft-color-text-muted)}.ipsoft-form-error{display:block;margin-top:.25rem;font-size:.75rem;color:var(--ipsoft-color-danger)}.ipsoft-btn{display:inline-flex;align-items:center;justify-content:center;padding:.625rem 1.25rem;font-size:.9375rem;font-weight:500;border:none;border-radius:var(--ipsoft-border-radius);cursor:pointer;transition:background-color .15s ease,opacity .15s ease;text-decoration:none;line-height:1.4;min-height:44px;font-family:inherit}.ipsoft-btn:disabled{opacity:.6;cursor:not-allowed}.ipsoft-btn-primary{background-color:var(--ipsoft-color-primary);color:#fff}.ipsoft-btn-primary:hover:not(:disabled){background-color:var(--ipsoft-color-primary-hover)}.ipsoft-btn-secondary{background-color:transparent;color:var(--ipsoft-color-primary);border:1px solid var(--ipsoft-color-primary)}.ipsoft-btn-secondary:hover:not(:disabled){background-color:#2563eb0d}.ipsoft-btn-danger{background-color:var(--ipsoft-color-danger);color:#fff}.ipsoft-btn-ghost{background-color:transparent;color:var(--ipsoft-color-text)}.ipsoft-btn-ghost:hover:not(:disabled){background-color:#0000000a}.ipsoft-btn-full{width:100%;text-align:center}.ipsoft-btn-sm{padding:.375rem .75rem;font-size:.8125rem;min-height:36px}.ipsoft-btn-lg{padding:.75rem 1.5rem;font-size:1rem}.ipsoft-btn-loading{opacity:.8}.ipsoft-btn-spinner{margin-right:.5rem;animation:ipsoft-spin 1s linear infinite}@keyframes ipsoft-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ipsoft-alert{padding:.75rem 1rem;border-radius:var(--ipsoft-border-radius);font-size:.875rem;margin-bottom:1rem}.ipsoft-alert-error{background-color:#fef2f2;color:#991b1b;border:1px solid #fecaca}.ipsoft-alert-success{background-color:#f0fdf4;color:#166534;border:1px solid #bbf7d0}.ipsoft-alert-warning{background-color:#fffbeb;color:#92400e;border:1px solid #fde68a}.ipsoft-password-requirements{list-style:none;padding:0;margin:.5rem 0;font-size:.8125rem}.ipsoft-password-requirements li{display:flex;align-items:center;gap:.375rem;padding:.125rem 0}.ipsoft-requirement-met{color:var(--ipsoft-color-success)}.ipsoft-requirement-unmet{color:var(--ipsoft-color-text-muted)}.ipsoft-requirement-icon{width:1rem;text-align:center}.ipsoft-text-muted{color:var(--ipsoft-color-text-muted)}.ipsoft-link{color:var(--ipsoft-color-primary);text-decoration:none;font-size:.875rem}.ipsoft-link:hover{text-decoration:underline}.ipsoft-mfa-setup-card{max-width:480px}.ipsoft-mfa-setup-card h1{font-size:1.25rem;margin-bottom:.5rem}.ipsoft-mfa-instructions{background-color:var(--ipsoft-color-bg);border:1px solid var(--ipsoft-color-border);border-radius:var(--ipsoft-border-radius);padding:1rem;margin-bottom:1.5rem}.ipsoft-mfa-instructions h3{margin:0 0 .5rem;font-size:.875rem;font-weight:600;color:var(--ipsoft-color-text)}.ipsoft-mfa-instructions ol{margin:0;padding-left:1.25rem;font-size:.8125rem;color:var(--ipsoft-color-text-muted);line-height:1.6}.ipsoft-mfa-qr-container{display:flex;justify-content:center;margin:1.5rem 0}.ipsoft-mfa-qr-image{border:1px solid var(--ipsoft-color-border);border-radius:var(--ipsoft-border-radius);padding:.5rem;background:#fff}.ipsoft-mfa-secret{text-align:center;margin-bottom:.5rem}.ipsoft-mfa-secret-code{display:inline-flex;align-items:center;gap:.5rem;background-color:var(--ipsoft-color-bg);border:1px solid var(--ipsoft-color-border);border-radius:var(--ipsoft-border-radius);padding:.5rem .75rem;margin-top:.25rem}.ipsoft-mfa-secret-code code{font-family:Courier New,Courier,monospace;font-size:.85rem;letter-spacing:.05em;color:var(--ipsoft-color-text);word-break:break-all}.ipsoft-mfa-copy-btn{background:none;border:none;cursor:pointer;padding:.125rem;font-size:1rem;opacity:.7;transition:opacity .15s}.ipsoft-mfa-copy-btn:hover{opacity:1}.ipsoft-mfa-loading{text-align:center;padding:2rem 0}.ipsoft-mfa-success{text-align:center}.ipsoft-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;align-items:center;justify-content:center;background-color:#00000080;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);padding:1rem}.ipsoft-modal-card{background:var(--ipsoft-color-card-bg);border-radius:var(--ipsoft-border-radius);box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a;padding:2rem;width:100%;max-width:380px;text-align:center}.ipsoft-modal-icon{font-size:2.5rem;margin-bottom:.75rem}.ipsoft-modal-card h2{margin:0 0 .5rem;font-size:1.25rem;font-weight:700;color:var(--ipsoft-color-text)}.ipsoft-modal-card p{margin:0 0 1.5rem;font-size:.9rem;color:var(--ipsoft-color-text-muted);line-height:1.5}:root{--color-primary: #0066cc;--color-primary-hover: #0052a3;--color-secondary: #6c757d;--color-success: #28a745;--color-danger: #dc3545;--color-warning: #ffc107;--color-bg: #f8f9fa;--color-surface: #ffffff;--color-text: #212529;--color-text-muted: #6c757d;--color-border: #dee2e6;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-size-base: 1rem;--font-size-sm: .875rem;--font-size-lg: 1.25rem;--font-size-xl: 1.5rem;--line-height: 1.6;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-xxl: 3rem;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px rgba(0, 0, 0, .07);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .1);--min-touch-target: 44px}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:var(--font-family);font-size:var(--font-size-base);line-height:var(--line-height);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased}:focus-visible{outline:3px solid var(--color-primary);outline-offset:2px}:focus:not(:focus-visible){outline:none}.app-layout{min-height:100vh;display:flex;flex-direction:column}.app-header{background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:var(--space-md) var(--space-xl);display:flex;align-items:center;gap:var(--space-lg);box-shadow:var(--shadow-sm)}.app-header h1{font-size:var(--font-size-lg);margin:0;color:var(--color-primary)}.header-nav{flex:1}.header-nav a{color:var(--color-text);text-decoration:none;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);min-height:var(--min-touch-target);display:inline-flex;align-items:center}.header-nav a:hover{background:var(--color-bg)}.header-user{display:flex;align-items:center;gap:var(--space-md)}.app-main{flex:1;padding:var(--space-xl);max-width:1200px;margin:0 auto;width:100%}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:var(--min-touch-target);min-width:var(--min-touch-target);padding:var(--space-sm) var(--space-lg);font-size:var(--font-size-base);font-weight:500;text-decoration:none;border:1px solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:background-color .15s,border-color .15s}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-secondary{background:transparent;color:var(--color-primary);border-color:var(--color-primary)}.btn-secondary:hover:not(:disabled){background:#0066cc0d}.btn-lg{padding:var(--space-md) var(--space-xl);font-size:var(--font-size-lg)}.form-group{margin-bottom:var(--space-lg)}.form-group label{display:block;margin-bottom:var(--space-xs);font-weight:500}.form-group input{width:100%;min-height:var(--min-touch-target);padding:var(--space-sm) var(--space-md);font-size:var(--font-size-base);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:border-color .15s}.form-group input:focus{border-color:var(--color-primary)}.form-group small{display:block;margin-top:var(--space-xs);color:var(--color-text-muted);font-size:var(--font-size-sm)}.alert{padding:var(--space-md);border-radius:var(--radius-md);margin-bottom:var(--space-md)}.alert-error{background:#fde8e8;color:var(--color-danger);border:1px solid #f5c6cb}.login-card,.first-access-card{background:var(--color-surface);padding:var(--space-xxl);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-width:420px;margin:10vh auto}.login-card h1,.first-access-card h1{color:var(--color-primary);margin-bottom:var(--space-md)}.login-divider{text-align:center;margin:var(--space-lg) 0;color:var(--color-text-muted)}.portal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-lg);margin-top:var(--space-xl)}.portal-card{background:var(--color-surface);padding:var(--space-xl);border-radius:var(--radius-lg);border:1px solid var(--color-border);text-decoration:none;color:var(--color-text);transition:box-shadow .2s,transform .2s;min-height:var(--min-touch-target)}.portal-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.portal-card-icon{font-size:2rem;display:block;margin-bottom:var(--space-md)}.portal-card h3{margin:0 0 var(--space-sm);color:var(--color-primary)}.portal-card p{margin:0;color:var(--color-text-muted);font-size:var(--font-size-sm)}@media (max-width: 768px){.app-header{padding:var(--space-sm) var(--space-md);flex-wrap:wrap}.app-main{padding:var(--space-md)}.login-card,.first-access-card{margin:var(--space-lg);padding:var(--space-xl)}.portal-grid{grid-template-columns:1fr}}html,body{overflow-x:hidden}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){background:#c82333}.btn-ghost{background:transparent;color:var(--color-text)}.btn-ghost:hover:not(:disabled){background:var(--color-bg)}.btn-sm{padding:var(--space-xs) var(--space-md);font-size:var(--font-size-sm);min-height:36px}.btn-full{width:100%}.btn-loading{position:relative;color:transparent}.btn-spinner{position:absolute;top:50%;left:50%;font-size:20px;color:#fff;display:inline-block;animation:btn-spin 1s linear infinite}@keyframes btn-spin{0%{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) rotate(360deg)}}.form-group select{width:100%;min-height:var(--min-touch-target);padding:var(--space-sm) var(--space-md);font-size:var(--font-size-base);border:1px solid var(--color-border);border-radius:var(--radius-md);background:#fff;cursor:pointer}.form-group select:focus{border-color:var(--color-primary)}.form-group-error input,.form-group-error select{border-color:var(--color-danger)}.form-error{color:var(--color-danger);font-size:var(--font-size-sm);margin-top:var(--space-xs);display:block}.spinner{display:flex;align-items:center;justify-content:center}.spinner-circle{border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}.spinner-sm .spinner-circle{width:20px;height:20px}.spinner-md .spinner-circle{width:32px;height:32px}.spinner-lg .spinner-circle{width:48px;height:48px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.page-loader{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:200px;gap:var(--space-md)}@keyframes spin{to{transform:rotate(360deg)}}.toast-container{position:fixed;top:var(--space-lg);right:var(--space-lg);z-index:10000;display:flex;flex-direction:column;gap:var(--space-sm);max-width:400px}.toast{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);animation:slideIn .3s ease}.toast-exit{animation:slideOut .3s ease forwards}.toast-success{background:#d4edda;color:#155724;border:1px solid #c3e6cb}.toast-error{background:#f8d7da;color:#721c24;border:1px solid #f5c6cb}.toast-warning{background:#fff3cd;color:#856404;border:1px solid #ffeeba}.toast-info{background:#d1ecf1;color:#0c5460;border:1px solid #bee5eb}.toast-message{flex:1}.toast-action{background:none;border:none;color:inherit;font-weight:700;cursor:pointer;text-decoration:underline}.toast-close{background:none;border:none;font-size:1.2rem;cursor:pointer;opacity:.6;padding:4px;min-width:var(--min-touch-target);min-height:var(--min-touch-target);display:flex;align-items:center;justify-content:center}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slideOut{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}.modal{border:none;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:0;max-width:560px;width:90vw}.modal.modal-resizable{max-width:90vw;max-height:90vh;width:800px;height:85vh;resize:both;overflow:hidden}.modal.modal-resizable .modal-content{height:100%}.modal.modal-resizable .modal-body{flex:1;overflow:hidden;display:flex;flex-direction:column}.modal::backdrop{background:#00000080}.modal-content{display:flex;flex-direction:column}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-lg) var(--space-xl);border-bottom:1px solid var(--color-border)}.modal-header h2{margin:0;font-size:var(--font-size-lg)}.modal-header-actions{display:flex;align-items:center;gap:var(--space-xs)}.modal-maximize{background:none;border:none;font-size:1.2rem;cursor:pointer;min-width:var(--min-touch-target);min-height:var(--min-touch-target);display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm)}.modal-maximize:hover{background:var(--color-bg)}.modal-close{background:none;border:none;font-size:1.5rem;cursor:pointer;min-width:var(--min-touch-target);min-height:var(--min-touch-target);display:flex;align-items:center;justify-content:center}.modal.modal-maximized{width:98vw!important;height:96vh!important;max-width:98vw!important;max-height:96vh!important;resize:none}.modal-body{padding:var(--space-xl)}.modal-footer{display:flex;justify-content:flex-end;gap:var(--space-md);padding:var(--space-lg) var(--space-xl);border-top:1px solid var(--color-border)}.table-wrapper{overflow-x:auto;border-radius:var(--radius-md);border:1px solid var(--color-border)}.table-wrapper table{width:100%;border-collapse:collapse}.table-wrapper th,.table-wrapper td{padding:var(--space-sm) var(--space-md);text-align:left;border-bottom:1px solid var(--color-border)}.table-wrapper th{background:var(--color-bg);font-weight:600;font-size:var(--font-size-sm);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px}.table-wrapper tr:last-child td{border-bottom:none}.table-wrapper tr:hover td{background:#0066cc05}.table-empty,.table-loading{padding:var(--space-xxl);text-align:center;color:var(--color-text-muted)}.error-boundary{padding:var(--space-xl);text-align:center;background:#fff3f3;border:1px solid #f5c6cb;border-radius:var(--radius-md);margin:var(--space-lg) 0}fieldset{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-lg);margin-bottom:var(--space-lg)}fieldset legend{font-weight:600;padding:0 var(--space-sm);font-size:var(--font-size-sm);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-md)}@media (max-width: 768px){.form-row{grid-template-columns:1fr}}.census-page h2{margin-bottom:var(--space-sm)}.census-page>p{color:var(--color-text-muted);margin-bottom:var(--space-xl)}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-xl)}.page-header h2{margin:0}.page-header-actions{display:flex;gap:var(--space-sm)}.filters-bar{display:grid;grid-template-columns:2fr 1fr;gap:var(--space-md);margin-bottom:var(--space-lg)}@media (max-width: 768px){.filters-bar{grid-template-columns:1fr}}.nav-link{color:var(--color-text);text-decoration:none;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);min-height:var(--min-touch-target);display:inline-flex;align-items:center;font-size:var(--font-size-sm);transition:background .15s}.nav-link:hover{background:var(--color-bg)}.nav-link.active{background:#0066cc14;color:var(--color-primary);font-weight:600}.user-name{font-size:var(--font-size-sm);color:var(--color-text-muted)}.detail-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-xl);margin-bottom:var(--space-lg)}.detail-section h3{margin:0 0 var(--space-lg);font-size:var(--font-size-lg)}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-lg)}.detail-field label{display:block;font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--space-xs);text-transform:uppercase;letter-spacing:.5px}.detail-field span{font-size:var(--font-size-base)}.empty-message{color:var(--color-text-muted);font-style:italic}.add-portal-form{margin-top:var(--space-lg);padding-top:var(--space-lg);border-top:1px solid var(--color-border)}.add-portal-form h4{margin:0 0 var(--space-md);font-size:var(--font-size-base)}.password-requirements{list-style:none;padding:0;margin:var(--space-sm) 0 var(--space-md);font-size:var(--font-size-sm)}.password-requirements li{display:flex;align-items:center;gap:var(--space-sm);padding:2px 0}.requirement-met{color:var(--color-success)}.requirement-unmet{color:var(--color-danger)}.requirement-icon{font-weight:700;width:16px;text-align:center}.autocomplete-wrapper{position:relative}.autocomplete-dropdown{position:absolute;top:100%;left:0;right:0;z-index:1000;background:var(--color-surface);border:1px solid var(--color-border);border-top:none;border-radius:0 0 var(--radius-md) var(--radius-md);box-shadow:var(--shadow-md);list-style:none;padding:0;margin:0;max-height:240px;overflow-y:auto}.autocomplete-option{display:flex;justify-content:space-between;align-items:center;padding:var(--space-sm) var(--space-md);cursor:pointer;min-height:var(--min-touch-target)}.autocomplete-option:hover,.autocomplete-option.highlighted{background:#0066cc0f}.autocomplete-option-label{font-weight:500}.autocomplete-option-extra{font-size:var(--font-size-sm);color:var(--color-text-muted)}
