:root{
  --hal-purple:#652D90;
  --hal-purple-dark:#4A2068;
  --hal-purple-light:#F4F0F9;
  --hal-accent:#8E5BB5;
  --text-dark:#2A2230;
  --text-muted:#6B6275;
  --border:#E0D6EA;
  --error:#C0392B;
  --success-bg:#EFF7F0;
  --success-border:#3E9457;
  --radius:10px;
}
*{box-sizing:border-box;}
body{
  margin:0;
  font-family:'Segoe UI', Roboto, -apple-system, Helvetica, Arial, sans-serif;
  background:linear-gradient(180deg, var(--hal-purple-light) 0%, #ffffff 280px);
  color:var(--text-dark);
  line-height:1.5;
}
.topbar{ background:var(--hal-purple); height:6px; width:100%; }
.container{ max-width:780px; margin:0 auto; padding:32px 20px 80px; }
.container.narrow{ max-width:440px; padding-top:60px; }

.card{
  background:#fff;
  border-radius:var(--radius);
  border:1px solid var(--border);
  padding:32px 36px;
  margin-bottom:24px;
  box-shadow:0 2px 14px rgba(101,45,144,0.07);
}
.logo{ display:block; height:56px; margin:0 auto 20px; }
.logo.center{ margin-left:auto; margin-right:auto; }

h1{ font-size:1.5rem; margin:0 0 6px; color:var(--hal-purple-dark); }
h2.section-title{
  font-size:1.05rem; color:var(--hal-purple); margin:0 0 18px;
  padding-bottom:10px; border-bottom:2px solid var(--hal-purple-light);
}
.subtitle{ font-size:0.95rem; color:var(--text-muted); margin:0 0 14px; }

.notice{
  background:var(--hal-purple-light); border-left:4px solid var(--hal-purple);
  padding:14px 16px; border-radius:6px; font-size:0.92rem; margin-top:14px;
}
.window{ font-weight:600; color:var(--hal-purple-dark); }
.required-note{ font-size:0.85rem; color:var(--text-muted); margin-top:16px; }
.required-note .star{ color:var(--error); }

.section{
  background:#fff; border-radius:var(--radius); border:1px solid var(--border);
  padding:28px 36px; margin-bottom:20px; box-shadow:0 1px 6px rgba(101,45,144,0.05);
}

.field{ margin-bottom:18px; }
.field label{ display:block; font-size:0.9rem; font-weight:600; margin-bottom:6px; }
.field label .star{ color:var(--error); margin-left:3px; }
.field input, .field select{
  width:100%; padding:10px 12px; border:1.5px solid var(--border);
  border-radius:7px; font-size:0.95rem; font-family:inherit; background:#fff;
  transition:border-color .15s, box-shadow .15s;
}
.field input:focus, .field select:focus{
  outline:none; border-color:var(--hal-purple); box-shadow:0 0 0 3px rgba(101,45,144,0.12);
}
.field.has-error input, .field.has-error select{ border-color:var(--error); }
.field-error{ display:block; color:var(--error); font-size:0.82rem; margin-top:5px; }
.field-hint{ display:block; color:var(--text-muted); font-size:0.8rem; margin-top:5px; }

.row{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
@media (max-width:600px){
  .row{ grid-template-columns:1fr; }
  .card, .section{ padding:22px 20px; }
}

.cohort-badge{
  display:inline-block; background:var(--hal-purple-light); color:var(--hal-purple-dark);
  font-size:0.78rem; font-weight:600; padding:3px 10px; border-radius:20px; margin-left:8px;
}

button.btn, a.btn{
  background:var(--hal-purple); color:#fff; border:none; padding:12px 28px;
  font-size:0.95rem; font-weight:600; border-radius:8px; cursor:pointer;
  transition:background .15s, transform .1s; text-decoration:none; display:inline-block;
}
button.btn:hover, a.btn:hover{ background:var(--hal-purple-dark); }
button.btn:active{ transform:translateY(1px); }
button.btn.secondary, a.btn.secondary{ background:#fff; color:var(--hal-purple); border:1.5px solid var(--hal-purple); }
button.btn.secondary:hover{ background:var(--hal-purple-light); }
button.btn.danger, a.btn.danger{ background:var(--error); }
button.btn.danger:hover{ background:#962b20; }
button.btn.small, a.btn.small{ padding:6px 14px; font-size:0.82rem; }

.submit-bar{ display:flex; justify-content:flex-end; margin-top:8px; gap:10px; }

.alert{ padding:14px 18px; border-radius:8px; margin-bottom:20px; font-size:0.92rem; }
.alert.error{ background:#FDEDEC; border:1px solid #F1B5AC; color:var(--error); }
.alert.success{ background:var(--success-bg); border:1px solid var(--success-border); color:var(--success-border); }

.success-card{
  background:var(--success-bg); border:1.5px solid var(--success-border);
  border-radius:var(--radius); padding:40px 36px; text-align:center;
}
.success-card .check{
  width:56px; height:56px; border-radius:50%; background:var(--success-border);
  color:#fff; display:flex; align-items:center; justify-content:center;
  font-size:1.8rem; margin:0 auto 16px;
}
.success-card h2{ color:var(--success-border); margin:0 0 8px; }
.success-card p{ color:var(--text-muted); margin:0; }

footer{ text-align:center; font-size:0.82rem; color:var(--text-muted); margin-top:32px; }
footer strong{ color:var(--hal-purple); }

/* Admin nav */
.admin-nav{
  display:flex; justify-content:space-between; align-items:center;
  background:#fff; border-bottom:1px solid var(--border); padding:14px 28px;
  margin-bottom:28px; box-shadow:0 1px 6px rgba(101,45,144,0.05);
}
.admin-nav .brand{ display:flex; align-items:center; gap:12px; font-weight:700; color:var(--hal-purple-dark); }
.admin-nav .brand img{ height:32px; }
.admin-nav nav a{ color:var(--text-dark); text-decoration:none; margin-left:20px; font-size:0.92rem; font-weight:600; }
.admin-nav nav a:hover{ color:var(--hal-purple); }
.admin-nav nav a.active{ color:var(--hal-purple); border-bottom:2px solid var(--hal-purple); padding-bottom:4px; }

/* Tables */
table.data-table{ width:100%; border-collapse:collapse; background:#fff; }
table.data-table th{
  text-align:left; font-size:0.82rem; text-transform:uppercase; letter-spacing:0.03em;
  color:var(--text-muted); padding:12px 14px; border-bottom:2px solid var(--hal-purple-light);
}
table.data-table td{ padding:13px 14px; border-bottom:1px solid var(--border); font-size:0.92rem; vertical-align:middle; }
table.data-table tr:hover td{ background:var(--hal-purple-light); }
.actions-cell{ display:flex; gap:8px; }

.empty-state{ text-align:center; padding:60px 20px; color:var(--text-muted); }

/* Submissions data grid */
.grid-toolbar{
  display:flex; align-items:center; justify-content:space-between;
  gap:16px; padding:16px 20px;
}
.grid-search-input{
  flex:1; max-width:420px; padding:10px 14px; border:1.5px solid var(--border);
  border-radius:7px; font-size:0.92rem; font-family:inherit;
}
.grid-search-input:focus{ outline:none; border-color:var(--hal-purple); box-shadow:0 0 0 3px rgba(101,45,144,0.12); }
.grid-row-count{ font-size:0.85rem; color:var(--text-muted); white-space:nowrap; }

.grid-card{ padding:0; overflow:hidden; }
.grid-scroll{ overflow-x:auto; max-height:75vh; overflow-y:auto; }
table.grid-table{ white-space:nowrap; font-size:0.86rem; }
table.grid-table th{
  position:sticky; top:0; background:var(--hal-purple-light); cursor:pointer;
  user-select:none; z-index:2; border-bottom:2px solid var(--hal-purple);
}
table.grid-table th:hover{ background:#E9E1F1; }
table.grid-table th::after{ content:''; display:inline-block; width:10px; margin-left:4px; opacity:0.4; }
table.grid-table th.sort-asc::after{ content:'▲'; opacity:1; color:var(--hal-purple); font-size:0.7rem; }
table.grid-table th.sort-desc::after{ content:'▼'; opacity:1; color:var(--hal-purple); font-size:0.7rem; }
table.grid-table td, table.grid-table th{ padding:9px 12px; }
table.grid-table .grid-sticky-col{
  position:sticky; left:0; background:#fff; z-index:1; font-weight:600;
  border-right:2px solid var(--border);
}
table.grid-table th.grid-sticky-col{ background:var(--hal-purple-light); z-index:3; }
table.grid-table .grid-sticky-col-right{
  position:sticky; right:0; background:#fff; z-index:1; border-left:2px solid var(--border);
}
table.grid-table th.grid-sticky-col-right{ background:var(--hal-purple-light); z-index:3; cursor:default; }
table.grid-table th.grid-sticky-col-right::after{ content:none; }
table.grid-table tr:hover td:not(.grid-sticky-col):not(.grid-sticky-col-right){ background:var(--hal-purple-light); }
table.grid-table tr:hover td.grid-sticky-col,
table.grid-table tr:hover td.grid-sticky-col-right{ background:#F7F2FA; }

/* Submission detail table */
table.detail-table{ table-layout:fixed; }
table.detail-table td.detail-label{
  width:280px; font-weight:600; color:var(--text-dark); background:#FBFAFC;
}
table.detail-table td:not(.detail-label):not([colspan]){ color:var(--text-dark); word-break:break-word; }
table.detail-table tr.detail-section-row td{
  background:var(--hal-purple); color:#fff; font-weight:700; font-size:0.85rem;
  text-transform:uppercase; letter-spacing:0.04em; padding:10px 14px;
}
table.detail-table tr.detail-section-row:first-child td{ border-top:none; }
@media (max-width:600px){
  table.detail-table td.detail-label{ width:140px; font-size:0.85rem; }
}

.checkbox-row{ display:flex; align-items:center; gap:10px; margin-bottom:10px; }
.checkbox-row input[type="checkbox"]{ width:18px; height:18px; accent-color:var(--hal-purple); }
.checkbox-row label{ font-weight:500; margin:0; }