/* ==========================================================================
   MY BBN — Holiday Support + Wishes module
   --------------------------------------------------------------------------
   The Portal side of the handoff. Holiday keeps its own cream/brown/yellow
   campaign interface on the far side; this block is deliberately native to the
   Portal instead, so crossing over reads as intentional rather than as a theme
   that broke. Everything here is drawn from tokens.css for that reason — there
   is no Holiday palette in this file.

   NOTHING IN THIS FILE DECIDES ACCESS. The block only exists in the DOM when
   my_bbn_modules() returned it. There is no `display:none` state for a module
   the caller does not hold, because hiding is not a control.
   ========================================================================== */
.bbnmy{
  font-family:var(--bbn-font); color:var(--bbn-text);
  border:1px solid var(--bbn-border); border-radius:var(--bbn-radius-lg);
  background:var(--bbn-surface); padding:var(--bbn-pad-card);
  margin:20px 0;
}
.bbnmy *{box-sizing:border-box}

.bbnmy__label{
  font-size:var(--bbn-size-label); font-weight:var(--bbn-weight-strong);
  letter-spacing:.08em; text-transform:uppercase; color:var(--bbn-text-muted);
  margin:0 0 4px;
}
.bbnmy__h2{
  font-size:var(--bbn-size-section); font-weight:var(--bbn-weight-section);
  margin:0 0 4px; line-height:var(--bbn-leading-tight);
}
.bbnmy__lede{
  margin:0 0 14px; color:var(--bbn-text-secondary);
  font-size:var(--bbn-size-support); line-height:var(--bbn-leading-body);
}

/* A block per purpose. Dual-role renders two of these under ONE heading and they
 * are never merged — there is no combined entry point, because a launch carries
 * exactly one purpose and the choice has to be the person's, every time. */
.bbnmy__block{
  border:1px solid var(--bbn-border); border-radius:var(--bbn-radius);
  background:var(--bbn-surface-sunken); padding:14px; margin-top:12px;
}
.bbnmy__block:first-of-type{margin-top:0}
.bbnmy__block-h{
  font-size:var(--bbn-size-card-title); font-weight:var(--bbn-weight-section);
  margin:0 0 2px;
}
.bbnmy__org{
  font-size:var(--bbn-size-meta); color:var(--bbn-text-muted); margin:0 0 10px;
}
.bbnmy__state{
  display:inline-flex; align-items:center; gap:8px;
  font-size:var(--bbn-size-meta); color:var(--bbn-text-secondary); margin:0 0 10px;
}
.bbnmy__dot{width:8px;height:8px;border-radius:50%;background:var(--bbn-brand);flex:none}
.bbnmy__dot--wait{background:var(--bbn-accent-ink)}

.bbnmy__actions{display:flex; flex-wrap:wrap; gap:8px}
.bbnmy__btn{
  font:inherit; font-size:var(--bbn-size-support); font-weight:var(--bbn-weight-strong);
  border-radius:var(--bbn-radius); padding:10px 16px; cursor:pointer;
  background:var(--bbn-brand); color:var(--bbn-text-on-brand); border:1px solid var(--bbn-brand);
}
.bbnmy__btn:hover{background:var(--bbn-brand-deep); border-color:var(--bbn-brand-deep)}
.bbnmy__btn--quiet{
  background:transparent; color:var(--bbn-link); border-color:var(--bbn-border-strong);
}
.bbnmy__btn--quiet:hover{background:var(--bbn-hover-tint); color:var(--bbn-link-hover)}
.bbnmy__btn[disabled]{
  cursor:default; opacity:var(--bbn-disabled-opacity);
  background:var(--bbn-disabled-surface); color:var(--bbn-disabled-text);
  border-color:var(--bbn-border);
}
.bbnmy__btn:focus-visible{
  outline:3px solid var(--bbn-focus-inner);
  box-shadow:0 0 0 5px var(--bbn-focus-ring);
}

/* The second-factor requirement is stated where the launch would have been, not
 * as a scolding banner at the top of the page. A sponsor who has not enrolled is
 * told what to do next; the block is never hidden from them. */
.bbnmy__gate{
  border:1px solid var(--bbn-warning-border); background:var(--bbn-warning-surface);
  color:var(--bbn-warning); border-radius:var(--bbn-radius);
  padding:10px 12px; font-size:var(--bbn-size-meta); margin:0 0 10px;
  line-height:var(--bbn-leading-body);
}
.bbnmy__panel{margin-top:12px}

.bbnmy__msg{margin:10px 0 0; font-size:var(--bbn-size-meta); min-height:1em}
.bbnmy__msg--err{color:var(--bbn-error)}
.bbnmy__msg--ok{color:var(--bbn-success)}

.bbnmy__skel{
  height:76px; border-radius:var(--bbn-radius); background:var(--bbn-surface-sunken);
}

@media (max-width:520px){
  .bbnmy__actions{flex-direction:column; align-items:stretch}
  .bbnmy__btn{width:100%}
}
