@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600&family=JetBrains+Mono:wght@400;500;700&display=swap');

:root{
  --navy:#1A2332;
  --navy-2:#222D40;
  --cream:#F4F0E6;
  --cream-2:#EAE4D4;
  --coral:#EE664D;
  --coral-dark:#C44A33;
  --cyan:#00AEEF;
  --magenta:#EC008C;
  --yellow:#FFD200;
  --key:#1A1A1A;
  --ink-soft:rgba(244,240,230,0.55);
  --ink-faint:rgba(244,240,230,0.28);
  --line:rgba(244,240,230,0.14);
  --green-ok:#5BAE7A;
  --red-warn:#E25C5C;
}

*{box-sizing:border-box;}

body{
  margin:0;
  background:var(--navy);
  color:var(--cream);
  font-family:'JetBrains Mono',monospace;
  -webkit-font-smoothing:antialiased;
}

.page{
  max-width:1180px;
  margin:0 auto;
  padding:0 32px 120px;
  position:relative;
}

/* ===== registration marks ===== */
.reg-mark{
  position:fixed;
  width:34px;height:34px;
  opacity:.5;
  pointer-events:none;
  z-index:50;
}
.reg-mark svg{width:100%;height:100%;}
.reg-tl{top:14px;left:14px;}
.reg-tr{top:14px;right:14px;}
.reg-bl{bottom:14px;left:14px;}
.reg-br{bottom:14px;right:14px;}

/* ===== header ===== */
header{
  padding:64px 0 40px;
  border-bottom:1px solid var(--line);
  position:relative;
}
.eyebrow{
  font-size:11px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--coral);
  font-weight:700;
  display:flex;
  align-items:center;
  gap:10px;
  margin-bottom:18px;
}
.eyebrow::before{
  content:"";
  width:18px;height:18px;
  border:1.5px solid var(--coral);
  border-radius:50%;
  display:inline-block;
  position:relative;
}
.eyebrow::after{
  content:"";
  position:absolute;
  left:7px;
  width:18px;height:1.5px;
  background:var(--coral);
}
h1{
  font-family:'Fraunces',serif;
  font-weight:500;
  font-size:clamp(36px,5vw,58px);
  line-height:1.02;
  margin:0 0 20px;
  letter-spacing:-0.01em;
  max-width:760px;
}
h1 em{
  font-style:italic;
  color:var(--coral);
  font-weight:400;
}
.subhead{
  font-size:14px;
  color:var(--ink-soft);
  line-height:1.7;
  max-width:600px;
  margin:0 0 32px;
}
.process-bar{
  display:flex;
  gap:0;
  width:100%;
  height:6px;
  border-radius:0;
  overflow:hidden;
  margin-bottom:36px;
}
.process-bar span{flex:1;}
.pc{background:var(--cyan);}
.pm{background:var(--magenta);}
.py{background:var(--yellow);}
.pk{background:#0B0B0B;}
.pp{background:var(--coral);}

/* ===== stat strip ===== */
.stats{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:1px;
  background:var(--line);
  border:1px solid var(--line);
  margin-bottom:0;
}
.stat{
  background:var(--navy);
  padding:20px 22px;
}
.stat-num{
  font-family:'Fraunces',serif;
  font-size:34px;
  font-weight:500;
  line-height:1;
  color:var(--cream);
}
.stat-num.accent{color:var(--coral);}
.stat-label{
  font-size:10px;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--ink-soft);
  margin-top:8px;
}

