/* ===== PIB company switcher · reusable component (pairs with switcher.js) ===== */
.psw{--c:#e89b2a;position:relative;display:flex;align-items:center;gap:0;height:46px;padding:0 0 0 6px;border:0;background:none;cursor:pointer;color:var(--cream,#f5ecd6);-webkit-tap-highlight-color:transparent}
.psw:focus-visible{outline:2px solid var(--acc,#e89b2a);outline-offset:3px;border-radius:14px}
/* the card */
.psw-card{position:relative;display:block;width:98px;height:42px;perspective:520px;border-radius:12px}
.psw-rot{position:absolute;inset:0;transform-style:preserve-3d;transition:transform .78s cubic-bezier(.3,1.45,.5,1)}
.psw-f{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:12px}
.psw-f--b{transform:rotateY(180deg)}
.psw-f img{display:block;height:31px;width:auto;max-width:94px;object-fit:contain}
.psw-f img.nb{height:27px}
/* peek: on hover the card lifts its edge as if about to turn */
.psw-card::before{content:"";position:absolute;inset:-3px -6px;border-radius:14px;background:radial-gradient(70% 90% at 50% 50%,color-mix(in srgb,var(--c) 22%,transparent),transparent 70%);opacity:0;transition:opacity .4s,background .6s}
.psw:hover .psw-card::before,.psw[aria-expanded="true"] .psw-card::before{opacity:1}
.psw:not([aria-expanded="true"]):hover .psw-rot{animation:pswPeek 1.6s cubic-bezier(.4,0,.2,1) infinite}
@keyframes pswPeek{0%,100%{transform:rotateY(var(--a,0deg))}35%{transform:rotateY(calc(var(--a,0deg) - 24deg))}55%{transform:rotateY(calc(var(--a,0deg) - 18deg))}}
.psw-glint{position:absolute;inset:0;border-radius:12px;overflow:hidden;pointer-events:none}
.psw-glint::after{content:"";position:absolute;top:-20%;bottom:-20%;width:40%;left:-60%;background:linear-gradient(100deg,transparent,rgba(255,250,235,.55),transparent);transform:skewX(-18deg);opacity:0}
.psw-card.glint .psw-glint::after{animation:pswGlint .8s .28s ease-out}
@keyframes pswGlint{0%{left:-60%;opacity:1}100%{left:130%;opacity:0}}
/* the flip tab */
.psw-tab{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:20px;height:34px;margin-left:2px;border-radius:7px 10px 10px 7px;background:rgba(245,236,214,.05);border:1px solid rgba(245,236,214,.12);color:var(--t3,#9b9283);transform-origin:0 50%;transition:transform .45s cubic-bezier(.3,1.5,.5,1),background .3s,border-color .3s,color .3s}
.psw-tab svg{width:9px;height:9px;transition:transform .35s cubic-bezier(.3,1.5,.5,1)}
.psw-dots{display:flex;flex-direction:column;gap:2px}
.psw-dots i{width:4px;height:4px;border-radius:50%;background:var(--c);opacity:.35;transition:opacity .3s,transform .3s}
.psw-dots i.on{opacity:1;transform:scale(1.25);box-shadow:0 0 6px var(--c)}
.psw:hover .psw-tab,.psw[aria-expanded="true"] .psw-tab{transform:perspective(200px) rotateY(-28deg);background:color-mix(in srgb,var(--c) 18%,transparent);border-color:color-mix(in srgb,var(--c) 55%,transparent);color:var(--cream,#f5ecd6)}
.psw[aria-expanded="true"] .psw-tab svg{transform:rotate(180deg)}
/* Publisher Market wordmark (no raster logo exists yet) */
/* Publisher Market final marks (supplied SVGs, never recoloured): the m icon on the flip card (min 16px),
   the wordmark alone in the company card (min 120px wide). */
.psw-f img.pm-icon{height:22px;width:auto;max-width:none}
.psw-lg img.pm-word{height:auto;width:150px;max-width:100%}
/* panel */
.psw-pn{width:min(760px,calc(100vw - 40px))}
.psw-hd{display:flex;align-items:center;gap:10px;margin:0 2px 12px;font-family:var(--mono,monospace);font-size:10px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--t3,#9b9283)}
.psw-hd b{color:var(--acc,#e89b2a)}
.psw-g{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));gap:10px}
.psw-c{position:relative;display:flex;flex-direction:column;border-radius:16px;padding:12px 12px 12px;min-height:236px;background:rgba(245,236,214,.03);border:1px solid rgba(245,236,214,.08);overflow:hidden;color:var(--cream,#f5ecd6);text-decoration:none;transition:border-color .3s,transform .45s cubic-bezier(.2,.9,.2,1),background .3s}
.psw-c::before{content:"";position:absolute;inset:0;background:radial-gradient(260px 170px at 50% 0%,var(--c),transparent 70%);opacity:0;transition:opacity .4s}
.psw-c:hover,.psw-c:focus-visible{border-color:color-mix(in srgb,var(--c) 55%,transparent);transform:translateY(-3px);outline:none}
.psw-c:hover::before,.psw-c:focus-visible::before{opacity:.16}
/* current site: stays in place, not a link. 2px amber left rule, slightly raised cocoa, "You're here" instead of the arrow */
.psw-c.is-here{cursor:default;background:#1c1916;border-color:rgba(245,236,214,.12);box-shadow:inset 2px 0 0 #e89b2a}
.psw-c.is-here:hover{transform:none;border-color:rgba(245,236,214,.12)}
.psw-c.is-here:hover::before{opacity:0}
.psw-c.is-here em{color:var(--t3,#9b9283)}
.psw-here{font-family:var(--mono,monospace);font-size:9.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#e89b2a}
.psw-v{position:relative;height:96px;border-radius:11px;background:#0b0a09;border:1px solid rgba(245,236,214,.07);margin-bottom:12px;overflow:hidden;display:grid;place-items:center}
.psw-lg{position:relative;height:34px;display:flex;align-items:center}
.psw-lg img{height:30px;width:auto}.psw-lg img.nb{height:27px}
.psw-d{position:relative;margin-top:6px;font-size:12.5px;line-height:1.4;color:var(--t2,#cfc6b4)}
.psw-c em{position:relative;margin-top:auto;padding-top:10px;font-style:normal;font-family:var(--mono,monospace);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--t4,#7a7266);display:flex;justify-content:space-between;transition:color .3s}
.psw-c:hover em{color:var(--c)}
.psw-ft{display:flex;align-items:center;gap:6px;margin-top:14px;padding-top:12px;border-top:1px solid rgba(245,236,214,.08)}
.psw-ft span{font-family:var(--mono,monospace);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--t4,#7a7266);margin-right:auto}
.psw-ft a{font-size:13px;font-weight:600;color:var(--t2,#cfc6b4);padding:6px 12px;border-radius:999px;text-decoration:none;transition:color .2s,background .2s}
.psw-ft a:hover{color:var(--cream,#f5ecd6);background:rgba(245,236,214,.06)}
/* standalone popover (mount mode) */
.psw-wrap{position:relative;display:inline-block}
.psw-pop{position:absolute;left:0;top:calc(100% + 12px);z-index:50;padding:18px;border-radius:22px;background:linear-gradient(180deg,rgba(28,24,21,.98),rgba(14,12,11,.98));border:1px solid rgba(245,236,214,.11);box-shadow:0 50px 100px -40px rgba(0,0,0,.95);opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .25s,transform .4s cubic-bezier(.2,.9,.2,1),visibility 0s .4s}
.psw-wrap.on .psw-pop{opacity:1;visibility:visible;transform:none;transition:opacity .25s,transform .4s cubic-bezier(.2,.9,.2,1)}
/* small screens: cards become rows */
@media (max-width:900px){.psw-lg img.pm-word{width:124px}
  .psw{height:42px;padding-left:2px}
  .psw-card{width:84px;height:38px}
  .psw-f img{height:28px;max-width:82px}.psw-f img.nb{height:23px}
  .psw-tab{height:30px;width:18px}
  .psw-g{grid-template-columns:1fr;gap:8px}
  .psw-c{min-height:0;display:grid;grid-template-columns:104px minmax(0,1fr);grid-template-rows:auto auto auto;column-gap:12px;padding:10px}
  .psw-v{grid-row:1/4;height:84px;margin:0}
  .psw-v .mv-orb{transform:scale(.85)}
  .psw-v .mv-lst{padding:6px;gap:4px}.psw-v .mv-lst div b{display:none}
  .psw-v .mv-nb{padding:7px 7px 4px}
  .psw-lg{height:26px}.psw-lg img{height:22px}.psw-lg img.nb{height:24px}
  .psw-d{margin-top:2px;font-size:12px}
  .psw-c em{padding-top:4px}
  .psw-hd b{display:none}
  }
@media (prefers-reduced-motion:reduce){.psw-rot{transition:none}.psw:hover .psw-rot{animation:none}.psw-card.glint .psw-glint::after{animation:none}}

/* ---- Family logos: one optical weight on one centreline ----
   PIB is a near-square badge, so it gets more height (42px); the two wordmarks share a size, Publisher Market capped at NewsBomb width plus 15%.
   --T is the shared text-band height: the two text lines of the PIB lockup, the NewsBomb caps, the Publisher Market x-height.
   Each logo's height multiplier is 1 / (band height / image height) and its nudge moves the band centre onto the row centre;
   bands measured from the assets: PIB card (pib-logo-card.png, 208x96) rows 25-74, NewsBomb (newsbomb-wordmark.png, 442x96) caps 38-93,
   Publisher Market wordmark x-height 25.1%-79.6% of the viewBox. */
.psw-lg{--T:15px;height:44px;display:flex;align-items:center;justify-content:flex-start}
.psw-lg img{display:block;width:auto;max-width:none;flex:none}
.psw-lg img.pib-lg{height:42px}
.psw-lg img.pm-word{height:18px;width:auto;max-width:139px;transform:translateY(-.4px)}
.psw-lg img.nb{height:calc(var(--T)*1.7455);transform:translateY(calc(var(--T)*-.3182))}
@media (max-width:900px){.psw-lg{--T:12px;height:36px}.psw-lg img.pib-lg{height:34px}.psw-lg img.pm-word{height:14px;max-width:110px}}
/* ---- standalone mount (NewsBomb, Publisher Market): close button, scrim, mobile sheet ---- */
.psw-x{display:none}
.psw-scrim{position:fixed;inset:0;z-index:2147482000;background:rgba(5,4,3,.5);opacity:0;pointer-events:none;transition:opacity .3s}
.psw-pop{z-index:2147482001}
.psw-pop,.psw-pop *{box-sizing:border-box}
.psw-pop a{text-decoration:none}
@media (max-width:900px){
  .psw-scrim.on{opacity:1;pointer-events:auto}
  .psw-pop{position:fixed;left:0;right:0;top:0;max-height:100dvh;overflow-y:auto;border-radius:0 0 22px 22px;padding:56px 16px 18px;transform:translateY(-12px)}
  .psw-pop .psw-pn{width:100%}
  .psw-x{display:grid;place-items:center;position:absolute;top:10px;right:12px;width:40px;height:40px;border-radius:50%;border:1px solid rgba(245,236,214,.18);background:none;color:#f5ecd6;font-size:20px;line-height:1;cursor:pointer}
}
/* NewsBomb wordmark on the flip card: the bomb fuse makes the image taller than its caps, so the caps sit low.
   A 4px lift puts the caps band on the bar's centreline (same optical rule as the card row above). */
.psw-f img.nb{transform:translateY(-4px)}
@media (max-width:900px){.psw-f img.nb{transform:translateY(-3.5px)}}
