/* Boston Condo Managers. Data-desk styling: serif headlines, a Franklin sans for labels and
   numbers, black ink on white, underlined links, square-ish controls (3px), no shadows, no pills.
   Brick is the only color and it is reserved for data (map, bars) and link hover. */
:root{
 --ink:#1a1a1a;--text:#333;--muted:#666;--rule:#d9d9d9;--rule-soft:#ececec;--paper:#fff;--tint:#f6f5f2;
 --brick:#b8432b;--brick-1:#f6e3dc;--brick-2:#eab8a8;--brick-3:#d98670;--brick-4:#c55a41;--brick-5:#8f2f1c;
 --serif:"Newsreader",Georgia,"Times New Roman",serif;--sans:"Libre Franklin",-apple-system,"Segoe UI",Arial,sans-serif;
}
@media (prefers-color-scheme:dark){:root{
 --ink:#eee;--text:#cfcfcf;--muted:#9a9a9a;--rule:#3a3a3a;--rule-soft:#2c2c2c;--paper:#161616;--tint:#1f1e1c;
 --brick-1:#3a2520;--brick-2:#5e3024;--brick-3:#8a3c2a;--brick-4:#b84a31;--brick-5:#e0715a;
}}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--text);font:18px/1.55 var(--serif);font-optical-sizing:auto}
a{color:var(--ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;text-decoration-color:var(--muted)}
a:hover{color:var(--brick);text-decoration-color:var(--brick)}
h1,h2,h3{font-family:var(--serif);color:var(--ink);font-weight:700;letter-spacing:-.005em;margin:0}
h1{font-size:44px;line-height:1.1;font-weight:800}
h2{font-size:26px;line-height:1.25}
h3{font-size:20px;line-height:1.3}
p{margin:0 0 14px}
.sans{font-family:var(--sans)}
.wrap{max-width:1120px;margin:0 auto;padding:0 20px}
.skip{position:absolute;left:-999px}.skip:focus{left:16px;top:8px;background:var(--paper);padding:8px;z-index:30}
:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
@media(max-width:640px){body{font-size:16px}h1{font-size:30px}h2{font-size:22px}}

/* masthead: newspaper style. Centered name, dateline between rules, section nav below. */
.mast{text-align:center;padding-top:22px;border-bottom:3px double var(--ink)}
.brand{display:inline-block;font:800 44px/1 var(--serif);color:var(--ink);text-decoration:none;letter-spacing:-.015em}
.brand:hover{color:var(--ink)}
.edition{display:flex;justify-content:space-between;gap:16px;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);margin:14px 0 0;padding:6px 0;font:600 11px/1.3 var(--sans);text-transform:uppercase;letter-spacing:.08em;color:var(--ink)}
.mast nav{display:flex;justify-content:center;gap:26px;padding:10px 0;font:700 13px var(--sans);text-transform:uppercase;letter-spacing:.05em}
.mast nav a{text-decoration:none;color:var(--ink)}
.mast nav a:hover,.mast nav a[aria-current]{text-decoration:underline;text-decoration-thickness:2px}
.mast nav a:last-child{color:var(--brick)}
@media(max-width:700px){.brand{font-size:30px}.edition{flex-direction:column;gap:2px;align-items:center}.mast nav{justify-content:flex-start;overflow-x:auto;white-space:nowrap;gap:18px}}

.crumbs{font:13px var(--sans);color:var(--muted);padding-top:14px}
.crumbs a{color:var(--muted);text-decoration:none}.crumbs a:hover{text-decoration:underline}
.crumbs span{margin:0 6px}

/* article head */
.head{padding:32px 0 8px;max-width:760px}
.dateline{font:13px/1.5 var(--sans);color:var(--muted);margin:12px 0 0}
.dateline a{color:var(--muted)}
.dek{font-size:20px;line-height:1.5;color:var(--text);margin-top:14px}
.sec{padding:28px 0}
.sec-title{font:700 13px var(--sans);text-transform:uppercase;letter-spacing:.06em;color:var(--ink);border-top:2px solid var(--ink);padding-top:8px;margin:0 0 14px}
.note{font:13px/1.5 var(--sans);color:var(--muted)}
.note a{color:var(--muted)}

/* map block */
.mapgrid{display:grid;grid-template-columns:1.25fr 1fr;gap:36px;align-items:start}
@media(max-width:860px){.mapgrid{grid-template-columns:1fr}}
.map svg{width:100%;height:auto;display:block}
.map path{stroke:var(--paper);stroke-width:.6;vector-effect:non-scaling-stroke}
.map a:hover path,.map a:focus path{stroke:var(--ink);stroke-width:1.6}
.map .none{fill:var(--rule-soft)}
.map .on path{stroke:var(--ink);stroke-width:1.6}
.legend{display:flex;align-items:center;gap:8px;font:12px var(--sans);color:var(--muted);margin-top:10px}
.legend i{display:inline-block;width:22px;height:10px}

