/* Fluxology Vacation — analytical travel-opportunity layer. Shared primitives
   remain in ds-dashboard.css; this file only defines Vacation-specific views. */

.wide-stats { grid-template-columns: repeat(8, 1fr); }
.wide-stats .stat { min-width: 0; }
.wide-stats .stat b { font-size: clamp(1.45rem, 2.2vw, 2rem); }

.insight-row { display: grid; grid-template-columns: 1.05fr .95fr; gap: var(--spacing-lg); margin-bottom: var(--spacing-lg); }
.panel { background: var(--dash-surface); border: 1px solid var(--dash-border); border-radius: var(--radius-md); padding: var(--spacing-lg); }
.panel-title { display:flex; align-items:flex-start; justify-content:space-between; gap:var(--spacing-md); }
.panel-title h3 { margin:.25rem 0 0; }
.muted { color:var(--dash-muted); }
.health-metrics { display:grid; grid-template-columns:repeat(4,1fr); gap:var(--spacing-sm); margin:var(--spacing-md) 0; }
.health-metric { padding:.7rem; border:1px solid var(--dash-border); border-radius:var(--radius-sm); }
.health-metric b { display:block; font-family:var(--current-font-technical); font-size:1.1rem; color:var(--dash-heading); }
.health-metric small { color:var(--dash-muted); }
.score-orb { width:60px; height:60px; flex:none; display:grid; place-items:center; border-radius:50%; border:2px solid var(--dash-accent); color:var(--dash-accent-text); font:700 1.35rem var(--current-font-heading); box-shadow:var(--glow-accent); }
.signal-facts { display:flex; flex-wrap:wrap; gap:var(--spacing-sm); }
.signal-facts span { padding:.35rem .55rem; background:var(--dash-panel); border:1px solid var(--dash-border); border-radius:var(--radius-sm); font:500 var(--font-size-xs) var(--current-font-technical); }

.calendar-section { margin-bottom:var(--spacing-lg); }
.seasonal-calendar { display:grid; grid-template-columns:repeat(12,1fr); gap:var(--spacing-sm); margin-top:var(--spacing-lg); }
.month-cell { min-width:0; padding:.75rem .55rem; border:1px solid var(--dash-border); border-radius:var(--radius-sm); background:color-mix(in srgb,var(--dash-accent) calc(var(--heat) * .6%),var(--dash-surface)); cursor:pointer; }
.month-cell:hover { border-color:var(--dash-accent); }
.month-cell strong { display:block; font-family:var(--current-font-technical); font-size:var(--font-size-xs); letter-spacing:var(--letter-spacing-wide); color:var(--dash-heading); }
.month-cell span { display:block; margin-top:.4rem; font-size:.72rem; line-height:1.25; color:var(--dash-body); overflow-wrap:anywhere; }
.calendar-note { margin:.75rem 0 0; font-size:var(--font-size-xs); color:var(--dash-muted); }
.seasonal-evidence { display:flex; flex-wrap:wrap; gap:.45rem .8rem; margin-top:.65rem; font-size:var(--font-size-xs); }
.seasonal-evidence a { color:var(--dash-accent-text); }

.vacation-controls { grid-template-columns:minmax(230px,1.4fr) repeat(5,minmax(130px,.75fr)) auto auto; }
.filter-button { display:inline-flex; align-items:center; justify-content:center; gap:.4rem; white-space:nowrap; }
.filter-button svg { width:15px; }
.feature-panel { margin-top:calc(var(--spacing-md) * -1); margin-bottom:var(--spacing-lg); }
.feature-grid { display:grid; grid-template-columns:repeat(6,1fr); gap:.65rem 1rem; }
.feature-grid label,.range-row label { display:flex; align-items:center; gap:.45rem; font-size:var(--font-size-xs); color:var(--dash-body); }
.range-row { display:grid; grid-template-columns:repeat(4,1fr); gap:var(--spacing-sm); margin-top:var(--spacing-md); padding-top:var(--spacing-md); border-top:1px solid var(--dash-border); }
.range-row label { flex-direction:column; align-items:stretch; }
.range-row select { width:100%; }

