/* JDServer-Webs module frames v1, approved Cardedeu Centre pilot, 2026-10-23.
 * One shared stylesheet. Opt-in documents only; no header/footer/control rules.
 * Preserve semantic risk colors, hidden modules, and native component layouts.
 */
body[data-jd-module-frames="v1"] {
  --jd-frame-accent: var(--brand, var(--wm-accent, var(--accent, #2aa8a0)));
}

/* Modules that have no outer card receive the approved Mobile-style frame. */
body[data-jd-module-frames="v1"] :is(
  main.container > :is(
    #live, #webcams, .module
  ):not(:is(
    #station-voice, #hunters-nav, #phenomena-public,
    .jd-lightning-hero, .jd-meteors-hero
  )):not(:has(> :is(
    .cloudhunter-block, .stormhunter-block, .sunhunter-block
  ):only-child)):not(:empty),
  main.container > :is([id^="astronomy-"], #iss, #solar-watch):not(:empty),
  main.container > #webcams_history,
  main.container > :is(.pl-section, .ex-section, #fc-days):not(:empty),
  main.container.jd-main > .jd-section,
  main.container > .ed-summary-shell > .module:not(:empty)
) {
  min-inline-size: 0;
  padding: clamp(12px, 1.6vw, 20px);
  background: var(--card, #f8fafc);
  border: 1px solid var(--border, #e5e7eb);
  border-top: 3px solid var(--risk-accent, var(--jd-frame-accent));
  border-radius: var(--radius, 16px);
  box-shadow: var(--shadow-1, 0 1px 4px #0001);
}

/* Native cards keep their padding, surfaces, grids and corner radii. */
body[data-jd-module-frames="v1"] :is(
  main.container > .card,
  main.container > div > .card,
  main.container > .legal-card,
  main.container > .ed-summary-shell,
  main.container > .idx-details-shell,
  main.container > .jd-public-page-disabled-card,
  main.container > .models-windy-archive,
  main.container > #hm-period-summary > article,
  main.container > .jd-lightning-hero,
  main.container > .jd-meteors-hero,
  main.container > #station-voice > .station-voice-card,
  main.container > #hunters-nav > .hunters-nav,
  main.container > .module > :is(
    .cloudhunter-block, .stormhunter-block, .sunhunter-block
  ):only-child,
  main.container .jd-phenomena__shell,
  main.container .station-profile-hero,
  main.container .station-profile-section,
  main.container .station-profile-narrative > article,
  main.container .station-profile-rain,
  main.container .station-profile-unavailable,
  main.container #service-status :is(.ss-summary, .ss-card, .ss-details),
  main.container :is(
    .recap-header, .recap-card, .recap-highlights, .recap-wiki, .recap-charts
  ),
  main#meteo-calendar .mc-panel,
  main.container .jd-civil :is(.pc-situation, .pc-local, .pc-panel),
  main.container .jd-rail-module :is(.panel, .map-shell, .source-details),
  main.container.jd-main > :is(.jd-hero, .jd-section),
  main.can-coll :is(.panel, .filters, .ptv-hero, .ptv-record, .ptv-intro-link),
  main.wm-main .wm-wrap > .wm-card,
  main.wm-main .wm-hero > .wm-hero__top,
  main.shell > :is(.filters, .panel)
) {
  border-top: 3px solid var(--risk-accent, var(--jd-frame-accent)) !important;
}

/* The homepage risks module retains the current status color. */
body[data-jd-module-frames="v1"] main.container > #live-risks > :is(
  .live-risks-link, .live-risks-loading, .live-risks-error
) {
  border-top: 3px solid var(--risk-accent, var(--jd-frame-accent));
}