/* ===== controls ===== */
.controls{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
  padding:28px 0;
  border-bottom:1px solid var(--line);
  margin-bottom:36px;
}
.controls-label{
  font-size:10px;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--ink-faint);
  margin-right:6px;
}
.filter-btn{
  font-family:'JetBrains Mono',monospace;
  background:transparent;
  border:1px solid var(--line);
  color:var(--ink-soft);
  font-size:12px;
  padding:8px 14px;
  cursor:pointer;
  letter-spacing:.02em;
  transition:all .15s ease;
}
.filter-btn:hover{border-color:var(--ink-soft);color:var(--cream);}
.filter-btn.active{
  background:var(--coral);
  border-color:var(--coral);
  color:var(--navy);
  font-weight:700;
}
.search-wrap{
  margin-left:auto;
  position:relative;
}
#search{
  font-family:'JetBrains Mono',monospace;
  background:transparent;
  border:1px solid var(--line);
  color:var(--cream);
  font-size:12px;
  padding:8px 14px 8px 30px;
  width:220px;
  outline:none;
}
#search::placeholder{color:var(--ink-faint);}
#search:focus{border-color:var(--coral);}
.search-icon{
  position:absolute;
  left:10px;top:50%;
  transform:translateY(-50%);
  width:12px;height:12px;
  opacity:.4;
}

/* ===== class group ===== */
.class-group{margin-bottom:56px;}
.class-head{
  display:flex;
  align-items:baseline;
  gap:16px;
  margin-bottom:20px;
  padding-bottom:10px;
  border-bottom:1px solid var(--line);
}
.class-title{
  font-family:'Fraunces',serif;
  font-size:24px;
  font-weight:500;
}
.class-count{
  font-size:11px;
  color:var(--ink-soft);
  letter-spacing:.04em;
}
.class-brief-tag{
  margin-left:auto;
  font-size:10px;
  letter-spacing:.08em;
  text-transform:uppercase;
  padding:4px 10px;
  border:1px solid var(--line);
  color:var(--ink-soft);
}

.grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(330px,1fr));
  gap:16px;
}

/* ===== student card ===== */
.card{
  background:var(--navy-2);
  border:1px solid var(--line);
  padding:22px 22px 20px;
  position:relative;
  transition:border-color .15s ease;
}
.card.is-complete{border-color:rgba(91,174,122,0.5);}
.card.has-issue{border-color:rgba(226,92,92,0.45);}

.card-top{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  margin-bottom:6px;
}
.card-name{
  font-family:'Fraunces',serif;
  font-size:19px;
  font-weight:500;
  line-height:1.2;
  color:var(--cream);
}
.card-id{
  font-size:10px;
  color:var(--ink-faint);
  letter-spacing:.04em;
  margin-top:3px;
}
.status-dot{
  width:9px;height:9px;
  border-radius:50%;
  background:var(--ink-faint);
  flex-shrink:0;
  margin-top:6px;
  transition:background .15s ease;
}
.status-dot.ok{background:var(--green-ok);}
.status-dot.issue{background:var(--red-warn);}

