/* /Components/Common/ErrorPage.razor.rz.scp.css */
.error-page-wrapper[b-2n12efv0cz] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    padding: var(--space-xl);
    background: var(--gradient-bg);
}

.error-page-card[b-2n12efv0cz] {
    width: 100%;
    max-width: 480px;
    background: var(--glass-bg);
    border: 1px solid var(--glass-border);
    border-radius: var(--radius-xl);
    padding: var(--space-2xl);
    text-align: center;
    animation: errorSlideUp-b-2n12efv0cz 0.5s ease-out;
    box-shadow: 0 8px 32px var(--glass-shadow);
}

.error-icon[b-2n12efv0cz] {
    font-size: 3rem;
    margin-bottom: var(--space-lg);
    color: var(--color-warning);
}

.error-title[b-2n12efv0cz] {
    font-family: var(--font-display);
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 var(--space-sm) 0;
}

.error-message[b-2n12efv0cz] {
    font-size: 0.9375rem;
    color: var(--text-secondary);
    margin: 0 0 var(--space-xl) 0;
    line-height: 1.6;
}

.error-actions[b-2n12efv0cz] {
    display: flex;
    gap: var(--space-md);
    justify-content: center;
    flex-wrap: wrap;
}

@keyframes errorSlideUp-b-2n12efv0cz {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@media (max-width: 480px) {
    .error-page-card[b-2n12efv0cz] {
        padding: var(--space-xl);
    }

    .error-title[b-2n12efv0cz] {
        font-size: 1.25rem;
    }

    .error-actions[b-2n12efv0cz] {
        flex-direction: column;
    }
}
/* /Features/Core/Rates/Components/RateCalendarGrid.razor.rz.scp.css */
/* Rate grid — calendar-only layout. The look (header, cells, sticky columns, weekend / selected / hover rows, tints, chips,
   range bar, rank, month breaks) is the global "Data grid (I-027)" pattern in app.css, worn through the .dgrid classes in
   RateCalendarGrid.razor; this sheet only frames it (I-027 D-l). The sticky Night and Mine widths are the pattern's own
   (206px / 92px, a 150px Night in a narrow container). */

/* The frame is fit-content, so it cannot be the size container itself: this full-width host declares the pattern's
   "dgrid" container, and the global < 600px rule (150px Night, lead label hidden) applies here as on any .dgrid-frame. */
.rate-grid-host[b-se2ymk27ll] {
    container: dgrid / inline-size;
}

.rate-grid[b-se2ymk27ll] {
    position: relative;
    width: fit-content; /* a small comp set stays compact instead of stretching every column */
    max-width: 100%;
    overflow: auto;
    max-height: min(78vh, 1100px);
    min-height: 320px;
    border-radius: var(--radius-md);
    border: 1px solid var(--glass-border);
    background: var(--color-bg-dark-secondary);
    overscroll-behavior: contain;
    scrollbar-color: var(--glass-border-light) transparent;
}

.rate-grid__caption[b-se2ymk27ll] {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}

/* Orange only means "mine" (D-c): my hotel's name in the header, like my figure in the row. */
.rate-grid__table thead .rg-mine .dgrid__h-name[b-se2ymk27ll] {
    color: var(--color-primary-text);
}
/* /Features/Core/Shared/Charts/LineChart.razor.rz.scp.css */
.line-chart[b-34euu44h1p] {
    margin: 0;
    width: 100%;
    min-width: 0;
}

.line-chart__frame[b-34euu44h1p] {
    position: relative;
    display: grid;
    grid-template-columns: 56px minmax(0, 1fr);
    /* LineChart.FrameStyle repeats these two inline from its constants when EndLabels is on (its pixel maths reads them) */
    grid-template-rows: minmax(0, 1fr) 26px;
    padding-top: 10px;
}

.line-chart__yaxis[b-34euu44h1p] {
    position: relative;
    grid-column: 1;
    grid-row: 1;
}

.line-chart__ytick[b-34euu44h1p] {
    position: absolute;
    right: 10px;
    transform: translateY(-50%);
    font-size: 0.6875rem;
    color: var(--text-muted);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.line-chart__plot[b-34euu44h1p] {
    position: relative;
    grid-column: 2;
    grid-row: 1;
    margin-right: 12px;
    outline: none;
    border-radius: var(--radius-xs);
}

.line-chart__plot:focus-visible[b-34euu44h1p] {
    box-shadow: 0 0 0 2px var(--color-focus-ring);
}

.line-chart__svg[b-34euu44h1p] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    overflow: visible;
}

.line-chart__grid[b-34euu44h1p] {
    stroke: var(--chart-grid);
    stroke-width: 1;
    vector-effect: non-scaling-stroke;
}

.line-chart__shade[b-34euu44h1p] {
    fill: var(--chart-shade);
}

.line-chart__shade--event[b-34euu44h1p] {
    fill: var(--color-heat-a2);
}

.line-chart__band[b-34euu44h1p] {
    fill: var(--chart-band);
    stroke: none;
}

.line-chart__line[b-34euu44h1p] {
    fill: none;
    stroke: var(--chart-color);
    stroke-width: 1.5;
    stroke-linejoin: round;
    stroke-linecap: round;
    vector-effect: non-scaling-stroke;
    opacity: 0.85;
    transition: opacity 160ms ease;
}

.line-chart__line.chart-tone--mine[b-34euu44h1p] {
    stroke-width: 3;
    opacity: 1;
}

.line-chart__line.chart-tone--median[b-34euu44h1p] {
    stroke-width: 1.5;
    stroke-dasharray: 6 5;
    opacity: 0.9;
}

.line-chart__line.chart-tone--recommended[b-34euu44h1p] {
    stroke-width: 2;
    stroke-dasharray: 2 5;
    opacity: 1;
}

.line-chart__line--dimmed[b-34euu44h1p] {
    opacity: 0.18;
}

.line-chart__crosshair[b-34euu44h1p] {
    stroke: var(--glass-border-light);
    stroke-width: 1;
    vector-effect: non-scaling-stroke;
}

.line-chart__dot[b-34euu44h1p] {
    position: absolute;
    width: 8px;
    height: 8px;
    margin: -4px 0 0 -4px;
    border-radius: 50%;
    background: var(--chart-color);
    box-shadow: 0 0 0 2px var(--color-bg-dark);
    pointer-events: none;
}

.line-chart__dot.chart-tone--mine[b-34euu44h1p] {
    width: 10px;
    height: 10px;
    margin: -5px 0 0 -5px;
}

.line-chart__hits[b-34euu44h1p] {
    position: absolute;
    inset: 0;
}

.line-chart__hit[b-34euu44h1p] {
    position: absolute;
    top: 0;
    bottom: 0;
}

.line-chart__hit--clickable[b-34euu44h1p] {
    cursor: pointer;
}

.line-chart__tooltip[b-34euu44h1p] {
    position: absolute;
    top: 0;
    z-index: 2;
    min-width: 180px;
    max-width: 260px;
    margin-left: 14px;
    padding: 8px 10px;
    border-radius: var(--radius-sm);
    background: var(--color-bg-elevated);
    border: 1px solid var(--glass-border-light);
    box-shadow: 0 12px 32px var(--glass-shadow);
    pointer-events: none;
    font-size: 0.75rem;
}

.line-chart__tooltip--left[b-34euu44h1p] {
    margin-left: 0;
    transform: translateX(calc(-100% - 14px));
}

.line-chart__tooltip-title[b-34euu44h1p] {
    color: var(--text-primary);
    font-weight: 600;
    margin-bottom: 4px;
}

.line-chart__tooltip-row[b-34euu44h1p] {
    display: grid;
    grid-template-columns: 10px minmax(0, 1fr) auto;
    align-items: center;
    gap: 6px;
    color: var(--text-secondary);
    line-height: 1.6;
}

.line-chart__tooltip-row--strong[b-34euu44h1p] {
    color: var(--text-primary);
    font-weight: 600;
}

.line-chart__tooltip-name[b-34euu44h1p] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.line-chart__tooltip-value[b-34euu44h1p] {
    font-variant-numeric: tabular-nums;
}

.line-chart__xaxis[b-34euu44h1p] {
    position: relative;
    grid-column: 2;
    grid-row: 2;
    margin-right: 12px;
}

.line-chart__xtick[b-34euu44h1p] {
    position: absolute;
    top: 6px;
    transform: translateX(-50%);
    font-size: 0.6875rem;
    color: var(--text-muted);
    white-space: nowrap;
}

.line-chart__swatch[b-34euu44h1p] {
    display: inline-block;
    width: 10px;
    height: 3px;
    border-radius: var(--radius-xxs);
    background: var(--chart-color);
    flex-shrink: 0;
}

.line-chart__swatch.chart-tone--mine[b-34euu44h1p] {
    height: 4px;
}

.line-chart__swatch--band[b-34euu44h1p] {
    height: 8px;
    background: var(--chart-band);
    border: 1px solid var(--glass-border);
}

/* F .legend (I-037 D-z): 400 11.5px mono, muted, items never wrap inside */
.line-chart__legend[b-34euu44h1p] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 14px;
    margin-top: var(--space-sm);
    padding-left: 56px;
    font: 400 11.5px var(--font-mono);
    color: var(--text-muted);
}

