:root{--bg:#f5f7fb;--panel:#fff;--text:#172033;--muted:#6d7890;--line:#e6eaf1;--accent:#5b5ce2;--accent2:#7778ef;--good:#14866d;--warn:#d18a18;--bad:#d54f5f;--shadow:0 14px 40px rgba(25,35,60,.07)}
*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,sans-serif;background:var(--bg);color:var(--text)}button,input,select{font:inherit}button{cursor:pointer;border:0}
.app-shell{display:flex;min-height:100vh}.sidebar{width:260px;background:var(--panel);border-right:1px solid var(--line);padding:26px 18px;display:flex;flex-direction:column;gap:8px;position:fixed;inset:0 auto 0 0}.brand{display:flex;align-items:center;gap:12px;padding:0 10px 28px}.brand-mark{width:40px;height:40px;border-radius:12px;background:var(--accent);color:white;display:grid;place-items:center;font-weight:800}.brand strong,.brand span{display:block}.brand span{font-size:12px;color:var(--muted);margin-top:2px}.nav,.theme-btn{background:transparent;color:var(--muted);text-align:left;padding:13px 14px;border-radius:11px;font-weight:600}.nav:hover,.nav.active,.theme-btn:hover{background:rgba(91,92,226,.09);color:var(--accent)}.sidebar-bottom{margin-top:auto;display:grid;gap:12px}.sidebar-bottom small{color:var(--muted);line-height:1.5;padding:0 10px}
.main{margin-left:260px;width:calc(100% - 260px);padding:34px 42px 60px}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.eyebrow{font-size:10px;letter-spacing:.14em;font-weight:800;color:var(--accent);margin:0 0 7px}.topbar h1{font-size:30px;margin:0}.primary,.ghost{padding:11px 16px;border-radius:10px;font-weight:700}.primary{background:var(--accent);color:white;box-shadow:0 7px 18px rgba(91,92,226,.22)}.ghost{background:var(--panel);color:var(--text);border:1px solid var(--line)}
.view{display:none}.view.active{display:block}.hero{background:linear-gradient(135deg,#22264a,#5b5ce2);color:#fff;border-radius:22px;padding:30px 32px;display:flex;justify-content:space-between;align-items:center;box-shadow:var(--shadow);margin-bottom:22px}.hero h2{font-size:29px;margin:5px 0 8px}.hero p:not(.eyebrow){max-width:680px;opacity:.82;margin:0}.hero-badge{border:1px solid rgba(255,255,255,.22);padding:16px 20px;border-radius:16px;text-align:right;background:rgba(255,255,255,.08)}.hero-badge span{font-size:24px;font-weight:800;display:block}.hero-badge small{opacity:.7}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:22px}.stat{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:20px;box-shadow:var(--shadow)}.stat .label{color:var(--muted);font-size:12px}.stat strong{font-size:30px;display:block;margin-top:6px}.stat small{color:var(--muted)}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);overflow:hidden}.panel-head{display:flex;justify-content:space-between;align-items:center;padding:22px;border-bottom:1px solid var(--line)}.panel-head h3{margin:0 0 4px}.panel-head p{margin:0;color:var(--muted);font-size:13px}.panel-head select,.toolbar select{background:var(--panel);border:1px solid var(--line);color:var(--text);padding:10px 12px;border-radius:9px}
.subject-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;padding:18px}.subject-card{border:1px solid var(--line);padding:18px;border-radius:14px;transition:.15s}.subject-card:hover{border-color:var(--accent);transform:translateY(-2px)}.subject-card h4{margin:0 0 15px;font-size:14px}.subject-score{display:flex;justify-content:space-between;align-items:end}.subject-score strong{font-size:28px}.bar{height:7px;background:var(--line);border-radius:10px;overflow:hidden;margin-top:13px}.bar i{display:block;height:100%;background:var(--accent);border-radius:inherit}.status{font-size:11px;font-weight:800}.pass{color:var(--good)}.needs{color:var(--bad)}.none{color:var(--muted)}
.toolbar{display:flex;gap:10px;margin-bottom:18px;align-items:center}.toolbar select:first-child{min-width:300px}.toolbar .ghost{margin-left:auto}
.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{padding:14px 18px;border-bottom:1px solid var(--line);text-align:left;font-size:13px}th{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em}td strong{font-size:14px}.pill{background:rgba(91,92,226,.1);color:var(--accent);padding:6px 9px;border-radius:20px;font-size:11px;font-weight:800}.delete{background:transparent;color:var(--muted);font-size:18px}.delete:hover{color:var(--bad)}
.summary-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:18px}.grade-card{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:25px;box-shadow:var(--shadow)}.grade-big{font-size:54px;font-weight:800;line-height:1}.grade-big span{font-size:14px;color:var(--muted);font-weight:500}.metric-row{display:grid;grid-template-columns:1fr 70px 90px;align-items:center;gap:12px;padding:15px 0;border-bottom:1px solid var(--line)}.metric-row:last-child{border:0}.metric-name{font-weight:700}.metric-name small{display:block;color:var(--muted);font-weight:400;margin-top:3px}.score{text-align:right;font-weight:800}.progress{height:8px;background:var(--line);border-radius:20px;overflow:hidden}.progress i{height:100%;display:block;background:var(--accent)}.improve{margin-top:16px;padding:15px;border-radius:12px;background:rgba(213,79,95,.08);color:var(--bad);font-size:13px}.goodbox{background:rgba(20,134,109,.08);color:var(--good)}.record-mini{max-height:430px;overflow:auto}.picture-thumb{width:35px;height:35px;object-fit:cover;border-radius:7px;vertical-align:middle}
.modal-backdrop{position:fixed;inset:0;background:rgba(15,20,35,.52);backdrop-filter:blur(5px);display:none;place-items:center;padding:20px;z-index:10}.modal-backdrop.open{display:grid}.modal{width:min(720px,100%);max-height:90vh;overflow:auto;background:var(--panel);border-radius:20px;box-shadow:0 30px 80px rgba(0,0,0,.25);padding:25px}.modal-head{display:flex;justify-content:space-between;align-items:start;margin-bottom:20px}.modal-head h2{margin:0}.close{background:transparent;font-size:26px;color:var(--muted)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid label{display:grid;gap:7px;font-size:12px;font-weight:700}.form-grid input,.form-grid select{padding:11px 12px;border:1px solid var(--line);border-radius:9px;background:var(--bg);color:var(--text);outline:none}.form-grid input:focus,.form-grid select:focus{border-color:var(--accent)}.wide{grid-column:1/-1}.muted{color:var(--muted);font-weight:400}.hidden{display:none!important}.form-note{margin-top:16px;padding:13px;border-radius:10px;background:rgba(91,92,226,.07);font-size:12px;color:var(--muted);line-height:1.5}.error{color:var(--bad);font-size:12px;margin-top:10px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}
body.dark{--bg:#0e1118;--panel:#151922;--text:#eef1f7;--muted:#929bad;--line:#262c39;--shadow:0 14px 40px rgba(0,0,0,.18)}body.dark .hero{background:linear-gradient(135deg,#1a1d35,#4c4dc5)}
@media(max-width:900px){.sidebar{width:74px;padding:18px 9px}.brand{padding:0 8px 20px}.brand>div:last-child,.nav span,.theme-btn span,.sidebar-bottom small{display:none}.nav,.theme-btn{text-align:center}.main{margin-left:74px;width:calc(100% - 74px);padding:24px}.cards,.summary-grid{grid-template-columns:1fr}.subject-grid{grid-template-columns:1fr}.hero{align-items:start;gap:20px;flex-direction:column}.hero-badge{text-align:left}.toolbar{flex-wrap:wrap}.toolbar select:first-child{min-width:0;flex:1}.toolbar .ghost{margin-left:0}}
@media(max-width:600px){.main{padding:18px}.topbar h1{font-size:24px}.form-grid{grid-template-columns:1fr}.wide{grid-column:auto}.topbar .primary{font-size:0}.topbar .primary:first-letter{font-size:18px}}

.picture-picker{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.camera-btn{white-space:nowrap}.picture-preview{display:flex;align-items:center;gap:10px;margin-top:10px}.picture-preview img{width:100px;height:75px;object-fit:cover;border-radius:10px;border:1px solid var(--line)}
.camera-backdrop{position:fixed;inset:0;background:rgba(15,20,35,.58);backdrop-filter:blur(6px);display:none;place-items:center;padding:20px;z-index:20}.camera-backdrop.open{display:grid}.camera-modal{width:min(680px,100%);background:var(--panel);border-radius:20px;padding:25px;box-shadow:0 30px 80px rgba(0,0,0,.28)}.camera-frame{background:#080a10;border-radius:15px;overflow:hidden;aspect-ratio:4/3;display:grid;place-items:center}.camera-frame video{width:100%;height:100%;object-fit:cover}.camera-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:15px}
