/* FD-079, job B. Boards 15/16 first, 13/14 second. Only Explore, City and Event.
   No shell token retargeting: job A owns it. These components consume Home's hb tokens.
   Gradients are deliberate: no invented venue photography or unlicensed hero portrait.
   Removing this sheet reverts presentation; existing controls and selectors survive. */
.card-badges .badge-access{display:inline-flex;max-width:100%;padding:5px 8px;
  border:1px solid #e2c07a;border-radius:5px;background:#32291b;color:#ffe2a6;
  font:600 10px/1.4 "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.7px;
  white-space:normal;overflow-wrap:anywhere}
.card .access-note{margin:12px 0 0;color:var(--hb-body,#ece6db);font-size:13px;line-height:1.65;
  overflow-wrap:anywhere}
.card .access-note a{color:var(--hb-gold,#e2c07a);text-decoration:underline;text-underline-offset:3px}
/* Explore reuses the Home ask pill's dimensions, palette and shadow. */
body[data-view="explore"] .bp-catalogue-search{margin-top:20px;max-width:720px}
.bp-catalogue-search label{display:block;margin-bottom:8px;color:var(--hb-gold);font-size:14px}
.bp-catalogue-search .ask{display:flex;align-items:center;margin:0;gap:10px;
  background:rgba(250,249,246,.96);border:1px solid rgba(255,255,255,.55);
  border-radius:999px;padding:7px 7px 7px 16px;min-height:60px;box-shadow:0 12px 34px rgba(0,0,0,.42)}
.bp-catalogue-search .ask>span{display:flex;color:#241d2e;flex:0 0 auto}
.bp-catalogue-search .ask #catalogue-search{width:100%;min-width:0;flex:1;color:#1d1826;font-size:16px;background:transparent;
  border:0;outline:none;box-shadow:none}
.bp-catalogue-search .ask input::placeholder{color:#686071}
.bp-catalogue-search .ask button{min-height:44px;padding:0 14px;border:0;border-radius:999px;
  background:linear-gradient(140deg,var(--hb-violet),var(--hb-violet-2));color:#fff;font:inherit;cursor:pointer}
.bp-catalogue-search .ask:focus-within{outline:2px solid var(--hb-gold);outline-offset:4px}
.bp-catalogue-search p{margin:10px 2px 0;font-size:13px;color:var(--hb-body)}
#catalogue-status:empty{display:none}
#catalogue-results [hidden],#catalogue-empty[hidden]{display:none!important}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]){
  background:var(--hb-ink);color:var(--hb-body)
}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) #app{
  background:var(--hb-ink);padding-bottom:28px
}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) .page-title{
  font-family:"Playfair Display",Georgia,serif;font-weight:700;text-transform:none;
  font-size:clamp(34px,5vw,56px);line-height:1.12;letter-spacing:-.6px;
  color:var(--hb-gold);overflow-wrap:anywhere;text-wrap:balance
}
.bp-page-hero{position:relative;margin:0 16px 18px;padding:28px 20px 24px;
  border:1px solid var(--hb-line);border-radius:14px;overflow:hidden;
  background:radial-gradient(ellipse at 95% 0%,rgba(139,92,246,.24),transparent 65%),
    radial-gradient(ellipse at 0% 100%,rgba(226,192,122,.12),transparent 65%),var(--hb-ink-2)}
.bp-page-hero .page-title{margin-top:10px}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) .label{
  color:var(--hb-gold);font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:11px;line-height:1.7;letter-spacing:2px;font-weight:400
}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) :is(h2.label,h3.label){
  display:flex;align-items:center;gap:10px;margin:10px 0 8px;font-weight:400
}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) :is(h2.label,h3.label)::before{
  content:"";flex:0 0 5px;width:5px;height:5px;border-radius:50%;background:var(--hb-gold-2);
  box-shadow:0 0 8px rgba(226,192,122,.8)
}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) :is(h2.label,h3.label)::after{
  content:"";flex:1;min-width:18px;height:1px;background:var(--hb-line)
}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) :is(.note,.mono-s,.ev .v,.tile .v,.ev .reason,.nores p){
  color:var(--hb-body)
}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) :is(.ev,.tile,.card){
  border:1px solid var(--hb-line);border-radius:14px;
  background:radial-gradient(ellipse at 100% 0%,rgba(139,92,246,.13),transparent 65%),var(--hb-ink-2);
  color:var(--hb-body);box-shadow:0 8px 24px rgba(0,0,0,.2)
}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) :is(.ev .n,.tile .n,.card h3,.rail-h h2,.nores h3){
  font-family:"Playfair Display",Georgia,serif;font-weight:700;text-transform:none;
  color:var(--hb-gold);letter-spacing:0;line-height:1.2;overflow-wrap:anywhere
}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) .ev .n{font-size:24px}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) :is(.ev .w,.tile .w){
  font-family:"IBM Plex Mono",ui-monospace,monospace;color:var(--hb-gold-2)
}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) :is(.ev .cta,.tile .cta){color:#c4a7ff}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) :is(.chip,.btn,.qa-b){
  background:var(--hb-ink-2);color:var(--hb-gold);border:1px solid var(--hb-line);
  border-radius:999px;min-height:44px
}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) .chip{padding:9px 14px;white-space:normal}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) .chip.on{
  border-color:var(--hb-gold-2);background:rgba(226,192,122,.12);color:var(--hb-gold)
}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) .chip.on::before{
  content:"";display:inline-block;width:6px;height:6px;margin-right:7px;border-radius:50%;background:var(--hb-gold-2)
}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) .btn.primary{
  background:linear-gradient(140deg,var(--hb-violet-2),#5421b1);color:#fff;border-color:#a78bfa
}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) :is(button,a,summary):focus-visible{
  outline:2px solid var(--hb-gold);outline-offset:3px
}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) :is(.cov,.asked,.timing,.eatgame,.nores){
  border:1px solid var(--hb-line);border-radius:14px;background:var(--hb-ink-2);color:var(--hb-body)
}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) :is(.cov p,.timing .v,.asked-v,.asked-no,.eatgame-list){color:var(--hb-body)}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) :is(.cov b,.timing .k,.asked-k){color:var(--hb-gold)}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) .cov p b{display:inline}

