:root {
  --ink: #102c2e;
  --ink-2: #244244;
  --paper: #f5f2e9;
  --paper-2: #ebe8dd;
  --white: #fffdf8;
  --blue: #126c83;
  --blue-2: #1b8298;
  --coral: #ed6a4d;
  --coral-dark: #d75238;
  --green: #2a7b62;
  --yellow: #e9b949;
  --muted: #708181;
  --border: #d3d9d4;
  --shadow: 0 18px 50px rgba(22, 48, 48, .12);
  --radius: 18px;
  --max: 1280px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; line-height: 1.5; }
button, input, textarea, select { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
button { color: inherit; }
a { color: inherit; text-decoration: none; }
img { max-width: 100%; }
.skip-link { position: fixed; z-index: 1000; top: -60px; left: 1rem; padding: .75rem 1rem; background: var(--white); border: 2px solid var(--ink); }
.skip-link:focus { top: 1rem; }

.site-header { height: 76px; display: flex; align-items: center; justify-content: space-between; padding: 0 max(24px, calc((100vw - var(--max)) / 2)); background: rgba(245,242,233,.92); border-bottom: 1px solid rgba(16,44,46,.12); position: sticky; top: 0; z-index: 50; backdrop-filter: blur(14px); }
.brand { display: inline-flex; align-items: center; gap: 10px; }
.brand > span:last-child { display: flex; flex-direction: column; line-height: .9; }
.brand strong { font-family: Georgia, serif; font-size: 20px; letter-spacing: -.5px; }
.brand em { color: var(--coral); font-style: normal; font-size: 12px; font-weight: 800; letter-spacing: 1.5px; text-transform: uppercase; margin-top: 5px; }
.brand-mark { width: 34px; height: 34px; display: grid; grid-template-columns: repeat(2,1fr); gap: 3px; transform: rotate(45deg); }
.brand-mark i { display: block; background: var(--blue); border-radius: 2px 7px 2px 7px; }
.desktop-nav { display: flex; align-items: center; height: 100%; gap: 34px; font-size: 14px; font-weight: 700; }
.desktop-nav a { height: 100%; display: grid; place-items: center; position: relative; }
.desktop-nav a::after { content: ""; position: absolute; height: 3px; left: 0; right: 0; bottom: -1px; background: var(--coral); transform: scaleX(0); transition: .2s; }
.desktop-nav a:hover::after, .desktop-nav a.active::after { transform: scaleX(1); }
.header-actions { display: flex; align-items: center; gap: 18px; }
.text-link { font-size: 13px; font-weight: 750; }
.menu-button { display: none; border: 0; background: none; font-size: 24px; cursor: pointer; }

.button { border: 0; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; gap: 22px; min-height: 48px; padding: 0 24px; font-weight: 800; cursor: pointer; transition: transform .2s, box-shadow .2s, background .2s; }
.button:hover { transform: translateY(-2px); box-shadow: 0 10px 24px rgba(16,44,46,.16); }
.button-small { min-height: 42px; padding: 0 20px; font-size: 13px; }
.button-primary { color: white; background: var(--coral); }
.button-primary:hover { background: var(--coral-dark); }
.button-light { background: var(--white); color: var(--ink); }
.button-dark { background: var(--ink); color: white; }
.button-outline { background: transparent; border: 1px solid var(--ink); }
.button-coral { background: var(--coral); color: white; }

.hero { min-height: 720px; max-width: var(--max); margin: 0 auto; display: grid; grid-template-columns: .9fr 1.1fr; align-items: center; gap: 72px; padding: 72px 24px 84px; }
.eyebrow { margin: 0 0 18px; text-transform: uppercase; font-size: 11px; font-weight: 900; letter-spacing: 2px; color: var(--coral); display: flex; align-items: center; gap: 10px; }
.eyebrow > span { width: 25px; height: 2px; background: currentColor; }
.eyebrow.dark { color: var(--blue); }
.eyebrow.light { color: #b9e0da; }
.hero h1 { margin: 0; font: 700 clamp(54px, 6vw, 86px)/.94 Georgia, serif; letter-spacing: -4.5px; }
.hero h1 em { color: var(--blue); font-weight: 400; }
.hero-intro { max-width: 600px; font-size: 18px; color: #435b5c; margin: 28px 0 30px; }
.hero-actions { display: grid; gap: 12px; }
.choice-button { width: 100%; min-height: 79px; border-radius: 13px; padding: 13px 18px; display: grid; grid-template-columns: 50px 1fr 30px; align-items: center; text-align: left; cursor: pointer; background: var(--white); border: 1px solid var(--border); box-shadow: 0 5px 18px rgba(16,44,46,.06); transition: .2s; }
.choice-button:hover { border-color: var(--blue); transform: translateX(5px); box-shadow: var(--shadow); }
.choice-button .choice-icon { width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center; font: 800 21px Georgia,serif; }
.choice-button.problem .choice-icon { color: var(--coral); background: #fde8df; }
.choice-button.idea .choice-icon { color: var(--blue); background: #deeff1; }
.choice-button small { display: block; font-size: 11px; color: var(--muted); margin-bottom: 2px; }
.choice-button strong { display: block; font-size: 15px; }
.choice-button b { font-size: 20px; }
.trust-line { color: var(--muted); font-size: 12px; text-align: center; }
.trust-line span { color: var(--green); font-weight: 900; }

.hero-visual { background: #dfebe7; border: 10px solid var(--white); border-radius: 28px; box-shadow: var(--shadow); overflow: hidden; transform: rotate(.7deg); }
.map-toolbar { height: 58px; padding: 0 20px; display: flex; align-items: center; justify-content: space-between; background: rgba(255,253,248,.88); font-size: 11px; color: var(--muted); }
.map-toolbar div { display: flex; align-items: center; gap: 8px; color: var(--ink); font-size: 13px; }
.live-dot { width: 8px; height: 8px; background: var(--green); border-radius: 50%; box-shadow: 0 0 0 4px rgba(42,123,98,.15); }
.city-map { height: 450px; position: relative; overflow: hidden; }
.city-map svg { width: 100%; height: 100%; }
.river { fill: #a8d8d5; }
.shore { fill: none; stroke: white; stroke-width: 6; }
.roads path { fill: none; stroke: white; stroke-width: 8; opacity: .8; stroke-linecap: round; }
.zones path { fill: rgba(255,255,255,.2); stroke: rgba(18,108,131,.18); stroke-width: 2; }
.river-label { position: absolute; bottom: 26px; left: 47%; color: rgba(18,108,131,.62); font: italic 700 12px Georgia,serif; letter-spacing: 6px; }
.map-pin { --x: 50%; --y: 50%; position: absolute; left: var(--x); top: var(--y); transform: translate(-50%,-50%); border: 0; background: transparent; cursor: pointer; z-index: 2; }
.map-pin span { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 50% 50% 50% 8px; transform: rotate(-45deg); color: white; box-shadow: 0 5px 12px rgba(16,44,46,.25); font-weight: 900; border: 3px solid white; }
.map-pin span::first-letter { transform: rotate(45deg); }
.map-pin b { position: absolute; white-space: nowrap; left: 28px; top: -5px; padding: 5px 8px; border-radius: 5px; background: white; box-shadow: 0 4px 10px rgba(16,44,46,.15); font-size: 8px; opacity: 0; transform: translateY(4px); transition: .2s; }
.map-pin:hover b, .map-pin:focus b { opacity: 1; transform: none; }
.pin-blue span { background: var(--blue); }.pin-coral span { background: var(--coral); }.pin-green span { background: var(--green); }
.map-summary { display: grid; grid-template-columns: repeat(3,1fr) 1.3fr; background: var(--white); padding: 17px 20px; align-items: center; }
.map-summary div { border-right: 1px solid var(--border); padding-left: 12px; }
.map-summary strong { display: block; font: 700 20px Georgia,serif; }
.map-summary span { display: block; color: var(--muted); font-size: 9px; }
.map-summary a { color: var(--blue); text-align: right; font-size: 11px; font-weight: 850; }
.map-summary a span { display: inline; color: inherit; }

.section { padding: 92px max(24px, calc((100vw - var(--max)) / 2)); }
.section-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 30px; margin-bottom: 36px; }
.section-heading h2 { font: 700 clamp(36px,4vw,54px)/1.05 Georgia,serif; letter-spacing: -2px; margin: 0; }
.section-heading p:not(.eyebrow) { margin: 12px 0 0; color: var(--muted); }
.arrow-link { color: var(--blue); font-weight: 800; font-size: 13px; padding-bottom: 8px; border-bottom: 1px solid var(--blue); }
.arrow-link span { margin-left: 22px; }

.city-pulse { background: var(--white); }
.story-grid { display: grid; grid-template-columns: 1.5fr 1fr; grid-template-rows: 1fr 1fr; gap: 18px; }
.story-card { background: var(--paper); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; }
.story-card.large { grid-row: span 2; }
.story-photo { height: 255px; background: linear-gradient(140deg,rgba(16,44,46,.08),rgba(18,108,131,.18)), radial-gradient(circle at 30% 40%,#6d9b61 0 8%,transparent 9%), linear-gradient(170deg,#d4d8ba 0 42%,#a9b497 43% 55%,#9bb8bd 56%); position: relative; }
.story-photo::before,.story-photo::after { content:""; position:absolute; bottom:0; width:38%; height:76%; background:repeating-linear-gradient(100deg,transparent 0 22px,rgba(49,84,53,.65) 24px 29px),radial-gradient(circle at 50% 20%,#527d4a 0 22%,transparent 23%); filter: blur(.2px); }
.story-photo::before { left:0; }.story-photo::after { right:0; transform:scaleX(-1); }
.tag { display: inline-flex; align-items: center; min-height: 24px; border-radius: 99px; padding: 0 10px; font-size: 9px; letter-spacing: .4px; font-weight: 900; text-transform: uppercase; }
.story-photo .tag { position: absolute; z-index: 2; left: 16px; top: 16px; }
.tag-progress { color: white; background: var(--blue); }.tag-attention { color: #a53b26; background: #fde0d8; }.tag-done { color: #1b624d; background: #d9eee4; }
.photo-count { position: absolute; z-index: 2; bottom: 12px; right: 13px; background: rgba(16,44,46,.8); color: white; border-radius: 20px; padding: 4px 9px; font-size: 10px; }
.story-body { padding: 25px; }
.story-body.compact { padding: 27px; }
.story-meta { display: flex; gap: 10px; margin-bottom: 12px; color: var(--muted); font-size: 10px; }
.story-meta span + span::before { content:"·"; margin-right: 10px; }
.story-body h3 { font: 700 24px/1.15 Georgia,serif; margin: 0 0 10px; letter-spacing: -.5px; }
.story-body.compact h3 { font-size: 20px; margin-top: 14px; }
.story-body p { color: #607171; margin: 0; font-size: 13px; }
.story-footer { margin-top: 22px; padding-top: 16px; border-top: 1px solid var(--border); display: flex; align-items: center; gap: 9px; font-size: 10px; }
.story-footer a { margin-left: auto; width: 30px; height: 30px; border: 1px solid var(--ink); border-radius: 50%; display: grid; place-items: center; }
.avatar-stack { display: flex; }.avatar-stack i { width: 27px; height: 27px; border-radius: 50%; border: 2px solid var(--paper); background: var(--blue); color: white; display: grid; place-items: center; font-size: 8px; font-style: normal; }.avatar-stack i + i { margin-left: -7px; background: var(--coral); }
.mini-progress { height: 4px; background: #dce1dc; border-radius: 4px; margin: 18px 0 0; overflow:hidden; }.mini-progress span { display:block; height:100%; background:var(--coral); }
.story-card.resolved { display: grid; grid-template-columns: 80px 1fr; background: #e7f1eb; }
.resolved-mark { display: grid; place-items: center; background: var(--green); color: white; font-size: 26px; }

.goal-section { background: var(--white); padding-top: 0; }
.goal-card { color: white; background: var(--blue); border-radius: 25px; padding: 52px 58px; display: grid; grid-template-columns: 1.4fr .7fr; position: relative; overflow: hidden; }
.goal-card::after { content:""; position:absolute; width:460px; height:460px; border:1px solid rgba(255,255,255,.12); border-radius:50%; right:-180px; top:-270px; box-shadow: 0 0 0 70px rgba(255,255,255,.035),0 0 0 140px rgba(255,255,255,.025); }
.goal-copy h2 { font: 700 clamp(36px,4vw,56px)/1.03 Georgia,serif; letter-spacing: -2px; margin: 0; max-width: 700px; }
.goal-copy > p:not(.eyebrow) { color: #c5e1df; max-width: 630px; margin: 22px 0 28px; }
.goal-progress { display:flex; align-items:center; justify-content:center; flex-direction:column; }
.progress-orbit { width: 170px; height: 170px; border-radius:50%; display:grid; place-items:center; background:conic-gradient(var(--coral) 0 47%,rgba(255,255,255,.15) 47%); position:relative; }
.progress-orbit::before { content:""; position:absolute; inset:12px; border-radius:50%; background:var(--blue); }
.progress-orbit span { position:relative; text-align:center; }.progress-orbit strong { display:block; font:700 58px/1 Georgia,serif; }.progress-orbit small { display:block; color:#b9d9d7; }
.goal-progress p { text-align:center; }.goal-progress p strong,.goal-progress p span { display:block; }.goal-progress p span { color:#b9d9d7; font-size:11px; margin-top:5px; }
.goal-stats { grid-column:1/-1; display:grid; grid-template-columns:repeat(4,1fr); border-top:1px solid rgba(255,255,255,.22); margin-top:36px; padding-top:26px; }
.goal-stats div { padding-left:20px; border-left:2px solid rgba(255,255,255,.2); }.goal-stats span { display:block; font:700 26px Georgia,serif; }.goal-stats small { color:#b9d9d7; }

.boroughs { background: var(--paper); }
.search-field { width: 260px; background:var(--white); border:1px solid var(--border); border-radius:99px; height:46px; display:flex; align-items:center; padding:0 16px; gap:10px; }
.search-field input { width:100%; border:0; outline:0; background:transparent; }
.borough-feature { background:var(--ink); color:white; border-radius:18px; padding:30px 34px; display:grid; grid-template-columns:1.6fr repeat(3,.6fr); gap:20px; align-items:center; margin-bottom:18px; }
.borough-feature .label { color:#9fc5c4; font-size:10px; text-transform:uppercase; letter-spacing:1.5px; font-weight:900; }
.borough-feature h3 { font:700 38px Georgia,serif; margin:4px 0; }.borough-feature p { margin:0 0 18px; color:#bed0ce; font-size:12px; }
.borough-stat { border-left:1px solid rgba(255,255,255,.18); padding-left:24px; }.borough-stat strong,.borough-stat span { display:block; }.borough-stat strong { font:700 25px Georgia,serif; }.borough-stat span { font-size:10px; color:#9fc5c4; }
.borough-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
.borough-card { background:var(--white); border:1px solid var(--border); padding:18px; min-height:122px; border-radius:12px; cursor:pointer; transition:.2s; text-align:left; }
.borough-card:hover { border-color:var(--blue); transform:translateY(-3px); box-shadow:0 10px 30px rgba(16,44,46,.08); }
.borough-card strong { display:block; font:700 17px Georgia,serif; }.borough-card span { color:var(--muted); font-size:10px; }.borough-card footer { display:flex; justify-content:space-between; margin-top:22px; color:var(--blue); font-size:10px; font-weight:800; }.borough-card[hidden] { display:none; }
.center-button { display:flex; margin:24px auto 0; }

.explore { background: var(--white); }
.segmented { display:flex; padding:4px; background:var(--paper); border-radius:99px; }.segmented button { border:0; background:transparent; padding:8px 14px; border-radius:99px; font-size:11px; cursor:pointer; }.segmented button.active { background:var(--ink); color:white; }
.contribution-list { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
.contribution-item { border:1px solid var(--border); border-radius:14px; padding:22px; background:var(--white); display:flex; flex-direction:column; min-height:230px; }
.contribution-item .topline { display:flex; justify-content:space-between; align-items:center; }.contribution-item .topline small { color:var(--muted); }
.contribution-item h3 { font:700 20px/1.2 Georgia,serif; margin:20px 0 8px; }.contribution-item p { font-size:12px; color:var(--muted); margin:0; }.contribution-item footer { border-top:1px solid var(--border); padding-top:14px; margin-top:auto; display:flex; justify-content:space-between; font-size:10px; font-weight:800; }

/* Lisboa 2040 */
.future-lab { color:#eaf5f2; background:#071f24; position:relative; overflow:hidden; }
.future-lab::before { content:""; position:absolute; width:700px; height:700px; left:-350px; top:180px; border-radius:50%; background:radial-gradient(circle,rgba(19,126,147,.2),transparent 68%); pointer-events:none; }
.future-lab::after { content:""; position:absolute; inset:0; opacity:.08; background-image:linear-gradient(rgba(255,255,255,.16) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.16) 1px,transparent 1px); background-size:48px 48px; mask-image:linear-gradient(to bottom,black,transparent 62%); pointer-events:none; }
.future-lab > * { position:relative; z-index:1; }
.future-heading { display:grid; grid-template-columns:1.3fr .7fr; gap:80px; align-items:end; margin-bottom:48px; }
.future-heading h2 { margin:0; font:700 clamp(44px,5.2vw,72px)/.98 Georgia,serif; letter-spacing:-3px; }
.future-heading h2 em { color:#68c2cb; font-weight:400; }
.future-eyebrow { color:#70d4c0; }
.future-intro > p { color:#a8c2c0; font-size:15px; margin:0 0 30px; }
.future-horizon { display:flex; align-items:center; gap:10px; color:#7f9f9d; font-size:9px; text-transform:uppercase; letter-spacing:1px; }
.future-horizon span { display:grid; gap:2px; }.future-horizon b { color:white; font:700 16px Georgia,serif; letter-spacing:0; }.future-horizon i { flex:1; height:1px; background:linear-gradient(90deg,#2e7778,#ed6a4d); position:relative; }.future-horizon i::after { content:""; position:absolute; right:0; top:-2px; width:5px; height:5px; border-radius:50%; background:var(--coral); }
.future-feature { display:grid; grid-template-columns:1.05fr .95fr; min-height:560px; border:1px solid rgba(255,255,255,.16); background:#0d2d32; border-radius:24px; overflow:hidden; box-shadow:0 35px 100px rgba(0,0,0,.28); }
.feature-visual { position:relative; min-height:560px; overflow:hidden; background:radial-gradient(circle at 52% 46%,rgba(31,143,158,.37),transparent 24%),linear-gradient(150deg,#09262c,#16414a); }
.future-grid { position:absolute; inset:-20%; transform:perspective(500px) rotateX(62deg) rotateZ(-12deg); background-image:linear-gradient(rgba(85,195,198,.15) 1px,transparent 1px),linear-gradient(90deg,rgba(85,195,198,.15) 1px,transparent 1px); background-size:42px 42px; }
.route { position:absolute; height:5px; border-radius:50%; background:linear-gradient(90deg,transparent,#68c2cb,var(--coral),transparent); box-shadow:0 0 16px #68c2cb; transform-origin:left; }.route-a { width:72%; left:6%; top:63%; transform:rotate(-17deg); }.route-b { width:60%; left:44%; top:34%; transform:rotate(68deg); }
.autonomous-car { position:absolute; width:150px; height:76px; left:50%; top:48%; transform:translate(-50%,-50%) rotate(-8deg); border-radius:58% 58% 25% 25%; background:linear-gradient(145deg,#e9f6f4,#89bdc2); box-shadow:0 24px 50px rgba(0,0,0,.45),0 0 35px rgba(104,194,203,.32); border:1px solid white; }.autonomous-car::before { content:""; position:absolute; width:82px; height:29px; left:34px; top:9px; border-radius:50% 50% 25% 25%; background:#12343b; box-shadow:inset 0 0 12px #68c2cb; }.autonomous-car::after { content:""; position:absolute; width:26px; height:8px; border-radius:50%; left:62px; top:-8px; background:#70d4c0; box-shadow:0 0 16px #70d4c0; }.autonomous-car span,.autonomous-car i { position:absolute; width:24px; height:15px; background:#06171a; border-radius:50%; bottom:-5px; }.autonomous-car span { left:22px; }.autonomous-car i { right:22px; }.autonomous-car b { position:absolute; right:12px; bottom:13px; color:var(--blue); font-size:9px; letter-spacing:1px; }
.sensor-ring { position:absolute; border:1px solid rgba(104,194,203,.32); border-radius:50%; left:50%; top:48%; transform:translate(-50%,-50%); }.ring-one { width:290px; height:290px; }.ring-two { width:430px; height:430px; border-style:dashed; animation:spin 22s linear infinite; }
.feature-city-label { position:absolute; left:30px; bottom:25px; color:#6fa4a5; font-size:9px; font-weight:900; letter-spacing:3px; }
@keyframes spin { to { transform:translate(-50%,-50%) rotate(360deg); } }
.feature-copy { padding:52px 48px; display:flex; flex-direction:column; justify-content:center; }
.inspiration-meta { display:flex; align-items:center; gap:12px; color:#78a2a0; font-size:9px; text-transform:uppercase; letter-spacing:1px; }.inspiration-meta span { color:var(--coral); font:700 23px Georgia,serif; }.inspiration-meta em { margin-left:auto; padding:5px 9px; border:1px solid rgba(255,255,255,.18); border-radius:99px; font-style:normal; }
.feature-copy h3 { margin:22px 0 15px; font:700 clamp(34px,3.4vw,50px)/1.02 Georgia,serif; letter-spacing:-1.5px; }.feature-copy > p { color:#a8c2c0; font-size:13px; }
.lisbon-translation { margin:22px 0; padding:18px 20px; background:rgba(4,21,24,.55); border-left:3px solid var(--coral); }.lisbon-translation strong { color:#70d4c0; text-transform:uppercase; letter-spacing:1px; font-size:9px; }.lisbon-translation ul { padding-left:18px; margin:10px 0 0; color:#d7e7e4; font-size:11px; }.lisbon-translation li + li { margin-top:5px; }
.future-actions { display:flex; align-items:center; gap:24px; }.future-actions a { color:#9eb8b6; font-size:10px; text-decoration:underline; text-underline-offset:4px; }
.inspiration-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:12px; margin-top:18px; }
.inspiration-card { min-height:480px; padding:24px 21px; display:flex; flex-direction:column; background:#0c292e; border:1px solid rgba(255,255,255,.13); border-radius:16px; transition:.25s; }.inspiration-card:hover { transform:translateY(-5px); border-color:rgba(104,194,203,.55); background:#103239; }
.inspiration-top { display:flex; justify-content:space-between; align-items:center; }.country-code { width:29px; height:29px; display:grid; place-items:center; border:1px solid rgba(255,255,255,.22); border-radius:50%; color:#a9c6c3; font-size:8px; font-weight:900; }.readiness { padding:5px 7px; border-radius:99px; background:rgba(104,194,203,.12); color:#68c2cb; font-size:7px; text-transform:uppercase; letter-spacing:.7px; }.ready-now { color:#79d2a8; background:rgba(121,210,168,.11); }
.inspiration-icon { height:100px; margin:24px 0 19px; border-radius:10px; display:grid; place-items:center; position:relative; overflow:hidden; font:700 45px Georgia,serif; color:#bfe1de; background:radial-gradient(circle at center,rgba(104,194,203,.22),transparent 67%); }.inspiration-icon::after { content:""; position:absolute; inset:0; background:linear-gradient(135deg,transparent 48%,rgba(255,255,255,.08) 49%,transparent 50%); }.inspiration-icon i { position:absolute; right:22%; top:18%; color:var(--coral); font:700 13px sans-serif; }
.inspiration-card > p:not(.card-copy) { color:#6fa4a5; margin:0 0 5px; text-transform:uppercase; letter-spacing:1.2px; font-size:8px; font-weight:900; }.inspiration-card h3 { margin:0 0 12px; font:700 22px/1.08 Georgia,serif; }.card-copy { color:#98b4b2; font-size:10px; margin:0 0 15px; }.lisbon-idea { padding-top:13px; border-top:1px solid rgba(255,255,255,.11); }.lisbon-idea strong,.lisbon-idea span { display:block; }.lisbon-idea strong { color:var(--coral); text-transform:uppercase; font-size:7px; letter-spacing:1px; }.lisbon-idea span { color:#c3d8d5; font-size:9px; margin-top:4px; }
.card-actions { margin-top:auto; padding-top:18px; display:flex; align-items:center; justify-content:space-between; }.card-actions button { border:0; background:transparent; padding:0; color:#70d4c0; font-size:9px; font-weight:850; cursor:pointer; text-align:left; }.card-actions a { color:#6f9694; font-size:8px; }
.future-page-link { margin-top:18px; width:max-content; }.future-vote,.mini-vote { border:1px solid rgba(112,212,192,.35)!important; border-radius:999px; background:rgba(112,212,192,.08)!important; color:#bfe1de!important; display:inline-flex; align-items:center; gap:6px; font-weight:900!important; cursor:pointer; }.future-vote { min-height:42px; padding:0 13px!important; font-size:9px!important; }.mini-vote { min-height:28px; padding:0 9px!important; font-size:8px!important; }.future-vote span,.mini-vote span { color:var(--coral); }.future-vote.voted,.mini-vote.voted,[data-lab-vote].voted,.idea-vote-button.voted { opacity:.72; cursor:default; }
.future-principle { display:grid; grid-template-columns:.55fr 1.4fr auto; gap:25px; align-items:center; margin-top:18px; padding:25px 28px; border:1px solid rgba(255,255,255,.14); border-radius:14px; background:linear-gradient(90deg,rgba(18,108,131,.2),rgba(237,106,77,.09)); }.future-principle > span { color:#70d4c0; text-transform:uppercase; letter-spacing:1.5px; font-size:8px; font-weight:900; }.future-principle p { margin:0; color:#a6bfbd; font:400 16px Georgia,serif; }.future-principle p strong { color:white; }

/* Interactive city map */
.map-controls { display:flex; align-items:center; gap:12px; margin:-12px 0 16px; }.map-controls .segmented { margin-right:auto; }.segmented button span { opacity:.56; margin-left:3px; }.map-select { height:43px; display:flex; align-items:center; gap:9px; padding:0 11px; border:1px solid var(--border); border-radius:9px; background:var(--white); }.map-select span { font-size:8px; color:var(--muted); text-transform:uppercase; letter-spacing:.7px; }.map-select select { border:0; outline:0; color:var(--ink); background:transparent; font-size:10px; font-weight:800; }.locate-button { height:43px; border:1px solid var(--ink); border-radius:9px; background:var(--white); padding:0 14px; font-size:10px; font-weight:850; cursor:pointer; }.locate-button span { color:var(--coral); font-size:15px; margin-right:5px; }.reset-map-button { border-color:var(--border); color:var(--blue); }
.live-map-shell { height:620px; display:grid; grid-template-columns:1fr 335px; position:relative; border:1px solid var(--border); border-radius:18px; overflow:hidden; background:#dce7e3; box-shadow:0 18px 48px rgba(16,44,46,.11); }.live-map-shell #live-map { height:100%; width:100%; z-index:1; }.map-detail { background:var(--white); border-left:1px solid var(--border); padding:25px; overflow:auto; z-index:2; }.map-detail-empty { min-height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; color:var(--muted); }.map-detail-empty > span { width:55px; height:55px; display:grid; place-items:center; border-radius:50%; background:#e1edef; color:var(--blue); font-size:24px; }.map-detail-empty h3 { color:var(--ink); font:700 20px Georgia,serif; margin:15px 0 4px; }.map-detail-empty p { max-width:210px; font-size:10px; }
.detail-close-btn { border:1px solid var(--border); background:transparent; width:28px; height:28px; border-radius:50%; font-size:18px; cursor:pointer; line-height:1; display:grid; place-items:center; color:var(--muted); margin-left:auto; flex-shrink:0; }
.detail-close-btn:hover { background:var(--paper); color:var(--ink); }
.map-detail-content .detail-top { display:flex; justify-content:space-between; align-items:center; gap:8px; }.map-detail-content .detail-id { color:var(--muted); font-size:8px; }.map-detail-content h3 { font:700 26px/1.08 Georgia,serif; margin:20px 0 9px; }.map-detail-content > p { color:var(--muted); font-size:11px; }.detail-location { padding:12px; border-radius:8px; background:var(--paper); margin:18px 0; }.detail-location span,.detail-location strong { display:block; }.detail-location span { color:var(--muted); font-size:8px; text-transform:uppercase; letter-spacing:.6px; }.detail-location strong { font-size:10px; margin-top:3px; }.detail-timeline { margin:20px 0; }.detail-timeline > span { display:block; color:var(--muted); text-transform:uppercase; font-size:8px; letter-spacing:1px; font-weight:850; margin-bottom:12px; }.timeline-step { display:grid; grid-template-columns:18px 1fr; gap:9px; position:relative; padding-bottom:13px; }.timeline-step::before { content:""; position:absolute; left:7px; top:16px; bottom:0; width:1px; background:var(--border); }.timeline-step:last-child::before { display:none; }.timeline-step i { width:15px; height:15px; display:grid; place-items:center; border-radius:50%; background:#dfe7e3; color:white; font-size:7px; font-style:normal; }.timeline-step.done i { background:var(--green); }.timeline-step.active i { background:var(--coral); box-shadow:0 0 0 4px #fbe6df; }.timeline-step strong,.timeline-step small { display:block; }.timeline-step strong { font-size:9px; }.timeline-step small { color:var(--muted); font-size:7px; }.detail-follow { width:100%; border:1px solid var(--blue); background:transparent; color:var(--blue); border-radius:99px; min-height:40px; font-size:9px; font-weight:850; cursor:pointer; }
.idea-vote-panel { display:grid; grid-template-columns:86px 1fr; gap:13px; align-items:center; margin:17px 0 4px; padding:12px; border-radius:12px; background:#f0f7f6; border:1px solid #d5e7e4; }.idea-vote-button { height:64px; border:0; border-radius:12px; background:var(--blue); color:white; display:grid; grid-template-columns:20px 1fr; grid-template-rows:1fr 1fr; align-items:center; justify-items:center; cursor:pointer; }.idea-vote-button span { grid-row:1/3; font-size:13px; color:var(--coral); }.idea-vote-button strong { font-size:18px; line-height:1; }.idea-vote-button small { font-size:7px; text-transform:uppercase; letter-spacing:.6px; opacity:.75; }.idea-vote-panel p { margin:0; color:var(--muted); font-size:9px; }.official-response { margin:18px 0; padding:15px; border-radius:12px; background:#fff7ed; border:1px solid #f4d7bd; }.official-response span { display:block; color:#a05a26; text-transform:uppercase; letter-spacing:.8px; font-size:8px; font-weight:900; }.official-response p { margin:6px 0 8px; color:var(--ink); font-size:10px; }.official-response strong { display:block; color:#7d4219; font-size:9px; }
.map-legend { position:absolute; z-index:3; left:13px; bottom:13px; display:flex; gap:8px; padding:7px 9px; background:rgba(255,253,248,.94); border-radius:7px; box-shadow:0 4px 18px rgba(16,44,46,.16); }.map-legend span { display:flex; align-items:center; gap:4px; font-size:7px; font-weight:800; }.map-legend i { width:17px; height:17px; display:grid; place-items:center; border-radius:50%; color:white; font-style:normal; font-size:7px; }.legend-problem { background:var(--coral); }.legend-idea { background:var(--blue); }.legend-complete { background:var(--green); }
.map-footer-row { display:flex; justify-content:space-between; align-items:center; margin-top:14px; }.map-footer-row p { color:var(--muted); font-size:9px; display:flex; align-items:center; gap:5px; }.map-footer-row .live-dot { display:inline-block; }.map-footer-row .button { min-height:42px; font-size:10px; }
.civic-marker { width:35px!important; height:35px!important; border-radius:50% 50% 50% 8px; transform:rotate(-45deg); border:3px solid white; display:grid!important; place-items:center; color:white; font-weight:900; box-shadow:0 5px 15px rgba(16,44,46,.35); }.civic-marker span { transform:rotate(45deg); font-size:11px; }.civic-marker.problema { background:var(--coral); }.civic-marker.ideia { background:var(--blue); }.civic-marker.concluido { background:var(--green); }.civic-marker.future { width:42px!important; height:42px!important; background:#071f24; box-shadow:0 0 0 5px rgba(104,194,203,.25),0 7px 18px rgba(16,44,46,.45); }
.lisbon-osm-layer { filter:saturate(.82) contrast(.96) brightness(1.02); }.lisbon-map-label { display:inline-grid; place-items:center; min-width:64px; height:21px; padding:0 8px; border-radius:999px; background:rgba(255,253,248,.88); color:#102c2e; border:1px solid rgba(16,44,46,.13); box-shadow:0 4px 15px rgba(16,44,46,.10); font-size:8px; font-weight:900; white-space:nowrap; letter-spacing:.1px; }.map-zoom-hint { position:absolute; z-index:650; left:50%; top:14px; transform:translate(-50%,-8px); padding:9px 12px; border-radius:999px; background:rgba(16,44,46,.9); color:white; font-size:9px; font-weight:850; opacity:0; pointer-events:none; transition:.2s; box-shadow:0 8px 24px rgba(16,44,46,.22); }.map-zoom-hint.show { opacity:1; transform:translate(-50%,0); }.leaflet-control-scale-line { border-color:rgba(16,44,46,.45)!important; color:var(--ink)!important; background:rgba(255,253,248,.88)!important; font-size:8px!important; }.leaflet-control-zoom a { color:var(--ink)!important; }.leaflet-control-attribution { font-size:7px!important; }.leaflet-popup-content-wrapper { border-radius:10px!important; }.leaflet-popup-content { font-family:Inter,ui-sans-serif,system-ui!important; font-size:10px!important; }

.commitments { background: var(--paper-2); }
.method-button { border:0; background:transparent; color:var(--blue); font-weight:850; cursor:pointer; }
.commitment-summary { display:grid; grid-template-columns:180px 1.5fr 1fr; gap:36px; align-items:center; padding:28px; background:var(--white); border:1px solid var(--border); border-radius:16px 16px 0 0; }
.donut { width:130px; height:130px; border-radius:50%; background:conic-gradient(var(--green) 0 20%,var(--blue) 20% 66%,var(--yellow) 66% 86%,#bdc5c2 86%); display:grid; place-items:center; position:relative; }.donut::before { content:""; position:absolute; inset:14px; background:var(--white); border-radius:50%; }.donut span { position:relative; text-align:center; }.donut strong,.donut small { display:block; }.donut strong { font:700 35px Georgia,serif; }.donut small { color:var(--muted); font-size:9px; }
.legend { display:grid; grid-template-columns:repeat(2,1fr); gap:15px; }.legend div { display:flex; align-items:center; gap:10px; font-size:12px; }.legend i { width:9px; height:9px; border-radius:50%; }.legend-green{background:var(--green)}.legend-blue{background:var(--blue)}.legend-yellow{background:var(--yellow)}.legend-grey{background:#bdc5c2}
.updated-box { padding:17px 20px; background:var(--paper); border-radius:10px; }.updated-box small,.updated-box strong,.updated-box span { display:block; }.updated-box small { text-transform:uppercase; color:var(--muted); font-size:8px; letter-spacing:1px; }.updated-box strong { font:700 18px Georgia,serif; margin:3px 0; }.updated-box span { font-size:9px; color:var(--green); }
.commitment-table { background:var(--white); border:1px solid var(--border); border-top:0; border-radius:0 0 16px 16px; overflow:hidden; }.table-row { display:grid; grid-template-columns:2.1fr 1fr .7fr 1fr 1fr; gap:18px; align-items:center; min-height:65px; padding:12px 26px; border-top:1px solid var(--border); font-size:11px; }.table-row strong { font:700 14px Georgia,serif; }.table-head { min-height:42px; background:#f0f2ed; color:var(--muted); text-transform:uppercase; letter-spacing:1px; font-size:8px; border:0; }.status { display:inline-flex; border-radius:99px; padding:5px 9px; font-size:8px; text-transform:uppercase; letter-spacing:.5px; }.status-course { color:var(--blue); background:#dcecef; }.status-delay { color:#97650b; background:#fff0c6; }.row-progress { height:5px; background:#e3e7e3; border-radius:4px; position:relative; }.row-progress i { display:block; height:100%; background:var(--blue); border-radius:4px; }.row-progress em { position:absolute; right:0; top:8px; font-style:normal; color:var(--muted); font-size:8px; }.prototype-note { color:var(--muted); font-size:10px; text-align:center; margin:18px 0 0; }

.closing-cta { background:var(--ink); color:white; text-align:center; position:relative; overflow:hidden; }.closing-cta::before { content:""; position:absolute; inset:0; background:radial-gradient(circle at 50% 50%,rgba(18,108,131,.5),transparent 35%); }.closing-cta > div { position:relative; }.closing-cta .eyebrow { justify-content:center; }.closing-cta h2 { font:700 clamp(40px,5vw,66px)/1.03 Georgia,serif; letter-spacing:-2px; margin:0 0 30px; }.big-symbol { font-size:40px; color:var(--coral); display:block; margin-bottom:22px; }
footer { background:#0a2224; color:#b4c6c4; padding:55px max(24px,calc((100vw - var(--max))/2)); display:grid; grid-template-columns:1fr 1.2fr; gap:28px; align-items:start; font-size:11px; }footer .brand strong { color:white; }footer p { max-width:400px; margin:0; }footer nav { display:flex; gap:20px; justify-content:flex-end; }footer small { grid-column:1/-1; border-top:1px solid rgba(255,255,255,.1); padding-top:20px; }

.contribution-dialog { width:min(760px,calc(100% - 24px)); max-height:calc(100vh - 24px); border:0; border-radius:22px; padding:0; background:var(--white); color:var(--ink); box-shadow:0 24px 80px rgba(0,0,0,.35); }.contribution-dialog::backdrop { background:rgba(5,25,27,.78); backdrop-filter:blur(5px); }.contribution-dialog form { padding:32px 36px; }.dialog-header { display:flex; justify-content:space-between; align-items:start; }.dialog-header h2 { margin:0; font:700 34px Georgia,serif; }.dialog-close { border:1px solid var(--border); background:transparent; width:38px; height:38px; border-radius:50%; font-size:24px; cursor:pointer; }.steps { width:310px; display:grid; grid-template-columns:24px 1fr 24px 1fr 24px; align-items:center; margin:30px auto; }.steps span { width:24px; height:24px; display:grid; place-items:center; border:1px solid var(--border); border-radius:50%; font-size:9px; font-weight:900; background:var(--white); }.steps span.active { background:var(--blue); color:white; border-color:var(--blue); }.steps i { height:1px; background:var(--border); }.steps small { text-align:center; transform:translateX(-8px); color:var(--muted); font-size:8px; margin-top:5px; }.field-label { font-weight:800; font-size:12px; }.type-options { display:grid; grid-template-columns:1fr 1fr; gap:14px; }.type-options input { position:absolute; opacity:0; }.type-card { display:block; border:2px solid var(--border); border-radius:14px; padding:28px; cursor:pointer; min-height:175px; }.type-card i { display:grid; place-items:center; width:50px; height:50px; border-radius:50%; background:#e3eff0; color:var(--blue); font:700 21px Georgia,serif; margin-bottom:25px; }.type-card strong,.type-card small { display:block; }.type-card strong { font:700 19px Georgia,serif; }.type-card small { color:var(--muted); margin-top:5px; }.type-options input:checked + .type-card { border-color:var(--blue); background:#f0f7f6; box-shadow:inset 0 0 0 1px var(--blue); }.form-step { display:none; }.form-step.active { display:block; }.form-actions { display:flex; justify-content:space-between; margin-top:28px; }.field-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }.field-grid label { display:block; }.field-grid label > span,.field-grid label > small { display:block; }.field-grid label > span { font-size:11px; font-weight:800; margin-bottom:6px; }.field-grid label > small { color:var(--muted); font-size:8px; margin-top:4px; }.field-grid .full { grid-column:1/-1; }.field-grid input,.field-grid select,.field-grid textarea { width:100%; border:1px solid var(--border); border-radius:9px; background:white; padding:11px 13px; outline:none; }.field-grid input:focus,.field-grid select:focus,.field-grid textarea:focus { border-color:var(--blue); box-shadow:0 0 0 3px rgba(18,108,131,.12); }.input-with-icon { display:grid; grid-template-columns:24px 1fr auto; align-items:center; border:1px solid var(--border); border-radius:9px; padding-left:10px; }.input-with-icon input { border:0; box-shadow:none!important; }.input-with-icon button { border:0; background:transparent; color:var(--blue); font-size:9px; font-weight:800; padding:0 12px; cursor:pointer; }.photo-upload { position:relative; border:1px dashed var(--blue); background:#f0f7f6; border-radius:10px; padding:17px; text-align:center; cursor:pointer; overflow:hidden; }.photo-upload input { position:absolute; inset:0; opacity:0; cursor:pointer; }.photo-upload > span { color:var(--blue); font-size:20px; }.photo-upload strong,.photo-upload small { display:block; }.photo-upload strong { font-size:11px; }.photo-upload img { display:none; width:100%; max-height:140px; object-fit:cover; margin-top:10px; border-radius:7px; }.review-card { background:var(--paper); border-radius:12px; padding:24px; }.review-card h3 { font:700 25px Georgia,serif; margin:14px 0 5px; }.review-card p { color:var(--muted); }.review-card dl { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; border-top:1px solid var(--border); padding-top:15px; }.review-card dt { color:var(--muted); font-size:8px; text-transform:uppercase; letter-spacing:1px; }.review-card dd { margin:2px 0 0; font-size:11px; font-weight:800; }.consent { display:flex; gap:10px; align-items:start; font-size:9px; color:var(--muted); margin:16px 0; }.form-success { display:none; text-align:center; padding:35px 0 15px; }.form-success.active { display:block; }.success-icon { width:70px; height:70px; border-radius:50%; display:grid; place-items:center; background:var(--green); color:white; font-size:32px; margin:0 auto 20px; }.form-success .eyebrow { justify-content:center; }.form-success h2 { font:700 37px Georgia,serif; margin:0; }.form-success p { max-width:470px; margin:13px auto; color:var(--muted); }.tracking-code { display:block; color:var(--blue); font:700 22px Georgia,serif; margin:17px 0 24px; }.toast { position:fixed; right:20px; bottom:20px; z-index:100; background:var(--ink); color:white; padding:14px 18px; border-radius:9px; box-shadow:var(--shadow); transform:translateY(100px); opacity:0; transition:.3s; font-size:12px; }.toast.show { transform:none; opacity:1; }

/* Laboratório Lisboa 2040 page */
.future-page { background:#f7f3ea; }.future-page .site-header { background:rgba(7,31,36,.94); color:white; border-color:rgba(255,255,255,.1); }.future-page .desktop-nav a { color:#cfe0dd; }.future-page .desktop-nav a.active,.future-page .desktop-nav a:hover { background:rgba(255,255,255,.1); color:white; }.future-page .text-link { color:#cfe0dd; }.future-page .brand strong { color:white; }.future-page .brand em { color:#f2b38f; }
.future-page-hero { min-height:620px; padding:150px max(24px,calc((100vw - var(--max))/2)) 90px; color:white; background:radial-gradient(circle at 76% 12%,rgba(112,212,192,.22),transparent 28%),linear-gradient(135deg,#071f24 0%,#0e3b43 58%,#071f24 100%); position:relative; overflow:hidden; }.future-page-hero::after { content:""; position:absolute; inset:auto -10% -42% -10%; height:360px; background:radial-gradient(ellipse at center,rgba(237,106,77,.22),transparent 62%); }.future-page-hero > * { position:relative; z-index:1; }.future-page-hero .eyebrow { color:#98d8cf; }.future-page-hero h1 { max-width:980px; margin:20px 0; font:700 clamp(54px,8vw,106px)/.9 Georgia,serif; letter-spacing:-5px; }.future-page-hero p:not(.eyebrow) { max-width:720px; margin:0; color:#b8cbc8; font-size:19px; line-height:1.55; }.future-page-actions { display:flex; gap:12px; flex-wrap:wrap; margin-top:35px; }
.future-method { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; padding-top:38px; padding-bottom:38px; background:#071f24; }.lab-method-card { padding:28px; border:1px solid rgba(255,255,255,.12); border-radius:18px; color:white; background:rgba(255,255,255,.04); }.lab-method-card span { color:var(--coral); font-weight:900; font-size:10px; }.lab-method-card h2 { margin:15px 0 8px; font:700 28px/1 Georgia,serif; }.lab-method-card p { margin:0; color:#a9bfbc; font-size:12px; }
.future-pilots { background:var(--paper); }.future-filter { display:flex; gap:8px; flex-wrap:wrap; justify-content:flex-end; }.future-filter button { min-height:38px; padding:0 13px; border:1px solid var(--border); border-radius:999px; background:white; color:var(--muted); font-size:9px; font-weight:900; cursor:pointer; }.future-filter button.active { background:var(--ink); color:white; border-color:var(--ink); }
.pilot-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:18px; margin-top:28px; }.pilot-card { min-height:440px; display:flex; flex-direction:column; padding:26px; border:1px solid var(--border); border-radius:18px; background:white; box-shadow:0 12px 32px rgba(16,44,46,.07); }.pilot-top { display:flex; justify-content:space-between; gap:12px; align-items:center; margin-bottom:20px; }.pilot-top span { display:inline-flex; padding:6px 9px; border-radius:999px; background:#eef6f5; color:var(--blue); text-transform:uppercase; letter-spacing:.8px; font-size:8px; font-weight:900; }.pilot-top b { color:var(--muted); font-size:9px; text-align:right; }.pilot-card h3 { margin:0 0 12px; font:700 31px/1.02 Georgia,serif; letter-spacing:-.8px; }.pilot-card > p { margin:0 0 18px; color:var(--muted); font-size:12px; line-height:1.55; }.pilot-card dl { display:grid; gap:10px; margin:0 0 22px; }.pilot-card dl div { padding:12px; border-radius:12px; background:var(--paper); }.pilot-card dt { color:var(--muted); text-transform:uppercase; letter-spacing:.8px; font-size:8px; font-weight:900; }.pilot-card dd { margin:4px 0 0; font-size:11px; line-height:1.45; }.pilot-card footer { margin-top:auto; display:flex; justify-content:space-between; align-items:center; gap:14px; padding-top:16px; border-top:1px solid var(--border); }.pilot-card footer a { color:var(--blue); font-size:9px; font-weight:900; }.pilot-card footer button { min-height:39px; padding:0 13px; display:inline-flex; align-items:center; gap:7px; border:1px solid var(--blue); border-radius:999px; background:white; color:var(--blue); font-size:9px; font-weight:900; cursor:pointer; }.pilot-card footer button span { color:var(--coral); }.pilot-card[hidden] { display:none; }
.city-response-model { display:grid; grid-template-columns:.8fr 1.2fr; gap:50px; background:white; }.city-response-model h2 { margin:10px 0 0; font:700 44px/1.02 Georgia,serif; letter-spacing:-1.4px; }.city-response-model ol { margin:0; padding:0; display:grid; gap:12px; counter-reset:response; list-style:none; }.city-response-model li { position:relative; padding:20px 22px 20px 58px; border:1px solid var(--border); border-radius:16px; background:var(--paper); font-size:12px; line-height:1.55; }.city-response-model li::before { counter-increment:response; content:counter(response); position:absolute; left:18px; top:18px; width:27px; height:27px; border-radius:50%; display:grid; place-items:center; background:var(--blue); color:white; font-size:10px; font-weight:900; }.city-response-model li strong { color:var(--ink); }

/* Progress bars for pilot vote thresholds */
.pilot-vote-progress, .feature-vote-progress { margin:12px 0 16px; }
.pilot-vote-progress span, .feature-vote-progress span { display:block; font-size:9px; color:var(--muted); margin-top:5px; }
.pilot-vote-progress strong, .feature-vote-progress strong { color:var(--ink); }
.feature-vote-progress span { color:#a8c2c0; }
.feature-vote-progress strong { color:white; }
.progress-bar-track { height:5px; background:rgba(255,255,255,.15); border-radius:99px; overflow:hidden; }
.pilot-vote-progress .progress-bar-track { background:#e3e7e3; }
.progress-bar-fill { height:100%; background:var(--coral); border-radius:99px; transition:width .6s ease; }

/* Propose-from-futuro button */
.propose-from-futuro { border:0; background:transparent; color:var(--blue); font-size:9px; font-weight:850; cursor:pointer; padding:0; text-align:left; }
.propose-from-futuro:hover { text-decoration:underline; }
.pilot-card footer { gap:10px; flex-wrap:wrap; }

.reveal { opacity:0; transform:translateY(18px); transition:opacity .7s ease,transform .7s ease; }.reveal.visible { opacity:1; transform:none; }

@media (max-width: 950px) {
  .desktop-nav,.desktop-only { display:none; }.menu-button { display:block; }.site-header.menu-open .desktop-nav { display:flex; position:absolute; top:76px; left:0; right:0; height:auto; padding:18px 24px; flex-direction:column; gap:10px; align-items:stretch; background:var(--white); box-shadow:var(--shadow); }.site-header.menu-open .desktop-nav a { height:42px; justify-content:start; }
  .hero { grid-template-columns:1fr; gap:45px; padding-top:55px; }.hero-copy { max-width:680px; }.hero-visual { max-width:680px; width:100%; margin:auto; }.story-grid { grid-template-columns:1fr; grid-template-rows:auto; }.story-card.large { grid-row:auto; }.goal-card { grid-template-columns:1fr; }.goal-progress { margin-top:35px; }.borough-feature { grid-template-columns:1.3fr 1fr 1fr; }.borough-feature > div:nth-child(4) { display:none; }.borough-grid { grid-template-columns:repeat(3,1fr); }.contribution-list { grid-template-columns:repeat(2,1fr); }.commitment-summary { grid-template-columns:160px 1fr; }.updated-box { grid-column:1/-1; }.table-row { grid-template-columns:2fr 1fr .8fr 1fr; }.table-row > :last-child { display:none; }
}

@media (max-width: 650px) {
  .site-header { height:66px; padding:0 16px; }.site-header.menu-open .desktop-nav { top:66px; }.header-actions { gap:7px; }.header-actions .button { min-height:38px; padding:0 14px; }.hero { padding:38px 18px 60px; }.hero h1 { font-size:52px; letter-spacing:-3px; }.hero-intro { font-size:16px; }.hero-visual { border-width:6px; border-radius:20px; }.city-map { height:330px; }.map-summary { grid-template-columns:repeat(3,1fr); }.map-summary a { grid-column:1/-1; text-align:center; padding-top:14px; }.map-summary div:nth-child(3) { border:0; }.section { padding:68px 18px; }.section-heading { align-items:flex-start; flex-direction:column; }.section-heading h2 { font-size:38px; }.story-photo { height:200px; }.story-card.resolved { grid-template-columns:46px 1fr; }.goal-section { padding-top:0; }.goal-card { padding:35px 24px; }.goal-copy h2 { font-size:38px; }.goal-stats { grid-template-columns:repeat(2,1fr); gap:20px; }.borough-feature { grid-template-columns:1fr 1fr; }.borough-feature > div:first-child { grid-column:1/-1; }.borough-feature > div:nth-child(4) { display:block; }.borough-grid { grid-template-columns:repeat(2,1fr); }.search-field { width:100%; }.segmented { overflow:auto; max-width:100%; }.contribution-list { grid-template-columns:1fr; }.commitment-summary { grid-template-columns:1fr; }.donut { margin:auto; }.legend { grid-template-columns:1fr 1fr; }.table-row { grid-template-columns:1.8fr 1fr; }.table-row > :nth-child(3),.table-row > :nth-child(5) { display:none; }.commitment-table { overflow-x:auto; }.closing-cta h2 { font-size:40px; }footer { grid-template-columns:1fr; }footer nav { justify-content:flex-start; flex-wrap:wrap; }footer small { grid-column:auto; }.contribution-dialog form { padding:24px 18px; }.dialog-header h2 { font-size:27px; }.steps { width:260px; }.type-options { grid-template-columns:1fr; }.type-card { min-height:auto; padding:18px; }.type-card i { margin-bottom:12px; }.field-grid { grid-template-columns:1fr; }.field-grid .full { grid-column:auto; }.review-card dl { grid-template-columns:1fr; }.form-actions { gap:10px; }.form-actions .button { flex:1; padding:0 14px; gap:7px; }
}

@media (max-width: 1100px) {
  .inspiration-grid { grid-template-columns:repeat(3,1fr); }
  .inspiration-card { min-height:450px; }
}

@media (max-width: 950px) {
  .future-heading { grid-template-columns:1fr; gap:25px; }
  .future-feature { grid-template-columns:1fr; }
  .feature-visual { min-height:420px; }
  .feature-copy { padding:40px; }
  .future-principle { grid-template-columns:1fr 1.6fr; }
  .future-principle .button { grid-column:1/-1; justify-self:start; }
  .live-map-shell { grid-template-columns:1fr; height:auto; }
  .live-map-shell #live-map { height:520px; }
  .map-detail { min-height:300px; border-left:0; border-top:1px solid var(--border); }
  .map-controls { flex-wrap:wrap; }
  .map-controls .segmented { width:100%; margin-right:0; }
  .future-method,.pilot-grid,.city-response-model { grid-template-columns:1fr; }
  .future-filter { justify-content:flex-start; }
}

@media (max-width: 650px) {
  .future-heading h2 { font-size:45px; }
  .future-horizon { gap:6px; }
  .future-feature { min-height:0; }
  .feature-visual { min-height:330px; }
  .feature-copy { padding:30px 22px; }
  .feature-copy h3 { font-size:38px; }
  .future-actions { align-items:flex-start; flex-direction:column; }
  .inspiration-grid { grid-template-columns:1fr; }
  .inspiration-card { min-height:0; }
  .future-principle { grid-template-columns:1fr; }
  .future-principle .button { grid-column:auto; width:100%; }
  .map-controls { align-items:stretch; }
  .map-controls .segmented { display:grid; grid-template-columns:repeat(2,1fr); border-radius:12px; }
  .map-select { flex:1; justify-content:space-between; }
  .locate-button { flex:1; }
  .live-map-shell #live-map { height:430px; }
  .map-detail { min-height:320px; }
  .map-legend { flex-direction:column; }
  .map-footer-row { align-items:flex-start; flex-direction:column; gap:9px; }
  .map-footer-row .button { width:100%; }
  .future-page-hero { min-height:auto; padding:118px 18px 72px; }
  .future-page-hero h1 { font-size:52px; letter-spacing:-2.5px; }
  .future-page-hero p:not(.eyebrow) { font-size:16px; }
  .future-method { padding-top:40px; padding-bottom:40px; }
  .pilot-card { min-height:auto; padding:22px; }
  .pilot-card h3 { font-size:27px; }
  .pilot-card footer { align-items:flex-start; flex-direction:column; }
  .city-response-model h2 { font-size:36px; }
  .future-filter { width:100%; }
  .future-filter button { flex:1; }
}

@media (prefers-reduced-motion: reduce) { html { scroll-behavior:auto; }*,*::before,*::after { transition:none!important; animation:none!important; }.reveal { opacity:1; transform:none; } }
