@font-face{font-family:'DM Sans';src:url('/fonts/dm-sans-400.woff2') format('woff2');font-display:swap;font-weight:400}
@font-face{font-family:'DM Sans';src:url('/fonts/dm-sans-700.woff2') format('woff2');font-display:swap;font-weight:700}
@font-face{font-family:Fraunces;src:url('/fonts/fraunces-500.woff2') format('woff2');font-display:swap;font-weight:500}

:root{
  --paper:#f4f0e7;
  --cream:#fbf9f4;
  --ink:#142328;
  --muted:#687578;
  --navy:#183c47;
  --teal:#226f69;
  --rust:#985f40;
  --line:#d9d5ca;
  --white:#fff;
  --serif:Fraunces,Georgia,'Times New Roman',serif;
  --sans:'DM Sans',Arial,sans-serif;
  --trend-regular:#2a6cb0;
  --trend-furnished:#d9a516;
  /* Cookie consent (shared /cookie-consent.css) */
  --color-primary:var(--teal);
  --color-primary-hover:#1b5a55;
  --color-bg-elevated:var(--white);
  --color-text-primary:var(--ink);
  --color-text-secondary:#536166;
  --color-text-muted:var(--muted);
  --color-border:var(--line);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--sans);line-height:1.58}
a{color:inherit;text-decoration:none}
img{display:block}
code{font-size:.92em}

.wrap{width:min(1160px,calc(100% - 40px));margin:auto}

