/* Oct 2026 features (commute, neighborhoods, sold map, home-value steps, closing checklist, market report). Uses site.css tokens. */
.commute{margin:40px 0;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);padding:26px}
.commute-head{display:flex;gap:14px;align-items:center}.commute-head h2{margin:4px 0 0}
.commute-ic{flex:none;width:48px;height:48px;border-radius:12px;background:#fff;border:1px solid var(--line);display:grid;place-items:center;font-size:1.5rem}
.tbl-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:12px 0}.tbl-scroll.tall{max-height:520px;overflow-y:auto;border:1px solid var(--line);border-radius:12px}
.commute-table,.count-table{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden;font-size:.95rem}
.commute-table th,.commute-table td,.count-table th,.count-table td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.commute-table tr:first-child th,.count-table tr:first-child th{background:var(--navy);color:#fff;font-size:.82rem;text-transform:uppercase;letter-spacing:.05em;position:sticky;top:0}
.commute-table td b{display:block;color:var(--navy);font-size:1.05rem}.commute-table td span{color:var(--muted);font-size:.85rem}
.count-table td{text-align:right;font-weight:700;color:var(--navy)}
.commute .transit{padding-left:20px}.commute .transit li{margin:8px 0;color:#2a3346}
.commute-more{margin:16px 0 0}
.nbhd-teaser{margin:40px 0}
.prose.wide{max-width:none}.prose .commute-table th,.prose .commute-table td{border:0;border-bottom:1px solid var(--line)}
ul.cols2{columns:2;column-gap:30px}@media (max-width:640px){ul.cols2{columns:1}}
/* neighborhoods */
.nb-top{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:24px;align-items:start}
@media (max-width:760px){.nb-top{grid-template-columns:1fr}}
.mini-map{height:280px;border-radius:var(--radius);border:1px solid var(--line);background:var(--bg);z-index:0}
.multi-map{height:420px;border-radius:var(--radius);border:1px solid var(--line);background:var(--bg);z-index:0}
@media (max-width:640px){.multi-map{height:320px}}
.near-box{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px 20px}.near-box h3{margin-top:0}.near-box ul{padding-left:18px;margin:0 0 8px}
.nearby{gap:16px}.nb-card .nb-commute{margin-top:10px;color:var(--navy);font-size:.88rem;font-weight:600}
.sold-line{background:#eef4ff;border-radius:10px;padding:10px 14px}
/* sold map */
.sold-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:6px 0 18px}
.sold-stats div{background:var(--navy);color:#fff;border-radius:14px;padding:16px 18px}.sold-stats b{display:block;font-size:2rem;line-height:1.1}.sold-stats span{color:#cfdcf5;font-size:.9rem}
@media (max-width:520px){.sold-stats{grid-template-columns:1fr 1fr 1fr;gap:8px}.sold-stats div{padding:12px}.sold-stats b{font-size:1.4rem}.sold-stats span{font-size:.75rem}}
.sold-map{height:560px;border-radius:var(--radius);border:1px solid var(--line);background:var(--bg);z-index:0}
@media (max-width:640px){.sold-map{height:420px}}
.sold-tables{margin-top:30px}.sold-tables h2{margin-top:0}
.leaflet-popup-content{font-family:inherit;font-size:.9rem}.leaflet-container a{color:var(--blue)}
/* multi-step home value */
.hv-intro{margin-bottom:22px}.hv-points{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:8px 18px;color:var(--navy);font-weight:600}
.multistep .step{border:0;padding:0;margin:0}.multistep .step+.step{margin-top:26px;padding-top:22px;border-top:1px dashed var(--line)}
.js .multistep .step+.step{margin-top:0;padding-top:0;border-top:0}
.js .multistep .step:not(.on){display:none}
.step-legend{font-size:1.3rem;font-weight:800;color:var(--navy);margin-bottom:14px;padding:0}
.step-no{display:block;font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:var(--red);margin-bottom:4px}
.step-nav{display:flex;justify-content:space-between;gap:12px;margin-top:20px;flex-wrap:wrap}
.form-grid.two{grid-template-columns:1fr 1fr;gap:14px 16px}
.ms-progress{display:none;list-style:none;padding:0;margin:0 0 10px;gap:6px}
.js .ms-progress{display:flex}
.ms-progress li{flex:1;display:flex;align-items:center;gap:6px;font-size:.78rem;color:var(--muted);min-width:0}
.ms-progress li span{flex:none;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--bg);border:1px solid var(--line);font-weight:700}
.ms-progress li em{font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ms-progress li.done span,.ms-progress li.on span{background:var(--blue);border-color:var(--blue);color:#fff}.ms-progress li.on{color:var(--navy);font-weight:700}
@media (max-width:640px){.ms-progress li em{display:none}.ms-progress li.on em{display:inline}}
.ms-bar{display:none;height:6px;border-radius:9px;background:var(--bg);margin-bottom:22px;overflow:hidden}.js .ms-bar{display:block}
.ms-bar span{display:block;height:100%;width:20%;background:linear-gradient(90deg,var(--blue),var(--red));transition:width .3s}
fieldset.pills{border:0;padding:0;margin:0}fieldset.pills legend{font-weight:600;font-size:.9rem;margin-bottom:8px;color:var(--navy);padding:0}
.pill-row{display:flex;flex-wrap:wrap;gap:8px}
.pill{position:relative;cursor:pointer}.pill input{position:absolute;opacity:0;inset:0}
.pill span{display:inline-block;padding:9px 14px;border:1px solid #cfd6e3;border-radius:999px;background:#fff;font-weight:600;font-size:.93rem;color:var(--ink)}
.pill input:checked+span{background:var(--blue);border-color:var(--blue);color:#fff}.pill input:focus-visible+span{outline:3px solid rgba(0,61,165,.3)}
.opt{color:var(--muted);font-weight:400}
/* closing checklist */
.cl-intro{display:flex;gap:16px;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}.cl-intro p{max-width:62ch;margin-top:0}
.tabs{display:flex;gap:6px;border-bottom:2px solid var(--line);margin:20px 0}
.tab{background:none;border:0;padding:12px 18px;font:inherit;font-weight:700;color:var(--muted);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px}
.tab.active{color:var(--navy);border-color:var(--red)}
.checklist{list-style:none;padding:0;margin:0;counter-reset:ck}
.checklist li{counter-increment:ck;position:relative;padding:14px 16px 14px 58px;border:1px solid var(--line);border-radius:14px;margin-bottom:10px;background:#fff}
.checklist li:before{content:counter(ck);position:absolute;left:16px;top:14px;width:28px;height:28px;border-radius:50%;background:var(--navy);color:#fff;display:grid;place-items:center;font-weight:800;font-size:.85rem}
.checklist label{display:flex;gap:10px;align-items:center;font-weight:700;color:var(--navy);cursor:pointer}
.checklist input{width:18px;height:18px;accent-color:var(--blue)}.checklist p{margin:6px 0 0;color:#2a3346}
.checklist li.checked{background:#f1f8f3}.checklist li.checked .ck-t{text-decoration:line-through;color:var(--muted)}
.disclaimer{margin-top:22px;background:#fff9e8;border:1px solid #f0d58a;border-radius:12px;padding:14px 16px;font-size:.9rem;color:#5c4b12}
.print-only{display:none}
/* market report */
.signup{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:26px;align-items:center;background:linear-gradient(110deg,var(--navy),var(--blue));color:#fff;border-radius:22px;padding:30px}
.signup h2{color:#fff;margin:8px 0}.signup p{color:#dce6fa}.signup a{color:#fff}.signup .badge{background:rgba(255,255,255,.15);color:#fff}
.signup .lead-form{box-shadow:none}.signup .lead-form p,.signup .lead-form a{color:var(--muted)}.signup .lead-form .consent{margin-top:6px}
@media (max-width:820px){.signup{grid-template-columns:1fr;padding:22px}}
.foot-signup{padding:50px 0}
.example-banner{background:#fff9e8;border:2px dashed #e0a100;border-radius:14px;padding:14px 18px;margin-bottom:22px;color:#5c4b12}
.ph-val{background:#fff3c4;color:#6b5a1e;border-radius:6px;padding:0 6px;font-weight:600;font-style:normal}
.report{max-width:760px;margin:0 auto;background:#fff;border:1px solid var(--line);border-radius:18px;padding:28px;box-shadow:var(--shadow)}
.report-head{display:flex;gap:18px;align-items:center;border-bottom:3px solid var(--red);padding-bottom:14px;flex-wrap:wrap}.report-head h2{margin:0}.report-head img{height:70px;width:auto}
.report-lede{font-size:1.05rem}
.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:18px 0}@media (max-width:600px){.kpis{grid-template-columns:1fr 1fr}}
.kpi{border:1px solid var(--line);border-radius:12px;padding:12px}.kpi-l{display:block;font-size:.8rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.kpi b{display:block;margin:6px 0}.kpi-c{font-size:.8rem}
.report-foot{margin-top:20px;border-top:1px solid var(--line);padding-top:12px;font-size:.82rem;color:var(--muted)}
@media print{
 .topbar,.site-header,.site-footer,.foot-signup,.sidebar,.tabs,.print-btn,.print-hide,.hero .breadcrumbs,.skip{display:none!important}
 .hero{background:none!important;color:#000}.hero:before{display:none}.hero h1,.hero p.lead,.hero .eyebrow{color:#000!important}.hero .wrap{padding:0 0 10px!important}
 .layout{display:block}.page-body{padding:0}.tab-panel[hidden]{display:block!important}.print-only{display:block}
 .checklist li{break-inside:avoid;border-color:#999}.checklist li:before{background:#000;-webkit-print-color-adjust:exact;print-color-adjust:exact}
 .tab-panel+.tab-panel{break-before:page}a{color:#000;text-decoration:none}
}

/* ---- glossary (rewritten /buyers/real-estate-terms-glossary/) ---- */
.prose dl.glossary{margin:18px 0 0;display:grid;grid-template-columns:minmax(180px,260px) 1fr;gap:0;border-top:1px solid var(--line,#e5e7eb)}
.prose dl.glossary dt{font-weight:700;padding:12px 16px 12px 0;border-bottom:1px solid var(--line,#e5e7eb)}
.prose dl.glossary dd{margin:0;padding:12px 0;border-bottom:1px solid var(--line,#e5e7eb)}
@media (max-width:640px){.prose dl.glossary{grid-template-columns:1fr}.prose dl.glossary dt{border-bottom:0;padding-bottom:2px}.prose dl.glossary dd{padding-top:0}}
/* second heading inside an agent fun card (Lori: Lake City) — same look as the card's own h3, plus room above */
.fun-card .fun-body h3.fun-subhead{margin:18px 0 8px}

/* ---- findability: Tools for you cards, hero links, related-tools boxes (Oct 2 2026) ---- */
.tools-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.tool-card{display:flex;gap:14px;align-items:flex-start;padding:18px;border:1px solid var(--line);border-radius:14px;background:#fff;text-decoration:none;color:var(--ink);box-shadow:0 6px 18px rgba(14,28,56,.05);transition:transform .15s,box-shadow .15s,border-color .15s}
.tool-card:hover,.tool-card:focus-visible{transform:translateY(-2px);box-shadow:var(--shadow);border-color:var(--blue)}
.tool-ic{flex:0 0 48px;height:48px;border-radius:12px;display:grid;place-items:center;background:#eaf0fb;color:var(--blue)}
.tool-card:nth-child(3n+2) .tool-ic{background:#fdecee;color:var(--red,#dc1c2e)}
.tool-tx{display:flex;flex-direction:column;gap:4px;min-width:0}
.tool-tx b{font-size:1.05rem;line-height:1.3}
.tool-tx small{color:var(--muted);font-size:.93rem;line-height:1.45}
.tool-tx em{font-style:normal;font-weight:700;color:var(--blue);font-size:.93rem;margin-top:2px}
.related-tools{margin-top:36px;padding-top:24px;border-top:1px solid var(--line)}
.related-tools h2{margin:0 0 14px;font-size:1.3rem}
.layout .related-tools .tools-grid.three{grid-template-columns:1fr}
@media (min-width:1100px){.layout .related-tools .tools-grid.three{grid-template-columns:repeat(3,1fr)}.layout .related-tools .tool-card{flex-direction:column}}
.hero-links{display:flex;flex-wrap:wrap;gap:10px 22px;margin:16px 0 0}
.hero-links a{display:inline-flex;align-items:center;gap:7px;color:#fff;font-weight:600;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.45);padding-bottom:2px}
.hero-links a:hover{border-bottom-color:#fff}
.sec-actions{display:flex;flex-wrap:wrap;gap:8px}
.post-signup{margin:36px 0 10px}
.sold-filter{margin:0 0 10px;padding:10px 14px;border-radius:10px;background:#eaf0fb;font-weight:600}
@media (max-width:900px){.tools-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:600px){.tools-grid{grid-template-columns:1fr;gap:10px}.tool-card{padding:14px}.tool-ic{flex-basis:42px;height:42px}.hero-links{flex-direction:column;gap:8px}.sec-actions{width:100%}}

/* Justin's page: subtle hint for the secret game */
.fun-card p.psst{margin-top:10px;font-size:.78rem;color:var(--muted);opacity:.75;display:flex;align-items:center;gap:6px;letter-spacing:.01em}
.psst-joy{width:12px;height:12px;flex:0 0 12px;image-rendering:pixelated;background:
 linear-gradient(var(--red),var(--red)) 4px 0/4px 4px no-repeat,
 linear-gradient(var(--navy),var(--navy)) 5px 4px/2px 4px no-repeat,
 linear-gradient(var(--blue),var(--blue)) 0 8px/12px 4px no-repeat}

/* Lea's & Lori's pages: hint icons for their secret games */
.placeholder p.psst{margin-top:10px;font-size:.78rem;color:var(--muted);opacity:.8;display:flex;align-items:center;gap:6px}
.psst-flag{width:12px;height:12px;flex:0 0 12px;background:
 linear-gradient(var(--red),var(--red)) 3px 0/7px 5px no-repeat,
 linear-gradient(var(--navy),var(--navy)) 2px 0/1.5px 12px no-repeat,
 linear-gradient(#5aa04a,#5aa04a) 0 10px/12px 2px no-repeat}
.psst-salt{width:10px;height:12px;flex:0 0 10px;border-radius:5px 5px 2px 2px;background:
 linear-gradient(#b9c2cf,#b9c2cf) 0 0/10px 4px no-repeat,
 linear-gradient(#fff,#fff) 1px 5px/8px 7px no-repeat,#c9d2e3}

/* 'Play my game' chip on agent fun-fact cards */
.play-chip{display:inline-flex;align-items:center;gap:8px;margin:12px 0 2px;padding:8px 14px 8px 8px;border:2px solid var(--accent,var(--blue));border-radius:999px;background:#fff;color:var(--navy);font:inherit;font-weight:800;font-size:.9rem;cursor:pointer;box-shadow:0 3px 0 var(--accent,var(--blue));transition:transform .12s,box-shadow .12s}
.play-chip small{font-weight:600;color:var(--muted);font-size:.8rem}
.play-ic{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:var(--accent,var(--blue));color:#fff;font-size:.7rem;padding-left:2px}
.play-chip:hover,.play-chip:focus-visible{transform:translateY(-2px) rotate(-1deg);box-shadow:0 5px 0 var(--accent,var(--blue))}
.play-chip:active{transform:translateY(2px);box-shadow:0 1px 0 var(--accent,var(--blue))}
.placeholder .play-chip{display:flex;width:max-content;max-width:100%}

/* Our Team page: Team arcade strip */
.arcade{padding:0 0 46px}
.arcade .wrap{background:linear-gradient(135deg,var(--navy),#1f3a6e);border-radius:20px;padding:22px 24px;color:#fff}
.arcade-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;margin-bottom:14px}.arcade-head .eyebrow{color:var(--yellow,#ffd23f);width:100%}
.arcade-head h2{margin:0;color:#fff}.arcade-head p{margin:0;color:#c9d6ee;font-size:.95rem}
.arcade-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.arcade-card{display:flex;gap:12px;align-items:center;background:#fff;color:var(--navy);border-radius:14px;padding:12px 14px;text-decoration:none;border-bottom:4px solid var(--accent);transition:transform .12s}
.arcade-card:hover,.arcade-card:focus-visible{transform:translateY(-3px);text-decoration:none}
.arcade-ic{font-size:1.7rem;width:48px;height:48px;flex:0 0 48px;border-radius:12px;background:var(--bg,#f4f6fa);display:flex;align-items:center;justify-content:center}
.arcade-txt{display:flex;flex-direction:column;gap:2px;font-size:.85rem;color:var(--muted);line-height:1.35}.arcade-txt b{color:var(--navy);font-size:1rem}.arcade-txt em{font-style:normal;font-weight:800;color:var(--accent);font-size:.82rem}
@media (max-width:860px){.arcade-grid{grid-template-columns:1fr}.arcade .wrap{border-radius:0;padding:20px 18px}}

/* Photographer credit, kept with its photo: overlay in the hero corner, or a caption under an inline photo */
.photo-credit{font-size:.72rem;color:var(--muted);text-decoration:none;letter-spacing:.01em}
.photo-credit:hover{text-decoration:underline}
.photo-credit-hero{position:absolute;right:10px;bottom:8px;color:rgba(255,255,255,.88);background:rgba(14,28,56,.45);padding:2px 8px;border-radius:999px;line-height:1.5;z-index:1}
.photo-credit-hero:hover{color:#fff}
figure.credited{margin:0 0 1em}figure.credited img{display:block;margin:0}figure.credited figcaption{margin-top:4px;text-align:right}
@media (max-width:600px){.photo-credit-hero{right:6px;bottom:6px;font-size:.68rem}}

/* Lake City: 'Did you know?' (1944 B-24 on Lake Pepin) */
.dyk{margin:0 0 40px;border:1px solid var(--line);border-left:5px solid var(--red);border-radius:var(--radius);background:#fff;padding:22px 24px;box-shadow:0 6px 18px rgba(14,28,56,.05)}
.dyk-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:24px;align-items:start}
.dyk h2{margin:8px 0 10px}.dyk p{margin:0 0 10px}
.dyk-src{font-size:.82rem;color:var(--muted)}.dyk-src a{white-space:normal}
.dyk-map{margin:0}.pin-map{height:300px;border-radius:var(--radius);border:1px solid var(--line);background:var(--bg);z-index:0}
.dyk-map figcaption{font-size:.78rem;color:var(--muted);margin-top:6px}
@media (max-width:860px){.dyk-grid{grid-template-columns:1fr}.dyk{padding:18px 16px}.pin-map{height:240px}}

/* Sold map: listing side (red) vs buyer side (blue) */
.sold-stats.s4{grid-template-columns:repeat(4,1fr)}
.sold-stats .st-l{background:var(--red)}.sold-stats .st-b{background:var(--blue)}
@media (max-width:640px){.sold-stats.s4{grid-template-columns:1fr 1fr}}
.map-legend{display:flex;flex-wrap:wrap;gap:6px 18px;margin:0 0 10px;font-size:.88rem;font-weight:600;color:var(--navy)}
.map-legend span{display:inline-flex;align-items:center;gap:7px}
.map-legend .dot{width:13px;height:13px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #c9d2e3;display:inline-block}
.dot-l{background:var(--red)}.dot-b{background:var(--blue)}
.side-map{margin:44px 0 10px;padding-top:26px;border-top:1px solid var(--line)}.side-map h2{margin:8px 0 8px}
.sold-map-side{height:440px}
@media (max-width:640px){.sold-map-side{height:360px}}

/* Our Team: 'Behind the scenes' support row (below the four agent cards) */
.support-row{margin-top:26px;padding-top:20px;border-top:1px solid var(--line)}
.support-list{display:flex;flex-wrap:wrap;gap:14px;margin-top:10px}
.support-card{display:flex;align-items:center;gap:16px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 20px 14px 14px;box-shadow:0 6px 18px rgba(14,28,56,.05);max-width:560px}
.support-card img{width:88px;height:88px;border-radius:50%;object-fit:cover;display:block;flex:0 0 88px}
.support-card .role{display:block;color:var(--red);font-weight:700;font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;line-height:1.35;margin-bottom:2px}
.support-card h3{margin:0 0 2px}.support-card p{margin:0;color:var(--muted);font-size:.92rem}
@media (max-width:520px){.support-card{padding:12px;gap:12px;width:100%}.support-card img{width:68px;height:68px;flex-basis:68px}}

/* merged Homes We've Sold page (Oct 2026) */
.sold-page .sold-search-chips{margin-top:28px}
/* map first: compact hero + stats on the merged sold page */
.sold-hero .wrap{padding:44px 20px 36px}
.sold-page.page-body{padding-top:30px}
@media (max-width:640px){
 .sold-hero .wrap{padding:20px 20px 18px}.sold-hero .eyebrow{display:none}.sold-hero h1{margin-bottom:6px}.sold-hero p.lead{font-size:.95rem;margin:0}
 .sold-page.page-body{padding-top:14px}
 .sold-page .sold-stats.s4{grid-template-columns:repeat(4,1fr);gap:6px;margin:0 0 10px}
 .sold-page .sold-stats.s4 div{padding:8px 7px;border-radius:10px}
 .sold-page .sold-stats.s4 b{font-size:1.15rem}
 .sold-page .sold-stats.s4 span{display:block;font-size:.64rem;line-height:1.2}
 .sold-page .map-legend{display:flex;flex-wrap:wrap;gap:4px 14px;margin:0 0 8px;font-size:.85rem}
}
/* sold page: seller/buyer tiles are on/off switches for their map pins */
.sold-stats .sold-toggle{position:relative;display:flex;flex-direction:column;justify-content:flex-start;width:100%;border:0;margin:0;font:inherit;color:#fff;text-align:left;border-radius:14px;padding:16px 46px 16px 18px;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:opacity .15s,filter .15s,box-shadow .15s;box-shadow:0 0 0 3px rgba(255,255,255,.0)}
.sold-stats .sold-toggle:hover{filter:brightness(1.08)}
.sold-stats .sold-toggle:focus-visible{outline:3px solid var(--navy);outline-offset:2px}
.sold-stats .sold-toggle .sw{position:absolute;top:12px;right:12px;width:30px;height:17px;border-radius:9px;background:rgba(255,255,255,.95)}
.sold-stats .sold-toggle .sw::after{content:"";position:absolute;top:2px;left:15px;width:13px;height:13px;border-radius:50%;background:currentColor;transition:left .15s}
.sold-stats .st-l .sw::after{background:var(--red)}.sold-stats .st-b .sw::after{background:var(--blue)}
.sold-stats .sold-toggle[aria-pressed="false"]{opacity:.42;filter:grayscale(.7)}
.sold-stats .sold-toggle[aria-pressed="false"] span,.sold-stats .sold-toggle[aria-pressed="false"] b{text-decoration:line-through;text-decoration-thickness:2px}
.sold-stats .sold-toggle[aria-pressed="false"] .sw{background:rgba(255,255,255,.45)}
.sold-stats .sold-toggle[aria-pressed="false"] .sw::after{left:2px;background:#555}
.sold-map.off-l .pin-l,.sold-map.off-b .pin-b{display:none}
.sold-tip{font-size:.85rem;color:var(--muted,#5a6577);margin:-8px 0 10px}
.sold-none{font-weight:600}
@media (max-width:640px){
 .sold-page .sold-stats.s4 .sold-toggle{padding:8px 7px;border-radius:10px}
 .sold-stats .sold-toggle .sw{top:6px;right:6px;width:22px;height:12px}
 .sold-stats .sold-toggle .sw::after{top:2px;left:12px;width:8px;height:8px}
 .sold-stats .sold-toggle[aria-pressed="false"] .sw::after{left:2px}
 .sold-page .sold-stats.s4 .sold-toggle b{padding-right:20px}
 .sold-tip{font-size:.75rem;margin:-4px 0 8px}
}
/* agent pages: game tile (4th 'fun stuff' card; scripts/games.py game_tile) */
.game-tile{display:flex;flex-direction:column;gap:10px;background:linear-gradient(170deg,#fff 50%,color-mix(in srgb,var(--accent,var(--blue)) 10%,#fff))}
.game-tile .gt-scene{border-radius:12px;background:color-mix(in srgb,var(--accent,var(--blue)) 8%,#f6f8fc);color:var(--navy);padding:6px}
.game-tile .gs{display:block;width:100%;height:auto;max-height:118px}
.game-tile .gt-head{display:flex;align-items:center;gap:10px}
.game-tile .game-ic{font-size:2rem;line-height:1}
.game-tile .gt-eyebrow{display:block;font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--accent,var(--blue))}
.game-tile h3{margin:0}
.game-tile .fun-body{display:flex;flex-direction:column;flex:1;gap:8px}
.game-tile .fun-body p{margin:0}
.game-tile .gt-meta{list-style:none;margin:0;padding:0;display:grid;gap:4px;font-size:.88rem;color:var(--muted)}
.game-tile .gt-meta li{display:flex;gap:7px;align-items:baseline;margin:0}
.game-tile .gt-best{color:var(--navy);font-weight:600}
.game-tile .gt-touch{display:none!important}
@media (hover:none),(pointer:coarse){.game-tile .gt-kb{display:none!important}.game-tile .gt-touch{display:flex!important}}
.game-tile p.gt-secret{margin-top:0;font-size:.8rem}
.game-tile .game-play{margin-top:auto;width:100%;min-height:52px;font-size:1.05rem;color:#fff;background:var(--accent,var(--red));border:0;border-radius:12px;box-shadow:0 4px 0 color-mix(in srgb,var(--accent,var(--red)) 70%,#000)}
.game-tile .game-play:hover,.game-tile .game-play:focus-visible{filter:brightness(1.08);transform:translateY(-1px)}
.game-tile .game-play:active{transform:translateY(3px);box-shadow:0 1px 0 color-mix(in srgb,var(--accent,var(--red)) 70%,#000)}
@media (prefers-reduced-motion:no-preference){
 .gs-snake .gs-body{animation:gsSnake 2.4s ease-in-out infinite alternate}.gs-snake .gs-food{animation:gsPop 1.2s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:center}
 .gs-salt .gs-table{animation:gsTilt 3s ease-in-out infinite alternate;transform-origin:120px 100px}
 .gs-golf .gs-ball{animation:gsRoll 3.2s ease-in-out infinite}.gs-golf .gs-flag{animation:gsFlag 1s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:left center}
 .gs-dance .gs-arrows use{transform-box:fill-box;animation:gsRise 1.6s ease-in-out infinite alternate}.gs-dance .gs-arrows g:nth-child(2) use{animation-delay:.4s}.gs-dance .gs-arrows g:nth-child(3) use{animation-delay:.8s}.gs-dance .gs-arrows g:nth-child(4) use{animation-delay:1.2s}
}
@keyframes gsSnake{to{transform:translateX(16px)}}@keyframes gsPop{to{transform:scale(1.12)}}
@keyframes gsTilt{from{transform:rotate(-4deg)}to{transform:rotate(4deg)}}
@keyframes gsRoll{0%,15%{transform:translate(0,0)}55%{transform:translate(70px,10px)}85%,100%{transform:translate(140px,-10px);opacity:.0}}
@keyframes gsFlag{to{transform:scaleX(.8)}}
@keyframes gsRise{to{transform:translateX(10px)}}
/* client events (scripts/events.py) */
.ev-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.ev-tile{display:flex;background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden;box-shadow:0 2px 12px rgba(20,40,75,.06);height:100%}
.ev-art{position:relative;overflow:hidden;flex:0 0 38%;display:flex;align-items:center;justify-content:center;padding:18px 14px 30px}
.ev-spring .ev-art{background:linear-gradient(150deg,#003da5,#0b2a5b)}.ev-fall .ev-art{background:linear-gradient(150deg,#dc1c2e,#9e1220)}
.ev-art svg{width:100%;max-width:150px;height:auto}
.ev-season{position:absolute;left:12px;bottom:10px;font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#fff;background:rgba(255,255,255,.18);padding:3px 9px;border-radius:999px}
.ev-tx{padding:18px 20px;display:flex;flex-direction:column;gap:6px}
.ev-tx h3{margin:0}.ev-tx p{margin:0}
.ev-who{font-size:.75rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--blue)}.ev-fall .ev-who{color:var(--red)}
.ev-where{font-size:.9rem;color:var(--muted);font-weight:600}
.ev-more{margin-top:auto;padding-top:6px;font-weight:700}
.ev-grid-page{grid-template-columns:1fr;margin:24px 0}.ev-detail{scroll-margin-top:110px}.ev-grid-page .ev-tx p+p{margin-top:6px}
.ev-partner{display:flex;flex-wrap:wrap;gap:18px 28px;align-items:center;justify-content:space-between;background:linear-gradient(135deg,var(--navy),#1f3a6e);color:#fff;border-radius:20px;padding:24px 26px}
.ev-partner h2{color:#fff;margin:6px 0 8px}.ev-partner p{margin:0;color:#d6e0f2;max-width:60ch}
.ev-partner-cta{display:flex;flex-wrap:wrap;gap:10px}.ev-partner .btn-ghost{background:#fff}
@media (max-width:860px){.ev-grid{grid-template-columns:1fr}}
@media (max-width:520px){.ev-tile{flex-direction:column}.ev-art{flex-basis:auto;padding:16px 14px 34px}.ev-art svg{max-width:120px}.ev-tx{padding:16px}}
/* taco magic (events Taco Tuesday art): 6.5s loop; reduced motion = static taco */
.ev-magic{overflow:visible}.ev-magic .tm-wand,.ev-magic .tm-poof,.ev-magic .tm-crumbs{opacity:0}
@media (prefers-reduced-motion:no-preference){
 .ev-magic .tm-wand{transform-box:view-box;animation:tmWand 6.5s ease-in-out infinite}
 .ev-magic .tm-star{transform-box:fill-box;transform-origin:center;animation:tmStar 6.5s linear infinite}
 .ev-magic .tm-taco{transform-box:fill-box;transform-origin:center 70%;animation:tmTaco 6.5s ease-in-out infinite}
 .ev-magic .tm-poof{transform-box:fill-box;transform-origin:center;animation:tmPoof 6.5s ease-out infinite}
 .ev-magic .tm-crumbs{animation:tmCrumbs 6.5s ease-out infinite}
}
@keyframes tmWand{0%{opacity:0;transform:translate(150px,-40px) rotate(25deg)}6%{opacity:1}20%{transform:translate(66px,26px) rotate(0)}24%{transform:translate(63px,31px) rotate(-14deg)}28%{opacity:1;transform:translate(66px,26px) rotate(0)}44%{opacity:0;transform:translate(150px,-40px) rotate(25deg)}100%{opacity:0;transform:translate(150px,-40px) rotate(25deg)}}
@keyframes tmStar{0%,18%{transform:scale(1) rotate(0)}24%{transform:scale(1.8) rotate(45deg)}30%,100%{transform:scale(1) rotate(90deg)}}
@keyframes tmTaco{0%,24%{opacity:1;transform:scale(1)}27%{opacity:1;transform:scale(1.08)}32%{opacity:0;transform:scale(.2)}90%{opacity:0;transform:scale(.6)}97%,100%{opacity:1;transform:scale(1)}}
@keyframes tmPoof{0%,24%{opacity:0;transform:scale(.2)}28%{opacity:1;transform:scale(1.25)}40%{opacity:0;transform:scale(1.8)}100%{opacity:0;transform:scale(1.8)}}
@keyframes tmCrumbs{0%,30%{opacity:0;transform:translateY(-10px)}36%{opacity:1;transform:translateY(0)}84%{opacity:1;transform:translateY(0)}90%,100%{opacity:0;transform:translateY(0)}}
/* bowling magic (events spring art): 8.5s loop; reduced motion = static ball + standing pins */
.ev-bowl{overflow:visible}.ev-bowl .bm-hand{opacity:0}
@media (prefers-reduced-motion:no-preference){
 .ev-bowl .bm-ball{transform-box:fill-box;transform-origin:center;animation:bmBall 8.5s linear infinite}
 .ev-bowl .bm-pin{transform-box:fill-box;transform-origin:50% 100%}
 .ev-bowl .bm-pa{animation:bmPa 8.5s ease-out infinite}.ev-bowl .bm-pb{animation:bmPb 8.5s ease-out infinite}.ev-bowl .bm-pc{animation:bmPc 8.5s ease-in-out infinite}
 .ev-bowl .bm-hand{animation:bmHand 8.5s ease-in-out infinite}
}
@keyframes bmBall{0%{opacity:1;transform:translateX(-80px) rotate(0)}18%{transform:translateX(4px) rotate(400deg)}32%{opacity:1;transform:translateX(110px) rotate(800deg)}33%,99%{opacity:0;transform:translateX(110px) rotate(800deg)}100%{opacity:0;transform:translateX(-80px) rotate(0)}}
@keyframes bmPa{0%,18%{opacity:1;transform:rotate(0)}25%{transform:rotate(92deg)}27%{transform:rotate(86deg)}29%,92%{opacity:1;transform:rotate(90deg)}94%{opacity:0;transform:rotate(90deg)}96%{opacity:0;transform:rotate(0)}100%{opacity:1;transform:rotate(0)}}
@keyframes bmPb{0%,19%{opacity:1;transform:translate(0,0) rotate(0)}31%{opacity:0;transform:translate(30px,-38px) rotate(230deg)}94%{opacity:0;transform:translate(30px,-38px) rotate(230deg)}96%{opacity:0;transform:translate(0,0) rotate(0)}100%{opacity:1;transform:translate(0,0) rotate(0)}}
@keyframes bmPc{0%,21%{opacity:1;transform:rotate(0)}24%{transform:rotate(13deg)}27%{transform:rotate(-10deg)}30%{transform:rotate(7deg)}33%{transform:rotate(-5deg)}36%{transform:rotate(3deg)}39%,52%{transform:rotate(0)}54%{transform:rotate(-10deg)}60%{transform:rotate(-96deg)}62%,92%{opacity:1;transform:rotate(-90deg)}94%{opacity:0;transform:rotate(-90deg)}96%{opacity:0;transform:rotate(0)}100%{opacity:1;transform:rotate(0)}}
@keyframes bmHand{0%,40%{opacity:0;transform:translateX(50px)}42%{opacity:1}50%{transform:translateX(5px)}53%{transform:translateX(-6px)}56%{transform:translateX(5px)}66%{opacity:1;transform:translateX(50px)}68%,100%{opacity:0;transform:translateX(50px)}}

/* Riggott credit on town-card photos (card is a link, so the credit is plain text) */
.town-card .photo-credit-card{position:absolute;top:8px;right:8px;z-index:1;font-style:normal;font-size:.66rem;font-weight:500;line-height:1.5;color:rgba(255,255,255,.9);background:rgba(14,28,56,.5);padding:1px 7px;border-radius:999px;text-decoration:none!important}
/* Tool cards: every card in a row is the same height and each link sits on the bottom edge (Justin, Oct 3 2026) */
.tools-grid{align-items:stretch}
.tool-card{align-items:stretch;height:100%;box-sizing:border-box}
.tool-card .tool-ic{align-self:flex-start}
.tool-card .tool-tx{flex:1 1 auto}
.tool-card .tool-tx em{margin-top:auto;padding-top:6px}
/* Flip portrait (agent pages): hover / tap / keyboard focus flips to a back side (config: FLIP_BACKS in site_data.py) */
.flip-portrait{perspective:1400px}
.flip-portrait .flip-inner{position:relative;transform-style:preserve-3d;transition:transform .7s cubic-bezier(.3,.7,.3,1)}
.flip-portrait.is-flipped .flip-inner{transform:rotateY(180deg)}
.flip-portrait .flip-face{-webkit-backface-visibility:hidden;backface-visibility:hidden}
.flip-portrait .flip-front{position:relative;cursor:pointer;border-radius:24px;outline:none}
.flip-portrait .flip-front:focus-visible img{outline:3px solid #fff;outline-offset:3px}
.flip-portrait .flip-hint{position:absolute;left:14px;top:14px;padding:4px 10px;border-radius:999px;background:rgba(255,255,255,.94);color:var(--navy);font-weight:800;font-size:.78rem;line-height:1.4;box-shadow:0 4px 10px rgba(0,0,0,.25);transform:rotate(-2deg);pointer-events:none;white-space:nowrap}
.flip-portrait .fh-touch{display:none}
@media (any-hover:none){.flip-portrait .fh-mouse{display:none}.flip-portrait .fh-touch{display:inline}}
.flip-portrait .flip-back{position:absolute;inset:0;transform:rotateY(180deg) rotate(2deg);background:#fff;border-radius:24px;box-shadow:0 30px 60px rgba(0,0,0,.35);padding:12px;display:flex;flex-direction:column;gap:8px;color:var(--ink);box-sizing:border-box}
.flip-portrait .flip-cap{margin:0;font-weight:800;font-size:1rem;color:var(--navy);text-align:center;line-height:1.3}
.flip-portrait .flip-media{flex:1 1 auto;min-height:0;border-radius:14px;overflow:hidden;background:#f3f5f9}
.flip-portrait .flip-media iframe{display:block;width:100%;height:100%;border:0}
.flip-portrait .flip-pic img{display:block;width:100%;height:100%;object-fit:cover;object-position:center;border:0;border-radius:0;box-shadow:none;transform:none;image-rendering:auto}
.flip-portrait .flip-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.flip-portrait .flip-link{font-size:.82rem;font-weight:700;color:var(--blue);text-decoration:none}
.flip-portrait .flip-close{margin-left:auto;font:inherit;font-size:.82rem;font-weight:700;color:#fff;background:var(--navy);border:0;border-radius:999px;padding:6px 12px;cursor:pointer}
.flip-portrait .flip-close:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
@media (prefers-reduced-motion:reduce){
 .flip-portrait .flip-inner,.flip-portrait.is-flipped .flip-inner{transform:none;transition:none}
 .flip-portrait .flip-face{-webkit-backface-visibility:visible;backface-visibility:visible;transition:opacity .35s ease,visibility .35s}
 .flip-portrait .flip-back{transform:rotate(-2deg);opacity:0;visibility:hidden}
 .flip-portrait.is-flipped .flip-back{opacity:1;visibility:visible}
 .flip-portrait.is-flipped .flip-front{opacity:0}
}
.flip-portrait .flip-back:focus{outline:none}
.flip-portrait .flip-media[data-flip-src]{background:#f7f7f9;position:relative}
.flip-portrait .flip-media[data-flip-src] iframe{position:absolute;left:0;top:0;max-width:none}
.has-mouse .flip-portrait .fh-mouse{display:inline}.has-mouse .flip-portrait .fh-touch{display:none}

/* Flip portrait hardening (Oct 3 2026, Chrome/Windows report):
   1) pure-CSS :hover flips it with no JS at all (JS only adds click/tap/keyboard + lazy iframe; .flip-quiet = just closed via button);
   2) the hidden face is also visibility:hidden from the flip's midpoint, so the right side shows even if a GPU ignores backface-visibility. */
.flip-portrait:hover:not(.flip-quiet) .flip-inner{transform:rotateY(180deg)}
.flip-portrait .flip-front{transform:rotateY(0deg);transition:visibility 0s linear .3s}
.flip-portrait .flip-back{visibility:hidden;transition:visibility 0s linear .3s}
.flip-portrait.is-flipped .flip-front,.flip-portrait:hover:not(.flip-quiet) .flip-front{visibility:hidden}
.flip-portrait.is-flipped .flip-back,.flip-portrait:hover:not(.flip-quiet) .flip-back{visibility:visible}
.flip-portrait .flip-front img,.flip-portrait .flip-front .sticker,.flip-portrait .flip-front .flip-hint{-webkit-backface-visibility:hidden;backface-visibility:hidden}
@media (prefers-reduced-motion:reduce){
 .flip-portrait:hover:not(.flip-quiet) .flip-inner{transform:none}
 .flip-portrait .flip-front{transform:none;transition:opacity .35s ease,visibility 0s linear .35s}
 .flip-portrait .flip-back{transition:opacity .35s ease,visibility 0s linear 0s}
 .flip-portrait:hover:not(.flip-quiet) .flip-back{opacity:1}
 .flip-portrait:hover:not(.flip-quiet) .flip-front{opacity:0}
}

/* Lori's cardinal (Oct 3 2026): perched on the crossbar of the T in 'The fun stuff'. Anchored to the text baseline (.cb-base is a
   zero-size inline-block at the T's start), lifted by the font's cap height, so it stays on the T at any width or font. Faces right. */
.cb-t{position:relative}
.cb-base{display:inline-block;position:relative;width:0;height:0;vertical-align:baseline}
.cb-bird{position:absolute;left:-.27em;bottom:calc(.71em - .153em);bottom:calc(1cap - .153em);width:1.036em;height:.95em;pointer-events:none}
.cb-bird svg{display:block;width:100%;height:100%;transform:scaleX(-1)}
.cb-bird .cb-head{transform-box:view-box;transform-origin:19px 17px;animation:cb-tilt 18s ease-in-out 6s infinite}
@keyframes cb-tilt{0%,90%,100%{transform:none}93%,96%{transform:rotate(-8deg)}}
@media (prefers-reduced-motion:reduce){.cb-bird .cb-head{animation:none}}

/* Lori's pixel cats in a cat tree (Oct 3 2026), floated beside the Kolbe/cats text in her 'When I'm not working' card.
   Art: scripts/art/cat_tree.py. Names show on hover / tap (focus). */
.fun-body.has-cats::after{content:"";display:block;clear:both}
.cat-tree{float:right;position:relative;width:120px;margin:2px 0 6px 12px;line-height:0;border-radius:8px;cursor:default;-webkit-tap-highlight-color:transparent}
.cat-tree:focus{outline:none}.cat-tree:focus-visible{outline:2px solid var(--accent,#003da5);outline-offset:3px}
.cat-tree .ct-svg{display:block;width:100%;height:auto;image-rendering:pixelated}
.ct-name{position:absolute;line-height:1;font-size:.66rem;font-weight:700;letter-spacing:.02em;color:#fff;background:rgba(18,32,64,.86);padding:3px 6px;border-radius:999px;white-space:nowrap;
  opacity:0;transform:translateY(3px);transition:opacity .2s,transform .2s;pointer-events:none}
.ct-name-s{left:2%;top:34%}.ct-name-a{right:-2%;top:73%}
.cat-tree:hover .ct-name,.cat-tree:focus-visible .ct-name,.cat-tree.ct-show .ct-name{opacity:1;transform:none}
.ct-sophie{transform-box:fill-box;transform-origin:50% 100%;animation:ct-breathe 3.8s ease-in-out infinite}
@keyframes ct-breathe{0%,100%{transform:none}50%{transform:scale(1.03,1.08)}}
.ct-z{animation:ct-z 3.8s ease-in-out infinite}
@keyframes ct-z{0%{opacity:0;transform:translate(0,1px)}25%{opacity:.9}75%{opacity:0;transform:translate(1px,-2px)}100%{opacity:0}}
.ct-lids{opacity:0;animation:ct-blink 6.5s step-end infinite}
@keyframes ct-blink{0%{opacity:0}93%{opacity:1}96%{opacity:0}}
.ct-tail-b{opacity:0;animation:ct-flick-b 9s step-end 1s infinite}.ct-tail-a{animation:ct-flick-a 9s step-end 1s infinite}
@keyframes ct-flick-b{0%{opacity:0}80%{opacity:1}84%{opacity:0}87%{opacity:1}90%{opacity:0}}
@keyframes ct-flick-a{0%{opacity:1}80%{opacity:0}84%{opacity:1}87%{opacity:0}90%{opacity:1}}
@media (max-width:600px){.cat-tree{width:108px;margin-left:10px}}
@media (prefers-reduced-motion:reduce){.ct-sophie,.ct-z,.ct-lids,.ct-tail-a,.ct-tail-b{animation:none}.ct-z{opacity:.8}.ct-name{transition:none}}

/* Justin's pixel dogs (Oct 3 2026; v2 128x56 grid shown at 256px, 2 screen px per art px): Butters, Yumi and Kawaii playing with a tennis ball, under the text in his 'When I'm not working' card.
   Art: scripts/art/dog_yard.py. Name pills reuse .ct-name (hover / keyboard focus / tap). */
.dog-yard{position:relative;width:256px;max-width:100%;margin:6px 0 14px;line-height:0;border-radius:8px;cursor:default;-webkit-tap-highlight-color:transparent}
.dog-yard:focus{outline:none}.dog-yard:focus-visible{outline:2px solid var(--accent,#003da5);outline-offset:3px}
.dog-yard .dy-svg{display:block;width:100%;height:auto;image-rendering:pixelated}
.dy-name-b{left:5%;top:84%}.dy-name-y{left:42%;top:84%}.dy-name-k{right:6%;top:84%}
.dog-yard:hover .ct-name,.dog-yard:focus-visible .ct-name,.dog-yard.ct-show .ct-name{opacity:1;transform:none}
.dy-ball-x{animation:dy-x 4.4s linear infinite}
@keyframes dy-x{0%,100%{transform:none}50%{transform:translate(41px,0)}}
.dy-ball-y{animation:dy-y 4.4s infinite}
@keyframes dy-y{0%{transform:none;animation-timing-function:cubic-bezier(.2,.7,.4,1)}25%{transform:translate(0,-25px);animation-timing-function:cubic-bezier(.6,0,.8,.3)}
  50%{transform:none;animation-timing-function:cubic-bezier(.2,.7,.4,1)}75%{transform:translate(0,-25px);animation-timing-function:cubic-bezier(.6,0,.8,.3)}100%{transform:none}}
.dy-butters{animation:dy-hop-b 4.4s ease-in-out infinite}@keyframes dy-hop-b{0%,100%{transform:translate(0,-2px)}7%,93%{transform:none}}
.dy-kawaii{animation:dy-hop-k 4.4s ease-in-out infinite}@keyframes dy-hop-k{0%,44%,56%,100%{transform:none}50%{transform:translate(0,-2px)}}
.dy-yumi{animation:dy-hop-y 4.4s ease-in-out infinite}@keyframes dy-hop-y{0%,18%,32%,68%,82%,100%{transform:none}25%,75%{transform:translate(0,-2px)}}
.dy-tail-b{opacity:0;animation:dy-wag-b .7s step-end infinite}.dy-tail-a{animation:dy-wag-a .7s step-end infinite}
.dy-yumi .dy-tail-a,.dy-yumi .dy-tail-b{animation-delay:.2s}.dy-kawaii .dy-tail-a,.dy-kawaii .dy-tail-b{animation-duration:1.1s;animation-delay:.4s}
@keyframes dy-wag-b{0%{opacity:0}50%{opacity:1}}@keyframes dy-wag-a{0%{opacity:1}50%{opacity:0}}
@media (prefers-reduced-motion:reduce){.dy-ball-x,.dy-ball-y,.dy-dog,.dy-tail-a,.dy-tail-b{animation:none}}

/* Home hero "more hype" (Oct 3 2026): deeper overlay, bigger headline with an accent phrase, proof points, gentle entrance */
.hero-home:before{background:radial-gradient(900px 420px at 8% 0%,rgba(220,28,46,.30),transparent 60%),linear-gradient(100deg,rgba(10,22,48,.94) 0%,rgba(12,26,54,.78) 50%,rgba(14,28,56,.42))}
.hero-home .wrap{padding-top:78px}
.hero-home h1{font-size:clamp(2.3rem,4.6vw,3.6rem);line-height:1.06;letter-spacing:-.02em;font-weight:800;max-width:18ch;margin-bottom:14px}
.hero-home .hero-hl{display:inline-block;background:linear-gradient(90deg,#ffd166,#ff8a5b);-webkit-background-clip:text;background-clip:text;color:transparent;
  padding-bottom:.06em;background-size:100% 100%}
@supports not ((-webkit-background-clip:text) or (background-clip:text)){.hero-home .hero-hl{color:#ffd166}}
.hero-home p.lead{font-size:1.25rem;max-width:58ch;color:#eef3ff}
.hero-proof{list-style:none;display:flex;flex-wrap:wrap;gap:10px;margin:20px 0 22px;padding:0}
.hero-proof li{display:flex;align-items:baseline;gap:8px;padding:9px 16px;border-radius:999px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.28);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 6px 18px rgba(0,0,0,.18)}
.hero-proof b{font-size:1.15rem;font-weight:800;color:#fff;letter-spacing:-.01em}.hero-proof span{font-size:.9rem;color:#dfe8fb}
.hero-proof li:first-child{background:rgba(220,28,46,.88);border-color:rgba(255,255,255,.35)}.hero-proof li:first-child span{color:#fff}
@media (max-width:600px){.hero-home h1{font-size:clamp(2rem,9vw,2.5rem)}.hero-home p.lead{font-size:1.06rem}.hero-proof{gap:8px;margin:16px 0 18px}
  .hero-proof li{padding:7px 12px}.hero-proof b{font-size:1rem}.hero-proof span{font-size:.8rem}}
@keyframes hero-in{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.hero-home .eyebrow,.hero-home h1,.hero-home p.lead,.hero-home .hero-proof,.hero-home .quicksearch,.hero-home .hero-links{animation:hero-in .6s cubic-bezier(.2,.7,.3,1) both}
.hero-home h1{animation-delay:.08s}.hero-home p.lead{animation-delay:.18s}.hero-home .hero-proof{animation-delay:.28s}.hero-home .quicksearch{animation-delay:.36s}.hero-home .hero-links{animation-delay:.44s}
@media (prefers-reduced-motion:reduce){.hero-home .eyebrow,.hero-home h1,.hero-home p.lead,.hero-home .hero-proof,.hero-home .quicksearch,.hero-home .hero-links{animation:none}}
.hero-home .hero-hl{display:block;width:fit-content}
@media (min-width:900px){.hero-home h1{max-width:none}}

/* Pet photo inside a placeholder (Lea's pups, Oct 3 2026): same .fun-photo as Lori's/Justin's pets, small neutral caption */
.fun-fig{margin:0}.fun-fig figcaption{margin-top:6px;font-size:.8rem;font-weight:600;color:var(--muted)}

/* Plainview/Elgin/Millville town tile (Oct 3 2026): the long name shrinks to fit one line so the tile matches its neighbours' height.
   Font scales with the tile's text width (container units), never above the normal 1rem. Only this tile gets .tile-fit. */
.tile-fit .tile-tx{container-type:inline-size}
.tile-fit .tile-tx b{white-space:nowrap;letter-spacing:-.01em;font-size:clamp(.64rem,8.1cqi,1rem)}
.tile-fit .tile-tx b wbr{display:none}
@container (max-width:120px){.tile-fit .tile-tx b{white-space:normal;letter-spacing:normal;font-size:1rem}.tile-fit .tile-tx b wbr{display:inline}}
/* property tax & homestead explainer (/property-tax-homestead/, scripts/property_tax.py) */
.pt-intro{font-size:1.08rem}
.pt-toc{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:18px 0 6px;padding:14px 16px;background:#f4f7fc;border:1px solid var(--line);border-radius:12px}
.pt-toc b{width:100%;font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.pt-toc a{display:inline-block;padding:5px 12px;border-radius:999px;background:#fff;border:1px solid var(--line);font-size:.88rem;font-weight:600;text-decoration:none}
.pt-toc a:hover{border-color:var(--red);color:var(--red)}
.pt-prose h2{scroll-margin-top:110px;margin-top:2em}.pt-prose h3{scroll-margin-top:110px;margin-top:1.4em}
.pt-prose .tbl-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.pt-table{font-size:.95rem}.pt-table th{background:#f4f7fc;text-align:left}.pt-table td:first-child{white-space:nowrap;font-weight:600}
.pt-counties td:first-child{white-space:normal;font-weight:400}.pt-counties th[scope=row]{white-space:nowrap;background:#fff}
.pt-cta{display:flex;flex-wrap:wrap;gap:18px;align-items:center;justify-content:space-between;margin:34px 0 10px;padding:24px 26px;border-radius:var(--radius);background:var(--navy);color:#fff}
.pt-cta h2{color:#fff;margin:0 0 6px}.pt-cta p{color:#dce6fa!important;margin:0;max-width:52ch}
.pt-cta-btns{display:flex;flex-wrap:wrap;gap:10px}.pt-cta .btn-ghost{background:#fff;color:var(--navy);border-color:#fff}
.pt-sources{font-size:.9rem}.pt-sources li{margin-bottom:6px}
.pt-prose a{overflow-wrap:anywhere}
@media (max-width:520px){.pt-cta{padding:20px}.pt-cta-btns,.pt-cta-btns .btn{width:100%;text-align:center}.pt-table{font-size:.88rem}.pt-prose td,.pt-prose th{padding:6px 8px}}
/* contract-to-closing logo animation (Oct 3 2026): muted loop, poster = final logo, reduced motion = still only */
.cl-anim{margin:4px 0 22px;max-width:560px;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fff;box-shadow:0 2px 10px rgba(20,40,75,.05)}
.cl-anim video{display:block;width:100%;height:auto;aspect-ratio:1200/630;background:#fff url(/images/brand/logo-build-poster.webp?v=c35e3294) center/cover no-repeat;pointer-events:none}
@media (max-width:520px){.cl-anim{margin-bottom:18px}}
/* /email-signatures/ (unlisted team tool) */
.sig-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,480px),1fr));gap:22px}
.sig-card{border:1px solid var(--line);border-radius:var(--radius);background:#fff;padding:18px 20px;box-shadow:0 2px 10px rgba(20,40,75,.04)}
.sig-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-bottom:14px}.sig-head h2{margin:0;font-size:1.2rem}
.sig-msg{font-size:.85rem;color:#1d7a3a;flex-basis:100%}.sig-msg:empty{display:none}
.sig-box{padding:16px;border:1px dashed #d5dbe6;border-radius:10px;background:#fff;overflow-x:auto}
.sig-box img{max-width:none;border-radius:0;box-shadow:none;margin:0}
.sig-how{margin-top:40px}.sig-how ol{padding-left:1.2em}.sig-how li{margin-bottom:6px}
/* RPS school-by-address lookup card (/rochester/, /oronoco/) */
.rps-box{margin:28px 0 6px;padding:16px 20px;border:1px solid var(--line);border-radius:12px;background:#f7f9fc}
.rps-box h2{font-size:1.2rem;margin:0 0 6px}.rps-box p.note{margin:0;font-size:.92rem}

/* Full-resolution hero photos (Oct 4 2026): beats the inline low-res url; webp via image-set, 2400px on wide screens */
.hero.hr-rochester-skyline{background-image:url("/images/hero/rochester-skyline-1200.jpg")!important;background-image:image-set(url("/images/hero/rochester-skyline-1200.webp") type("image/webp"),url("/images/hero/rochester-skyline-1200.jpg") type("image/jpeg"))!important}
@media (min-width:1000px){.hero.hr-rochester-skyline{background-image:url("/images/hero/rochester-skyline-2400.jpg")!important;background-image:image-set(url("/images/hero/rochester-skyline-2400.webp") type("image/webp"),url("/images/hero/rochester-skyline-2400.jpg") type("image/jpeg"))!important}}
.hero.hr-winona-bluffs{background-image:url("/images/hero/winona-bluffs-1200.jpg")!important;background-image:image-set(url("/images/hero/winona-bluffs-1200.webp") type("image/webp"),url("/images/hero/winona-bluffs-1200.jpg") type("image/jpeg"))!important}
@media (min-width:1000px){.hero.hr-winona-bluffs{background-image:url("/images/hero/winona-bluffs-2400.jpg")!important;background-image:image-set(url("/images/hero/winona-bluffs-2400.webp") type("image/webp"),url("/images/hero/winona-bluffs-2400.jpg") type("image/jpeg"))!important}}
.hero.hr-zumbrota-bridge{background-image:url("/images/hero/zumbrota-bridge-1200.jpg")!important;background-image:image-set(url("/images/hero/zumbrota-bridge-1200.webp") type("image/webp"),url("/images/hero/zumbrota-bridge-1200.jpg") type("image/jpeg"))!important}
@media (min-width:1000px){.hero.hr-zumbrota-bridge{background-image:url("/images/hero/zumbrota-bridge-2400.jpg")!important;background-image:image-set(url("/images/hero/zumbrota-bridge-2400.webp") type("image/webp"),url("/images/hero/zumbrota-bridge-2400.jpg") type("image/jpeg"))!important}}
.hero.hr-red-wing{background-image:url("/images/hero/red-wing-1200.jpg")!important;background-image:image-set(url("/images/hero/red-wing-1200.webp") type("image/webp"),url("/images/hero/red-wing-1200.jpg") type("image/jpeg"))!important}
@media (min-width:1000px){.hero.hr-red-wing{background-image:url("/images/hero/red-wing-2400.jpg")!important;background-image:image-set(url("/images/hero/red-wing-2400.webp") type("image/webp"),url("/images/hero/red-wing-2400.jpg") type("image/jpeg"))!important}}
.hero.hr-pine-island{background-image:url("/images/hero/pine-island-1200.jpg")!important;background-image:image-set(url("/images/hero/pine-island-1200.webp") type("image/webp"),url("/images/hero/pine-island-1200.jpg") type("image/jpeg"))!important}
@media (min-width:1000px){.hero.hr-pine-island{background-image:url("/images/hero/pine-island-2400.jpg")!important;background-image:image-set(url("/images/hero/pine-island-2400.webp") type("image/webp"),url("/images/hero/pine-island-2400.jpg") type("image/jpeg"))!important}}
@media print{.hero.hr{background-image:none!important}}

/* Team arcade: Sue's Pontiac tile (a button styled like the link cards; Oct 4 2026) */
button.arcade-sue{font:inherit;text-align:left;border:0;border-bottom:4px solid var(--accent);cursor:pointer;width:100%}
.support-card .play-chip{margin-top:8px}
.support-card .support-ps{margin:6px 0 0;font-size:.8rem;line-height:1.35;color:var(--muted);font-style:italic;max-width:42ch}
.support-card .play-chip + .support-ps{margin-top:8px}
button.arcade-ron{font:inherit;text-align:left;border:0;border-bottom:4px solid var(--accent);cursor:pointer;width:100%}

.support-card p{max-width:60ch}

/* Kasson hero (Oct 4 2026): aerial dusk photo, Wikimedia Commons 'Kasson, Minnesota.jpg' (CC0); framed on the town + water tower */
.hero.hr-kasson{background-position:center 12%;background-image:url("/images/hero/kasson-1200.jpg")!important;background-image:image-set(url("/images/hero/kasson-1200.webp") type("image/webp"),url("/images/hero/kasson-1200.jpg") type("image/jpeg"))!important}
@media (min-width:1000px){.hero.hr-kasson{background-image:url("/images/hero/kasson-2400.jpg")!important;background-image:image-set(url("/images/hero/kasson-2400.webp") type("image/webp"),url("/images/hero/kasson-2400.jpg") type("image/jpeg"))!important}}
/* market statistics cards (/market-statistics/, scripts/market_stats.py) */
.ms-date{font-size:.85rem;color:var(--muted)}.ms-stale{color:#a15c00}
.ms-glance{background:linear-gradient(135deg,var(--navy),var(--navy-2));color:#fff;border-radius:var(--radius);padding:22px clamp(14px,4vw,24px);margin:0 0 34px;box-shadow:var(--shadow)}
.ms-g-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 16px}.ms-glance h2{color:#fff;margin:0;font-size:1.4rem}.ms-glance .ms-date{color:#c9d5ea}
.ms-g-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:12px;margin:16px 0 10px}
.ms-g-i{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);border-radius:12px;padding:12px 14px}.ms-g-i b{display:block;font-size:1.55rem;line-height:1.15}.ms-g-i span{font-size:.85rem;color:#dbe4f3}
.ms-glance .ms-mom{display:table;margin:6px 0 0}.ms-glance .ms-up,.ms-glance .ms-down,.ms-glance .ms-flat{background:rgba(255,255,255,.14);color:#fff}
.ms-g-more{color:var(--sky);font-weight:600;font-size:.92rem;text-decoration:none}.ms-g-more:hover{color:#fff}
.ms-section{margin-top:44px}.ms-sec-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 16px}.ms-sec-head h2{margin:0}.ms-intro{color:var(--muted);margin:8px 0 4px}
.ms-jump{margin:12px 0 20px}.ms-jump .chip{font-size:.82rem;padding:5px 11px}
.ms-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:18px}
@media (max-width:420px){.ms-grid{grid-template-columns:1fr}}
.ms-card{border:1px solid var(--line);border-radius:var(--radius);padding:18px 18px 14px;background:#fff;box-shadow:0 2px 10px rgba(20,40,75,.05);display:flex;flex-direction:column;scroll-margin-top:96px}
.ms-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:2px 10px;border-bottom:3px solid var(--red);padding-bottom:8px}
.ms-head h3{margin:0;font-size:1.2rem}.ms-trends{font-weight:500;color:var(--muted)}
.ms-top{display:grid;grid-template-columns:1fr 1fr 1.4fr;gap:8px;margin:14px 0 4px;text-align:center}
.ms-top div{background:var(--bg);border-radius:10px;padding:10px 4px}.ms-top b{display:block;font-size:1.25rem;color:var(--navy);line-height:1.2}.ms-top span{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.ms-card h4{margin:16px 0 6px;font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--blue)}
.ms-dl{margin:0;font-size:.93rem}.ms-dl div{display:flex;justify-content:space-between;gap:10px;padding:5px 0;border-bottom:1px dashed var(--line)}.ms-dl dt{color:var(--muted)}.ms-dl dd{margin:0;font-weight:600;text-align:right;color:var(--ink)}
.ms-mom{font-size:.74rem;font-weight:700;border-radius:999px;padding:1px 7px;margin-left:6px;white-space:nowrap}.ms-mom-l{font-weight:500;opacity:.8}
.ms-up,.ms-down{background:#eef2fa;color:var(--navy-2)}.ms-flat{background:var(--bg);color:var(--muted)}
.ms-beds{width:100%;border-collapse:collapse;font-size:.86rem;text-align:center;table-layout:fixed}.ms-beds th{font-weight:600;color:var(--muted);font-size:.75rem;padding:2px}.ms-beds td{font-weight:700;color:var(--navy);padding:6px 2px;background:var(--bg)}.ms-beds td:first-child{border-radius:8px 0 0 8px}.ms-beds td:last-child{border-radius:0 8px 8px 0}.ms-na{color:#9aa3b2;font-weight:400}
.ms-link{margin-top:auto;padding-top:14px;font-weight:700;text-decoration:none}
.ms-none{color:var(--muted);margin:14px 0}
.ms-source{font-size:.85rem;color:var(--muted);margin-top:18px}
.ms-note{font-size:.8rem;color:var(--muted);margin:10px 0 0}.ms-cite{font-size:.78rem;color:var(--muted);margin:12px 0 0}
.ms-top b{font-size:1.15rem}
/* Pet name tags over a fun-card photo (Lea's pups, Oct 9 2026): hidden until hover, keyboard focus or tap (.is-on via features.js) */
.pet-tags{position:relative;display:inline-block;width:180px;max-width:100%;border-radius:14px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.pet-tags .fun-photo{width:100%}
.pet-tags:focus-visible{outline:3px solid var(--blue,#003da5);outline-offset:3px}
.pet-tag{position:absolute;top:calc(14px + 44%);transform:translate(-50%,6px);padding:3px 9px;border-radius:999px;background:rgba(14,28,56,.86);color:#fff;font-size:.74rem;font-weight:700;line-height:1.3;white-space:nowrap;box-shadow:0 3px 8px rgba(0,0,0,.25);opacity:0;pointer-events:none;transition:opacity .18s ease,transform .18s ease}
.pet-tag-left{left:29%}.pet-tag-right{left:70%}
.pet-tags:hover .pet-tag,.pet-tags:focus-within .pet-tag,.pet-tags.is-on .pet-tag{opacity:1;transform:translate(-50%,0)}
@media (prefers-reduced-motion:reduce){.pet-tag{transition:none}}
.ms-glance .ms-date a,.ms-glance .ms-cite{color:#dbe6ff}.ms-glance .ms-date a{text-decoration:underline}.ms-glance .ms-cite{opacity:.85}
