:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-primary:#002858;--color-secondary:#ffc836;--color-primary-hover:color-mix(in oklab, var(--color-primary) 85%, #000);--color-primary-light:color-mix(in oklab, var(--color-primary) 10%, #fff);--color-primary-faint:color-mix(in srgb, var(--color-primary) 8%, transparent);--color-primary-ring:color-mix(in srgb, var(--color-primary) 20%, transparent);--color-bg:color-mix(in oklab, var(--color-primary) 4%, #fafafa);--color-surface:#fff;--color-surface-hover:color-mix(in oklab, var(--color-primary) 3%, #fbfbfc);--color-border:color-mix(in oklab, var(--color-primary) 8%, #e6e8ec);--color-border-strong:color-mix(in oklab, var(--color-primary) 10%, #d7dae0);--color-text:#101b33;--color-text-muted:#5b6b85;--color-text-subtle:#93a1bc;--status-open-bg:#eff6ff;--status-open-text:#1d4ed8;--status-open-border:#bfdbfe;--status-resolved-bg:#ecfdf5;--status-resolved-text:#065f46;--status-resolved-border:#6ee7b7;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-full:9999px;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 10px -2px #00000014, 0 2px 4px -1px #0000000a;--transition-fast:.12s ease;--topbar-height:60px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}*,:before,:after{box-sizing:border-box}body{background:var(--color-bg);color:var(--color-text);margin:0;line-height:1.5}a{color:inherit}.btn{align-items:center;gap:var(--space-2);border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast), border-color var(--transition-fast);white-space:nowrap;border:1px solid #0000;padding:9px 16px;font-family:inherit;font-size:.9rem;font-weight:500;line-height:1;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border-strong)}.btn-secondary:hover:not(:disabled){background:var(--color-bg)}.btn-ghost{color:var(--color-text-muted);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--color-surface-hover);color:var(--color-text)}.badge{border-radius:var(--radius-full);white-space:nowrap;border:1px solid #0000;align-items:center;padding:3px 10px;font-size:.75rem;font-weight:600;display:inline-flex}.badge-open{background:var(--status-open-bg);color:var(--status-open-text);border-color:var(--status-open-border)}.badge-resolved{background:var(--status-resolved-bg);color:var(--status-resolved-text);border-color:var(--status-resolved-border)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.form-group{gap:var(--space-1);margin-bottom:var(--space-4);flex-direction:column;display:flex}.form-group label{color:var(--color-text);font-size:.85rem;font-weight:600}.form-group .hint{color:var(--color-text-muted);font-size:.8rem}input,select,textarea{border:1px solid var(--color-border-strong);border-radius:var(--radius-md);color:var(--color-text);background:var(--color-surface);width:100%;transition:border-color var(--transition-fast), box-shadow var(--transition-fast);padding:9px 12px;font-family:inherit;font-size:.9rem}input:focus,select:focus,textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-ring);outline:none}textarea{resize:vertical;min-height:80px}.app-shell{flex-direction:column;min-height:100vh;display:flex}.topbar{background:var(--color-primary);color:#fff;justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-5);flex-wrap:wrap;display:flex}.topbar-logo{width:auto;height:28px;display:block}.topbar-user{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.topbar-user-name{text-align:right;font-size:.85rem;line-height:1.3}.topbar-user-name .role{color:var(--color-secondary);text-transform:uppercase;letter-spacing:.04em;font-size:.75rem;font-weight:600;display:block}.topbar .btn-secondary{color:#fff;background:#ffffff14;border-color:#ffffff40}.topbar .btn-secondary:hover{background:#ffffff2e}.app-container{width:100%;max-width:980px;padding:var(--space-5);flex:1;margin:0 auto}.app-loading{min-height:100vh;color:var(--color-text-muted);justify-content:center;align-items:center;display:flex}.page-header{justify-content:space-between;align-items:baseline;gap:var(--space-3);margin-bottom:var(--space-5);flex-wrap:wrap;display:flex}.page-header h2{margin:0;font-size:1.25rem}.back-link{align-items:center;gap:var(--space-1);color:var(--color-text-muted);margin-bottom:var(--space-4);font-size:.85rem;text-decoration:none;display:inline-flex}.back-link:hover{color:var(--color-text)}.narrow{max-width:560px}.form-card{padding:var(--space-5)}.form-card h2{margin:0 0 var(--space-1);font-size:1.1rem}.form-card .hint{margin:0 0 var(--space-5)}.form-message{margin:var(--space-3) 0 0;font-size:.85rem}.form-message.ok{color:var(--status-resolved-text)}.form-message.error{color:#c23b3b}.list-load-error{color:#c23b3b;font-size:.9rem}.request-empty{color:var(--color-text-muted);padding:var(--space-6);text-align:center;border:1px dashed var(--color-border-strong);border-radius:var(--radius-lg)}.request-list{gap:var(--space-4);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.request-card-link{color:inherit;text-decoration:none;display:block}.request-card{padding:var(--space-4) var(--space-5);border-left:4px solid var(--status-open-border);transition:box-shadow var(--transition-fast), border-color var(--transition-fast)}.request-card.is-resolved{border-left-color:var(--status-resolved-border)}.request-card-link:hover .request-card{box-shadow:var(--shadow-md);border-color:var(--color-border-strong)}.request-card-header{justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.request-card-header .request-type-name{font-weight:600}.request-card-meta{margin-top:var(--space-1);color:var(--color-text-muted);font-variant-numeric:tabular-nums;font-size:.8rem}.request-card-description{margin:var(--space-3) 0 0;font-size:.9rem}.request-card-resolution{padding:var(--space-3);background:var(--status-resolved-bg);border-radius:var(--radius-md);color:var(--status-resolved-text);font-size:.85rem}.detail-card{padding:var(--space-6)}.detail-header{justify-content:space-between;align-items:flex-start;gap:var(--space-4);flex-wrap:wrap;display:flex}.detail-header h2{margin:0 0 var(--space-1);font-size:1.3rem}.detail-meta{color:var(--color-text-muted);font-variant-numeric:tabular-nums;font-size:.85rem}.detail-section{margin-top:var(--space-6)}.detail-section h3{margin:0 0 var(--space-2);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);font-size:.75rem}.detail-section p{margin:0}.detail-actions{margin-top:var(--space-6);align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.btn-danger{color:#c23b3b;background:#fff;border-color:#f3c2c2}.btn-danger:hover:not(:disabled){background:#fef2f2}.comment-list{gap:var(--space-3);flex-direction:column;display:flex}.comment-item{padding:var(--space-3);background:var(--color-surface-hover);border-radius:var(--radius-md);font-size:.9rem}.comment-item time{margin-top:var(--space-1);color:var(--color-text-subtle);font-size:.75rem;display:block}.action-section{margin-top:var(--space-5);padding-top:var(--space-5);border-top:1px solid var(--color-border)}.action-section h3{margin:0 0 var(--space-3);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);font-size:.75rem}.action-row{gap:var(--space-3);flex-wrap:wrap;align-items:center;display:flex}.action-row select{flex:1;min-width:180px}.list-toolbar{margin-bottom:var(--space-4);color:var(--color-text-muted);font-size:.85rem}.list-toolbar select{margin-left:var(--space-1)}.filters-row{gap:var(--space-4);margin-bottom:var(--space-4);color:var(--color-text-muted);flex-wrap:wrap;font-size:.85rem;display:flex}.filters-row select{margin-left:var(--space-1)}.pagination{justify-content:center;align-items:center;gap:var(--space-4);margin-top:var(--space-5);display:flex}.table-wrapper{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow-x:auto}.requests-table{border-collapse:collapse;white-space:nowrap;width:100%;font-size:.9rem}.requests-table th,.requests-table td{padding:var(--space-3) var(--space-4);text-align:left;border-bottom:1px solid var(--color-border)}.requests-table thead th{text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);background:var(--color-surface-hover);font-size:.75rem}.requests-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.requests-table th.sortable:hover{color:var(--color-text)}.requests-table tbody tr:last-child td{border-bottom:none}.requests-table tbody tr:hover{background:var(--color-surface-hover)}.requests-table td:first-child a{color:var(--color-primary);font-weight:500;text-decoration:none}.requests-table td:first-child a:hover{text-decoration:underline}.table-actions{gap:var(--space-2);white-space:nowrap;display:flex}.badge-muted{background:var(--color-bg);color:var(--color-text-muted);border-color:var(--color-border-strong)}.admin-nav{gap:var(--space-5);margin-bottom:var(--space-5);padding-bottom:var(--space-3);border-bottom:1px solid var(--color-border);display:flex}.admin-nav a{color:var(--color-text-muted);padding-bottom:var(--space-2);font-size:.9rem;font-weight:500;text-decoration:none}.admin-nav a.active{color:var(--color-primary);border-bottom:2px solid var(--color-primary)}.stats-grid{gap:var(--space-4);margin-bottom:var(--space-6);flex-wrap:wrap;display:flex}.stat-card{min-width:180px;padding:var(--space-5);gap:var(--space-1);flex-direction:column;flex:1;display:flex}.stat-value{color:var(--color-primary);font-variant-numeric:tabular-nums;font-size:2rem;font-weight:700}.stat-label{color:var(--color-text-muted);font-size:.85rem}.section-subtitle{margin:0 0 var(--space-3);font-size:.95rem}.chat-fab{bottom:var(--space-6);right:var(--space-6);border-radius:var(--radius-full);background:var(--color-primary);color:#fff;cursor:pointer;width:56px;height:56px;box-shadow:var(--shadow-md);z-index:40;transition:background var(--transition-fast);border:none;justify-content:center;align-items:center;font-size:1.5rem;line-height:1;display:flex;position:fixed}.chat-fab:hover{background:var(--color-primary-hover)}.chat-panel{bottom:calc(var(--space-6) + 72px);right:var(--space-6);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);width:340px;max-height:480px;box-shadow:var(--shadow-md);z-index:40;flex-direction:column;display:flex;position:fixed;overflow:hidden}.chat-header{background:var(--color-primary);color:#fff;padding:var(--space-3) var(--space-4);justify-content:space-between;align-items:center;font-size:.9rem;font-weight:600;display:flex}.chat-badge{margin-left:var(--space-2);border-radius:var(--radius-full);background:var(--color-secondary);color:var(--color-primary);text-transform:uppercase;letter-spacing:.03em;padding:2px 8px;font-size:.7rem;font-weight:700;display:inline-block}.chat-close{color:#fff;cursor:pointer;background:0 0;border:none;padding:0;font-size:1.2rem;line-height:1}.chat-messages{padding:var(--space-4);gap:var(--space-3);flex-direction:column;flex:1;display:flex;overflow-y:auto}.chat-bubble{max-width:85%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:.85rem;line-height:1.4}.chat-bubble.student{background:var(--color-primary);color:#fff;align-self:flex-end}.chat-bubble.bot{background:var(--color-surface-hover);color:var(--color-text);align-self:flex-start}.chat-typing{color:var(--color-text-muted);font-style:italic}.chat-input-row{gap:var(--space-2);padding:var(--space-3);border-top:1px solid var(--color-border);display:flex}.chat-input-row textarea{resize:none;flex:1;min-height:38px;max-height:38px}@media (width<=420px){.chat-panel{width:calc(100vw - (var(--space-6) * 2));right:var(--space-6)}}
