:root{
  --bg:#f4f7f9; --surface:#ffffff; --ink:#17233d; --muted:#5f6d84; --faint:#94a1b4;
  --line:#e5eaf0; --line-2:#eef2f6;
  --brand:#17233d;              /* navy, from the JUM wordmark */
  --accent:#0f9aa0;            /* teal, the primary brand action */
  --brand-teal:#12a79f; --brand-blue:#1f88c9; --brand-green:#7cc242;
  --ok:#2f9e52; --warn:#b9791b; --bad:#c33a2c;
  --grad:linear-gradient(120deg,#7cc242,#12a79f,#1f88c9);
  --sidebar:#ffffff;            /* light sidebar, airy like the reference */
  --sidebar-ink:#3b4a63; --sidebar-muted:#93a1b4; --sidebar-line:#e9edf2;
  --shadow:0 1px 2px rgba(23,35,61,.05),0 12px 30px -20px rgba(23,35,61,.28);
  --side-w:238px; --side-w-min:66px;
  /* aliases so the ported Live Stream Intake rules below resolve to this palette */
  --card:var(--surface); --off:var(--faint); --danger:var(--bad); --border:var(--line);
}
*{box-sizing:border-box}
body{margin:0;font:14.5px/1.55 -apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}

/* ---- app shell: left sidebar + main -------------------------------------- */
main{margin-left:var(--side-w);padding:0;transition:margin-left .12s ease}
main .wrap{max-width:1560px;margin:0 auto;padding:24px 34px 72px}
body.nav-min main{margin-left:var(--side-w-min)}

aside.side{position:fixed;inset:0 auto 0 0;width:var(--side-w);background:var(--sidebar);
  color:var(--sidebar-ink);display:flex;flex-direction:column;z-index:30;overflow-y:auto;
  border-right:1px solid var(--sidebar-line);transition:width .12s ease;scrollbar-width:thin}
body.nav-min aside.side{width:var(--side-w-min)}

.side-brand{display:flex;align-items:center;gap:10px;padding:16px 16px 14px;border-bottom:1px solid var(--sidebar-line)}
.side-logo{height:24px;width:auto;display:block;flex:0 0 auto}
body.nav-min .side-brand{padding:14px 8px;justify-content:center}
body.nav-min .side-logo{height:18px}

.side-nav{flex:1;padding:8px 8px 12px}
.navgroup{margin:2px 0 6px}
.navhead{padding:10px 10px 4px;font-size:11px;text-transform:uppercase;letter-spacing:.09em;
  color:var(--sidebar-muted);font-weight:700;user-select:none}
.side-toggle svg{width:18px;height:18px}
.navlink{display:flex;align-items:center;gap:11px;padding:8px 11px;margin:1px 0;border-radius:9px;
  color:var(--sidebar-ink);font-size:14px;font-weight:500;white-space:nowrap}
.navlink:hover{background:var(--line-2);text-decoration:none;color:var(--ink)}
.navlink svg{flex:0 0 auto;width:18px;height:18px;stroke:currentColor;opacity:.7}
.navlink.on{background:color-mix(in srgb,var(--accent) 13%,transparent);color:var(--accent);font-weight:700}
.navlink.on svg{opacity:1}
/* collapsed rail: icons only */
body.nav-min .side-nav{padding:8px 6px}
body.nav-min .navhead{display:none}
body.nav-min .navgroup{margin:2px 0}
body.nav-min .navlink{justify-content:center;padding:10px 0}
body.nav-min .navlabel{display:none}

.side-foot{border-top:1px solid var(--sidebar-line);padding:8px}
.side-toggle{width:100%;display:flex;align-items:center;gap:10px;justify-content:center;background:transparent;
  border:0;color:var(--sidebar-muted);padding:9px;border-radius:9px;cursor:pointer;font-size:13px}
.side-toggle:hover{background:var(--line-2);color:var(--ink)}

@media(max-width:720px){
  :root{--side-w:var(--side-w-min)}
  main{margin-left:var(--side-w-min)}
  .navhead,.navlabel{display:none}
  .navlink{justify-content:center;padding:10px 0}
}
h1{margin:0 0 4px;font-size:23px;font-weight:800;letter-spacing:-.01em;color:var(--ink)}
h2{margin:0 0 12px;font-size:16px;font-weight:700;color:var(--ink)}
.sub{color:var(--muted);margin:0 0 20px}
.muted{color:var(--muted)} .small{font-size:12.5px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px 18px;margin:0 0 16px;box-shadow:var(--shadow)}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px}
.cards .card{text-align:center}
.big{font-size:26px;font-weight:800;color:var(--brand)}
.btn{display:inline-block;background:var(--brand);color:#fff;padding:8px 14px;border-radius:9px;margin:4px 6px 0 0;font-size:14px;border:1px solid transparent;transition:filter .12s,background .12s}
.btn:hover{text-decoration:none;filter:brightness(1.12)}
.btn.primary{background:var(--grad);color:#fff}
button{background:var(--accent);color:#fff;border:0;padding:9px 18px;border-radius:9px;font-size:14px;cursor:pointer;transition:filter .12s}
button:hover{filter:brightness(1.08)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
table.grid{width:100%;border-collapse:collapse}
table.grid th,table.grid td{text-align:left;padding:7px 10px;border-bottom:1px solid var(--line);vertical-align:top}
table.grid thead th{font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}

/* pills */
.pill{display:inline-block;font-size:11px;padding:2px 7px;border-radius:999px;background:#eef1f5;color:#42505f;margin:0 2px 2px 0;white-space:nowrap}
.owner-jum{background:#e7effb;color:#1f4e8f}
.owner-client{background:#eaf6ec;color:#256b34}
.owner-venue{background:#fbf0e2;color:#8a5a1b}
.vis-client{background:#eef6ff;color:#2a6df4}
.vis-internal{background:#efeef5;color:#5b52a0}
.vis-stated{background:#fdf0f0;color:#a23b3b}
.gate-hard{background:#fde3e0;color:#b3271a;font-weight:600}
.gate-soft{background:#fff2d6;color:#8a5a00;font-weight:600}
.prof-major{background:#1f3a5f;color:#fff}
.prof-standard{background:#5a6b7f;color:#fff}
.prof-sensitive{background:#c9d3df;color:#38424f}
.input{background:#f2f2f4;color:#78808c}
.warn{background:#fbeee0;color:#854f0b}
.legend{margin:0 0 16px}

/* items */
.item{padding:9px 0;border-bottom:1px solid var(--line)}
.item:last-child{border-bottom:0}
.item-head{display:flex;gap:10px;align-items:baseline}
.item-head .ref{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12.5px;min-width:34px}
.item-head .label{font-weight:600}
.item-badges{margin:4px 0 0 44px}
.help{margin:3px 0 0 44px;color:var(--muted);font-size:12.5px}
.default{margin:4px 0 0 44px;font-size:12.5px;background:#fbf7ee;border-left:3px solid #e6c667;padding:5px 9px;border-radius:0 6px 6px 0}

/* assembler */
.assembler{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin-bottom:16px}
.assembler .field{margin-bottom:12px}
.assembler label{font-weight:600;font-size:13px;display:block;margin-bottom:6px}
.opts{display:flex;flex-wrap:wrap;gap:12px}
.opt{font-weight:400!important;display:flex;align-items:center;gap:5px}
.summary{display:flex;gap:26px;align-items:center}
.summary .big{margin-right:6px}
.nowrap{white-space:nowrap}

/* per-job view */
.jobhead{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;flex-wrap:wrap;margin-bottom:16px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.big-opts{gap:14px}
.opt.check{background:#f4f6f9;border:1px solid var(--line);padding:6px 11px;border-radius:8px;cursor:pointer}
.opt.check input{margin:0}
.toggle{margin-left:auto}
.mini{font-size:11px;padding:3px 10px;border-radius:999px;border:0;cursor:pointer}
.mini.on{background:#e6f4ea;color:#256b34}
.mini.off{background:#efeff2;color:#8a909a}
.item.excluded{opacity:.45}
.item.excluded .label{text-decoration:line-through}
.contact-form{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px;border-top:1px solid var(--line);padding-top:12px}
.contact-form input{padding:7px 9px;border:1px solid var(--line);border-radius:8px}
.contact-form .roles{display:flex;flex-wrap:wrap;gap:8px;width:100%}

/* decluttered item row */
.item-head{display:flex;align-items:center;gap:12px}
.item-head .label{font-weight:600;flex:1}
.item-head .meta{display:flex;align-items:center;gap:6px}
.item-head .due{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}

/* job actions + custom form */
.jobactions{display:flex;align-items:center;gap:12px;margin:0 0 16px}
.jobactions .inline{display:inline}
.custom-form{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.custom-form input,.custom-form select{padding:7px 9px;border:1px solid var(--line);border-radius:8px}
.tminus{display:inline-flex;align-items:center;gap:4px;color:var(--muted);font-size:13px}
.tminus input{width:56px;padding:6px 8px;border:1px solid var(--line);border-radius:8px}
.newitem{margin-top:12px}
.newitem summary{cursor:pointer;color:var(--accent);font-size:13px}

/* client preview */
.preview-banner{background:#1f3a5f;color:#fff;padding:10px 16px;border-radius:10px;margin-bottom:18px;font-size:13px}
.client{max-width:680px;margin:0 auto;background:#fff;border:1px solid var(--line);border-radius:16px;padding:30px 32px;box-shadow:var(--shadow)}
.client h1{font-size:22px}
.client-section{margin:22px 0}
.client-section h2{font-size:15px;color:var(--brand);border-bottom:2px solid #eef1f5;padding-bottom:6px}
.q{margin:14px 0}
.qlabel{display:block;font-weight:600;margin-bottom:5px}
.qinput input[type=text],.qinput input[type=date],.qinput input[type=time]{width:100%;padding:9px;border:1px solid var(--line);border-radius:8px;background:#fafbfc}
.qinput .file{display:inline-block;padding:9px 14px;border:1px dashed var(--line);border-radius:8px;color:var(--muted)}
.yn{margin-right:16px}
.qhelp{color:var(--muted);font-size:12.5px;margin-top:4px}
.stated{background:#fbf7ee;border-left:3px solid #e6c667;padding:10px 12px;border-radius:0 8px 8px 0}
/* brief field types (multi/yesno/file/dropbox) */
.opts-col{display:flex;flex-direction:column;gap:6px}
.opts-col .chk{display:flex;align-items:center;gap:8px;font-weight:400}
.opts-col .other-text{margin:2px 0 0 24px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;width:calc(100% - 24px)}
.qinput input[type=file]{font-size:13px}
.cur-file{font-size:13px;margin-bottom:6px;color:var(--muted)}
.yesno-detail .yd-extra{gap:8px;margin-top:8px}
.yesno-detail .yd-extra input{flex:1;min-width:140px;padding:9px;border:1px solid var(--line);border-radius:8px}
.dropbox-field{display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.dropbox-field input{width:100%}
/* venue autocomplete */
.places-wrap{position:relative}
.places-list{position:absolute;left:0;right:0;top:100%;z-index:20;background:#fff;border:1px solid var(--line);border-top:0;border-radius:0 0 8px 8px;box-shadow:0 6px 18px rgba(20,40,70,.12);max-height:240px;overflow-y:auto}
.place-opt{padding:9px 11px;font-size:14px;cursor:pointer;border-bottom:1px solid #f0f2f5}
.place-opt:last-child{border-bottom:0}
.place-opt:hover{background:#eef2f8}
/* crew job card (Phase 3) */
.jobcard{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:28px 32px;max-width:860px;box-shadow:var(--shadow)}
.jc-head{display:flex;justify-content:space-between;align-items:center;gap:20px;border-bottom:1px solid var(--line);padding-bottom:20px;margin-bottom:4px}
.jc-head h2{margin:0;font-size:23px;font-weight:800;letter-spacing:-.01em;color:var(--ink)}
.jc-head .jc-count{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;
  border:0;padding:12px 20px;min-width:96px;background:var(--bg);border-radius:14px}
.jc-head .jc-count .jc-num{font-size:30px;font-weight:800;line-height:1;color:var(--ink);letter-spacing:-.02em}
.jc-head .jc-count.jc-soon .jc-num{color:var(--bad)}
.jc-head .jc-count .jc-unit{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-top:3px}
.jc-section{margin-top:26px}
.jc-section h3{margin:0 0 10px;font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--accent);font-weight:800}
.wx{display:flex;gap:16px;align-items:center}
.wx-emoji{font-size:44px;line-height:1}
.wx-summary{font-weight:700;font-size:16px}
.wx-nums{display:flex;flex-wrap:wrap;gap:16px;margin:4px 0;font-size:14px}
.wx-watch{background:#fdf3f2;border:1px solid #e6b0aa;color:#a2352a;border-radius:10px;padding:10px 14px;margin-bottom:12px;font-size:13.5px}
.jc-row{display:flex;gap:20px;padding:9px 0;border-bottom:1px solid var(--line-2);font-size:14px}
.jc-row:last-child{border-bottom:0}
.jc-k{flex:0 0 38%;max-width:240px;color:var(--muted);font-weight:500}
.jc-v{flex:1;min-width:0;color:var(--ink)}
.fleet-form .field{margin-bottom:12px}
.fleet-form label{display:block;font-weight:600;font-size:13px;margin-bottom:5px}
.fleet-form input{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px}
.fleet-instr{border:1px solid var(--line);border-radius:10px;padding:6px 14px;margin-bottom:12px}
.fleet-copy{width:100%;min-height:150px;padding:12px;border:1px solid var(--line);border-radius:8px;font-family:ui-monospace,Menlo,monospace;font-size:13px;color:#3a4453;background:#f7f8fa}
.wx-chip{display:inline-flex;align-items:center;gap:6px;font-size:13px}
@media print{
  header,.no-print,.phase{display:none!important}
  main{max-width:none;padding:0}
  .jobcard{border:0;max-width:none;padding:0}
}
.ack{display:inline-block;margin-left:8px;font-size:12px;color:#8a5a00}

/* brief-style client form */
.client-top{display:flex;align-items:center;gap:14px;border-bottom:1px solid var(--line);padding-bottom:16px;margin-bottom:4px}
.client-logo{height:42px;width:auto;display:block;flex:0 0 auto}
.client-top .tag{color:var(--muted);font-size:12px;margin-left:auto;text-align:right;letter-spacing:.02em}
.client h1{font-size:23px;margin:16px 0 2px}
.doc-sub{color:var(--muted);margin:0 0 14px;font-size:13px}
.intro{background:#f6f8fb;border-radius:10px;padding:12px 14px;color:#3a4453}
.the-four{background:#f4f8f4;border:1px solid #d9e6d9;border-radius:12px;padding:6px 16px 14px;margin:22px 0}
.the-four h2{color:#256b34;border-bottom-color:#d9e6d9}
.four-tag{font-weight:400;font-size:12px;color:#4f8a5c;text-transform:none}
.star{color:#256b34;font-weight:800}
.client-notes{margin-top:24px;background:#fbf7ee;border-radius:10px;padding:12px 16px}
.notes-title{font-weight:700;font-size:13px;color:#8a5a00;margin-bottom:4px}
.client-notes ul{margin:0;padding-left:18px}
.client-notes li{font-size:13px;color:#5b5340;margin:4px 0}
.office-note{margin-top:20px;color:var(--muted);font-size:13px;font-style:italic}
.foot{text-align:center;margin-top:8px}
.brief-actions{margin-top:22px}
.alert-ok{background:#e6f4ea;border:1px solid #bfe3c9;color:#256b34;padding:10px 14px;border-radius:10px;margin-bottom:16px}
.pill.answered{background:#e6f4ea;color:#256b34;font-weight:600}
.answer{margin:4px 0 0 0;font-size:13px;background:#f2f7f3;border-left:3px solid #6fae7f;padding:5px 10px;border-radius:0 6px 6px 0}
/* make the brief inputs active (the preview is now a real, saving form) */
.client .qinput input[type=text],.client .qinput input[type=date]{background:#fff}
.client .qinput input[disabled]{background:#fafbfc}

/* the clock (Phase 2.1) */
.clock-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.clock-note{padding:8px 12px;border-radius:8px;margin-bottom:12px;font-size:13px}
.warn-note{background:#fbeee0;color:#854f0b;border:1px solid #f0d9bd}
.clock-controls{display:grid;grid-template-columns:1fr;gap:12px;border-top:1px solid var(--line);padding-top:12px;margin-bottom:14px}
.cc-block{display:flex;flex-direction:column;gap:6px}
.cc-label{font-weight:600;font-size:13px}
.arms,.sim-controls{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.sim-controls input[type=date]{padding:6px 8px;border:1px solid var(--line);border-radius:8px}
.life-active{background:#e7effb;color:#1f4e8f}
.life-deposit_pending{background:#fbeee0;color:#854f0b}
.life-ready{background:#eef1f5;color:#42505f}
.life-locked{background:#efeef5;color:#5b52a0}
.life-complete{background:#e6f4ea;color:#256b34}
.pill.sim{background:#f3e8ff;color:#6b21a8;font-weight:600}
/* timeline */
.timeline th,.timeline td{padding:6px 10px}
.timeline tr.tl-due{background:#fff8ec}
.timeline tr.tl-warned{background:#fdf2f0}
.timeline tr.tl-fired{background:#f4f8f4}
.timeline tr.tl-planned{opacity:.55}
.timeline tr.tl-skipped{opacity:.6}
.st-skipped{background:#f3eee6;color:#8a7a5a}
.st-waived{background:#e9eef5;color:#3a5573;font-weight:600}
/* gate outcomes (Phase 2.4) */
.gate-actions{margin:8px 0 0 0;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.gate-waive{display:flex;gap:6px;align-items:center}
.gate-waive input{padding:6px 9px;border:1px solid var(--line);border-radius:8px;min-width:220px}
.snap-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.kind-nudge{background:#eef6ff;color:#2a6df4}
.kind-warn{background:#fff2d6;color:#8a5a00}
.kind-gate{background:#fde3e0;color:#b3271a;font-weight:600}
.kind-money{background:#eaf6ec;color:#256b34}
.kind-runsheet,.kind-jobcard,.kind-bumpout{background:#eef1f5;color:#5b6470}
.kind-weather{background:#e7f0fb;color:#1f5b8f}
/* travel legs */
.leg{border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin-bottom:10px}
.leg-head{font-weight:600;font-size:14px;margin-bottom:6px}
/* crew */
.crew-row{display:flex;align-items:center;gap:12px;padding:7px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}
.crew-row:last-child{border-bottom:0}
.crew-row select{padding:6px 8px;border:1px solid var(--line);border-radius:8px}
.st-pending{background:#eef1f5;color:#6b7480}
.st-due{background:#fff2d6;color:#8a5a00;font-weight:600}
.st-fired{background:#e7effb;color:#1f4e8f}
.st-warned{background:#fde3e0;color:#b3271a;font-weight:600}
.st-satisfied{background:#e6f4ea;color:#256b34;font-weight:600}
.st-planned{background:#f2f2f4;color:#8a909a}
/* client link */
.linkrow{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.linkfield{flex:1;min-width:280px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#f7f8fa;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;color:#42505f}
.mini-link{font-size:11px;padding:3px 10px;border-radius:999px;background:#eef1f5;color:#42505f}
.linkstatus{margin-top:10px}
/* public brief page */
body.public{background:var(--bg)}
body.public main{max-width:720px;margin:0 auto;padding:30px 18px 64px}
.client.thanks{border-color:#bfe3c9;background:#f4fbf6;margin-bottom:16px}
.client.thanks h1{color:#256b34}
/* outbox / messages (Phase 2.3) */
.outbox{display:flex;flex-direction:column;gap:10px}
.msg{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#fcfcfd}
.msg-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.msg-to{font-size:12px;color:var(--muted)}
.msg-subject{font-weight:600;font-size:14px}
.msg-body{font-size:13px;color:#3a4453;margin-top:3px}
.chan-sms{background:#eef6ff;color:#2a6df4}
.chan-internal{background:#efeef5;color:#5b52a0}
.chan-email{background:#eaf6ec;color:#256b34}
.mode-shadow{background:#f3e8ff;color:#6b21a8;font-weight:600}
.mode-live{background:#e6f4ea;color:#256b34;font-weight:600}
/* message release status (Phase 2.6) */
.st-queued{background:#fff2d6;color:#8a5a00;font-weight:600}
.st-sent{background:#e6f4ea;color:#256b34;font-weight:600}
.st-shadow-sent{background:#f3e8ff;color:#6b21a8;font-weight:600}
.st-flag{background:#efeef5;color:#5b52a0}
.st-failed{background:#fde3e0;color:#b3271a;font-weight:600}
.reply-by{background:#fff7e8;border:1px solid #f0dcae;border-radius:10px;padding:10px 14px;color:#7a5a12;font-size:14px}
/* collaborative setup (staff pre-fill + checkpoint) */
.btn.ghost{background:#fff;color:var(--brand);border:1px solid var(--brand)}
.btn.ghost:hover{background:#eef2f8}
.setup-head{display:flex;align-items:center;justify-content:space-between;gap:12px;max-width:620px;margin:0 auto 10px}
.src-tag{font-size:10.5px;padding:1px 6px;border-radius:999px;margin-left:6px;vertical-align:middle}
.src-staff{background:#e7effb;color:#1f4e8f}
.src-client{background:#eaf6ec;color:#256b34}
.row-changed{background:#fff8ec}
.checkpoint{margin-top:3px;font-size:12px;color:#8a5a00;background:#fff2d6;border-radius:6px;padding:3px 8px;display:inline-block}
/* delete / danger */
.danger-zone{border-color:#f0cfcb;background:#fdf6f5}
.danger-zone h2{color:#b3271a}
.btn-danger{background:#b3271a;color:#fff;border:0;padding:9px 16px;border-radius:8px;font-size:14px;cursor:pointer}
.btn-danger:hover{background:#8f1f15}
.danger-mini{background:#fbeceb;color:#b3271a}
.danger-mini:hover{background:#f6d9d6}
/* dashboard */
.dash-head{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:4px}
.job-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;margin-top:8px}
.job-card{display:flex;gap:14px;background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--line);border-radius:12px;padding:14px 16px;color:var(--ink)}
.job-card:hover{text-decoration:none;box-shadow:0 2px 10px rgba(20,40,70,.08);border-color:#cfd6e0}
.life-border-active{border-left-color:#2a6df4}
.life-border-deposit_pending{border-left-color:#d99000}
.life-border-locked{border-left-color:#5b52a0}
.life-border-complete{border-left-color:#3a9d54}
.jc-count{flex:0 0 74px;text-align:center;display:flex;flex-direction:column;justify-content:center;border-right:1px solid var(--line);padding-right:12px}
.jc-count.jc-soon{color:#b3271a}
.jc-count.jc-past{color:var(--muted)}
.jc-num{font-size:26px;font-weight:700;line-height:1.05;color:var(--brand)}
.jc-count.jc-soon .jc-num{color:#b3271a}
.jc-count.jc-past .jc-num{color:var(--muted)}
.jc-unit{font-size:11px;color:var(--muted)}
.jc-body{flex:1;min-width:0}
.jc-name{font-weight:700;font-size:15px}
.jc-meta{color:var(--muted);font-size:12.5px;margin:2px 0 8px}
.jc-tags{display:flex;flex-wrap:wrap;gap:4px}
/* job summary header */
.summary-card{display:flex;gap:18px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px 18px;margin-bottom:14px;box-shadow:var(--shadow)}
.sc-main{flex:1;min-width:0}
.sc-tags{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.sc-count{flex:0 0 92px;text-align:center;border-left:1px solid var(--line);padding-left:16px}
.sc-count.jc-soon .jc-num{color:#b3271a}

/* planning calendar */
table.cal{width:100%;border-collapse:collapse;table-layout:fixed}
table.cal th{padding:4px;font-size:12px;color:var(--muted);text-align:center;border-bottom:1px solid var(--line)}
table.cal td{border:1px solid var(--line);vertical-align:top;height:84px;padding:3px;width:14.28%}
table.cal td.cal-out{background:rgba(127,127,127,.06)}
.cal-day{font-size:12px;color:var(--muted);margin-bottom:2px}
.cal-ev{display:block;font-size:11px;line-height:1.3;padding:1px 5px;margin:1px 0;border-radius:3px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-decoration:none}
.cal-event{background:#2b6cb0;color:#fff}
.cal-travel{background:rgba(228,179,127,.35);color:inherit}
.cal-funeral{background:#5b6b8c;color:#fff}
.cal-external{background:#e7ecf2;color:#42505f}
.cal-clash{outline:2px solid var(--bad);outline-offset:-2px;background:#fdecea;color:#a2352a;font-weight:600}

/* tour card (print) */
.tc-stop{border:1px solid var(--line);border-radius:6px;padding:10px 12px;margin:0 0 10px;break-inside:avoid}
.tc-head{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line);padding-bottom:5px;margin-bottom:6px}
table.tc-info{width:100%;border-collapse:collapse;margin-bottom:6px}
table.tc-info td{padding:2px 6px;font-size:13px;vertical-align:top}
table.tc-info td:nth-child(odd){color:var(--muted);width:110px}
.tc-crew{font-size:13px}
.tc-person{margin:7px 0}
.tc-name{display:block;font-weight:600;margin-bottom:1px}
.tc-shift{display:block;margin:1px 0 1px 14px;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}
@media print{
  .noprint,nav,header,.nav,.topbar{display:none !important}
  body{background:#fff;color:#000}
  .tc-stop{border-color:#999}
}

/* ---- reference-style polish: eyebrow, KPI tiles, tables --------------------- */
.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.12em;font-weight:800;color:var(--accent);margin-bottom:2px}
.dash-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 18px}

.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(8.5rem,1fr));gap:12px;margin:0 0 18px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 16px;box-shadow:var(--shadow)}
.kpi .n{display:block;font-size:30px;font-weight:800;line-height:1.05;letter-spacing:-.02em;color:var(--ink);font-variant-numeric:tabular-nums}
.kpi .l{display:block;margin-top:3px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.kpi.badk .n{color:var(--bad)} .kpi.warnk .n{color:var(--warn)} .kpi.okk .n{color:var(--ok)} .kpi.hot .n{color:var(--accent)}

.tbl-scroll{overflow-x:auto;max-width:100%;min-width:0}
table.grid,table.tbl{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
table.grid thead th,table.tbl thead th,table.tbl tr:first-child th{
  text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--faint);
  font-weight:700;padding:8px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
table.grid tbody td,table.tbl td{padding:11px 12px;border-bottom:1px solid var(--line-2);vertical-align:top;font-size:13.5px}
table.grid tbody tr:hover,table.tbl tr:hover{background:var(--line-2)}
table.grid tbody tr:last-child td,table.tbl tr:last-child td{border-bottom:0}
td.num,th.num{text-align:right}
.ct-soon strong{color:var(--warn)} .ct-past{color:var(--faint)}

/* job-detail action tabs */
.tabbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 18px}
.tab-form{margin:0;display:inline-flex}
.tab{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;background:var(--surface);
  border:1px solid var(--line);color:var(--ink);padding:0 13px;min-height:39px;border-radius:10px;font-size:13.5px;
  font-weight:600;line-height:1;box-shadow:var(--shadow);cursor:pointer;
  transition:border-color .12s,background .12s,color .12s,transform .06s}
.tab:hover{text-decoration:none;border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}
.tabnum{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:19px;padding:0 6px;
  border-radius:999px;background:var(--line-2);color:var(--muted);font-size:11.5px;font-weight:700}
.tab:hover .tabnum{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent)}
/* primary entry point */
.tab.primary{background:var(--brand);color:#fff;border-color:transparent}
.tab.primary .tabnum{background:rgba(255,255,255,.22);color:#fff}
.tab.primary:hover{filter:brightness(1.14);color:#fff;border-color:transparent;transform:translateY(-1px)}
.tab.primary:hover .tabnum{background:rgba(255,255,255,.28);color:#fff}
/* amber: something missing / incomplete */
.tab.warn{border-color:#e7c07a;background:#fff8ee;color:#8a5a12}
.tab.warn .tabnum{background:#f2d59a;color:#7a4e0c}
.tab.warn:hover{border-color:var(--warn);color:#7a4e0c}
.tab.warn:hover .tabnum{background:#eec880;color:#7a4e0c}
.tab.primary.warn{background:var(--warn);color:#fff;border-color:transparent}
.tab.primary.warn .tabnum{background:rgba(255,255,255,.26);color:#fff}
/* red: a conflict, or money past due */
.tab.bad{border-color:#e6b0aa;background:#fdf3f2;color:#a2352a}
.tab.bad .tabnum{background:#f2cdc8;color:#8f2c22}
.tab.bad:hover{border-color:var(--bad);color:#8f2c22}
.tab.bad:hover .tabnum{background:#eebcb5;color:#8f2c22}
/* blue: part paid */
.tab.info{border-color:#a9cde8;background:#f1f7fc;color:#1f5f8f}
.tab.info .tabnum{background:#cfe4f4;color:#1a527c}
.tab.info:hover{border-color:var(--brand-blue);color:#1a527c}
.tab.info:hover .tabnum{background:#bcd9ee;color:#1a527c}
/* green: done */
.tab.done{border-color:#bfe3c9;background:#f4fbf6;color:#256b34}
.tab.done .tabnum{background:#cfe9d7;color:#1f5b2c}
.tab.done:hover{border-color:var(--ok);color:#1f5b2c}
/* send action */
.tab-send{background:var(--accent);color:#fff;border-color:transparent;font-family:inherit}
.tab-send:hover{filter:brightness(1.08);color:#fff;border-color:transparent}
.sent-at{display:inline-flex;align-items:center;color:var(--muted);font-size:12.5px;font-weight:500}

/* job-detail: flow the narrow cards into balanced columns, wide cards span all */
.detailcols{columns:2;column-gap:18px}
.detailcols>.card{break-inside:avoid;margin-bottom:18px}
.detailcols>.card.span{column-span:all}
@media(max-width:1180px){.detailcols{columns:1}}


/* ============================================================================
   Live Stream Intake — ported components
   Shell, palette, cards, buttons, tables and pills above come from the shared
   events-hub stylesheet. Below are the components specific to this app (status
   dots, booking form, quotes, registry, users). Two class names collide with the
   events set and are intentionally overridden here for this app's pages —
   reconcile when the events module's own templates are brought in:
     .st-sent  (here: quote 'sent', amber — events uses it for message 'sent', green)
     .warn     (here: small inline warning text — events uses it as a pill background)
   ============================================================================ */

/* login page has no sidebar: drop the main offset */
body.no-nav main{margin-left:0}
body.no-nav aside.side{display:none}

/* sidebar user footer (role + who + log out) */
.side-user{padding:10px 12px;border-top:1px solid var(--sidebar-line);font-size:13px}
.side-user .uname{display:block;color:var(--ink);font-weight:600;margin:6px 0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.side-user .logout{color:var(--muted)} .side-user .logout:hover{color:var(--accent)}
body.nav-min .side-user{padding:8px 6px;text-align:center}
body.nav-min .side-user .uname,body.nav-min .side-user .logout{display:none}

/* forms (generic) */
form label{display:block;margin:14px 0;font-size:13px;color:var(--muted)}
form input,form select,form textarea{width:100%;margin-top:6px;padding:10px 12px;border:1px solid var(--line);
  border-radius:8px;font-size:14.5px;background:#fff;color:var(--ink);font-family:inherit}
form input:focus,form select:focus,form textarea:focus{outline:none;border-color:var(--accent);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}
.card.auth{max-width:380px;margin:8vh auto 0}
.card.auth h1{font-size:22px}
.card.auth button{width:100%;margin-top:6px}

/* alerts */
.alert{padding:10px 14px;border-radius:8px;margin:0 0 16px;font-size:14px}
.alert.error{background:#fdecea;color:#a13228;border:1px solid #f5c6c0}
.alert.ok{background:#e8f6ee;color:#1f7a4d;border:1px solid #bfe6cf}

/* pill flavours (base .pill comes from the shared sheet) */
.pill{font-weight:600;text-transform:capitalize}
.role-admin{background:#e7edf3;color:#2a4d69} .role-editor{background:#e6f0ec;color:#2e7d54}
.role-viewer{background:#eef0f3;color:#5b6675}
.perms{margin:0;padding-left:18px} .perms li{margin:6px 0}
.status{list-style:none;margin:0;padding:0}
.status li{display:flex;align-items:center;gap:10px;padding:5px 0;font-size:14px}
.dot{width:9px;height:9px;border-radius:50%;background:var(--off);flex:0 0 auto}
.dot.ok{background:var(--ok)} .dot.off{background:var(--off)}

/* per-system progress dots (jobs list + dashboard) */
.dots{display:inline-flex;gap:4px;align-items:center}
.pdot{width:10px;height:10px;border-radius:50%;display:inline-block;flex:0 0 auto;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.12)}
.pdot-done{background:#2e9e5b} .pdot-error{background:#e6b800}
.pdot-not{background:#d94848} .pdot-skip{background:#c7ccd4}
.stale{font-weight:600;font-size:13px;color:#5b6675} .stale-warn{color:#c2410c}
.head-actions{display:flex;gap:10px;align-items:center}
.legend .pdot{vertical-align:middle;margin:0 2px 0 6px}
.dot-group{position:relative;display:inline-flex;outline:none;cursor:default}
.pdot-rollup{width:13px;height:13px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.12),0 0 0 3px rgba(0,0,0,.05)}
.dot-group:hover .pdot-rollup,.dot-group:focus .pdot-rollup{box-shadow:inset 0 0 0 1px rgba(0,0,0,.2),0 0 0 3px rgba(0,0,0,.1)}
.dot-pop{display:none;position:absolute;top:20px;left:0;z-index:60;
  background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:9px 11px;
  box-shadow:0 8px 24px rgba(0,0,0,.14);min-width:200px;white-space:nowrap}
.dot-group:hover .dot-pop,.dot-group:focus .dot-pop{display:block}
.dot-pop-title{font-size:11px;font-weight:700;color:var(--muted);margin-bottom:7px;text-transform:uppercase;letter-spacing:.04em}
.dot-pop-row{display:flex;align-items:center;gap:8px;font-size:13px;padding:3px 0}
.dot-pop-row .pdot{flex:0 0 auto}
.dot-pop-name{color:var(--ink)} .dot-pop-st{margin-left:auto;padding-left:16px;color:var(--muted);font-size:12px}

/* registry admin */
.reg-tabs{display:flex;gap:8px;margin:14px 0 6px}
.reg-tabs a{padding:4px 12px;border-radius:999px;font-size:13px;background:#eef0f3;color:#4a5568}
.reg-tabs a.on{background:var(--brand);color:#fff}
.reg-filter{width:100%;margin:6px 0 12px}
.reg-row{border:1px solid var(--line);border-radius:8px;margin:6px 0;padding:8px 12px}
.reg-row summary{cursor:pointer;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.reg-form{margin-top:10px;display:flex;flex-direction:column;gap:8px}
.reg-form input{margin:0}
.reg-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:8px}
.reg-form .chk{display:flex;align-items:center;gap:8px} .reg-form .chk input{width:auto}
.tag{font-size:11px;padding:2px 8px;border-radius:999px;background:#e6f0ec;color:#2e7d54}
.warn-tag{background:#fbeee0;color:#854f0b} .muted-tag{background:#eef0f3;color:#5b6675}
.dups{margin:8px 0 0;padding-left:18px} .dups li{margin:4px 0;font-size:13px}
.dup-group{border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin:8px 0}
.dup-title{font-size:12px;color:var(--muted);margin-bottom:6px}
.dup-opt{display:flex;align-items:flex-start;gap:8px;padding:4px 0;font-size:14px}
.dup-opt input{width:auto;margin:3px 0 0} .dup-group button{margin-top:8px}
.audit-t td{vertical-align:top;padding:6px 10px} .audit-t td:nth-child(3){white-space:normal}

/* users table + inline forms */
.row-form{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.row-form input,.row-form select{width:auto;margin:0;flex:1;min-width:120px}
.row-form button{flex:0 0 auto}
table.users{width:100%;border-collapse:collapse;font-size:14px}
table.users th{text-align:left;color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase;
  letter-spacing:.4px;padding:8px 10px;border-bottom:1px solid var(--line)}
table.users td{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
tr.inactive{opacity:.5}
.you{font-size:11px;color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:0 5px}
form.inline{display:inline;margin:0} form.inline select{width:auto;padding:5px 8px}
.actions{white-space:nowrap} .actions .pw{white-space:nowrap}
.actions .pw input{width:130px;padding:5px 8px;margin:0 4px 0 0;font-size:13px}
button.link{background:none;color:var(--accent);padding:4px 6px;font-size:13px}
button.link:hover{text-decoration:underline;background:none}
button.link.danger{color:var(--danger)}

/* buttons */
.btn-primary{display:inline-block;background:var(--brand);color:#fff;padding:9px 16px;border-radius:9px;font-weight:600}
.btn-primary:hover{filter:brightness(1.12);text-decoration:none}
.btn-secondary{display:inline-block;color:var(--brand);border:1px solid var(--line);padding:8px 15px;border-radius:9px;background:#fff}
.btn-secondary:hover{text-decoration:none;background:#f6f8fa}
.dash-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}

/* booking form */
.jobform fieldset{border:1px solid var(--line);border-radius:12px;padding:16px 20px 20px;margin:0 0 18px;
  background:var(--surface);box-shadow:var(--shadow)}
.jobform legend{font-weight:700;color:var(--brand);padding:0 8px}
.grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}
@media(max-width:820px){.grid{grid-template-columns:1fr}}
.grid label{margin:0;display:flex;flex-direction:column}
.grid label.col2{grid-column:span 2}
@media(max-width:820px){.grid label.col2{grid-column:auto}}
.grid label.check{flex-direction:row;align-items:center;gap:8px;color:var(--ink);align-self:end;padding-bottom:8px}
.grid label.check input{width:auto;margin:0}
.extra-row{display:flex;gap:10px;margin:6px 0} .extra-row input{flex:1}
.formactions{display:flex;gap:12px;justify-content:flex-end;align-items:center;margin-top:8px}
.warn{color:#b26a00;font-size:12px;background:none;padding:0} small.warn{display:block;margin-top:4px}

/* preview / result */
dl.kv{margin:0;display:grid;grid-template-columns:auto 1fr;gap:6px 16px}
dl.kv dt{color:var(--muted);font-size:13px} dl.kv dd{margin:0}
.ok-tick{color:var(--ok);font-size:15px;font-weight:600}
ul.emails{list-style:none;margin:0;padding:0} ul.emails li{padding:5px 0;font-size:14px}
table.result{width:100%;border-collapse:collapse;font-size:14px}
table.result th{text-align:left;color:var(--muted);font-weight:600;width:150px;padding:9px 10px;
  border-bottom:1px solid var(--line);vertical-align:top}
table.result td{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:top}

/* jobs list */
.card-head{display:flex;align-items:baseline;justify-content:space-between}
.searchbar{display:flex;gap:10px;align-items:center;margin-bottom:18px}
.searchbar input{flex:1;max-width:420px}
table.jobs-t{width:100%;border-collapse:collapse;font-size:14px}
table.jobs-t th{text-align:left;color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase;
  letter-spacing:.4px;padding:8px 10px;border-bottom:1px solid var(--line)}
table.jobs-t td{padding:10px;border-bottom:1px solid var(--line);vertical-align:middle}
table.jobs-t tr:last-child td{border-bottom:0}

/* status pills (this app's lifecycle) */
.st-draft{background:#eef0f3;color:#5b6675}
.st-booked{background:#e7edf3;color:#2a4d69}
.st-awaiting-post-stream{background:#fdf1e3;color:#b26a00}
.st-complete{background:#e8f6ee;color:#1f7a4d}
.st-cancelled{background:#fdecea;color:#a13228}
.st-open{background:#e7edf3;color:#2a4d69}
.st-accepted{background:#e8f6ee;color:#1f7a4d}
.st-lost{background:#fdecea;color:#a13228}
.st-sent{background:#fdf1e3;color:#b26a00}         /* collides with events 'sent' — see note above */
.st-converted{background:#e7edf3;color:#2a4d69}

/* quote package options */
.pkg-list{display:flex;flex-direction:column;gap:8px}
.pkg-opt{display:flex;align-items:flex-start;gap:10px;border:1px solid var(--line);border-radius:8px;padding:10px 12px;cursor:pointer}
.pkg-opt:hover{border-color:var(--accent)} .pkg-opt input{width:auto;margin:3px 0 0}
.pkg-body{font-size:14px;flex:1}
.pkg-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.pkg-price{font-weight:700;color:var(--brand);white-space:nowrap}
.block{display:block}
.quote-actions{justify-content:center;flex-wrap:wrap;gap:16px;margin-top:22px}
.btn-accept{display:inline-block;background:var(--accent);color:#fff;padding:12px 30px;border-radius:9px;font-size:15px;font-weight:600}
.btn-accept:hover{filter:brightness(1.08);text-decoration:none}
.btn-decline{background:#fff;color:var(--muted);border:1px solid var(--line);padding:12px 22px;border-radius:9px;cursor:pointer}
.btn-decline:hover{background:#f6f8fa;color:var(--danger);border-color:#eecfca}

/* danger / delete */
.btn-danger{display:inline-block;background:var(--danger);color:#fff;border:0;padding:9px 16px;border-radius:9px;cursor:pointer}
.btn-danger:hover{filter:brightness(.92)}
.btn-danger-outline{display:inline-block;color:var(--danger);border:1px solid #eecfca;padding:8px 15px;border-radius:9px;background:#fff}
.btn-danger-outline:hover{background:#fdf0ee;text-decoration:none}
.link-danger{color:var(--danger)}
.email-send{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.email-send input{width:auto;min-width:180px;margin:0;padding:6px 8px}
.danger-card{border-color:#f0d0cb}
.del-list{margin:6px 0 10px;padding-left:20px} .del-list li{margin:4px 0}
.confirm-form{border-top:1px solid var(--line);margin-top:14px;padding-top:16px}
.confirm-form label{font-size:14px;color:var(--ink)} .confirm-form input{max-width:320px}

/* public quote accept page (served via public_base, no sidebar) */
body.public{background:#eef2f5}
body.public main{margin-left:0}
.public-wrap{max-width:640px;margin:0 auto;padding:24px 16px 48px}
.public-logo{text-align:center;margin:8px 0 18px}
.pkg-incl{margin:6px 0 0;padding-left:18px;font-size:13px;color:var(--muted)} .pkg-incl li{margin:2px 0}
.pkg-block{border:1px solid var(--line);border-radius:8px;padding:4px 6px}
.pkg-block .pkg-opt{border:0;padding:8px}
.pkg-extras{padding:2px 12px 10px 38px} .pkg-extras .extra-row{margin:4px 0}

/* phones */
@media(max-width:640px){
  .card{overflow-x:auto}
  .dash-head{flex-direction:column;align-items:stretch;gap:10px}
  .head-actions{flex-wrap:wrap;gap:8px}
  .head-actions .btn-primary,.head-actions .btn-secondary{flex:1;text-align:center}
  .formactions{flex-wrap:wrap;justify-content:stretch;gap:8px} .formactions>*{flex:1 1 auto;text-align:center}
  .searchbar input{max-width:none}
  table.jobs-t{min-width:560px} table.result,table.users{min-width:460px}
  .reg-grid{grid-template-columns:1fr}
  .dot-pop{left:auto;right:0}
}
