:root{
  --us-red:#e0392b;
  --us-red-deep:#c22a1f;
  --charcoal:#58595b;
  --ink:#21242b;
  --muted:#6b7280;
  --paper:#ffffff;
  --bg:#f6f5f2;
  --line:#e7e4de;
  --confirmed:#1f7a52;
  --confirmed-bg:#e8f3ec;
  --pending:#b9821a;
  --pending-bg:#fbf2df;
  --researching:#0891b2;
  --researching-bg:#e0f2f7;
  --checking:#2563eb;
  --checking-bg:#e7effe;
  --proposed:#475569;
  --proposed-bg:#eceff2;
  --pendingconf:#0f766e;
  --pendingconf-bg:#dcefec;
  --unavailable:#64748b;
  --unavailable-bg:#eef1f5;
  --overbudget:#c2410c;
  --overbudget-bg:#fbe9df;
  --house:#6b7280;
  --house-bg:#eeeeec;
  --shadow:0 1px 2px rgba(33,36,43,.06),0 8px 24px rgba(33,36,43,.06);
  --radius:14px;
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box;}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);
  -webkit-font-smoothing:antialiased;line-height:1.5;}
a{color:var(--us-red-deep);text-decoration:none;}
a:hover{text-decoration:underline;}
button{font-family:inherit;}

header.app{background:var(--paper);border-bottom:1px solid var(--line);}
.brandbar{max-width:1120px;margin:0 auto;padding:18px 24px;
  display:flex;align-items:center;justify-content:space-between;gap:20px;}
.unidos-mark{font-weight:900;font-size:30px;letter-spacing:-1px;line-height:1;text-decoration:none;}
.unidos-mark .u{color:var(--us-red);}
.unidos-mark .s{color:var(--charcoal);}
/* min-width:0 is load-bearing — as a flex item .ym-block defaults to min-content
   width and refuses to shrink, so the credit logo pushed the page past the
   viewport on phones (390px: page scrolled to 468). */
.ym-block{display:flex;align-items:center;gap:9px;color:var(--charcoal);min-width:0;flex-shrink:1;}
.ym-block .by{font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);}
.ym-logo{height:20px;width:auto;display:block;max-width:100%;}
.ym-logo path,.ym-logo polygon{fill:var(--charcoal);}

.titlewrap{max-width:1120px;margin:0 auto;padding:26px 24px 0;
  display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap;}
.kicker{color:var(--us-red);font-weight:700;font-size:12.5px;letter-spacing:.16em;
  text-transform:uppercase;margin:0 0 6px;}
h1.page{font-size:30px;margin:0 0 4px;letter-spacing:-.4px;}
.sub{color:var(--muted);font-size:15px;margin:0;}
.title-actions{display:flex;gap:10px;align-items:center;}

.banner{background:var(--confirmed-bg);color:var(--confirmed);font-size:13px;font-weight:600;
  text-align:center;padding:8px 16px;}

/* The tab row is a no-wrap flex row; on a phone it scrolls inside itself
   rather than dragging the whole page sideways. */
nav.tabs{max-width:1120px;margin:22px auto 0;padding:0 24px;
  display:flex;gap:4px;border-bottom:1px solid var(--line);
  overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;}
nav.tabs::-webkit-scrollbar{display:none;}
nav.tabs a{font-size:15px;font-weight:600;color:var(--muted);white-space:nowrap;
  padding:12px 16px;border-bottom:3px solid transparent;margin-bottom:-1px;text-decoration:none;}
nav.tabs a:hover{color:var(--ink);text-decoration:none;}
nav.tabs a.active{color:var(--us-red);border-bottom-color:var(--us-red);}

main{max-width:1120px;margin:0 auto;padding:30px 24px 60px;}

.pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;
  padding:4px 10px;border-radius:999px;letter-spacing:.02em;white-space:nowrap;}
