:root{--bg:#f5f7fb;--card:#fff;--pri:#4f46e5;--txt:#1f2937;--mut:#6b7280}
*{box-sizing:border-box}body{margin:0;font-family:system-ui,sans-serif;background:var(--bg);color:var(--txt)}
.topbar{background:var(--pri);color:#fff;padding:.8rem 1.2rem;display:flex;justify-content:space-between;align-items:center}
.topbar form{margin:0}.container{max-width:1000px;margin:1.5rem auto;padding:0 1rem}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}
.card{background:var(--card);border-radius:14px;padding:1.2rem;box-shadow:0 2px 8px #0001}
.stat b{display:block;font-size:2rem;color:var(--pri)}
.btn{background:var(--pri);color:#fff;border:0;border-radius:8px;padding:.6rem 1rem;font-size:1rem;cursor:pointer}
.btn.light{background:#fff;color:var(--pri)}
input{width:100%;padding:.7rem;border:1px solid #d1d5db;border-radius:8px;font-size:1rem;margin:.3rem 0 1rem}
.alert{padding:.8rem 1rem;border-radius:8px;margin-bottom:1rem}.alert.danger{background:#fee2e2;color:#991b1b}
.alert.success{background:#dcfce7;color:#166534}.alert.warning{background:#fef3c7;color:#92400e}
.login{max-width:380px;margin:12vh auto}
.shell{display:flex;min-height:calc(100vh - 52px)}
.side{width:200px;background:#fff;padding:1rem;border-right:1px solid #e5e7eb}
.side a{display:block;padding:.6rem .8rem;border-radius:8px;color:var(--txt);text-decoration:none;margin-bottom:.3rem}
.side a:hover,.side a.on{background:#eef2ff;color:var(--pri)}
.main{flex:1;padding:1.5rem;min-width:0}
@media(max-width:700px){.shell{flex-direction:column}.side{width:100%;display:flex;gap:.3rem;overflow-x:auto}.side a{white-space:nowrap}}
table{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden}
th,td{padding:.6rem .8rem;text-align:left;border-bottom:1px solid #eee;font-size:.95rem}
th{background:#f3f4f6}.tbl{overflow-x:auto}
.badge{padding:.15rem .6rem;border-radius:99px;font-size:.8rem;color:#fff}
.badge.success{background:#16a34a}.badge.secondary{background:#6b7280}.badge.danger{background:#dc2626}.badge.warning{background:#d97706}
.btn.sm{padding:.3rem .6rem;font-size:.85rem}.btn.danger{background:#dc2626}.btn.gray{background:#6b7280}
a.btn{text-decoration:none;display:inline-block}
.row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.row form{margin:0}
.head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}
select,textarea{width:100%;padding:.7rem;border:1px solid #d1d5db;border-radius:8px;font-size:1rem;margin:.3rem 0 1rem;font-family:inherit}
textarea{min-height:160px}.err{color:#b91c1c;font-size:.9rem;margin:-.6rem 0 .8rem}
.two{display:grid;grid-template-columns:1fr 1fr;gap:0 1rem}@media(max-width:700px){.two{grid-template-columns:1fr}}
.hint{color:var(--mut);font-size:.85rem;margin:-.6rem 0 1rem}
.level-head{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin:1rem 0 .4rem}
.task-card.locked{opacity:.6;background:#f3f4f6}
.btn.disabled{cursor:not-allowed;pointer-events:none;opacity:.7;display:inline-block}