.line-chart__legend-item[b-34euu44h1p] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    white-space: nowrap;
}

.line-chart__legend-item--dimmed[b-34euu44h1p] {
    opacity: 0.45;
}

/* Night-history options (I-031 TASK_01; prototype F evoChart). Every rule hangs off an opt-in root modifier, so a chart
   without EndLabels / EdgeTicks / NeutralCompetitors is styled exactly as before. */

/* NeutralCompetitors: thin neutral competitors (F 1.3px), the median dashed 5 4 (F 1.8px), Mine 2.6px on top. */
.line-chart--evo [class*="chart-tone--cat-"][b-34euu44h1p] {
    --chart-color: var(--color-chart-comp);
}

.line-chart--evo .line-chart__line[class*="chart-tone--cat-"][b-34euu44h1p] {
    stroke-width: 1.3;
}

.line-chart--evo .line-chart__line.chart-tone--median[b-34euu44h1p] {
    stroke-width: 1.8;
    stroke-dasharray: 5 4;
}

.line-chart--evo .line-chart__line.chart-tone--mine[b-34euu44h1p] {
    stroke-width: 2.6;
}

/* EndLabels: a gutter right of the plot (F margin-right 92) holds "You €x" / "Med €y". */
.line-chart--ends .line-chart__plot[b-34euu44h1p],
.line-chart--ends .line-chart__xaxis[b-34euu44h1p] {
    margin-right: 92px;
}