.pill.confirmed{background:var(--confirmed-bg);color:var(--confirmed);}
.pill.pending{background:var(--pending-bg);color:var(--pending);}
.pill.researching{background:var(--researching-bg);color:var(--researching);}
.pill.checking{background:var(--checking-bg);color:var(--checking);}
.pill.proposed{background:var(--proposed-bg);color:var(--proposed);}
.pill.pendingconf{background:var(--pendingconf-bg);color:var(--pendingconf);}
.pill.unavailable{background:var(--unavailable-bg);color:var(--unavailable);}
.pill.overbudget{background:var(--overbudget-bg);color:var(--overbudget);}
.pill.house{background:var(--house-bg);color:var(--house);}
.dot{width:7px;height:7px;border-radius:50%;background:currentColor;}
/* Status marker over an artist photo */
.photo-badge{position:absolute;top:10px;left:10px;z-index:2;
  box-shadow:0 1px 4px rgba(0,0,0,.28);border:1px solid rgba(255,255,255,.55);}

.chips{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 24px;}
.chip{background:var(--paper);border:1px solid var(--line);border-radius:999px;
  padding:8px 14px;font-size:13px;font-weight:600;color:var(--charcoal);box-shadow:var(--shadow);}
.chip b{color:var(--ink);}

.days{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;align-items:start;}
.day h2{font-size:13px;text-transform:uppercase;letter-spacing:.12em;color:var(--charcoal);
  margin:0 0 12px;padding-bottom:8px;border-bottom:2px solid var(--line);}
.day h2 span{color:var(--muted);font-weight:600;letter-spacing:0;text-transform:none;}
.evt{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  padding:16px;margin-bottom:14px;box-shadow:var(--shadow);}
.evt .time{font-size:12px;font-weight:700;color:var(--us-red);letter-spacing:.02em;}
.evt .name{font-size:16px;font-weight:700;margin:3px 0 2px;}
.evt .room{font-size:12.5px;color:var(--muted);margin:0 0 10px;}
.evt .acts{border-top:1px dashed var(--line);padding-top:10px;display:flex;
  flex-direction:column;gap:9px;}