/* Board 15 EXAMPLE becomes the real event identity. Static bulbs, never a fabricated time. */
body[data-view="event"] .bp-event-marquee{
  position:relative;margin:8px 16px 18px;padding:32px 25px 30px;border:2px solid var(--hb-gold-dim);
  border-radius:14px;text-align:center;isolation:isolate;
  background:radial-gradient(ellipse at 8% 25%,rgba(226,192,122,.18),transparent 55%),
    radial-gradient(ellipse at 90% 0%,rgba(139,92,246,.27),transparent 60%),var(--hb-ink-2);
  box-shadow:0 0 20px rgba(226,192,122,.16),inset 0 0 24px rgba(226,192,122,.08)
}
.bp-event-marquee::after{content:"";position:absolute;inset:10px;z-index:-1;pointer-events:none;
  border:1px solid var(--hb-line);border-radius:6px}
body[data-view="event"] .bp-event-marquee .page-title{margin:14px auto;max-width:22ch}
body[data-view="event"] .bp-event-marquee :is(.bill-kick,.bp-event-date){
  font-family:"IBM Plex Mono",ui-monospace,monospace;color:var(--hb-gold);font-size:11px;font-weight:400;
  letter-spacing:1.5px;background:rgba(7,6,10,.6);padding:8px 10px;border-radius:5px;margin:0 auto;max-width:fit-content
}
body[data-view="event"] .bp-event-marquee :is(.bp-event-venue,.bill-venue){font-family:Inter,sans-serif;
  font-size:14px;line-height:1.5;color:var(--hb-body);letter-spacing:0}
/* Q69C/FD-115 fix, 2026-09-12: this rule's own body[data-view="event"] prefix out-specifies
   shell.css's .billboard.grounded .billboard-bulbs span rule (0-3-2 vs 0-3-1), so the event
   page's own marquee bulbs hard-forced `animation:none` unconditionally -- the grounded "wow
   moment" chase (NI-2026-08-23-171 JOB B, shell.css) could never fire here regardless of state,
   even though views.js correctly applies the `grounded` class on this exact element (line
   ~2319). verify-billboard-grounded-state.js never caught this because none of its own
   navigations land on a real data-view="event" page. Dropping the override lets the shared
   calm/grounded state machine govern this page like every other billboard surface; the
   event-page-specific gold tone/glow below is preserved. */