.line-chart__end-dot[b-34euu44h1p] {
    position: absolute;
    width: 7px;
    height: 7px;
    margin: -3.5px 0 0 -3.5px;
    border-radius: 50%;
    background: var(--color-primary);
    pointer-events: none;
}

.line-chart__end[b-34euu44h1p] {
    position: absolute;
    left: 100%;
    margin-left: 10px;
    transform: translateY(-50%);
    font-family: var(--font-mono);
    font-size: 0.6875rem;
    line-height: 1;
    white-space: nowrap;
    pointer-events: none;
}

.line-chart__end--mine[b-34euu44h1p] {
    color: var(--color-primary-text);
    font-weight: 600;
}

.line-chart__end--median[b-34euu44h1p] {
    color: var(--text-secondary);
}

/* EdgeTicks: the first label starts at the plot's left edge and the last ends at its right edge; below 440px of chart
   width (a container query on the figure — the component measures nothing) only first, middle and last are printed. */
.line-chart--edge[b-34euu44h1p] {
    container-type: inline-size;
}

.line-chart__xtick--first[b-34euu44h1p] {
    transform: none;
}

.line-chart__xtick--last[b-34euu44h1p] {
    transform: translateX(-100%);
}

@container (max-width: 439.98px) {
    .line-chart__xtick--wide[b-34euu44h1p] {
        display: none;
    }
}

