/* LJA Portal Beacon: generated from crew/brand/BEACON-tokens.json, then portal overrides.
   Source of truth: https://claude.ai/artifact/4LwTe8MsTPuK3ZPjnqdSaZ  Do not hand-edit token values here. */
@import url("https://fonts.googleapis.com/css2?family=Source+Serif+4:opsz,wght@8..60,400..700&family=Source+Sans+3:wght@400..700&family=Source+Code+Pro:wght@400..600&family=Atkinson+Hyperlegible:wght@400;700&display=swap");
:root{
  --canvas:#F2F5F1;
  --surface:#FAFBF9;
  --surface-2:#E7ECE6;
  --border:#D3DAD2;
  --border-strong:#7A857F;
  --text:#1F2629;
  --text-muted:#566168;
  --focus:#3E63A3;
  --on-focus:#FAFBF9;
  --success:#2F8462;
  --success-tint:#E1F0E8;
  --success-ink:#1E5B42;
  --caution:#A87A2E;
  --caution-tint:#F4EBDA;
  --caution-ink:#74541A;
  --alert:#B04F55;
  --alert-tint:#F4E1E2;
  --alert-ink:#823238;
  --info:#7A5C9E;
  --info-tint:#EEE8F4;
  --info-ink:#57407A;
  --space-1:4px;
  --space-2:8px;
  --space-3:12px;
  --space-4:16px;
  --space-6:24px;
  --space-8:32px;
  --space-12:48px;
  --radius-sm:6px;
  --radius-md:10px;
  --radius-lg:16px;
  --radius-pill:999px;
  --measure:68ch;
  --content-max:1040px;
  --sidebar:240px;
  --tap-min:44px;
  --break-desktop:900px;
  --shadow-card:0 1px 2px #1F26290F, 0 4px 16px #1F26290D;
  --shadow-sheet:0 12px 40px #1F262926;
  --font-display:"Source Serif 4", "Iowan Old Style", "Palatino Linotype", Georgia, serif;
  --font-sans:"Source Sans 3", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
  --font-mono:"Source Code Pro", ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  --font-readable:"Atkinson Hyperlegible", -apple-system, "Segoe UI", system-ui, sans-serif;
  /* legacy Steady Signal names, kept so existing markup keeps working */
  --paper:var(--canvas);--sunk:var(--surface-2);--line:var(--border);
  --ink:var(--text);--ink-2:var(--text-muted);--ink-3:var(--text-muted);
  --plum:var(--focus);--plum-soft:var(--surface-2);
  --gold:var(--caution);--gold-soft:var(--caution-tint);--warn:var(--caution-ink);--warn-soft:var(--caution-tint);
  --good:var(--success);--good-soft:var(--success-tint);--crit:var(--alert);--crit-soft:var(--alert-tint);
  --shadow:var(--shadow-card);--display:var(--font-display);--body:var(--font-sans)
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){color-scheme:dark;
  --canvas:#141C1E;
  --surface:#1C2528;
  --surface-2:#263033;
  --border:#34403F;
  --border-strong:#727F81;
  --text:#E3E6E1;
  --text-muted:#97A2A6;
  --focus:#8FAEE0;
  --on-focus:#121A2A;
  --success:#72C29E;
  --success-tint:#1C3A2E;
  --success-ink:#94D6B6;
  --caution:#DDB672;
  --caution-tint:#3A3020;
  --caution-ink:#E8C788;
  --alert:#DE8890;
  --alert-tint:#3D2427;
  --alert-ink:#EBA3AA;
  --info:#B9A0D6;
  --info-tint:#2E2740;
  --info-ink:#CDB9E6;
  --shadow-card:0 1px 2px #00000040;
  --shadow-sheet:0 12px 40px #00000066}}
:root[data-theme="dark"]{color-scheme:dark;
  --canvas:#141C1E;
  --surface:#1C2528;
  --surface-2:#263033;
  --border:#34403F;
  --border-strong:#727F81;
  --text:#E3E6E1;
  --text-muted:#97A2A6;
  --focus:#8FAEE0;
  --on-focus:#121A2A;
  --success:#72C29E;
  --success-tint:#1C3A2E;
  --success-ink:#94D6B6;
  --caution:#DDB672;
  --caution-tint:#3A3020;
  --caution-ink:#E8C788;
  --alert:#DE8890;
  --alert-tint:#3D2427;
  --alert-ink:#EBA3AA;
  --info:#B9A0D6;
  --info-tint:#2E2740;
  --info-ink:#CDB9E6;
  --shadow-card:0 1px 2px #00000040;
  --shadow-sheet:0 12px 40px #00000066}
:root[data-type="readable"]{--font-display:var(--font-readable);--font-sans:var(--font-readable)}

/* ---------- Base ---------- */
body{background:var(--canvas);color:var(--text);font:400 16px/26px var(--font-sans);font-variant-numeric:lining-nums;font-optical-sizing:auto;font-synthesis-weight:none}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
h1,h2{font-family:var(--font-display);font-weight:600;letter-spacing:-.012em}
h1{font-size:28px;line-height:32px}
h2{font-size:22px;line-height:28px}
h3{font-family:var(--font-sans);font-weight:600;font-size:18px;line-height:24px;letter-spacing:0}
@media (max-width:600px){h1{font-size:24px;line-height:30px}}
.muted{color:var(--text-muted)}
.num,.mono-num{font-variant-numeric:tabular-nums lining-nums}
code,pre,.mono-id{font-family:var(--font-mono)}
.eyebrow,.ctl,.facts dt,.signin label{font:500 13px/18px var(--font-sans);letter-spacing:0;text-transform:none;color:var(--text-muted)}
.eyebrow{font-weight:500}
.ctl select{font-size:15px}
p,.capbox{max-width:var(--measure)}
.capbox{max-width:none}

/* ---------- Shell ---------- */
.top{background:var(--canvas);border-bottom:1px solid var(--border)}
.mono{background:var(--focus);color:var(--on-focus);border-radius:var(--radius-md);font:600 14px/1 var(--font-display);letter-spacing:.01em}
.mark b{font:600 16px/20px var(--font-display)}
.mark small{font:400 12px/16px var(--font-sans);color:var(--text-muted)}
.tabs{background:var(--surface);border-top:1px solid var(--border)}
.tab{font:500 12px/16px var(--font-sans);color:var(--text-muted);min-height:var(--tap-min)}
.tab[aria-current="page"]{color:var(--focus);font-weight:600}
.tab .dot,.side .count{background:var(--alert);color:var(--on-focus);font:600 12px/18px var(--font-sans);height:18px;min-width:18px}
@media (min-width:900px){
  .side{background:var(--surface);border-right:1px solid var(--border)}
  .side button{color:var(--text-muted);font:500 15px/22px var(--font-sans);min-height:var(--tap-min)}
  .side button[aria-current="page"]{background:var(--surface-2);color:var(--text);font-weight:600}
  .side button[aria-current="page"] svg{color:var(--focus)}
  .side .foot{font:400 12px/16px var(--font-sans);color:var(--text-muted)}
}

/* ---------- Cards, buttons, inputs ---------- */
.card,.cut{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:var(--space-4)}
.btn{border:1px solid var(--border-strong);background:var(--surface);color:var(--text);border-radius:var(--radius-md);font:600 15px/1 var(--font-sans);min-height:var(--tap-min);padding:0 var(--space-4)}
.btn:hover{background:var(--surface-2)}
.btn.primary{background:var(--focus);border-color:var(--focus);color:var(--on-focus)}
.btn.primary:hover{background:var(--focus);filter:brightness(1.08)}
.btn.good{background:var(--success-ink);border-color:var(--success-ink);color:var(--surface)}
.btn.ghost{background:transparent;border-color:transparent;color:var(--focus)}
.btn.small{min-height:32px;padding:0 var(--space-3);font-size:14px;border-radius:var(--radius-sm)}
.btn:disabled,.btn[aria-disabled="true"]{background:var(--surface-2);border-color:var(--border);color:var(--text-muted);opacity:1;filter:none}
textarea,input[type=text],input[type=email],input[type=password],select,.signin input{border:1px solid var(--border-strong);background:var(--surface);color:var(--text);border-radius:var(--radius-sm);font:400 15px/22px var(--font-sans);min-height:var(--tap-min)}
textarea::placeholder,input::placeholder{color:var(--text-muted);opacity:1}
textarea:focus,input:focus,select:focus{outline:2px solid var(--focus);outline-offset:1px;border-color:var(--focus)}
@media (max-width:600px){textarea,input,select{font-size:16px}}
.linkish{color:var(--focus);font-weight:600}
.segs button,.roleseg button{border-color:var(--border);font:500 14px/20px var(--font-sans);color:var(--text-muted)}
.segs button[aria-pressed="true"],.roleseg button[aria-pressed="true"]{background:var(--focus);color:var(--on-focus);border-color:var(--focus)}
.roleseg{border-color:var(--border-strong);border-radius:var(--radius-pill)}
.sheet .card{border-radius:var(--radius-lg);box-shadow:var(--shadow-sheet)}
.act input,input[type=checkbox]{accent-color:var(--focus)}

/* ---------- Status pills: every status is a dot plus a word, ink on tint ---------- */
.pill{font:500 13px/18px var(--font-sans);min-height:24px;padding:0 10px;border-radius:var(--radius-pill);background:var(--surface-2);color:var(--text-muted)}
.s-filming,.s-editing,.neutral{background:var(--surface-2);color:var(--text-muted)}
.s-editing{color:var(--text)}
.s-review,.warn{background:var(--caution-tint);color:var(--caution-ink)}
.s-approved,.s-scheduled,.s-info{background:var(--info-tint);color:var(--info-ink)}
.s-live,.s-ok,.ok{background:var(--success-tint);color:var(--success-ink)}
.s-live::before{background:currentColor}
.s-changes,.bad{background:var(--alert-tint);color:var(--alert-ink)}
.s-retired{background:var(--surface-2);color:var(--text-muted)}
.rule .tag{font:500 12px/16px var(--font-sans);background:var(--surface-2);color:var(--text-muted);border-radius:var(--radius-sm)}
.rule .tag.auto{background:var(--success-tint);color:var(--success-ink)}
.rule .tag.pend{background:var(--caution-tint);color:var(--caution-ink)}
.who-tag{font:500 12px/16px var(--font-sans);background:var(--caution-tint);color:var(--caution-ink);border-radius:var(--radius-sm)}
.grade.g-good{background:var(--success-tint);color:var(--success-ink);border-color:var(--success)}
.grade.g-mid{background:var(--caution-tint);color:var(--caution-ink);border-color:var(--caution)}
.grade.g-low{background:var(--alert-tint);color:var(--alert-ink);border-color:var(--alert)}
.grade b{font-family:var(--font-sans);font-weight:600;font-variant-numeric:tabular-nums}
.note{background:var(--alert-tint);color:var(--alert-ink);border-left-color:var(--alert)}
.note.good{background:var(--success-tint);color:var(--success-ink)}
.note.bad{background:var(--alert-tint);color:var(--alert-ink)}
.alert{border-color:var(--caution);background:var(--caution-tint);color:var(--caution-ink);border-radius:var(--radius-md)}
.alert h2{color:var(--caution-ink)}
.ok{font-weight:600}
.duesoon{color:var(--alert-ink)}
.ttag{font:600 12px/16px var(--font-sans);letter-spacing:.06em;color:var(--focus)}

/* ---------- Numbers are sans, tabular ---------- */
.stat .v,.invsum .num,.goal .big,.stat b{font:600 32px/1 var(--font-sans);letter-spacing:-.01em;font-variant-numeric:tabular-nums lining-nums}
.stat .d{font:500 14px/20px var(--font-sans);color:var(--success-ink)}
.day .dt{font:600 18px/22px var(--font-sans);font-variant-numeric:tabular-nums}
.day .dt small{font:600 12px/16px var(--font-sans);letter-spacing:.06em;color:var(--text-muted)}
.gt{font:400 15px/22px var(--font-sans);font-variant-numeric:tabular-nums}
.gt th{font:600 12px/16px var(--font-sans);letter-spacing:.06em;color:var(--text-muted)}
.gt th,.gt td{border-top-color:var(--border)}

/* ---------- Small text floor is 12px ---------- */
.plat span,.chain .st,.dur,.counts span,.ev .when,.tip,.ftip,.small{font-size:12px;line-height:16px}
.plat span,.counts span{border-color:var(--border);color:var(--text-muted);border-radius:var(--radius-sm)}
.item .m,.nextstep,.who{font-size:14px;line-height:20px;color:var(--text-muted)}

/* ---------- Progress, chains, charts ---------- */
.prog,.bar .track,.chain .st i,.mini i{background:var(--surface-2)}
.prog b{background:var(--focus)}
.bar .fill{background:var(--focus)}
.chain .st.done i,.mini i.done{background:var(--success)}
.chain .st.cur i,.mini i.cur{background:var(--focus)}
.chain .st.cur{color:var(--text);font-weight:600}
.ev::before{border-color:var(--focus)}
.ev.win::before{background:var(--success);border-color:var(--success)}

/* ---------- Brand moments ---------- */
.mission{background:var(--focus);border-color:var(--focus);color:var(--on-focus)}
.mission .eyebrow{color:var(--on-focus);opacity:.85}
.mtext{font:500 30px/36px var(--font-display);letter-spacing:-.012em}
@media (min-width:600px){.mtext{font-size:36px;line-height:40px}}
.thumb{background:linear-gradient(160deg,var(--focus) 0%,var(--info) 140%)}
.vert{background:linear-gradient(165deg,var(--focus),#1F2629 75%);border-radius:var(--radius-lg)}
.horz{background:linear-gradient(120deg,#1F2629,var(--focus) 75%);border-radius:var(--radius-md)}
.vert .cap{font-family:var(--font-display);font-weight:600}
.play::after{border-left-color:var(--focus)}
.play.small{background:var(--focus)}
.play.small::after{border-left-color:var(--on-focus)}
.mic{background:var(--surface-2);color:var(--focus);font-family:var(--font-display);border-radius:var(--radius-md)}
.tipbox{background:var(--info-tint);color:var(--info-ink);border-radius:var(--radius-md)}
.agencynote{background:var(--surface-2);color:var(--text);border:1px solid var(--border)}
.folder,.folder::before{background:var(--caution-tint);border-color:var(--caution)}
.capbox,.recbar,pre.json{background:var(--surface-2);border-radius:var(--radius-md)}
pre.json{font:400 13px/18px var(--font-mono)}
.empty{border-color:var(--border-strong);color:var(--text-muted);border-radius:var(--radius-md)}
.cut.is-approved{border-color:var(--info)}
.cut.is-changes{border-color:var(--alert)}
.chip.due{border-color:var(--alert)!important;color:var(--alert-ink)}
.gatecard{font-family:var(--font-sans);color:var(--text-muted)}

/* Agency footer line */
.lja-legal{font:400 12px/16px var(--font-sans);color:var(--text-muted)}

@media (prefers-reduced-motion:reduce){.view{animation:none!important}}
.stats .stat b{font-size:24px;line-height:28px}

/* ---------- Calendar and engine views ---------- */
.cal .dow{font:600 12px/16px var(--font-sans);letter-spacing:.06em;color:var(--text-muted)}
.cell{font-size:12px;line-height:16px;border-color:var(--border);border-radius:var(--radius-sm);background:var(--surface)}
@media (min-width:900px){.cell{font-size:12px}}
.cell.today{border-color:var(--focus);box-shadow:inset 0 0 0 1px var(--focus)}
.legend{font:400 13px/18px var(--font-sans);color:var(--text-muted)}
.bell .dot{background:var(--alert);color:var(--on-focus);font:600 12px/18px var(--font-sans)}
.cuthead .vert .cap{font-size:12px}
.nt.unread .ic{background:var(--focus)}
.nt .when{font-size:12px;color:var(--text-muted)}
.switch{background:var(--border-strong)}
.switch::after{background:var(--surface)}
.switch[aria-checked="true"]{background:var(--focus)}
.clientsel{font:600 14px/20px var(--font-sans);border-radius:var(--radius-sm)}
.livebar{background:var(--success-tint);color:var(--success-ink)}
.livebar strong{color:var(--success-ink)}
.echain .st,.chain .st{font:400 12px/16px var(--font-sans);color:var(--text-muted)}
.echain .st i,.emini i{background:var(--surface-2)}
.echain .st.done i,.emini i.done{background:var(--success)}
.echain .st.cur i,.emini i.cur{background:var(--focus)}
.echain .st.cur{color:var(--text);font-weight:600}
.pb{font:500 12px/16px var(--font-sans);border-color:var(--border);border-radius:var(--radius-sm);color:var(--text-muted);background:var(--surface)}
.pb i{background:var(--border-strong)}
.pb.sent i{background:var(--success)} .pb.scheduled i{background:var(--info)} .pb.planned i{background:var(--text-muted)}
.pb.error i,.pb.gap i{background:var(--alert)} .pb.manual i{background:var(--caution)}
.pb.gap{color:var(--alert-ink);border-color:var(--alert)}
.eflt button{border-color:var(--border);font:500 14px/20px var(--font-sans);border-radius:var(--radius-pill);color:var(--text-muted)}
.eflt button[aria-pressed="true"]{background:var(--focus);color:var(--on-focus);border-color:var(--focus)}
.erow .dt{font:600 18px/22px var(--font-sans);font-variant-numeric:tabular-nums}
.erow .dt small{font:600 12px/16px var(--font-sans);letter-spacing:.06em;color:var(--text-muted)}
.erow .t{font-weight:600}
.erow .m{font-size:14px;line-height:20px;color:var(--text-muted)}
.erow.is-trial .dt{color:var(--info-ink)}
.chip.trial{border:1px dashed var(--info)!important;color:var(--info-ink)!important}
.chip.hold{background:var(--alert-tint)!important;color:var(--alert-ink)!important}
.room .sec{border-top-color:var(--border)}
.fld{background:var(--surface-2);border-radius:var(--radius-md)}
.gate{border-color:var(--caution);background:var(--caution-tint);color:var(--caution-ink);border-radius:var(--radius-md)}
.gate.client{border-color:var(--caution);background:var(--caution-tint)}
.gate .chk.no{color:var(--alert-ink)}
.inl label,.lbl,.ident label{font:500 13px/18px var(--font-sans);letter-spacing:0;text-transform:none;color:var(--text)}
.lbl textarea,.lbl input,.inl label input,.inl label select,.ident input{font:400 15px/22px var(--font-sans);color:var(--text)}
input[type=number],input[type=url],input[type=date]{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);min-height:var(--tap-min)}
.ptable{font:400 15px/22px var(--font-sans);font-variant-numeric:tabular-nums}
.ptable th{font:600 12px/16px var(--font-sans);letter-spacing:.06em;color:var(--text-muted)}
.ptable th,.ptable td{border-top-color:var(--border)}
.ptable td.id,.mono-id{font:400 13px/18px var(--font-mono);color:var(--text-muted)}
.ptable select,.ptable input{font-size:14px;min-height:32px}
.logl{font:400 13px/18px var(--font-mono);color:var(--text-muted)}
/* banners, not left-border cards */
.flag,.note{border:1px solid var(--caution);border-left-width:1px;background:var(--caution-tint);color:var(--caution-ink);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);font-size:15px;line-height:22px}
.note{border-color:var(--alert);background:var(--alert-tint);color:var(--alert-ink)}
.flag.crit{border-color:var(--alert);background:var(--alert-tint);color:var(--alert-ink)}
.phase{border-top-color:var(--border)}
.phase .no{background:var(--surface-2);color:var(--focus);border-radius:var(--radius-sm);font:600 14px/1 var(--font-sans)}
.phase .stop{background:var(--alert-tint);color:var(--alert-ink);font:600 12px/16px var(--font-sans);letter-spacing:.04em;border-radius:var(--radius-sm)}
.ident{background:var(--surface-2);border-radius:var(--radius-md)}
.ident .btn{color:var(--on-focus)}
.rrow{border-color:var(--border);border-radius:var(--radius-md)}
.gotcha{font:400 14px/20px var(--font-sans)}
.gotcha th{font:600 12px/16px var(--font-sans);letter-spacing:.06em;color:var(--text-muted)}
.gotcha td,.gotcha th{border-top-color:var(--border)}

/* Phones: the header wraps instead of pushing the page sideways */
@media (max-width:899px){
  .top{flex-wrap:wrap;row-gap:var(--space-2)}
  .top .mark{flex:1 1 100%}
  .top .spacer{display:none}
  .topx{flex-wrap:wrap}
  .clientsel{flex:1 1 140px;max-width:none;min-height:36px}
  .top .btn.small{min-height:36px}
}
/* Mission: a calm card, the serif carries it (focus stays a small-area color) */
.mission{background:var(--surface);border-color:var(--border);color:var(--text)}
.mission .eyebrow{color:var(--text-muted);opacity:1}
/* Readability switch: pressed state reads as selected, not as a warning */
.readbtn[aria-pressed="true"]{background:var(--surface-2);color:var(--text);border-color:var(--border-strong)}
