/* Shared Apple-style colors, controls and typography from the existing platform. */
body.sh-open { overflow:hidden; }
.student-entry { margin-top: 8px; font-size: 11px; }
.sh-dialog { --sh-ink:var(--ink,#1d1d1f); --sh-muted:var(--muted,#6e6e73); --sh-line:var(--line,rgba(0,0,0,.10)); --sh-line-soft:var(--line-soft,rgba(0,0,0,.055)); --sh-brand:var(--teal,#0071e3); --sh-radius:var(--radius,8px); --sh-surface:var(--surface,#fff); --sh-surface-soft:var(--surface-2,#f8f8fa); --sh-shadow:0 1px 2px rgba(0,0,0,.035); width:min(1340px,96vw); max-width:96vw; height:92vh; max-height:92vh; padding:0; border:1px solid var(--sh-line); border-radius:16px; background:var(--canvas,#f5f5f7); color:var(--sh-ink); box-shadow:var(--shadow,0 24px 70px rgba(0,0,0,.16)); font:14px/1.6 -apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Segoe UI","PingFang SC","Microsoft YaHei",sans-serif; -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; color-scheme:light; }
.sh-dialog::backdrop { background:rgba(0,0,0,.28); backdrop-filter:blur(5px); }
.sh-dialog * { box-sizing:border-box; }
.sh-dialog h2,.sh-dialog h3,.sh-dialog p { margin:0; }
.sh-dialog h2 { font-size:28px; line-height:1.25; font-weight:700; letter-spacing:-.5px; }
.sh-dialog h3 { font-size:16px; line-height:1.4; font-weight:650; }
.sh-head { position:sticky; top:0; z-index:3; display:flex; justify-content:space-between; align-items:center; gap:24px; padding:26px 32px; background:rgba(250,250,252,.88); border-bottom:1px solid var(--sh-line); backdrop-filter:saturate(180%) blur(24px); }
.sh-head p { color:var(--sh-muted); font-size:13px; margin-top:8px; max-width:820px; }
.sh-eyebrow,.sh-kicker { color:var(--sh-muted); font-size:11px; font-weight:600; letter-spacing:0; }
.sh-body { padding:28px 32px 36px; }
.sh-dialog button,.sh-link { border:1px solid rgba(0,0,0,.11); color:var(--ink-2,#424245); background:var(--sh-surface); border-radius:var(--sh-radius); min-height:38px; padding:8px 14px; font:inherit; font-size:12px; font-weight:600; line-height:1.4; cursor:pointer; text-decoration:none; display:inline-flex; align-items:center; justify-content:center; gap:6px; box-shadow:var(--sh-shadow); transition:background-color .16s ease,border-color .16s ease,box-shadow .16s ease; }
.sh-dialog button:hover:not(:disabled),.sh-link:hover { border-color:#b8b8bd; background:#f2f2f7; }
.sh-dialog button.sh-primary { background:var(--sh-brand); color:white; border-color:var(--sh-brand); box-shadow:0 1px 2px rgba(0,113,227,.18); }
.sh-dialog button:disabled { opacity:.45; cursor:not-allowed; box-shadow:none; }
.sh-dialog :is(button,summary,a):focus-visible { outline:3px solid rgba(0,113,227,.45); outline-offset:3px; }
.sh-buttons { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.sh-metrics { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; margin-bottom:24px; }
.sh-metrics>div { background:#fff; border:1px solid var(--sh-line); border-radius:var(--sh-radius); box-shadow:var(--sh-shadow); padding:22px; }
.sh-metrics strong { display:block; margin-bottom:4px; font-size:32px; line-height:1.2; font-weight:650; color:var(--sh-ink); font-variant-numeric:tabular-nums; }
.sh-metrics span,.sh-muted { color:var(--sh-muted); font-size:12px; }
.sh-toolbar { display:flex; gap:14px; align-items:end; flex-wrap:wrap; margin-bottom:18px; }
.sh-dialog label { display:flex; flex-direction:column; gap:8px; color:var(--ink-2,#424245); font-size:12px; font-weight:600; min-width:0; }
.sh-dialog input,.sh-dialog select,.sh-dialog textarea { border:1px solid #d1d1d6; border-radius:var(--sh-radius); background:var(--sh-surface); color:var(--sh-ink); min-height:40px; padding:9px 11px; font:inherit; font-size:13px; font-weight:400; width:100%; min-width:0; outline:none; transition:border-color .16s ease,box-shadow .16s ease; }
.sh-dialog textarea { min-height:100px; resize:vertical; }
.sh-table-wrap { overflow:auto; border:1px solid var(--sh-line); border-radius:var(--sh-radius); background:var(--sh-surface); box-shadow:var(--sh-shadow); margin-bottom:18px; }
.sh-table { width:100%; border-collapse:collapse; min-width:720px; text-align:left; font-variant-numeric:tabular-nums; }
.sh-table th { background:var(--sh-surface-soft); color:var(--sh-muted); font-size:12px; font-weight:600; padding:13px 16px; }
.sh-table td { padding:16px; border-top:1px solid var(--sh-line-soft); }
.sh-dialog small { display:block; color:var(--sh-muted); font-size:11px; }
.sh-summary { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:20px; margin-bottom:20px; padding:24px; border:1px solid var(--sh-line); border-radius:var(--sh-radius); background:var(--sh-surface); color:var(--sh-ink); box-shadow:var(--sh-shadow); }
.sh-summary .sh-kicker { display:block; color:var(--sh-muted); }
.sh-summary strong { display:block; font-size:28px; line-height:1.3; font-weight:650; letter-spacing:-.4px; margin:6px 0; }
.sh-summary p { color:var(--sh-muted); font-size:13px; font-variant-numeric:tabular-nums; }
.sh-config { background:#fff; border:1px solid var(--sh-line); border-radius:var(--sh-radius); padding:16px 20px; margin-bottom:20px; box-shadow:var(--sh-shadow); }
.sh-dialog summary { cursor:pointer; color:var(--ink-2,#424245); font-weight:600; }
.sh-form { display:flex; flex-direction:column; gap:16px; margin-top:18px; }
.sh-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.sh-wide { grid-column:1/-1; }
.sh-columns { display:grid; grid-template-columns:minmax(0,1fr) 310px; gap:24px; align-items:start; }
.sh-section-title { display:flex; align-items:center; justify-content:space-between; margin:4px 0 16px; }
.sh-section-title span { color:var(--sh-muted); font-size:12px; }
.sh-item { background:#fff; border:1px solid var(--sh-line); border-radius:var(--sh-radius); box-shadow:var(--sh-shadow); padding:22px; margin-bottom:18px; overflow-wrap:anywhere; }
.sh-item-head { display:flex; justify-content:space-between; gap:14px; align-items:start; margin-bottom:16px; }
.sh-item-head p { color:var(--sh-muted); font-size:12px; margin-top:6px; }
.sh-badge { display:inline-block; font-size:11px; font-weight:500; padding:4px 8px; white-space:nowrap; border-radius:5px; background:#f2f2f7; color:var(--sh-muted); }
.sh-accepted,.sh-waived { color:#248a3d; background:#e8f6ec; }
.sh-submitted,.sh-waiver-pending { color:#a95d00; background:#fff3df; }
.sh-returned,.sh-alert { color:#d70015; background:#ffebed; }
.sh-version { padding:16px; background:var(--sh-surface-soft); border:1px solid var(--sh-line-soft); border-radius:var(--sh-radius); font-size:12px; }
.sh-version p { margin-top:8px; }
.sh-pre { white-space:pre-wrap; }
.sh-files { padding-left:18px; margin:10px 0 0; }
.sh-files li { padding:3px 0; }
.sh-dialog a { color:var(--sh-brand); overflow-wrap:anywhere; }
.sh-review { border-left:2px solid #248a3d; padding:12px 14px; background:#f4faf5; margin-top:14px; font-size:12px; }
.sh-review-form { background:var(--sh-surface-soft); padding:16px; border:1px solid var(--sh-line-soft); border-radius:var(--sh-radius); }
.sh-edit { border-top:1px solid var(--sh-line-soft); margin-top:16px; padding-top:14px; font-size:12px; }
.sh-inline { flex-direction:row; align-items:end; }.sh-inline label { flex:1; }
.sh-box { border:1px solid var(--sh-line); background:#fff; border-radius:var(--sh-radius); box-shadow:var(--sh-shadow); padding:20px; margin-bottom:18px; overflow-wrap:anywhere; }
.sh-box>p,.sh-box>button { margin-top:12px; }
.sh-box dl { font-size:12px; margin:12px 0; }.sh-box dt { color:var(--sh-muted); margin-top:9px; }.sh-box dd { margin:0; }
.sh-box .sh-primary { width:100%; }
.sh-warning { color:#a95d00; font-size:12px; }.sh-good { color:#248a3d; font-size:12px; }
.sh-blockers ul { padding-left:18px; font-size:12px; }.sh-blockers li { margin-bottom:8px; }
.sh-history { border-top:1px solid var(--sh-line); padding-top:16px; margin-top:20px; font-size:12px; }.sh-history>div,.sh-history>p { margin:12px 0; padding:12px; background:var(--sh-surface); border-radius:var(--sh-radius); }
.sh-error { padding:14px 24px; background:#fff3df; color:#a95d00; border-bottom:1px solid #ead6b7; position:sticky; top:0; z-index:5; }.sh-error[hidden] { display:none; }
.sh-loading { padding:50px; text-align:center; color:var(--sh-muted); }
@media(max-width:850px) { .sh-columns { grid-template-columns:1fr; }.sh-side { display:grid; grid-template-columns:1fr 1fr; gap:12px; }.sh-side .sh-blockers { grid-column:1/-1; }.sh-metrics { grid-template-columns:1fr 1fr; }.sh-head { padding:18px; flex-wrap:wrap; position:static; }.sh-body { padding:18px; } }
@media(max-width:540px) { .sh-dialog { width:100vw; max-width:100vw; height:100dvh; max-height:100dvh; border-radius:0; border:0; }.sh-grid,.sh-side { grid-template-columns:1fr; }.sh-head h2 { font-size:21px; }.sh-metrics { gap:8px; }.sh-metrics>div { padding:13px; }.sh-item { padding:14px; }.sh-item-head { flex-wrap:wrap; }.sh-toolbar label { width:100%; } }
@media print { body.sh-printing>*:not(.sh-dialog) { display:none!important; } body.sh-printing .sh-dialog { position:static; width:100%; max-width:none; height:auto; max-height:none; overflow:visible; box-shadow:none; border:0; } .sh-printing .sh-dialog::backdrop { display:none; }.sh-printing .sh-head { position:static; padding:10px; }.sh-printing .sh-body { padding:10px; }.sh-printing .sh-dialog button,.sh-printing .sh-config,.sh-printing .sh-edit,.sh-printing .sh-form,.sh-printing .sh-history,.sh-printing .sh-error { display:none; }.sh-printing .sh-columns { display:block; }.sh-printing .sh-side { display:block; }.sh-printing .sh-item,.sh-printing .sh-box { break-inside:avoid; }.sh-printing .sh-summary { color:#1d1d1f; background:#fff; box-shadow:none; }.sh-printing .sh-summary p,.sh-printing .sh-summary .sh-kicker { color:#6e6e73; } }

.sh-head > div { min-width:0; }
.sh-head > .sh-buttons { flex-shrink:0; }
.sh-eyebrow { margin-bottom:6px; }
.sh-dialog button.sh-primary:hover:not(:disabled) { background:var(--teal-dark,#0058b0); border-color:var(--teal-dark,#0058b0); }
.sh-dialog :is(input,select,textarea):focus { border-color:var(--sh-brand); box-shadow:0 0 0 3px rgba(0,113,227,.12); }
.sh-dialog input::placeholder,.sh-dialog textarea::placeholder { color:var(--sh-muted); opacity:1; }
.sh-dialog input[type="file"] { background:var(--sh-surface-soft); }
.sh-dialog input[type="file"]::file-selector-button { border:1px solid var(--sh-line); border-radius:5px; padding:5px 9px; margin-right:10px; background:var(--sh-surface); color:var(--ink-2,#424245); font:inherit; cursor:pointer; }
.sh-dialog summary:hover { color:var(--sh-brand); }
.sh-dialog summary::marker { color:var(--sh-muted); font-size:.8em; }
.sh-item-head h3 { margin-top:3px; }
.sh-table tbody tr:hover { background:var(--sh-surface-soft); }
.sh-version b { font-weight:600; color:var(--ink-2,#424245); }
.sh-section-title span,.sh-box dd { font-variant-numeric:tabular-nums; }
.sh-blockers li::marker { color:var(--sh-muted); }
@media(max-width:540px) {
  .sh-head { padding:20px 18px; gap:18px; }
  .sh-head h2 { font-size:24px; }
  .sh-body { padding:20px 16px 28px; }
  .sh-summary { padding:20px; }
  .sh-summary strong { font-size:26px; }
  .sh-dialog button,.sh-dialog .sh-link { min-height:44px; }
  .sh-dialog input,.sh-dialog select,.sh-dialog textarea { font-size:16px; }
}
@media(prefers-reduced-motion:reduce) {
  .sh-dialog button,.sh-dialog input,.sh-dialog select,.sh-dialog textarea { transition:none; }
}
@media print {
  .sh-printing .sh-head { background:#fff; backdrop-filter:none; }
  .sh-printing .sh-item,.sh-printing .sh-box { box-shadow:none; }
}

.sh-hardware{margin:20px 0;scroll-margin-top:180px}.sh-hardware .sh-table{min-width:680px}.sh-hardware td{overflow-wrap:anywhere}.sh-hardware .sh-section-title{gap:12px;flex-wrap:wrap}

.sh-hardware td strong{display:block}@media(max-width:700px){.sh-hardware{scroll-margin-top:240px}}