@media (max-width: 480px) {
    .line-chart__frame[b-34euu44h1p] {
        grid-template-columns: 44px minmax(0, 1fr);
    }

    .line-chart__legend[b-34euu44h1p] {
        padding-left: 0;
    }
}
/* /Features/Shared/Help/HelpLink.razor.rz.scp.css */
.help-link[b-lmc0dzusgx] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--text-secondary);
    opacity: 0.7;
    transition: all var(--transition-fast);
    margin-left: var(--space-sm);
    text-decoration: none;
}

.help-link:hover[b-lmc0dzusgx] {
    opacity: 1;
    color: var(--color-primary-fg);
}

.help-link[b-lmc0dzusgx]  .anticon {
    font-size: 18px;
}
/* /Features/Shared/Help/HelpPopover.razor.rz.scp.css */
.help-popover-trigger[b-rtoryilw7e] {
    padding: 2px 6px;
    min-width: auto;
    height: auto;
    color: var(--text-secondary);
    opacity: 0.6;
    transition: all var(--transition-fast);
}

.help-popover-trigger:hover[b-rtoryilw7e] {
    opacity: 1;
    color: var(--color-primary-fg);
    background: transparent !important;
}

.help-popover-trigger[b-rtoryilw7e]  .anticon {
    font-size: 14px;
}

.help-popover-content[b-rtoryilw7e] {
    max-width: 280px;
    padding: var(--space-xs);
}

.help-summary[b-rtoryilw7e] {
    margin: 0 0 var(--space-sm) 0;
    color: var(--text-primary);
    line-height: 1.5;
    font-size: 13px;
}

.help-learn-more[b-rtoryilw7e] {
    color: var(--color-primary-fg);
    text-decoration: none;
    font-size: 13px;
    font-weight: 500;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    transition: all var(--transition-fast);
}

.help-learn-more:hover[b-rtoryilw7e] {
    color: var(--color-primary-text);
    text-decoration: underline;
}
/* /Features/Shared/Notifications/Components/NotificationBell.razor.rz.scp.css */
/* The bell is the global .icon-btn + .badge-neutral and its dropdown the global .shell-dpanel (app.css "Shell (I-024)");
   this file keeps what is the bell's own: where the panel sits and the panel's inner rows. */
.notification-bell-container[b-8uj9iofwb5] {
    position: relative;
    display: inline-block;
}

.notification-dropdown[b-8uj9iofwb5] {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    max-height: 480px;
    z-index: 1000;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    line-height: 1.5;
}

.notification-dropdown-header[b-8uj9iofwb5] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 7px 10px;
    border-bottom: 1px solid var(--glass-border);
}

.notification-dropdown-title[b-8uj9iofwb5] {
    font-weight: 600;
    color: var(--text-primary);
}

.mark-all-read-button[b-8uj9iofwb5] {
    background: transparent;
    border: none;
    /* A secondary action in the panel: neutral like its other rows; orange stays the plan tag's ("mine") */
    color: var(--text-secondary);
    cursor: pointer;
    font-size: 12px;
    padding: 4px var(--space-sm);
    border-radius: var(--radius-sm);
    transition: background var(--transition-fast);
}

.mark-all-read-button:hover[b-8uj9iofwb5] {
    background: var(--color-panel-3);
    color: var(--text-primary);
}

.notification-dropdown-content[b-8uj9iofwb5] {
    flex: 1;
    overflow-y: auto;
    max-height: 340px;
}

.notification-loading[b-8uj9iofwb5],
.notification-empty[b-8uj9iofwb5] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 40px 20px;
    color: var(--text-muted);
    gap: 12px;
}

.notification-dropdown-footer[b-8uj9iofwb5] {
    margin-top: 6px;
    padding-top: 6px;
    border-top: 1px solid var(--glass-border);
}

