.spain-card{grid-column:1 / 4;min-height:260px}.spain-visual{position:absolute;inset:34px 38% 0 0;background:#dceeea;overflow:hidden}.spain-visual:before{content:"";position:absolute;width:190px;height:105px;left:28%;top:27px;background:#f7f4eb;clip-path:polygon(0 22%,20% 10%,45% 20%,62% 0,88% 23%,100% 57%,79% 93%,45% 100%,12% 78%)}.spain-visual span{position:absolute;z-index:2;left:24px;bottom:20px;font-family:'DM Mono',monospace;font-size:11px;letter-spacing:1.8px;color:#33717d}.spain-visual i{position:absolute;z-index:2;width:8px;height:8px;border-radius:50%;background:#ff8067}.spain-visual i:nth-child(2){left:43%;top:45%}.spain-visual i:nth-child(3){left:58%;top:57%}.spain-visual i:nth-child(4){left:32%;top:68%}.spain-card .card-content{margin-left:62%;padding-top:50px}.spain-card .card-content h3{font-size:30px}@media(max-width:800px){.spain-card{grid-column:auto}.spain-visual{inset:0 48% 0 0}.spain-card .card-content{margin-left:48%;padding-top:35px}.spain-card .card-content h3{font-size:22px}}
.spain-picker{position:fixed;z-index:31;inset:0;display:grid;place-items:center;padding:25px;background:#123c4ab8;opacity:0;visibility:hidden;transition:.22s}.spain-picker.open{opacity:1;visibility:visible}.spain-picker-card{position:relative;width:min(760px,100%);padding:47px 52px 51px;background:#f7f4eb;color:#123c4a;box-shadow:0 25px 70px #000b}.spain-picker-card h2{margin:0;font:500 46px/1 Fraunces,serif;letter-spacing:-1.8px}.spain-picker-card>p:not(.eyebrow){margin:15px 0 28px;color:#59767c;font-size:14px}.close-spain-picker{position:absolute;right:19px;top:15px;border:0;background:transparent;color:#35636c;font-size:27px}.spain-mode-options{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.spain-mode-options button{display:flex;min-height:126px;flex-direction:column;gap:9px;padding:16px;border:1px solid #b9d4ce;background:#e9f2ee;color:#174f62;text-align:left;transition:.15s}.spain-mode-options button:hover{transform:translateY(-2px);border-color:#ec846a;background:#fff6ea}.spain-mode-options b{color:#d85f48;font:12px 'DM Mono',monospace}.spain-mode-options span{font:500 22px Fraunces,serif}.spain-mode-options small{margin-top:auto;color:#5a777c;font-size:10px;line-height:1.35}.physical-context{fill:#edf3ee!important;stroke:#78a5a1!important;stroke-width:.7!important;pointer-events:none}.physical-river-route{fill:none!important;stroke:#238fc3!important;stroke-width:5!important;stroke-linecap:round;stroke-linejoin:round;cursor:pointer;filter:drop-shadow(0 1px 1px #123d4a55)}.physical-relief{fill:url(#physical-relief-hatch)!important;stroke:#815239!important;stroke-width:1.25!important;cursor:pointer;stroke-linejoin:round}.physical-river-route:hover,.physical-river-route.target-hover,.physical-relief:hover,.physical-relief.target-hover{stroke:#f5d25c!important;stroke-width:8!important}.physical-river-route.selected,.physical-relief.selected{stroke:#123d4b!important;stroke-width:8!important}@media(max-width:600px){.spain-picker-card{padding:36px 25px 29px}.spain-picker-card h2{font-size:39px}.spain-mode-options{grid-template-columns:1fr}.spain-mode-options button{min-height:78px}}

/* Cartografía física: la imagen visible y la zona táctil son capas distintas.
   Así la red se lee como un mapa y sigue siendo cómoda de pulsar en una tablet. */
.physical-map-backdrop{fill:url(#physical-terrain)}
.physical-ign-relief{opacity:.93;pointer-events:none}
.physical-ign-hydrography{pointer-events:none;opacity:.88;mix-blend-mode:multiply}
.physical-official-map{pointer-events:none}
.physical-context{display:none}
.physical-river-route:hover,.physical-river-route.target-hover{stroke:transparent!important;opacity:0}
.physical-relief:hover,.physical-relief.target-hover{fill:transparent!important;stroke:transparent!important}
.physical-context{fill:#f6f2e5!important;fill-opacity:.18;stroke:#4e8c90!important;stroke-width:.72!important;vector-effect:non-scaling-stroke}
.physical-river-visual,.physical-river-shine{fill:none;stroke-linecap:round;stroke-linejoin:round;pointer-events:none;vector-effect:non-scaling-stroke}
.physical-river-visual{stroke:#3a92bc;stroke-width:1.55;filter:drop-shadow(0 1px 0 #fff9)}
.physical-river-visual.major{stroke:#197eae;stroke-width:2.7}
.physical-river-shine{stroke:#d8f5f4;stroke-width:.55;opacity:.8}
.physical-river-route{fill:none!important;stroke:transparent!important;stroke-width:22!important;stroke-linecap:round;stroke-linejoin:round;cursor:pointer;pointer-events:stroke;vector-effect:non-scaling-stroke;filter:none!important}
.physical-river-route:hover,.physical-river-route.target-hover{stroke:#f0b94b!important;stroke-width:12!important;opacity:.92}
.physical-river-route.selected{stroke:#174f62!important;stroke-width:12!important;opacity:.95}
.physical-river-route.correct{stroke:#288b62!important;stroke-width:14!important;opacity:.95}
.physical-river-route.wrong{stroke:#d65e56!important;stroke-width:14!important;opacity:.95}
.physical-relief-visual{fill:url(#physical-relief-shade);stroke:none;pointer-events:none;opacity:.86}
.physical-relief-contours{fill:url(#physical-contours);stroke:none;pointer-events:none;opacity:.72}
.physical-relief-outline{fill:none;stroke:#9a6540;stroke-width:1.15;stroke-dasharray:3 3;opacity:.76;pointer-events:none;vector-effect:non-scaling-stroke}
.physical-relief{fill:transparent!important;stroke:transparent!important;stroke-width:14!important;cursor:pointer;pointer-events:all;vector-effect:non-scaling-stroke}
.physical-relief:hover,.physical-relief.target-hover{fill:#f0b94b66!important;stroke:#e3a53b!important;stroke-width:3!important}
.physical-relief.selected{fill:#174f6250!important;stroke:#174f62!important;stroke-width:3!important}
.physical-relief.correct{fill:#288b6250!important;stroke:#288b62!important;stroke-width:4!important}
.physical-relief.wrong{fill:#d65e5650!important;stroke:#d65e56!important;stroke-width:4!important}

/* El propio cauce vectorial es el objetivo: no hay una franja invisible ni
   detección por proximidad. El píxel que se ve es el píxel que se pulsa. */
.physical-river-route{stroke:#008fc4!important;stroke-opacity:.9!important;stroke-width:2.5!important;pointer-events:stroke!important;vector-effect:non-scaling-stroke}
.physical-river-route:hover,.physical-river-route.target-hover{stroke:#006d99!important;stroke-opacity:1!important;stroke-width:3.4!important;opacity:1!important}
.physical-river-route.selected{stroke:#174f62!important;stroke-opacity:1!important;stroke-width:3.6!important}
.physical-river-route.correct{stroke:#288b62!important;stroke-opacity:1!important;stroke-width:4!important}
.physical-river-route.wrong{stroke:#d65e56!important;stroke-opacity:1!important;stroke-width:4!important}
.physical-relief-raster{pointer-events:none}
.physical-hydrography-network{opacity:.66;mix-blend-mode:multiply}

/* Provinces share the same WGS84 projection as the interactive rivers. */
.physical-context{display:block}

/* IGN NGBE mountain locations: the relief raster is the terrain; these compact
   peak symbols mark official reference points without implying fake borders. */
.physical-mountain-target{cursor:pointer;pointer-events:all}
.physical-mountain-hit{fill:transparent;stroke:transparent;stroke-width:48;pointer-events:all;vector-effect:non-scaling-stroke}
.physical-mountain-halo{fill:#f7f4ebed;stroke:#76563c;stroke-width:1.5;vector-effect:non-scaling-stroke;pointer-events:none;filter:drop-shadow(0 1px 2px #173d4a66)}
.physical-mountain-glyph{fill:#bd7648;stroke:#64432f;stroke-width:1.2;stroke-linejoin:round;vector-effect:non-scaling-stroke;pointer-events:none}
.physical-mountain-snow{fill:#fff6df;stroke:#64432f;stroke-width:.65;stroke-linejoin:round;vector-effect:non-scaling-stroke;pointer-events:none}
.physical-mountain-target:hover .physical-mountain-halo,.physical-mountain-target.target-hover .physical-mountain-halo,.physical-mountain-target.selected .physical-mountain-halo{fill:#f5d25c;stroke:#174f62;stroke-width:2.5}
.physical-mountain-target:hover .physical-mountain-glyph,.physical-mountain-target.target-hover .physical-mountain-glyph,.physical-mountain-target.selected .physical-mountain-glyph{fill:#174f62}
.physical-mountain-target.correct .physical-mountain-halo{fill:#b7e0ce;stroke:#288b62;stroke-width:3}
.physical-mountain-target.correct .physical-mountain-glyph{fill:#288b62}
.physical-mountain-target.wrong .physical-mountain-halo{fill:#f8c2b5;stroke:#d65e56;stroke-width:3}
.physical-mountain-target.wrong .physical-mountain-glyph{fill:#d65e56}

/* Keep river rendering crisp while giving the same course a forgiving hit
   corridor. The hit stroke is transparent; only the visual path is painted. */
.physical-river-target{fill:none!important;stroke:none!important;pointer-events:all}
.physical-river-visual{fill:none;stroke:#008fc4;stroke-opacity:.9;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;pointer-events:none;vector-effect:non-scaling-stroke;filter:drop-shadow(0 1px 1px #123d4a55)}
.physical-river-route{fill:none!important;stroke:transparent!important;stroke-opacity:0!important;stroke-width:48px!important;stroke-linecap:round;stroke-linejoin:round;pointer-events:stroke!important;vector-effect:non-scaling-stroke;filter:none!important;cursor:pointer}
.physical-river-target .physical-river-route:hover,.physical-river-target.target-hover .physical-river-route{stroke:transparent!important;stroke-opacity:0!important;stroke-width:48px!important;opacity:1!important}
.physical-river-target:hover .physical-river-visual,.physical-river-target.target-hover .physical-river-visual{stroke:#006d99;stroke-opacity:1;stroke-width:3.4}
.physical-river-target.selected .physical-river-visual{stroke:#174f62;stroke-opacity:1;stroke-width:3.6}
.physical-river-target.correct .physical-river-visual{stroke:#288b62;stroke-opacity:1;stroke-width:4}
.physical-river-target.wrong .physical-river-visual{stroke:#d65e56;stroke-opacity:1;stroke-width:4}
.physical-river-target.wrong .physical-river-visual{stroke-width:7;filter:drop-shadow(0 0 5px #d65e5680)}
/* Compatibility for the old single-path renderer kept in app.js. */
path.country.physical-river-route{stroke:#008fc4!important;stroke-opacity:.9!important;stroke-width:2.5px!important;pointer-events:stroke!important}

/* Every mountain marker is an answer target, including distractors. */
.physical-mountain-hit{fill:transparent!important;stroke:none!important;stroke-width:0!important;pointer-events:all!important;vector-effect:non-scaling-stroke}
.physical-mountain-target.wrong .physical-mountain-hit{fill:#d65e5638!important;stroke:#d65e56!important;stroke-width:2px!important}
