:root{--navy: #1E3A5F;--navy-light: #2C5282;--teal: #0F766E;--teal-light: #14B8A6;--amber: #D97706;--amber-light: #F59E0B;--red: #DC2626;--red-light: #EF4444;--green: #16A34A;--green-light: #22C55E;--white: #FFFFFF;--gray-50: #F9FAFB;--gray-100: #F3F4F6;--gray-200: #E5E7EB;--gray-300: #D1D5DB;--gray-400: #9CA3AF;--gray-500: #6B7280;--gray-600: #4B5563;--gray-700: #374151;--gray-800: #1F2937;--gray-900: #111827;--black: #000000;--color-text-primary: var(--gray-900);--color-text-secondary: var(--gray-600);--color-text-muted: var(--gray-400);--color-text-inverse: var(--white);--color-bg-primary: var(--white);--color-bg-secondary: var(--gray-50);--color-bg-tertiary: var(--gray-100);--color-border: var(--gray-200);--color-border-focus: var(--teal);--color-error: var(--red);--color-success: var(--green);--color-warning: var(--amber);--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.875rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75;--spacing-1: .25rem;--spacing-2: .5rem;--spacing-3: .75rem;--spacing-4: 1rem;--spacing-5: 1.25rem;--spacing-6: 1.5rem;--spacing-8: 2rem;--spacing-10: 2.5rem;--spacing-12: 3rem;--spacing-16: 4rem;--radius-sm: .25rem;--radius-md: .375rem;--radius-lg: .5rem;--radius-xl: .75rem;--radius-full: 9999px;--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);--shadow-xl: 0 20px 25px rgba(0, 0, 0, .15);--z-dropdown: 1000;--z-sticky: 1020;--z-modal-overlay: 10000;--z-modal: 10001;--z-toast: 100003;--transition-fast: .15s ease;--transition-normal: .25s ease;--transition-slow: .35s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{font-family:var(--font-sans);font-size:var(--font-size-base);line-height:var(--line-height-normal);color:var(--color-text-primary);background-color:var(--color-bg-secondary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--teal);text-decoration:none}a:hover{text-decoration:underline}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px}.community-layout{display:flex;flex-direction:column;min-height:100vh}.community-main{flex:1;max-width:1200px;width:100%;margin:0 auto;padding:var(--spacing-6) var(--spacing-4)}.community-footer{padding:var(--spacing-4);text-align:center;color:var(--color-text-muted);font-size:var(--font-size-sm);border-top:1px solid var(--color-border)}.community-header{display:flex;align-items:center;justify-content:space-between;padding:0 var(--spacing-6);height:64px;background:var(--navy);color:var(--color-text-inverse);box-shadow:var(--shadow-md)}.header-brand{display:flex;align-items:center;gap:var(--spacing-2)}.header-logo{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-text-inverse)}.header-logo:hover{text-decoration:none}.header-subtitle{font-size:var(--font-size-sm);color:var(--gray-400);padding-left:var(--spacing-3);border-left:1px solid var(--gray-600)}.header-nav{display:flex;align-items:center;gap:var(--spacing-1)}.nav-link{padding:var(--spacing-2) var(--spacing-3);border-radius:var(--radius-md);color:var(--gray-300);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);transition:background var(--transition-fast)}.nav-link:hover{background:#ffffff1a;color:var(--white);text-decoration:none}.nav-link.active{background:#ffffff26;color:var(--white)}.header-user{display:flex;align-items:center;gap:var(--spacing-3)}.header-profile{color:var(--gray-300);font-size:var(--font-size-sm)}.header-logout{background:transparent;border:1px solid var(--gray-600);color:var(--gray-300);padding:var(--spacing-1) var(--spacing-3);border-radius:var(--radius-md);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast)}.header-logout:hover{background:#ffffff1a;border-color:var(--gray-400);color:var(--white)}.community-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-2);border:1px solid transparent;border-radius:var(--radius-md);font-family:var(--font-sans);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap}.community-btn:disabled{opacity:.5;cursor:not-allowed}.community-btn--sm{padding:var(--spacing-1) var(--spacing-3);font-size:var(--font-size-sm)}.community-btn--md{padding:var(--spacing-2) var(--spacing-4);font-size:var(--font-size-base)}.community-btn--lg{padding:var(--spacing-3) var(--spacing-6);font-size:var(--font-size-lg)}.community-btn--primary{background:var(--teal);color:var(--white)}.community-btn--primary:hover:not(:disabled){background:var(--teal-light)}.community-btn--secondary{background:var(--white);color:var(--gray-700);border-color:var(--color-border)}.community-btn--secondary:hover:not(:disabled){background:var(--gray-50);border-color:var(--gray-300)}.community-btn--danger{background:var(--red);color:var(--white)}.community-btn--danger:hover:not(:disabled){background:var(--red-light)}.community-btn--ghost{background:transparent;color:var(--gray-700)}.community-btn--ghost:hover:not(:disabled){background:var(--gray-100)}.community-btn--loading{position:relative}.btn-spinner{width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.community-card{background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-4);box-shadow:var(--shadow-sm);transition:box-shadow var(--transition-fast)}.community-card--clickable{cursor:pointer}.community-card--clickable:hover{box-shadow:var(--shadow-md)}.card-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);margin-bottom:var(--spacing-3);color:var(--color-text-primary)}.community-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal-overlay)}.community-modal{background:var(--color-bg-primary);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);max-height:85vh;overflow-y:auto;z-index:var(--z-modal)}.community-modal--sm{width:400px}.community-modal--md{width:560px}.community-modal--lg{width:720px}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-4) var(--spacing-6);border-bottom:1px solid var(--color-border)}.modal-header h2{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold)}.modal-close{background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--color-text-muted);padding:var(--spacing-1);line-height:1}.modal-close:hover{color:var(--color-text-primary)}.modal-body{padding:var(--spacing-6)}.modal-actions{display:flex;gap:var(--spacing-3);justify-content:flex-end;margin-top:var(--spacing-6)}.community-spinner{display:flex;align-items:center;justify-content:center;padding:var(--spacing-8)}.spinner-circle{border:3px solid var(--gray-200);border-top-color:var(--teal);border-radius:50%;animation:spin .7s linear infinite}.community-spinner--sm .spinner-circle{width:20px;height:20px}.community-spinner--md .spinner-circle{width:32px;height:32px}.community-spinner--lg .spinner-circle{width:48px;height:48px}.form-field{margin-bottom:var(--spacing-4)}.form-field label{display:block;font-weight:var(--font-weight-medium);margin-bottom:var(--spacing-1);color:var(--color-text-primary);font-size:var(--font-size-sm)}.form-field input[type=text],.form-field input[type=email],.form-field input[type=tel],.form-field input[type=password],.form-field input[type=datetime-local],.form-field input[type=file],.form-field select,.form-field textarea{width:100%;padding:var(--spacing-2) var(--spacing-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:var(--font-sans);font-size:var(--font-size-base);color:var(--color-text-primary);background:var(--color-bg-primary);transition:border-color var(--transition-fast)}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-color:var(--color-border-focus);outline:none;box-shadow:0 0 0 3px #0f766e1a}.form-field input:disabled{background:var(--gray-100);color:var(--color-text-muted)}.field-hint{margin-top:var(--spacing-1);font-size:var(--font-size-xs);color:var(--color-text-muted)}.field-error{margin-top:var(--spacing-1);font-size:var(--font-size-sm);color:var(--color-error)}.form-actions{display:flex;gap:var(--spacing-3);margin-top:var(--spacing-6)}.link-button{background:none;border:none;color:var(--teal);cursor:pointer;font-size:var(--font-size-sm);padding:0;font-family:var(--font-sans)}.link-button:hover{text-decoration:underline}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-6)}.page-header h1{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold)}.breadcrumb{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--spacing-4)}.breadcrumb a{color:var(--teal)}.error-page{text-align:center;padding:var(--spacing-16) var(--spacing-4)}.error-page h1{font-size:var(--font-size-2xl);margin-bottom:var(--spacing-4)}.error-message{background:#fef2f2;border:1px solid #FECACA;color:var(--red);padding:var(--spacing-3) var(--spacing-4);border-radius:var(--radius-md);margin-bottom:var(--spacing-4)}.empty-state{text-align:center;padding:var(--spacing-12);color:var(--color-text-muted)}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--gray-100)}.login-page .community-card{width:420px;padding:var(--spacing-8)}.login-page h1{font-size:var(--font-size-2xl);margin-bottom:var(--spacing-2);text-align:center}.login-description{text-align:center;color:var(--color-text-muted);margin-bottom:var(--spacing-6);font-size:var(--font-size-sm)}.login-error{color:var(--color-error);font-size:var(--font-size-sm);margin-bottom:var(--spacing-4)}.login-switch{margin-top:var(--spacing-4);text-align:center}.login-magic-sent{text-align:center}.login-magic-sent p,.student-selector{margin-bottom:var(--spacing-4)}.student-selector select{margin-left:var(--spacing-2);padding:var(--spacing-1) var(--spacing-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-base)}.document-grid{display:grid;gap:var(--spacing-4);grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.document-link{text-decoration:none;color:inherit}.document-link:hover{text-decoration:none}.document-card-header{display:flex;align-items:center;gap:var(--spacing-2);margin-bottom:var(--spacing-2)}.document-type-badge{display:inline-block;padding:2px 8px;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase}.document-type--iep{background:#ede9fe;color:#6d28d9}.document-type--evaluation{background:#dbeafe;color:#1d4ed8}.document-type--504{background:#ccfbf1;color:#0f766e}.document-type--consent{background:#fef3c7;color:#92400e}.document-type--pwn{background:#fce7f3;color:#9d174d}.document-type--other{background:var(--gray-100);color:var(--gray-700)}.document-status{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium)}.document-status--draft{color:var(--amber)}.document-status--final{color:var(--green)}.document-status--archived{color:var(--color-text-muted)}.document-title{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);margin-bottom:var(--spacing-1)}.document-date{font-size:var(--font-size-sm);color:var(--color-text-muted)}.document-viewer-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:var(--spacing-6)}.document-meta{display:flex;align-items:center;gap:var(--spacing-3);margin-top:var(--spacing-2)}.document-actions{display:flex;gap:var(--spacing-3)}.document-viewer-content{background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-8);min-height:400px}.document-preview-note{color:var(--color-text-muted);text-align:center;padding:var(--spacing-8)}.consent-form-content{max-width:720px}.consent-text-section{background:var(--gray-50);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-4);margin-bottom:var(--spacing-6)}.consent-instruction{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.consent-options{margin-bottom:var(--spacing-6)}.consent-actions{display:flex;gap:var(--spacing-3);margin-bottom:var(--spacing-4)}.consent-notice{font-size:var(--font-size-sm);color:var(--color-text-muted);padding:var(--spacing-3);background:#fffbeb;border:1px solid #FDE68A;border-radius:var(--radius-md)}.consent-confirm-notice{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-top:var(--spacing-4)}.thread-list{display:flex;flex-direction:column;gap:var(--spacing-3)}.thread-link{text-decoration:none;color:inherit}.thread-link:hover{text-decoration:none}.thread-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-1)}.thread-unread{font-weight:var(--font-weight-bold)}.unread-badge{display:inline-block;width:8px;height:8px;background:var(--teal);border-radius:50%;margin-left:var(--spacing-2)}.thread-participants{font-size:var(--font-size-sm);color:var(--color-text-muted)}.thread-count{font-size:var(--font-size-xs);color:var(--color-text-muted)}.thread-messages{display:flex;flex-direction:column;gap:var(--spacing-4);margin-bottom:var(--spacing-6);max-height:60vh;overflow-y:auto}.message-bubble{padding:var(--spacing-3) var(--spacing-4);border-radius:var(--radius-lg);max-width:75%}.message-bubble--incoming{align-self:flex-start;background:var(--gray-100)}.message-bubble--outgoing{align-self:flex-end;background:var(--teal);color:var(--white)}.message-header{display:flex;justify-content:space-between;margin-bottom:var(--spacing-1);font-size:var(--font-size-xs)}.message-bubble--outgoing .message-header{color:#fffc}.message-body{font-size:var(--font-size-base);line-height:var(--line-height-relaxed)}.message-read-status{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:var(--spacing-1);text-align:right}.message-bubble--outgoing .message-read-status{color:#ffffffb3}.reply-form{border-top:1px solid var(--color-border);padding-top:var(--spacing-4)}.calendar-view-controls{display:flex;gap:var(--spacing-2);margin-bottom:var(--spacing-4)}.event-list{display:flex;flex-direction:column;gap:var(--spacing-3)}.event-card-content{display:flex;gap:var(--spacing-4);align-items:flex-start}.event-date-badge{display:flex;flex-direction:column;align-items:center;background:var(--gray-100);border-radius:var(--radius-md);min-width:60px;padding:var(--spacing-2)}.event-date-month{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase;color:var(--color-text-muted)}.event-date-day{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.event-details{flex:1}.event-details h3{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);margin-bottom:var(--spacing-1)}.event-time,.event-location{font-size:var(--font-size-sm);color:var(--color-text-muted)}.event-status{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium)}.event-status--confirmed{color:var(--green)}.event-status--tentative{color:var(--amber)}.event-status--cancelled{color:var(--red)}.calendar-month-view{background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-lg);min-height:400px;display:flex;align-items:center;justify-content:center}.meeting-request-form{max-width:600px}.date-input-row{display:flex;align-items:center;gap:var(--spacing-2);margin-bottom:var(--spacing-2)}.remove-date-btn{background:none;border:none;color:var(--red);font-size:1.25rem;cursor:pointer;padding:0 var(--spacing-1)}.profile-details p{margin-bottom:var(--spacing-2)}.profile-edit-form{max-width:400px}.profile-links{margin-top:var(--spacing-6)}.linked-students{display:flex;flex-direction:column;gap:var(--spacing-3)}.linked-student-row{padding:var(--spacing-3);border:1px solid var(--color-border);border-radius:var(--radius-md)}.relationship-badge{display:inline-block;padding:2px 8px;background:var(--gray-100);border-radius:var(--radius-full);font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:capitalize}.preferences-list{display:flex;flex-direction:column;gap:var(--spacing-3)}.preference-row{display:flex;align-items:center;gap:var(--spacing-3);cursor:pointer;font-size:var(--font-size-base)}.preference-row input[type=checkbox]{width:18px;height:18px;accent-color:var(--teal)}.card-hint{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--spacing-3)}.file-grid{display:grid;gap:var(--spacing-4);grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.file-card-content h3{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);margin-bottom:var(--spacing-2)}.file-meta{display:flex;gap:var(--spacing-3);font-size:var(--font-size-xs);color:var(--color-text-muted)}.file-category{text-transform:capitalize}.file-info{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-top:var(--spacing-1)}.file-upload-form{max-width:600px}.placeholder-note{color:var(--color-text-muted);font-style:italic}
