/* Pricing > Rates (the month map, the night panel, the cards under them) redesign (10/05): the new Dashboard design on this Pricing section.
   Loaded after skin/money.css (whose root rules now include .yw-pricing-page),
   so a rule here at the same weight wins. Light rules first, their dark twins
   under [data-theme-root].dark. */

/* Owner, 10/05: "next we need to do pricing tab, everything we have done on
   the last tabs we need to do here ... the fonts, the colors the sizes. and
   get creative with the map table use the new design style. remember no ai
   slop", then, reading the first pass: "this doesent look like a heatmap?
   please fix it". So the month map is a HEATMAP in the house palette: each
   night's whole tile carries its booked share on a five-step violet ramp,
   hatched at 125deg on the strong steps like the Dashboard's bars; a night
   behind pace takes the house pink family instead; closed is hatched grey;
   the past is faded. Every class is yw-rates-*, scoped to the page root
   (.yw-rates-page, page.tsx), except the pieces that render in a hover
   portaled to the theme root (the key, the tile reading). */

/* ------------------------------------------------------------ the page -- */
.yw-rates-page { color: #202024; }
/* The month grid claims the whole pane at lg (the Rates box); the root
   keeps the shell's flex column unbroken so the box's stated height holds. */
@media (min-width: 1024px) {
  .yw-rates-page:has([data-rates-box]) { display: flex; flex: 1 1 auto; flex-direction: column; min-height: 0; }
}
/* The receipts a redirect leaves (saved, recomputed, an error): one quiet
   line card, the Dismiss a quiet pill on the right. */
.yw-rates-page .yw-rates-banner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 16px; padding: 11px 12px 11px 16px; border: 1px solid #e2e1e4; border-radius: 16px; background: #fbfbfb; box-shadow: 0 2px 3px rgba(0, 0, 0, .008); color: #59535f; font-size: 13px; line-height: 1.5; }
.yw-rates-page .yw-rates-banner > button { flex-shrink: 0; height: 28px; margin: 0; padding: 0 11px; border-radius: 9px; background: #eeeded; color: #202024; font-size: 12px; font-weight: 500; }
.yw-rates-page .yw-rates-banner > button:hover { background: #e8e4ed; color: #202024; }
.yw-rates-page .yw-rates-banner-bad { color: #a96883; }
.yw-rates-page .yw-rates-banner-accent { border-color: #e3d6f6; background: #f6f1fb; color: #5d2bb0; }
.yw-rates-page .yw-rates-lock-line { margin-top: 12px; }

/* ------------------------------------------------------ the map card -- */
/* The box is a frame since 10/05; the map and the night are its two cards. */
/* SIDE BY SIDE, THE WHOLE MONTH ON SCREEN (10/05, owner: "this style wastes
   a lot of space. lets get the side by side the 2 containers. so the
   customer can read better the heat map without having to scroll"). One row:
   the map card takes the width, the night card a fixed column beside it,
   sticky, scrolling inside itself when it is taller than the window. The map
   is never clipped: no stated height, no scroller around the weeks; compact
   tiles are what make six weeks fit. The box's server height and the
   measured one (grid-box-fit.tsx) are both released here, on purpose. */
.yw-rates-page .yw-rates-box[data-rates-box] { height: auto !important; min-height: 0; }
.yw-rates-box { display: flex; flex-direction: column; min-height: 0; }
.yw-rates-page .yw-rates-surface { display: flex; flex-direction: column; gap: 16px; min-height: 0; }
.yw-rates-page .yw-rates-map { display: flex; height: auto; min-height: 0; flex-direction: column; padding: 18px 20px 18px; }
.yw-rates-page .yw-rates-weeks-port { flex: none; overflow: visible; }
@media (min-width: 1200px) {
  .yw-rates-page .yw-rates-surface { display: grid; grid-template-columns: minmax(0, 1fr) 340px; grid-template-rows: auto; align-items: start; gap: 16px; }
  .yw-rates-page .yw-rates-surface:has(> .yw-rates-night-strip) { grid-template-columns: minmax(0, 1fr) 2.5rem; }
  .yw-rates-page .yw-rates-surface > .yw-rates-night { position: sticky; top: 16px; height: auto; max-height: calc(100vh - 32px); }
  .yw-rates-page .yw-rates-surface > .yw-rates-night-strip { min-height: 120px; }
}
@media (min-width: 1440px) {
  .yw-rates-page .yw-rates-surface { grid-template-columns: minmax(0, 1fr) 380px; }
}
@media (min-width: 1700px) {
  .yw-rates-page .yw-rates-surface { grid-template-columns: minmax(0, 1fr) 400px; }
}
/* 1024 to 1199: the two cards stack, the night card under the map, whole. */
@media (min-width: 1024px) and (max-width: 1199px) {
  .yw-rates-page .yw-rates-surface > .yw-rates-night { height: auto; max-height: none; }
}
.yw-rates-map-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 14px; margin-bottom: 12px; }
/* One line wherever the card is wide enough; the key wraps under the
   switch, never over the month, when it is not. */
.yw-rates-map-actions { justify-content: flex-end; }
.yw-rates-month { display: flex; flex-wrap: wrap; align-items: center; gap: 2px; min-width: 0; }
.yw-rates-month-title { margin: 0 4px; white-space: nowrap; }
.yw-rates-month-title .hw-info-label { color: inherit; font: inherit; letter-spacing: inherit; }
.yw-rates-arrow { display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; color: #6f6975; font-size: 19px; line-height: 1; transition: background-color .16s, color .16s; }
.yw-rates-arrow:hover { background: #eeeded; color: #202024; }
.yw-rates-arrow:focus-visible { outline: 2px solid #b993ff; outline-offset: 2px; }
.yw-rates-arrow.invisible { visibility: hidden; }
.yw-rates-today-link { display: inline-flex; align-items: center; height: 28px; margin-left: 8px; padding: 0 11px; border-radius: 10px; background: #eeeded; color: #202024; font-size: 12px; font-weight: 500; }
.yw-rates-today-link:hover { background: #e8e4ed; }
.yw-rates-asof { margin-left: 10px; color: #929097; font-size: 12px; }
.yw-rates-map-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin-left: auto; }
/* Month | Year: the Dashboard's quiet segmented control. */
.yw-rates-views { display: inline-flex; gap: 2px; padding: 3px; border-radius: 12px; background: #eeeded; }
.yw-rates-view { display: inline-flex; align-items: center; padding: 6px 13px; border-radius: 9px; color: #6f6975; font-size: 12px; font-weight: 500; text-decoration: none; transition: background-color .16s, color .16s; }
.yw-rates-view:hover { background: rgba(255, 255, 255, .6); color: #202024; }
.yw-rates-view[aria-current="page"] { background: #fff; color: #202024; box-shadow: 0 2px 6px rgba(0, 0, 0, .06); }
/* The bulk apply: the area's one violet, its list the menu surface. */
.yw-rates-bulk { position: relative; }
.yw-rates-bulk-open { display: inline-flex; height: 34px; align-items: center; padding: 0 14px; border-radius: 10px; background: #7c3aed; color: #fff; font-size: 12px; font-weight: 500; white-space: nowrap; cursor: pointer; list-style: none; transition: background-color .16s; }
.yw-rates-bulk-open::-webkit-details-marker { display: none; }
.yw-rates-bulk-open:hover { background: #7130df; }
.yw-rates-bulk-open:focus-visible { outline: 2px solid #b993ff; outline-offset: 2px; }
.yw-rates-bulk-menu { padding: 16px; border: 1px solid #e5ddea; border-radius: 17px; background: #fdfcfe; box-shadow: 0 15px 45px #3a214421, 0 3px 9px #3a214409; }
@media (min-width: 768px) { .yw-rates-bulk-menu { position: absolute; right: 0; z-index: 30; width: 24rem; } }
.yw-rates-bulk-title { color: #202024; font-size: 13px; font-weight: 500; }
.yw-rates-bulk-list { max-height: 14rem; margin: 8px 0 0; padding: 0; overflow-y: auto; list-style: none; scrollbar-width: thin; scrollbar-color: #ddd2e7 transparent; }
.yw-rates-bulk-list > li { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 10px; padding: 8px 0; border-top: 1px solid #eae8ec; color: #59535f; font-size: 12px; }
.yw-rates-bulk-list > li:first-child { border-top: 0; }
.yw-rates-bulk-list strong { color: #202024; font-weight: 500; white-space: nowrap; }
.yw-rates-bulk-list em { grid-column: 1 / -1; color: #929097; font-size: 11px; font-style: normal; }
.yw-rates-bulk-note { margin: 8px 0 0; color: #929097; font-size: 11.5px; line-height: 1.45; }

/* The key: ONE compact line in the map's head, the ramp's own swatches. */
.yw-rates-key { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; color: #87818c; font-size: 11px; }
.yw-rates-key-item { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.yw-rates-key-ramp { display: inline-flex; gap: 2px; }
.yw-rates-key-ramp > i { display: block; width: 12px; height: 12px; border-radius: 4px; }
.yw-rates-key-star { color: #b98234; }
.yw-rates-key-stay { padding: 1px 5px; border-radius: 6px; background: #eeeded; color: #59535f; font-size: 10px; font-weight: 500; }

/* --------------------------------------------------------- the tiles -- */
/* A real seven-column grid, every tile the same shape. */
.yw-rates-weeks-port { min-height: 0; flex: 1 1 auto; overflow: auto; scrollbar-width: thin; scrollbar-color: #ddd2e7 transparent; }
.yw-rates-weeks { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; }
.yw-rates-dow { padding: 0 0 0 9px; color: #a59fab; font-size: 10.5px; line-height: 1.5; }
.yw-rates-dow[data-weekend] { color: #8553c2; }
/* Compact (10/05): about 1.35 wide to 1 tall, so six weeks fit a laptop
   window beside the night card. */
.yw-rates-cell { position: relative; min-width: 0; aspect-ratio: 1.35 / 1; container-type: inline-size; }
/* A SMALLER TABLE ON A WIDE SCREEN (10/10, owner: "rates table should be a
   bit smaller so eberything fits better"). The 1.35 shape made a tile grow
   with the width: on a 2560px monitor a week row stood near 200px and the
   month ran past the window. A row now stops at whichever is smallest: the
   1.35 shape, a sixth of the window under the head (six weeks always fit),
   or 132px. A laptop keeps the 1.35 shape; a wide screen gets wider, shorter
   tiles. The weeks grid is the size container the row reads its width from. */
.yw-rates-page .yw-rates-weeks { container-type: inline-size; }
.yw-rates-page .yw-rates-cell { aspect-ratio: auto; height: min(calc((100cqw - 36px) / 7 / 1.35), max(92px, calc((100dvh - 360px) / 6)), 132px); }
/* The tile is a small grid: the date and the marks on top, the price at the
   foot with its one word beside it, the share track under both. */
.yw-rates-tile { position: relative; display: grid; box-sizing: border-box; width: 100%; height: 100%; grid-template-columns: minmax(0, 1fr) auto; grid-template-rows: auto minmax(0, 1fr) auto; column-gap: 4px; padding: 7px 8px 7px; overflow: hidden; border: 1px solid #eae8ec; border-radius: 14px; background: #fbfbfb; color: #202024; text-decoration: none; transition: border-color .16s, filter .16s, opacity .2s; }
a.yw-rates-tile:hover { border-color: #b993ff; filter: saturate(1.15); }
a.yw-rates-tile:focus-visible { outline: 2px solid #b993ff; outline-offset: -2px; }
.yw-rates-tile[data-weekend][data-heat="0"] { background: #f7f5fa; }
.yw-rates-tile-top { display: flex; grid-column: 1 / -1; align-items: center; justify-content: space-between; gap: 4px; min-height: 13px; }
.yw-rates-tile-date { color: #87818c; font-size: 11px; line-height: 1; white-space: nowrap; }
/* Today: a violet dot by the date, not a ring. */
.yw-rates-tile[data-today] .yw-rates-tile-date { display: inline-flex; align-items: center; gap: 4px; color: #7c3aed; font-weight: 600; }
.yw-rates-tile[data-today] .yw-rates-tile-date::before { width: 6px; height: 6px; flex-shrink: 0; border-radius: 50%; background: #7c3aed; box-shadow: 0 0 0 2px rgba(255, 255, 255, .7); content: ""; }
/* Marks, not borders. */
.yw-rates-tile-marks { display: inline-flex; flex-wrap: nowrap; align-items: center; gap: 3px; min-width: 0; overflow: hidden; }
.yw-rates-mark-star { color: #b98234; font-size: 11px; line-height: 1; }
.yw-rates-mark-bang { color: #c85f84; font-size: 11px; font-weight: 600; line-height: 1; }
.yw-rates-mark-theirs { color: #6f6975; font-size: 10px; line-height: 1; }
.yw-rates-mark-lock { width: 10px; height: 10px; flex-shrink: 0; fill: none; stroke: #6f6975; stroke-linecap: round; stroke-width: 1.3; }
.yw-rates-mark-lock[data-kind="locked"] { stroke: #7c3aed; }
.yw-rates-mark-stay { padding: 1px 5px; border-radius: 6px; background: rgba(255, 255, 255, .82); color: #59535f; font-size: 9.5px; font-weight: 600; line-height: 1.35; }
.yw-rates-tile-price { grid-column: 1; grid-row: 2; align-self: end; color: #202024; font-size: 16px; font-weight: 500; line-height: 1.15; letter-spacing: -.45px; white-space: nowrap; }
.yw-rates-tile-word { grid-column: 2; grid-row: 2; align-self: end; justify-self: end; margin-bottom: 2px; color: #59535f; font-size: 10px; font-weight: 600; line-height: 1.2; white-space: nowrap; }
.yw-rates-tile-foot { display: flex; grid-column: 1 / -1; grid-row: 3; align-items: center; gap: 6px; margin-top: 4px; }
.yw-rates-tile-track { position: relative; flex: 1 1 auto; height: 3px; overflow: hidden; border-radius: 4px; background: rgba(32, 32, 36, .08); }
.yw-rates-tile-track > i { position: absolute; inset: 0 auto 0 0; border-radius: inherit; background: #8a45f0; transform-origin: left; animation: yw-scale-in .9s cubic-bezier(.2, .8, .2, 1) both; }
.yw-rates-tile-occ { flex-shrink: 0; color: #59535f; font-size: 10px; font-weight: 500; line-height: 1; }
/* Rooms closed that night (10/10), beside the occupancy. */
.yw-rates-tile-closed { flex-shrink: 0; color: #59535f; font-size: 9.5px; font-weight: 600; line-height: 1; white-space: nowrap; }
.yw-rates-tile:is([data-heat="4"], [data-heat="5"]) .yw-rates-tile-closed { color: #fff; }

/* THE HEAT: the booked share, five steps of violet across the whole tile
   (night-tile.ts heatStep: 1 under 20%, 2 under 40%, 3 under 60%, 4 under
   80%, 5 at 80% and up; 0 is no reading, or nothing sold). The strong steps
   are hatched like the Dashboard's bars; the two deepest switch to white. */
.yw-rates-tile[data-heat="1"] { border-color: #ebe2fb; background: #f6f2fd; }
.yw-rates-tile[data-heat="2"] { border-color: #ddcdf9; background: #ece3fc; }
.yw-rates-tile[data-heat="3"] { border-color: #cdb4f6; background: repeating-linear-gradient(125deg, #d6c1f9 0 2px, #e4d6fb 2px 4px); }
.yw-rates-tile[data-heat="4"] { border-color: #a57af0; background: repeating-linear-gradient(125deg, #a678f0 0 2px, #b995f4 2px 4px); }
.yw-rates-tile[data-heat="5"] { border-color: #7c3aed; background: repeating-linear-gradient(125deg, #8a45f0 0 2px, #9a5ef2 2px 4px); }
.yw-rates-tile:is([data-heat="4"], [data-heat="5"]) :is(.yw-rates-tile-price, .yw-rates-tile-date, .yw-rates-tile-occ, .yw-rates-tile-word) { color: #fff; }
.yw-rates-tile:is([data-heat="4"], [data-heat="5"]) .yw-rates-tile-price { text-shadow: 0 1px 2px rgba(60, 20, 120, .25); }
.yw-rates-tile:is([data-heat="4"], [data-heat="5"]) .yw-rates-tile-track { background: rgba(255, 255, 255, .32); }
.yw-rates-tile:is([data-heat="4"], [data-heat="5"]) .yw-rates-tile-track > i { background: #fff; }
.yw-rates-tile:is([data-heat="4"], [data-heat="5"]) :is(.yw-rates-mark-theirs) { color: #fff; }
.yw-rates-tile:is([data-heat="4"], [data-heat="5"]) .yw-rates-mark-lock { stroke: #fff; }
.yw-rates-tile:is([data-heat="4"], [data-heat="5"]) .yw-rates-mark-star { color: #ffe2a8; }
.yw-rates-tile:is([data-heat="4"], [data-heat="5"])[data-today] .yw-rates-tile-date::before { background: #fff; box-shadow: none; }
/* Behind pace: the house pink family instead of the violet ramp, with its
   one word. Severe is the hatched step. */
.yw-rates-tile[data-tone="behind"] { border-color: #efcadb; background: #f8e8ef; }
.yw-rates-tile[data-tone="behind"][data-depth="severe"] { border-color: #e2a2bf; background: repeating-linear-gradient(125deg, #e8a6c4 0 2px, #f2c9db 2px 4px); }
.yw-rates-tile[data-tone="behind"] :is(.yw-rates-tile-price, .yw-rates-tile-date, .yw-rates-tile-occ) { color: #202024; text-shadow: none; }
.yw-rates-tile[data-tone="behind"] .yw-rates-tile-word { color: #a4456f; }
.yw-rates-tile[data-tone="behind"] .yw-rates-tile-track { background: rgba(164, 69, 111, .16); }
.yw-rates-tile[data-tone="behind"] .yw-rates-tile-track > i { background: #c85f84; }
/* Closed: hatched grey, every room shut. */
.yw-rates-tile[data-tone="closed"] { border-color: #dedce1; background: repeating-linear-gradient(135deg, #e9e7ec 0 5px, #f6f5f7 5px 10px); }
.yw-rates-tile[data-tone="closed"] :is(.yw-rates-tile-price, .yw-rates-tile-date, .yw-rates-tile-occ) { color: #8e8894; text-shadow: none; }
.yw-rates-tile[data-tone="closed"] .yw-rates-tile-word { color: #59535f; }
/* Gone, borrowed or unscored: the same heat, faded. */
.yw-rates-tile[data-muted="past"] { opacity: .55; }
.yw-rates-tile[data-muted="spill"] { opacity: .35; }
.yw-rates-tile[data-muted="unscored"] { border-style: dashed; background: #f8f8f9; }
.yw-rates-tile[data-muted="unscored"] .yw-rates-tile-price { color: #b5afba; }
a.yw-rates-tile[data-muted]:hover { opacity: .85; }
/* ?show= fades the nights outside the verdict it lights. */
.yw-rates-tile[data-dim] { opacity: .25; }
/* The selected night: the 2px violet ring, with a white hairline inside it so
   it reads on the deepest violet too. */
.yw-rates-tile[data-selected] { border-color: #7c3aed; box-shadow: inset 0 0 0 2px #7c3aed, inset 0 0 0 3.5px #fff; opacity: 1; }
/* Narrow tiles keep the price and the heat; the words go first. */
@container (max-width: 92px) {
  .yw-rates-tile { padding: 6px 7px; border-radius: 12px; }
  .yw-rates-tile-price { font-size: 14.5px; letter-spacing: -.4px; }
  .yw-rates-tile-word { font-size: 9px; }
  .yw-rates-tile-occ { font-size: 9px; }
}
@container (max-width: 84px) {
  .yw-rates-tile-word, .yw-rates-tile-closed { display: none; }
}
@container (max-width: 72px) {
  .yw-rates-tile-word, .yw-rates-tile-occ { display: none; }
  .yw-rates-tile-price { font-size: 13px; letter-spacing: -.3px; }
  .yw-rates-tile-marks > :not(.yw-rates-mark-star) { display: none; }
}
@container (max-width: 52px) {
  .yw-rates-tile { padding: 5px; border-radius: 9px; }
  .yw-rates-tile-date { font-size: 10px; }
  .yw-rates-tile-price { font-size: 11px; }
  .yw-rates-tile-foot { margin-top: 4px; }
}
@media (max-width: 639px) {
  .yw-rates-map { padding: 16px 14px 14px; }
  .yw-rates-weeks { gap: 3px; }
  .yw-rates-cell { aspect-ratio: 4 / 5; }
  .yw-rates-dow { padding-left: 4px; font-size: 9.5px; }
}
@media (prefers-reduced-motion: reduce) {
  .yw-rates-tile, .yw-rates-arrow, .yw-rates-view { transition: none; }
  .yw-rates-tile-track > i { animation: none; }
}

/* The ramp's swatches, for the key: the tile steps themselves. */
.yw-rates-heat-1 { background: #f6f2fd; box-shadow: inset 0 0 0 1px #e3d8f8; }
.yw-rates-heat-2 { background: #ece3fc; }
.yw-rates-heat-3 { background: repeating-linear-gradient(125deg, #d6c1f9 0 2px, #e4d6fb 2px 4px); }
.yw-rates-heat-4 { background: repeating-linear-gradient(125deg, #a678f0 0 2px, #b995f4 2px 4px); }
.yw-rates-heat-5 { background: repeating-linear-gradient(125deg, #8a45f0 0 2px, #9a5ef2 2px 4px); }
.yw-rates-heat-behind { background: repeating-linear-gradient(125deg, #e8a6c4 0 2px, #f2c9db 2px 4px); }

/* The reading on hover: the menu surface, label and value rows. */
.yw-rates-tip { width: 272px; padding: 14px 15px; border: 1px solid #e5ddea; border-radius: 15px; background: rgba(253, 252, 254, .97); box-shadow: 0 14px 35px #3a214425; color: #59535f; font-family: var(--font-geist-sans), Geist, system-ui, sans-serif; letter-spacing: -.2px; text-align: left; backdrop-filter: blur(12px); }
.yw-rates-tip-title { margin: 0; color: #202024; font-size: 13px; font-weight: 500; }
.yw-rates-tip-note { margin: 6px 0 0; color: #929097; font-size: 12px; }
.yw-rates-tip-rows { margin: 8px 0 0; }
.yw-rates-tip-rows > div { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding: 6px 0; border-top: 1px solid #eae8ec; font-size: 12px; }
.yw-rates-tip-rows dt { color: #87818c; }
.yw-rates-tip-rows dd { margin: 0; color: #202024; font-weight: 500; text-align: right; }
.yw-rates-tip-verdict { margin: 8px 0 0; color: #87818c; font-size: 11px; font-weight: 500; }
.yw-rates-tip-verdict[data-tone="bad"] { color: #a96883; }
.yw-rates-tip-verdict[data-tone="good"] { color: #2f8a6d; }

/* ------------------------------------------------------- the year view -- */
/* Twelve small heatmaps on the same ramp. */
.yw-rates-year-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(196px, 1fr)); gap: 22px 24px; margin-top: 4px; }
.yw-rates-ymonth-name { display: inline-block; margin-bottom: 8px; color: #202024; font-size: 13px; font-weight: 500; }
.yw-rates-ymonth-name:hover { color: #7c3aed; }
.yw-rates-ydays { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 3px; }
.yw-rates-ydow { color: #a59fab; font-size: 9px; text-align: center; }
.yw-rates-yday { position: relative; display: grid; aspect-ratio: 1; place-items: center; overflow: hidden; border-radius: 7px; background: #f3f2f5; color: #59535f; font-size: 10px; text-decoration: none; }
.yw-rates-yday[data-heat="1"] { background: #f6f2fd; }
.yw-rates-yday[data-heat="2"] { background: #ece3fc; }
.yw-rates-yday[data-heat="3"] { background: repeating-linear-gradient(125deg, #d6c1f9 0 2px, #e4d6fb 2px 4px); }
.yw-rates-yday[data-heat="4"] { background: repeating-linear-gradient(125deg, #a678f0 0 2px, #b995f4 2px 4px); color: #fff; }
.yw-rates-yday[data-heat="5"] { background: repeating-linear-gradient(125deg, #8a45f0 0 2px, #9a5ef2 2px 4px); color: #fff; }
.yw-rates-yday[data-tone="behind"] { background: repeating-linear-gradient(125deg, #e8a6c4 0 2px, #f2c9db 2px 4px); color: #202024; }
.yw-rates-yday[data-tone="closed"] { background: repeating-linear-gradient(135deg, #e9e7ec 0 4px, #f6f5f7 4px 8px); color: #8e8894; }
.yw-rates-yday[data-muted] { opacity: .55; }
.yw-rates-yday[data-blank] { background: transparent; }
.yw-rates-yday[data-today] { box-shadow: inset 0 0 0 1.5px #7c3aed, inset 0 0 0 3px #fff; font-weight: 600; }
.yw-rates-yday[data-event]::after { position: absolute; top: 3px; right: 3px; width: 4px; height: 4px; border-radius: 50%; background: #b98234; content: ""; }
.yw-rates-yday[data-dim] { opacity: .25; }
a.yw-rates-yday:hover { box-shadow: inset 0 0 0 1.5px #b993ff; }
a.yw-rates-yday:focus-visible { outline: 2px solid #b993ff; outline-offset: 1px; }

/* ----------------------------------------------------- the night card -- */
/* The docked night panel is a Dashboard card: the night as its title, the
   posted rate as the hero, rows under it, the tabs the quiet segmented
   control. Its own parts pad; the card does not. */
.yw-rates-page .yw-rates-night { padding: 0; overflow: hidden; }
.yw-rates-page .yw-rates-night-strip { padding: 12px 0; }
.yw-rates-night-toggle { display: inline-grid; place-items: center; width: 32px; height: 32px; border: 1px solid #e4e2e6; border-radius: 50%; background: #fbfbfb; color: #6f6975; font-size: 13px; line-height: 1; transition: background-color .16s, color .16s; }
.yw-rates-night-toggle:hover { background: #eeeeee; color: #202024; }
.yw-rates-night-toggle:focus-visible { outline: 2px solid #b993ff; outline-offset: 2px; }
.yw-rates-night-empty { margin: 0; padding: 24px 20px; color: #929097; font-size: 13px; }
.yw-rates-page .yw-rates-night-head { padding: 20px 20px 2px; background: transparent; }
.yw-rates-page .yw-rates-night-title { padding-right: 40px; font-size: 17px; letter-spacing: -.45px; }
.yw-rates-night-flags { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; margin: 6px 0 0; }
.yw-rates-night-flags .yw-money-flag { font-size: 11px; letter-spacing: 0; }
.yw-rates-night-flags .yw-money-flag[data-hover] { text-decoration: underline dotted #c9c3ce; text-underline-offset: 3px; cursor: help; }
.yw-rates-night-lead { color: #a59fab; font-size: 11px; }
.yw-rates-night-hero { margin-top: 16px; }
.yw-rates-night-hero-label .hw-info-label { color: #87818c; font-size: 12px; font-weight: 400; }
.yw-rates-page .yw-rates-night-price { margin: 2px 0 8px; font-size: 40px; line-height: 1.1; }
.yw-rates-page .yw-rates-night-price[data-empty] { color: #929097; font-size: 19px; letter-spacing: -.4px; }
.yw-rates-night-hero > .yw-money-note { margin-top: 8px; }
/* Night / Market / Log: the quiet segmented control. */
.yw-rates-page [role="tablist"][aria-label="This night"] { gap: 2px; padding: 3px; border: 0; border-radius: 12px; background: #eeeded; }
.yw-rates-page [role="tablist"][aria-label="This night"] > button { padding: 7px 10px; border-radius: 9px; background: transparent; color: #6f6975; font-size: 12px; font-weight: 500; }
.yw-rates-page [role="tablist"][aria-label="This night"] > button:hover { background: rgba(255, 255, 255, .6); color: #202024; }
.yw-rates-page [role="tablist"][aria-label="This night"] > button[aria-selected="true"] { background: #fff; color: #202024; box-shadow: 0 2px 6px rgba(0, 0, 0, .06); }
.yw-rates-page :is(.yw-rates-night, .yw-rates-drawer) .mt-3.shrink-0.px-4 { padding-right: 20px; padding-left: 20px; }
.yw-rates-page :is(.yw-rates-night, .yw-rates-drawer) .overflow-y-auto > div { padding: 16px 20px 20px; }
.yw-rates-page :is(.yw-rates-night, .yw-rates-drawer) .overflow-y-auto > div [data-ui="section-label"] { color: #202024; font-size: 13px; font-weight: 500; line-height: 1.4; letter-spacing: -.2px; }
.yw-rates-night-stats { margin-top: 6px; }
.yw-rates-page .yw-rates-stat { flex-wrap: wrap; padding: 9px 0; }
.yw-rates-page .yw-rates-stat .hw-info-label { color: inherit; font-size: inherit; font-weight: 400; }
.yw-rates-stat-note { flex-basis: 100%; color: #929097; font-size: 11px; line-height: 1.45; }
.yw-rates-page .yw-rates-stat[data-total] > span:first-child { color: #59535f; }
.yw-rates-page .yw-rates-stat[data-total] .yw-row-stat-value { color: #202024; }
.yw-rates-night-line { margin: 10px 0 0; color: #59535f; font-size: 12.5px; line-height: 1.5; }
.yw-rates-night-line[data-tone="accent"] { color: #7433d4; }
.yw-rates-night-line[data-tone="good"] { color: #2f8a6d; }
.yw-rates-night-line[data-tone="bad"] { color: #a96883; }
.yw-rates-night-line .hw-info-label { color: #202024; font-size: 12.5px; font-weight: 500; }
.yw-rates-night-act { margin-top: 12px; }
.yw-rates-page :is(.yw-rates-night, .yw-rates-drawer) .overflow-y-auto > div .yw-money-note { margin-top: 8px; }
.yw-rates-rank { color: #202024; font-weight: 500; }
.yw-rates-lines { margin: 6px 0 0; padding: 0; list-style: none; }
.yw-rates-lines > li { padding: 8px 0; border-top: 1px solid #eae8ec; color: #59535f; font-size: 12.5px; line-height: 1.45; }
.yw-rates-lines > li:first-child { border-top: 0; }
/* Quiet pills for the secondary moves; destructive keeps the house pink. */
.yw-rates-page .yw-rates-pill { display: inline-flex; width: auto; height: 30px; align-items: center; padding: 0 12px; border: 0; border-radius: 10px; background: #eeeded; color: #202024; font-size: 12px; font-weight: 500; cursor: pointer; }
.yw-rates-page .yw-rates-pill:hover { background: #e8e4ed; color: #202024; }
.yw-rates-page .yw-rates-pill[data-tone="bad"] { color: #c85f84; }
/* Apply: the one violet, opening the exact before and after. */
.yw-rates-apply-open { display: inline-flex; height: 34px; align-items: center; padding: 0 14px; border-radius: 10px; background: #7c3aed; color: #fff; font-size: 12px; font-weight: 500; cursor: pointer; list-style: none; transition: background-color .16s; }
.yw-rates-apply-open::-webkit-details-marker { display: none; }
.yw-rates-apply-open:hover { background: #7130df; }
.yw-rates-apply-open:focus-visible { outline: 2px solid #b993ff; outline-offset: 2px; }
.yw-rates-apply-body { margin-top: 10px; padding: 14px; border-radius: 14px; background: #f6f1fb; }
.yw-rates-apply-move { color: #202024; font-size: 13px; font-weight: 500; }
.yw-rates-apply-rooms { max-height: 11rem; margin: 8px 0 0; padding: 0; overflow-y: auto; list-style: none; scrollbar-width: thin; scrollbar-color: #ddd2e7 transparent; }
.yw-rates-apply-rooms > li { display: flex; justify-content: space-between; gap: 10px; padding: 6px 0; border-top: 1px solid #e8def3; color: #59535f; font-size: 12px; }
.yw-rates-apply-rooms > li:first-child { border-top: 0; }
.yw-rates-apply-rooms strong { flex-shrink: 0; color: #202024; font-weight: 500; }
.yw-rates-apply-body .yw-money-note { margin-top: 8px; }
/* Set your own, the lock, the revert. */
.yw-rates-manual { display: flex; flex-direction: column; gap: 8px; margin-top: 12px; padding-top: 12px; border-top: 1px solid #eae8ec; }
.yw-rates-manual-label { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px; margin: 0; color: #59535f; font-size: 12.5px; }
.yw-rates-manual-label .hw-info-label { color: #202024; font-size: 12.5px; font-weight: 500; }
.yw-rates-locks { margin-top: 12px; }
.yw-rates-lock-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 9px 0; border-top: 1px solid #eae8ec; color: #59535f; font-size: 12.5px; }
.yw-rates-lock-row:first-child { border-top: 0; }
.yw-rates-lock-row p { margin: 0; }
.yw-rates-lock-row strong { color: #202024; font-weight: 500; }
.yw-rates-lock-form { display: flex; flex-direction: column; gap: 8px; margin-top: 12px; padding: 12px; border-radius: 14px; background: #f6f5f7; }
.yw-rates-revert { margin-top: 4px; }
.yw-rates-page .yw-money-muted { color: #929097; }
/* Why this price: the five dollars as quiet pills, then the rows. */
.yw-rates-why { margin-top: 8px; padding: 12px 14px; border-radius: 14px; background: #f6f1fb; }
.yw-rates-why-head { margin: 8px 0 0; color: #202024; font-size: 13px; font-weight: 500; line-height: 1.45; }
.yw-rates-why-pin { margin: 6px 0 0; color: #59535f; font-size: 12px; }
.yw-rates-ledger { margin-top: 10px; }
.yw-rates-chip { padding: 3px 8px; border-radius: 20px; background: #fff; box-shadow: 0 2px 8px rgba(0, 0, 0, .024); color: #59535f; font-size: 11px; font-weight: 500; list-style: none; }
.yw-rates-chip[data-tone="good"] { color: #2f8a6d; }
.yw-rates-chip[data-tone="bad"] { color: #a96883; }
/* The comp set, ranked: hairline rows, ours on the violet tint. */
.yw-rates-comps { margin: 8px 0 0; padding: 0; list-style: none; }
.yw-rates-comps > li { display: flex; align-items: center; gap: 8px; padding: 9px 6px; border-top: 1px solid #eae8ec; color: #59535f; font-size: 12.5px; }
.yw-rates-comps > li:first-child { border-top: 0; }
.yw-rates-comps > li[data-you] { border-radius: 10px; background: #f6f1fb; color: #202024; }
.yw-rates-comps > li[data-you] + li { border-top-color: transparent; }
.yw-rates-comp-rank { width: 20px; flex-shrink: 0; color: #a59fab; font-size: 11px; }
.yw-rates-comp-name { min-width: 0; flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.yw-rates-comp-rate { flex-shrink: 0; color: #202024; font-weight: 500; }
.yw-rates-comp-rate[data-empty] { color: #a59fab; font-size: 11px; font-weight: 400; }
/* The room ladder: the Dashboard's Needs you row, one per room type. */
.yw-rates-rooms { margin: 6px 0 0; padding: 0; list-style: none; }
.yw-rates-room { display: grid; grid-template-columns: 28px minmax(0, 1fr) auto auto; align-items: center; gap: 0 10px; min-height: 52px; padding: 7px 2px; border-top: 1px solid #eae8ec; }
.yw-rates-room:first-child { border-top: 0; }
.yw-rates-room-mark { display: grid; width: 28px; height: 28px; place-items: center; border-radius: 50%; background: #efe8fb; color: #7c3aed; font-size: 12px; font-weight: 500; }
.yw-rates-room[data-stands="no"] .yw-rates-room-mark { background: #f8e8ef; color: #bd6a91; }
.yw-rates-room[data-stands="unknown"] .yw-rates-room-mark { background: #f1f0f3; color: #a59fab; }
.yw-rates-room-copy { min-width: 0; }
/* A long room name wraps to two lines at most; the status word and the price keep their places. */
.yw-rates-room-name { display: -webkit-box; overflow: hidden; color: #202024; font-size: 12.5px; font-weight: 500; line-height: 1.35; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; }
.yw-rates-room-line { display: block; margin-top: 2px; color: #929097; font-size: 11px; }
.yw-rates-room-word { max-width: 7.5rem; overflow: hidden; text-overflow: ellipsis; cursor: help; }
.yw-rates-room-price { color: #202024; font-size: 14px; font-weight: 500; text-align: right; white-space: nowrap; }
.yw-rates-log-error { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin-top: 8px; }
.yw-rates-log-error > .yw-money-note { margin: 0; }
/* The phone sheet: the card's ground, the Dashboard's corner. */
.yw-rates-page .yw-rates-drawer { border-color: #e2e1e4; background: #fbfbfb; }
@media (max-width: 639px) { .yw-rates-page .yw-rates-drawer { border-radius: 24px 24px 0 0; } }
@media (prefers-reduced-motion: reduce) {
  .yw-rates-night-toggle, .yw-rates-apply-open, .yw-rates-bulk-open { transition: none; }
}

/* ------------------------------------------- the cards around the map -- */
/* Rates Setup's pieces this section owns (autopilot-section, managed-for-you,
   rooms-table, takeover-switch, frozen-nights-card, last-run-card,
   hourly-card, next-engine-card, floor-hit-tile, flow-year-strip,
   reveal-on-demand): the finished Money tabs' rows, quiet pills, Needs-you
   rows and one honesty line, inside whatever panel Setup gives them. */
.yw-rates-subhead { margin: 0; color: #202024; font-size: 13px; font-weight: 500; letter-spacing: -.2px; }
.yw-rates-subhead .hw-info-label { color: inherit; font: inherit; letter-spacing: inherit; }
.yw-rates-subsection { margin-top: 20px; }
.yw-rates-subsection > .yw-money-overflow { margin-top: 8px; }
.yw-rates-reveal { padding: 0; border: 0; background: none; color: #8553c2; font-size: 12px; font-weight: 500; cursor: pointer; }
.yw-rates-reveal:hover { text-decoration: underline; text-underline-offset: 2px; }
/* Autopilot: who prices, then the switch. */
.yw-rates-auto-card .yw-card-head { align-items: center; margin-bottom: 10px; }
.yw-rates-auto-body { margin-top: 2px; }
.yw-rates-who-line { margin: 0; color: #343039; font-size: 14px; }
.yw-rates-who-change { position: relative; }
.yw-rates-who-change > summary { display: inline-flex; }
.yw-rates-who-change[open] > summary { background: #e8e4ed; }
.yw-rates-auto-cancel { margin-top: 14px; padding-top: 12px; border-top: 1px solid #eae8ec; }
.yw-rates-auto-check { display: inline-flex; align-items: center; gap: 8px; color: #343039; font-size: 13px; }
.yw-rates-auto-row { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; }
.yw-rates-auto-state { margin: 0; color: #202024; font-size: 15px; font-weight: 500; }
.yw-rates-auto-hint { flex-basis: 100%; margin: 0; color: #929097; font-size: 12px; line-height: 1.5; }
.yw-rates-page .yw-rates-auto-go { display: inline-flex; height: 40px; align-items: center; padding: 0 18px; border: 0; border-radius: 11px; background: #7c3aed; color: #fff; font-size: 13px; font-weight: 500; }
.yw-rates-page .yw-rates-auto-go:hover:not(:disabled) { background: #7130df; }
.yw-rates-page .yw-rates-auto-go:disabled { opacity: .45; cursor: not-allowed; }
.yw-rates-auto-switch[data-on] { border-color: #e3d6f6; }
/* Managed for you: Needs-you rows. */
.yw-rates-managed .yw-card-head { align-items: center; }
.yw-rates-managed-list { margin: 10px 0 0; padding: 0; list-style: none; }
.yw-rates-managed-row { display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; align-items: center; gap: 0 13px; min-height: 64px; padding: 10px 2px; border-top: 1px solid #eae8ec; }
.yw-rates-managed-row:first-child { border-top: 0; }
.yw-rates-managed-mark { display: grid; width: 34px; height: 34px; place-items: center; border-radius: 50%; background: #eee7f8; color: #8a66bc; font-size: 13px; font-weight: 500; }
.yw-rates-managed-copy { min-width: 0; }
.yw-rates-managed-title { margin: 0; color: #202024; font-size: 13px; font-weight: 500; cursor: help; }
.yw-rates-managed-value { margin: 2px 0 0; color: #59535f; font-size: 12.5px; line-height: 1.45; }
.yw-rates-managed-rows { margin: 4px 0 0; padding: 0; color: #87818c; font-size: 11.5px; line-height: 1.5; list-style: none; }
.yw-rates-unlock .yw-card-head { align-items: center; }
/* Rooms: the status as the hover's label, the far-out floor, the caps. */
.yw-rates-rooms-status { margin: 0; color: #59535f; font-size: 13px; }
.yw-rates-rooms-status .hw-info-label { color: inherit; }
.yw-rates-farout { color: #343039; font-size: 13px; }
.yw-rates-caps { margin: 8px 0 0; padding: 0; list-style: none; }
.yw-rates-caps > li { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; padding: 10px 2px; border-top: 1px solid #eae8ec; }
.yw-rates-caps > li:first-child { border-top: 0; }
.yw-rates-caps-name { min-width: 0; overflow: hidden; color: #202024; font-size: 13px; font-weight: 500; text-overflow: ellipsis; white-space: nowrap; }
/* The takeover panel: the state as its lead, the rest under a hairline. */
.yw-rates-takeover-state { margin: 0; color: #202024; font-size: 13px; font-weight: 500; line-height: 1.45; }
.yw-rates-takeover[data-tone="amber"] .yw-rates-takeover-state { color: #a96883; }
.yw-rates-takeover-body { color: #59535f; font-size: 12.5px; }
.yw-rates-takeover-more { border-top: 1px solid #e6e3e9; }
/* Frozen nights: Needs-you rows in a scroller. */
.yw-rates-frozen-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.yw-rates-frozen-list { max-height: 22rem; margin: 8px 0 0; padding: 0; overflow-y: auto; list-style: none; scrollbar-width: thin; scrollbar-color: #ddd2e7 transparent; }
.yw-rates-frozen-row { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 0 10px; padding: 9px 2px; border-top: 1px solid #e6e3e9; }
.yw-rates-frozen-row:first-child { border-top: 0; }
.yw-rates-frozen-mark { display: grid; width: 28px; height: 28px; place-items: center; border-radius: 50%; background: #eee7f8; color: #8a66bc; font-size: 12px; font-weight: 500; }
.yw-rates-frozen-row[data-flagged] .yw-rates-frozen-mark { background: #f8e8ef; color: #bd6a91; }
.yw-rates-frozen-day { color: #202024; font-size: 12.5px; font-weight: 500; }
.yw-rates-frozen-line { margin-top: 2px; color: #59535f; font-size: 12px; line-height: 1.45; }
.yw-rates-frozen-flag { margin-top: 2px; color: #a96883; font-size: 12px; line-height: 1.45; }
/* Last run: the headline as the lead, the reasons as rows. Inside a Setup
   panel, which titles it already, its own frame and label step aside. */
.yw-rates-run-lead { margin-top: 4px; color: #202024; font-size: 15px; font-weight: 500; letter-spacing: -.2px; }
.yw-rates-run-lead[data-tone="bad"] { color: #a96883; }
.yw-rates-run-reasons { max-height: 18rem; margin: 12px 0 0; padding: 0; overflow-y: auto; list-style: none; scrollbar-width: thin; scrollbar-color: #ddd2e7 transparent; }
.yw-rates-run-reasons > li { display: grid; grid-template-columns: 2.5rem minmax(0, 1fr); gap: 0 10px; padding: 9px 0; border-top: 1px solid #eae8ec; color: #343039; font-size: 12.5px; line-height: 1.45; }
.yw-rates-run-reasons > li:first-child { border-top: 0; }
.yw-rates-run-reasons strong { color: #202024; font-size: 14px; font-weight: 500; }
.yw-rates-run-dates { display: block; margin-top: 2px; color: #929097; font-size: 11px; }
.yw-rates-run-reasons > li.yw-rates-run-more { display: block; color: #929097; font-size: 11.5px; }
.yw-rates-page section[data-panel] .yw-rates-run { padding: 0; border: 0; background: transparent; box-shadow: none; }
.yw-rates-page section[data-panel] .yw-rates-run > [data-ui="section-label"] { display: none; }
/* Hourly: the gates as rows, the two quiet panels, the verdicts. */
.yw-rates-gates { margin-top: 6px; }
.yw-rates-sub { margin-top: 12px; padding: 12px 14px; border-radius: 14px; background: #f6f5f7; }
.yw-rates-sub .yw-money-note { margin-top: 6px; }
.yw-rates-sub-more { margin-top: 12px; padding-top: 10px; border-top: 1px solid #e6e3e9; }
.yw-rates-verdicts { margin: 8px 0 0; padding: 0; list-style: none; }
.yw-rates-verdicts > li { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; padding: 6px 0; border-top: 1px solid #e6e3e9; color: #59535f; font-size: 12px; }
.yw-rates-verdicts > li:first-child { border-top: 0; }
.yw-rates-verdicts > li > span:first-child { min-width: 5.5rem; color: #202024; font-weight: 500; }
/* Next engine: a Needs-you row per night that differs. */
.yw-rates-diverge { margin: 0; padding: 0; list-style: none; }
.yw-rates-diverge > li { display: grid; grid-template-columns: 30px minmax(0, 1fr) auto; align-items: start; gap: 0 12px; padding: 11px 2px; border-top: 1px solid #eae8ec; }
.yw-rates-diverge > li:first-child { border-top: 0; }
.yw-rates-diverge-mark { display: grid; width: 30px; height: 30px; place-items: center; border-radius: 50%; background: #f8e8ef; color: #bd6a91; font-size: 13px; }
.yw-rates-diverge > li[data-up] .yw-rates-diverge-mark { background: #eee7f8; color: #7c3aed; }
.yw-rates-diverge-day { color: #202024; font-size: 13px; font-weight: 500; }
.yw-rates-diverge-line { margin-top: 2px; color: #87818c; font-size: 11.5px; }
.yw-rates-diverge-why { margin: 4px 0 0; color: #59535f; font-size: 12px; line-height: 1.45; }
.yw-rates-diverge-amount { align-self: center; color: #202024; font-size: 15px; font-weight: 500; white-space: nowrap; }
/* Floor hit: the Dashboard's Last full week rows. */
.yw-rates-floorhit .yw-money-parts > .yw-row-stat:first-child { border-top: 0; padding-top: 4px; }
.yw-rates-floorhit-band { margin-left: 8px; }
.yw-rates-floorhit .yw-row-stat .hw-info-label { color: inherit; font: inherit; }
/* The season year strip: the month map's heat steps. Unscoped: it also
   draws in the setup pop-up. */
.yw-rates-yearstrip-month { padding: 7px 2px; border-radius: 8px; background: #f1f0f3; color: #a09aa4; font-size: 11px; font-weight: 500; text-align: center; }
.yw-rates-yearstrip-month[data-kind="low"] { background: #ece3fc; color: #5d2bb0; }
.yw-rates-yearstrip-month[data-kind="shoulder"] { background: repeating-linear-gradient(125deg, #c9aef7 0 2px, #dccbfa 2px 4px); color: #3f1d7a; }
.yw-rates-yearstrip-month[data-kind="peak"] { background: repeating-linear-gradient(125deg, #8a45f0 0 2px, #9a5ef2 2px 4px); color: #fff; }

/* --------------------------------------------------------------- dark -- */
/* The warm dark palette (skin/money.css): card #2a2a30 / border #414148,
   raised #35353c, ink #f3eef8, muted #a297ab, violet text #c5a8ff. */
[data-theme-root].dark .yw-rates-page { color: #f3eef8; }
[data-theme-root].dark .yw-rates-page .yw-rates-banner { border-color: #1c2843; background: #0d1527; box-shadow: none; color: #c3b9cc; }
[data-theme-root].dark .yw-rates-page .yw-rates-banner > button { background: #142036; color: #f3eef8; }
[data-theme-root].dark .yw-rates-page .yw-rates-banner > button:hover { background: #1c2843; }
[data-theme-root].dark .yw-rates-page .yw-rates-banner-bad { color: #e69ac4; }
[data-theme-root].dark .yw-rates-page .yw-rates-banner-accent { border-color: #4a3a63; background: #2f2638; color: #d9c8f0; }
[data-theme-root].dark .yw-rates-arrow { color: #c3b9cc; }
[data-theme-root].dark .yw-rates-arrow:hover, [data-theme-root].dark .yw-rates-today-link { background: #142036; color: #f3eef8; }
[data-theme-root].dark .yw-rates-today-link:hover { background: #1c2843; }
[data-theme-root].dark :is(.yw-rates-asof, .yw-rates-key) { color: #a297ab; }
[data-theme-root].dark .yw-rates-views { background: #142036; }
[data-theme-root].dark .yw-rates-view { color: #c3b9cc; }
[data-theme-root].dark .yw-rates-view:hover { background: #1c2843; color: #f3eef8; }
[data-theme-root].dark .yw-rates-view[aria-current="page"] { background: #3f2d5c; color: #c9b1ff; box-shadow: none; }
[data-theme-root].dark .yw-rates-bulk-menu { border-color: #1c2843; background: #0d1527; box-shadow: 0 15px 45px #00000066, 0 3px 9px #00000033; }
[data-theme-root].dark :is(.yw-rates-bulk-title, .yw-rates-bulk-list strong) { color: #f3eef8; }
[data-theme-root].dark .yw-rates-bulk-list > li { border-color: #1c2843; color: #c3b9cc; }
[data-theme-root].dark :is(.yw-rates-bulk-list em, .yw-rates-bulk-note) { color: #a297ab; }
[data-theme-root].dark .yw-rates-dow { color: #8f8996; }
[data-theme-root].dark .yw-rates-dow[data-weekend] { color: #c5a8ff; }
[data-theme-root].dark .yw-rates-tile { border-color: #1c2843; background: #101a2f; color: #f3eef8; }
[data-theme-root].dark .yw-rates-tile[data-weekend][data-heat="0"] { background: #121c31; }
[data-theme-root].dark :is(.yw-rates-tile-date, .yw-rates-tile-occ, .yw-rates-tile-word, .yw-rates-tile-closed, .yw-rates-mark-theirs) { color: #c3b9cc; }
[data-theme-root].dark .yw-rates-tile-price { color: #f3eef8; }
[data-theme-root].dark .yw-rates-tile[data-today] .yw-rates-tile-date { color: #c5a8ff; }
[data-theme-root].dark .yw-rates-tile[data-today] .yw-rates-tile-date::before { background: #c5a8ff; box-shadow: none; }
[data-theme-root].dark :is(.yw-rates-mark-star, .yw-rates-key-star) { color: #e6bd7f; }
[data-theme-root].dark .yw-rates-mark-bang { color: #e69ac4; }
[data-theme-root].dark .yw-rates-mark-lock { stroke: #c3b9cc; }
[data-theme-root].dark .yw-rates-mark-lock[data-kind="locked"] { stroke: #c5a8ff; }
[data-theme-root].dark .yw-rates-mark-stay { background: rgba(10, 15, 30, .45); color: #f3eef8; }
[data-theme-root].dark .yw-rates-key-stay { background: #1c2843; color: #d9d2e3; }
[data-theme-root].dark .yw-rates-tile-track { background: rgba(255, 255, 255, .12); }
[data-theme-root].dark .yw-rates-tile-track > i { background: #c5a8ff; }
/* The heat, dark: the same five steps rising from the card toward the violet. */
[data-theme-root].dark .yw-rates-tile[data-heat="1"], [data-theme-root].dark .yw-rates-heat-1, [data-theme-root].dark .yw-rates-yday[data-heat="1"] { border-color: #3d3550; background: #322d3e; box-shadow: none; }
[data-theme-root].dark .yw-rates-tile[data-heat="2"], [data-theme-root].dark .yw-rates-heat-2, [data-theme-root].dark .yw-rates-yday[data-heat="2"] { border-color: #4a3a63; background: #3a3050; }
[data-theme-root].dark .yw-rates-tile[data-heat="3"], [data-theme-root].dark .yw-rates-heat-3, [data-theme-root].dark .yw-rates-yday[data-heat="3"] { border-color: #5c4a78; background: repeating-linear-gradient(125deg, #4c3b6c 0 2px, #413459 2px 4px); }
[data-theme-root].dark .yw-rates-tile[data-heat="4"], [data-theme-root].dark .yw-rates-heat-4, [data-theme-root].dark .yw-rates-yday[data-heat="4"] { border-color: #7a5bb0; background: repeating-linear-gradient(125deg, #6c4ca6 0 2px, #5d4290 2px 4px); }
[data-theme-root].dark .yw-rates-tile[data-heat="5"], [data-theme-root].dark .yw-rates-heat-5, [data-theme-root].dark .yw-rates-yday[data-heat="5"] { border-color: #9a6cf0; background: repeating-linear-gradient(125deg, #8a55e8 0 2px, #7646d2 2px 4px); }
[data-theme-root].dark .yw-rates-tile[data-tone="behind"], [data-theme-root].dark .yw-rates-yday[data-tone="behind"] { border-color: #5a3a4b; background: #3a2a31; }
[data-theme-root].dark .yw-rates-tile[data-tone="behind"][data-depth="severe"], [data-theme-root].dark .yw-rates-heat-behind { border-color: #7a4a63; background: repeating-linear-gradient(125deg, #6b3f57 0 2px, #553345 2px 4px); }
[data-theme-root].dark .yw-rates-tile[data-tone="behind"] :is(.yw-rates-tile-price, .yw-rates-tile-date, .yw-rates-tile-occ) { color: #f3eef8; }
[data-theme-root].dark .yw-rates-tile[data-tone="behind"] .yw-rates-tile-word { color: #f0b8d2; }
[data-theme-root].dark .yw-rates-tile[data-tone="behind"] .yw-rates-tile-track > i { background: #e69ac4; }
[data-theme-root].dark .yw-rates-tile[data-tone="closed"], [data-theme-root].dark .yw-rates-yday[data-tone="closed"] { border-color: #1c2843; background: repeating-linear-gradient(135deg, #16223a 0 5px, #0e1629 5px 10px); }
[data-theme-root].dark .yw-rates-tile[data-tone="closed"] :is(.yw-rates-tile-price, .yw-rates-tile-date, .yw-rates-tile-occ) { color: #8f8996; }
[data-theme-root].dark .yw-rates-tile[data-tone="closed"] .yw-rates-tile-word { color: #c3b9cc; }
[data-theme-root].dark .yw-rates-tile[data-muted="unscored"] { background: #0e1629; }
[data-theme-root].dark .yw-rates-tile[data-muted="unscored"] .yw-rates-tile-price { color: #6f6975; }
[data-theme-root].dark .yw-rates-tile[data-selected] { border-color: #c5a8ff; box-shadow: inset 0 0 0 2px #c5a8ff, inset 0 0 0 3.5px #202024; }
[data-theme-root].dark .yw-rates-tip { border-color: #1c2843; background: rgba(13, 21, 39, .97); box-shadow: 0 15px 45px #00000066; color: #c3b9cc; }
[data-theme-root].dark :is(.yw-rates-tip-title, .yw-rates-tip-rows dd) { color: #f3eef8; }
[data-theme-root].dark :is(.yw-rates-tip-note, .yw-rates-tip-rows dt, .yw-rates-tip-verdict) { color: #a297ab; }
[data-theme-root].dark .yw-rates-tip-rows > div { border-color: #1c2843; }
[data-theme-root].dark .yw-rates-tip-verdict[data-tone="bad"] { color: #e69ac4; }
[data-theme-root].dark .yw-rates-tip-verdict[data-tone="good"] { color: #7fd3b4; }
[data-theme-root].dark .yw-rates-ymonth-name { color: #f3eef8; }
[data-theme-root].dark .yw-rates-ymonth-name:hover { color: #c5a8ff; }
[data-theme-root].dark .yw-rates-ydow { color: #8f8996; }
[data-theme-root].dark .yw-rates-yday { background: #142036; color: #d9d2e3; }
[data-theme-root].dark .yw-rates-yday[data-blank] { background: transparent; }
[data-theme-root].dark .yw-rates-yday[data-today] { box-shadow: inset 0 0 0 1.5px #c5a8ff, inset 0 0 0 3px #202024; color: #c5a8ff; }
[data-theme-root].dark .yw-rates-yday[data-event]::after { background: #e6bd7f; }
[data-theme-root].dark .yw-rates-night-toggle { border-color: #1c2843; background: #0d1527; color: #c3b9cc; }
[data-theme-root].dark .yw-rates-night-toggle:hover { background: #142036; color: #f3eef8; }
[data-theme-root].dark :is(.yw-rates-night-empty, .yw-rates-night-lead, .yw-rates-night-hero-label .hw-info-label, .yw-rates-stat-note, .yw-rates-comp-rank, .yw-rates-room-line) { color: #a297ab; }
[data-theme-root].dark .yw-rates-page .yw-rates-night-price[data-empty] { color: #a297ab; }
[data-theme-root].dark .yw-rates-page [role="tablist"][aria-label="This night"] { background: #142036; }
[data-theme-root].dark .yw-rates-page [role="tablist"][aria-label="This night"] > button { color: #c3b9cc; }
[data-theme-root].dark .yw-rates-page [role="tablist"][aria-label="This night"] > button:hover { background: #1c2843; color: #f3eef8; }
[data-theme-root].dark .yw-rates-page [role="tablist"][aria-label="This night"] > button[aria-selected="true"] { background: #3f2d5c; color: #c9b1ff; box-shadow: none; }
[data-theme-root].dark .yw-rates-page :is(.yw-rates-night, .yw-rates-drawer) .overflow-y-auto > div [data-ui="section-label"] { color: #f3eef8; }
[data-theme-root].dark :is(.yw-rates-night-line, .yw-rates-lines > li, .yw-rates-manual-label, .yw-rates-lock-row, .yw-rates-why-pin, .yw-rates-comps > li, .yw-rates-apply-rooms > li) { color: #c3b9cc; }
[data-theme-root].dark .yw-rates-night-line[data-tone="accent"] { color: #c9b1ff; }
[data-theme-root].dark .yw-rates-night-line[data-tone="good"] { color: #7fd3b4; }
[data-theme-root].dark .yw-rates-night-line[data-tone="bad"] { color: #e69ac4; }
[data-theme-root].dark :is(.yw-rates-night-line .hw-info-label, .yw-rates-manual-label .hw-info-label, .yw-rates-rank, .yw-rates-lock-row strong, .yw-rates-why-head, .yw-rates-comp-rate, .yw-rates-room-name, .yw-rates-room-price, .yw-rates-apply-move, .yw-rates-apply-rooms strong, .yw-rates-comps > li[data-you]) { color: #f3eef8; }
[data-theme-root].dark :is(.yw-rates-lines > li, .yw-rates-manual, .yw-rates-lock-row, .yw-rates-comps > li, .yw-rates-room) { border-color: #1c2843; }
[data-theme-root].dark .yw-rates-apply-rooms > li { border-color: #4a3a63; }
[data-theme-root].dark .yw-rates-page .yw-rates-pill { background: #142036; color: #f3eef8; }
[data-theme-root].dark .yw-rates-page .yw-rates-pill:hover { background: #1c2843; }
[data-theme-root].dark .yw-rates-page .yw-rates-pill[data-tone="bad"] { color: #e69ac4; }
[data-theme-root].dark :is(.yw-rates-apply-body, .yw-rates-why, .yw-rates-comps > li[data-you]) { background: #2f2638; }
[data-theme-root].dark .yw-rates-lock-form { background: #142036; }
[data-theme-root].dark .yw-rates-chip { background: #142036; box-shadow: none; color: #c3b9cc; }
[data-theme-root].dark .yw-rates-chip[data-tone="good"] { color: #7fd3b4; }
[data-theme-root].dark .yw-rates-chip[data-tone="bad"] { color: #e69ac4; }
[data-theme-root].dark .yw-rates-room-mark { background: #3d3350; color: #c5a8ff; }
[data-theme-root].dark .yw-rates-room[data-stands="no"] .yw-rates-room-mark { background: #4d3345; color: #f0b8d2; }
[data-theme-root].dark .yw-rates-room[data-stands="unknown"] .yw-rates-room-mark { background: #142036; color: #8f8996; }
[data-theme-root].dark .yw-rates-page .yw-rates-drawer { border-color: #1c2843; background: #0d1527; }
[data-theme-root].dark .yw-rates-page .yw-money-muted { color: #a297ab; }
/* The cards around the map, dark. */
[data-theme-root].dark :is(.yw-rates-subhead, .yw-rates-who-line, .yw-rates-auto-state, .yw-rates-auto-check, .yw-rates-managed-title, .yw-rates-caps-name, .yw-rates-takeover-state, .yw-rates-frozen-day, .yw-rates-run-lead, .yw-rates-run-reasons strong, .yw-rates-verdicts > li > span:first-child, .yw-rates-diverge-day, .yw-rates-diverge-amount, .yw-rates-farout) { color: #f3eef8; }
[data-theme-root].dark :is(.yw-rates-managed-value, .yw-rates-rooms-status, .yw-rates-takeover-body, .yw-rates-frozen-line, .yw-rates-run-reasons > li, .yw-rates-verdicts > li, .yw-rates-diverge-why) { color: #c3b9cc; }
[data-theme-root].dark :is(.yw-rates-auto-hint, .yw-rates-managed-rows, .yw-rates-run-dates, .yw-rates-run-reasons > li.yw-rates-run-more, .yw-rates-diverge-line) { color: #a297ab; }
[data-theme-root].dark :is(.yw-rates-run-lead[data-tone="bad"], .yw-rates-frozen-flag, .yw-rates-takeover[data-tone="amber"] .yw-rates-takeover-state) { color: #e69ac4; }
[data-theme-root].dark .yw-rates-reveal { color: #c5a8ff; }
[data-theme-root].dark :is(.yw-rates-auto-cancel, .yw-rates-managed-row, .yw-rates-caps > li, .yw-rates-takeover-more, .yw-rates-frozen-row, .yw-rates-run-reasons > li, .yw-rates-sub-more, .yw-rates-verdicts > li, .yw-rates-diverge > li) { border-color: #1c2843; }
[data-theme-root].dark .yw-rates-who-change[open] > summary { background: #1c2843; }
[data-theme-root].dark .yw-rates-auto-switch[data-on] { border-color: #4a3a63; }
[data-theme-root].dark :is(.yw-rates-managed-mark, .yw-rates-frozen-mark, .yw-rates-diverge > li[data-up] .yw-rates-diverge-mark) { background: #3d3350; color: #c5a8ff; }
[data-theme-root].dark :is(.yw-rates-frozen-row[data-flagged] .yw-rates-frozen-mark, .yw-rates-diverge-mark) { background: #4d3345; color: #f0b8d2; }
[data-theme-root].dark .yw-rates-sub { background: #142036; }
[data-theme-root].dark .yw-rates-yearstrip-month { background: #142036; color: #8f8996; }
[data-theme-root].dark .yw-rates-yearstrip-month[data-kind="low"] { background: #3a3050; color: #d9c8f0; }
[data-theme-root].dark .yw-rates-yearstrip-month[data-kind="shoulder"] { background: repeating-linear-gradient(125deg, #5d4290 0 2px, #4c3b6c 2px 4px); color: #f3eef8; }
[data-theme-root].dark .yw-rates-yearstrip-month[data-kind="peak"] { background: repeating-linear-gradient(125deg, #8a55e8 0 2px, #7646d2 2px 4px); color: #fff; }

