
:root{
  --bg:#0A0A0B;
  --panel:#111215;
  --panel2:#17191D;
  --panel3:#0E1013;
  --line:#2A2C31;
  --pearl:#F4F0E8;
  --text:#F4F0E8;
  --muted:#A6A39C;
  --teal:#10B8C4;
  --teal2:#078C98;
  --yellow:#F4B800;
  --navy:#0D2942;
  --green:#28C58A;
  --amber:#F59E0B;
  --red:#EF5A5A;
  --nav:#070809;
  --shadow:0 18px 50px rgba(0,0,0,.34);
}
*{box-sizing:border-box}
html,body{margin:0;background:radial-gradient(circle at 50% -10%,#17191d 0,#0A0A0B 38%,#070708 100%);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}
body{min-height:100vh}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
#app{min-height:100vh;padding-bottom:88px}
.shell{max-width:820px;margin:0 auto}
.topbar{position:sticky;top:0;z-index:20;background:rgba(10,10,11,.94);backdrop-filter:blur(16px);border-bottom:1px solid #24262b;padding:12px 18px}
.brand{display:flex;align-items:center;gap:12px}
.brand-logo{width:58px;height:58px;object-fit:contain;filter:drop-shadow(0 8px 18px rgba(0,0,0,.36))}
.brand h1{font-size:19px;margin:0;color:var(--pearl);letter-spacing:.01em}.brand p{margin:2px 0 0;color:var(--muted);font-size:12px;letter-spacing:.04em}
.mode{margin-left:auto;font-size:11px;padding:6px 9px;border:1px solid var(--line);border-radius:999px;color:var(--muted)}
.page{padding:18px}
.hero{margin-bottom:16px}.eyebrow{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--teal);font-weight:800}
h2{font-size:34px;line-height:1.05;margin:6px 0 8px}h3{margin:0;font-size:21px}
.sub{color:var(--muted);line-height:1.5;margin:0}
.datebar{display:grid;grid-template-columns:48px 1fr 48px;gap:10px;margin:18px 0}
.datebar button,.iconbtn{border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:14px;min-height:48px}
.datebox{background:#111215;border:1px solid var(--line);border-radius:14px;padding:6px 12px;display:flex;align-items:center;justify-content:center}
.datebox input{width:100%;border:0;background:transparent;color:var(--text);font-weight:800;text-align:center;outline:none}
.section-title{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:20px 0 10px}
.section-title small{color:var(--muted)}
.card{background:linear-gradient(180deg,#181a1e,#111215);border:1px solid var(--line);border-radius:20px;padding:16px;margin:12px 0;box-shadow:var(--shadow)}
.student-head{display:flex;gap:12px;align-items:flex-start}
.avatar{flex:0 0 48px;width:48px;height:48px;border-radius:15px;background:#217c9b;display:grid;place-items:center;font-weight:900;font-size:18px}
.student-name{font-size:20px;font-weight:850}.meta{color:var(--muted);font-size:14px;line-height:1.5}.pill{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;background:#13283a;color:#9fd6e1;font-size:11px;font-weight:800;margin-left:auto}
.progress{height:7px;background:#123c49;border-radius:999px;overflow:hidden;margin:14px 0 8px}.progress>span{display:block;height:100%;background:linear-gradient(90deg,var(--teal2),var(--teal))}
.countrow{display:flex;justify-content:space-between;color:var(--muted);font-size:13px}
.actions{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px}
.btn{border:1px solid #27384a;background:var(--navy);color:var(--pearl);border-radius:13px;min-height:44px;padding:9px 10px;font-weight:800}
.btn.primary{background:linear-gradient(135deg,var(--teal2),var(--teal));color:#041417;border-color:transparent;box-shadow:0 8px 24px rgba(16,184,196,.18)}
.btn.present{background:#10251f;border-color:#246d57;color:#7be0bd}.btn.absent{background:#2a1516;border-color:#7c383b;color:#ff9b9b}.btn.noclass{background:#17191d;border-color:#42454d;color:#d7d3ca}
.btn.amber{background:var(--yellow);color:#1b1603;border-color:transparent}
.btn.danger{border-color:#753c3c;color:#ff9a9a}
.btn.full{width:100%}
.status{font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.04em;padding:5px 8px;border-radius:999px;display:inline-block}
.status.present{background:#113f31;color:#79e0b9}.status.absent{background:#4a2022;color:#ffaaaa}.status.no_class{background:#2c2e33;color:#e3ded4}
.note{margin-top:10px;padding:11px 12px;border-radius:12px;background:#0a2430;color:#d9e5e8;font-size:14px}
.quick{display:flex;gap:8px;margin-top:12px}.quick .btn{flex:1}
.empty{padding:30px 18px;border:1px dashed var(--line);border-radius:18px;color:var(--muted);text-align:center}
.tabs{position:fixed;bottom:0;left:0;right:0;z-index:30;background:rgba(3,21,29,.98);border-top:1px solid var(--line);padding:8px max(10px,env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left))}
.tabs-inner{max-width:820px;margin:auto;display:grid;grid-template-columns:repeat(4,1fr);gap:4px}
.tab{border:0;background:transparent;color:#839aa4;padding:8px 4px;font-size:12px;font-weight:800}.tab.active{color:var(--teal)}
.tab b{display:block;font-size:20px;line-height:1.1;margin-bottom:3px}
.listrow{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid rgba(39,89,103,.45)}.listrow:last-child{border:0}
.listrow .grow{flex:1}
.weekday{font-size:17px;font-weight:850;margin:18px 0 4px;color:#dbe8eb}
.weekrow{display:grid;grid-template-columns:84px 1fr;gap:10px;padding:10px 0;border-bottom:1px solid rgba(39,89,103,.35)}
.weekrow .time{color:var(--teal);font-weight:800}.weekrow .who{font-weight:800}.weekrow .small{color:var(--muted);font-size:12px}
.fab{position:fixed;right:18px;bottom:92px;width:54px;height:54px;border-radius:17px;border:0;background:var(--teal);color:#062029;font-size:28px;font-weight:700;box-shadow:var(--shadow);z-index:25}
.modal-back{position:fixed;inset:0;background:rgba(0,0,0,.62);z-index:50;display:flex;align-items:flex-end;justify-content:center}
.modal{width:min(820px,100%);max-height:92vh;overflow:auto;background:#09232d;border:1px solid var(--line);border-radius:24px 24px 0 0;padding:18px;padding-bottom:calc(20px + env(safe-area-inset-bottom))}
.modal-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}.modal-head h3{flex:1}.close{width:42px;height:42px;border-radius:12px;border:1px solid var(--line);background:#0c2c37;color:var(--text)}
.field{margin:13px 0}.field label{display:block;color:#cbd9dd;font-size:13px;font-weight:800;margin-bottom:6px}
.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);background:#071f29;color:var(--text);border-radius:13px;padding:12px;outline:none}
.field textarea{min-height:90px;resize:vertical}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.choice{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.choice .btn{min-height:58px}
.timeline .item{border-left:4px solid var(--line);padding:12px 14px;margin:10px 0;background:#092832;border-radius:14px}
.timeline .item.present{border-color:var(--teal)}.timeline .item.absent{border-color:var(--red)}.timeline .item.no_class{border-color:#9aa8ae}
.timeline .top{display:flex;justify-content:space-between;gap:8px}.timeline .date{color:var(--muted);font-size:12px}
.timeline .topic{font-weight:800;margin-top:8px}
.files{margin-top:8px;display:flex;flex-wrap:wrap;gap:6px}.filechip{border:1px solid var(--line);background:#0d3440;color:#bce5eb;border-radius:999px;padding:6px 9px;font-size:12px}
.alert{padding:12px 14px;border-radius:14px;background:#3a2f11;color:#f5d77e;border:1px solid #6a5719;margin:12px 0;font-size:13px}
.good{background:#10392f;color:#8ce2bf;border-color:#235e4d}
.login{max-width:430px;margin:70px auto;padding:20px}.login .card{padding:22px}
.settings-grid{display:grid;gap:12px}.mutedbox{padding:13px;border-radius:14px;background:#081f29;border:1px solid var(--line);color:var(--muted);font-size:13px}
.smallbtn{border:0;background:transparent;color:var(--teal);font-weight:800;padding:5px}
@media(min-width:700px){
  .page{padding:24px} .card{padding:18px} .students-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.students-grid .card{margin:0}
}

.pill.pending{background:#3b2d0d;color:#ffd66b;border:1px solid #6a5117}
.eyebrow{color:var(--teal)!important}.progress>span{background:linear-gradient(90deg,var(--teal2),var(--teal))!important}
.note{background:#0f1114;border:1px solid #27292f;color:#ded9cf}
.tabs{background:rgba(7,8,9,.97)!important}.tab.active{color:var(--teal)!important}
.avatar{background:linear-gradient(145deg,var(--navy),#145d73)!important;color:var(--pearl)!important}
.modal{background:#0d0e10!important}.field input,.field select,.field textarea{background:#0a0b0d!important;color:var(--pearl)!important}
.alert{background:#3a2b09!important;color:#ffd876!important;border-color:#6a5015!important}.good{background:#0e382b!important;color:#8ce2bf!important;border-color:#235e4d!important}

.marked-banner{
  margin-top:14px;
  padding:10px 12px;
  border-radius:12px;
  border:1px solid #276b54;
  background:#102b23;
  color:#85dfba;
  font-size:13px;
  font-weight:900;
  text-align:center;
}
.zoom-text-view{
  white-space:pre-wrap;
  line-height:1.6;
  padding:14px;
  border:1px solid var(--line);
  border-radius:14px;
  background:#0a0b0d;
  color:var(--pearl);
  max-height:60vh;
  overflow:auto;
}
