/* ---------------- THE VELVET WORLD (2026-10-29, Phase 3) ----------------
   The Velvet Room become a place: a grand hall of deep-ruby glass and
   the chambers off it. The richest expression of the living glass —
   and, like the glass everywhere in the house, it moves by transform
   and opacity only, and it stills for reduced motion. After midnight
   the world deepens: lower candlelight, deeper ruby (body[data-night]
   is stamped by glass.js — the small hours belong to this place). */

.world-wrap { --ruby: 148, 28, 54; --ruby-deep: 84, 10, 30; }
.world-hall {
  position: relative;
  border-radius: 22px;
  padding: 26px 22px 20px;
  color: #f7e8ec;
  background:
    radial-gradient(120% 90% at 50% 0%, rgba(var(--ruby), .38), transparent 60%),
    linear-gradient(165deg, rgba(46, 8, 20, .92), rgba(22, 4, 10, .96));
  border: 1px solid rgba(255, 176, 196, .28);
  box-shadow: 0 24px 60px rgba(0, 0, 0, .55), inset 0 1px 0 rgba(255, 205, 218, .22), inset 0 0 60px rgba(var(--ruby), .12);
  overflow: hidden;
}
body[data-night="small"] .world-hall {
  background:
    radial-gradient(120% 90% at 50% 0%, rgba(var(--ruby), .26), transparent 55%),
    linear-gradient(165deg, rgba(34, 5, 14, .96), rgba(12, 2, 6, .98));
  box-shadow: 0 24px 60px rgba(0, 0, 0, .7), inset 0 1px 0 rgba(255, 205, 218, .13), inset 0 0 90px rgba(var(--ruby-deep), .35);
}
.world-hall h1 {
  font-family: 'Cinzel Decorative', serif;
  font-size: 2rem; margin: 4px 0 6px; letter-spacing: .02em;
  color: #ffd9e2; text-shadow: 0 0 24px rgba(255, 120, 156, .35);
}
.world-moon { font-size: .95rem; color: #f3c3cf; }
.world-sub { color: #e8bfc9; max-width: 56ch; }
.world-board {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 10px; margin: 16px 0 4px;
}
.world-board .wb-cell {
  background: rgba(255, 214, 224, .06);
  border: 1px solid rgba(255, 176, 196, .16);
  border-radius: 14px; padding: 10px 12px;
}
.wb-cell .wb-k { font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: #eba9ba; }
.wb-cell .wb-v { font-weight: 600; color: #ffe4ea; margin-top: 2px; }
.wb-cell .wb-s { font-size: .85rem; color: #d9a7b4; }

.world-honors { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.honor-plaque {
  display: inline-flex; gap: 8px; align-items: baseline;
  background: linear-gradient(120deg, rgba(212, 165, 32, .18), rgba(212, 165, 32, .05));
  border: 1px solid rgba(232, 190, 84, .45); color: #ffe9b0;
  border-radius: 999px; padding: 5px 12px; font-size: .88rem;
}
.honor-plaque b { color: #fff3cf; }
.honor-plaque .sub { color: #d8bd7a; font-size: .78rem; }

.world-roster { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.world-soul {
  display: inline-flex; align-items: center; gap: 7px;
  background: rgba(255, 214, 224, .07); border: 1px solid rgba(255, 176, 196, .18);
  padding: 4px 10px 4px 4px; border-radius: 999px; font-size: .88rem; color: #ffe4ea;
}
.world-soul img, .world-soul .mono {
  width: 24px; height: 24px; border-radius: 50%; object-fit: cover;
  display: inline-flex; align-items: center; justify-content: center;
  background: rgba(var(--ruby), .5); color: #ffd9e2; font-weight: 700; font-size: .8rem;
}
.world-soul .where { color: #d9a7b4; font-size: .75rem; }

.world-doors {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(215px, 1fr));
  gap: 12px; margin: 18px 0 6px;
}
.world-door {
  text-align: left; cursor: pointer; position: relative;
  border-radius: 16px; padding: 16px 16px 13px; color: #f7e8ec;
  background: linear-gradient(170deg, rgba(var(--ruby), .20), rgba(30, 5, 13, .85));
  border: 1px solid rgba(255, 176, 196, .22);
  box-shadow: inset 0 1px 0 rgba(255, 205, 218, .15);
  transition: transform .25s ease, box-shadow .25s ease;
}
.world-door:hover { transform: translateY(-2px); box-shadow: 0 10px 26px rgba(0, 0, 0, .45), inset 0 1px 0 rgba(255, 205, 218, .2); }
.world-door .wd-ico { font-size: 1.5rem; }
.world-door .wd-name { font-family: 'Cormorant Garamond', serif; font-size: 1.25rem; font-weight: 600; color: #ffd9e2; display: block; margin-top: 2px; }
.world-door .wd-line { font-size: .86rem; color: #d9a7b4; display: block; margin-top: 2px; }
.world-door .wd-within {
  position: absolute; top: 10px; right: 12px; font-size: .78rem; color: #ffc4d2;
  background: rgba(var(--ruby), .35); border: 1px solid rgba(255, 176, 196, .3);
  padding: 2px 8px; border-radius: 999px;
}
.world-door.lit { border-color: rgba(255, 176, 92, .55); box-shadow: 0 0 22px rgba(255, 150, 80, .16), inset 0 1px 0 rgba(255, 205, 218, .2); }
.world-door.on { outline: 2px solid rgba(255, 176, 196, .6); }

.world-chamber {
  margin-top: 16px; border-radius: 18px; padding: 18px;
  background: linear-gradient(170deg, rgba(38, 7, 17, .92), rgba(18, 3, 8, .96));
  border: 1px solid rgba(255, 176, 196, .2); color: #f3dde2;
}
.world-chamber h2 { font-family: 'Cormorant Garamond', serif; color: #ffd9e2; margin: 0 0 4px; }
.world-chamber .sub { color: #cfa3ae; }
.world-chamber .card { background: rgba(255, 214, 224, .05); border-color: rgba(255, 176, 196, .16); }

.w-stage-card, .w-party-card, .w-track-card {
  border: 1px solid rgba(255, 176, 196, .18); border-radius: 14px;
  padding: 12px 14px; margin: 10px 0; background: rgba(255, 214, 224, .045);
}
.w-stage-card .row, .w-party-card .row, .w-track-card .row { display: flex; justify-content: space-between; gap: 10px; align-items: center; flex-wrap: wrap; }
.w-badge {
  font-size: .72rem; letter-spacing: .08em; padding: 2px 8px; border-radius: 999px;
  border: 1px solid rgba(232, 190, 84, .5); color: #ffe9b0; background: rgba(212, 165, 32, .12);
}
.w-badge.ruby { border-color: rgba(255, 120, 156, .5); color: #ffc4d2; background: rgba(var(--ruby), .25); }

.w-ballroom audio { width: 100%; margin: 10px 0; }
.w-chat {
  max-height: 220px; overflow-y: auto; border: 1px solid rgba(255, 176, 196, .15);
  border-radius: 12px; padding: 10px 12px; background: rgba(0, 0, 0, .25);
}
.w-chat .line { margin: 4px 0; font-size: .93rem; }
.w-chat .line b { color: #ffd9e2; }
.w-reacts { display: flex; gap: 6px; flex-wrap: wrap; margin: 8px 0; }
.w-reacts button {
  background: rgba(255, 214, 224, .08); border: 1px solid rgba(255, 176, 196, .2);
  border-radius: 999px; padding: 3px 10px; cursor: pointer; font-size: 1rem;
}
.w-queue-item { display: flex; justify-content: space-between; gap: 8px; align-items: center; padding: 7px 10px; border: 1px solid rgba(255, 176, 196, .14); border-radius: 10px; margin: 6px 0; }
.w-queue-item.next { border-color: rgba(232, 190, 84, .55); background: rgba(212, 165, 32, .08); }
.w-roster { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; }
.w-seat {
  display: inline-flex; gap: 6px; align-items: center; font-size: .85rem;
  border: 1px solid rgba(255, 176, 196, .2); border-radius: 999px; padding: 3px 10px;
}
.w-seat.door { opacity: .62; border-style: dashed; }
.w-float { position: relative; height: 0; }
.w-float span {
  position: absolute; bottom: 6px; font-size: 1.3rem; pointer-events: none;
  animation: wFloat 2.6s ease-out forwards;
}
@keyframes wFloat {
  from { transform: translateY(0); opacity: 0; }
  12% { opacity: 1; }
  to { transform: translateY(-90px); opacity: 0; }
}

.w-candlewall { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; }
.w-candle {
  border: 1px solid rgba(255, 190, 100, .35); border-radius: 14px; padding: 12px 14px;
  background: radial-gradient(90% 70% at 50% 0%, rgba(255, 170, 60, .14), rgba(30, 5, 13, .6));
}
.w-candle .flame { font-size: 1.3rem; animation: wFlame 3.2s ease-in-out infinite; display: inline-block; }
@keyframes wFlame { 0%, 100% { transform: scale(1); opacity: .92; } 50% { transform: scale(1.08); opacity: 1; } }
.w-candle .ded { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 1.05rem; color: #ffe9c9; }
.w-candle .who { font-size: .82rem; color: #d9b48f; }

.w-board-table { width: 100%; border-collapse: collapse; }
.w-board-table td, .w-board-table th { padding: 6px 8px; border-bottom: 1px solid rgba(255, 176, 196, .12); text-align: left; }
.w-gilded { color: #ffe9b0; font-weight: 600; }

.world-door-prompt { text-align: center; padding: 10px 4px; }
.world-door-prompt .big { font-size: 2.6rem; }

@media (prefers-reduced-motion: reduce) {
  .world-door, .world-door:hover { transition: none; transform: none; }
  .w-float span { animation: none; opacity: 0; }
  .w-candle .flame { animation: none; }
}

/* Make-it-big (EmberBig) for the Ballroom card: the party fills the
   pane, the roster already rides as a slim strip of seats, the chat
   folds to one tap, and Play / Crown / Fold never leave the header. */
#wBallChatToggle { display: none; }
#wBallCard:fullscreen, #wBallCard.big-focus {
  overflow-y: auto; padding: 20px;
  background: radial-gradient(900px 600px at 50% -10%, rgba(122, 18, 40, .45), transparent 60%), #12040b;
}
#wBallCard.big-focus { position: fixed; inset: 0; z-index: 1200; }
#wBallCard:fullscreen #wBallChatToggle, #wBallCard.big-focus #wBallChatToggle { display: inline-flex; }
#wBallCard:fullscreen .w-chat, #wBallCard.big-focus .w-chat { display: none; }
#wBallCard:fullscreen.chat-open .w-chat, #wBallCard.big-focus.chat-open .w-chat { display: block; max-height: 30vh; }

/* ---- the Velvet Plaque + Honors Ticker (Phase 3 addendum) ---- */
.velvet-plaque{margin:14px 0 8px;padding:12px 14px;border-radius:16px;
  background:linear-gradient(160deg,rgba(122,18,44,.34),rgba(46,6,18,.55));
  border:1px solid rgba(255,120,150,.35);box-shadow:0 0 24px rgba(150,20,50,.25) inset,0 6px 18px rgba(0,0,0,.35)}
.velvet-plaque.compact{margin:10px 0}
.plaque-row{display:flex;flex-wrap:wrap;gap:10px 22px}
.plaque-cell{display:flex;flex-direction:column;gap:1px;min-width:110px}
.plaque-k{font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:#e7a7b6}
.plaque-cell b{color:#ffe3ea;font-size:1rem}
.plaque-tonight{margin-top:9px;padding-top:8px;border-top:1px solid rgba(255,150,170,.18);
  color:#f3cdd6;font-size:.86rem}
.plaque-status{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.plaque-btn{background:rgba(30,4,12,.6);border:1px solid rgba(255,150,170,.3);color:#f6d7de;
  border-radius:999px;padding:5px 11px;font-size:.8rem;cursor:pointer}
.plaque-btn.on{border-color:#ffb3c2;color:#fff;background:rgba(140,25,55,.5);
  box-shadow:0 0 10px rgba(255,110,140,.35)}
.plaque-note{margin-top:7px;font-size:.74rem;color:#c99aa6}
.world-ticker{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;margin:2px 0 6px;
  padding:7px 12px;border-radius:999px;background:rgba(20,2,8,.55);
  border:1px solid rgba(255,160,180,.16);color:#f0c9d2;font-size:.82rem}
.tick-sep{color:#a05266}
.w-status{font-size:.72rem;padding:1px 7px;border-radius:999px;background:rgba(0,0,0,.35);
  border:1px solid rgba(255,255,255,.14);white-space:nowrap}