body[data-view="event"] .bp-event-marquee .billboard-bulbs span{background:var(--hb-gold);
  box-shadow:0 0 7px 2px rgba(226,192,122,.75)}
body[data-view="event"] .bill-teams{margin:18px auto}
body[data-view="event"] .tm-name{color:var(--hb-gold)}
body[data-view="event"] .qa{padding:0 16px 18px;gap:8px;flex-wrap:wrap}
body[data-view="event"] .qa-b{flex:1;min-width:64px}
body[data-view="event"] .q45-anchor-choice,
body[data-view="event"] .q45-anchor-confirmation{margin:0 16px 18px;padding:14px 16px;border:1px solid var(--hb-line);border-radius:8px;color:var(--hb-body);font-size:14px;line-height:1.5}
body[data-view="event"] .q45-anchor-choice p{margin:0 0 12px}
body[data-view="event"] .q45-anchor-choice .btn{width:100%;min-height:44px;white-space:normal}

/* Place tile: one quiet cuisine/neighbourhood/price line; supporting facts remain below.
   Gradients carry no suggestion that a picture depicts this specific real venue. */
.bp-place .card-top{padding:24px 18px 16px;padding-right:56px;
  background:radial-gradient(ellipse at 100% 0%,rgba(226,192,122,.18),transparent 65%),
    linear-gradient(135deg,rgba(139,92,246,.12),transparent);border-bottom:1px solid var(--hb-line)}
