:root { --bg:#f5f7fb; --card:#fff; --text:#1d2433; --muted:#6b7385; --accent:#2a6ff0; --danger:#d64545; --border:#e2e6ee; }
* { box-sizing: border-box; }
body { margin:0; font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; background:var(--bg); color:var(--text); line-height:1.5; }
a { color:var(--accent); text-decoration:none; } a:hover { text-decoration:underline; }
.wrap { max-width: 960px; margin: 0 auto; padding: 0 16px; }
.top { background:#fff; border-bottom:1px solid var(--border); }
.top .wrap { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; min-height:56px; }
.brand { font-weight:700; color:var(--text); }
nav { display:flex; gap:16px; align-items:center; flex-wrap:wrap; }
main { padding-bottom: 48px; }
h1 { margin: 24px 0 12px; } h2 { margin: 24px 0 8px; font-size: 1.2rem; }
.card { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:16px; margin:12px 0; }
.card h2 { margin-top:0; }
.grid { display:grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap:12px; }
.subject { display:block; color:var(--text); } .subject:hover { border-color:var(--accent); text-decoration:none; }
.subject p { margin: 4px 0 8px; color:var(--muted); }
.muted { color:var(--muted); font-size:.9em; }
.flash { background:#e8f0ff; border:1px solid #c5d7ff; padding:10px 14px; border-radius:8px; margin-top:16px; }
.lectures { list-style:none; padding:0; }
.num { color:var(--muted); }
.desc { white-space: pre-line; }
.files { padding-left: 20px; margin: 8px 0; } .files li { margin: 4px 0; overflow-wrap:anywhere; }
.btn { display:inline-block; background:var(--accent); color:#fff; border:0; border-radius:8px; padding:8px 14px; font:inherit; cursor:pointer; }
.btn:hover { filter:brightness(1.08); text-decoration:none; }
.btn.secondary { background:#eef1f6; color:var(--text); }
.btn.danger { background:var(--danger); }
.btn.tg { background:#229ed9; font-size:1.1em; padding:12px 22px; }
button.link { background:none; border:0; color:var(--accent); cursor:pointer; font:inherit; padding:0; }
button.link.danger { color:var(--danger); font-size:.85em; }
form.inline { display:inline; }
.row { display:flex; gap:10px; align-items:flex-end; flex-wrap:wrap; }
.grow { flex:1; min-width: 200px; }
.stack { display:flex; flex-direction:column; gap:10px; }
label { display:flex; flex-direction:column; gap:4px; font-size:.9em; color:var(--muted); }
label.small { width: 90px; }
input[type=text], input[type=number], textarea, select { font:inherit; padding:8px 10px; border:1px solid var(--border); border-radius:8px; background:#fff; color:var(--text); width:100%; }
select { width:auto; min-width: 220px; }
table { width:100%; border-collapse:collapse; background:var(--card); border:1px solid var(--border); border-radius:10px; overflow:hidden; display:block; overflow-x:auto; }
th, td { text-align:left; padding:10px; border-bottom:1px solid var(--border); vertical-align:middle; }
td.actions { white-space:nowrap; }
.badge { padding:2px 8px; border-radius:999px; font-size:.8em; background:#eee; }
.badge.approved { background:#ddf5e3; color:#1d7a3a; } .badge.pending { background:#fff3d6; color:#8a6100; } .badge.rejected { background:#fde2e2; color:#a02828; }
.narrow { max-width: 460px; margin: 40px auto; } .center { text-align:center; }