.files-row{
  display:flex;
  gap:8px;
  margin:12px 0 16px;
  flex-wrap:wrap;
}
.file-chip{
  font-size:10px;
  padding:4px 8px;
  border:1px solid var(--line);
  color:var(--ink-soft);
  letter-spacing:.02em;
  max-width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

/* registration tabs — the signature element */
.reg-row{
  display:flex;
  gap:6px;
  margin-bottom:16px;
}
.reg-tab{
  flex:1;
  height:30px;
  border:1px solid var(--line);
  background:transparent;
  cursor:pointer;
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:9px;
  font-weight:700;
  letter-spacing:.04em;
  color:var(--ink-faint);
  transition:all .12s ease;
  font-family:'JetBrains Mono',monospace;
}
.reg-tab:hover{border-color:var(--ink-soft);}
.reg-tab.on-c{background:var(--cyan);color:#00303D;border-color:var(--cyan);}
.reg-tab.on-m{background:var(--magenta);color:#3D0021;border-color:var(--magenta);}
.reg-tab.on-y{background:var(--yellow);color:#3D3100;border-color:var(--yellow);}
.reg-tab.on-k{background:#2A2A2A;color:#F4F0E6;border-color:#2A2A2A;}
.reg-tab.on-p{background:var(--coral);color:var(--navy);border-color:var(--coral);}

.checks{
  display:flex;
  flex-direction:column;
  gap:0;
  border-top:1px solid var(--line);
  margin-bottom:14px;
}
.check-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:9px 0;
  border-bottom:1px solid var(--line);
  font-size:11.5px;
  gap:10px;
}
.check-label{
  color:var(--ink-soft);
  line-height:1.4;
}
.tri{
  display:flex;
  gap:3px;
  flex-shrink:0;
}
.tri button{
  width:26px;height:22px;
  border:1px solid var(--line);
  background:transparent;
  color:var(--ink-faint);
  font-size:10px;
  font-weight:700;
  cursor:pointer;
  font-family:'JetBrains Mono',monospace;
  padding:0;
}
.tri button.sel-s{background:var(--green-ok);border-color:var(--green-ok);color:#0E2417;}
.tri button.sel-n{background:var(--red-warn);border-color:var(--red-warn);color:#3B0E0E;}
.tri button.sel-na{background:var(--ink-faint);border-color:var(--ink-faint);color:var(--navy);}

.score-row{
  display:grid;
  grid-template-columns:1fr 1fr 1fr;
  gap:8px;
  margin-bottom:14px;
}
.score-box{
  border:1px solid var(--line);
  padding:8px 10px;
}
.score-box label{
  display:block;
  font-size:9px;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--ink-faint);
  margin-bottom:4px;
}
.score-box input{
  font-family:'Fraunces',serif;
  background:transparent;
  border:none;
  color:var(--cream);
  font-size:20px;
  font-weight:500;
  width:100%;
  outline:none;
  padding:0;
}
.score-box .max{font-size:11px;color:var(--ink-faint);font-family:'JetBrains Mono',monospace;}

.total-row{
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  padding-top:10px;
  border-top:1px solid var(--line);
  margin-bottom:14px;
}
.total-label{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);}
.total-val{font-family:'Fraunces',serif;font-size:26px;color:var(--coral);font-weight:500;}

textarea.notes{
  width:100%;
  background:rgba(0,0,0,0.15);
  border:1px solid var(--line);
  color:var(--cream);
  font-family:'JetBrains Mono',monospace;
  font-size:11px;
  padding:8px 10px;
  resize:vertical;
  min-height:44px;
  outline:none;
  margin-bottom:10px;
}
textarea.notes:focus{border-color:var(--coral);}
textarea.notes::placeholder{color:var(--ink-faint);}

.recall-row{
  display:flex;
  align-items:center;
  gap:8px;
  font-size:11px;
  color:var(--ink-soft);
  cursor:pointer;
  user-select:none;
}
.recall-row input{accent-color:var(--coral);width:13px;height:13px;cursor:pointer;}

/* ===== voto accettato sì/no ===== */
.accept-row{
  display:flex;
  align-items:center;
  gap:8px;
  margin-top:10px;
  font-size:11px;
  color:var(--ink-soft);
}
.accept-row .accept-label{margin-right:4px;}
.accept-btn{
  font-family:'JetBrains Mono',monospace;
  font-size:11px;font-weight:700;
  padding:4px 12px;
  border:1px solid var(--line);
  background:transparent;
  color:var(--ink-faint);
  cursor:pointer;
  letter-spacing:.04em;
}
.accept-btn.sel-si{background:var(--green-ok);border-color:var(--green-ok);color:#0E2417;}
.accept-btn.sel-no{background:var(--red-warn);border-color:var(--red-warn);color:#3B0E0E;}
/* tabella */
.tbl-accept{display:flex;gap:2px;justify-content:center;}
.tbl-accept-btn{
  font-family:'JetBrains Mono',monospace;
  font-size:9px;font-weight:700;
  padding:2px 7px;
  border:1px solid var(--line);
  background:transparent;
  color:var(--ink-faint);
  cursor:pointer;
}
.tbl-accept-btn.sel-si{background:var(--green-ok);border-color:var(--green-ok);color:#0E2417;}
.tbl-accept-btn.sel-no{background:var(--red-warn);border-color:var(--red-warn);color:#3B0E0E;}

/* ===== anomaly section ===== */
.anomaly-section{
  margin-top:64px;
  padding-top:36px;
  border-top:2px solid var(--coral);
}
.anomaly-head{
  display:flex;
  align-items:center;
  gap:14px;
  margin-bottom:24px;
}
.anomaly-title{
  font-family:'Fraunces',serif;
  font-size:26px;
  font-weight:500;
  color:var(--coral);
}
.anomaly-sub{font-size:12px;color:var(--ink-soft);}
.anomaly-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(330px,1fr));
  gap:14px;
}
.anomaly-card{
  border:1px dashed rgba(238,102,77,0.4);
  background:rgba(238,102,77,0.04);
  padding:16px 18px;
}
.anomaly-card .card-name{font-size:16px;}
.anomaly-card .anomaly-note{
  font-size:11px;
  color:var(--coral);
  line-height:1.6;
  margin-top:10px;
  padding-top:10px;
  border-top:1px solid rgba(238,102,77,0.25);
}
.anomaly-meta{
  font-size:10px;
  color:var(--ink-faint);
  margin-top:8px;
  line-height:1.6;
}

footer{
  margin-top:80px;
  padding-top:24px;
  border-top:1px solid var(--line);
  display:flex;
  justify-content:space-between;
  align-items:center;
  font-size:10px;
  color:var(--ink-faint);
  letter-spacing:.04em;
}

.no-results{
  padding:60px 0;
  text-align:center;
  color:var(--ink-faint);
  font-size:13px;
  display:none;
}

/* ===== login screen ===== */
#login-screen{
  min-height:100vh;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
}
.login-box{
  width:100%;
  max-width:380px;
  border:1px solid var(--line);
  padding:40px 36px;
  background:var(--navy-2);
}
.login-eyebrow{
  font-size:11px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--coral);
  font-weight:700;
  margin-bottom:14px;
}
.login-title{
  font-family:'Fraunces',serif;
  font-size:28px;
  font-weight:500;
  margin-bottom:28px;
}
.login-field{margin-bottom:16px;}
.login-field label{
  display:block;
  font-size:10px;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--ink-faint);
  margin-bottom:6px;
}
.login-field input{
  width:100%;
  font-family:'JetBrains Mono',monospace;
  background:rgba(0,0,0,0.15);
  border:1px solid var(--line);
  color:var(--cream);
  font-size:13px;
  padding:11px 12px;
  outline:none;
}
.login-field input:focus{border-color:var(--coral);}
#login-submit{
  width:100%;
  font-family:'JetBrains Mono',monospace;
  background:var(--coral);
  border:1px solid var(--coral);
  color:var(--navy);
  font-size:12px;
  font-weight:700;
  letter-spacing:.04em;
  text-transform:uppercase;
  padding:12px;
  cursor:pointer;
  margin-top:8px;
}
#login-submit:hover{background:var(--coral-dark);border-color:var(--coral-dark);}
#login-submit:disabled{opacity:.5;cursor:default;}
.login-error{
  font-size:11px;
  color:var(--red-warn);
  margin-top:14px;
  line-height:1.5;
  display:none;
}
.login-status{
  font-size:11px;
  color:var(--ink-faint);
  margin-top:14px;
  display:none;
}

/* ===== user bar ===== */
.user-bar{
  display:flex;
  align-items:center;
  gap:12px;
  padding:14px 0;
  border-bottom:1px solid var(--line);
  font-size:11px;
  color:var(--ink-soft);
}
.user-bar .dot-live{
  width:7px;height:7px;
  border-radius:50%;
  background:var(--green-ok);
  flex-shrink:0;
}
.user-bar .who{margin-right:auto;}
.user-bar button{
  font-family:'JetBrains Mono',monospace;
  background:transparent;
  border:1px solid var(--line);
  color:var(--ink-soft);
  font-size:10px;
  letter-spacing:.04em;
  padding:6px 12px;
  cursor:pointer;
}
.user-bar button:hover{border-color:var(--ink-soft);color:var(--cream);}

.hidden{display:none !important;}

/* ===== modal cambio password ===== */
.modal-overlay{
  position:fixed;inset:0;
  background:rgba(10,14,22,0.82);
  display:flex;align-items:center;justify-content:center;
  z-index:200;
}
.modal-box{
  background:var(--navy-2);
  border:1px solid var(--line);
  padding:36px 40px;
  width:100%;max-width:400px;
  position:relative;
}
.modal-box h3{
  font-family:'Fraunces',serif;
  font-weight:500;font-size:22px;
  margin:0 0 24px;
}
.modal-field{margin-bottom:14px;}
.modal-field label{
  display:block;font-size:10px;
  letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-soft);margin-bottom:6px;
}
.modal-field input{
  width:100%;
  background:var(--navy);
  border:1px solid var(--line);
  color:var(--cream);
  font-family:'JetBrains Mono',monospace;
  font-size:13px;
  padding:10px 12px;
}
.modal-field input:focus{outline:none;border-color:var(--coral);}
.modal-actions{display:flex;gap:10px;margin-top:20px;}
.modal-actions button{
  font-family:'JetBrains Mono',monospace;
  font-size:11px;
  padding:10px 20px;
  cursor:pointer;
  border:1px solid var(--line);
  background:transparent;
  color:var(--cream);
  letter-spacing:.05em;
}
.modal-actions .btn-primary{
  background:var(--coral);
  border-color:var(--coral);
  color:#fff;
}
.modal-actions .btn-primary:hover{background:var(--coral-dark);}
.modal-msg{font-size:11px;margin-top:12px;min-height:16px;}
.modal-msg.ok{color:var(--green-ok);}
.modal-msg.err{color:var(--red-warn);}

/* ===== admin panel ===== */
.admin-sections{display:flex;flex-direction:column;gap:40px;padding-top:8px;}
.admin-section-title{
  font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--coral);font-weight:700;margin:0 0 16px;
}
.admin-table{width:100%;border-collapse:collapse;font-size:12px;}
.admin-table th{
  text-align:left;padding:8px 12px;
  border-bottom:1px solid var(--line);
  color:var(--ink-soft);font-weight:500;
  font-size:10px;letter-spacing:.08em;text-transform:uppercase;
}
.admin-table td{
  padding:10px 12px;
  border-bottom:1px solid rgba(244,240,230,0.06);
  vertical-align:top;
}
.admin-table tr:last-child td{border-bottom:none;}
.admin-table .dim,.dim{color:var(--ink-soft);font-size:11px;}
.admin-empty{color:var(--ink-soft);font-size:12px;padding:16px 0;}