.bp-place .card-top h3{font-size:25px;margin:10px 0 7px}
.bp-place .card-top .meta{color:var(--hb-body);font-size:13px;line-height:1.6;flex-wrap:wrap}
.bp-place .card-top .meta-price{color:var(--hb-body)}
.bp-place .card-top .why{color:var(--hb-body);font-size:14px;line-height:1.6;font-style:normal;border-color:var(--hb-line)}
.bp-place :is(.trust,.est,.actions){border-color:var(--hb-line);background:transparent}
.bp-place :is(.trust-line,.est-v,.wto-line){color:var(--hb-body)}
.bp-place :is(.est-k,.why-btn,.wto-k){color:var(--hb-gold)}
.bp-place :is(.tier,.badge-mi,.badge-traveler,.badge-topgrossing,.consensus,.wto-tag){
  background:var(--hb-ink);border-color:var(--hb-line);color:var(--hb-gold);font-size:10px
}
.bp-place .sv{color:var(--hb-gold);background:var(--hb-ink);border:1px solid var(--hb-line);border-radius:50%}
.bp-place .sv.on{color:var(--hb-gold-2)}
.bp-place-details{padding:0 18px 12px;color:var(--hb-body);font-size:14px}
.bp-place-details summary{min-height:44px;padding:12px 0;color:var(--hb-gold);cursor:pointer;font-size:12px}
.bp-place-details:not([open]){padding-bottom:0}
.bp-place-details :is(.why,.wto){color:var(--hb-body);font-style:normal;font-size:14px;line-height:1.6}
.bp-place-details :is(.trust,.est){margin-left:0;margin-right:0}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) :is(.card-broadway .sv,.btn-sm){
  background:var(--hb-ink-2);color:var(--hb-gold);border-color:var(--hb-line);border-radius:999px
}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) :is(.card-broadway .meta,.theatre-near,.theatre-near b){color:var(--hb-body);border-color:var(--hb-line)}
body:is([data-view="explore"],[data-view="city"],[data-view="event"]) .card-broadway .tier{
  color:var(--hb-gold);background:var(--hb-ink);border-color:var(--hb-line)
}
body[data-view="event"] .efc-board{background:var(--hb-ink-2);color:var(--hb-body);border-color:var(--hb-line);border-radius:14px}
body[data-view="event"] .efc-board{margin:24px 16px;padding:20px}
body[data-view="event"] .efc-board :is(p,span,em,li){color:var(--hb-body);border-color:var(--hb-line)}
body[data-view="event"] .efc-board :is(.efc-event,.efc-name,.efc-stage-label){
  font-family:"Playfair Display",Georgia,serif;color:var(--hb-gold);font-size:21px
}
body[data-view="event"] .efc-board :is(.efc-kicker,.efc-rank){color:var(--hb-gold-2)}
body[data-view="event"] .efc-board :is(.efc-source,.efc-add,.ef-add){color:#c4a7ff}
body[data-view="event"] .efc-board .efc-stage{border-color:var(--hb-line)}

/* Board 15 timeline, keeping the existing semantic section labels and stage order. */
.bp-stop{position:relative;margin:18px 16px 24px;padding:0 0 0 20px;
  border-left:1px solid var(--bp-node,var(--hb-gold-2))}
.bp-opener{--bp-node:var(--hb-gold-2)}
.bp-encore{--bp-node:var(--hb-blue)}
.bp-stop::before{content:"";position:absolute;top:29px;left:-6px;width:11px;height:11px;
  border-radius:50%;background:var(--bp-node);box-shadow:0 0 12px var(--bp-node)}
.bp-stop>.sect{padding:12px 0 18px}
body[data-view="event"] .bp-stop h2.label{display:block;margin:0;width:fit-content;padding:8px 10px;
  border:1px solid var(--hb-line);border-radius:5px;color:var(--bp-node);
  background:repeating-linear-gradient(90deg,transparent 0 16px,rgba(255,255,255,.04) 16px 17px),
    linear-gradient(180deg,#1b1720 49%,#07060a 50%,#0d0b12 52%);font-weight:400}
body[data-view="event"] .bp-stop h2.label::before,body[data-view="event"] .bp-stop h2.label::after{display:none}
.bp-stop .card{margin-left:0;margin-right:0}
.bp-stop .move-tag{margin-left:0;color:var(--hb-gold);background:var(--hb-ink-2);border-color:var(--hb-line)}

/* Board 16: LIGHT changes the introductory panel only; the lower tiles stay on ink. */
[data-palette="LIGHT"] .bp-page-hero{background:linear-gradient(135deg,#fff9ed,#eddcbe);border-color:#bfa270}
[data-palette="LIGHT"] .bp-page-hero :is(.page-title,.label,.mono-s){color:#282016}
@media(min-width:900px){
  .bp-page-hero{margin:8px 16px 26px;padding:38px 32px;min-height:185px}
  body[data-view="event"] .bp-event-marquee{padding:42px 40px;min-height:245px}
  .bp-event-marquee .bp-event-venue{max-width:65ch;margin-left:auto;margin-right:auto}
  .bp-stop{padding-left:30px;margin-top:26px}
  .bp-stop>.card{max-width:none}
  .bp-place .card-top{padding:26px 24px 20px;padding-right:64px}
  body[data-view="city"] #picks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;padding:0 16px}
  body[data-view="city"] #picks>.card{margin:0;align-self:start}
  body:is([data-view="city"],[data-view="explore"]) .grid-cards{
    display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;padding:0 16px
  }
  body:is([data-view="city"],[data-view="explore"]) .grid-cards>.card{margin:0}
  .bp-stop{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px}
  .bp-stop>.sect,.bp-stop>.move-tag{grid-column:1/-1}
  .bp-stop>.card{align-self:start}
}
@media(max-width:389px){
  .bp-page-hero{padding-left:16px;padding-right:16px}
  body[data-view="event"] .bp-event-marquee{padding-left:20px;padding-right:20px}
  .bp-place .card-top h3{font-size:23px}
}
/* Lazy catalogue results share the boards buttons, spacing and palette. */
.bp-place-search { margin: 12px 0; text-align: left; }
.bp-place-search-status { font-size: 14px; margin: 8px 0; }
.bp-place-search-list { display: grid; gap: 8px; max-height: 310px; overflow-y: auto; padding: 6px; }
.bp-place-search-choice { white-space: normal; text-align: left; min-height: 48px; width: 100%; }
.bp-search-focus:focus { outline: 3px solid var(--accent-hot); outline-offset: 4px; box-shadow: 0 0 0 4px var(--bg); }
.bp-search-announcement { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.cp-ask-wrap .ask #ask{border:0;outline:0;box-shadow:none;min-width:0;text-overflow:ellipsis;appearance:none;font-size:16px}
body[data-view="ask"] #app #ask:focus-visible{border:0;outline:0;box-shadow:none}
.cp-ask-wrap .ask:focus-within{outline:2px solid transparent;outline-offset:2px;box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--accent-hot)}
.save-inline-notice{display:block;font-size:12px;line-height:1.5;color:var(--hb-gold);padding:6px 12px;white-space:normal;overflow-wrap:anywhere;min-width:0;max-width:100%} /* wraps at 360 (Fable r2): a clipped "saved on this phone" is a hidden claim */
#planbar:has(.save-inline-notice){flex-wrap:wrap}
#planbar .save-inline-notice{flex-basis:100%;padding:0;text-align:left}
#savingHelp{margin:16px;padding:12px;color:var(--hb-body);font-size:14px}
#savingHelp summary{cursor:pointer;color:var(--hb-gold);min-height:44px;align-content:center}
/* Journey quality: use the existing boards accent for exactly one next action. */
body #app .jq-primary{background:linear-gradient(140deg,var(--hb-violet),var(--hb-violet-2));color:#fff;border-color:#b18cff}
body #app .jq-secondary{background:transparent;color:#49228b;border:1px solid #745a91}
body #app .cp-heading > .jq-primary{margin-top:12px}
body #app .jq-order{display:block;font-size:13px;line-height:1.45;font-weight:400;letter-spacing:0;text-transform:none;color:var(--muted,#b9b1c4);margin:5px 0 10px}

/* Card face: name, held reason, then supporting facts. */
.bp-place > .tile-art{height:100px;min-height:100px;display:flex;position:relative}
.bp-place .card-top > .why{display:block;margin:8px 0 12px;padding:0;border:0}
.jq-card-facts{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.bp-place .card-badges > *{background:transparent;border:0;padding:0}
.stage-b{min-width:0}
.stage-row .jq-reason{display:block;margin:8px 0;color:var(--hb-body)}
#catalogue-empty h3,#catalogue-empty p{font-size:14px;line-height:1.5;margin:0}
.bb-card.bb-fixture .tm{padding:4px 1px}
.bb-card.bb-fixture .tm-logo{width:24px;height:24px;margin:0 auto}
.bb-card.bb-fixture .tm-name{display:none}
.bb-card.bb-fixture .bill-vs-wrap{margin:0 -6px}
.bb-card.bb-fixture .bill-vs{width:12px;height:12px;font-size:7px;border-width:1px}
.college-page{padding:24px 16px 100px;background:var(--hb-ink);color:var(--hb-body);min-height:70vh}
.college-page h1{color:var(--hb-gold);font:600 clamp(28px,5vw,44px)/1.15 "Playfair Display",Georgia,serif;margin:16px 0 24px}
.college-page a{color:var(--hb-gold)}
.college-page>a{display:inline-flex;align-items:center;min-height:44px;scroll-margin-top:80px}
.college-page .btn.primary{background:var(--hb-gold-2);color:var(--hb-ink);min-height:44px}
.college-schools{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.college-school{display:block;padding:12px;border:1px solid var(--hb-line);border-radius:12px;background:var(--hb-ink-2);text-decoration:none}
.college-school h2{font:600 18px/1.25 "Playfair Display",Georgia,serif;margin:12px 0 0;overflow-wrap:break-word}
.college-school .tile-art{width:100%;height:100px}
.college-page a:focus-visible,.college-page button:focus-visible{outline:3px solid #fff;outline-offset:3px}
@media(min-width:768px){.college-page{padding:32px 24px 100px}.college-schools{grid-template-columns:repeat(4,minmax(0,1fr))}.college-school .tile-art{height:150px}}
/* The shared desktop masthead is fixed; College content must clear it. */
@media(min-width:900px){.college-page{padding-top:82px}}
/* C2: one visit action, followed by sourced weekends and the campus base. */
.college-page{max-width:1100px;margin:0 auto;overflow-wrap:anywhere}
.college-page h2{font:600 26px/1.2 "Playfair Display",Georgia,serif;color:var(--hb-gold);margin:0 0 18px}
.college-page h3{font:600 19px/1.3 "Playfair Display",Georgia,serif;color:var(--hb-gold);margin:0 0 10px}
.college-page p{line-height:1.6}
.college-visit,.college-base{background:var(--hb-ink-2);border:1px solid var(--hb-line);border-radius:12px;padding:20px;margin:24px 0}
.college-page fieldset{border:0;padding:0;margin:24px 0 0;min-width:0}
.college-page legend{font-weight:600;margin-bottom:12px}
.college-occasions{display:flex;gap:8px;flex-wrap:wrap}
.college-page .btn{min-height:44px;white-space:normal}
.college-page .btn:not(.primary){background:transparent;border:1px solid var(--hb-gold);color:var(--hb-gold)}
.college-page .js-college-occasion[aria-pressed="true"]{background:var(--hb-gold);color:var(--hb-ink)}
.college-dates{display:flex;gap:12px;flex-wrap:wrap}
.college-dates label{display:grid;gap:8px;flex:1 1 125px;min-width:0}
.college-dates input{box-sizing:border-box;width:100%;min-width:0;min-height:48px;padding:10px;border:1px solid var(--hb-line);border-radius:8px;background:var(--hb-ink);color:var(--hb-body);font:inherit;color-scheme:dark}
.college-dates input:focus-visible{outline:3px solid #fff;outline-offset:3px}
.college-weekends{margin-top:32px}
.college-weekends ul{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.college-weekend{padding:20px;background:var(--hb-ink-2);border:1px solid var(--hb-line);border-radius:12px;min-width:0}
.college-weekend p{margin:8px 0}
.college-source{font-size:13px}
.college-placement,.college-stay{border-top:1px solid var(--hb-line);padding:20px 0;min-width:0}
.college-meal-edit summary{min-height:44px;display:flex;align-items:center;color:var(--hb-gold);cursor:pointer}
.college-meal-form{display:grid;gap:12px}
.college-meal-form label{display:grid;gap:8px}
.college-meal-form input,.college-event-select{width:100%;box-sizing:border-box;min-width:0;min-height:48px;background:var(--hb-ink);color:var(--hb-body);border:1px solid var(--hb-line);border-radius:8px;padding:10px;font:inherit}
.college-draft-day{max-width:none!important}
.college-draft{max-width:760px;padding-bottom:36px}
.college-source a{display:inline-flex;align-items:center;min-height:44px}
.college-date{font-weight:600}
/* TRV-03: a complete family weekend renders held contact detail, the family context and the
   slot names, so each gets its own reading weight instead of inheriting body copy. Scoped to
   the new elements only -- the existing occasion chips and Confirm dates button keep their
   current box model. */
.college-visit .js-college-full{margin-top:12px}
.college-full-note{font-size:13px;opacity:.82;margin:12px 0 0}
.college-party{font-weight:600;color:var(--hb-gold);margin:8px 0 0}
.college-trip-length{font-size:13px;opacity:.82;margin:4px 0 0}
.college-venue-contact{font-size:14px;margin:6px 0}
.college-venue-catalogue{font-size:13px;opacity:.82;margin:6px 0}
.college-activity-note{margin:6px 0}
@media(min-width:768px){.college-weekends ul{grid-template-columns:repeat(2,minmax(0,1fr))}.college-visit{max-width:680px}}

/* Q31: the single next action stays reachable while dated alternatives scroll. */
.q31-horizon { padding: 0 16px 76px; }
.q31-horizon > h1, .q31-horizon > h2 { font-size: clamp(26px, 5vw, 42px); line-height: 1.12; margin: 12px 0; }
.q31-next { margin-top: 20px; }
.q31-action { position: relative; margin: 16px 0; text-align: left; }
.q31-action .btn { pointer-events: auto; max-width: 420px; width: 100%; }
body #app .q31-cities { display:flex; flex-wrap:nowrap; overflow-x:auto; gap:8px; margin:16px 0; padding:4px 0; }
body #app .q31-cities a { display:inline-flex; flex:0 0 auto; width:auto; align-items:center; min-height:44px; padding:8px 12px; color:var(--hb-gold); text-decoration:none; }
.q31-city { margin:20px 0; min-width:0; }
.q31-city h2 { font-size:22px; margin-bottom:12px; }
.q31-held .ev,.q31-next .ev { max-width:100%; text-align:left; }
@media(min-width:900px){body:is([data-view="explore"],[data-view="city"]) .q31-horizon { padding-top:82px; }.q31-city{max-width:1000px;}}

/* Cold-user answers must grow with long names and their explanation. */
.q31-held .ev, .q31-next .ev { display:block; position:relative; height:auto !important; aspect-ratio:auto !important; min-height:0; max-height:none; isolation:isolate; }
.q31-held .ev > .ev-b, .q31-next .ev > .ev-b { position:relative !important; inset:auto !important; height:auto; max-height:none; overflow:visible; width:auto; padding:24px; z-index:1; }
.q31-held .ev > .visual-slot, .q31-next .ev > .visual-slot { position:absolute; inset:0; width:100%; height:100%; z-index:0; }
.q31-held .visual-slot .vs-content, .q31-next .visual-slot .vs-content { display:none; }
.q31-held .event-name, .q31-next .event-name { display:block; overflow:visible; max-height:none; -webkit-line-clamp:unset; white-space:normal; }
.q31-judgment { font-size:15px; line-height:1.5; }

/* A moved share/fork action must not grow to fill the hero. */
#app .cp-heading .jq-primary { flex:0 0 auto; align-self:flex-start; width:auto; max-width:100%; min-height:44px; }

/* The recipient fork action stays a normal phone control after the journey-quality mover
   relocates it out of cp-heading. It may wrap once, but never stretches with its container. */
#app .q53-next-action .js-fork {
  display:inline-flex !important; align-items:center; justify-content:center;
  align-self:flex-start; flex:0 0 auto; width:100%; max-width:100%;
  box-sizing:border-box; height:auto !important; min-height:44px; max-height:88px !important;
  padding:12px 16px; line-height:1.3; white-space:normal;
}

/* Preserve the existing authorized comedian portrait pipeline inside the boards
   marquee. The 3:4 portrait has its own column; no letterbox crop or text overlap. */
body[data-view="event"] .bp-event-marquee.has-bb-portrait{
  display:grid;grid-template-columns:minmax(0,1fr) clamp(74px,23vw,140px);column-gap:16px;text-align:left
}
body[data-view="event"] .bp-event-marquee.has-bb-portrait > .bb-hero{
  grid-column:2;grid-row:1 / span 3;align-self:center;width:100%;aspect-ratio:3/4;max-height:none;border-radius:8px
}
body[data-view="event"] .bp-event-marquee.has-bb-portrait > :is(.bp-event-date,.page-title,.bp-event-venue){
  grid-column:1;max-width:100%;margin-left:0;margin-right:0
}
body[data-view="event"] .bp-event-marquee.has-bb-portrait > .event-freshness-note{grid-column:1 / -1}

/* An authorized portrait that fails to load becomes a full-width generated bill,
   not a full performer name crushed into the former 23vw portrait column. The
   existing h1 remains in the accessibility tree while the bill owns the visible
   title, avoiding duplicate consumer copy. */
body[data-view="event"] .bp-event-marquee.has-bb-fallback{display:block;text-align:left}
body[data-view="event"] .bp-event-marquee.has-bb-fallback > .bb-hero.bb-failed{
  width:100%;aspect-ratio:16/9;min-height:150px;max-height:300px;margin:0 0 16px;border-radius:8px
}
/* Anton's real glyph bounds extend below the former 1.03 line box (30px client
   height versus 36px scroll height for the real ADAM RAY fixture at 390px).
   Give only the load-failure bill a glyph-safe line box; never shrink, crop or
   truncate the performer name. */
body[data-view="event"] .bp-event-marquee.has-bb-fallback > .bb-hero.bb-failed .bb-mono{
  line-height:1.25;
  padding-block:4px
}
body[data-view="event"] .bp-event-marquee.has-bb-fallback > .bb-fallback-accessible-title{
  position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;
  overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important
}