.act{display:block;}
.act-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;}
.act .who{font-size:14px;font-weight:600;}
.act .meta{font-size:12px;color:var(--muted);margin-top:1px;}
.act.tbd .who{color:var(--muted);font-style:italic;font-weight:500;}
.act .pill{margin-top:7px;}
.act .right{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.editbtn{appearance:none;border:1px solid var(--line);background:var(--paper);color:var(--muted);
  border-radius:8px;width:26px;height:26px;cursor:pointer;font-size:13px;line-height:1;
  display:none;align-items:center;justify-content:center;}
.editbtn:hover{color:var(--ink);border-color:var(--charcoal);}
.staff .editbtn{display:inline-flex;}
.addact{display:none;margin-top:10px;font-size:12.5px;font-weight:600;color:var(--us-red-deep);
  background:none;border:0;cursor:pointer;padding:0;}
.staff .addact{display:inline-block;}

.artist-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;}
.artist{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  overflow:hidden;box-shadow:var(--shadow);display:flex;flex-direction:column;}
.photo{aspect-ratio:16/9;background:linear-gradient(135deg,#ececea,#dedbd4);
  display:flex;align-items:center;justify-content:center;position:relative;
  background-size:cover;background-position:center;}
.photo .mono{font-size:40px;font-weight:900;color:#bdb8ad;letter-spacing:-1px;}
.photo .ph-note{position:absolute;bottom:8px;right:10px;font-size:10.5px;
  color:#9a958a;letter-spacing:.06em;text-transform:uppercase;}
.artist .body{padding:18px;display:flex;flex-direction:column;gap:8px;flex:1;}
.artist .aname{font-size:19px;font-weight:800;margin:0;letter-spacing:-.2px;}
.artist .role{font-size:13px;color:var(--us-red-deep);font-weight:600;margin:0;}
.artist .bio{font-size:13.5px;color:#41454d;margin:2px 0 0;}
.artist .foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;
  gap:10px;padding-top:12px;border-top:1px solid var(--line);}
.artist .slot{font-size:12px;color:var(--muted);}
.artist .slot b{color:var(--ink);}
.afee{font-weight:800;color:var(--ink);font-size:15px;}
.afee.tbd{font-weight:600;font-style:italic;color:var(--muted);font-size:13px;}
.aslot{display:block;font-size:12px;color:var(--muted);margin-top:2px;}
.links{display:flex;gap:14px;font-size:13px;font-weight:600;}

.budget-head{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:0 0 24px;}
.stat{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  padding:16px 18px;box-shadow:var(--shadow);}
.stat .lbl{font-size:11.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);}
.stat .val{font-size:24px;font-weight:800;margin-top:4px;letter-spacing:-.5px;}
.stat .val.red{color:var(--us-red);}
.stat .val.green{color:var(--confirmed);}
.stat .val.set{cursor:pointer;}
.stat .val.set:hover{color:var(--us-red-deep);}
.table-wrap{overflow-x:auto;}
table.budget{width:100%;border-collapse:collapse;background:var(--paper);
  border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);}
table.budget th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.08em;
  color:var(--muted);padding:13px 18px;border-bottom:1px solid var(--line);background:#fafaf8;}
table.budget td{padding:14px 18px;border-bottom:1px solid var(--line);font-size:14px;vertical-align:top;}
table.budget tr:last-child td{border-bottom:0;}
table.budget .ev{font-weight:600;}
table.budget .day{font-size:12px;color:var(--muted);font-weight:500;}
table.budget .fee{font-weight:700;text-align:right;white-space:nowrap;}
table.budget .fee.tbd{color:var(--muted);font-weight:500;font-style:italic;}
tr.total td{background:#fafaf8;font-weight:800;font-size:15px;}
tr.total .fee{color:var(--us-red);}

/* Post-event actuals (staff only) */
.budget-head.actuals{grid-template-columns:repeat(3,1fr);}
.stat .sub{font-size:12px;color:var(--muted);margin-top:3px;}
.stat .val .of{font-size:15px;color:var(--muted);font-weight:600;}
table.budget td.act{text-align:right;padding:9px 10px;}
table.budget td.rc{text-align:center;}
.actual-in{width:104px;padding:6px 9px;text-align:right;font:inherit;font-size:14px;
  font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink);
  background:#fcfbf9;border:1px dashed #cfcabf;border-radius:8px;}
.actual-in:hover{border-color:var(--charcoal);}
.actual-in:focus{outline:none;background:var(--paper);border-style:solid;
  border-color:var(--us-red);box-shadow:0 0 0 3px rgba(224,57,43,.14);}
.actual-in::placeholder{color:var(--muted);font-weight:500;}
/* Final accounting & invoice (staff only, printable) */
.inv-warn{background:var(--pending-bg);border:1px solid #e8d5a8;color:#7a5510;
  border-radius:var(--radius);padding:14px 18px;margin:0 0 22px;font-size:13.5px;}
.inv-warn .inv-pending{display:block;margin-top:5px;color:var(--pending);font-weight:600;}
.invoice{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:34px 36px;}
.inv-head{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;
  border-bottom:2px solid var(--ink);padding-bottom:16px;margin-bottom:22px;}
.inv-from{font-weight:900;font-size:19px;letter-spacing:-.3px;}
.inv-meta{font-size:12.5px;color:var(--muted);margin-top:3px;}
.inv-right{text-align:right;}
.inv-doc{font-size:12px;text-transform:uppercase;letter-spacing:.16em;color:var(--muted);}
.inv-no{font-weight:800;font-size:15px;margin-top:3px;font-variant-numeric:tabular-nums;}
.inv-to{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:28px;font-size:13.5px;}
.inv-lbl{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.12em;
  color:var(--muted);margin-bottom:3px;}
.inv-h{font-size:13px;text-transform:uppercase;letter-spacing:.1em;color:var(--charcoal);
  margin:30px 0 12px;padding-bottom:7px;border-bottom:1px solid var(--line);}
.inv-table td,.inv-table th{padding:10px 14px;font-size:13.5px;}
.inv-table tr.item td{padding:4px 14px;font-size:12.5px;color:var(--charcoal);background:#fbfaf8;}
.inv-table tr.item .fee{font-weight:600;}
.inv-table{box-shadow:none;}
.inv-table .fee.under{color:var(--confirmed);}
.inv-table .fee.over{color:var(--overbudget);}
.setline{font-size:11px;color:var(--us-red-deep);cursor:pointer;margin-left:7px;}
.setline:hover{text-decoration:underline;}
.inv-receipts{margin-top:28px;padding-top:18px;border-top:1px solid var(--line);font-size:13.5px;}
.inv-receipts a{word-break:break-all;}
.inv-receipts .btn{margin-left:10px;}
.inv-note{font-size:12.5px;color:var(--muted);margin:10px 2px 0;max-width:80ch;}
@media print{
  header.app,nav.tabs,.titlewrap,footer.app,.noprint,.setline,.inv-receipts .btn{display:none!important;}
  body{background:#fff;}
  .invoice{border:0;box-shadow:none;padding:0;}
  .inv-warn{border:1px solid #999;}
}

/* Itemised expenses — child rows under a budget line */
table.budget tr.item td{border-bottom:0;padding-top:3px;padding-bottom:3px;background:#fcfbf9;}
table.budget tr.item + tr:not(.item) td{border-top:1px solid var(--line);}
.i-label{font-size:13px;color:var(--charcoal);}
.i-dash{color:#c9c4ba;margin-right:7px;}
.i-name{outline:none;border-bottom:1px dashed transparent;padding:1px 2px;cursor:text;}
.i-name:hover,.i-name:focus{border-bottom-color:var(--line);}
.item-in{width:104px;padding:4px 9px;text-align:right;font:inherit;font-size:13px;
  font-variant-numeric:tabular-nums;color:var(--charcoal);background:transparent;
  border:1px dashed transparent;border-radius:7px;}
.item-in:hover{border-color:#cfcabf;background:var(--paper);}
.item-in:focus{outline:none;background:var(--paper);border-style:solid;
  border-color:var(--us-red);box-shadow:0 0 0 3px rgba(224,57,43,.14);}
.i-del{appearance:none;border:0;background:none;color:#c9c4ba;font-size:16px;line-height:1;
  cursor:pointer;padding:2px 6px;border-radius:6px;}
.i-del:hover{color:var(--us-red);background:var(--overbudget-bg);}
.i-add{appearance:none;border:0;background:none;font-family:inherit;font-size:11.5px;
  font-weight:600;color:#b3ada1;cursor:pointer;padding:2px 0 2px 20px;}
.i-add:hover{color:var(--us-red-deep);}
.actual-in.derived{border-style:solid;border-color:var(--line);background:#f4f2ee;
  color:var(--charcoal);cursor:default;}

/* Attachment A structure: section headers, subtotals, the two grand totals. */
table.budget tr.sect td{background:#f4f2ee;font-size:11.5px;text-transform:uppercase;
  letter-spacing:.09em;color:var(--charcoal);font-weight:800;padding:10px 16px;}
table.budget tr.sect.outside td{background:var(--pending-bg);color:var(--pending);}
table.budget tr.subtotal td{background:#f1efea;font-weight:800;font-size:13.5px;
  color:var(--ink);border-top:2px solid var(--line);}
table.budget tr.total.grand td{border-top:2px solid var(--ink);font-size:16px;}

/* .rc-box reuses the advance grid's .cell — same three glyphs, same cycling. */
.rc-box{width:30px;height:30px;}
.rc-none{color:var(--muted);}
.note{font-size:12.5px;color:var(--muted);margin:16px 2px 0;}

/* Run of Show */
.ros-legend{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 6px;}
.ros-legend .tag{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;
  padding:3px 9px;border-radius:999px;letter-spacing:.02em;white-space:nowrap;}
.tag .dot{width:6px;height:6px;border-radius:50%;background:currentColor;}
.tag.loadin{background:var(--pending-bg);color:var(--pending);}
.tag.check{background:var(--checking-bg);color:var(--checking);}
.tag.call{background:var(--pendingconf-bg);color:var(--pendingconf);}
.tag.perf{background:var(--confirmed-bg);color:var(--confirmed);}
.tag.prog{background:var(--proposed-bg);color:var(--proposed);}
.tag.break{background:var(--house-bg);color:var(--house);}
.tag.strike{background:var(--overbudget-bg);color:var(--overbudget);}
/* Stage-view toggle */
.viewbar{display:flex;align-items:center;gap:12px;margin:0 0 16px;flex-wrap:wrap;}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;background:var(--paper);}
.seg button{appearance:none;border:0;background:none;font-family:inherit;font-size:12.5px;font-weight:600;
  color:var(--muted);padding:7px 15px;cursor:pointer;}
.seg button.on{background:var(--us-red);color:#fff;}
.viewnote{font-size:11.5px;color:var(--muted);}

.ros-day{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);margin:0 0 20px;overflow:hidden;}
.ros-day .day-head{padding:16px 20px;border-bottom:1px solid var(--line);
  display:flex;align-items:flex-start;justify-content:space-between;gap:12px;}
.ros-day .day-head h2{font-size:15px;margin:0;letter-spacing:-.2px;}
.ros-day .day-head .dmeta{font-size:12px;color:var(--muted);margin:3px 0 0;}
.ros-day .day-head .dmeta b{color:var(--us-red-deep);font-weight:700;}
.ros-day .addros{display:none;flex-shrink:0;font-size:12.5px;padding:6px 12px;}
.staff .ros-day .addros{display:inline-block;}

/* Dead-simple list: time · phase · what. Red is the only accent, only on the music. */
.ros-list .row{display:flex;align-items:baseline;padding:10px 20px;border-bottom:1px solid var(--line);}
.ros-list .row:last-child{border-bottom:0;}
.ros-list .row .t{width:80px;flex:none;font-size:13px;font-weight:700;color:var(--charcoal);
  font-variant-numeric:tabular-nums;}
.ros-list .row .ph{width:104px;flex:none;font-size:10.5px;font-weight:700;letter-spacing:.09em;
  text-transform:uppercase;color:#9a958a;}
.ros-list .row .d .ti{font-size:14px;color:var(--ink);}
.ros-list .row .d .ti b{font-weight:700;}
.ros-list .row .d .sub{font-size:12px;color:var(--muted);margin-top:2px;}
.ros-list .row.perf{background:#fdf5f4;}
.ros-list .row.perf .t,.ros-list .row.perf .ph,
.ros-list .row.perf .d .ti,.ros-list .row.perf .d .ti b{color:var(--us-red-deep);}

/* Stage view hides call & arrival rows (data stays for artist advances). */
#ros-wrap.stage-only .row[data-phase="call"],
#ros-wrap.stage-only .row[data-phase="arrival"]{display:none;}

.staff .ros-list .row.editable{cursor:pointer;}
.staff .ros-list .row.editable:hover{background:#f4f2ee;}
.staff .ros-list .row.perf.editable:hover{background:#f8ecea;}
.field .hintlbl{text-transform:none;letter-spacing:0;font-weight:500;color:var(--muted);}

/* --- Unidos ROS tab: UnidosUS official show-caller rundowns (read-only) --- */
#unidos-wrap[hidden]{display:none;}
.unidos-note{font-size:12px;color:var(--muted);margin:0 0 16px;line-height:1.5;}
.unidos-note b{color:var(--charcoal);font-weight:700;}
.uday-label{font-size:12.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;
  color:var(--charcoal);margin:4px 2px 12px;}
.uevent .day-head{display:block;}
.uevent .day-head h2{font-size:14px;}
.uevent .day-head .dmeta b{color:var(--us-red-deep);}
.utable-wrap{overflow-x:auto;}
.utable{width:100%;border-collapse:collapse;font-size:12.5px;}
.utable th{text-align:left;font-size:9.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;
  color:var(--muted);padding:7px 12px;border-bottom:1px solid var(--line);background:#faf9f7;white-space:nowrap;}
.utable td{padding:8px 12px;border-bottom:1px solid var(--line);vertical-align:top;}
.utable tbody tr:last-child td{border-bottom:0;}
.utable .unum{width:26px;color:#9a958a;font-variant-numeric:tabular-nums;font-size:11px;}
.utable .ubegin,.utable .udur,.utable .uend{width:78px;white-space:nowrap;
  font-variant-numeric:tabular-nums;color:var(--charcoal);font-size:11.5px;}
.utable .unotes{width:130px;color:var(--muted);font-size:11px;}
.utable .uti{font-weight:600;color:var(--ink);line-height:1.3;}
.utable .usub{font-size:11px;color:var(--muted);margin-top:3px;white-space:pre-line;line-height:1.4;}
.utable tr.usection td{background:var(--charcoal);color:#fff;font-size:9.5px;font-weight:800;
  letter-spacing:.14em;text-transform:uppercase;padding:4px 12px;}
.utable tr.music{background:#fdf5f4;}
.utable tr.music .uti,.utable tr.music .ubegin,
.utable tr.music .udur,.utable tr.music .uend{color:var(--us-red-deep);}

/* --- Advance tracker (staff only): artists down, advance steps across --- */
.adv-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;
  flex-wrap:wrap;margin:0 0 16px;}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--muted);}
.legend span{display:inline-flex;align-items:center;gap:7px;}
.key{width:20px;height:20px;border-radius:6px;border:1px solid var(--line);background:var(--paper);}
.key.done{background:var(--confirmed-bg);border-color:#bfdccb;}
.key.wait{background:var(--pending-bg);border-color:#e8d5a8;}
.key.na{background:var(--house-bg);border-color:#dcdad4;}
.progress{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums;}
.progress b{color:var(--ink);font-weight:800;}

.adv-wrap{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);overflow-x:auto;}
table.adv{width:100%;border-collapse:collapse;}
table.adv th{font-size:10.5px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;
  color:var(--muted);padding:12px 10px;background:#faf9f7;border-bottom:1px solid var(--line);
  text-align:center;}
table.adv th.who{text-align:left;padding-left:20px;min-width:250px;position:sticky;left:0;
  background:#faf9f7;z-index:2;}
table.adv th.noteh{text-align:left;padding-left:14px;}
table.adv td{padding:10px;border-bottom:1px solid var(--line);text-align:center;vertical-align:middle;}
table.adv td.who{text-align:left;padding-left:20px;position:sticky;left:0;background:var(--paper);z-index:1;}
table.adv tbody tr:last-child td{border-bottom:0;}
table.adv tbody tr:hover td,table.adv tbody tr:hover td.who{background:#fbfaf8;}
table.adv tr.daybreak td,table.adv tr.daybreak td.who{background:var(--charcoal);color:#fff;
  font-size:9.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;
  padding:5px 20px;text-align:left;}
.pname{appearance:none;border:0;background:none;padding:0;cursor:pointer;text-align:left;
  font-family:inherit;display:block;}
.pname .aname{display:block;font-size:14.5px;font-weight:700;letter-spacing:-.1px;color:var(--ink);}
.pname .arole{display:block;font-size:11.5px;color:var(--muted);margin-top:1px;}
.pname:hover .aname{color:var(--us-red-deep);}
.guest{font-size:9.5px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;
  color:var(--charcoal);background:var(--house-bg);border-radius:999px;padding:1px 7px;
  margin-left:6px;vertical-align:1px;}
.cell{appearance:none;font-family:inherit;cursor:pointer;width:34px;height:34px;border-radius:9px;
  border:1px solid var(--line);background:var(--paper);color:#cdc8be;font-size:14px;font-weight:800;
  display:inline-flex;align-items:center;justify-content:center;}
.cell:hover{border-color:var(--charcoal);}
.cell:focus-visible{outline:2px solid var(--us-red);outline-offset:2px;}
.cell[data-s="done"]{background:var(--confirmed-bg);border-color:#bfdccb;color:var(--confirmed);}
.cell[data-s="wait"]{background:var(--pending-bg);border-color:#e8d5a8;color:var(--pending);}
.cell[data-s="na"]{background:var(--house-bg);border-color:#dcdad4;color:var(--house);}
td.note{text-align:left;min-width:190px;}
td.note .n{font-size:12px;color:var(--muted);cursor:text;padding:4px 6px;border-radius:7px;
  border:1px dashed transparent;min-height:24px;}
td.note .n:hover{border-color:var(--line);}
td.note .n:focus{outline:0;border-color:var(--charcoal);border-style:solid;background:#fff;}
td.note .n:empty::before{content:"add note";color:#c9c4ba;font-style:italic;}
.adv-foot{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:16px 2px 0;}

footer.app{border-top:1px solid var(--line);margin-top:30px;}
.footrow{max-width:1120px;margin:0 auto;padding:18px 24px;display:flex;
  align-items:center;justify-content:space-between;color:var(--muted);font-size:12.5px;}
.ver{font-variant-numeric:tabular-nums;}
.footrow a{color:var(--muted);}

/* Buttons */
.btn{appearance:none;border:1px solid var(--line);background:var(--paper);color:var(--ink);
  border-radius:9px;padding:8px 14px;font-size:13.5px;font-weight:600;cursor:pointer;}
.btn:hover{border-color:var(--charcoal);}
.btn.primary{background:var(--us-red);border-color:var(--us-red);color:#fff;}
.btn.primary:hover{background:var(--us-red-deep);border-color:var(--us-red-deep);}
.btn.danger{color:var(--us-red-deep);border-color:#eccfcb;}

/* Modal */
.modal-bg{position:fixed;inset:0;background:rgba(33,36,43,.45);display:none;
  align-items:flex-start;justify-content:center;padding:40px 16px;z-index:50;overflow:auto;}
.modal-bg.open{display:flex;}
.modal{background:var(--paper);border-radius:var(--radius);width:100%;max-width:560px;
  box-shadow:0 24px 60px rgba(0,0,0,.25);}
.modal h3{margin:0;padding:20px 22px;border-bottom:1px solid var(--line);font-size:17px;}
.modal .form{padding:18px 22px;display:grid;gap:14px;}
.modal .row2{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.field label{display:block;font-size:12px;font-weight:600;color:var(--muted);
  text-transform:uppercase;letter-spacing:.05em;margin-bottom:5px;}
.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);border-radius:9px;
  padding:9px 11px;font-size:14px;font-family:inherit;color:var(--ink);background:#fff;}
.field textarea{min-height:70px;resize:vertical;}
.field.check{display:flex;align-items:center;gap:8px;}
.field.check input{width:auto;}
.field.check label{margin:0;text-transform:none;letter-spacing:0;font-size:13.5px;color:var(--ink);}
.modal .actions{display:flex;justify-content:space-between;align-items:center;
  padding:16px 22px;border-top:1px solid var(--line);}
.modal .actions .right{display:flex;gap:10px;}

/* Login */
.login-wrap{min-height:70vh;display:flex;align-items:center;justify-content:center;padding:24px;}
.login-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);width:100%;max-width:380px;padding:30px;text-align:center;}
.login-card .unidos-mark{font-size:34px;display:inline-block;margin-bottom:6px;}
.login-card p{color:var(--muted);font-size:14px;margin:0 0 22px;}
.login-card input{width:100%;border:1px solid var(--line);border-radius:10px;
  padding:12px 14px;font-size:15px;margin-bottom:12px;}
.login-card .btn.primary{width:100%;padding:12px;}
.login-card .err{color:var(--us-red);font-size:13px;margin:0 0 14px;font-weight:600;}

@media(max-width:860px){
  .days,.artist-grid{grid-template-columns:1fr;}
  .budget-head{grid-template-columns:repeat(2,1fr);}
  /* .budget-head.actuals is more specific than the rule above, so it needs its
     own override here or it stays 3-up on a phone. */
  .budget-head.actuals{grid-template-columns:1fr;}
  .modal .row2{grid-template-columns:1fr;}
}
@media(max-width:560px){
  /* the logo still reads as the credit without the label */
  .ym-block .by{display:none;}
}
