/* All Areas app look: simple, familiar, easy to read.
   Laid out the way people expect a business website to be: a top bar with the menu, white panels on a light grey
   page, sentence-case headings and labels, normal buttons, plain tables with a grey header row, roomy click
   targets. Colour codes things: each pass has its colour (the logo, the menu, main buttons), and status labels are
   green, amber or red. Set the pass on <body data-pass="hq">. Light and dark follow the system unless
   <html data-theme> says otherwise. */

:root{
  --page:#F4F5F7; --panel:#FFFFFF; --text:#1D2125; --text-2:#5A6068; --line:#D9DCE1; --line-2:#868D96; --head:#F0F2F4;
  --link:#0B57A4; --focus:#0B57A4;
  --ok:#1B6E3A; --ok-bg:#E3F3E8; --warn:#7A5100; --warn-bg:#FCF1D6; --bad:#B4231B; --bad-bg:#FBE4E2; --info-bg:#E8EEF6;
  --brand:#334E68; --brand-ink:#FFFFFF; --brand-soft:#E6ECF2;   /* the pass colour (HQ Office: slate blue; HQ Staff is plain slate, #52606D) */
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --page:#121417; --panel:#1B1E22; --text:#E8EAED; --text-2:#A7ADB5; --line:#2E3338; --line-2:#737B85; --head:#22262B;
  --link:#7DB3F0; --focus:#7DB3F0;
  --ok:#6BCB8B; --ok-bg:#183323; --warn:#F0C25A; --warn-bg:#3A2E10; --bad:#F38B82; --bad-bg:#3D1B19; --info-bg:#1F2A38;
  --brand:#8FB0CF; --brand-ink:#0E1A26; --brand-soft:#1F2C38; color-scheme:dark }}
:root[data-theme="dark"]{
  --page:#121417; --panel:#1B1E22; --text:#E8EAED; --text-2:#A7ADB5; --line:#2E3338; --line-2:#737B85; --head:#22262B;
  --link:#7DB3F0; --focus:#7DB3F0;
  --ok:#6BCB8B; --ok-bg:#183323; --warn:#F0C25A; --warn-bg:#3A2E10; --bad:#F38B82; --bad-bg:#3D1B19; --info-bg:#1F2A38;
  --brand:#8FB0CF; --brand-ink:#0E1A26; --brand-soft:#1F2C38; color-scheme:dark }

/* Pass colours. In the dark, each is lighter and its soft tint is dark, so text on either still reads. */
body[data-pass="hqstaff"]{--brand:#52606D;--brand-ink:#FFFFFF;--brand-soft:#E8EBEE}
body[data-pass="crew"]{--brand:#B98900;--brand-ink:#1A1400;--brand-soft:#FBF1D2}
body[data-pass="patch"]{--brand:#1E7A47;--brand-ink:#FFFFFF;--brand-soft:#E2F2E8}
body[data-pass="tour"]{--brand:#1F5FB8;--brand-ink:#FFFFFF;--brand-soft:#E4EDFA}
body[data-pass="band"]{--brand:#C02F64;--brand-ink:#FFFFFF;--brand-soft:#FAE3EC}
body[data-pass="rf"]{--brand:#087C88;--brand-ink:#FFFFFF;--brand-soft:#DFF2F4}
body[data-pass="build"]{--brand:#C2570C;--brand-ink:#FFFFFF;--brand-soft:#FBE9DC}
body[data-pass="load"]{--brand:#5E7A12;--brand-ink:#FFFFFF;--brand-soft:#EEF4DC}
body[data-pass="script"]{--brand:#8A5A2E;--brand-ink:#FFFFFF;--brand-soft:#F3E9DF}
body[data-pass="tools"]{--brand:#37414B;--brand-ink:#FFFFFF;--brand-soft:#E7EAED}   /* the free side tools (AutoArrayCalc) */
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) body{--brand-soft:#232A31}
  :root:not([data-theme="light"]) body[data-pass="hqstaff"]{--brand:#B4C0CC;--brand-ink:#141A20}
  :root:not([data-theme="light"]) body[data-pass="crew"]{--brand:#E8B730;--brand-ink:#1A1400}
  :root:not([data-theme="light"]) body[data-pass="patch"]{--brand:#5CC48A;--brand-ink:#0B2416}
  :root:not([data-theme="light"]) body[data-pass="tour"]{--brand:#7FAEF0;--brand-ink:#0B1A33}
  :root:not([data-theme="light"]) body[data-pass="band"]{--brand:#F07AA6;--brand-ink:#2B0715}
  :root:not([data-theme="light"]) body[data-pass="rf"]{--brand:#4CC3CF;--brand-ink:#04282C}
  :root:not([data-theme="light"]) body[data-pass="build"]{--brand:#F29A5C;--brand-ink:#2A1203}
  :root:not([data-theme="light"]) body[data-pass="load"]{--brand:#A9C95A;--brand-ink:#1A2200}
  :root:not([data-theme="light"]) body[data-pass="script"]{--brand:#D2A174;--brand-ink:#2A1A0B}
  :root:not([data-theme="light"]) body[data-pass="tools"]{--brand:#C3CCD5;--brand-ink:#14191E}}
:root[data-theme="dark"] body{--brand-soft:#232A31}
:root[data-theme="dark"] body[data-pass="hqstaff"]{--brand:#B4C0CC;--brand-ink:#141A20}
:root[data-theme="dark"] body[data-pass="crew"]{--brand:#E8B730;--brand-ink:#1A1400}
:root[data-theme="dark"] body[data-pass="patch"]{--brand:#5CC48A;--brand-ink:#0B2416}
:root[data-theme="dark"] body[data-pass="tour"]{--brand:#7FAEF0;--brand-ink:#0B1A33}
:root[data-theme="dark"] body[data-pass="band"]{--brand:#F07AA6;--brand-ink:#2B0715}
:root[data-theme="dark"] body[data-pass="rf"]{--brand:#4CC3CF;--brand-ink:#04282C}
:root[data-theme="dark"] body[data-pass="build"]{--brand:#F29A5C;--brand-ink:#2A1203}
:root[data-theme="dark"] body[data-pass="load"]{--brand:#A9C95A;--brand-ink:#1A2200}
:root[data-theme="dark"] body[data-pass="script"]{--brand:#D2A174;--brand-ink:#2A1A0B}
:root[data-theme="dark"] body[data-pass="tools"]{--brand:#C3CCD5;--brand-ink:#14191E}

*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--page);color:var(--text);font:16px/1.5 var(--font)}
a{color:var(--link)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
h1,h2,h3{line-height:1.25;margin:0}
h1{font-size:1.5rem;font-weight:650}
h2{font-size:1.15rem;font-weight:650}
h3{font-size:1rem;font-weight:650}

/* ---------- top bar ---------- */
.topbar{background:var(--panel);border-top:4px solid var(--brand);border-bottom:1px solid var(--line)}
.topbar-in{max-width:1200px;margin:0 auto;padding:0 16px;display:flex;align-items:center;gap:20px;min-height:60px;flex-wrap:wrap}
.logo{display:flex;align-items:center;gap:10px;font-weight:650;color:var(--text);text-decoration:none;white-space:nowrap}
/* The pass logo keeps the stencil lettering (Angus likes it): the one decorative touch. */
.logo .mark{display:inline-grid;place-items:center;min-width:44px;height:36px;padding:0 8px;border-radius:6px;background:var(--brand);color:var(--brand-ink);font:400 1.15rem/1 "Saira Stencil One","Arial Narrow",Impact,sans-serif;letter-spacing:.03em}
.menu{display:flex;gap:4px;flex-wrap:wrap}
.menu a{color:var(--text);text-decoration:none;padding:.5rem .75rem;border-radius:6px;font-size:.95rem}
.menu a:hover{background:var(--head)}
.menu a[aria-current]{background:var(--brand-soft);color:var(--text);font-weight:600;box-shadow:inset 0 -3px 0 var(--brand)}
.topbar .who{margin-left:auto;font-size:.9rem;color:var(--text-2)}

/* ---------- page ---------- */
.page{max-width:1200px;margin:0 auto;padding:24px 16px 64px;display:grid;gap:20px}
.page-head{display:grid;gap:4px}
.page-head p{margin:0;color:var(--text-2);max-width:72ch}
.two-col{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:20px;align-items:start}
@media (max-width:960px){.two-col{grid-template-columns:1fr}}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;min-width:0}
.panel-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:14px 16px;border-bottom:1px solid var(--line)}
.panel-head .count{font-size:.85rem;color:var(--text-2);background:var(--head);border-radius:10px;padding:0 .5rem}
.panel-head .aside{margin-left:auto;font-size:.88rem;color:var(--text-2)}
.panel-body{padding:16px}
.muted{color:var(--text-2)}
.small{font-size:.88rem}

/* ---------- forms and buttons ---------- */
label{display:grid;gap:4px;font-size:.9rem;font-weight:600}
input,select,textarea{font:inherit;font-size:.95rem;color:var(--text);background:var(--panel);border:1px solid var(--line-2);border-radius:6px;padding:.45rem .6rem;min-height:40px;width:100%;min-width:0;font-weight:400}
input::placeholder{color:var(--text-2)}
.btn,button{font:inherit;font-size:.95rem;font-weight:600;border-radius:6px;padding:.45rem 1rem;min-height:40px;cursor:pointer;border:1px solid var(--brand);background:var(--brand);color:var(--brand-ink)}
button.secondary{background:var(--panel);color:var(--text);border-color:var(--line-2)}
button.secondary:hover{background:var(--head)}
button.link{background:none;border:0;color:var(--link);padding:.25rem .4rem;min-height:32px;font-weight:500;text-decoration:underline;text-underline-offset:2px}
:is(button,input,select,a,textarea):focus-visible{outline:3px solid var(--focus);outline-offset:2px}

/* ---------- tables ---------- */
.table-wrap{overflow-x:auto}
table.list{width:100%;border-collapse:collapse;font-size:.95rem}
table.list th{text-align:left;font-weight:600;font-size:.88rem;color:var(--text-2);background:var(--head);padding:.6rem .75rem;border-bottom:1px solid var(--line)}
table.list td{padding:.65rem .75rem;border-bottom:1px solid var(--line);vertical-align:top}
table.list tr:last-child td{border-bottom:0}
table.list td.sub,table.list .sub{display:block;font-size:.85rem;color:var(--text-2)}
@media (max-width:720px){
  table.stack thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  table.stack,table.stack tbody,table.stack tr,table.stack td{display:block;width:100%}
  table.stack tr{border-bottom:1px solid var(--line-2);padding:.5rem 0}
  table.stack td{border:0;padding:.35rem .75rem}
  table.stack td[data-label]::before{content:attr(data-label);display:block;font-size:.82rem;font-weight:600;color:var(--text-2);margin-bottom:2px}
}

/* ---------- status labels and messages ---------- */
.tag{display:inline-block;font-size:.8rem;font-weight:600;border-radius:4px;padding:.1rem .45rem;white-space:nowrap}
.tag.ok{background:var(--ok-bg);color:var(--ok)} .tag.warn{background:var(--warn-bg);color:var(--warn)} .tag.bad{background:var(--bad-bg);color:var(--bad)} .tag.info{background:var(--info-bg);color:var(--text)}
.alerts{list-style:none;margin:0;padding:0}
.alerts li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:start;padding:12px 16px;border-bottom:1px solid var(--line);font-size:.95rem}
.alerts li:last-child{border-bottom:0}

.toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);background:var(--text);color:var(--panel);padding:.6rem 1rem;border-radius:6px;font-weight:600;z-index:60;opacity:0;transition:opacity .15s;pointer-events:none}
.toast.show{opacity:1}
@media print{.topbar .menu,.toast,button{display:none!important}body{background:#fff}.panel{border:0}}