/* ===== tabs ===== */
.main-tabs{
  display:flex;
  gap:0;
  margin-bottom:32px;
  border-bottom:1px solid var(--line);
}
.main-tab{
  font-family:'JetBrains Mono',monospace;
  background:transparent;
  border:none;
  border-bottom:2px solid transparent;
  color:var(--ink-soft);
  font-size:12px;
  letter-spacing:.04em;
  text-transform:uppercase;
  padding:12px 4px;
  margin-right:28px;
  cursor:pointer;
}
.main-tab:hover{color:var(--cream);}
.main-tab.active{color:var(--coral);border-bottom-color:var(--coral);font-weight:700;}

/* ===== anomaly edit ===== */
.anomaly-card{position:relative;}
.anomaly-actions{
  display:flex;
  gap:8px;
  margin-top:12px;
}
.anomaly-actions button{
  font-family:'JetBrains Mono',monospace;
  background:transparent;
  border:1px solid var(--line);
  color:var(--ink-soft);
  font-size:10px;
  letter-spacing:.03em;
  padding:6px 10px;
  cursor:pointer;
}
.anomaly-actions button:hover{border-color:var(--coral);color:var(--coral);}
.anomaly-actions button.resolve{border-color:var(--green-ok);color:var(--green-ok);}
.anomaly-actions button.resolve:hover{background:rgba(91,174,122,0.12);}