.feed-actions { display:flex; align-items:center; justify-content:flex-end; gap:var(--spacing-sm); flex-wrap:wrap; }
.vacation-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
.vacation-card { position:relative; overflow:hidden; display:flex; flex-direction:column; }
.vacation-card .ct { flex:1; }
.travel-media { min-height:114px; padding:var(--spacing-md); display:flex; align-items:flex-start; justify-content:space-between; background:linear-gradient(135deg,color-mix(in srgb,var(--dash-accent) 20%,var(--dash-panel)),var(--dash-surface)); border-bottom:1px solid var(--dash-border); }
.travel-media.has-image { min-height:158px; background-size:cover; background-position:center; }
.travel-media.has-image::before { content:''; position:absolute; inset:0 0 auto; height:158px; background:linear-gradient(180deg,rgba(4,12,20,.3),rgba(4,12,20,.8)); pointer-events:none; }
.travel-media > * { position:relative; z-index:1; }
.destination-mark { display:flex; align-items:center; gap:.5rem; color:var(--dash-heading); font:600 var(--font-size-xs) var(--current-font-technical); letter-spacing:var(--letter-spacing-wide); text-transform:uppercase; }
.destination-mark svg { width:17px; color:var(--dash-accent-text); }
.card-score { width:52px; height:52px; border-radius:50%; background:var(--dash-surface); border:2px solid var(--dash-accent); display:grid; place-items:center; font:700 1.15rem var(--current-font-heading); color:var(--dash-heading); }
.compare-pick { position:absolute; top:.75rem; left:.75rem; z-index:3; width:27px; height:27px; border:1px solid var(--dash-border-strong); border-radius:var(--radius-sm); background:var(--dash-surface); cursor:pointer; display:grid; place-items:center; }
.compare-pick.selected { color:var(--dash-on-accent); background:var(--dash-accent); border-color:var(--dash-accent); }
.vacation-card .kicker { padding-left:2.1rem; }
.room-name { color:var(--dash-accent-text); font-weight:600; margin:.25rem 0 .65rem; }
.cost-line { display:flex; align-items:end; justify-content:space-between; gap:1rem; padding:.65rem 0; border-block:1px solid var(--dash-border); }
.cost-line b { display:block; font:700 1.35rem var(--current-font-heading); color:var(--dash-heading); }
.cost-line small { color:var(--dash-muted); }
.budget-state { text-align:right; font:600 var(--font-size-xs) var(--current-font-technical); }
.budget-state.in { color:var(--dash-success); }
.budget-state.near { color:var(--dash-warn-text); }
.budget-state.over { color:var(--dash-danger-text); }
.amenities { display:flex; gap:.35rem; flex-wrap:wrap; padding-top:.65rem; }
.amenity { display:inline-flex; align-items:center; gap:.25rem; padding:.24rem .4rem; border:1px solid var(--dash-border); border-radius:var(--radius-full); font-size:.69rem; color:var(--dash-body); }
.amenity svg { width:13px; height:13px; color:var(--dash-accent-text); }
.spark-wrap { display:grid; grid-template-columns:84px 1fr; align-items:center; gap:.6rem; margin-top:.7rem; }
.spark { height:30px; width:84px; overflow:visible; }
.spark polyline { fill:none; stroke:var(--dash-accent); stroke-width:2; vector-effect:non-scaling-stroke; }
.spark circle { fill:var(--dash-accent); }
.price-delta { font:500 var(--font-size-xs) var(--current-font-technical); color:var(--dash-muted); }
.price-delta.down { color:var(--dash-success); }
.price-delta.up { color:var(--dash-danger-text); }
.why { margin:.7rem 0 0; color:var(--dash-muted); line-height:1.45; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.evidence-row { display:flex; align-items:center; justify-content:space-between; gap:.5rem; margin-top:.6rem; font-size:var(--font-size-xs); }
.freshness { color:var(--dash-muted); }

.badge.verified,.badge.high-confidence { color:var(--dash-success); border-color:color-mix(in srgb,var(--dash-success) 50%,var(--dash-border)); }
.badge.projected,.badge.partial { color:var(--dash-warn-text); border-color:color-mix(in srgb,var(--dash-warn) 50%,var(--dash-border)); }
.badge.stale,.badge.unresolved { color:var(--dash-danger-text); border-color:color-mix(in srgb,var(--dash-danger) 50%,var(--dash-border)); }
.badge.promo { color:var(--dash-accent-text); }
.badge.rejected { color:var(--dash-danger-text); }

.detail-hero { padding:var(--spacing-xl); border-bottom:1px solid var(--dash-border); background:linear-gradient(135deg,color-mix(in srgb,var(--dash-accent) 12%,var(--dash-surface)),var(--dash-surface)); }
.detail-hero h2 { margin:.4rem 0; }
.detail-room { color:var(--dash-accent-text); font-weight:600; }
.detail-score-row { display:flex; gap:var(--spacing-sm); align-items:center; flex-wrap:wrap; margin-top:var(--spacing-md); }
.score-bars { display:grid; gap:.55rem; }
.score-line { display:grid; grid-template-columns:145px 1fr 32px; gap:.6rem; align-items:center; font-size:var(--font-size-xs); }
.score-line .bar { height:6px; border-radius:999px; background:var(--dash-border); overflow:hidden; }
.score-line .bar i { display:block; height:100%; width:var(--score); background:var(--dash-accent); }
.source-list { display:grid; gap:.55rem; }
.source-list a { overflow-wrap:anywhere; }
.history-table,.compare-table,.ledger-table { width:100%; border-collapse:collapse; font-size:var(--font-size-xs); }
.history-table th,.history-table td,.compare-table th,.compare-table td,.ledger-table th,.ledger-table td { padding:.6rem; border-bottom:1px solid var(--dash-border); text-align:left; vertical-align:top; }
.history-table th,.compare-table th,.ledger-table th { font-family:var(--current-font-technical); color:var(--dash-muted); text-transform:uppercase; letter-spacing:var(--letter-spacing-wide); }
.workspace select,.workspace textarea { width:100%; margin-top:.5rem; }
.compare-dialog { width:min(1200px,95vw); }
.compare-scroll { overflow:auto; }
.compare-table th:first-child { position:sticky; left:0; background:var(--dash-surface); z-index:1; }
.ledger-reason { color:var(--dash-danger-text); }

@media(max-width:1250px){.wide-stats{grid-template-columns:repeat(4,1fr)}.vacation-controls{grid-template-columns:repeat(4,1fr)}.vacation-controls .search{grid-column:1/-1}.feature-grid{grid-template-columns:repeat(4,1fr)}.seasonal-calendar{grid-template-columns:repeat(6,1fr)}}
@media(max-width:980px){.vacation-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.insight-row{grid-template-columns:1fr}.range-row{grid-template-columns:repeat(2,1fr)}}
@media(max-width:670px){.wide-stats{grid-template-columns:repeat(2,1fr)}.vacation-controls{grid-template-columns:1fr}.feature-grid,.range-row{grid-template-columns:1fr}.vacation-grid{grid-template-columns:1fr}.seasonal-calendar{grid-template-columns:repeat(3,1fr)}.health-metrics{grid-template-columns:repeat(2,1fr)}.feed-actions{justify-content:flex-start}.live{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.score-line{grid-template-columns:115px 1fr 30px}}
