.affordability-ranking-page{max-width:1320px}.affordability-ranking-page .ui-hero--full{align-items:center}.affordability-ranking-page .ui-hero-meta{margin-top:0}.affordability-ranking-hero-leader{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-4)}.affordability-ranking-hero-leader,.affordability-ranking-hero-leader a{color:var(--ink);font-size:clamp(1.25rem,2vw,1.7rem);font-weight:var(--fw-semibold);line-height:1.2;text-decoration:none}.affordability-ranking-hero-leader a:hover{color:var(--green-deep);text-decoration:underline;text-underline-offset:3px}.affordability-ranking-hero-leader strong{flex:0 0 auto;color:var(--green-deep);font-size:clamp(2rem,4vw,3.2rem);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:var(--tracking-tight)}.affordability-ranking-hero-note{color:var(--ink-soft);font-size:var(--fs-3);line-height:var(--leading-copy)}.affordability-ranking-top-three{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:var(--space-4);gap:var(--space-4)}.affordability-ranking-podium-card{min-width:0;padding:clamp(18px,2.5vw,26px);border:1px solid var(--line);border-radius:var(--radius-card);background:var(--panel);box-shadow:var(--shadow-sm)}.affordability-ranking-podium-card:first-child{border-color:color-mix(in srgb,var(--green) 45%,var(--line));background:linear-gradient(155deg,var(--green-soft),var(--panel) 65%)}.affordability-ranking-podium-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-3)}.affordability-ranking-podium-head span{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:28px;padding-inline:9px;border-radius:var(--radius-pill);background:var(--green-deep);color:#fff;font-size:var(--fs-2);font-weight:var(--fw-bold)}.affordability-ranking-podium-head strong{color:var(--green-deep);font-size:clamp(1.65rem,3vw,2.35rem);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.affordability-ranking-podium-card h3{margin:0;color:var(--ink);font-size:var(--fs-5);line-height:1.25}.affordability-ranking-podium-card h3 a{color:inherit;text-decoration:none}.affordability-ranking-podium-card h3 a:hover{color:var(--green-deep);text-decoration:underline;text-underline-offset:3px}.affordability-ranking-podium-card small,.affordability-ranking-podium-card>p{color:var(--muted);font-size:var(--fs-2)}.affordability-ranking-podium-card>p{margin:4px 0 var(--space-4)}.affordability-ranking-podium-card small{display:block;margin-top:var(--space-4);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.affordability-ranking-podium-card dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:var(--space-3);gap:var(--space-3);margin:0}.affordability-ranking-podium-card dl div{min-width:0;padding:var(--space-3);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--panel-soft) 82%,transparent)}.affordability-ranking-podium-card dd,.affordability-ranking-podium-card dt{margin:0}.affordability-ranking-podium-card dt{color:var(--muted);font-size:var(--fs-1)}.affordability-ranking-podium-card dd{margin-top:4px;color:var(--ink);font-size:var(--fs-3);font-weight:var(--fw-semibold);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.affordability-ranking-commentary{position:relative}.affordability-ranking-commentary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:var(--space-3);gap:var(--space-3)}.affordability-ranking-commentary-grid article{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;grid-gap:var(--space-3);gap:var(--space-3);min-width:0;padding:var(--space-4);border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--panel)}.affordability-ranking-commentary-grid article>span{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:var(--green-soft);color:var(--green-deep);font-size:var(--fs-1);font-weight:var(--fw-bold)}.affordability-ranking-commentary-grid p{margin:3px 0 0;color:var(--ink-soft);font-size:var(--fs-3);line-height:var(--leading-copy)}.affordability-ranking-table-shell{overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--panel);box-shadow:var(--shadow-sm)}.affordability-ranking-table-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-5);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--line);background:var(--panel-soft)}.affordability-ranking-toolbar-label{display:block;color:var(--ink);font-size:var(--fs-3);font-weight:var(--fw-semibold)}.affordability-ranking-table-toolbar p{max-width:720px;margin:4px 0 0;color:var(--muted);font-size:var(--fs-2);line-height:1.5}.affordability-ranking-period-switch{display:inline-flex;flex:0 0 auto;gap:3px;padding:4px;border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--panel)}.affordability-ranking-period-switch button{min-height:34px;padding:6px 13px;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--ink-soft);cursor:pointer;font:inherit;font-size:var(--fs-2);font-weight:var(--fw-semibold)}.affordability-ranking-period-switch button.is-active:not(:disabled),.affordability-ranking-period-switch button:hover:not(:disabled){background:var(--green-deep);color:#fff}.affordability-ranking-period-switch button:disabled{cursor:not-allowed;opacity:.42}.affordability-ranking-period-switch button:focus-visible{outline:3px solid color-mix(in srgb,var(--green) 35%,transparent);outline-offset:2px}.affordability-ranking-desktop-table{margin:0;border:0;border-radius:0;box-shadow:none}.affordability-ranking-desktop-table:focus-visible{outline:3px solid color-mix(in srgb,var(--green) 35%,transparent);outline-offset:-3px}.affordability-ranking-table{min-width:1130px}.affordability-ranking-table caption{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.affordability-ranking-table td,.affordability-ranking-table th{vertical-align:middle}.affordability-ranking-table th{white-space:nowrap;font-size:var(--fs-1)}.affordability-ranking-table td{color:var(--ink-soft);font-size:var(--fs-2)}.affordability-ranking-table tbody tr:first-child{background:color-mix(in srgb,var(--green-soft) 58%,transparent)}.affordability-ranking-rank{color:var(--ink)!important;font-size:var(--fs-4)!important;font-weight:var(--fw-bold);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.affordability-ranking-area-link{display:inline-block;color:var(--ink);font-weight:var(--fw-semibold);line-height:1.35;text-decoration:none}a.affordability-ranking-area-link:hover{color:var(--green-deep);text-decoration:underline;text-underline-offset:3px}.affordability-ranking-region{display:block;margin-top:3px;color:var(--muted);font-size:var(--fs-1)}.affordability-ranking-ratio span,.affordability-ranking-ratio strong{display:block;white-space:nowrap}.affordability-ranking-ratio strong{color:var(--green-deep);font-size:var(--fs-4);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.affordability-ranking-ratio span{margin-top:3px;color:var(--muted);font-size:var(--fs-1)}.affordability-ranking-movement{display:inline-flex;align-items:center;gap:5px;min-width:max-content;padding:5px 8px;border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--panel);color:var(--ink-soft);font-size:var(--fs-1);font-weight:var(--fw-semibold);line-height:1}.affordability-ranking-movement.is-up{border-color:color-mix(in srgb,var(--green) 38%,var(--line));background:var(--green-soft);color:var(--green-deep)}.affordability-ranking-movement.is-down{border-color:color-mix(in srgb,#a55235 32%,var(--line));background:color-mix(in srgb,#a55235 9%,var(--panel));color:#874127}.affordability-ranking-movement.is-new{border-color:color-mix(in srgb,#295e91 32%,var(--line));background:color-mix(in srgb,#4d88bd 10%,var(--panel));color:#214f79}.affordability-ranking-change{display:inline-block;min-width:max-content;font-weight:var(--fw-semibold);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.affordability-ranking-change.is-lower{color:var(--green-deep)}.affordability-ranking-change.is-higher{color:#874127}.affordability-ranking-change.is-unavailable{color:var(--muted);font-weight:var(--fw-regular)}.affordability-ranking-mobile-list{display:none}.affordability-ranking-pagination{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-4) var(--space-5);border-top:1px solid var(--line);background:var(--panel-soft)}.affordability-ranking-pagination p{margin:0;color:var(--muted);font-size:var(--fs-2)}.affordability-ranking-methodology-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:var(--space-4);gap:var(--space-4)}.affordability-ranking-methodology-grid article{min-width:0;padding:var(--space-5);border:1px solid var(--line);border-radius:var(--radius-card);background:var(--panel)}.affordability-ranking-methodology-icon{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;margin-bottom:var(--space-4);border-radius:12px;background:var(--green-soft);color:var(--green-deep)}.affordability-ranking-limitations h3,.affordability-ranking-methodology-grid h3,.affordability-ranking-source-card h3{margin:0;color:var(--ink);font-size:var(--fs-4)}.affordability-ranking-limitations p,.affordability-ranking-methodology-grid p,.affordability-ranking-source-card p{margin:var(--space-2) 0 0;color:var(--ink-soft);font-size:var(--fs-3);line-height:var(--leading-copy)}.affordability-ranking-source-card{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.8fr);grid-gap:var(--space-6);gap:var(--space-6);margin-top:var(--space-4);padding:var(--space-5);border:1px solid var(--line);border-radius:var(--radius-card);background:var(--panel-soft)}.affordability-ranking-source-links{display:flex;flex-direction:column;justify-content:center;gap:var(--space-2)}.affordability-ranking-source-links a{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);color:var(--green-deep);font-size:var(--fs-2);font-weight:var(--fw-semibold);text-decoration:none}.affordability-ranking-source-links a:hover{border-color:color-mix(in srgb,var(--green) 45%,var(--line));text-decoration:underline;text-underline-offset:3px}.affordability-ranking-limitations{margin-top:var(--space-4);padding:var(--space-5);border-left:4px solid var(--green);border-radius:0 var(--radius-card) var(--radius-card) 0;background:color-mix(in srgb,var(--green-soft) 48%,var(--panel))}.affordability-ranking-limitations h3:not(:first-child){margin-top:var(--space-5)}.affordability-ranking-limitations ul{margin:var(--space-2) 0 0;padding-left:1.25rem;color:var(--ink-soft);font-size:var(--fs-3);line-height:var(--leading-copy)}.affordability-ranking-technical-cta{display:flex;align-items:center;justify-content:space-between;gap:var(--space-6);padding:clamp(24px,4vw,42px);border-radius:var(--radius-card);background:linear-gradient(135deg,var(--green-deep),#0f5445);color:#fff;box-shadow:var(--shadow-md)}.affordability-ranking-technical-cta>div{max-width:760px}.affordability-ranking-technical-cta>div>span{color:#c9e8dc;font-size:var(--fs-2);font-weight:var(--fw-bold);letter-spacing:.05em;text-transform:uppercase}.affordability-ranking-technical-cta h2{margin:var(--space-2) 0 0;color:#fff;font-size:clamp(1.5rem,3vw,2.2rem)}.affordability-ranking-technical-cta p{margin:var(--space-3) 0 0;color:#dcece6;font-size:var(--fs-3);line-height:var(--leading-copy)}.affordability-ranking-technical-cta .ui-btn{flex:0 0 auto;background:#fff;color:var(--green-deep)}.affordability-ranking-related-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:var(--space-4);gap:var(--space-4)}.affordability-ranking-related-grid>a{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;grid-gap:var(--space-3);gap:var(--space-3);min-width:0;padding:var(--space-4);border:1px solid var(--line);border-radius:var(--radius-card);background:var(--panel);color:var(--green-deep);text-decoration:none;transition:border-color .16s ease,transform .16s ease}.affordability-ranking-related-grid>a:hover{border-color:color-mix(in srgb,var(--green) 45%,var(--line));transform:translateY(-2px)}.affordability-ranking-related-grid small,.affordability-ranking-related-grid strong{display:block}.affordability-ranking-related-grid strong{color:var(--ink);font-size:var(--fs-3)}.affordability-ranking-related-grid small{margin-top:4px;color:var(--muted);font-size:var(--fs-2);line-height:1.45}.affordability-ranking-faq-list{overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--panel)}.affordability-ranking-faq-list details+details{border-top:1px solid var(--line)}.affordability-ranking-faq-list summary{position:relative;padding:var(--space-4) 52px var(--space-4) var(--space-5);color:var(--ink);cursor:pointer;font-size:var(--fs-3);font-weight:var(--fw-semibold);list-style:none}.affordability-ranking-faq-list summary::-webkit-details-marker{display:none}.affordability-ranking-faq-list summary:after{position:absolute;top:50%;right:var(--space-5);content:"+";color:var(--green-deep);font-size:1.5rem;line-height:1;transform:translateY(-50%)}.affordability-ranking-faq-list details[open] summary:after{content:"−"}.affordability-ranking-faq-list p{max-width:900px;margin:0;padding:0 var(--space-5) var(--space-5);color:var(--ink-soft);font-size:var(--fs-3);line-height:var(--leading-copy)}.affordability-ranking-disclaimer{display:flex;align-items:center;gap:var(--space-3);margin:0 auto var(--space-6);padding:var(--space-3) var(--space-4);border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--panel-soft);color:var(--muted)}.affordability-ranking-disclaimer p{margin:0;font-size:var(--fs-2)}@media (max-width:980px){.affordability-ranking-methodology-grid,.affordability-ranking-related-grid,.affordability-ranking-top-three{grid-template-columns:1fr}.affordability-ranking-top-three{gap:var(--space-3)}.affordability-ranking-podium-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(230px,.75fr);grid-column-gap:var(--space-5);column-gap:var(--space-5)}.affordability-ranking-podium-card>*{grid-column:1}.affordability-ranking-podium-card dl{grid-column:2;grid-row:1/span 4;align-self:center}.affordability-ranking-source-card{grid-template-columns:1fr}}@media (max-width:760px){.affordability-ranking-page .ui-hero--full{align-items:stretch}.affordability-ranking-hero-leader{align-items:flex-start;flex-direction:column}.affordability-ranking-podium-card{display:block}.affordability-ranking-podium-card dl{margin-top:var(--space-4)}.affordability-ranking-commentary-grid{grid-template-columns:1fr}.affordability-ranking-table-toolbar{align-items:stretch;flex-direction:column;padding:var(--space-4)}.affordability-ranking-period-switch{align-self:flex-start;max-width:100%}.affordability-ranking-desktop-table{display:none}.affordability-ranking-mobile-list{display:grid;grid-gap:var(--space-3);gap:var(--space-3);padding:var(--space-3);background:var(--panel-soft)}.affordability-ranking-mobile-card{min-width:0;padding:var(--space-4);border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--panel)}.affordability-ranking-mobile-card:first-child{border-color:color-mix(in srgb,var(--green) 40%,var(--line));background:linear-gradient(155deg,var(--green-soft),var(--panel) 65%)}.affordability-ranking-mobile-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.affordability-ranking-mobile-rank{display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:32px;padding-inline:9px;border-radius:var(--radius-pill);background:var(--green-deep);color:#fff;font-size:var(--fs-2);font-weight:var(--fw-bold)}.affordability-ranking-mobile-area{display:flex;flex-direction:column;gap:3px;margin-top:var(--space-4)}.affordability-ranking-mobile-area .affordability-ranking-area-link{font-size:var(--fs-5)}.affordability-ranking-mobile-area>span{color:var(--muted);font-size:var(--fs-2)}.affordability-ranking-mobile-card dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:1px;gap:1px;margin:var(--space-4) 0 0;overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--line)}.affordability-ranking-mobile-card dl div{min-width:0;padding:var(--space-3);background:var(--panel)}.affordability-ranking-mobile-card dd,.affordability-ranking-mobile-card dt{margin:0;overflow-wrap:anywhere}.affordability-ranking-mobile-card dt{color:var(--muted);font-size:var(--fs-1)}.affordability-ranking-mobile-card dd{margin-top:5px;color:var(--ink);font-size:var(--fs-3);font-weight:var(--fw-semibold);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.affordability-ranking-pagination{align-items:stretch;flex-direction:column;padding:var(--space-4)}.affordability-ranking-pagination .ui-btn{justify-content:center;width:100%}.affordability-ranking-technical-cta{align-items:stretch;flex-direction:column}.affordability-ranking-technical-cta .ui-btn{align-self:flex-start}}@media (max-width:420px){.affordability-ranking-mobile-card dl,.affordability-ranking-podium-card dl{grid-template-columns:1fr}.affordability-ranking-period-switch{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}.affordability-ranking-period-switch button{min-width:0;padding-inline:7px}.affordability-ranking-mobile-head{align-items:flex-start}.affordability-ranking-movement{white-space:normal}}.afl-page{--green:#12805c;--green-deep:#0a5c47;--green-button:#12805c;--green-button-hover:#0e6b4d;--focus-ring:0 0 0 3px rgba(18,128,92,0.22);--focus-ring-strong:0 0 0 3px rgba(18,128,92,0.36);--afl-s1:#12805c;--afl-s2:#c2410c;--afl-s3:#2563eb;--afl-s4:#7c3aed;--afl-s5:#a16207;--afl-track:#c9d8d1;--afl-muted:#6b7a74;--afl-mint:var(--green-soft,#eef8f4)}.afl-eyebrow{color:var(--green-deep);font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.afl-hero{padding:clamp(20px,3vw,36px);border:1px solid var(--line);border-radius:var(--radius-card,16px);background:linear-gradient(180deg,var(--afl-mint),var(--panel,#fff) 70%)}.afl-hero-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);grid-gap:clamp(24px,4vw,44px);gap:clamp(24px,4vw,44px);align-items:start}.afl-hero-copy{display:flex;flex-direction:column;gap:16px;min-width:0}.afl-hero-copy .ui-hero-title{margin:0;text-wrap:balance}.afl-update{align-self:flex-start;display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:var(--panel,#fff);color:var(--ink-soft);font-size:.8125rem;font-weight:500}.afl-update i{width:8px;height:8px;border-radius:999px;background:var(--green)}.afl-headline{margin:0;color:var(--green-deep);font-size:clamp(1.25rem,2.2vw,1.6rem);font-weight:600;letter-spacing:-.01em;line-height:1.25;text-wrap:balance}.afl-lead{max-width:62ch;margin:0;color:var(--ink-soft);font-size:1.0625rem;line-height:1.6}.afl-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:10px;gap:10px}.afl-stat{display:flex;flex-direction:column;gap:2px;min-width:0;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--panel,#fff)}.afl-stat strong{color:var(--ink);font-size:1.375rem;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:-.01em}.afl-stat span{color:var(--muted-strong);font-size:.8125rem;line-height:1.35}.afl-share{display:flex;flex-direction:column;gap:10px}.afl-share-links{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}.afl-permalink button,.afl-share-links a,.afl-stories a{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 14px;border:1px solid var(--line-strong);border-radius:10px;background:var(--panel,#fff);color:var(--ink);font-size:.9rem;font-weight:500;text-decoration:none;cursor:pointer}.afl-permalink button:hover,.afl-share-links a:hover,.afl-stories a:hover{border-color:var(--green)}.afl-permalink{display:flex;gap:8px}.afl-permalink input{flex:1 1;min-width:0;min-height:44px;padding:0 12px;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink-soft);font-size:.875rem}.afl-meta,.afl-older{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0;color:var(--muted-strong);font-size:.8125rem}.afl-older{padding:10px 12px;border-radius:10px;background:var(--warning-soft);color:var(--ink)}.afl-card,.afl-hero-panel{display:flex;flex-direction:column;gap:12px;min-width:0;padding:18px;border:1px solid var(--line);border-radius:18px;background:var(--panel,#fff);box-shadow:var(--shadow-sm)}.afl-card-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 12px}.afl-card-head strong{font-size:.95rem;font-weight:600}.afl-card-head span,.afl-note{color:var(--muted-strong);font-size:.8125rem}.afl-chart{width:100%;min-width:0}.afl-chart svg{display:block;overflow:visible}.afl-chart-grid{stroke:var(--line);stroke-width:1}.afl-chart-axis{fill:var(--muted-strong);font-size:11px}.afl-chart-marker{stroke:var(--muted);stroke-dasharray:3 4;stroke-width:1}.afl-chart-line{cursor:pointer;transition:opacity .15s ease}.afl-chart-line.is-dim{opacity:.22}.afl-chart-hit{pointer-events:stroke}.afl-chart-label{fill:var(--ink);font-size:12px}.afl-chart-label.is-dim{fill:var(--muted);opacity:.6}.afl-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin:0;padding:0;list-style:none;color:var(--ink-soft);font-size:.8125rem}.afl-legend li{display:inline-flex;align-items:center;gap:6px}.afl-legend i{width:14px;height:4px;border-radius:2px}.afl-stories{display:flex;flex-direction:column;gap:8px;padding-top:12px;border-top:1px solid var(--line)}.afl-stories ul{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}.afl-stories a{border-radius:999px;font-size:.85rem}.afl-stories a[aria-current=page]{border-color:var(--ink);background:var(--ink);color:var(--panel,#fff)}.afl-section-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px 32px}.afl-section-head>div:first-child{display:flex;flex-direction:column;gap:8px;max-width:720px}.afl-section-head h2{margin:0}.afl-section-head p{margin:0;color:var(--ink-soft)}.afl-tint{padding:clamp(20px,3vw,32px);border-radius:var(--radius-card,16px);background:var(--paper)}.afl-month-pick{display:flex;flex-direction:column;align-items:flex-start;gap:6px}.afl-seg{display:inline-flex;flex-wrap:wrap;gap:4px;padding:4px;border-radius:12px;background:var(--surface)}.afl-seg button{min-width:44px;min-height:40px;padding:0 12px;border:0;border-radius:9px;background:transparent;color:var(--ink-soft);font-size:.875rem;font-weight:500;cursor:pointer}.afl-seg button[aria-pressed=true]{background:var(--panel,#fff);color:var(--ink);box-shadow:0 1px 3px rgba(15,31,26,.16)}.afl-two{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);grid-gap:24px;gap:24px;align-items:start}.afl-top-list{display:flex;flex-direction:column;margin:0;padding:0;list-style:none}.afl-top-list li{border-bottom:1px solid var(--line)}.afl-top-list li:last-child{border-bottom:0}.afl-top-list button{display:grid;grid-template-columns:28px minmax(0,1fr) 52px 112px;grid-gap:10px;gap:10px;align-items:center;width:100%;min-height:52px;padding:8px 6px;border:0;border-radius:8px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.afl-top-list button[aria-pressed=true],.afl-top-list li.is-hot button{background:var(--afl-mint)}.afl-rank{color:var(--muted-strong);font-weight:500;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right}.afl-place{display:flex;flex-direction:column;min-width:0}.afl-place strong{color:var(--ink);font-weight:500;overflow-wrap:anywhere}.afl-place span{color:var(--muted-strong);font-size:.75rem}.afl-ratio{color:var(--ink);font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right}.afl-top-list .affordability-ranking-movement{justify-self:end;justify-content:center;min-width:104px}.afl-cities{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:12px;gap:12px}.afl-city{display:flex;flex-direction:column;gap:6px;min-width:0;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--panel,#fff)}.afl-city.is-lead{border-color:var(--green);box-shadow:inset 0 0 0 1px var(--green)}.afl-city h3{margin:0;font-size:1rem;font-weight:600}.afl-city h3 a{color:inherit}.afl-city-pos{color:var(--muted-strong);font-size:.8125rem;font-weight:500}.afl-city-big{font-size:1.625rem;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:-.02em}.afl-city-sub{display:flex;flex-direction:column;gap:2px;color:var(--muted-strong);font-size:.8125rem}.afl-spark{width:100%;height:30px}.afl-compare-pick{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);grid-gap:12px;gap:12px;align-items:end}.afl-field{display:flex;flex-direction:column;gap:6px;min-width:0}.afl-field label{color:var(--ink-soft);font-size:.8125rem;font-weight:500}.afl-field input,.afl-field select{width:100%;min-width:0;min-height:44px;padding:0 12px;border:1px solid var(--line-strong);border-radius:10px;background:var(--panel,#fff);color:var(--ink);font:inherit}.afl-vs{padding-bottom:12px;color:var(--muted-strong);font-size:.875rem;font-weight:500}.afl-error{min-height:1.2em;margin:0;color:var(--negative);font-size:.8125rem}.afl-verdict{margin:0;color:var(--ink);font-size:clamp(1.0625rem,1.8vw,1.25rem);font-weight:500;line-height:1.4}.afl-filters{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr) auto;grid-gap:12px;gap:12px;align-items:end}.afl-check{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-size:.9rem;font-weight:500}.afl-check input{width:18px;height:18px;accent-color:var(--green)}.afl-cta-row{display:flex;justify-content:flex-start}.afl-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.afl-compare-card{padding:6px 18px}.afl-compare-table{width:100%;border-collapse:collapse;font-size:.9375rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.afl-compare-table thead th{padding:12px 0 10px 12px;color:var(--ink);font-size:.9375rem;font-weight:600;text-align:right;vertical-align:bottom}.afl-compare-table tbody th{padding:11px 12px 11px 0;color:var(--muted-strong);font-weight:400;text-align:left}.afl-compare-table tbody td{padding:11px 0 11px 12px;color:var(--ink);font-weight:500;text-align:right;white-space:nowrap}.afl-compare-table tbody tr{border-top:1px solid var(--line)}.afl-dot{display:inline-block;width:10px;height:10px;margin-right:8px;border-radius:999px}.afl-page .ui-hero-title,.afl-page .ui-section-header h2,.afl-section-head h2{font-weight:600;letter-spacing:-.015em}.afl-page .affordability-ranking-table th{font-weight:500}.afl-page .affordability-ranking-table td:first-child,.afl-page .affordability-ranking-table th:first-child{width:56px;text-align:right}.afl-page .affordability-ranking-table th:nth-child(2){width:132px}.afl-page .affordability-ranking-rank{color:var(--muted-strong)!important;font-size:var(--fs-3)!important;font-weight:500}.afl-page .affordability-ranking-area-link{font-weight:500}.afl-page .affordability-ranking-ratio strong{color:var(--ink);font-size:var(--fs-4);font-weight:600}.afl-page .affordability-ranking-change,.afl-page .affordability-ranking-movement{font-weight:500}.afl-page .affordability-ranking-table .affordability-ranking-movement{justify-content:center;min-width:108px}.afl-page .affordability-ranking-mobile-rank{font-weight:600}.afl-page .affordability-ranking-faq summary,.afl-page .affordability-ranking-mobile-card dd{font-weight:500}@media (max-width:1000px){.afl-hero-grid,.afl-two{grid-template-columns:minmax(0,1fr)}.afl-cities,.afl-filters{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:640px){.afl-stats{gap:8px}.afl-stat{padding:10px}.afl-stat strong{font-size:1.15rem}.afl-cities,.afl-compare-pick,.afl-filters{grid-template-columns:minmax(0,1fr)}.afl-vs{padding:0}.afl-top-list button{grid-template-columns:24px minmax(0,1fr) auto;row-gap:4px}.afl-top-list button .afl-place,.afl-top-list button .afl-rank{grid-row:1/span 2}.afl-top-list button .afl-ratio{grid-column:3;grid-row:1}.afl-top-list button .affordability-ranking-movement{grid-column:3;grid-row:2;min-width:0}}@media (prefers-reduced-motion:reduce){.afl-chart-line{transition:none}}