.dev-banner{background:var(--rust);color:#fff;text-align:center;padding:10px 16px;font-size:12px;font-weight:700;letter-spacing:.02em}

/* Header */
.research-header,.mast{background:var(--navy);color:#fff}
.research-header__inner,.mast .wrap{width:min(1160px,calc(100% - 40px));margin:auto}
.mastTop,.research-header__brand-row{display:flex;align-items:center;justify-content:space-between;padding:16px 0;border-bottom:1px solid #ffffff28}
.research-brand{display:flex;align-items:center;gap:12px}
.research-brand img{width:36px;height:36px;display:block;border-radius:8px}
.research-brand span{display:flex;flex-direction:column;line-height:1.1}
.research-brand b{font-family:var(--serif);font-size:18px;letter-spacing:.01em}
.research-brand small{display:block;font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:#bbced1;margin-top:2px}
.util{font-size:11px;color:#c8d8da;display:flex;gap:18px}
.research-header nav,.nav{display:flex;gap:22px;overflow:auto;padding:13px 0;font-size:12px;color:#d9e5e7;scrollbar-width:thin}
.research-header nav a,.nav a{color:#d9e5e7;white-space:nowrap}
.research-header nav a:hover,.research-header nav a.active,.nav a:hover{color:#fff}

/* Hero */
.hero{background:var(--paper);padding:76px 0 42px;border-bottom:1px solid var(--line)}
.label,.kicker{font-size:10px;letter-spacing:.18em;text-transform:uppercase;font-weight:800;color:var(--teal)}
.heroGrid{display:grid;grid-template-columns:1.45fr .55fr;gap:56px;align-items:end;margin-top:18px}
h1{font:500 clamp(44px,6vw,76px)/.98 var(--serif);letter-spacing:-.045em;margin:0 0 20px}
.dek{font-size:20px;color:#536166;max-width:790px;margin:0}
.issue{border-left:1px solid var(--line);padding-left:28px;font-size:13px;color:#5e6b6e}
.issue strong{font:500 22px var(--serif);display:block;color:var(--ink);margin-bottom:8px}
.meta{display:flex;gap:22px;flex-wrap:wrap;margin-top:32px;padding-top:18px;border-top:1px solid var(--line);font-size:11px;color:#667477}
.meta b{color:var(--ink)}

/* Metrics */
.metrics{background:var(--white);border-bottom:1px solid var(--line)}
.metricRow{display:grid;grid-template-columns:repeat(4,1fr)}
.metric{padding:27px 23px;border-right:1px solid var(--line)}
.metric:last-child{border:0}
.metric small{font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:#718084;display:block;margin-bottom:7px}
.metric strong{font:500 40px var(--serif)}
.metric em{font-style:normal;font-size:10px;color:#8b9697;display:block;margin-top:4px}

/* Legend */
.key{background:var(--white);border-bottom:1px solid var(--line);padding:13px 0;font-size:11px}
.key .wrap{display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap}
.legend{display:flex;gap:16px;flex-wrap:wrap}
.legend span{display:flex;gap:7px;align-items:center}
.dot{width:8px;height:8px;border-radius:50%;display:inline-block}
.dot.f{background:var(--teal)}
.dot.e{background:var(--rust)}
.dot.o{background:#596c8b}

/* Sections */
.section{padding:70px 0;border-bottom:1px solid var(--line)}
.head{display:grid;grid-template-columns:210px 1fr;gap:32px;margin-bottom:32px}
.num{font:500 17px var(--serif);color:var(--teal)}
.head .kicker{font-size:9px;letter-spacing:.15em;margin-top:4px;display:block}
h2{font:500 clamp(32px,4vw,48px)/1.06 var(--serif);letter-spacing:-.025em;margin:3px 0 10px}
.intro{max-width:800px;color:#657175;font-size:16px;margin:0}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.panel{background:var(--white);border:1px solid var(--line);box-shadow:0 16px 40px #25383c0c}
.pad{padding:28px}
.panelHead{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:18px}
.panelHead h3{font:500 24px var(--serif);margin:0 0 4px}
.panelHead p{font-size:11px;color:var(--muted);margin:0}
.badge{font-size:9px;letter-spacing:.08em;text-transform:uppercase;font-weight:800;padding:6px 8px;border:1px solid currentColor;white-space:nowrap}
.badge.f{color:var(--teal);background:#f6fbfa}
.badge.e{color:var(--rust);background:#fcf8f4}
.badge.o{color:#596c8b;background:#f7f8fb}
.insight{padding:17px 0;border-bottom:1px solid #ebe7df}
.insight:last-child{border:0}
.insight strong{font:500 19px var(--serif);display:block;margin-bottom:3px}
.insight span{font-size:12px;color:#687578}

/* Toolbar / chart */
.toolbar{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:14px}
.chip{font:700 10px var(--sans);border:1px solid var(--ink);background:var(--white);padding:7px 10px;cursor:pointer;color:var(--ink)}
.chip.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.chip:disabled{opacity:.45;cursor:not-allowed}
.chart{border:1px solid var(--line);background:#fdfcf9;padding:16px 14px 8px}
.chart svg{width:100%;height:auto;display:block;aspect-ratio:920/360}
.chart-legend{display:flex;flex-wrap:wrap;gap:14px 28px;margin-bottom:4px;padding:0 4px 6px}
.chart-legend__item{display:flex;align-items:flex-start;gap:10px;max-width:360px}
.chart-legend__item strong{display:block;font:700 12px/1.3 var(--sans);color:var(--ink)}
.chart-legend__item em{display:block;font:400 11px/1.35 var(--sans);color:var(--muted);font-style:normal;margin-top:1px}
.chart-legend__mark{position:relative;flex:0 0 auto;width:28px;height:3px;margin-top:8px;border-radius:1px}
.chart-legend__mark::after{content:"";position:absolute;left:50%;top:50%;width:8px;height:8px;border-radius:50%;transform:translate(-50%,-50%);background:inherit}
.chart-legend__mark--regular{background:var(--trend-regular)}
.chart-legend__mark--furnished{background:var(--trend-furnished)}
.chart-explain{display:flex;gap:12px;align-items:flex-start;margin-top:14px;padding:13px 15px;background:#f3f2ed;border:1px solid var(--line);color:#5e6b6e;font-size:12px;line-height:1.55}
.chart-explain p{margin:0}
.chart-explain__icon{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;margin-top:1px;border:1.5px solid #8a9496;border-radius:50%;font:700 11px/1 var(--sans);color:#687578;background:var(--white)}
.trend-panel{overflow:hidden}
.trend-panel .sourceNote{margin:16px -28px -28px;padding:14px 28px;border-left:0}
.sourceNote,.warning{margin-top:14px;padding:13px 15px;background:#f0e4da;border-left:3px solid var(--rust);font-size:11px;color:#6f594d;line-height:1.55}
.sourceNote p{margin:0}
.sourceNote p + p{margin-top:8px}
.sourceNote a,.warning a{color:var(--teal);font-weight:700;text-decoration:underline;text-underline-offset:2px}
.sourceNote a:hover,.warning a:hover{color:var(--ink)}
.warning{margin-bottom:20px;margin-top:0}

/* Tables */
table{width:100%;border-collapse:collapse;background:var(--white)}
th,td{padding:14px;border-bottom:1px solid #e8e4dc;text-align:left;font-size:12px}
th{font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:#7d8789;background:#faf8f3}
td strong,th[scope=row]{font:500 16px var(--serif)}
.dash{color:#9aa2a3}
.bar{height:7px;background:#ece9e1;min-width:110px}
.bar i{display:block;height:100%;background:var(--teal)}
.bar i.muted{background:#b8c9c4}
.sample-note{display:block;margin-top:3px;font-size:9px;line-height:1.35;color:#8b9697;font-weight:400}
tr.tr--low-sample td,tr.tr--low-sample th{background:#fcfaf6}
tr.tr--low-sample th{font-weight:500}

.district-table th[scope="row"]{font-weight:700;color:var(--ink);white-space:nowrap}
.district-table thead th{vertical-align:bottom;line-height:1.25}
.district-table .th-sub{display:inline-block;margin-top:4px;font-size:10px;font-weight:500;letter-spacing:.02em;text-transform:none;color:var(--muted)}
.district-table .district-metric{vertical-align:top;min-width:11.5rem}
.district-metric__stack{display:flex;flex-wrap:wrap;align-items:baseline;gap:.35rem .55rem;font-variant-numeric:tabular-nums}
.district-metric__rent{font-weight:700;color:var(--ink);letter-spacing:-.01em}
.district-metric__sqm{font-size:12px;color:var(--muted);font-weight:400}
.district-metric__empty{color:#9aa5a6}
.district-metric--low .district-metric__rent{font-weight:500;color:#3d4a4d}
.district-count{font-variant-numeric:tabular-nums;color:#3d4a4d}
.type-row--group td{border-bottom:none;padding-bottom:4px}
.type-row--group td:first-child strong{font:600 15px var(--serif);color:var(--ink)}
.type-row--indent td:first-child{padding-left:32px}
.type-row--indent td:first-child strong{font:500 14px var(--serif);color:#536166}
.info-tip{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;margin-left:6px;border:1px solid #b5bdbf;border-radius:50%;font:700 9px/1 var(--sans);color:#687578;cursor:help;vertical-align:1px;position:relative;background:#fff}
.info-tip:hover,.info-tip:focus-visible{color:var(--teal);border-color:var(--teal);outline:none}
.info-tip::after{content:attr(data-tip);position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);width:max-content;max-width:240px;padding:8px 10px;background:var(--ink);color:#e8edee;font:400 10px/1.45 var(--sans);text-transform:none;letter-spacing:0;border-radius:2px;opacity:0;pointer-events:none;z-index:4;box-shadow:0 8px 24px #14232833}
.info-tip:hover::after,.info-tip:focus-visible::after{opacity:1}
.smallNote{font-size:10px;color:#838d8f;padding:0 24px 20px}

/* Budget */
.budget{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);background:var(--white)}
.budgetItem{padding:26px;border-right:1px solid var(--line)}
.budgetItem:last-child{border:0}
.pct{font:500 42px var(--serif);margin-top:9px}
.budgetItem b{display:block;font-size:12px;margin:4px 0 8px}
.budgetItem p{font-size:11px;color:#6b777a;margin:0 0 12px}
.link{color:var(--teal);font-weight:800;font-size:11px}

/* Conditions */
.feature{display:grid;grid-template-columns:1.1fr .9fr;gap:22px}
.statDark{background:var(--navy);color:#fff;padding:34px}
.statDark .big{font:500 69px var(--serif)}
.statDark p{font-size:12px;color:#c7d4d6;max-width:490px}
.avail{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.avail div{padding:17px;background:#f8f6f1;border:1px solid var(--line)}
.avail strong{font:500 29px var(--serif)}
.avail span{display:block;font-size:10px;color:#707c7e}
.student{display:grid;grid-template-columns:.72fr 1.28fr;background:var(--white);border:1px solid var(--line);margin-top:22px}
.studentA{padding:34px;background:#e8efec}
.studentA strong{font:500 49px var(--serif);display:block}
.studentA span{font-size:11px;color:#60706e}
.studentB{padding:34px}
.studentB h3{font:500 25px var(--serif);margin:12px 0 8px}
.studentB p{font-size:12px;color:#667477}

/* History / download / methods */
.history{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:22px;align-items:stretch}
.history-benchmark,.history-flathunt{overflow:auto;height:100%}
.history-benchmark-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 20px;padding:8px 23px 18px;align-items:start}
.history-benchmark-grid table{margin:0}
.history-flathunt{display:flex;flex-direction:column}
.history-flathunt-body{padding:0 0 18px;flex:1}
.download{padding:30px;background:var(--teal);color:#fff;display:flex;justify-content:space-between;gap:25px;align-items:center}
.download h3{font:500 29px var(--serif);margin:0 0 6px}
.download p{font-size:11px;color:#d6e8e5;margin:0}
.download-actions{display:flex;gap:8px;flex-wrap:wrap}
.btn{display:inline-flex;padding:10px 14px;border:1px solid currentColor;font-size:11px;font-weight:800}
.btn.light{color:#fff}
.btn.primary{background:var(--navy);color:#fff;border-color:var(--navy)}
.btn.secondary{color:var(--navy);background:transparent}
.methods{display:grid;grid-template-columns:repeat(2,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}
.method{background:var(--white);padding:21px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.method b{font:500 18px var(--serif);display:block;margin-bottom:5px}
.method p{font-size:11px;color:#687578;margin:0}
.quote{margin-top:22px;padding:23px 27px;background:#eef2ef;border-left:4px solid var(--teal);font:500 18px/1.5 var(--serif);color:#415357}

/* Reports */
.reports{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.reports--sources{grid-template-columns:repeat(2,1fr)}
.report{background:var(--white);border:1px solid var(--line);display:flex;flex-direction:column}
.reportTop{height:165px;padding:21px;background:var(--paper);display:flex;flex-direction:column;justify-content:space-between;border-bottom:1px solid var(--line)}
.reportTop small{font-size:9px;letter-spacing:.13em;text-transform:uppercase;color:var(--teal);font-weight:800}
.reportTop strong{font:500 31px var(--serif)}
.reportBody{padding:19px;display:flex;flex-direction:column;flex:1}
.reportBody h3{font:500 20px var(--serif);margin:0 0 7px}
.reportBody>p{font-size:11px;color:#6d797b;margin:0}
.report-links{margin-top:auto;padding-top:14px}
.report-links .link{text-decoration:none}
.report-links .link:hover{text-decoration:underline;text-underline-offset:2px}

/* Closing / footer */
.closing{background:var(--white);padding:56px 0}
.closingGrid{display:grid;grid-template-columns:1.3fr .7fr;gap:40px;align-items:center}
.actions{display:flex;justify-content:flex-end;gap:9px;flex-wrap:wrap}
.research-footer,footer{background:var(--navy);color:#bdcccf;padding:33px 0;font-size:10px}
.research-footer .wrap,footer .wrap{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;align-items:center;width:min(1160px,calc(100% - 40px));margin:auto}
.research-footer a{color:#bdcccf}
.research-footer a:hover{color:#fff}
.research-footer__links{display:inline-flex;flex-wrap:wrap;align-items:center;column-gap:.35em;row-gap:.35em}
.research-footer__cookie{
  appearance:none;
  -webkit-appearance:none;
  display:inline;
  margin:0;
  padding:0;
  border:0;
  background:none;
  color:inherit;
  font:inherit;
  line-height:inherit;
  letter-spacing:inherit;
  text-transform:none;
  cursor:pointer;
  text-decoration:underline;
  text-underline-offset:2px;
  vertical-align:baseline;
}
.research-footer__cookie:hover{color:#fff}
.research-footer__cookie:focus-visible{outline:2px solid #9fcac5;outline-offset:3px}

/* Maps (preserved modules) */
.eyebrow{text-transform:uppercase;letter-spacing:.13em;font-size:11px;font-weight:750;color:var(--teal);margin:0 0 14px}
.map-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:14px}
.map-toolbar>div{display:flex;border:1px solid var(--ink)}
.map-toolbar button{border:0;border-right:1px solid var(--ink);padding:11px 15px;background:var(--cream);color:var(--ink);font:700 12px var(--sans);cursor:pointer}
.map-toolbar button:last-child{border-right:0}
.map-toolbar button.active{background:var(--navy);color:#fff}
.map-toolbar p{margin:0;color:var(--muted);font-size:12px}
.heatmap-layout,.official-grid{display:grid;grid-template-columns:minmax(0,1fr) 260px;border:1px solid var(--ink);background:var(--cream)}
.official-grid{grid-template-columns:minmax(0,1fr) 300px}
.heatmap-panel{margin:0;padding:20px;border-right:1px solid var(--line)}
.heatmap-panel figcaption{font-size:11px;color:var(--muted);padding-top:10px}
.research-map{display:block;width:100%;height:auto;min-height:430px;background:#e9e4da}
.map-land path{fill:#ded9ce;stroke:none}
.map-boundaries path{fill:none;stroke:#59696d;stroke-width:1.1;vector-effect:non-scaling-stroke}
.heatmap-cell{stroke:#fff;stroke-width:1.2;fill-opacity:.84;transition:fill .15s,fill-opacity .15s;vector-effect:non-scaling-stroke}
.heatmap-cell:hover,.heatmap-cell:focus{fill-opacity:1;stroke:var(--ink);stroke-width:2;outline:none}
.heat-0{fill:#b7d5cc!important;background:#b7d5cc}
.heat-1{fill:#69a99d!important;background:#69a99d}
.heat-2{fill:#e4bc79!important;background:#e4bc79}
.heat-3{fill:#cf8058!important;background:#cf8058}
.heat-4{fill:#8f4939!important;background:#8f4939}
.heatmap-cell--missing{fill:#d5d2ca!important;fill-opacity:.32}
.heatmap-sidebar,.official-summary{padding:22px;display:flex;flex-direction:column;gap:22px}
.official-summary{min-height:100%}
.wohnlage-result{border:1px solid var(--line);padding:16px;background:#fff}
.wohnlage-result[data-state="idle"]{background:transparent}
.wohnlage-result[data-state="found"]{border-color:#1b4f4a;background:rgba(27,79,74,.06)}
.wohnlage-result[data-state="miss"]{border-color:#c4955a;background:rgba(196,149,90,.1)}
.wohnlage-result[data-state="error"]{border-color:var(--rust);background:rgba(152,95,64,.08)}
.wohnlage-result[data-state="loading"]{border-color:#aab1b0;background:#f7f4ee}
.wohnlage-result-idle,.wohnlage-result-desc,.wohnlage-result-note{margin:0;font-size:13px;color:var(--muted);line-height:1.45}
.wohnlage-result-badge{margin:0 0 10px;font:700 11px var(--sans);letter-spacing:.06em;text-transform:uppercase}
.wohnlage-result[data-state="found"] .wohnlage-result-badge{color:#1b4f4a}
.wohnlage-result[data-state="miss"] .wohnlage-result-badge{color:#8a6a3a}
.wohnlage-result[data-state="error"] .wohnlage-result-badge{color:var(--rust)}
.wohnlage-result[data-state="loading"] .wohnlage-result-badge{color:var(--muted)}
.wohnlage-result-address{display:block;font:500 22px/1.15 var(--serif);color:var(--ink);margin:0 0 10px}
.wohnlage-result-place{margin:0 0 12px;font-size:12px;color:var(--muted);line-height:1.45;display:flex;flex-wrap:wrap;gap:4px 0;align-items:baseline}
.wohnlage-result-place b{font-weight:700;color:var(--ink);margin-right:4px}
.wohnlage-result-class{display:flex;align-items:center;gap:8px;margin:0 0 8px;font:700 13px var(--sans);color:var(--ink)}
.wohnlage-result-class i{width:12px;height:12px;display:inline-block;border:1px solid rgba(20,35,40,.18)}
.wohnlage-result-desc{margin-top:0}
.wohnlage-result-note{margin-top:10px}
.wohnlage-trust{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start;margin-top:auto;padding-top:18px;border-top:1px solid var(--line)}
.wohnlage-trust-icon{color:#1b4f4a;display:flex;align-items:center;justify-content:center}
.wohnlage-trust strong{display:block;font:700 13px var(--sans);letter-spacing:.02em;margin:0 0 4px;color:var(--ink)}
.wohnlage-trust p{margin:0;font-size:12px;color:var(--muted);line-height:1.45}
.heatmap-legend{display:grid;gap:9px}
.heatmap-legend span{display:flex;align-items:center;gap:9px;font-size:11px}
.heatmap-legend i{width:18px;height:11px;border:1px solid rgba(20,35,40,.18)}
.coverage-card{border-top:1px solid var(--line);padding-top:16px}
.coverage-card>span{display:block;text-transform:uppercase;letter-spacing:.08em;font-size:10px;color:var(--muted)}
.coverage-card>strong{display:block;font:500 34px var(--serif);margin:5px 0}
.coverage-card p{font-size:11px;color:var(--muted);margin:0}
.area-search-dialog{border:0;padding:0;background:transparent;max-width:min(420px,calc(100vw - 32px))}
.area-search-dialog::backdrop{background:rgba(20,35,40,.48)}
.area-search-dialog__panel{background:var(--cream);border:1px solid var(--line);padding:28px 26px 24px;box-shadow:0 18px 48px rgba(20,35,40,.18)}
.area-search-dialog__panel .eyebrow{margin:0 0 10px;color:var(--teal)}
.area-search-dialog__panel h3{font:500 28px/1.15 var(--serif);letter-spacing:-.02em;margin:0 0 10px;color:var(--ink)}
.area-search-dialog__panel p[data-area-search-copy]{margin:0 0 22px;font-size:14px;color:var(--muted);line-height:1.5}
.area-search-dialog__actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}
.area-search-dialog__actions .btn{cursor:pointer}
.area-search-dialog__actions .btn.primary:hover{background:var(--teal);border-color:var(--teal)}
.rent-heatmap-leaflet path.leaflet-interactive{cursor:pointer}
.heatmap-empty{min-height:430px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:45px}
.heatmap-empty strong{font:500 28px var(--serif)}
.heatmap-empty p{max-width:460px;color:var(--muted)}
.official-ratios{display:grid;gap:15px}
.official-ratios>div{display:grid;grid-template-columns:18px 1fr auto;align-items:center;gap:10px;border-bottom:1px solid var(--line);padding-bottom:12px}
.official-ratios i{width:16px;height:16px}
.official-ratios span{font-size:12px;line-height:1.35}
.official-ratios small{display:block;font-size:11px;font-weight:400;color:var(--muted)}
.official-ratios strong{font:500 25px var(--serif)}
.official-count{font-size:12px;color:var(--muted);margin-top:22px}
.wohnlage-cell{stroke:#fff;stroke-width:1;fill-opacity:.8;vector-effect:non-scaling-stroke}
.wohnlage-cell:hover,.wohnlage-cell:focus{stroke:var(--ink);stroke-width:2;fill-opacity:1;outline:none}
.wohnlage-simple{fill:#c4955a;background:#c4955a}
.wohnlage-medium{fill:#5e8b84;background:#5e8b84}
.wohnlage-good{fill:#1b4f4a;background:#1b4f4a}
.wohnlage-mixed{fill:#8d8296;background:#8d8296}
.wohnlage-unknown{fill:#d5d2ca;background:#d5d2ca}

/* Interactive Wohnlage map (Leaflet) */
.wohnlage-check{display:grid;grid-template-columns:1fr auto;gap:8px 10px;align-items:end;margin:0 0 14px}
.wohnlage-check label{display:grid;gap:6px;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.wohnlage-check input{width:100%;padding:11px 12px;border:1px solid #aab1b0;background:#fff;color:var(--ink);font:400 14px var(--sans)}
.wohnlage-check input:focus{outline:2px solid var(--teal);outline-offset:1px}
.wohnlage-check button{padding:11px 18px;border:1px solid var(--ink);background:var(--navy);color:#fff;font:700 12px var(--sans);cursor:pointer;white-space:nowrap}
.wohnlage-check button:hover{background:var(--teal);border-color:var(--teal)}
.wohnlage-check button:disabled{opacity:.55;cursor:wait}
.wohnlage-leaflet{height:min(62vh,520px);min-height:360px;background:#e9e4da;border:1px solid var(--line);position:relative}
.wohnlage-map-notice{position:absolute;z-index:500;left:12px;right:12px;bottom:12px;padding:12px 14px;background:rgba(251,249,244,.94);border:1px solid var(--ink);display:grid;gap:4px;pointer-events:none}
.wohnlage-map-notice strong{font:600 13px var(--sans);color:var(--ink)}
.wohnlage-map-notice span{font:400 12px var(--sans);color:var(--muted)}
.wohnlage-map-legend{position:absolute;z-index:500;left:12px;bottom:12px;display:grid;gap:6px;padding:10px 12px;background:rgba(251,249,244,.94);border:1px solid var(--ink);min-width:188px;max-width:min(260px,calc(100% - 24px))}
.wohnlage-map-legend span{display:flex;align-items:flex-start;gap:8px;font:700 11px var(--sans);letter-spacing:.03em;text-transform:uppercase;color:var(--ink);line-height:1.35}
.wohnlage-map-legend i{width:14px;height:14px;display:inline-block;border:1px solid rgba(20,35,40,.2);flex:0 0 auto;margin-top:1px}
.wohnlage-map-legend small{font:400 10px var(--sans);color:var(--muted);text-transform:none;letter-spacing:0}
.wohnlage-leaflet .leaflet-container{height:100%;width:100%;background:#e9e4da;font:400 12px var(--sans);color:var(--ink)}
.wohnlage-leaflet .leaflet-tile-pane{filter:grayscale(1) contrast(1.08) brightness(1.03);opacity:.72}
.wohnlage-leaflet .leaflet-control-attribution{background:rgba(251,249,244,.88);color:var(--muted);font-size:10px}
.wohnlage-leaflet .leaflet-control-attribution a{color:var(--muted)}
.wohnlage-leaflet .leaflet-control-zoom a{background:var(--cream);color:var(--ink);border-color:var(--line);width:30px;height:30px;line-height:28px;font-size:16px}
.wohnlage-leaflet .leaflet-control-zoom a:hover{background:#fff;color:var(--teal)}
.wohnlage-leaflet .leaflet-tooltip{background:var(--cream);border:1px solid var(--ink);border-radius:0;box-shadow:none;color:var(--ink);font:400 11px var(--sans);padding:6px 8px}
.wohnlage-leaflet .leaflet-tooltip-top:before{border-top-color:var(--ink)}
.wohnlage-leaflet .leaflet-tooltip.wohnlage-ortsteil-tooltip{padding:10px 12px;min-width:200px}
.wohnlage-popup{min-width:180px}
.wohnlage-popup strong{display:block;font:500 18px var(--serif);margin:0 0 2px}
.wohnlage-popup em{display:block;font:400 11px var(--sans);color:var(--muted);font-style:normal;margin:0 0 8px}
.wohnlage-popup-total{margin:0 0 8px;font-size:12px;color:var(--muted)}
.wohnlage-popup-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:4px 0;border-top:1px solid var(--line);font-size:11px}
.wohnlage-popup-row span{display:inline-flex;align-items:center;gap:6px;text-transform:none;letter-spacing:0;font-weight:400}
.wohnlage-popup-row b{font-weight:700;white-space:nowrap}
.wohnlage-popup span{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.wohnlage-popup i{width:10px;height:10px;display:inline-block}
.wohnlage-marker{width:18px;height:18px;border:2px solid #fff;border-radius:50%;box-shadow:0 0 0 1px rgba(20,35,40,.35)}
.wohnlage-empty{min-height:360px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px 24px}
.wohnlage-empty strong{font:500 26px var(--serif)}
.wohnlage-empty p{max-width:420px;color:var(--muted);font-size:13px}
.source-provenance{display:grid;gap:8px;background:#eee6da;border-left:4px solid var(--rust);padding:16px 18px;margin-top:14px}
.source-provenance p{margin:0;font-size:12px;color:#4f5e62;line-height:1.5}
.source-provenance a{color:var(--teal);font-weight:700;text-decoration:underline;text-underline-offset:2px}
.source-provenance a:hover{color:var(--ink)}
.provenance-links{display:flex;flex-direction:column;gap:8px;min-width:180px}
.provenance-links a{font-size:12px;font-weight:700;color:var(--teal)}

/* Calculators (unchanged behaviour, restyled chrome) */
.calculator-main{max-width:1060px;margin:auto;padding:32px 28px 80px}
.breadcrumbs{display:flex;gap:9px;font-size:12px;color:var(--muted);margin:8px 0 58px}
.calculator-hero{max-width:850px;margin-bottom:54px}
.calculator-hero h1{font:500 clamp(43px,6vw,72px)/.98 var(--serif);letter-spacing:-.035em;margin:0 0 16px}
.calculator-hero>p:last-child{font-family:var(--serif);font-size:21px;color:#425258;max-width:700px}
.tool-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.tool-card{min-height:280px;background:var(--cream);border:1px solid var(--line);padding:28px}
.tool-card:hover{border-color:var(--teal)}
.tool-card>span{color:var(--rust);font-family:var(--serif);font-size:18px}
.tool-card h2{font-family:var(--serif);font-weight:500;font-size:29px;margin:65px 0 12px}
.tool-card p{font-size:14px;color:var(--muted)}
.reading-block,.formula{margin-top:55px;border-top:1px solid var(--ink);padding-top:28px;max-width:760px}
.reading-block h2,.formula h2{font-family:var(--serif);font-size:28px;font-weight:500;margin:0 0 14px}
.calculator-panel{display:grid;grid-template-columns:1fr .85fr;border:1px solid var(--ink);background:var(--cream)}
.calculator-panel form,.calculator-panel .offer-grid{padding:34px}
.calculator-panel label{display:grid;grid-template-columns:1fr auto;gap:6px;margin-bottom:23px;font-weight:650;font-size:13px}
.calculator-panel input{grid-column:1/-1;width:100%;padding:12px;border:1px solid #aab1b0;background:#fff;color:var(--ink);font:inherit}
.calculator-panel input[type=range]{padding:0}
.calculator-panel output{grid-column:1/-1;color:var(--teal)}
.calculator-result{padding:34px;background:var(--navy);color:#fff;display:flex;flex-direction:column;justify-content:center}
.calculator-result .eyebrow{color:#9fcac5}
.calculator-result>strong{font-family:var(--serif);font-weight:500;font-size:52px}
.calculator-result>p:last-child{color:#c5d1d3}
.result-lines{border-top:1px solid rgba(255,255,255,.25);margin-top:25px;padding-top:16px;font-size:13px}
.result-lines p{display:flex;justify-content:space-between;margin:7px 0}
.method-note{margin-top:30px;border-left:4px solid var(--rust);padding:18px;background:#eee6da;font-size:13px}
.formula code{background:#e4ded2;padding:3px 7px}
.source-link{font-size:13px;color:var(--teal);font-weight:700}
.calculator-panel--wide{display:block}
.offer-grid{display:grid;grid-template-columns:1fr 1fr;gap:30px}
.offer-grid fieldset{border:0;padding:0;margin:0}
.offer-grid legend{font-family:var(--serif);font-size:28px;margin-bottom:22px}
.comparison-results{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:rgba(255,255,255,.2);padding:1px}
.comparison-results article{background:var(--navy);color:#fff;padding:28px}
.comparison-results p{margin:0 0 8px;color:#c5d1d3}
.comparison-results strong{display:block;font:500 38px var(--serif)}
.comparison-results small{color:#9fcac5}
.comparison-verdict{grid-column:1/-1!important;background:var(--navy);padding:20px 28px;margin:0!important;color:#fff!important}
.formula p{color:#526064}
.button{display:inline-block;background:var(--cream);color:var(--ink);padding:12px 18px;font-weight:700;font-size:13px;white-space:nowrap}

.legal-main{max-width:820px;margin:auto;padding:32px 28px 90px}
.legal-hero{margin-bottom:42px}
.legal-hero h1{font:500 clamp(40px,5.5vw,64px)/1 var(--serif);letter-spacing:-.035em;margin:0 0 18px}
.legal-hero p{font-size:17px;color:#526064;max-width:720px;margin:0 0 12px}
.legal-prose h2{font:500 28px/1.15 var(--serif);margin:42px 0 14px;padding-top:8px;border-top:1px solid var(--line)}
.legal-prose h2:first-child{border-top:0;padding-top:0;margin-top:0}
.legal-prose h3{font:700 15px/1.35 var(--sans);letter-spacing:.02em;margin:28px 0 10px;color:var(--navy)}
.legal-prose p,.legal-prose li{font-size:15px;color:#3d4a4d;max-width:70ch}
.legal-prose p{margin:0 0 14px}
.legal-prose ul{margin:0 0 18px;padding-left:1.2em}
.legal-prose li{margin:0 0 8px}
.legal-prose a{color:var(--teal);text-decoration:underline;text-underline-offset:2px}
.legal-prose a:hover{color:var(--navy)}
.legal-prose blockquote{margin:16px 0 20px;padding:16px 18px;border-left:3px solid var(--teal);background:#f0ebe1;font:500 15px/1.45 var(--serif);color:var(--ink)}
.legal-updated{margin-top:36px;padding-top:18px;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}

@media(max-width:900px){
  .heroGrid,.head,.grid2,.feature,.history,.student,.closingGrid{grid-template-columns:1fr}
  .history-benchmark-grid{grid-template-columns:1fr 1fr;gap:0 16px}
  .issue{border-left:0;border-top:1px solid var(--line);padding:20px 0 0}
  .metricRow{grid-template-columns:repeat(2,1fr)}
  .metric:nth-child(2){border-right:0}
  .metric:nth-child(-n+2){border-bottom:1px solid var(--line)}
  .budget,.reports{grid-template-columns:1fr}
  .budgetItem{border-right:0;border-bottom:1px solid var(--line)}
  .methods{grid-template-columns:1fr}
  .actions{justify-content:flex-start}
  .util{display:none}
  .heatmap-layout,.official-grid{grid-template-columns:1fr}
  .heatmap-panel,.official-map-panel{border-right:0;border-bottom:1px solid var(--line)}
  .source-provenance{margin-top:12px}
  .provenance-links{flex-direction:row;flex-wrap:wrap}
  .tool-grid{grid-template-columns:1fr}
  .calculator-panel{grid-template-columns:1fr}
}
@media(max-width:560px){
  .wrap,.research-header__inner,.mast .wrap,.research-footer .wrap{width:min(100% - 24px,1160px)}
  .hero{padding-top:52px}
  .metricRow{grid-template-columns:1fr}
  .metric{border-right:0;border-bottom:1px solid var(--line)}
  .section{padding:52px 0}
  .download{flex-direction:column;align-items:flex-start}
  .avail{grid-template-columns:1fr}
  .research-header nav{gap:14px}
  .map-toolbar{flex-direction:column;align-items:flex-start}
  .research-map,.heatmap-empty,.wohnlage-leaflet{min-height:300px}
  .wohnlage-check{grid-template-columns:1fr}
  .wohnlage-check button{width:100%}
  .offer-grid,.comparison-results{grid-template-columns:1fr}
  .comparison-verdict{grid-column:1!important}
}
@media print{
  .research-header nav,.btn,.research-footer{display:none}
  .research-header{background:#fff;color:#000}
  .section{break-inside:avoid}
}