/* ===== modal ===== */
.modal-overlay{
  position:fixed;
  inset:0;
  background:rgba(0,0,0,0.6);
  display:flex;
  align-items:center;
  justify-content:center;
  z-index:100;
  padding:24px;
}
.modal-box{
  background:var(--navy-2);
  border:1px solid var(--line);
  padding:32px;
  width:100%;
  max-width:460px;
  max-height:86vh;
  overflow-y:auto;
}
.modal-title{
  font-family:'Fraunces',serif;
  font-size:22px;
  font-weight:500;
  margin-bottom:24px;
}
.modal-field{margin-bottom:16px;}
.modal-field label{
  display:block;
  font-size:10px;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--ink-faint);
  margin-bottom:6px;
}
.modal-field input,.modal-field select{
  width:100%;
  font-family:'JetBrains Mono',monospace;
  background:rgba(0,0,0,0.15);
  border:1px solid var(--line);
  color:var(--cream);
  font-size:13px;
  padding:10px 12px;
  outline:none;
}
.modal-field input:focus,.modal-field select:focus{border-color:var(--coral);}
.modal-checkbox-row{
  display:flex;
  align-items:center;
  gap:8px;
  margin-bottom:16px;
  font-size:12px;
  color:var(--ink-soft);
  cursor:pointer;
}
.modal-checkbox-row input{accent-color:var(--coral);width:14px;height:14px;cursor:pointer;}
.modal-actions{
  display:flex;
  gap:10px;
  margin-top:24px;
}
.modal-actions button{
  font-family:'JetBrains Mono',monospace;
  flex:1;
  font-size:11px;
  letter-spacing:.04em;
  text-transform:uppercase;
  padding:11px;
  cursor:pointer;
  border:1px solid var(--line);
  background:transparent;
  color:var(--ink-soft);
}
.modal-actions button.primary{
  background:var(--coral);
  border-color:var(--coral);
  color:var(--navy);
  font-weight:700;
}
.modal-actions button.primary:hover{background:var(--coral-dark);border-color:var(--coral-dark);}
.modal-actions button:not(.primary):hover{border-color:var(--ink-soft);color:var(--cream);}
.modal-error{
  font-size:11px;
  color:var(--red-warn);
  margin-top:12px;
  display:none;
}

