/* 3t Drilling Systems – iDrillSIM launch portal. Matches the scope-of-work mockups. */
:root {
  --ink: #19272c;        /* 3t dark slate: header, login, primary buttons */
  --ink-2: #2b3b41;
  --teal: #45c9b0;       /* 3t accent */
  --teal-ink: #11352e;
  --paper: #ffffff;
  --mist: #eaeeef;       /* student page background */
  --rule: #d0d6d9;       /* table header, borders */
  --stripe: #f2f4f4;
  --muted: #6b787d;
  --run: #2fae5b;
  --stop: #d64545;
  --wait: #e3a32b;
  --focus: #1f8cff;
  font-family: Roboto, "Segoe UI", system-ui, -apple-system, Arial, sans-serif;
  color: var(--ink);
  -webkit-text-size-adjust: 100%;
}
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; }
body { background: var(--paper); font-size: 16px; line-height: 1.45; }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.muted { color: var(--muted); }
code { font-size: .9em; background: var(--stripe); padding: 0 .25em; }

/* brand */
.brand { display: inline-flex; align-items: baseline; gap: .35em; color: #d6dcde; text-decoration: none; }
.brand-mark { font-weight: 500; letter-spacing: -.04em; font-size: 1.55em; line-height: 1; }
.brand-name { font-weight: 300; font-size: 1.35em; }
.brand-mark-lg { font-size: 3.4rem; color: #d6dcde; }

.devbar { background: var(--wait); color: #2a1d00; font-size: .85rem; padding: .35rem 1rem; text-align: center; }

/* buttons */
.btn {
  display: inline-flex; align-items: center; justify-content: center;
  font: inherit; font-weight: 500; letter-spacing: .01em;
  min-height: 2.6rem; padding: .5rem 1.25rem;
  border: 1px solid var(--ink); background: var(--paper); color: var(--ink);
  cursor: pointer; text-decoration: none; border-radius: 0;
}
.btn:disabled { opacity: .45; cursor: progress; }
.btn-sm { min-height: 2.25rem; padding: .35rem .95rem; font-size: .95rem; }
.btn-lg { min-height: 3.6rem; font-size: 1.2rem; }
.btn-block { width: 100%; }
.btn-dark { background: var(--ink); color: #fff; }
.btn-dark:hover:not(:disabled) { background: var(--ink-2); }
.btn-outline:hover:not(:disabled) { background: var(--stripe); }
.btn-teal { background: var(--teal); border-color: var(--teal); color: var(--teal-ink); }
.btn-teal:hover:not(:disabled) { filter: brightness(1.05); }
.btn-ghost-light { background: transparent; color: #d6dcde; border-color: #51656c; font-weight: 400; }
.linkbtn { background: none; border: 0; padding: 0; font: inherit; color: inherit; text-decoration: underline; cursor: pointer; }
form.inline { display: inline; }

/* ---------- login ---------- */
.page-login { background: var(--ink); color: #fff; min-height: 100vh; }
.login { min-height: 100vh; display: grid; grid-template-rows: auto 1fr auto; justify-items: center; padding: 4rem 1.25rem 2.5rem; }
.login-brand { font-size: 1.9rem; }
.login-form { width: min(100%, 34rem); align-self: center; text-align: center; display: grid; gap: .9rem; }
.login-form h1 {
  margin: 0 0 .6rem; padding-bottom: 1.4rem; border-bottom: 1px solid #51656c;
  font-weight: 500; font-size: clamp(1.4rem, 3.6vw, 2rem); letter-spacing: .12em; text-transform: uppercase;
}
.login-form label { text-align: left; font-size: .95rem; color: #c3cdd0; }
.login-form input {
  font: inherit; font-size: 1.1rem; padding: .85rem 1rem; border: 1px solid #51656c; border-radius: 0;
  background: #0f1b1f; color: #fff;
}
.login-form input[aria-invalid="true"] { border-color: #f08a8a; }
.login-form .btn-teal { min-height: 4rem; font-size: 1.25rem; font-weight: 700; }
.login-help { color: #c3cdd0; font-weight: 300; margin: .2rem auto 0; max-width: 26rem; }
.login-error { color: #ffb4b4; text-align: left; margin: 0; }
.login-notice { background: #22343a; padding: .6rem .9rem; margin: 0; }
.login-foot { display: grid; justify-items: center; gap: .3rem; color: #c3cdd0; }

/* ---------- app header ---------- */
.topbar { background: var(--ink); color: #fff; display: flex; flex-wrap: wrap; gap: 1rem 2rem; align-items: center; justify-content: space-between; padding: 1.4rem clamp(1rem, 3vw, 2.6rem); }
.topbar-home { text-decoration: none; font-size: 1.15rem; }
.topbar-user { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.5rem; color: #d6dcde; }
.role-badge { border: 1px solid #8d9ca1; padding: .3rem .8rem; font-size: .85rem; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; }

/* ---------- instructor ---------- */
.wrap { padding: 1.6rem clamp(1rem, 3vw, 2.6rem) 3rem; max-width: 96rem; }
.tabs { display: flex; flex-wrap: wrap; gap: .6rem; margin-bottom: 1.6rem; }
.tab { border: 1px solid var(--ink); padding: .65rem 1.5rem; text-decoration: none; color: var(--ink); font-weight: 500; }
.tab:hover { background: var(--stripe); }
.tab.is-active { background: var(--ink); color: #fff; }
.titlebar { display: flex; flex-wrap: wrap; gap: 1rem; justify-content: space-between; align-items: flex-end; padding-bottom: 1.4rem; border-bottom: 1px solid var(--ink); }
.titlebar h1 { margin: 0 0 .25rem; font-size: clamp(1.6rem, 3vw, 2.2rem); font-weight: 500; letter-spacing: .12em; text-transform: uppercase; }
.meta { margin: 0; color: var(--muted); }
.titlebar-actions { display: flex; gap: .75rem; }
.titlebar-actions .btn { min-height: 3rem; padding-inline: 1.5rem; }

.table-scroll { overflow-x: auto; }
.seats { width: 100%; border-collapse: collapse; min-width: 44rem; }
.seats thead th { background: var(--rule); text-align: left; font-size: .85rem; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; padding: .9rem 1.3rem; }
.seats tbody th { text-align: left; font-weight: 500; }
.seats tbody th, .seats td { padding: .8rem 1.3rem; border-bottom: 1px solid var(--rule); vertical-align: middle; }
.seats tbody tr:nth-child(even) { background: var(--stripe); }
.cell-actions { text-align: right; white-space: nowrap; }
.cell-actions span { display: inline-flex; gap: .55rem; }
.cell-actions [hidden] { display: none; }
.cell-actions .when-edit + .when-view, .cell-actions .when-view + .when-view { margin-left: .55rem; }
.email-edit input { font: inherit; width: min(100%, 24rem); padding: .5rem .75rem; border: 1px solid var(--ink); border-radius: 0; }
tr.is-busy { opacity: .7; }

.status { display: inline-flex; align-items: center; gap: .6rem; }
.dot { width: .9rem; height: .9rem; border-radius: 50%; background: var(--muted); flex: none; }
[data-status="running"] .dot { background: var(--run); }
[data-status="stopped"] .dot { background: var(--stop); }
[data-status="pending"] .dot, [data-status="stopping"] .dot { background: var(--wait); animation: pulse 1.2s ease-in-out infinite; }
@keyframes pulse { 50% { opacity: .35; } }
@media (prefers-reduced-motion: reduce) { .dot { animation: none !important; } }

.flash { margin: 1rem 0 0; padding: .7rem 1rem; background: #fff4f4; border-left: 4px solid var(--stop); }
.flash.is-ok { background: #eefaf6; border-color: var(--teal); }

/* ---------- student ---------- */
.page-student { background: var(--mist); min-height: 100vh; }
.student { padding: 4rem 1.25rem; display: grid; justify-items: center; gap: 1.5rem; }
.card { background: var(--paper); border: 1px solid var(--rule); width: min(100%, 42rem); padding: 0 3rem 3rem; }
.card-title { margin: 0 -3rem 1.5rem; padding: 2.2rem 3rem 1.6rem; border-bottom: 1px solid var(--ink); font-size: clamp(1.5rem, 3vw, 2rem); font-weight: 500; letter-spacing: .12em; text-transform: uppercase; }
.card-body { margin: 0 0 2rem; }
.facts { margin: 0 0 2.5rem; }
.facts div { display: flex; justify-content: space-between; gap: 1rem; padding: 1.1rem 0; border-bottom: 1px solid var(--rule); font-size: 1.15rem; }
.facts div:last-child { border-bottom: 0; }
.facts dt { color: var(--muted); font-weight: 300; }
.facts dd { margin: 0; }
.help { color: var(--muted); margin: 0; }

@media (max-width: 40rem) {
  .card { padding: 0 1.25rem 1.5rem; }
  .card-title { margin: 0 -1.25rem 1rem; padding: 1.5rem 1.25rem 1.1rem; }
  .titlebar-actions { width: 100%; }
  .titlebar-actions .btn { flex: 1; }
}

/* ---------- admin ---------- */
.topbar-link { color: #d6dcde; }
.admin a { color: var(--ink); }
.crumbs { margin: 0 0 1rem; }
.section-title { margin: 2.5rem 0 .5rem; font-size: 1.15rem; font-weight: 500; letter-spacing: .12em; text-transform: uppercase; }
.empty { color: var(--muted); padding: 1.5rem 0; }
.admin-grid { display: grid; grid-template-columns: minmax(0, 2fr) minmax(16rem, 1fr); gap: 1.5rem; margin-top: 1.5rem; align-items: start; }
@media (max-width: 60rem) { .admin-grid { grid-template-columns: 1fr; } }
.panel { border: 1px solid var(--rule); padding: 1.25rem 1.5rem; background: var(--paper); }
.panel h2 { margin: 0 0 1rem; font-size: 1.05rem; font-weight: 500; }
.form { display: grid; gap: 1rem; }
.field { display: grid; gap: .3rem; border: 0; margin: 0; padding: 0; min-width: 0; }
.field label, .field legend { font-weight: 500; font-size: .95rem; display: block; }
.field label > input, .field label > textarea { display: block; margin-top: .3rem; }
.field legend { margin-bottom: .3rem; }
.field input, .field textarea, .select { font: inherit; padding: .55rem .7rem; border: 1px solid #9aa6aa; border-radius: 0; background: #fff; width: 100%; }
.field input[disabled], .field input[readonly] { background: var(--stripe); color: var(--muted); }
.field textarea { font-family: ui-monospace, Consolas, monospace; font-size: .9rem; }
.select { width: auto; }
.radio { display: flex !important; align-items: center; gap: .5rem; font-weight: 400 !important; margin: .2rem 0; }
.radio input { margin: 0 !important; }
.radio input { width: auto; }
.hint { margin: 0; color: var(--muted); font-size: .9rem; }
.form-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); gap: 1rem; }
.form > .btn { justify-self: start; }
.panel > .hint { margin-bottom: 1rem; }
.kv { margin: 0; display: grid; gap: .9rem; }
.kv dt { font-size: .85rem; color: var(--muted); }
.kv dd { margin: .15rem 0 0; overflow-wrap: anywhere; }
.room { margin-top: .75rem; }
.room summary, .danger summary { cursor: pointer; padding: .2rem 0; }
.room .form { margin-top: 1rem; }
.danger-row { margin-top: 1rem; }
.danger { margin-top: 2.5rem; border-color: #e7b7b7; }
.events td { font-size: .9rem; }
.events .detail { color: var(--muted); max-width: 32rem; overflow-wrap: anywhere; }
.events tr.is-warn td { color: #9b2c2c; }
[data-idp][hidden] { display: none; }

/* ---------- portal accounts ---------- */
.login-account { margin: 0; color: #c3cdd0; }
.login-account a { color: #fff; }
.credentials { margin: 1rem 0 0; padding: 1rem 1.25rem; border: 2px solid var(--teal); background: #f2fbf9; display: grid; gap: .5rem; }
.credentials h2 { margin: 0; font-size: 1rem; font-weight: 500; }
.credentials p { margin: 0; }
.credentials .pw { font-family: ui-monospace, Consolas, monospace; font-size: 1.25rem; letter-spacing: .06em; user-select: all; }
.credentials .row { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; }
.card .form { gap: 1.1rem; }
.search { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; margin: 1.25rem 0 1rem; }
.search input { min-width: min(100%, 22rem); }
.pager { display: flex; gap: 1.25rem; align-items: center; margin: 1rem 0; }
[hidden] { display: none !important; }
