.family-router{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:1.25rem}.family-router a,.family-router article{display:block;border:1px solid var(--line);border-radius:20px;padding:18px;background:rgba(255,255,255,.48);color:inherit;text-decoration:none}.family-router a:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(23,57,45,.08)}.family-router small{display:block;font:600 .69rem/1.3 'IBM Plex Mono',monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--brick);margin-bottom:6px}.family-router strong{display:block;font:700 1.08rem/1.25 'Fraunces',Georgia,serif;color:var(--forest)}.family-router span{display:block;color:var(--muted);font-size:.88rem;margin-top:5px}
.family-alert{border:1px solid #c98772;background:#fff6ef;border-radius:22px;padding:22px;margin-top:1.2rem}.family-alert h3{margin:.15rem 0 .55rem}.family-alert p:last-child{margin-bottom:0}.family-alert b{color:var(--brick)}
.family-agegrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.family-age{border:1px solid var(--line);border-radius:20px;padding:20px;background:rgba(255,255,255,.44)}.family-age h3{font:700 1.22rem/1.1 'Fraunces',Georgia,serif;margin:.3rem 0 .55rem}.family-age p{font-size:.88rem;color:var(--muted);margin:.45rem 0}.family-age b{color:var(--forest)}
.family-map-shell{border:1px solid var(--line);border-radius:24px;overflow:hidden;background:#fff}.family-map-top{padding:18px 18px 12px;display:flex;gap:14px;justify-content:space-between;align-items:flex-end;flex-wrap:wrap}.family-map-top h2{margin:0}.family-map-top p{margin:.35rem 0 0;max-width:65ch;color:var(--muted)}.family-map-count{font:600 .72rem/1.2 'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:.06em;color:var(--forest);white-space:nowrap}.family-map-filters{display:flex;gap:8px;overflow-x:auto;padding:0 18px 14px;scrollbar-width:thin}.family-map-filters button{appearance:none;border:1px solid var(--line);background:#f8f3e9;color:var(--forest);padding:9px 12px;border-radius:999px;white-space:nowrap;font:600 .72rem/1 'IBM Plex Mono',monospace;cursor:pointer}.family-map-filters button.is-active{background:var(--forest);color:#fff;border-color:var(--forest)}#familyMap{height:620px;min-height:440px;background:#dfe8e1;position:relative}.family-map-fallback{position:absolute;inset:0;display:grid;place-items:center;color:var(--muted);padding:2rem;text-align:center}.family-map-note{padding:11px 18px 15px;font-size:.78rem;color:var(--muted);border-top:1px solid var(--line)}
.family-map-controls{border-top:1px solid var(--line);background:#fbf8f1;padding:14px 18px}.family-map-controls fieldset{border:0;padding:0;margin:0}.family-map-controls legend{font:600 .67rem/1.2 'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:.07em;color:var(--brick);margin-bottom:9px}.family-map-controls .family-map-filters{padding:0 0 13px}.family-map-selects{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.family-map-selects label{display:grid;gap:5px;font:600 .65rem/1.2 'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:.05em;color:var(--forest)}.family-map-selects select,.family-reset{min-height:42px;border:1px solid var(--line);border-radius:11px;background:#fff;color:var(--forest);padding:9px 34px 9px 11px;font:600 .78rem/1.2 'IBM Plex Mono',monospace}.family-reset{padding:9px 13px;cursor:pointer;background:#f1e9dc}.family-map-filters button:focus-visible,.family-map-selects select:focus-visible,.family-reset:focus-visible{outline:3px solid #dfab54;outline-offset:2px}.family-map-fallback b,.family-map-fallback span{display:block}.family-results-head{padding:18px 18px 8px;border-top:1px solid var(--line)}.family-results-head h3{margin:0;font:700 1.35rem/1.2 'Fraunces',Georgia,serif}.family-results-head p{margin:.3rem 0 0;color:var(--muted);font-size:.85rem}.family-results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:10px 18px 18px}.family-result{border:1px solid var(--line);border-radius:16px;padding:16px;background:#fff}.family-result-top{display:flex;justify-content:space-between;gap:10px;font:600 .62rem/1.25 'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:.05em;color:var(--brick)}.family-result h4{font:700 1.08rem/1.15 'Fraunces',Georgia,serif;margin:.45rem 0}.family-result-meta{display:flex;gap:6px;flex-wrap:wrap}.family-result-meta span{border:1px solid var(--line);border-radius:999px;padding:6px 8px;font-size:.68rem;color:var(--muted)}.family-result-meta b{color:var(--forest);margin-right:4px}.family-result-meta .family-result-care{border-color:#a34b36;color:#8d3d2a;font-weight:700}.family-result p{font-size:.84rem;color:var(--muted);margin:.75rem 0}.family-result>a{font-size:.78rem;font-weight:700;color:var(--forest)}.family-empty,.family-nojs{grid-column:1/-1;border:1px dashed var(--line);border-radius:16px;padding:18px;background:#fff8ef}.family-empty h3{margin:0}.family-empty p{margin:.35rem 0 0;color:var(--muted)}.family-nojs{margin:0 18px 18px}
.family-pin{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--forest);color:#fff;border:2px solid #fff;box-shadow:0 2px 8px rgba(0,0,0,.22);font-size:14px}.family-pin.supervised{background:#a34b36}.family-pin.indoor{background:#315f73}.family-pin.animals{background:#5f7242}.family-pin.theatre{background:#704d78}.family-pin.outdoors{background:#6c7b38}.family-pin.food{background:#995c2d}.family-popup{min-width:230px}.family-popup .fp-kicker{font:600 .66rem/1.2 'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:.06em;color:#8a4c3c;margin-bottom:4px}.family-popup h3{font:700 1.05rem/1.1 Georgia,serif;margin:0 0 6px;color:#17392d}.family-popup p{margin:5px 0;font-size:.86rem;line-height:1.35}.family-popup .fp-meta{font-weight:700;color:#17392d}.family-popup a{font-weight:700;color:#17392d}
.family-decision-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.family-card{border:1px solid var(--line);border-radius:20px;padding:20px;background:rgba(255,255,255,.46)}.family-card h3{font:700 1.22rem/1.15 'Fraunces',Georgia,serif;margin:.35rem 0 .55rem}.family-card p{color:var(--muted);font-size:.9rem}.family-card .chiprow{display:flex;gap:6px;flex-wrap:wrap;margin:.8rem 0}.family-chip{font:600 .65rem/1 'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:.05em;border:1px solid var(--line);padding:7px 9px;border-radius:999px}.family-chip.book{border-color:#a34b36;color:#8d3d2a}.family-chip.good{border-color:#71804b;color:#50652f}.family-chip.care{background:#17392d;color:#fff;border-color:#17392d}.family-card .micro{font-size:.77rem}
.family-mall-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.family-mall{border:1px solid var(--line);border-radius:20px;padding:20px;background:rgba(255,255,255,.44)}.family-mall h3{margin:.2rem 0 .5rem}.family-mall b{color:var(--forest)}
.family-booking{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.family-booking article{padding:17px;border:1px solid var(--line);border-radius:18px;background:#fff}.family-booking .status{font:700 .64rem/1 'IBM Plex Mono',monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--brick)}.family-booking h3{font-size:1rem;margin:.45rem 0}.family-booking p{font-size:.82rem;color:var(--muted);margin:0}
.family-source-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.family-source-grid .source{margin:0}
@media(max-width:1000px){.family-router,.family-agegrid,.family-booking{grid-template-columns:repeat(2,minmax(0,1fr))}.family-decision-grid,.family-mall-grid{grid-template-columns:1fr 1fr}}
@media(max-width:700px){.family-router,.family-agegrid,.family-decision-grid,.family-mall-grid,.family-booking,.family-source-grid,.family-results{grid-template-columns:1fr}.family-map-top{align-items:flex-start}.family-map-filters{padding-bottom:12px}#familyMap{height:56vh;min-height:390px}.family-map-shell{border-radius:18px}.family-map-count{white-space:normal}.family-card,.family-mall,.family-age{padding:17px}.family-map-controls,.family-results{padding-left:12px;padding-right:12px}.family-map-selects{display:grid;grid-template-columns:1fr 1fr}.family-map-selects select{width:100%}.family-reset{grid-column:1/-1}.family-result-top{align-items:flex-start;flex-direction:column;gap:3px}}
