/* SWPM Portal design layer — v0.7.9.8.43
   Fixes "too white / too flat / too empty" in Partner + Developer portals.
   Adds: warm/cool tinted canvases, layered surfaces, depth, richer cards,
   calendar primitives, chat, docs, notification rows, hero blocks.
   Never used on the internal PM admin shell. */

:root {
  /* ── Partner (warm, premium, calm) ───────────────────────── */
  --pp-canvas:        #f4f1ea;            /* warm parchment, not white */
  --pp-canvas-2:      #efeade;
  --pp-surface:       #ffffff;
  --pp-surface-sunk:  #faf7f0;
  --pp-line:          #e4dccb;
  --pp-line-soft:     #efe9dc;
  --pp-ink:           #2a2418;
  --pp-ink-2:         #6b6252;
  --pp-ink-3:         #948a76;
  --pp-accent:        #a87b1e;            /* brass */
  --pp-accent-2:      #8a6416;
  --pp-accent-tint:   #fdf6e6;
  --pp-accent-ring:   rgba(168,123,30,.18);
  --pp-hero:          linear-gradient(135deg,#2f2a1e 0%,#4a4130 52%,#6b5c3c 100%);
  --pp-shadow-sm:     0 1px 2px rgba(58,46,20,.06), 0 1px 3px rgba(58,46,20,.05);
  --pp-shadow:        0 2px 4px rgba(58,46,20,.05), 0 8px 20px -8px rgba(58,46,20,.16);
  --pp-shadow-lg:     0 4px 8px rgba(58,46,20,.06), 0 20px 44px -16px rgba(58,46,20,.24);

  /* ── Developer (cool, focused, operational) ─────────────── */
  --dp-canvas:        #eef1f6;
  --dp-canvas-2:      #e7ebf3;
  --dp-surface:       #ffffff;
  --dp-surface-sunk:  #f6f8fc;
  --dp-line:          #d9e0ec;
  --dp-line-soft:     #e8edf5;
  --dp-ink:           #131a26;
  --dp-ink-2:         #5a6478;
  --dp-ink-3:         #8c95a8;
  --dp-accent:        #2f6fed;
  --dp-accent-2:      #2559c4;
  --dp-accent-tint:   #eef3fe;
  --dp-accent-ring:   rgba(47,111,237,.18);
  --dp-hero:          linear-gradient(135deg,#0f1d3a 0%,#1b3358 55%,#24507f 100%);
  --dp-shadow-sm:     0 1px 2px rgba(15,29,58,.06), 0 1px 3px rgba(15,29,58,.05);
  --dp-shadow:        0 2px 4px rgba(15,29,58,.05), 0 8px 20px -8px rgba(15,29,58,.18);
  --dp-shadow-lg:     0 4px 8px rgba(15,29,58,.06), 0 20px 44px -16px rgba(15,29,58,.26);

  /* ── Shared portal state colors (calm, not neon) ────────── */
  --po-ok:        #1f8f5b;  --po-ok-tint:      #e8f5ee;  --po-ok-line:      #bfe3ce;
  --po-due:       #b8860b;  --po-due-tint:     #fdf4e0;  --po-due-line:     #ecd9a6;
  --po-late:      #c0392b;  --po-late-tint:    #fceceb;  --po-late-line:    #f0c8c4;
  --po-info:      #2f6fed;  --po-info-tint:    #eef3fe;  --po-info-line:    #c7d8fb;
  --po-idle:      #7a8497;  --po-idle-tint:    #f0f2f6;  --po-idle-line:    #dfe4ec;

  --po-r-sm: 8px; --po-r: 12px; --po-r-lg: 16px; --po-r-xl: 22px;
}

/* ══════════════════════════════════════════════════════════
   SHELL
   ══════════════════════════════════════════════════════════ */
.po { height: 100%; display: flex; flex-direction: column; font-family: var(--swpm-font-sans); }
.po--partner { background: var(--pp-canvas); color: var(--pp-ink); }
.po--dev     { background: var(--dp-canvas); color: var(--dp-ink); }

/* subtle texture so large areas never read as blank paper */
.po--partner .po-body { background-image: radial-gradient(circle at 18% 0%, rgba(168,123,30,.055), transparent 42%), radial-gradient(circle at 92% 8%, rgba(120,96,40,.045), transparent 38%); }
.po--dev     .po-body { background-image: radial-gradient(circle at 16% 0%, rgba(47,111,237,.06), transparent 42%),  radial-gradient(circle at 94% 6%, rgba(20,60,140,.05), transparent 38%); }

.po-shell { flex: 1; display: flex; min-height: 0; }
.po-body  { flex: 1; min-width: 0; overflow: auto; }
.po-wrap  { max-width: none; margin: 0; padding: 20px 26px 40px; }

/* ── Side rail ─────────────────────────────────────────── */
.po-rail { width: 244px; flex-shrink: 0; display: flex; flex-direction: column; border-right: 1px solid; }
.po--partner .po-rail { background: #fffdf8; border-color: var(--pp-line); }
.po--dev     .po-rail { background: #fff; border-color: var(--dp-line); }

.po-brand { display: flex; align-items: center; gap: 11px; padding: 16px 18px; border-bottom: 1px solid; }
.po--partner .po-brand { border-color: var(--pp-line-soft); }
.po--dev     .po-brand { border-color: var(--dp-line-soft); }
.po-mark { width: 34px; height: 34px; border-radius: 10px; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 13px; color: #fff; flex-shrink: 0; }
.po--partner .po-mark { background: var(--pp-hero); box-shadow: 0 2px 8px var(--pp-accent-ring); }
.po--dev     .po-mark { background: var(--dp-hero); box-shadow: 0 2px 8px var(--dp-accent-ring); }
.po-brand-t { font-size: 13.5px; font-weight: 650; letter-spacing: -.01em; }
.po-brand-s { font-size: 11px; margin-top: 1px; }
.po--partner .po-brand-s { color: var(--pp-ink-3); }
.po--dev     .po-brand-s { color: var(--dp-ink-3); }

.po-nav { flex: 1; padding: 10px; overflow-y: auto; }
.po-nav-group { font-size: 10px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; padding: 14px 10px 6px; }
.po--partner .po-nav-group { color: var(--pp-ink-3); }
.po--dev     .po-nav-group { color: var(--dp-ink-3); }

.po-nav-item { display: flex; align-items: center; gap: 10px; padding: 9px 11px; border-radius: 9px; font-size: 13.5px; cursor: pointer; margin-bottom: 2px; transition: background .12s, color .12s; position: relative; }
.po--partner .po-nav-item { color: var(--pp-ink-2); }
.po--partner .po-nav-item:hover { background: var(--pp-surface-sunk); color: var(--pp-ink); }
.po--partner .po-nav-item.is-on { background: var(--pp-accent-tint); color: var(--pp-accent-2); font-weight: 600; box-shadow: inset 2px 0 0 var(--pp-accent); }
.po--dev .po-nav-item { color: var(--dp-ink-2); }
.po--dev .po-nav-item:hover { background: var(--dp-surface-sunk); color: var(--dp-ink); }
.po--dev .po-nav-item.is-on { background: var(--dp-accent-tint); color: var(--dp-accent-2); font-weight: 600; box-shadow: inset 2px 0 0 var(--dp-accent); }
.po-nav-count { margin-left: auto; font-size: 10.5px; font-weight: 700; padding: 2px 7px; border-radius: 99px; }
.po--partner .po-nav-count { background: var(--pp-accent); color: #fff; }
.po--dev     .po-nav-count { background: var(--dp-accent); color: #fff; }
.po-nav-count.is-quiet { background: var(--po-idle-tint); color: var(--po-idle); }

.po-rail-foot { padding: 12px 14px; border-top: 1px solid; display: flex; align-items: center; gap: 10px; }
.po--partner .po-rail-foot { border-color: var(--pp-line-soft); }
.po--dev     .po-rail-foot { border-color: var(--dp-line-soft); }

/* ── Top bar ───────────────────────────────────────────── */
.po-top { display: flex; align-items: center; gap: 12px; padding: 12px 26px; border-bottom: 1px solid; backdrop-filter: blur(8px); position: sticky; top: 0; z-index: 5; }
.po--partner .po-top { background: rgba(255,253,248,.86); border-color: var(--pp-line); }
.po--dev     .po-top { background: rgba(255,255,255,.86); border-color: var(--dp-line); }
.po-crumb { font-size: 12px; }
.po--partner .po-crumb { color: var(--pp-ink-3); }
.po--dev     .po-crumb { color: var(--dp-ink-3); }

/* preview: visible, not noisy */
.po-preview { display: flex; align-items: center; gap: 9px; padding: 7px 26px; font-size: 12.5px; border-bottom: 1px solid; }
.po-preview strong { font-weight: 650; }
.po--partner .po-preview { background: var(--pp-accent-tint); border-color: var(--po-due-line); color: var(--pp-accent-2); }
.po--dev     .po-preview { background: var(--dp-accent-tint); border-color: var(--po-info-line); color: var(--dp-accent-2); }

/* ══════════════════════════════════════════════════════════
   HERO
   ══════════════════════════════════════════════════════════ */
.po-hero { border-radius: var(--po-r-lg); padding: 24px 26px; color: #fff; position: relative; overflow: hidden; margin-bottom: 20px; }
.po--partner .po-hero { background: var(--pp-hero); box-shadow: var(--pp-shadow-lg); }
.po--dev     .po-hero { background: var(--dp-hero); box-shadow: var(--dp-shadow-lg); }
.po-hero::after { content: ""; position: absolute; right: -60px; top: -80px; width: 300px; height: 300px; border-radius: 50%; background: rgba(255,255,255,.07); }
.po-hero::before { content: ""; position: absolute; right: 60px; bottom: -120px; width: 220px; height: 220px; border-radius: 50%; background: rgba(255,255,255,.05); }
.po-hero-in { position: relative; z-index: 1; }
.po-hero-eyebrow { font-size: 11px; text-transform: uppercase; letter-spacing: .09em; font-weight: 700; opacity: .72; }
.po-hero-h { font-size: 26px; font-weight: 680; letter-spacing: -.02em; margin: 6px 0 4px; }
.po-hero-sub { font-size: 13.5px; opacity: .8; }
.po-hero-stats { display: flex; gap: 30px; margin-top: 18px; flex-wrap: wrap; }
/* hero stats spread across the full hero width instead of bunching left */
.po-hero-in > div:first-child { min-width: 0; }
.po-hero-stats.is-spread { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 18px; }
.po-hero-stat .v { font-size: 22px; font-weight: 680; letter-spacing: -.01em; }
.po-hero-stat .l { font-size: 11px; text-transform: uppercase; letter-spacing: .07em; opacity: .68; margin-top: 2px; }

/* ══════════════════════════════════════════════════════════
   CARDS / SECTIONS
   ══════════════════════════════════════════════════════════ */
.po-card { border-radius: var(--po-r); border: 1px solid; overflow: hidden; }
.po--partner .po-card { background: var(--pp-surface); border-color: var(--pp-line); box-shadow: var(--pp-shadow-sm); }
.po--dev     .po-card { background: var(--dp-surface); border-color: var(--dp-line); box-shadow: var(--dp-shadow-sm); }
.po-card.is-raised { box-shadow: var(--pp-shadow); }
.po--dev .po-card.is-raised { box-shadow: var(--dp-shadow); }

.po-card-h { display: flex; align-items: center; gap: 10px; padding: 13px 16px; border-bottom: 1px solid; }
.po--partner .po-card-h { border-color: var(--pp-line-soft); background: linear-gradient(#fffdf8, #fffdf8); }
.po--dev     .po-card-h { border-color: var(--dp-line-soft); background: linear-gradient(#fcfdff, #fcfdff); }
.po-card-t { font-size: 14px; font-weight: 650; letter-spacing: -.01em; }
.po-card-b { padding: 16px; }
.po-card-b.is-flush { padding: 0; }
/* wider-than-parent tables must scroll, never clip (.po-card is overflow:hidden) */
.po-tablewrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.po-card-b.is-flush { overflow-x: auto; }

.po-grid { display: grid; gap: 16px; }
.po-sec-h { display: flex; align-items: baseline; gap: 10px; margin: 26px 0 12px; }
.po-sec-h h2 { font-size: 15px; font-weight: 650; margin: 0; letter-spacing: -.01em; }
.po-sec-h .m { font-size: 12px; }
.po--partner .po-sec-h .m { color: var(--pp-ink-3); }
.po--dev     .po-sec-h .m { color: var(--dp-ink-3); }

/* KPI tile */
.po-kpi { border-radius: var(--po-r); padding: 14px 16px; border: 1px solid; position: relative; overflow: hidden; }
.po--partner .po-kpi { background: var(--pp-surface); border-color: var(--pp-line); box-shadow: var(--pp-shadow-sm); }
.po--dev     .po-kpi { background: var(--dp-surface); border-color: var(--dp-line); box-shadow: var(--dp-shadow-sm); }
.po-kpi::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 3px; background: var(--po-idle); }
.po-kpi.t-ok::before   { background: var(--po-ok); }
.po-kpi.t-due::before  { background: var(--po-due); }
.po-kpi.t-late::before { background: var(--po-late); }
.po-kpi.t-info::before { background: var(--po-info); }
.po-kpi-l { font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .07em; }
.po--partner .po-kpi-l { color: var(--pp-ink-3); }
.po--dev     .po-kpi-l { color: var(--dp-ink-3); }
.po-kpi-v { font-size: 24px; font-weight: 680; letter-spacing: -.02em; margin-top: 5px; line-height: 1.05; }
.po-kpi-s { font-size: 11.5px; margin-top: 3px; }
.po--partner .po-kpi-s { color: var(--pp-ink-2); }
.po--dev     .po-kpi-s { color: var(--dp-ink-2); }

/* ══════════════════════════════════════════════════════════
   PILLS / BADGES
   ══════════════════════════════════════════════════════════ */
.po-pill { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 650; padding: 3px 9px; border-radius: 99px; border: 1px solid; white-space: nowrap; }
.po-pill .dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.po-pill.t-ok   { color: var(--po-ok);   background: var(--po-ok-tint);   border-color: var(--po-ok-line); }
.po-pill.t-due  { color: var(--po-due);  background: var(--po-due-tint);  border-color: var(--po-due-line); }
.po-pill.t-late { color: var(--po-late); background: var(--po-late-tint); border-color: var(--po-late-line); }
.po-pill.t-info { color: var(--po-info); background: var(--po-info-tint); border-color: var(--po-info-line); }
.po-pill.t-idle { color: var(--po-idle); background: var(--po-idle-tint); border-color: var(--po-idle-line); }

/* progress */
.po-prog { display: flex; align-items: center; gap: 9px; }
.po-prog-track { flex: 1; height: 6px; border-radius: 99px; overflow: hidden; background: var(--po-idle-tint); min-width: 60px; }
.po-prog-fill { height: 100%; border-radius: 99px; background: var(--po-ok); }
.po-prog-fill.t-due  { background: var(--po-due); }
.po-prog-fill.t-late { background: var(--po-late); }
.po-prog-fill.t-info { background: var(--po-info); }
.po-prog-v { font-size: 11.5px; font-weight: 650; font-variant-numeric: tabular-nums; min-width: 32px; text-align: right; }

/* ring progress (calendar / milestone icons) */
.po-ring { width: 26px; height: 26px; border-radius: 50%; display: inline-grid; place-items: center; font-size: 9px; font-weight: 700; flex-shrink: 0; }

/* ══════════════════════════════════════════════════════════
   LIST ROWS (projects, docs, notifications, chat, events)
   ══════════════════════════════════════════════════════════ */
.po-row { display: flex; align-items: center; gap: 13px; padding: 13px 16px; border-bottom: 1px solid; cursor: pointer; transition: background .12s; }
.po--partner .po-row { border-color: var(--pp-line-soft); }
.po--partner .po-row:hover { background: var(--pp-surface-sunk); }
.po--dev .po-row { border-color: var(--dp-line-soft); }
.po--dev .po-row:hover { background: var(--dp-surface-sunk); }
.po-row:last-child { border-bottom: none; }
.po-row.is-unread { position: relative; }
.po--partner .po-row.is-unread { background: var(--pp-accent-tint); }
.po--dev     .po-row.is-unread { background: var(--dp-accent-tint); }
.po-row-t { font-size: 13.5px; font-weight: 600; letter-spacing: -.005em; }
.po-row-s { font-size: 11.5px; margin-top: 2px; }
.po--partner .po-row-s { color: var(--pp-ink-3); }
.po--dev     .po-row-s { color: var(--dp-ink-3); }
.po-row-ic { width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; flex-shrink: 0; }
.po--partner .po-row-ic { background: var(--pp-accent-tint); color: var(--pp-accent-2); }
.po--dev     .po-row-ic { background: var(--dp-accent-tint); color: var(--dp-accent-2); }
.po-row-ic.t-ok   { background: var(--po-ok-tint);   color: var(--po-ok); }
.po-row-ic.t-due  { background: var(--po-due-tint);  color: var(--po-due); }
.po-row-ic.t-late { background: var(--po-late-tint); color: var(--po-late); }
.po-row-ic.t-idle { background: var(--po-idle-tint); color: var(--po-idle); }
.po-unread-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; }
.po--partner .po-unread-dot { background: var(--pp-accent); }
.po--dev     .po-unread-dot { background: var(--dp-accent); }

/* project card (list/switcher) */
.po-proj { border-radius: var(--po-r); border: 1px solid; padding: 15px 16px; cursor: pointer; transition: box-shadow .14s, transform .14s, border-color .14s; }
.po--partner .po-proj { background: var(--pp-surface); border-color: var(--pp-line); box-shadow: var(--pp-shadow-sm); }
.po--partner .po-proj:hover { box-shadow: var(--pp-shadow); border-color: var(--pp-accent); transform: translateY(-1px); }
.po--partner .po-proj.is-on { border-color: var(--pp-accent); box-shadow: 0 0 0 3px var(--pp-accent-ring), var(--pp-shadow); }
.po--dev .po-proj { background: var(--dp-surface); border-color: var(--dp-line); box-shadow: var(--dp-shadow-sm); }
.po--dev .po-proj:hover { box-shadow: var(--dp-shadow); border-color: var(--dp-accent); transform: translateY(-1px); }
.po--dev .po-proj.is-on { border-color: var(--dp-accent); box-shadow: 0 0 0 3px var(--dp-accent-ring), var(--dp-shadow); }

/* ══════════════════════════════════════════════════════════
   TABS
   ══════════════════════════════════════════════════════════ */
.po-tabs { display: flex; gap: 3px; overflow-x: auto; scrollbar-width: none; border-bottom: 1px solid; padding: 0 2px; }
.po-tabs::-webkit-scrollbar { display: none; }
.po--partner .po-tabs { border-color: var(--pp-line); }
.po--dev     .po-tabs { border-color: var(--dp-line); }
.po-tab { padding: 10px 14px; font-size: 13px; font-weight: 550; cursor: pointer; white-space: nowrap; border-bottom: 2px solid transparent; margin-bottom: -1px; display: inline-flex; align-items: center; gap: 7px; background: none; border-top: 0; border-left: 0; border-right: 0; }
.po--partner .po-tab { color: var(--pp-ink-2); }
.po--partner .po-tab:hover { color: var(--pp-ink); }
.po--partner .po-tab.is-on { color: var(--pp-accent-2); border-bottom-color: var(--pp-accent); font-weight: 680; }
.po--dev .po-tab { color: var(--dp-ink-2); }
.po--dev .po-tab:hover { color: var(--dp-ink); }
.po--dev .po-tab.is-on { color: var(--dp-accent-2); border-bottom-color: var(--dp-accent); font-weight: 680; }
.po-tab-n { font-size: 10.5px; font-weight: 700; padding: 1px 6px; border-radius: 99px; background: var(--po-idle-tint); color: var(--po-idle); }
.po-tab.is-on .po-tab-n { background: var(--po-info-tint); color: var(--po-info); }
.po--partner .po-tab.is-on .po-tab-n { background: var(--pp-accent-tint); color: var(--pp-accent-2); }

/* ══════════════════════════════════════════════════════════
   CALENDAR
   ══════════════════════════════════════════════════════════ */
.po-cal { display: grid; grid-template-columns: repeat(7, 1fr); border-left: 1px solid; border-top: 1px solid; border-radius: var(--po-r); overflow: hidden; }
.po--partner .po-cal { border-color: var(--pp-line); background: var(--pp-surface); }
.po--dev     .po-cal { border-color: var(--dp-line); background: var(--dp-surface); }
.po-cal-hd { padding: 9px 10px; font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .07em; border-right: 1px solid; border-bottom: 1px solid; }
.po--partner .po-cal-hd { color: var(--pp-ink-3); border-color: var(--pp-line); background: var(--pp-surface-sunk); }
.po--dev     .po-cal-hd { color: var(--dp-ink-3); border-color: var(--dp-line); background: var(--dp-surface-sunk); }
.po-cal-cell { min-height: 104px; padding: 7px 8px; border-right: 1px solid; border-bottom: 1px solid; display: flex; flex-direction: column; gap: 5px; }
.po--partner .po-cal-cell { border-color: var(--pp-line-soft); }
.po--dev     .po-cal-cell { border-color: var(--dp-line-soft); }
.po-cal-cell.is-out { opacity: .38; }
.po--partner .po-cal-cell.is-today { background: var(--pp-accent-tint); }
.po--dev     .po-cal-cell.is-today { background: var(--dp-accent-tint); }
.po-cal-d { font-size: 11.5px; font-weight: 650; font-variant-numeric: tabular-nums; }
.po-cal-cell.is-today .po-cal-d { display: inline-grid; place-items: center; width: 21px; height: 21px; border-radius: 50%; color: #fff; }
.po--partner .po-cal-cell.is-today .po-cal-d { background: var(--pp-accent); }
.po--dev     .po-cal-cell.is-today .po-cal-d { background: var(--dp-accent); }
.po-ev { font-size: 10.5px; font-weight: 600; padding: 3px 6px; border-radius: 6px; border-left: 2.5px solid; line-height: 1.25; cursor: pointer; transition: filter .12s, transform .12s; }
.po-ev:hover { filter: brightness(.96); transform: translateX(1px); }
.po-ev.t-ok   { background: var(--po-ok-tint);   border-color: var(--po-ok);   color: #14663f; }
.po-ev.t-due  { background: var(--po-due-tint);  border-color: var(--po-due);  color: #7d5c07; }
.po-ev.t-late { background: var(--po-late-tint); border-color: var(--po-late); color: #922b21; }
.po-ev.t-info { background: var(--po-info-tint); border-color: var(--po-info); color: #1c4fb0; }
.po-ev.t-idle { background: var(--po-idle-tint); border-color: var(--po-idle); color: #59637a; }

/* agenda */
.po-agenda-day { display: flex; gap: 14px; padding: 13px 16px; border-bottom: 1px solid; }
.po--partner .po-agenda-day { border-color: var(--pp-line-soft); }
.po--dev     .po-agenda-day { border-color: var(--dp-line-soft); }
.po-agenda-date { width: 52px; flex-shrink: 0; text-align: center; }
.po-agenda-date .dd { font-size: 20px; font-weight: 680; line-height: 1; font-variant-numeric: tabular-nums; }
.po-agenda-date .mm { font-size: 10px; text-transform: uppercase; letter-spacing: .07em; margin-top: 2px; }
.po--partner .po-agenda-date .mm { color: var(--pp-ink-3); }
.po--dev     .po-agenda-date .mm { color: var(--dp-ink-3); }

/* ══════════════════════════════════════════════════════════
   CHAT / DOCS / TIMELINE
   ══════════════════════════════════════════════════════════ */
.po-msg { display: flex; gap: 12px; padding: 14px 16px; }
.po-msg-b { border-radius: 12px; padding: 11px 13px; font-size: 13.5px; line-height: 1.55; max-width: 640px; }
.po--partner .po-msg-b { background: var(--pp-surface-sunk); border: 1px solid var(--pp-line-soft); }
.po--dev     .po-msg-b { background: var(--dp-surface-sunk); border: 1px solid var(--dp-line-soft); }
.po-msg.is-mine { flex-direction: row-reverse; }
.po--partner .po-msg.is-mine .po-msg-b { background: var(--pp-accent-tint); border-color: var(--po-due-line); }
.po--dev     .po-msg.is-mine .po-msg-b { background: var(--dp-accent-tint); border-color: var(--po-info-line); }
.po-msg-meta { font-size: 11px; margin-bottom: 4px; }
.po--partner .po-msg-meta { color: var(--pp-ink-3); }
.po--dev     .po-msg-meta { color: var(--dp-ink-3); }

.po-file { display: flex; align-items: center; gap: 13px; padding: 12px 16px; border-bottom: 1px solid; }
.po--partner .po-file { border-color: var(--pp-line-soft); }
.po--dev     .po-file { border-color: var(--dp-line-soft); }
.po-file-ic { width: 36px; height: 42px; border-radius: 6px; display: grid; place-items: center; font-size: 9px; font-weight: 700; letter-spacing: .04em; color: #fff; flex-shrink: 0; }

/* timeline */
.po-tl { position: relative; padding-left: 26px; }
.po-tl::before { content: ""; position: absolute; left: 8px; top: 6px; bottom: 6px; width: 2px; border-radius: 2px; }
.po--partner .po-tl::before { background: var(--pp-line); }
.po--dev     .po-tl::before { background: var(--dp-line); }
.po-tl-i { position: relative; padding: 0 0 18px; }
.po-tl-i::before { content: ""; position: absolute; left: -22px; top: 4px; width: 10px; height: 10px; border-radius: 50%; border: 2px solid #fff; background: var(--po-idle); }
.po-tl-i.t-ok::before   { background: var(--po-ok); }
.po-tl-i.t-due::before  { background: var(--po-due); }
.po-tl-i.t-late::before { background: var(--po-late); }
.po-tl-i.t-info::before { background: var(--po-info); }

/* ══════════════════════════════════════════════════════════
   EMPTY STATES
   ══════════════════════════════════════════════════════════ */
.po-empty { text-align: center; padding: 46px 26px; }
.po-empty-ic { width: 58px; height: 58px; border-radius: 17px; display: inline-grid; place-items: center; margin-bottom: 14px; }
.po--partner .po-empty-ic { background: var(--pp-accent-tint); color: var(--pp-accent); }
.po--dev     .po-empty-ic { background: var(--dp-accent-tint); color: var(--dp-accent); }
.po-empty-t { font-size: 15.5px; font-weight: 650; letter-spacing: -.01em; }
.po-empty-s { font-size: 13px; margin: 6px auto 0; max-width: 380px; line-height: 1.6; }
.po--partner .po-empty-s { color: var(--pp-ink-2); }
.po--dev     .po-empty-s { color: var(--dp-ink-2); }

/* ══════════════════════════════════════════════════════════
   BUTTONS
   ══════════════════════════════════════════════════════════ */
.po-btn { display: inline-flex; align-items: center; gap: 7px; padding: 8px 14px; border-radius: 9px; font-size: 13px; font-weight: 600; cursor: pointer; border: 1px solid transparent; font-family: inherit; transition: background .12s, box-shadow .12s, border-color .12s; }
.po--partner .po-btn-1 { background: var(--pp-accent); color: #fff; box-shadow: 0 1px 2px var(--pp-accent-ring); }
.po--partner .po-btn-1:hover { background: var(--pp-accent-2); }
.po--partner .po-btn-2 { background: var(--pp-surface); color: var(--pp-ink); border-color: var(--pp-line); }
.po--partner .po-btn-2:hover { background: var(--pp-surface-sunk); border-color: var(--pp-accent); }
.po--partner .po-btn-3 { background: transparent; color: var(--pp-ink-2); }
.po--partner .po-btn-3:hover { background: var(--pp-surface-sunk); color: var(--pp-ink); }
.po--dev .po-btn-1 { background: var(--dp-accent); color: #fff; box-shadow: 0 1px 2px var(--dp-accent-ring); }
.po--dev .po-btn-1:hover { background: var(--dp-accent-2); }
.po--dev .po-btn-2 { background: var(--dp-surface); color: var(--dp-ink); border-color: var(--dp-line); }
.po--dev .po-btn-2:hover { background: var(--dp-surface-sunk); border-color: var(--dp-accent); }
.po--dev .po-btn-3 { background: transparent; color: var(--dp-ink-2); }
.po--dev .po-btn-3:hover { background: var(--dp-surface-sunk); color: var(--dp-ink); }
.po-btn-sm { padding: 5px 10px; font-size: 12px; border-radius: 7px; }
.po-btn-ic { width: 30px; height: 30px; padding: 0; justify-content: center; border-radius: 8px; }

/* ══════════════════════════════════════════════════════════
   TABLES (light, portal-flavoured)
   ══════════════════════════════════════════════════════════ */
.po-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.po-table th { text-align: left; font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .07em; padding: 10px 14px; border-bottom: 1px solid; }
.po--partner .po-table th { color: var(--pp-ink-3); background: var(--pp-surface-sunk); border-color: var(--pp-line); }
.po--dev     .po-table th { color: var(--dp-ink-3); background: var(--dp-surface-sunk); border-color: var(--dp-line); }
.po-table td { padding: 11px 14px; border-bottom: 1px solid; }
.po--partner .po-table td { border-color: var(--pp-line-soft); }
.po--dev     .po-table td { border-color: var(--dp-line-soft); }
.po-table tbody tr:last-child td { border-bottom: none; }
.po--partner .po-table tbody tr:hover td { background: var(--pp-surface-sunk); }
.po--dev     .po-table tbody tr:hover td { background: var(--dp-surface-sunk); }
.po-num { text-align: right; font-variant-numeric: tabular-nums; }

/* ══════════════════════════════════════════════════════════
   MOBILE
   ══════════════════════════════════════════════════════════ */
.po-mobtop { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; border-bottom: 1px solid; }
.po--partner .po-mobtop { background: #fffdf8; border-color: var(--pp-line); }
.po--dev     .po-mobtop { background: #fff; border-color: var(--dp-line); }
.po-mobnav { display: flex; border-top: 1px solid; padding: 7px 4px 9px; }
.po--partner .po-mobnav { background: #fffdf8; border-color: var(--pp-line); }
.po--dev     .po-mobnav { background: #fff; border-color: var(--dp-line); }
.po-mobnav-i { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 3px; font-size: 10px; font-weight: 600; cursor: pointer; }
.po--partner .po-mobnav-i { color: var(--pp-ink-3); }
.po--partner .po-mobnav-i.is-on { color: var(--pp-accent-2); }
.po--dev .po-mobnav-i { color: var(--dp-ink-3); }
.po--dev .po-mobnav-i.is-on { color: var(--dp-accent-2); }
.po-fab { position: absolute; right: 16px; bottom: 74px; width: 50px; height: 50px; border-radius: 50%; display: grid; place-items: center; color: #fff; border: none; cursor: pointer; z-index: 4; }
.po--partner .po-fab { background: var(--pp-accent); box-shadow: 0 6px 18px var(--pp-accent-ring); }
.po--dev     .po-fab { background: var(--dp-accent); box-shadow: 0 6px 18px var(--dp-accent-ring); }

/* ══════════════════════════════════════════════════════════
   RESPONSIVE GRID COLLAPSE
   Side columns drop below the main column instead of squeezing.
   ══════════════════════════════════════════════════════════ */
@media (max-width: 1080px) {
  .po-grid.po-2col { grid-template-columns: 1fr !important; }
}
@media (max-width: 900px) {
  .po-grid { grid-template-columns: 1fr !important; }
  .po-wrap { padding: 18px 16px 32px; }
  .po-hero { padding: 20px 18px; }
  .po-hero-h { font-size: 22px; }
  .po-hero-stats { gap: 22px; }
}
@media (max-width: 1023px) {
  .po-rail { width: 64px; }
  .po-rail .po-brand > div:last-child,
  .po-rail .po-nav-group,
  .po-rail .po-nav-item > span:not(.po-nav-count),
  .po-rail .po-rail-foot > div { display: none; }
  .po-rail .po-brand { justify-content: center; padding: 14px 8px; }
  .po-rail .po-nav-item { justify-content: center; padding: 10px 0; }
  .po-rail .po-rail-foot { justify-content: center; }
}
@media (max-width: 640px) {
  .po-hero-stats { gap: 16px; }
  .po-hero-stat .v { font-size: 18px; }
  .po-cal { display: none; }
  .po-agenda-date { width: 44px; }
}

/* portal form inputs — visible field affordance, readable contrast */
.po-in {
  height: 34px; width: 100%; border-radius: 8px; padding: 0 10px;
  font-family: inherit; font-size: 13px; font-weight: 600;
  background: #fff; color: var(--dp-ink);
  border: 1px solid var(--dp-line);
  box-shadow: inset 0 1px 2px rgba(15,29,58,.05);
  transition: border-color .12s, box-shadow .12s, background .12s;
}
.po-in::placeholder { color: var(--dp-ink-3); font-weight: 500; }
.po-in:hover { border-color: var(--dp-accent); }
.po-in:focus { outline: none; border-color: var(--dp-accent); box-shadow: 0 0 0 3px var(--dp-accent-ring); background: #fff; }
.po-in--cell { width: 52px; text-align: center; padding: 0 4px; }
.po--partner .po-in { border-color: var(--pp-line); color: var(--pp-ink); box-shadow: inset 0 1px 2px rgba(58,46,20,.05); }
.po--partner .po-in::placeholder { color: var(--pp-ink-3); }
.po--partner .po-in:hover { border-color: var(--pp-accent); }
.po--partner .po-in:focus { border-color: var(--pp-accent); box-shadow: 0 0 0 3px var(--pp-accent-ring); }
/* the add-row strip reads as an input row, not stray chips */
.po-addrow td { background: var(--dp-surface-sunk); }
.po--partner .po-addrow td { background: var(--pp-surface-sunk); }

.po-meta { font-size: 11.5px; }
.po--partner .po-meta { color: var(--pp-ink-3); }
.po--dev     .po-meta { color: var(--dp-ink-3); }
.po-mono { font-family: var(--swpm-font-mono); font-variant-numeric: tabular-nums; }


/* v0.7.9.8.42 retrofit: existing PHP portal class compatibility */

.po .swpm-portal-topbar { background: rgba(255,253,248,.9); border-color: var(--pp-line); backdrop-filter: blur(8px); }
.po--dev .swpm-portal-topbar { background: rgba(255,255,255,.88); border-color: var(--dp-line); }
.po--partner .swpm-portal-content { background: transparent; max-width: none; padding: 26px; }
.po--dev .swpm-portal-content { background: transparent; max-width: none; }
.po--partner .swpm-hero.swpm-portal-hero, .po--partner .swpm-portal-global-hero { background: var(--pp-hero); color: #fff; border: 0; box-shadow: var(--pp-shadow-lg); border-radius: var(--po-r-lg); }
.po--dev .swpm-portal-hero, .po--dev .swpm-developer-hero { background: var(--dp-hero); color: #fff; border: 0; box-shadow: var(--dp-shadow-lg); border-radius: var(--po-r-lg); }
.po--partner .swpm-card { border-color: var(--pp-line); box-shadow: var(--pp-shadow-sm); border-radius: var(--po-r); }
.po--dev .swpm-card { border-color: var(--dp-line); box-shadow: var(--dp-shadow-sm); border-radius: var(--po-r); }
.po--partner .swpm-kpi-card, .po--partner .swpm-card.swpm-kpi { border-left: 3px solid var(--pp-accent); }
.po--dev .swpm-kpi-card, .po--dev .swpm-card.swpm-kpi { border-left: 3px solid var(--dp-accent); }
.po--partner .swpm-badge--success, .po--partner .swpm-badge--info { border-radius: 99px; }
.po--partner .swpm-portal-project-card { background: var(--pp-surface); border-color: var(--pp-line); box-shadow: var(--pp-shadow-sm); }
.po--partner .swpm-portal-project-card:hover { transform: translateY(-1px); box-shadow: var(--pp-shadow); }
.po--partner .swpm-portal-tabs { background: rgba(255,253,248,.92); border-color: var(--pp-line); box-shadow: var(--pp-shadow-sm); }
.po--partner .swpm-portal-tab.is-active { background: var(--pp-accent); color: #fff; }
.po--dev .swpm-developer-workspace-shell { background: var(--dp-canvas); }
.po--dev .swpm-developer-sidebar-card { background: rgba(255,255,255,.92); border-color: var(--dp-line); box-shadow: var(--dp-shadow); }
.po--dev .swpm-developer-side-nav__item.is-active { background: var(--dp-accent-tint); box-shadow: inset 3px 0 0 var(--dp-accent); }
.po--dev .swpm-developer-side-nav__icon { background: var(--dp-accent-tint); color: var(--dp-accent-2); }
.po--dev .swpm-developer-side-nav__item.is-active .swpm-developer-side-nav__icon { background: var(--dp-accent); color:#fff; }
.po-mini-nav { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.po-mini-nav a { text-decoration:none; font-size:12.5px; font-weight:650; padding:7px 10px; border:1px solid var(--pp-line); border-radius:999px; color:var(--pp-ink-2); background:rgba(255,255,255,.8); }
.po-mini-nav a.is-on { background:var(--pp-accent); color:#fff; border-color:var(--pp-accent); }
.po-calendar-summary { display:grid; grid-template-columns: repeat(auto-fit,minmax(220px,1fr)); gap:12px; }
.po-calendar-event { display:flex; gap:10px; align-items:flex-start; padding:12px; border:1px solid var(--pp-line-soft); border-radius:12px; background:var(--pp-surface-sunk); }
.po-calendar-date { min-width:52px; text-align:center; border-radius:12px; padding:8px 6px; background:#fff; border:1px solid var(--pp-line); box-shadow:var(--pp-shadow-sm); }
.po-calendar-date strong { display:block; font-size:20px; line-height:1; }
.po-calendar-date span { display:block; font-size:10px; text-transform:uppercase; letter-spacing:.08em; color:var(--pp-ink-3); margin-top:3px; }
.po-calendar-event-body { flex:1; min-width:0; }
.po-calendar-event-body strong { display:block; font-size:13px; }
.po-calendar-event-body small { display:block; color:var(--pp-ink-2); margin-top:2px; }
.po-calendar-progress { display:flex; gap:8px; align-items:center; margin-top:8px; }
.po-calendar-progress i { flex:1; height:6px; border-radius:99px; overflow:hidden; background:var(--po-idle-tint); }
.po-calendar-progress b { display:block; height:100%; background:var(--po-ok); border-radius:99px; }
.po-portal-calendar-hero-actions { display:flex; gap:8px; justify-content:flex-end; flex-wrap:wrap; }
@media (max-width: 780px){ .po--partner .swpm-portal-content{padding:16px}.po-hero-stats.is-spread{grid-auto-flow:row;grid-template-columns:repeat(2,1fr)}.po-mini-nav{overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px}.po-mini-nav a{white-space:nowrap}.po-cal{display:none}.po-mob-calendar-agenda{display:block!important}.po--dev .swpm-developer-workspace-shell{grid-template-columns:1fr}.po--dev .swpm-developer-workspace-sidebar{position:static}.po--dev .swpm-developer-sidebar-card{border-radius:0 0 18px 18px}.po--dev .swpm-portal-content{padding:16px} }

/* v0.7.9.8.43 — full portal shell alignment
   Partner and Developer portals now share the Claude portal rail + body shell.
   This restores the missing Partner Portal sidebar menu and removes the split
   developer-specific sidebar implementation so both external workspaces feel coherent. */
.po-portal-shell-v843 {
  min-height: 100vh;
  height: 100vh;
  overflow: hidden;
}
.po-portal-topbar-v843 {
  flex: 0 0 auto;
  min-height: 58px;
  z-index: 20;
}
.po-portal-shell-v843 .po-shell {
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden;
}
.po-portal-shell-v843 .po-body {
  min-height: 0;
  overflow: auto;
}
.po-portal-shell-v843 .swpm-portal-content {
  padding: 26px;
  max-width: none;
}
.po-portal-shell-v843 .swpm-portal-global-header {
  padding: 26px 26px 0;
}
.po-portal-shell-v843 .swpm-portal-content--compact-top {
  padding-top: 20px;
}
.po-partner-rail-v843,
.po-developer-rail-v843 {
  position: sticky;
  top: 0;
  align-self: stretch;
  min-height: 0;
}
.po-nav-item {
  text-decoration: none;
}
.po-nav-item > span:not(.po-nav-count) {
  min-width: 0;
}
.po-nav-item strong,
.po-nav-item small {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.po-nav-item small {
  margin-top: 1px;
  font-size: 10.8px;
  font-weight: 550;
  opacity: .72;
}
.po-nav-ic {
  width: 30px;
  height: 30px;
  flex: 0 0 30px;
  display: grid;
  place-items: center;
  border-radius: 10px;
  font-size: 14px;
}
.po--partner .po-nav-ic { background: var(--pp-accent-tint); color: var(--pp-accent-2); }
.po--partner .po-nav-item.is-on .po-nav-ic { background: var(--pp-accent); color: #fff; }
.po--dev .po-nav-ic { background: var(--dp-accent-tint); color: var(--dp-accent-2); }
.po--dev .po-nav-item.is-on .po-nav-ic { background: var(--dp-accent); color: #fff; }
.po-rail-foot > div {
  min-width: 0;
  display: grid;
  gap: 1px;
}
.po-rail-foot strong,
.po-rail-foot small {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.po-rail-foot small { font-size: 10.5px; opacity: .72; }
.po--partner .po-rail-foot small { color: var(--pp-ink-3); }
.po--dev .po-rail-foot small { color: var(--dp-ink-3); }
.po--partner .po-partner-workspace-shell-v843 .swpm-portal-content {
  background-image:
    radial-gradient(circle at 20% 2%, rgba(168,123,30,.05), transparent 34%),
    radial-gradient(circle at 88% 7%, rgba(83,64,28,.055), transparent 32%);
}
.po--dev .po-developer-workspace-shell-v843 .swpm-portal-content {
  background-image:
    radial-gradient(circle at 18% 2%, rgba(47,111,237,.055), transparent 35%),
    radial-gradient(circle at 92% 8%, rgba(20,60,140,.055), transparent 36%);
}
.po--partner .swpm-portal-project-shell--with-nav {
  gap: 22px;
}
.po--partner .swpm-portal-project-sidebar {
  top: 20px;
  max-height: calc(100vh - 136px);
  overflow: auto;
  border-color: var(--pp-line);
  background: rgba(255,253,248,.86);
  box-shadow: var(--pp-shadow-sm);
}
.po--partner .swpm-portal-project-detail,
.po--dev .swpm-developer-workspace-content {
  min-width: 0;
}
.po--dev .swpm-developer-portal-shell .swpm-portal-content {
  padding: 26px;
}
.po--dev .swpm-developer-hero,
.po--dev .swpm-portal-hero {
  margin-bottom: 20px;
}
.po--dev .swpm-kpi-grid,
.po--partner .swpm-portal-kpis {
  margin-bottom: 18px;
}
.po--dev .swpm-card,
.po--partner .swpm-card,
.po--partner .po-card,
.po--dev .po-card {
  backdrop-filter: none;
}
.po--partner .swpm-empty-state,
.po--dev .swpm-empty-state {
  background: rgba(255,255,255,.72);
  border: 1px dashed currentColor;
  opacity: .88;
}

@media (max-width: 1180px) {
  .po--partner .swpm-portal-project-shell--with-nav {
    grid-template-columns: 1fr;
  }
  .po--partner .swpm-portal-project-sidebar {
    position: static;
    max-height: none;
  }
}
@media (max-width: 1023px) {
  .po-portal-shell-v843 .po-rail { width: 72px; }
  .po-portal-shell-v843 .po-nav-ic { width: 34px; height: 34px; }
  .po-portal-shell-v843 .po-rail-foot .po-pill { padding-left: 7px; padding-right: 7px; }
}
@media (max-width: 780px) {
  .po-portal-shell-v843 {
    height: auto;
    min-height: 100vh;
    overflow: visible;
  }
  .po-portal-shell-v843 .swpm-portal-topbar {
    position: sticky;
    top: 0;
  }
  .po-portal-shell-v843 .po-shell {
    display: block;
    overflow: visible;
  }
  .po-portal-shell-v843 .po-rail {
    width: auto;
    position: sticky;
    top: 58px;
    z-index: 15;
    border-right: 0;
    border-bottom: 1px solid;
    min-height: 0;
  }
  .po-portal-shell-v843 .po-brand,
  .po-portal-shell-v843 .po-rail-foot { display: none; }
  .po-portal-shell-v843 .po-nav {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    padding: 10px 14px;
    scrollbar-width: none;
  }
  .po-portal-shell-v843 .po-nav::-webkit-scrollbar { display: none; }
  .po-portal-shell-v843 .po-nav-group { display: none; }
  .po-portal-shell-v843 .po-nav-item {
    flex: 0 0 auto;
    min-width: 118px;
    margin: 0;
    padding: 8px 10px;
    justify-content: flex-start;
  }
  .po-portal-shell-v843 .po-nav-item > span:not(.po-nav-count) { display: block; }
  .po-portal-shell-v843 .po-nav-item strong,
  .po-portal-shell-v843 .po-nav-item small { display: block; }
  .po-portal-shell-v843 .po-body { overflow: visible; }
  .po-portal-shell-v843 .swpm-portal-content { padding: 16px; }
  .po-portal-shell-v843 .swpm-portal-global-header { padding: 16px 16px 0; }
  .po-portal-shell-v843 .po-preview { padding-left: 16px; padding-right: 16px; flex-wrap: wrap; }
  .po--partner .swpm-portal-project-sidebar { display: none; }
}

/* v0.7.9.8.44 — Partner/Developer portal finishing pass.
   Fixes sidebar active states, section styling drift and remaining raw admin-card feel. */
.po-portal-shell-v843 .po-nav-item[aria-current="page"],
.po-portal-shell-v843 .po-nav-item.is-on { outline: none; }
.po--partner .po-nav-item.is-on,
.po--partner .po-nav-item[aria-current="page"] {
  background: linear-gradient(135deg, #fff8e7 0%, #f6ead0 100%);
  color: var(--pp-accent-2);
  border: 1px solid rgba(168,123,30,.22);
  box-shadow: inset 3px 0 0 var(--pp-accent), 0 8px 18px -14px rgba(168,123,30,.45);
}
.po--dev .po-nav-item.is-on,
.po--dev .po-nav-item[aria-current="page"] {
  background: linear-gradient(135deg, #eef5ff 0%, #e8f0ff 100%);
  color: var(--dp-accent-2);
  border: 1px solid rgba(47,111,237,.22);
  box-shadow: inset 3px 0 0 var(--dp-accent), 0 8px 18px -14px rgba(47,111,237,.45);
}
.po-portal-shell-v843 .po-nav-item:focus-visible {
  box-shadow: 0 0 0 3px rgba(47,111,237,.2), inset 3px 0 0 currentColor;
}
.po--partner .po-rail,
.po--partner .po-body,
.po--partner .swpm-portal-content {
  background-color: transparent;
}
.po--partner .swpm-portal-content > .swpm-card,
.po--partner .swpm-portal-content .swpm-card:not(.swpm-kpi),
.po--partner .swpm-portal-project-detail .swpm-card,
.po--partner .swpm-portal-project-sidebar,
.po--partner .swpm-portal-tab-panel > .swpm-card,
.po--partner .swpm-portal-detail-grid > .swpm-card {
  background: rgba(255,253,248,.94);
  border: 1px solid var(--pp-line);
  box-shadow: var(--pp-shadow-sm);
  border-radius: 16px;
}
.po--partner .swpm-card-header,
.po--partner .swpm-portal-overview-card > .swpm-card-header,
.po--partner .swpm-portal-attention-card > .swpm-card-header,
.po--partner .swpm-portal-project-detail .swpm-card-header {
  background: linear-gradient(180deg, rgba(255,253,248,.98) 0%, rgba(250,247,240,.98) 100%);
  border-bottom-color: var(--pp-line-soft);
}
.po--partner .swpm-card-header h2,
.po--partner .swpm-card-header h3,
.po--partner .po-card-t {
  color: var(--pp-ink);
  letter-spacing: -.015em;
}
.po--partner .swpm-muted-text,
.po--partner .swpm-portal-meta,
.po--partner .swpm-card-header p {
  color: var(--pp-ink-2);
}
.po--partner .swpm-portal-board-header,
.po--partner .swpm-portal-project-groups,
.po--partner .swpm-portal-secondary-grid,
.po--partner .swpm-portal-list,
.po--partner .swpm-portal-line-title,
.po--partner .swpm-portal-response-form {
  color: var(--pp-ink);
}
.po--partner .swpm-portal-group {
  border: 1px solid var(--pp-line-soft);
  border-radius: 14px;
  background: rgba(255,255,255,.56);
  margin-bottom: 14px;
  overflow: hidden;
}
.po--partner .swpm-portal-group > summary {
  padding: 12px 14px;
  background: linear-gradient(180deg,#fffdf8,#fbf7ee);
  border-bottom: 1px solid var(--pp-line-soft);
}
.po--partner .swpm-portal-project-list,
.po--partner .swpm-portal-list {
  display: grid;
  gap: 10px;
}
.po--partner .swpm-portal-project-card,
.po--partner .swpm-portal-list-item,
.po--partner .swpm-portal-milestone-card,
.po--partner .swpm-portal-document-row,
.po--partner .swpm-portal-input-row,
.po--partner .swpm-portal-task-card,
.po--partner .swpm-portal-change-card {
  background: #fffdf8;
  border: 1px solid var(--pp-line-soft);
  border-radius: 14px;
  box-shadow: 0 1px 2px rgba(58,46,20,.035);
}
.po--partner .swpm-portal-project-card:hover,
.po--partner .swpm-portal-list-item:hover,
.po--partner .swpm-portal-document-row:hover {
  border-color: rgba(168,123,30,.32);
  box-shadow: var(--pp-shadow-sm);
}
.po--partner .swpm-portal-tabs--sticky {
  background: rgba(255,253,248,.94);
  border: 1px solid var(--pp-line);
  box-shadow: var(--pp-shadow-sm);
  border-radius: 999px;
  padding: 5px;
}
.po--partner .swpm-portal-tab {
  border-radius: 999px;
  color: var(--pp-ink-2);
}
.po--partner .swpm-portal-tab.is-active,
.po--partner .swpm-portal-tab[aria-selected="true"] {
  background: var(--pp-hero);
  color: #fff;
  box-shadow: 0 6px 16px -12px rgba(58,46,20,.55);
}
.po--partner .swpm-portal-tab span:not(.swpm-tab-flag) {
  background: rgba(168,123,30,.12);
  color: var(--pp-accent-2);
}
.po--partner .swpm-portal-tab.is-active span:not(.swpm-tab-flag),
.po--partner .swpm-portal-tab[aria-selected="true"] span:not(.swpm-tab-flag) {
  background: rgba(255,255,255,.18);
  color: #fff;
}
.po--partner .swpm-table-wrap,
.po--partner .po-tablewrap {
  border: 1px solid var(--pp-line);
  border-radius: 14px;
  background: #fffdf8;
  box-shadow: var(--pp-shadow-sm);
}
.po--partner table.swpm-table thead th,
.po--partner .swpm-table thead th {
  background: #faf7ef;
  color: var(--pp-ink-3);
  border-bottom-color: var(--pp-line);
}
.po--partner table.swpm-table tbody td,
.po--partner .swpm-table tbody td {
  border-bottom-color: var(--pp-line-soft);
}
.po--partner .swpm-btn--primary,
.po--partner .po-btn-1 {
  background: var(--pp-accent);
  border-color: var(--pp-accent);
  color: #fff;
}
.po--partner .swpm-btn--primary:hover,
.po--partner .po-btn-1:hover { background: var(--pp-accent-2); }
.po--partner .swpm-btn--secondary,
.po--partner .po-btn-2 {
  background: #fffdf8;
  border-color: var(--pp-line);
  color: var(--pp-ink);
}
.po--partner .swpm-alert,
.po--partner .po-preview {
  border-radius: 0;
}
.po--partner .po-preview {
  background: #fff7e3;
  color: var(--pp-accent-2);
}
.po--partner .swpm-portal-project-sidebar .swpm-portal-project-link,
.po--partner .swpm-portal-project-sidebar a {
  text-decoration: none;
}
.po--partner .swpm-portal-project-sidebar .is-active,
.po--partner .swpm-portal-project-sidebar .is-on {
  border-color: var(--pp-accent);
  box-shadow: 0 0 0 3px var(--pp-accent-ring);
}
.po--partner .po-hero,
.po--partner .swpm-portal-hero {
  box-shadow: var(--pp-shadow-lg);
}
.po--partner .po-calendar-summary,
.po--partner .po-calendar-event,
.po--partner .po-row {
  color: inherit;
}
.po--partner .po-row,
.po--partner .po-calendar-event {
  background: #fffdf8;
  border-color: var(--pp-line-soft);
  text-decoration: none;
}
.po--partner .po-row:hover,
.po--partner .po-calendar-event:hover {
  border-color: rgba(168,123,30,.34);
  box-shadow: var(--pp-shadow-sm);
}
.po--partner .po-cal-cell.is-muted { opacity: .45; background: #fbf8f1; }
.po--partner .po-cal-cell:has(.po-ev) { background: linear-gradient(180deg,#fffdf8,#fffaf2); }

.po--dev .po-nav-item.is-on strong,
.po--partner .po-nav-item.is-on strong { font-weight: 760; }
.po--dev .swpm-card,
.po--dev .po-card {
  border-radius: 16px;
}
.po--dev .swpm-card-header {
  background: linear-gradient(180deg,#ffffff,#f8faff);
}
.po--dev .swpm-developer-workspace-content .swpm-card,
.po--dev .swpm-developer-workspace-content .po-card {
  box-shadow: var(--dp-shadow-sm);
  border-color: var(--dp-line);
}
.po--dev .swpm-developer-workspace-content .swpm-card:hover {
  box-shadow: var(--dp-shadow);
}
@media (max-width: 780px) {
  .po--partner .po-nav-item.is-on,
  .po--dev .po-nav-item.is-on {
    box-shadow: inset 0 -3px 0 currentColor;
  }
  .po--partner .swpm-portal-tabs--sticky {
    border-radius: 16px;
    padding: 6px;
  }
  .po--partner .swpm-portal-tab { border-radius: 12px; }
}

/* v0.7.9.8.45 — Portal contrast + hero completeness + stable rail navigation.
   Addresses live feedback: weak hero contrast, missing hero utility elements,
   and menu clicks visually jumping before the clicked item becomes active. */
.po-portal-shell-v843 .po-nav-item {
  border: 1px solid transparent;
  min-height: 48px;
  box-sizing: border-box;
  will-change: background-color, border-color, box-shadow;
}
.po-portal-shell-v843 .po-nav-item.is-pending {
  opacity: .94;
}
.po--partner .po-nav-item.is-pending {
  background: linear-gradient(135deg, #fff8e7 0%, #f6ead0 100%);
  color: var(--pp-accent-2);
  border-color: rgba(168,123,30,.22);
  box-shadow: inset 3px 0 0 var(--pp-accent), 0 8px 18px -14px rgba(168,123,30,.45);
}
.po--dev .po-nav-item.is-pending {
  background: linear-gradient(135deg, #eef5ff 0%, #e8f0ff 100%);
  color: var(--dp-accent-2);
  border-color: rgba(47,111,237,.22);
  box-shadow: inset 3px 0 0 var(--dp-accent), 0 8px 18px -14px rgba(47,111,237,.45);
}
.po--partner .po-nav-item.is-on .po-nav-ic,
.po--partner .po-nav-item[aria-current="page"] .po-nav-ic,
.po--partner .po-nav-item.is-pending .po-nav-ic {
  background: var(--pp-accent);
  color: #fff;
}
.po--dev .po-nav-item.is-on .po-nav-ic,
.po--dev .po-nav-item[aria-current="page"] .po-nav-ic,
.po--dev .po-nav-item.is-pending .po-nav-ic {
  background: var(--dp-accent);
  color: #fff;
}

.po--dev .swpm-portal-hero,
.po--dev .swpm-developer-hero,
.po--partner .swpm-portal-hero,
.po--partner .po-hero,
.po--partner .swpm-portal-global-hero {
  isolation: isolate;
}
.po--dev .swpm-portal-hero .swpm-kicker,
.po--dev .swpm-developer-hero .swpm-kicker,
.po--partner .swpm-portal-hero .swpm-kicker,
.po--partner .po-hero .po-hero-eyebrow,
.po--partner .swpm-portal-global-hero .swpm-kicker {
  color: rgba(255,255,255,.86) !important;
  opacity: 1 !important;
  text-shadow: 0 1px 2px rgba(0,0,0,.18);
}
.po--dev .swpm-portal-hero h1,
.po--dev .swpm-portal-hero h2,
.po--dev .swpm-developer-hero h1,
.po--partner .swpm-portal-hero h1,
.po--partner .swpm-portal-hero h2,
.po--partner .po-hero .po-hero-h,
.po--partner .swpm-portal-global-hero h2 {
  color: #fff !important;
  text-shadow: 0 1px 2px rgba(0,0,0,.22);
}
.po--dev .swpm-portal-hero .swpm-muted-text,
.po--dev .swpm-developer-hero .swpm-muted-text,
.po--partner .swpm-portal-hero .swpm-muted-text,
.po--partner .po-hero .po-hero-sub,
.po--partner .swpm-portal-global-hero .swpm-muted-text {
  color: rgba(255,255,255,.84) !important;
  opacity: 1 !important;
}
.po--dev .swpm-developer-hero,
.po--dev .swpm-portal-hero {
  background: linear-gradient(135deg,#07152d 0%,#123766 48%,#1e5d93 100%) !important;
  border: 1px solid rgba(255,255,255,.1) !important;
}
.po--partner .swpm-portal-hero,
.po--partner .po-hero,
.po--partner .swpm-portal-global-hero {
  background: linear-gradient(135deg,#241d12 0%,#4c3920 52%,#8a6416 100%) !important;
  border: 1px solid rgba(255,255,255,.1) !important;
}

.swpm-portal-hero--with-panel {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) minmax(260px, 360px);
  gap: 20px;
  align-items: stretch;
  min-height: 184px;
}
.swpm-portal-hero__main {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-width: 0;
}
.swpm-portal-hero__panel {
  align-self: stretch;
  display: grid;
  align-content: center;
  gap: 10px;
  padding: 16px;
  border-radius: 16px;
  background: rgba(255,255,255,.13);
  border: 1px solid rgba(255,255,255,.24);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.18), 0 12px 24px -20px rgba(0,0,0,.55);
  color: #fff;
}
.swpm-portal-hero__panel .po-pill {
  width: fit-content;
  background: rgba(255,255,255,.16);
  border-color: rgba(255,255,255,.28);
  color: #fff;
}
.swpm-portal-hero__metric strong {
  display: block;
  font-size: 30px;
  line-height: 1;
  letter-spacing: -.035em;
  color: #fff;
}
.swpm-portal-hero__metric span,
.swpm-portal-hero__meta-row,
.swpm-portal-hero__panel-note {
  color: rgba(255,255,255,.82);
  font-size: 12.5px;
}
.swpm-portal-hero__meta-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.swpm-portal-hero__meta-row span {
  padding: 4px 8px;
  border-radius: 999px;
  background: rgba(255,255,255,.12);
  border: 1px solid rgba(255,255,255,.14);
}
.swpm-portal-hero__notice.swpm-alert {
  margin-top: 16px;
  border-radius: 14px !important;
  color: #fff;
  background: rgba(255,255,255,.08);
  border-color: rgba(255,255,255,.34);
}
.po--dev .swpm-portal-hero__panel .swpm-btn--primary {
  background: #ffffff;
  border-color: #ffffff;
  color: #102b55;
  box-shadow: 0 10px 22px -16px rgba(0,0,0,.5);
}
.po--partner .po-portal-calendar-hero-actions .po-btn,
.po--partner .swpm-portal-hero .po-btn,
.po--partner .swpm-portal-global-hero .swpm-btn {
  box-shadow: 0 10px 22px -16px rgba(0,0,0,.5);
}
.po--partner .swpm-portal-kpis .swpm-kpi-value,
.po--dev .swpm-kpi-card strong,
.po--dev .swpm-kpi .swpm-kpi-value {
  color: var(--swpm-ink, #0f172a);
}
.po--dev .swpm-kpi-card span,
.po--dev .swpm-kpi-card small,
.po--dev .swpm-kpi-label,
.po--dev .swpm-kpi-note {
  color: var(--dp-ink-2) !important;
}
.po--partner .swpm-empty-state,
.po--dev .swpm-empty-state {
  color: inherit;
  border-color: rgba(122,132,151,.42);
}

@media (max-width: 860px) {
  .swpm-portal-hero--with-panel { grid-template-columns: 1fr; min-height: 0; }
  .swpm-portal-hero__panel { align-content: start; }
}
@media (max-width: 780px) {
  .po-portal-shell-v843 .po-nav-item { min-height: 50px; border: 1px solid transparent; }
  .po-portal-shell-v843 .po-nav-item.is-on,
  .po-portal-shell-v843 .po-nav-item.is-pending,
  .po-portal-shell-v843 .po-nav-item[aria-current="page"] {
    box-shadow: inset 0 -3px 0 currentColor, 0 8px 18px -16px currentColor;
  }
}

/* v0.7.9.8.47 — Portal contrast + no-jump hardening fallback.
   Extra-specific locks because screenshots showed muted dark hero text on dark gradients. */
.po-portal-shell-v843.po--dev .swpm-portal-hero,
.po-portal-shell-v843.po--dev .swpm-developer-hero,
.po-portal-shell-v843.po--partner .swpm-portal-hero,
.po-portal-shell-v843.po--partner .swpm-portal-global-hero,
.po-portal-shell-v843.po--partner .po-hero {
  color: #ffffff !important;
}
.po-portal-shell-v843.po--dev .swpm-portal-hero :is(.swpm-kicker,.swpm-muted-text,p,small,span),
.po-portal-shell-v843.po--dev .swpm-developer-hero :is(.swpm-kicker,.swpm-muted-text,p,small,span),
.po-portal-shell-v843.po--partner .swpm-portal-hero :is(.swpm-kicker,.swpm-muted-text,p,small,span),
.po-portal-shell-v843.po--partner .swpm-portal-global-hero :is(.swpm-kicker,.swpm-muted-text,p,small,span),
.po-portal-shell-v843.po--partner .po-hero :is(.po-hero-eyebrow,.po-hero-sub,p,small,span) {
  color: rgba(255,255,255,.88) !important;
  opacity: 1 !important;
}
.po-portal-shell-v843.po--dev .swpm-portal-hero :is(h1,h2,h3,strong),
.po-portal-shell-v843.po--dev .swpm-developer-hero :is(h1,h2,h3,strong),
.po-portal-shell-v843.po--partner .swpm-portal-hero :is(h1,h2,h3,strong),
.po-portal-shell-v843.po--partner .swpm-portal-global-hero :is(h1,h2,h3,strong),
.po-portal-shell-v843.po--partner .po-hero :is(.po-hero-h,h1,h2,h3,strong) {
  color: #ffffff !important;
}
.po-portal-shell-v843 .swpm-portal-hero__notice,
.po-portal-shell-v843 .swpm-portal-hero__notice * {
  color: #ffffff !important;
}
.po-portal-shell-v843 .swpm-empty-state {
  border-style: solid !important;
  border-color: rgba(148,163,184,.28) !important;
  background: rgba(255,255,255,.72) !important;
  color: #0f172a !important;
}
.po-portal-shell-v843 .po-nav-item {
  will-change: background-color, box-shadow;
  transform: translateZ(0);
  scroll-margin-top: 96px;
}
.po-portal-shell-v843 .po-nav-item.is-pending,
.po-portal-shell-v843 .po-nav-item:active {
  transition-duration: 0ms !important;
}


/* SWPM v0.7.9.8.55 — Partner portal preview/navigation polish.
   Fixes video-observed issues: activity links no longer point at the wrong sections,
   hash navigation scrolls inside the portal body, and project-detail pages avoid horizontal drift. */
.po-portal-shell-v843 .po-body,
.po-portal-shell-v843 .swpm-portal-content,
.po-portal-shell-v843 .swpm-portal-global-header,
.po-portal-shell-v843 .swpm-portal-global-hero,
.po-portal-shell-v843 .swpm-portal-project-detail {
  min-width: 0;
  max-width: 100%;
}
.po-portal-shell-v843 .po-body {
  overflow-x: hidden;
}
.po-portal-shell-v843 .swpm-portal-content {
  box-sizing: border-box;
}
.po--partner .swpm-portal-project-shell--with-nav {
  grid-template-columns: minmax(220px, 280px) minmax(0, 1fr);
  width: 100%;
  max-width: 100%;
}
.po--partner .swpm-portal-project-sidebar {
  min-width: 0;
}
.swpm-portal-anchor {
  display: block;
  position: relative;
  top: -92px;
  height: 1px;
  width: 1px;
  overflow: hidden;
  pointer-events: none;
}
.po--partner .po-nav-item.is-pending {
  background: var(--pp-accent-tint);
  color: var(--pp-accent-2);
}
.po--partner .po-nav-item[href*="#portal-documents-overview"] small::after {
  content: " · select project";
  opacity: .78;
}
@media (max-width: 1180px) {
  .po--partner .swpm-portal-project-shell--with-nav {
    grid-template-columns: 1fr;
  }
}

/* v0.7.9.8.56 — Partner Portal menu/content cleanup */
.po--partner .swpm-portal-home-sections {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 18px;
}
.po--partner .swpm-portal-menu-section {
  scroll-margin-top: 104px;
}
.po--partner .swpm-portal-feed-list {
  display: grid;
  gap: 10px;
}
.po--partner .swpm-portal-feed-item {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  border: 1px solid rgba(148, 163, 184, .28);
  border-radius: 16px;
  background: rgba(255,255,255,.82);
  color: inherit;
  text-decoration: none;
  box-shadow: 0 8px 20px rgba(15, 23, 42, .04);
}
.po--partner .swpm-portal-feed-item:hover {
  border-color: rgba(193, 137, 35, .38);
  background: rgba(255,251,235,.92);
  transform: translateY(-1px);
}
.po--partner .swpm-portal-feed-icon {
  width: 34px;
  height: 34px;
  display: inline-grid;
  place-items: center;
  border-radius: 12px;
  background: rgba(193, 137, 35, .13);
  color: #7c4a03;
  font-weight: 800;
}
.po--partner .swpm-portal-feed-item strong {
  display: block;
  color: #1f2937;
  font-size: 13px;
  line-height: 1.25;
}
.po--partner .swpm-portal-feed-item small {
  display: block;
  margin-top: 3px;
  color: #667085;
  line-height: 1.35;
}
.po--partner .swpm-project-document-grid--partner-home {
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}
.po--partner .swpm-portal-anchor {
  display: block;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
  scroll-margin-top: 104px;
}
.po--partner .swpm-portal-secondary-grid {
  display: none;
}
@media (max-width: 720px) {
  .po--partner .swpm-portal-feed-item {
    grid-template-columns: 32px minmax(0, 1fr);
  }
  .po--partner .swpm-portal-feed-item > .swpm-badge {
    grid-column: 2;
    justify-self: start;
  }
}

/* v0.7.9.8.57 — Partner Portal tabbed workspace + project card refinement */
.po--partner .swpm-portal-home-sections {
  max-width: 1220px;
  margin-inline: auto;
}
.po--partner .swpm-portal-single-tab {
  min-height: 62vh;
}
.po--partner .swpm-portal-dashboard-shortcuts .po-card-b {
  padding-top: 4px;
}
.po--partner .swpm-portal-shortcut-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}
.po--partner .swpm-portal-shortcut-card {
  min-height: 104px;
  display: grid;
  grid-template-rows: auto auto 1fr;
  align-content: start;
  gap: 7px;
  padding: 16px;
  border: 1px solid rgba(168,123,30,.18);
  border-radius: 18px;
  background: linear-gradient(180deg, #fffdf8 0%, #fbf7ef 100%);
  color: var(--pp-ink);
  text-decoration: none;
  box-shadow: var(--pp-shadow-sm);
}
.po--partner .swpm-portal-shortcut-card:hover {
  transform: translateY(-1px);
  border-color: rgba(168,123,30,.34);
  box-shadow: var(--pp-shadow);
}
.po--partner .swpm-portal-shortcut-card > span {
  width: 34px;
  height: 34px;
  display: inline-grid;
  place-items: center;
  border-radius: 12px;
  background: rgba(14, 94, 87, .10);
  color: var(--pp-accent-2);
  font-weight: 900;
}
.po--partner .swpm-portal-shortcut-card strong {
  font-size: 15px;
  letter-spacing: -.01em;
}
.po--partner .swpm-portal-shortcut-card small {
  color: var(--pp-ink-2);
  line-height: 1.35;
}
.po--partner .swpm-portal-project-groups {
  display: grid;
  gap: 18px;
  background: linear-gradient(180deg, rgba(255,253,248,.90), rgba(250,247,239,.88));
}
.po--partner .swpm-portal-group {
  border-radius: 18px;
  background: rgba(255,255,255,.72);
}
.po--partner .swpm-portal-group > summary {
  min-height: 48px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 16px;
  font-size: 12px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--pp-ink-3);
  cursor: pointer;
}
.po--partner .swpm-portal-project-list {
  grid-template-columns: repeat(auto-fit, minmax(310px, 1fr));
  align-items: stretch;
  padding: 14px;
  gap: 14px;
}
.po--partner .swpm-portal-project-card {
  min-height: 218px;
  height: 100%;
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 16px;
  overflow: hidden;
  border-radius: 18px;
  background: linear-gradient(180deg, #ffffff 0%, #fffdf8 100%);
  box-shadow: 0 12px 30px rgba(58,46,20,.055);
  color: var(--pp-ink);
  text-decoration: none;
}
.po--partner .swpm-portal-project-card--link { cursor: pointer; }
.po--partner .swpm-portal-project-card--link:hover {
  transform: translateY(-2px);
  border-color: rgba(14,94,87,.32);
  box-shadow: 0 18px 38px rgba(58,46,20,.09);
}
.po--partner .swpm-portal-project-card__top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}
.po--partner .swpm-portal-project-title-row {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 7px;
  min-width: 0;
}
.po--partner .swpm-portal-project-name {
  color: var(--pp-ink);
  font-size: 15px;
  line-height: 1.25;
  letter-spacing: -.012em;
  overflow-wrap: anywhere;
}
.po--partner .swpm-portal-open-hint {
  flex: 0 0 auto;
  white-space: nowrap;
  font-size: 11px;
  font-weight: 800;
  color: var(--pp-accent-2);
  background: rgba(14,94,87,.08);
  border: 1px solid rgba(14,94,87,.14);
  border-radius: 999px;
  padding: 5px 8px;
}
.po--partner .swpm-portal-project-card__body {
  min-height: 54px;
}
.po--partner .swpm-portal-project-summary {
  margin: 0;
  color: var(--pp-ink-2);
  line-height: 1.45;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.po--partner .swpm-portal-project-summary.is-empty {
  color: rgba(92,75,42,.56);
  font-style: italic;
}
.po--partner .swpm-portal-project-metrics {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin-top: auto;
}
.po--partner .swpm-portal-project-metrics span {
  min-width: 0;
  padding: 9px 10px;
  border-radius: 12px;
  background: rgba(245,240,229,.72);
  border: 1px solid rgba(168,123,30,.12);
}
.po--partner .swpm-portal-project-metrics strong,
.po--partner .swpm-portal-project-metrics small {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.po--partner .swpm-portal-project-metrics strong {
  color: var(--pp-ink);
  font-size: 12px;
  line-height: 1.2;
}
.po--partner .swpm-portal-project-metrics small {
  margin-top: 3px;
  color: var(--pp-ink-3);
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.po--partner .swpm-portal-progress-line {
  height: 7px;
  overflow: hidden;
  border-radius: 999px;
  background: rgba(14,94,87,.10);
}
.po--partner .swpm-portal-progress-line span {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #0e5e57, #2aa394);
}
.po--partner .swpm-portal-project-flags {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  padding-top: 2px;
}
.po--partner .swpm-portal-board-card--planning .swpm-portal-open-hint { color: #7c4a03; background: rgba(193,137,35,.10); border-color: rgba(193,137,35,.18); }
.po--partner .swpm-portal-board-card--paused { opacity: .78; }
.po--partner .swpm-portal-board-card--paused:hover { opacity: .96; }
@media (max-width: 980px) {
  .po--partner .swpm-portal-shortcut-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .po--partner .swpm-portal-project-list { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
}
@media (max-width: 640px) {
  .po--partner .swpm-portal-shortcut-grid { grid-template-columns: 1fr; }
  .po--partner .swpm-portal-project-list { grid-template-columns: 1fr; padding: 10px; }
  .po--partner .swpm-portal-project-card { min-height: 0; }
  .po--partner .swpm-portal-project-card__top { flex-direction: column; align-items: flex-start; }
  .po--partner .swpm-portal-project-metrics { grid-template-columns: 1fr; }
}

/* v0.7.9.8.58 — Partner Portal spacing + unified project-card board */
.po--partner.po-portal-shell-v843 .swpm-portal-content {
  width: 100%;
  max-width: none;
  padding: 22px 28px 40px;
}
.po--partner .swpm-portal-content--compact-top {
  padding-top: 18px;
}
.po--partner .swpm-portal-home-sections {
  width: 100%;
  max-width: min(1540px, 100%);
  margin-inline: 0 auto;
}
.po--partner .swpm-portal-single-tab {
  min-height: auto;
}
.po--partner .swpm-portal-projects-workspace-v58 {
  width: 100%;
  max-width: none;
  overflow: hidden;
}
.po--partner .swpm-portal-board-header-v58 {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
  padding: 20px 22px;
}
.po--partner .swpm-portal-board-header-v58 h2 {
  margin: 3px 0 5px;
  font-size: 23px;
  letter-spacing: -.02em;
}
.po--partner .swpm-portal-board-header-v58 p {
  max-width: 760px;
  line-height: 1.45;
}
.po--partner .swpm-portal-board-legend-v58 {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 11px;
  flex-wrap: wrap;
  white-space: nowrap;
}
.po--partner .swpm-portal-board-legend-v58 span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--pp-ink-3);
}
.po--partner .swpm-portal-board-legend-v58 i,
.po--partner .swpm-portal-project-card-v58__dot {
  width: 9px;
  height: 9px;
  border-radius: 999px;
  display: inline-block;
  flex: 0 0 auto;
}
.po--partner .swpm-portal-board-legend-v58 .is-active { background: #21875a; }
.po--partner .swpm-portal-board-legend-v58 .is-attention { background: #b8860b; }
.po--partner .swpm-portal-board-legend-v58 .is-planning { background: #2f6fed; }
.po--partner .swpm-portal-board-legend-v58 .is-review { background: #7c3aed; }
.po--partner .swpm-portal-project-board-v58 {
  padding: 18px;
  background:
    radial-gradient(circle at 10% 0%, rgba(168,123,30,.055), transparent 30%),
    linear-gradient(180deg, rgba(255,253,248,.96) 0%, rgba(250,247,240,.84) 100%);
}
.po--partner .swpm-portal-project-grid-v58 {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(335px, 1fr));
  gap: 16px;
  align-items: stretch;
}
.po--partner .swpm-portal-project-card-v58 {
  --project-tone: #21875a;
  --project-tone-rgb: 33,135,90;
  min-height: 238px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 18px;
  border-radius: 20px;
  border: 1px solid rgba(var(--project-tone-rgb), .18);
  border-left: 5px solid var(--project-tone);
  background:
    linear-gradient(180deg, rgba(255,255,255,.96) 0%, rgba(255,253,248,.96) 100%),
    linear-gradient(135deg, rgba(var(--project-tone-rgb), .10), rgba(255,255,255,0));
  box-shadow: 0 1px 2px rgba(58,46,20,.035), 0 18px 46px -34px rgba(var(--project-tone-rgb), .55);
  color: var(--pp-ink);
  text-decoration: none;
  overflow: hidden;
  transition: transform .14s ease, box-shadow .14s ease, border-color .14s ease;
}
.po--partner .swpm-portal-project-card-v58--attention { --project-tone: #b8860b; --project-tone-rgb: 184,134,11; }
.po--partner .swpm-portal-project-card-v58--active { --project-tone: #21875a; --project-tone-rgb: 33,135,90; }
.po--partner .swpm-portal-project-card-v58--planning { --project-tone: #2f6fed; --project-tone-rgb: 47,111,237; }
.po--partner .swpm-portal-project-card-v58--review { --project-tone: #7c3aed; --project-tone-rgb: 124,58,237; }
.po--partner .swpm-portal-project-card-v58--paused { --project-tone: #7a8497; --project-tone-rgb: 122,132,151; opacity: .86; }
.po--partner .swpm-portal-project-card-v58.is-clickable:hover {
  transform: translateY(-2px);
  border-color: rgba(var(--project-tone-rgb), .34);
  box-shadow: 0 3px 7px rgba(58,46,20,.055), 0 24px 50px -28px rgba(var(--project-tone-rgb), .62);
}
.po--partner .swpm-portal-project-card-v58__top,
.po--partner .swpm-portal-project-card-v58__footer,
.po--partner .swpm-portal-project-card-v58__meta {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.po--partner .swpm-portal-project-card-v58__top {
  justify-content: space-between;
  gap: 12px;
}
.po--partner .swpm-portal-project-card-v58__state {
  min-width: 0;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 5px 9px;
  border-radius: 999px;
  background: rgba(var(--project-tone-rgb), .085);
  color: var(--project-tone);
  font-size: 11px;
  font-weight: 850;
  text-transform: uppercase;
  letter-spacing: .045em;
}
.po--partner .swpm-portal-project-card-v58__dot { background: var(--project-tone); }
.po--partner .swpm-portal-project-card-v58__action {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 28px;
  padding: 5px 10px;
  border-radius: 999px;
  border: 1px solid rgba(var(--project-tone-rgb), .18);
  background: rgba(255,255,255,.72);
  color: var(--pp-ink);
  font-size: 11px;
  font-weight: 800;
}
.po--partner .swpm-portal-project-card-v58__main {
  min-width: 0;
}
.po--partner .swpm-portal-project-card-v58__main h3 {
  margin: 0;
  font-size: 17px;
  line-height: 1.25;
  letter-spacing: -.018em;
  color: var(--pp-ink);
  overflow-wrap: anywhere;
}
.po--partner .swpm-portal-project-card-v58__meta {
  margin-top: 8px;
  color: var(--pp-ink-3);
  font-size: 11.5px;
  font-weight: 650;
}
.po--partner .swpm-portal-project-card-v58__main p {
  min-height: 42px;
  margin: 11px 0 0;
  color: var(--pp-ink-2);
  font-size: 13px;
  line-height: 1.48;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.po--partner .swpm-portal-project-card-v58__main p.is-empty {
  color: rgba(92,75,42,.56);
  font-style: italic;
}
.po--partner .swpm-portal-project-card-v58__metrics {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin-top: auto;
}
.po--partner .swpm-portal-project-card-v58__metrics span {
  min-width: 0;
  padding: 10px 11px;
  border-radius: 14px;
  background: rgba(245,240,229,.72);
  border: 1px solid rgba(168,123,30,.12);
}
.po--partner .swpm-portal-project-card-v58__metrics strong,
.po--partner .swpm-portal-project-card-v58__metrics small {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.po--partner .swpm-portal-project-card-v58__metrics strong {
  color: var(--pp-ink);
  font-size: 13px;
  line-height: 1.15;
}
.po--partner .swpm-portal-project-card-v58__metrics small {
  margin-top: 4px;
  color: var(--pp-ink-3);
  font-size: 10px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .05em;
}
.po--partner .swpm-portal-project-card-v58__progress {
  height: 7px;
  overflow: hidden;
  border-radius: 999px;
  background: rgba(var(--project-tone-rgb), .10);
}
.po--partner .swpm-portal-project-card-v58__progress span {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--project-tone), rgba(var(--project-tone-rgb), .70));
}
.po--partner .swpm-portal-project-card-v58__footer {
  min-height: 28px;
  align-content: flex-end;
}
.po--partner .swpm-portal-project-card-v58__flag {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 4px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 800;
  background: rgba(255,255,255,.70);
  border: 1px solid rgba(168,123,30,.12);
  color: var(--pp-ink-2);
}
.po--partner .swpm-portal-project-card-v58__flag.is-attention { background: rgba(184,134,11,.10); border-color: rgba(184,134,11,.20); color: #7c4a03; }
.po--partner .swpm-portal-project-card-v58__flag.is-message { background: rgba(14,94,87,.10); border-color: rgba(14,94,87,.16); color: var(--pp-accent-2); }
.po--partner .swpm-portal-project-card-v58__flag.is-approval { background: rgba(124,58,237,.08); border-color: rgba(124,58,237,.16); color: #5b21b6; }
.po--partner .swpm-portal-project-card-v58__flag.is-calm { background: rgba(33,135,90,.08); border-color: rgba(33,135,90,.14); color: #1f6b49; }
@media (min-width: 1500px) {
  .po--partner.po-portal-shell-v843 .swpm-portal-content { padding-left: 30px; padding-right: 42px; }
  .po--partner .swpm-portal-project-grid-v58 { grid-template-columns: repeat(auto-fill, minmax(360px, 1fr)); }
}
@media (max-width: 980px) {
  .po--partner .swpm-portal-board-header-v58 { flex-direction: column; align-items: stretch; }
  .po--partner .swpm-portal-board-legend-v58 { justify-content: flex-start; }
  .po--partner .swpm-portal-project-grid-v58 { grid-template-columns: repeat(auto-fill, minmax(275px, 1fr)); }
}
@media (max-width: 640px) {
  .po--partner.po-portal-shell-v843 .swpm-portal-content { padding: 14px; }
  .po--partner .swpm-portal-project-board-v58 { padding: 12px; }
  .po--partner .swpm-portal-project-grid-v58 { grid-template-columns: 1fr; gap: 12px; }
  .po--partner .swpm-portal-project-card-v58 { min-height: 0; padding: 15px; }
  .po--partner .swpm-portal-project-card-v58__metrics { grid-template-columns: 1fr; }
}


/* v0.7.9.8.60 — Partner Portal project-detail contrast + project progress hero
   Project detail no longer relies on the global partner KPI hero. The detail hero now carries
   project-specific hours/progress data and stronger badge/metric contrast. */
.po--partner .swpm-portal-global-metrics {
  display: grid;
  grid-template-columns: repeat(4, minmax(120px, 1fr));
  gap: 12px;
  align-items: stretch;
}
.po--partner .swpm-portal-global-metrics > span {
  display: grid;
  align-content: center;
  gap: 5px;
  min-height: 76px;
  padding: 14px 16px;
  border-radius: 16px;
  background: rgba(255,255,255,.15) !important;
  border: 1px solid rgba(255,255,255,.26) !important;
  color: #fff !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.18), 0 10px 24px rgba(0,0,0,.08);
}
.po--partner .swpm-portal-global-metrics strong {
  color: #fff !important;
  font-size: 24px;
  line-height: 1;
  font-weight: 850;
  text-shadow: 0 1px 2px rgba(0,0,0,.18);
}
.po--partner .swpm-portal-global-metrics em {
  color: rgba(255,255,255,.78) !important;
  font-style: normal;
  font-size: 11px;
  font-weight: 850;
  text-transform: uppercase;
  letter-spacing: .06em;
}
.po--partner .swpm-portal-project-hero--v60 {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) minmax(360px, 460px);
  gap: 24px;
  align-items: stretch;
  padding: 30px 32px !important;
  min-height: 178px;
}
.po--partner .swpm-portal-project-hero__copy {
  min-width: 0;
  display: grid;
  align-content: center;
  gap: 9px;
}
.po--partner .swpm-portal-project-hero__copy h2 {
  margin: 0;
  font-size: clamp(30px, 3vw, 44px) !important;
  line-height: 1.02;
  letter-spacing: -.045em;
}
.po--partner .swpm-portal-project-hero__copy p {
  max-width: 780px;
  margin: 0;
  font-size: 15px;
  line-height: 1.48;
}
.po--partner .swpm-portal-project-hero__side {
  display: grid;
  grid-template-rows: auto 1fr auto;
  gap: 12px;
  min-width: 0;
  align-self: stretch;
}
.po--partner .swpm-portal-project-status-stack--v60 {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.po--partner .swpm-portal-project-status-stack--v60 .swpm-badge {
  background: rgba(20, 15, 8, .32) !important;
  border: 1px solid rgba(255,255,255,.36) !important;
  color: #fff !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.14), 0 8px 18px rgba(0,0,0,.10);
  text-shadow: 0 1px 1px rgba(0,0,0,.18);
}
.po--partner .swpm-portal-project-hero__metrics {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  min-width: 0;
}
.po--partner .swpm-portal-project-hero__metric {
  min-width: 0;
  padding: 13px 14px;
  border-radius: 16px;
  background: rgba(255,255,255,.14);
  border: 1px solid rgba(255,255,255,.25);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.16), 0 8px 18px rgba(0,0,0,.06);
}
.po--partner .swpm-portal-project-hero__metric strong,
.po--partner .swpm-portal-project-hero__metric span {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.po--partner .swpm-portal-project-hero__metric strong {
  color: #fff !important;
  font-size: 22px;
  line-height: 1.08;
  font-weight: 850;
  letter-spacing: -.025em;
  text-shadow: 0 1px 2px rgba(0,0,0,.18);
}
.po--partner .swpm-portal-project-hero__metric span {
  margin-top: 6px;
  color: rgba(255,255,255,.78) !important;
  font-size: 11px;
  font-weight: 850;
  text-transform: uppercase;
  letter-spacing: .06em;
}
.po--partner .swpm-portal-project-hero__metric--progress strong {
  color: #eafff7 !important;
}
.po--partner .swpm-portal-project-hero__progress {
  height: 9px;
  border-radius: 999px;
  overflow: hidden;
  background: rgba(255,255,255,.18);
  box-shadow: inset 0 1px 2px rgba(0,0,0,.16);
}
.po--partner .swpm-portal-project-hero__progress span {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #67e8b9 0%, #f8d171 100%);
  box-shadow: 0 0 0 1px rgba(255,255,255,.16), 0 6px 18px rgba(103,232,185,.18);
}
.po--partner .swpm-portal-project-sidebar .swpm-badge,
.po--partner .swpm-portal-project-nav__item .swpm-badge {
  color: var(--pp-ink) !important;
}
@media (max-width: 980px) {
  .po--partner .swpm-portal-project-hero--v60 {
    grid-template-columns: 1fr;
    padding: 24px !important;
  }
  .po--partner .swpm-portal-project-status-stack--v60 {
    justify-content: flex-start;
  }
}
@media (max-width: 620px) {
  .po--partner .swpm-portal-project-hero__metrics,
  .po--partner .swpm-portal-global-metrics {
    grid-template-columns: 1fr;
  }
  .po--partner .swpm-portal-project-hero__metric strong {
    font-size: 19px;
  }
}