/* data tables */
table.data{width:100%;border-collapse:collapse;font:14px/1.4 var(--sans);font-variant-numeric:tabular-nums}
table.data th{text-align:left;font-weight:600;color:var(--ink);border-bottom:1px solid var(--ink);padding:8px 10px 8px 0;vertical-align:bottom;white-space:nowrap}
table.data td{border-bottom:1px solid var(--rule-soft);padding:9px 10px 9px 0;vertical-align:top;color:var(--text)}
table.data .r{text-align:right}
table.data .rank{color:var(--muted);width:28px}
table.data td.name a{font-weight:600;color:var(--ink)}
table.data .pub{font-weight:400;color:var(--muted);font-size:12px}
table.data .sub{display:block;color:var(--muted);font-size:13px;margin-top:2px}
table.data th button{all:unset;cursor:pointer}
table.data th button:hover{text-decoration:underline}
table.data th button[aria-sort=descending]::after{content:" ↓"}
table.data th button[aria-sort=ascending]::after{content:" ↑"}
table.data tr:hover td{background:var(--tint)}
.stars{color:var(--ink);white-space:nowrap}
.dash{color:var(--muted)}
.logo-sm{width:18px;height:18px;vertical-align:-3px;margin-right:8px;border-radius:2px}
@media(max-width:760px){
 table.data.stack thead{display:none}
 table.data.stack tr{display:grid;grid-template-columns:28px 1fr auto;gap:2px 8px;padding:12px 0;border-bottom:1px solid var(--rule-soft)}
 table.data.stack td{border:0;padding:0}
 table.data.stack td.name{grid-column:2}
 table.data.stack td.stars{grid-column:3;text-align:right}
 table.data.stack td.rev{grid-column:3;text-align:right;color:var(--muted);font-size:13px}
 table.data.stack td.rev::after{content:" reviews"}
 table.data.stack td.hide-m{display:none}
}

/* filters */
.filters{display:flex;flex-wrap:wrap;gap:12px 18px;align-items:end;font:14px var(--sans);padding:14px 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);margin-bottom:6px}
.filters label{display:flex;flex-direction:column;gap:4px;font-weight:600;color:var(--ink);font-size:13px}
.filters input,.filters select{font:14px var(--sans);color:var(--ink);background:var(--paper);border:1px solid #9a9a9a;border-radius:3px;padding:6px 8px;min-width:170px}
.filters .count{margin-left:auto;color:var(--muted);align-self:center}

/* bars */
.bars td.bar{width:55%}
.bars .b{display:block;height:10px;background:var(--brick-4)}
.stack-bar{display:flex;height:14px;margin:8px 0 6px}
.stack-bar span{display:block;height:100%}
.stack-key{font:13px var(--sans);color:var(--muted);display:flex;gap:18px;flex-wrap:wrap}
.stack-key i{display:inline-block;width:10px;height:10px;margin-right:6px}

/* profile */
.prof{display:grid;grid-template-columns:1fr 300px;gap:48px;padding-bottom:40px}
@media(max-width:900px){.prof{grid-template-columns:1fr;gap:24px}}
.prof-head{display:flex;gap:16px;align-items:flex-start}
.prof-head img{width:48px;height:48px;border:1px solid var(--rule);border-radius:3px;padding:4px;background:#fff;flex:none;margin-top:6px}
.facts{display:grid;grid-template-columns:max-content 1fr;gap:6px 18px;font:14px/1.45 var(--sans);margin:0}
.facts dt{color:var(--muted)}
.facts dd{margin:0;color:var(--ink);overflow-wrap:anywhere;min-width:0}
.box{border:1px solid var(--rule);padding:16px 18px;font:14px/1.5 var(--sans)}
.box h3{font:700 13px var(--sans);text-transform:uppercase;letter-spacing:.06em;margin-bottom:10px}
.box p{margin:10px 0 0}
.box + .box{margin-top:16px}
.btn{display:inline-block;font:600 14px var(--sans);background:var(--ink);color:var(--paper);text-decoration:none;padding:9px 14px;border-radius:3px;border:1px solid var(--ink);cursor:pointer}
.btn:hover{background:var(--brick);border-color:var(--brick);color:#fff}
.btn-quiet{background:transparent;color:var(--ink)}
.qa h3{font-size:18px;margin:18px 0 6px}
.qa p{max-width:70ch}
.srcs{font:13px/1.55 var(--sans);color:var(--muted);padding-left:18px}
.srcs a{color:var(--muted)}
.map-sm{max-width:300px}

/* prose */
.prose{max-width:700px;padding-bottom:48px}
.prose h2{margin:30px 0 10px;font-size:23px}
.prose ul,.prose ol{padding-left:22px}
.prose li{margin-bottom:6px}

/* forms */
.form{display:flex;flex-direction:column;gap:14px;font:15px var(--sans);max-width:560px}
.form label{display:flex;flex-direction:column;gap:5px;font-weight:600;font-size:14px;color:var(--ink)}
.form input,.form select,.form textarea{font:15px var(--sans);color:var(--ink);background:var(--paper);border:1px solid #9a9a9a;border-radius:3px;padding:9px 10px}
.form .row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:560px){.form .row2{grid-template-columns:1fr}}

/* footer */
.foot{border-top:1px solid var(--ink);margin-top:40px;padding:18px 0 36px;font:13px/1.6 var(--sans);color:var(--muted)}
.foot a{color:var(--muted)}
.foot p{margin:0 0 6px;max-width:900px}

/* phone overrides kept last so they win over the section rules above */
@media(max-width:700px){
 .mast nav{scrollbar-width:none}.mast nav::-webkit-scrollbar{display:none}
 .filters{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px}
 .filters input,.filters select{min-width:0;width:100%}
 .filters .count{grid-column:1 / 3;margin-left:0}
}

.mapgrid-side{grid-template-columns:1fr 260px}
@media(max-width:860px){.mapgrid-side{grid-template-columns:1fr}.mapgrid-side .map-sm{justify-self:start!important;max-width:240px}}