/* ===== add student button ===== */
.add-student-row{
  display:flex;
  justify-content:flex-end;
  margin-bottom:24px;
}
.add-student-btn{
  font-family:'JetBrains Mono',monospace;
  background:transparent;
  border:1px solid var(--coral);
  color:var(--coral);
  font-size:11px;
  letter-spacing:.04em;
  text-transform:uppercase;
  padding:9px 16px;
  cursor:pointer;
}
.add-student-btn:hover{background:rgba(238,102,77,0.1);}

/* ===== summary table ===== */
.summary-wrap{overflow-x:auto;}
table.summary-table{
  width:100%;
  border-collapse:collapse;
  font-size:12.5px;
}
table.summary-table th{
  text-align:left;
  font-size:10px;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--ink-faint);
  padding:10px 12px;
  border-bottom:1px solid var(--line);
  white-space:nowrap;
}
table.summary-table td{
  padding:10px 12px;
  border-bottom:1px solid var(--line);
  vertical-align:middle;
}
table.summary-table tr:hover td{background:rgba(255,255,255,0.02);}
.summary-name{font-family:'Fraunces',serif;font-size:14px;color:var(--cream);}
.summary-total{font-family:'Fraunces',serif;font-size:16px;color:var(--coral);}
.summary-empty{color:var(--ink-faint);}
.accept-toggle{
  display:flex;
  align-items:center;
  gap:7px;
  cursor:pointer;
  font-size:11px;
  color:var(--ink-soft);
  white-space:nowrap;
}
.accept-toggle input{accent-color:var(--green-ok);width:14px;height:14px;cursor:pointer;}
.summary-edit-btn{
  font-family:'JetBrains Mono',monospace;
  background:transparent;
  border:1px solid var(--line);
  color:var(--ink-faint);
  font-size:10px;
  padding:5px 9px;
  cursor:pointer;
}
.summary-edit-btn:hover{border-color:var(--ink-soft);color:var(--cream);}

/* ===== view toggle ===== */
.view-toggle{
  display:flex;
  gap:4px;
  margin-left:auto;
}
.view-toggle button{
  font-family:'JetBrains Mono',monospace;
  background:transparent;
  border:1px solid var(--line);
  color:var(--ink-soft);
  font-size:10px;
  letter-spacing:.06em;
  padding:6px 11px;
  cursor:pointer;
}
.view-toggle button.active{
  background:var(--navy-2);
  border-color:var(--ink-soft);
  color:var(--cream);
}

