:root{
  --ph-blue:#085CFF;
  --ph-magenta:#C4009F;
  --ph-pink:#FBE6F6;
  --ph-black:#050505;
  --ph-white:#FFFFFF;
  --ph-gray:#555555;
  --ph-soft:#F3F5F8;
  --ph-line:#D9DEE8;
  --ph-today:#DDF7E7;
  --ph-booked:#178447;
  --ph-selected:#3157C8;
  --ph-shortlist:#A15C00;
  --ph-pass:#B42318;
  --ph-pass-soft:#FDE8E7;
  --ph-shortlist-soft:#FFF2D6;
  --ph-selected-soft:#E9EEFF;
}

.phyllis-app{background:var(--page);color:var(--ink)}
.phyllis-app a.item.on .ic{color:var(--ph-blue);opacity:1}

.ph-content{overflow:auto;background:var(--page)}
.ph-hero{flex:0 0 auto;background:var(--page);padding:14px 22px 0;border:0}
.ph-kicker{font-size:11px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--ph-blue);margin-bottom:2px}
.ph-hero-row{display:flex;align-items:center;gap:14px}
.ph-hero h1{font-size:21px;line-height:1.2;letter-spacing:-.02em;font-weight:600}
.ph-hero-actions{margin-left:auto;display:flex;gap:8px;align-items:center}
.ph-sync{color:var(--faint);padding:0;font:500 12px/1 'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:.04em}
.ph-sub{max-width:760px;margin:6px 0 0;color:var(--muted);font-size:14.5px}

.ph-workbench{padding:16px 22px 40px;flex:0 0 auto}
.ph-command{display:grid;grid-template-columns:auto minmax(280px,1fr) auto;gap:12px;align-items:center;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-left:4px solid var(--ph-blue);padding:12px 14px;margin-bottom:14px}
.ph-command-label{font-size:11px;text-transform:uppercase;letter-spacing:.1em;font-weight:700;color:var(--muted)}
.ph-command code{font-family:'IBM Plex Mono',monospace;font-size:13px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ph-copy{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:7px;padding:7px 11px;font-weight:600;cursor:pointer}

.ph-view-switcher{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-bottom:14px}
.ph-portfolio-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border:1px solid var(--line);background:var(--surface)}
.ph-portfolio-tab{display:flex;align-items:center;justify-content:space-between;gap:12px;border:0;border-right:1px solid var(--line);background:var(--surface);color:var(--ink);padding:12px 14px;cursor:pointer;text-align:left;font-weight:700}
.ph-portfolio-tab:last-child{border-right:0}
.ph-portfolio-tab strong{display:grid;place-items:center;min-width:28px;height:24px;border-radius:999px;background:var(--ph-soft);font:700 11px/1 'IBM Plex Mono',monospace}
.ph-portfolio-tab.active{background:var(--ink);color:#fff}
.ph-portfolio-tab span{display:flex;align-items:center;gap:8px}.ph-portfolio-tab i{width:10px;height:10px;border-radius:2px;background:#858D99}.ph-portfolio-tab.pass i{background:var(--ph-pass)}.ph-portfolio-tab.shortlist i{background:var(--ph-shortlist)}.ph-portfolio-tab.selected i{background:var(--ph-selected)}.ph-portfolio-tab.booked i{background:var(--ph-booked)}
.ph-portfolio-tab.pass strong{color:var(--ph-pass)}.ph-portfolio-tab.shortlist strong{color:var(--ph-shortlist)}.ph-portfolio-tab.selected strong{color:var(--ph-selected)}.ph-portfolio-tab.booked strong{color:var(--ph-booked)}
.ph-portfolio-tab.pass.active{background:var(--ph-pass)}.ph-portfolio-tab.shortlist.active{background:var(--ph-shortlist)}.ph-portfolio-tab.selected.active{background:var(--ph-selected)}.ph-portfolio-tab.booked.active{background:var(--ph-booked)}
.ph-portfolio-tab.active i{background:#fff}.ph-portfolio-tab.active strong{background:#fff;color:var(--ink)}.ph-portfolio-tab.pass.active strong{color:var(--ph-pass)}.ph-portfolio-tab.shortlist.active strong{color:var(--ph-shortlist)}.ph-portfolio-tab.selected.active strong{color:var(--ph-selected)}.ph-portfolio-tab.booked.active strong{color:var(--ph-booked)}
.ph-portfolio-tab:focus-visible{outline:3px solid var(--ph-blue);outline-offset:2px;z-index:2}
.ph-past-tab{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:138px;border:1px solid var(--line);background:var(--surface);color:var(--ink);padding:12px 14px;font-weight:700;cursor:pointer}.ph-past-tab strong{display:grid;place-items:center;min-width:28px;height:24px;border-radius:999px;background:var(--ph-soft);font:700 11px/1 'IBM Plex Mono',monospace}.ph-past-tab.active{background:var(--ink);color:#fff}.ph-past-tab.active strong{background:#fff;color:var(--ink)}

.ph-filters{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:12px 0;display:flex;gap:8px;align-items:end;flex-wrap:wrap}
.ph-filter{display:flex;flex-direction:column;gap:4px}
.ph-filter label,.ph-filter-title{font-size:11px;letter-spacing:.1em;text-transform:uppercase;font-weight:700;color:var(--ph-gray)}
.ph-filter select,.ph-search{border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--ink);padding:7px 10px;min-height:36px}
.ph-search{min-width:250px}
.ph-overlays{display:flex;gap:4px}
.ph-chip{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:7px;padding:7px 10px;cursor:pointer;font-size:13px;font-weight:600}
.ph-chip[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:#fff}
.ph-chip.tracker[aria-pressed="true"]{background:var(--ph-magenta);border-color:var(--ph-magenta)}
.ph-chip.secure{border-style:dashed;color:var(--muted)}
.ph-chip.secure:disabled{cursor:not-allowed;opacity:.75}
.ph-chip.secure[aria-pressed="true"]{background:#626C7A;border-color:#626C7A;color:#fff}
.ph-opted-toggle{display:flex;align-items:center;gap:7px;min-height:36px;padding:0 6px;font-size:13px;font-weight:650;color:var(--muted)}
.ph-opted-toggle input{width:16px;height:16px;accent-color:var(--ph-blue)}
.ph-view-toggle{margin-left:auto;display:flex}
.ph-view-toggle button{border:1px solid var(--line);border-radius:7px 0 0 7px;background:var(--surface);padding:7px 12px;cursor:pointer}
.ph-view-toggle button+button{border-left:0}
.ph-view-toggle button+button{border-radius:0 7px 7px 0}
.ph-view-toggle .active{background:var(--ink);border-color:var(--ink);color:#fff}

.ph-legend{display:flex;gap:16px;align-items:center;padding:13px 0 8px;font-size:13px;color:var(--ph-gray)}
.ph-key{display:flex;align-items:center;gap:7px}
.ph-swatch{width:32px;height:16px;display:inline-grid;place-items:center;font-size:10px}
.ph-swatch.locked{background:var(--ph-blue);color:#fff;border:2px solid var(--ph-blue)}
.ph-swatch.proposed{background:#fff;border:2px dotted var(--ph-magenta)}
.ph-swatch.reference{background:#EEF1F5;border:1px solid #9AA3B1}
.ph-swatch.estimated{background:#fff;border:2px dashed var(--ph-gray);color:var(--ph-gray);font-weight:800}
.ph-count{margin-left:auto;font-family:'IBM Plex Mono',monospace;color:#000}

.ph-pagination{display:grid;grid-template-columns:auto auto minmax(180px,260px) auto auto 1fr;gap:8px;align-items:center;padding:8px 0 14px}
.ph-pagination label{font-size:11px;letter-spacing:.1em;text-transform:uppercase;font-weight:700;color:var(--ph-gray)}
.ph-pagination select,.ph-pagination button{min-height:36px;border:1px solid var(--line);border-radius:4px;background:var(--surface);color:var(--ink);padding:7px 10px;font-weight:650}
.ph-pagination button{cursor:pointer}
.ph-pagination button:disabled{cursor:not-allowed;color:var(--faint);background:var(--page)}
.ph-pagination h2{margin:0;text-align:right;font-size:17px;font-weight:650}
.ph-pagination h2:focus-visible{outline:3px solid var(--ph-blue);outline-offset:3px}

.ph-mini-avatar{display:inline-grid;place-items:center;flex:0 0 auto;border-radius:50%;background:var(--ink);color:#fff;font:700 10px/1 'IBM Plex Mono',monospace}

.ph-calendar{display:flex;flex-direction:column;gap:24px}
.ph-month-section{border:1px solid var(--line);border-radius:8px;overflow:auto;background:var(--surface)}
.ph-month-title{position:sticky;left:0;margin:0;padding:13px 15px;background:var(--ink);color:#fff;font-size:17px;font-weight:600;letter-spacing:-.01em}
.ph-day-head,.ph-week-row{display:grid;grid-template-columns:132px repeat(7,minmax(118px,1fr));min-width:1040px}
.ph-day-head{position:sticky;top:0;z-index:8;background:var(--surface);border-bottom:1px solid var(--line)}
.ph-day-head span{padding:8px 9px;border-left:1px solid var(--line);color:var(--muted);font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}
.ph-day-head span:first-child{border-left:0}
.ph-week-row{position:relative;grid-auto-rows:minmax(78px,auto);border-bottom:1px solid var(--line)}
.ph-week-row:last-child{border-bottom:0}
.ph-week-label{grid-column:1;z-index:3;padding:11px 12px;background:var(--surface);border-right:1px solid var(--line);display:flex;flex-direction:column;justify-content:flex-start}
.ph-week-label span{color:var(--muted);font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}
.ph-week-label strong{margin-top:3px;font:600 12px/1.3 'IBM Plex Mono',monospace}
.ph-day-cell{z-index:1;padding:8px;border-left:1px solid var(--line);background:var(--surface);color:var(--muted);display:flex;gap:5px;align-items:flex-start;font-size:10px;text-transform:uppercase}
.ph-day-cell.weekend{background:color-mix(in srgb,var(--page) 70%,var(--surface))}
.ph-day-cell.outside{color:var(--faint);background:var(--page)}
.ph-day-cell.today{background:var(--ph-today);box-shadow:inset 0 0 0 2px #74C893;color:#175B31}
.ph-day-cell.today em{margin-left:auto;font:700 9px/1 'IBM Plex Mono',monospace;text-transform:uppercase;color:#175B31}
.ph-day-cell strong{color:var(--ink);font:600 11px/1 'IBM Plex Mono',monospace}
.ph-week-event{z-index:3;align-self:start;min-width:0;margin:27px 4px 5px;padding:8px 9px;border-radius:5px;cursor:pointer;text-align:left;overflow:hidden;display:flex;flex-direction:column;gap:3px}
.ph-week-event.locked{background:var(--ph-blue);border:2px solid var(--ph-blue);color:#fff}
.ph-week-event.proposed{background:var(--surface);border:2px dotted var(--ph-magenta);color:var(--ink)}
.ph-week-event.reference{background:#EEF1F5;border:1px solid #9AA3B1;color:#27303D}
.ph-week-event.estimated{background:#fff;border:2px dashed var(--ph-gray);color:var(--ink)}
.ph-week-event.portfolio-opted-out{background:var(--ph-pass-soft);border:1px solid #E9A29D;color:#7A1B14}
.ph-week-event.portfolio-shortlisted{background:var(--ph-shortlist-soft);border:1px solid #DEB35E;color:#653900}
.ph-week-event.portfolio-selected-to-book{background:var(--ph-selected-soft);border:1px solid #8FA6EE;color:#183889}
.ph-week-event.portfolio-booked{background:var(--ph-booked);border:2px solid var(--ph-booked);color:#fff}
.ph-week-event.portfolio-booked .ph-mini-avatar{background:#fff;color:var(--ph-booked);border-color:var(--ph-booked)}
.ph-week-event:focus-visible{outline:3px solid var(--ink);outline-offset:2px}
.ph-week-event-title{font-size:12px;font-weight:750;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ph-week-event-meta{font-size:10.5px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.9}
.ph-portfolio-badge{width:max-content;max-width:100%;border:1px solid currentColor;border-radius:999px;padding:2px 6px;font:700 8px/1.2 'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:.04em}
.ph-event-people{display:flex;align-items:center;min-width:0;margin-top:2px;font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ph-event-people>span:last-child{margin-left:5px;overflow:hidden;text-overflow:ellipsis}
.ph-estimate-label{width:max-content;border:1px solid var(--ph-gray);padding:1px 4px;font:700 8px/1.3 'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:.04em}
.ph-mini-avatar{width:20px;height:20px;margin-left:-4px;border:2px solid var(--surface);font-size:7.5px}
.ph-mini-avatar:first-child{margin-left:0}
.ph-week-event.locked .ph-mini-avatar{background:#fff;color:var(--ph-blue);border-color:var(--ph-blue)}
.ph-week-event.portfolio-booked .ph-mini-avatar{background:#fff;color:var(--ph-booked);border-color:var(--ph-booked)}
.ph-mini-avatar.unstaffed{background:var(--ph-soft);color:var(--ph-gray)}
.ph-tracker-mark{box-shadow:inset 5px 0 0 var(--ph-magenta)}
.ph-format-icon{display:inline-grid;place-items:center;width:17px;height:17px;margin:0 5px 0 0;vertical-align:-4px;border-radius:4px;background:rgba(255,255,255,.2)}
.ph-format-icon svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round}
.ph-modal-kicker .ph-format-icon{vertical-align:-5px;background:var(--ph-soft)}

.ph-empty{border:1px solid #000;padding:48px;text-align:center}
.ph-empty strong{display:block;font-size:18px;margin-bottom:4px}

.ph-modal{border:0;padding:0;width:min(760px,calc(100vw - 32px));max-height:90vh;background:#fff;color:#000;box-shadow:0 24px 70px rgba(0,0,0,.35)}
.ph-modal::backdrop{background:rgba(0,0,0,.65)}
.ph-modal-head{background:var(--surface);color:var(--ink);padding:22px 24px;border-top:5px solid var(--ph-blue);border-bottom:1px solid var(--line);display:flex;gap:20px;align-items:start}
.ph-modal-head.booked{border-top-color:var(--ph-booked)}
.ph-modal-head h2{font-size:27px;line-height:1.05;letter-spacing:-.035em;margin:3px 0 6px}
.ph-modal-kicker{font-size:11px;text-transform:uppercase;letter-spacing:.13em;font-weight:800}
.ph-close{margin-left:auto;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:6px;width:34px;height:34px;font-size:20px;cursor:pointer}
.ph-modal-body{padding:22px 24px 26px;overflow:auto}
.ph-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;border:1px solid #000;margin-bottom:18px}
.ph-detail{padding:12px 14px;border-bottom:1px solid var(--ph-line)}
.ph-detail:nth-child(odd){border-right:1px solid var(--ph-line)}
.ph-detail-label{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ph-gray);font-weight:800}
.ph-detail-value{margin-top:4px;font-weight:650;line-height:1.35}
.ph-section{border-top:4px solid #000;padding-top:10px;margin-top:18px}
.ph-section.magenta{border-color:var(--ph-magenta)}
.ph-section h3{font-size:13px;text-transform:uppercase;letter-spacing:.1em;margin:0 0 7px}
.ph-section p{margin:0;color:var(--ph-gray);line-height:1.55}
.ph-workflow-lanes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:18px}
.ph-workflow-lane{border:1px solid var(--ph-line);padding:12px 14px;background:var(--surface)}
.ph-workflow-lane h3{margin:0 0 8px;font-size:11px;text-transform:uppercase;letter-spacing:.1em}
.ph-workflow-lane strong{display:block;font-size:15px;margin-bottom:4px}
.ph-workflow-lane span{color:var(--ph-gray);font-size:13px;line-height:1.4}
.ph-speaking-box{background:var(--ph-pink);padding:13px 14px;display:flex;gap:16px;align-items:start}
.ph-speaking-state{font-weight:800;color:var(--ph-magenta)}
.ph-source-line{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--ph-gray);margin-top:8px}
.ph-modal-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:20px}
.ph-action{border:1px solid #000;background:#000;color:#fff;border-radius:0;padding:9px 13px;text-decoration:none;font-weight:700;cursor:pointer}
.ph-action.secondary{background:#fff;color:#000}
.ph-action.magenta{background:var(--ph-magenta);border-color:var(--ph-magenta)}

@media(max-width:860px){
  .ph-hero{padding:14px 14px 0}.ph-hero-row{align-items:start}.ph-hero-actions{display:none}
  .ph-view-switcher{grid-template-columns:1fr}.ph-portfolio-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.ph-portfolio-tab{border-bottom:1px solid var(--line)}.ph-portfolio-tab:nth-child(even){border-right:0}.ph-portfolio-tab:last-child{grid-column:1/-1;border-bottom:0}.ph-past-tab{width:100%}
  .ph-workbench{padding:16px 14px 30px}.ph-command{grid-template-columns:1fr auto}.ph-command-label{grid-column:1/-1}
  .ph-filter,.ph-filter select,.ph-search{width:100%}.ph-overlays{width:100%;flex-wrap:wrap}.ph-overlays .ph-chip{flex:1 1 calc(33.333% - 4px)}.ph-legend{flex-wrap:wrap}.ph-count{width:100%;margin-left:0}
  .ph-pagination{grid-template-columns:1fr 1fr}.ph-pagination label,.ph-pagination h2{grid-column:1/-1;text-align:left}.ph-pagination select{width:100%}
  .ph-detail-grid,.ph-workflow-lanes{grid-template-columns:1fr}.ph-detail:nth-child(odd){border-right:0}
}
