:root{--bg:#f4f7fb;--panel:rgba(255,255,255,.92);--panel-solid:#fff;--text:#172033;--muted:#64748b;--border:#dbe3ef;--primary:#2563eb;--primary-strong:#1d4ed8;--danger:#b91c1c;--warning:#a16207;--success:#15803d;--shadow:0 10px 35px rgba(15,23,42,.08);--radius:14px;--sidebar:272px;--topbar:64px;--focus:0 0 0 3px rgba(37,99,235,.25)}
[data-theme="dark"]{--bg:#0d1422;--panel:rgba(22,32,50,.94);--panel-solid:#162032;--text:#edf2f7;--muted:#9fb0c8;--border:#2b3a52;--primary:#6ea8fe;--primary-strong:#93befe;--shadow:0 16px 42px rgba(0,0,0,.25)}
*{box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:"Segoe UI",Inter,Arial,sans-serif;line-height:1.45}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{box-shadow:var(--focus)}
.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar);background:var(--panel-solid);border-right:1px solid var(--border);z-index:40;display:flex;flex-direction:column;transition:width .2s ease,transform .2s ease}.brand{height:var(--topbar);display:flex;align-items:center;gap:11px;padding:0 18px;border-bottom:1px solid var(--border);font-weight:700;color:var(--text)}.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--primary);color:white;font-size:18px}.brand-text{white-space:nowrap;overflow:hidden}.nav{padding:12px 10px 24px;overflow:auto}.nav-group{margin:15px 8px 6px;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;font-weight:700}.nav a{display:flex;align-items:center;gap:12px;min-height:42px;padding:8px 11px;border-radius:10px;color:var(--text);margin:2px 0}.nav a:hover,.nav a.active{background:color-mix(in srgb,var(--primary) 12%,transparent);text-decoration:none;color:var(--primary-strong)}.nav-icon{width:22px;text-align:center;font-size:1.05rem}.sidebar-footer{margin-top:auto;padding:12px;border-top:1px solid var(--border)}.sidebar-footer form{margin:0}.sidebar-footer button{width:100%}
.main{margin-left:var(--sidebar);min-height:100vh;transition:margin .2s}.topbar{position:sticky;top:0;height:var(--topbar);z-index:30;display:flex;align-items:center;gap:12px;padding:0 22px;background:color-mix(in srgb,var(--panel-solid) 88%,transparent);backdrop-filter:blur(16px);border-bottom:1px solid var(--border)}.topbar-title{font-weight:700;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-spacer{flex:1}.icon-btn{display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--border);border-radius:10px;background:var(--panel-solid);color:var(--text);cursor:pointer}.user-chip{display:flex;align-items:center;gap:9px;color:var(--text)}.avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:color-mix(in srgb,var(--primary) 15%,var(--panel-solid));font-weight:700;color:var(--primary)}
.content{padding:24px;max-width:1680px;margin:0 auto}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}.page-header h1{font-size:1.55rem;margin:0}.page-header p{margin:4px 0 0;color:var(--muted)}.actions{display:flex;flex-wrap:wrap;gap:8px}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.card+.card{margin-top:16px}.card h2,.card h3{margin-top:0}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.stat{padding:18px}.stat-label{color:var(--muted);font-size:.86rem}.stat-value{font-size:1.8rem;font-weight:750;margin-top:4px}.stat-note{font-size:.8rem;color:var(--muted);margin-top:5px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:39px;padding:8px 14px;border-radius:10px;border:1px solid var(--border);background:var(--panel-solid);color:var(--text);font-weight:600;cursor:pointer}.btn:hover{text-decoration:none;filter:brightness(.98)}.btn-primary{background:var(--primary);border-color:var(--primary);color:white}.btn-danger{background:var(--danger);border-color:var(--danger);color:white}.btn-small{min-height:33px;padding:6px 10px;font-size:.85rem}.btn-ghost{background:transparent}
.form-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px}.field{grid-column:span 6}.field-full{grid-column:1/-1}.field-3{grid-column:span 3}.field-4{grid-column:span 4}.field-8{grid-column:span 8}.field label{display:block;font-size:.84rem;font-weight:650;margin-bottom:6px}.field small{display:block;color:var(--muted);margin-top:5px}.control{width:100%;min-height:42px;border:1px solid var(--border);border-radius:10px;background:var(--panel-solid);color:var(--text);padding:9px 11px}.control:focus{border-color:var(--primary);box-shadow:var(--focus)}textarea.control{min-height:110px;resize:vertical}.checkbox{display:flex;align-items:center;gap:8px}.checkbox input{width:18px;height:18px}.form-actions{display:flex;gap:9px;justify-content:flex-end;margin-top:18px;padding-top:15px;border-top:1px solid var(--border)}.error-text{color:var(--danger);font-size:.8rem;margin-top:4px}
.table-wrap{overflow:auto;border:1px solid var(--border);border-radius:12px}.table{width:100%;border-collapse:collapse;min-width:760px}.table th,.table td{padding:11px 12px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}.table th{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:color-mix(in srgb,var(--panel-solid) 85%,var(--bg));position:sticky;top:0}.table tr:last-child td{border-bottom:0}.table tr:hover td{background:color-mix(in srgb,var(--primary) 4%,transparent)}.badge{display:inline-flex;align-items:center;min-height:25px;padding:3px 8px;border-radius:999px;font-size:.76rem;font-weight:700;background:color-mix(in srgb,var(--muted) 14%,transparent);color:var(--text)}.badge-success{background:color-mix(in srgb,var(--success) 14%,transparent);color:var(--success)}.badge-warning{background:color-mix(in srgb,var(--warning) 15%,transparent);color:var(--warning)}.badge-danger{background:color-mix(in srgb,var(--danger) 14%,transparent);color:var(--danger)}
.alert{padding:12px 14px;border-radius:11px;margin-bottom:16px;border:1px solid var(--border)}.alert-success{background:color-mix(in srgb,var(--success) 10%,var(--panel-solid));color:var(--success)}.alert-error{background:color-mix(in srgb,var(--danger) 10%,var(--panel-solid));color:var(--danger)}.alert-warning{background:color-mix(in srgb,var(--warning) 10%,var(--panel-solid));color:var(--warning)}.empty{text-align:center;padding:42px;color:var(--muted)}.searchbar{display:flex;gap:8px;max-width:540px}.searchbar .control{flex:1}.muted{color:var(--muted)}.text-danger{color:var(--danger)}.text-success{color:var(--success)}.nowrap{white-space:nowrap}.print-only{display:none}.schedule-grid{display:grid;grid-template-columns:150px repeat(5,minmax(150px,1fr));border:1px solid var(--border);border-radius:12px;overflow:auto}.schedule-cell{padding:9px;border-right:1px solid var(--border);border-bottom:1px solid var(--border);min-height:75px}.schedule-head{font-weight:700;background:color-mix(in srgb,var(--primary) 8%,var(--panel-solid))}.schedule-class{font-weight:700}.lesson-card{border-left:3px solid var(--primary);padding-left:8px;font-size:.82rem}.document-paper{max-width:850px;margin:0 auto;background:white;color:#111;padding:55px;min-height:1000px;box-shadow:var(--shadow);border-radius:5px}.document-paper h1,.document-paper h2{text-align:center}.document-paper footer{margin-top:90px;border-top:1px solid #bbb;padding-top:20px}
.sidebar-collapsed .sidebar{width:76px}.sidebar-collapsed .main{margin-left:76px}.sidebar-collapsed .brand-text,.sidebar-collapsed .nav-label,.sidebar-collapsed .nav-group{display:none}.sidebar-collapsed .nav a{justify-content:center}.mobile-overlay{display:none}
.guest-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 10% 10%,color-mix(in srgb,var(--primary) 14%,transparent),transparent 35%),var(--bg)}.auth-card{width:min(440px,100%)}.public-header{height:70px;display:flex;align-items:center;padding:0 max(22px,calc((100vw - 1180px)/2));border-bottom:1px solid var(--border);background:var(--panel-solid)}.public-main{max-width:1180px;margin:0 auto;padding:36px 22px}.hero{padding:55px 0;display:grid;grid-template-columns:1.25fr .75fr;gap:32px;align-items:center}.hero h1{font-size:clamp(2rem,5vw,4rem);line-height:1.05;margin:0 0 18px}.hero p{font-size:1.1rem;color:var(--muted)}
@media(max-width:1100px){.grid-4{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(2,1fr)}}
@media(max-width:820px){.sidebar{transform:translateX(-100%);width:min(310px,88vw)}.main,.sidebar-collapsed .main{margin-left:0}.sidebar-collapsed .sidebar{width:min(310px,88vw)}.sidebar-collapsed .brand-text,.sidebar-collapsed .nav-label,.sidebar-collapsed .nav-group{display:block}.sidebar-collapsed .nav a{justify-content:flex-start}.mobile-menu-open .sidebar{transform:translateX(0)}.mobile-menu-open .mobile-overlay{display:block;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:35}.content{padding:18px}.grid-3,.grid-4,.grid-2{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.field,.field-3,.field-4,.field-8{grid-column:1}.page-header{flex-direction:column}.hero{grid-template-columns:1fr}.user-chip span:last-child{display:none}}
@media(max-width:480px){.content{padding:13px}.topbar{padding:0 12px}.card{padding:14px}.actions,.actions .btn{width:100%}.searchbar{width:100%}.document-paper{padding:25px;min-height:auto}}
@media print{.sidebar,.topbar,.page-header .actions,.no-print,.alert{display:none!important}.main{margin:0}.content{padding:0}.card{box-shadow:none;border:0}.document-paper{box-shadow:none;padding:0;min-height:auto}.print-only{display:block}}
@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