/* ===== student table view ===== */
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-bottom:48px;}
table.student-table{
  border-collapse:collapse;
  font-size:11px;
  white-space:nowrap;
  min-width:100%;
}
table.student-table th{
  text-align:center;
  font-size:8.5px;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--ink-faint);
  padding:6px 6px 5px;
  border-bottom:2px solid var(--line);
  border-right:1px solid var(--line);
  background:var(--navy);
  position:sticky;
  top:0;
  z-index:2;
  font-weight:500;
}
table.student-table th.th-left{text-align:left;}
table.student-table th:last-child{border-right:none;}
table.student-table td{
  padding:4px 6px;
  border-bottom:1px solid rgba(244,240,230,0.06);
  border-right:1px solid rgba(244,240,230,0.04);
  vertical-align:middle;
  text-align:center;
}
table.student-table td.td-left{text-align:left;}
table.student-table td:last-child{border-right:none;}
table.student-table tr.row-complete{background:rgba(91,174,122,0.04);}
table.student-table tr.row-complete td.td-name{border-left:2px solid var(--green-ok);}
table.student-table tr.row-issue{background:rgba(226,92,92,0.04);}
table.student-table tr.row-issue td.td-name{border-left:2px solid var(--red-warn);}
table.student-table tr:hover td{background:rgba(255,255,255,0.025);}

/* separator tra gruppi di colonne */
table.student-table th.sep,
table.student-table td.sep{border-right:2px solid rgba(244,240,230,0.12);}

/* nome studente */
.tbl-name{
  font-family:'Fraunces',serif;
  font-size:13px;
  color:var(--cream);
  display:flex;
  align-items:center;
  gap:6px;
  min-width:140px;
}
.tbl-dot{
  width:6px;height:6px;
  border-radius:50%;
  background:var(--line);
  flex-shrink:0;
}
.tbl-dot.ok{background:var(--green-ok);}
.tbl-dot.issue{background:var(--red-warn);}

/* file chips */
.tbl-file{
  font-size:8.5px;
  color:var(--ink-soft);
  max-width:110px;
  overflow:hidden;
  text-overflow:ellipsis;
  display:block;
  line-height:1.7;
}
.tbl-file.miss{color:var(--red-warn);}

