:root{color-scheme:light;--c-black:#000;--c-white:#fff;--gray-950:#0a0a0a;--gray-900:#111;--gray-800:#1f1f1f;--gray-700:#374151;--gray-600:#4b5563;--gray-500:#6b7280;--gray-400:#9ca3af;--gray-300:#d1d5db;--gray-200:#e5e5e5;--gray-100:#f4f4f5;--gray-50:#fafafa;--surface:var(--c-white);--surface-muted:var(--gray-50);--border:var(--gray-200);--text:var(--gray-900);--text-muted:var(--gray-500);--line-focus:var(--c-black);--radius:6px;--radius-lg:10px}*{box-sizing:border-box}body,html{margin:0;padding:0}body{color:var(--text);background:var(--c-white);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}h1,h2,h3{margin:0;font-weight:600;letter-spacing:-.02em}h1{font-size:1.5rem}h2{font-size:1.125rem}h3{font-size:1rem}p{margin:0}:focus-visible{outline:2px solid var(--line-focus);outline-offset:2px}.page{padding:clamp(1.25rem,3vw,2.5rem);max-width:1320px;margin:0 auto;width:100%}.stack{display:grid;grid-gap:1.25rem;gap:1.25rem}.muted{color:var(--text-muted)}.center{display:grid;place-items:center;min-height:100vh}.page>header{display:grid;grid-gap:.5rem;gap:.5rem;margin-bottom:.5rem}.page>header p{max-width:60ch}.eyebrow{color:var(--text-muted);font-size:.6875rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.dashboard-stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));grid-gap:1rem;gap:1rem}.dashboard-content .card{min-width:0}.dashboard-content .dashboard-stat-grid .card{min-height:126px;display:flex;flex-direction:column;justify-content:center}.dashboard-panel{padding:clamp(1rem,2vw,1.5rem)}.dashboard-panel .table-wrap{margin-top:.25rem}.dashboard-stat-grid .card{transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.dashboard-stat-grid .card:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.06)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:clamp(1rem,2vw,1.5rem);box-shadow:0 1px 2px rgba(0,0,0,.03)}.card:hover{border-color:var(--gray-300)}.button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border:1px solid var(--c-black);border-radius:var(--radius);padding:.5rem .9rem;font:inherit;font-size:.875rem;font-weight:500;cursor:pointer;background:var(--c-black);color:var(--c-white);transition:background .12s ease;white-space:nowrap}.button:hover{background:var(--gray-800)}.button:disabled{cursor:not-allowed;opacity:.45}.button-secondary{background:var(--c-white);color:var(--c-black)}.button-secondary:hover{background:var(--gray-100)}.input,.select,.textarea{min-height:42px;border:1px solid var(--gray-300);border-radius:var(--radius);padding:.625rem .75rem;font:inherit;font-size:.875rem;width:100%;background:var(--c-white);color:var(--text)}.input:focus,.select:focus,.textarea:focus{border-color:var(--c-black)}.input::placeholder{color:var(--gray-400)}.field{display:grid;grid-gap:.375rem;gap:.375rem}.field>label{font-size:.8125rem;font-weight:500;color:var(--text)}.field-error{font-size:.75rem;color:var(--text);margin:0}.alert{display:flex;gap:.5rem;align-items:flex-start;border:1px solid var(--border);border-radius:var(--radius);padding:.625rem .75rem;font-size:.8125rem;background:var(--gray-50)}.alert[data-variant=error]{border-color:var(--c-black);background:var(--gray-50)}.toolbar{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}.toolbar .input{max-width:380px}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-lg)}table{width:100%;border-collapse:collapse}td,th{padding:.8rem 1rem;border-bottom:1px solid var(--gray-100);text-align:left}tbody tr{transition:background .12s ease}tbody tr:hover{background:var(--gray-50)}tr:last-child td{border-bottom:0}th{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-weight:500}td{font-size:.875rem}.shell{min-height:100vh;display:grid;grid-template-columns:64px 1fr;transition:grid-template-columns .2s ease;background:var(--surface-muted)}.shell:has(.sidebar:hover){grid-template-columns:220px 1fr}.sidebar{position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow:hidden;padding:1rem 0;background:var(--c-white);border-right:1px solid var(--border);display:flex;flex-direction:column;gap:0;width:64px;transition:width .2s ease}.sidebar:hover{width:220px}.sidebar .brand{display:flex;align-items:center;gap:.625rem;padding:0 .875rem .875rem;border-bottom:1px solid var(--border);font-weight:700;font-size:.9375rem;letter-spacing:-.02em;white-space:nowrap;overflow:hidden}.sidebar .brand-icon{flex-shrink:0;width:24px;height:24px;background:var(--c-black);border-radius:6px;display:grid;place-items:center}.sidebar .brand-icon svg{color:var(--c-white)}.sidebar .brand-text{opacity:0;transition:opacity .15s ease .05s;white-space:nowrap}.sidebar:hover .brand-text{opacity:1}.sidebar nav{display:flex;flex-direction:column;gap:0;margin-top:.75rem;flex:1 1;overflow-y:auto;overflow-x:hidden;padding:0 .5rem}.nav-group{display:flex;flex-direction:column;gap:0;margin-bottom:.25rem}.nav-group-label{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;padding:.5rem .5rem .25rem;white-space:nowrap;overflow:hidden;opacity:0;transition:opacity .15s ease}.sidebar:hover .nav-group-label{opacity:1}.sidebar nav a{display:flex;align-items:center;gap:.625rem;padding:.5rem;border-radius:var(--radius);font-size:.875rem;color:var(--gray-600);white-space:nowrap;overflow:hidden;transition:background .1s ease,color .1s ease}.sidebar nav a.active,.sidebar nav a:hover{background:var(--gray-100);color:var(--text)}.sidebar nav a.active{font-weight:500}.nav-icon{flex-shrink:0;width:20px;height:20px;display:grid;place-items:center}.nav-label{opacity:0;transition:opacity .15s ease .05s}.sidebar:hover .nav-label{opacity:1}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:10;min-height:68px;display:flex;justify-content:space-between;align-items:center;padding:0 clamp(1rem,3vw,2rem);background:rgba(255,255,255,.94);border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.mobile-brand{display:none;align-items:center;gap:.6rem}.mobile-brand .brand-icon{width:28px;height:28px;background:var(--c-black);color:var(--c-white);border-radius:7px;display:grid;place-items:center}.content{display:grid;grid-template-rows:auto 1fr;min-width:0}.mobile-nav{display:none}.auth-shell{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}.auth-brand{display:flex;flex-direction:column;justify-content:space-between;padding:2.5rem;border-right:1px solid var(--border);background:var(--c-white)}.auth-form{display:grid;place-items:center;padding:2rem}@media (max-width:860px){.auth-shell{grid-template-columns:1fr}.auth-brand{display:none}.shell{display:block}.sidebar{display:none}.mobile-brand{display:flex}.content{padding-bottom:76px}.mobile-nav{position:fixed;left:.75rem;right:.75rem;bottom:.75rem;z-index:30;display:grid;grid-template-columns:repeat(5,1fr);grid-gap:.25rem;gap:.25rem;padding:.4rem;border:1px solid var(--border);border-radius:14px;background:rgba(255,255,255,.96);box-shadow:0 12px 32px rgba(0,0,0,.14);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.mobile-nav a{display:grid;justify-items:center;grid-gap:.2rem;gap:.2rem;min-width:0;padding:.45rem .2rem;border-radius:9px;color:var(--text-muted);font-size:.625rem;font-weight:600;text-align:center}.mobile-nav a.active,.mobile-nav a:hover{background:var(--gray-100);color:var(--text)}.mobile-nav .nav-icon{width:18px;height:18px}}@media (max-width:640px){.page{padding:1rem}.topbar{min-height:60px}.form-grid-2,.form-grid-3{grid-template-columns:1fr}.form-col-span-2,.form-col-span-3{grid-column:span 1}.dialog-backdrop{align-items:end;padding:.5rem}.dialog-backdrop>.card,.dialog-backdrop>form{max-height:calc(100dvh - 1rem)!important;border-radius:12px}.toolbar{width:100%}.toolbar .button{flex:1 1}}.spinner{width:1rem;height:1rem;border-radius:50%;border:2px solid var(--gray-200);border-top-color:var(--c-black);animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(1turn)}}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em;background:var(--gray-100);padding:.1em .3em;border-radius:4px}hr{border:0;border-top:1px solid var(--border)}.dialog-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;background:rgba(0,0,0,.4);padding:clamp(.75rem,3vw,2rem)}.dialog-backdrop>.card,.dialog-backdrop>form{max-height:min(760px,calc(100dvh - 2rem))!important;box-shadow:0 24px 80px rgba(0,0,0,.2)}.dialog-backdrop>form{overflow:auto}.field-row{display:flex;gap:.5rem;align-items:center}.chip{display:inline-block;border:1px solid var(--gray-200);border-radius:999px;padding:.125rem .5rem;font-size:.75rem;color:var(--gray-600);background:var(--gray-50)}.cap{text-transform:capitalize}.timetable-cell{display:block;width:100%;min-height:56px;text-align:left;border:1px dashed var(--gray-300);border-radius:var(--radius);background:var(--c-white);color:var(--text-muted);font:inherit;font-size:.8125rem;cursor:pointer;padding:.5rem .625rem}.timetable-cell:hover:not(:disabled){border-color:var(--c-black)}.timetable-cell:disabled{cursor:default}.timetable-cell-filled{border-style:solid;border-color:var(--gray-300);color:var(--text)}.timetable-break,.timetable-cell-filled{background:var(--gray-50)}.form-grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:1rem;gap:1rem}.form-grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:1rem;gap:1rem}.dialog-backdrop .form-grid-2,.dialog-backdrop .form-grid-3{gap:.875rem}.dialog-backdrop .stack{gap:1rem}.form-col-span-2{grid-column:span 2}.form-col-span-3{grid-column:span 3}.form-section{display:grid;grid-gap:.75rem;gap:.75rem}.form-section-title{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);padding-bottom:.375rem;border-bottom:1px solid var(--border);margin-bottom:.25rem}@media (max-width:640px){.form-grid-2,.form-grid-3{grid-template-columns:1fr}.form-col-span-2,.form-col-span-3{grid-column:span 1}}.ai-launcher{width:48px;height:48px;border:1px solid var(--c-black);border-radius:50%;background:var(--c-black);color:var(--c-white);font:inherit;font-size:.75rem;font-weight:700;cursor:pointer;box-shadow:0 4px 12px rgba(0,0,0,.16)}.ai-launcher,.ai-panel{position:fixed;right:1.5rem;bottom:1.5rem;z-index:40}.ai-panel{width:min(390px,calc(100vw - 2rem));height:min(590px,calc(100vh - 2rem));display:grid;grid-template-rows:auto 1fr auto;background:var(--surface);border:1px solid var(--c-black);border-radius:8px;box-shadow:0 12px 36px rgba(0,0,0,.16);overflow:hidden}.ai-header{min-height:58px;display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.75rem 1rem;border-bottom:1px solid var(--border)}.ai-header>div:first-child{display:grid;grid-gap:.1rem;gap:.1rem}.ai-header strong{font-size:.875rem}.ai-header span{font-size:.75rem;color:var(--text-muted)}.ai-header-actions{display:flex;gap:.25rem}.ai-icon-button{border:1px solid var(--gray-300);border-radius:var(--radius);padding:.4rem .5rem;color:var(--text);background:var(--c-white);font:inherit;font-size:.72rem;cursor:pointer}.ai-icon-button:hover:not(:disabled){background:var(--gray-100)}.ai-icon-button:disabled{opacity:.45;cursor:not-allowed}.ai-messages{min-height:0;overflow-y:auto;display:grid;align-content:start;grid-gap:.625rem;gap:.625rem;padding:1rem}.ai-message-pending{display:flex;align-items:center;gap:.55rem;border-style:dashed;color:var(--text-muted);font-size:.8125rem}.ai-spinner{width:14px;height:14px;flex:0 0 auto;border:2px solid var(--gray-300);border-top-color:var(--c-black);border-radius:50%;animation:ai-spin .7s linear infinite}@keyframes ai-spin{to{transform:rotate(1turn)}}.ai-message{display:grid;grid-gap:.4rem;gap:.4rem;max-width:90%;padding:.625rem .75rem;border:1px solid var(--border);border-radius:6px;font-size:.8125rem;white-space:pre-wrap;overflow-wrap:anywhere}.ai-message-user{justify-self:end;background:var(--gray-900);color:var(--c-white);border-color:var(--gray-900)}.ai-message-assistant{justify-self:start;background:var(--gray-50)}.ai-message-step{padding:.375rem .5rem;border-style:dashed;font-size:.75rem;color:var(--text-muted)}.ai-message-error{border-color:var(--c-black)}.ai-message a{font-size:.75rem;font-weight:600;text-decoration:underline}.ai-message .button{justify-self:start;padding:.35rem .55rem;font-size:.75rem}.ai-composer{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-gap:.5rem;gap:.5rem;align-items:center;padding:.75rem;border-top:1px solid var(--border)}.ai-composer .input{min-width:0}@media (max-width:640px){.ai-launcher,.ai-panel{right:1rem;bottom:1rem}.ai-panel{height:min(620px,calc(100vh - 2rem))}}