.notification-backdrop[b-8uj9iofwb5] {
    position: fixed;
    inset: 0;
    z-index: 999;
}

/* The I-012 touch-target lift: desktop keeps F's compact link, a phone gets a 44px target (app.css lifts the rest of the shell) */
@media (max-width: 480px) {
    .mark-all-read-button[b-8uj9iofwb5] {
        min-height: 44px;
    }
}
/* /Layout/MainLayout.razor.rz.scp.css */
/* ========================================
   Main Layout - Dark Glassmorphism Theme
   ======================================== */

.main-layout[b-6ybmg00zxv] {
    height: 100vh;
    overflow: hidden;
    background: var(--gradient-bg);
}

[b-6ybmg00zxv] .layout-container {
    height: 100vh;
    background: transparent !important;
}

/* The sidebar (sider, menu, logo, rail, drawer) is the global shell block in app.css "Shell (I-024)" and overrides.css. */

/* Content Layout */
[b-6ybmg00zxv] .content-layout {
    background: transparent !important;
    /* A flex sibling of the sider: the 256px sidebar / 64px rail / off-canvas drawer set its left edge */
    flex: 1;
    min-width: 0;
    height: 100vh;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

/* Header: the top bar (F .hd) is the global .top-bar block in app.css "Shell (I-024)". These rules only beat AntD's own
   Header box (64px, 50px padding, line-height 64px) and keep the stacking B-009 pinned: without a position the
   z-index is inert, and the header sits above the content and below the drawer (z-index 152 below 900px). */
[b-6ybmg00zxv] .main-header.top-bar {
    height: 56px;
    line-height: normal;
    padding: 0 var(--space-lg);
    background: var(--glass-bg);
    color: var(--text-primary);
    border-bottom: 1px solid var(--glass-border);
    flex-shrink: 0;
    position: relative;
    z-index: 99;
}

/* Signed out: only the Login button, pushed right (signed in, the search trigger's auto margin does it) */
.top-bar__right--solo[b-6ybmg00zxv] {
    margin-left: auto;
}

/* Main Content */
[b-6ybmg00zxv] .main-content {
    margin: 0 !important;
    padding: 0 !important;
    background: transparent !important;
    flex: 1 !important;
    display: flex !important;
    flex-direction: column !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
}

.content-wrapper[b-6ybmg00zxv] {
    position: relative; /* For DevPathBadge positioning */
    flex: 1;
    display: flex;
    flex-direction: column;
}

/* Skip-link target only (tabindex=-1, never a Tab stop): no focus box around the whole content area (3565).
   The layout's own element, so a plain selector; real controls keep their :focus-visible rings */
.content-wrapper:focus[b-6ybmg00zxv] {
    outline: none;
}

/* Below 900px (html.is-narrow-shell: js/device-service.js shellBreakpoint, the one query IDeviceService.IsNarrowShell
   also reads — PR 736 #11704) the off-canvas drawer and its mask sit above the header (z-index 99): raised here, where
   the header's z-index is */
.is-narrow-shell .main-layout[b-6ybmg00zxv]  .shell-sider.main-sider {
    z-index: 152;
}

.is-narrow-shell .main-layout .nav-mask[b-6ybmg00zxv] {
    z-index: 151;
}

@media (max-width: 640px) {
    [b-6ybmg00zxv] .main-header.top-bar {
        padding: 0 var(--space-md);
    }
}
/* /Layout/NavMenu.razor.rz.scp.css */
/* The sidebar menu is styled by the global shell block (app.css "Shell (I-024)" + overrides.css); nothing here is component-local (I-024 D-j). */
/* /Pages/Index.razor.rz.scp.css */
/* ========================================
   Index Page — dashboard seed
   Debug renders the shared DashboardSampleContent (same component as
   /design-system/playground/dashboard); Release renders the seed card, since
   App.csproj strips Features\Dev\** from Release builds. See Index.razor.cs.
   The entrance animation applies to the Release seed card.
   ======================================== */

.index-container[b-id223odhjg] {
    animation: slideUp 0.6s ease-out;
}