/* registro: una cella per colore, bottone toggle */
.tbl-reg-cell{
  width:22px;height:20px;
  border:1px solid var(--line);
  background:transparent;
  cursor:pointer;
  font-size:8px;font-weight:700;
  font-family:'JetBrains Mono',monospace;
  color:var(--ink-faint);
  display:block;margin:0 auto;
  padding:0;
}
.tbl-reg-cell.on-c{background:var(--cyan);color:#00303D;border-color:var(--cyan);}
.tbl-reg-cell.on-m{background:var(--magenta);color:#3D0021;border-color:var(--magenta);}
.tbl-reg-cell.on-y{background:var(--yellow);color:#3D3100;border-color:var(--yellow);}
.tbl-reg-cell.on-k{background:#2A2A2A;color:#F4F0E6;border-color:#555;}
.tbl-reg-cell.on-p{background:var(--coral);color:var(--navy);border-color:var(--coral);}

/* criterio: bottone singolo che cicla S→N→-→vuoto */
.tbl-chk-cell{
  width:24px;height:20px;
  border:1px solid var(--line);
  background:transparent;
  cursor:pointer;
  font-size:8.5px;font-weight:700;
  font-family:'JetBrains Mono',monospace;
  color:var(--ink-faint);
  display:block;margin:0 auto;
  padding:0;
}
.tbl-chk-cell.cs{background:var(--green-ok);border-color:var(--green-ok);color:#0E2417;}
.tbl-chk-cell.cn{background:var(--red-warn);border-color:var(--red-warn);color:#3B0E0E;}
.tbl-chk-cell.cna{background:rgba(244,240,230,0.18);border-color:rgba(244,240,230,0.18);color:var(--navy);}

/* punteggi */
.tbl-score{
  font-family:'Fraunces',serif;
  background:transparent;
  border:none;
  border-bottom:1px solid var(--line);
  color:var(--cream);
  font-size:14px;
  width:32px;
  outline:none;
  text-align:center;
  padding:1px 0;
}
.tbl-score:focus{border-bottom-color:var(--coral);}
.tbl-total{font-family:'Fraunces',serif;font-size:14px;color:var(--coral);font-weight:500;}

/* note */
.tbl-notes{
  background:transparent;
  border:1px solid transparent;
  color:var(--cream);
  font-family:'JetBrains Mono',monospace;
  font-size:10px;
  width:110px;
  resize:none;
  height:28px;
  outline:none;
  padding:3px 5px;
  vertical-align:middle;
}
.tbl-notes:focus{border-color:var(--line);}
.tbl-recall-cell input{accent-color:var(--coral);cursor:pointer;}

/* ===== RESPONSIVE ===== */
@media(max-width:768px){
  /* layout */
  .page{padding:0 20px 80px;}
  .reg-mark{display:none;}

  /* header */
  header{padding:40px 0 28px;}

  /* user bar */
  .user-bar{flex-wrap:wrap;gap:8px;}
  .user-bar .who{width:100%;order:-1;}
  .user-bar button{font-size:10px;padding:6px 10px;}

  /* stats: 2x2 */
  .stats{grid-template-columns:repeat(2,1fr);}
  .stat{padding:16px 16px;}
  .stat-num{font-size:26px;}

  /* tabs: scrollabili */
  .main-tabs{overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap;display:block;}
  .main-tab{display:inline-block;}

  /* controls: wrap, search full width */
  .controls{gap:8px;padding:20px 0;}
  .search-wrap{margin-left:0;width:100%;}
  #search{width:100%;}

  /* card grid: 1 colonna */
  .grid,.anomaly-grid{grid-template-columns:1fr;}

  /* card score row: 3 col invariata ma input più compatto */
  .score-box input{font-size:17px;}

  /* modal: quasi fullscreen */
  .modal-box{
    position:fixed;
    bottom:0;left:0;right:0;
    max-width:100%;
    padding:28px 20px 32px;
    border-left:none;border-right:none;border-bottom:none;
  }
  .modal-overlay{align-items:flex-end;}

  /* admin tables: scroll orizzontale */
  .admin-table{font-size:11px;}

  /* footer: stack */
  footer{flex-direction:column;gap:8px;text-align:center;}
}

@media(max-width:480px){
  .page{padding:0 14px 70px;}

  /* header */
  header{padding:28px 0 20px;}
  .subhead{font-size:12px;}
  .process-bar{display:none;}

  /* user bar: compatto */
  #pwd-btn{display:none;}

  /* stats: 2x2 più compatto */
  .stat{padding:12px 12px;}
  .stat-num{font-size:22px;}
  .stat-label{font-size:9px;}

  /* tabs */
  .main-tab{font-size:11px;padding:12px 14px;}

  /* controls */
  .controls-label{display:none;}
  .filter-btn{font-size:11px;padding:7px 10px;}

  /* card */
  .card{padding:16px 14px 14px;}
  .card-name{font-size:15px;}

  /* reg row: bottoni più piccoli */
  .reg-row{overflow-x:auto;-webkit-overflow-scrolling:touch;}
  .reg-tab{min-width:36px;height:28px;font-size:8px;}

  /* score: impila in 2+1 su schermi strettissimi */
  .score-row{grid-template-columns:1fr 1fr;gap:6px;}
  .score-box:last-child{grid-column:span 2;}

  /* files row */
  .files-row{flex-wrap:wrap;gap:6px;}

  /* check label: più compatto */
  .check-row{font-size:11px;}

  /* modal */
  .modal-box{padding:22px 16px 28px;}
  .modal-box h3{font-size:18px;}
  .modal-actions{flex-direction:column;}
  .modal-actions button{width:100%;}

  /* footer */
  footer{font-size:9px;}
}
