@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Libre+Caslon+Display&display=swap');
:root{--ink:#141414;--green:#14558F;--blue:#14558F;--blue-hover:#4377A5;--blue-active:#104472;--blue-light:#E7EEF4;--focus:#0088FF;--muted:#535353;--line:#D7E1E9;--paper:#F2F2F2;--cream:#FFFFFF;--gold:#F6C51B;--success:#388557}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:#243f37;font:15px/1.6 'DM Sans',system-ui,sans-serif}a{color:var(--green);text-underline-offset:4px}button,input,select{font:inherit}button{cursor:pointer}header{display:flex;align-items:center;gap:36px;padding:20px 5%;border-bottom:1px solid var(--line);background:var(--cream);position:sticky;top:0;z-index:20}.brand{font-size:28px;font-weight:700;text-decoration:none;color:var(--ink)}.brand span{font:28px 'Libre Caslon Display',Georgia,serif}nav{display:flex;gap:25px;margin-left:auto}nav a{text-decoration:none;font-size:14px}.edition{font-size:11px;border:1px solid var(--line);border-radius:20px;padding:6px 11px;color:var(--muted)}main{max-width:1260px;margin:auto;padding:54px 34px}.hero{max-width:850px;margin:20px 0 34px}.hero.compact{max-width:760px}.kicker{font-size:11px;letter-spacing:.15em;font-weight:700;color:#55785c}h1{font:64px/1.03 'Libre Caslon Display',Georgia,serif;color:var(--ink);letter-spacing:-1px;margin:18px 0}h2{font-size:24px;line-height:1.25;color:var(--ink)}h3{color:var(--ink)}.hero p,.town-hero p{font-size:17px;color:var(--muted);max-width:780px}.stats{display:grid;grid-template-columns:repeat(4,1fr);border-block:1px solid var(--line);margin:30px 0 44px}.stats div{padding:20px 25px}.stats div+div{border-left:1px solid var(--line)}.stats strong{display:block;font-size:32px;font-weight:500;color:var(--ink)}.stats span,.muted{color:var(--muted)}.directory,.town-search,.documents,.contents,.reference-grid article,.about-grid article{background:var(--cream);border:1px solid var(--line);border-radius:12px}.directory{padding:28px}.section-head,.town-hero,.document-head,.dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px}.section-head h2{margin:6px 0}.directory-controls{display:block;margin:22px 0}input,select{width:100%;padding:13px 14px;border:1px solid #a9bcb0;border-radius:6px;background:white;color:var(--ink)}.town-table-wrap{overflow:auto}.town-table{width:100%;border-collapse:collapse}.town-table th,.town-table td{text-align:left;padding:14px 12px;border-bottom:1px solid var(--line);vertical-align:top}.town-table th{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.town-table td:first-child{min-width:210px}.town-table small{display:block;color:var(--muted)}.status{font-size:10px;letter-spacing:.06em;text-transform:uppercase;border-radius:20px;padding:5px 9px;background:#e5eee7;color:#245842;white-space:nowrap}.status.link-only{background:#e8edf3;color:#405e78}.status.pending{background:#f7ead4;color:#80601e}.source-button,.publisher-button{display:inline-block;padding:8px 11px;border:1px solid var(--green);border-radius:6px;background:#fff;color:var(--green);font-weight:650;text-decoration:none;line-height:1.3}.source-button:hover,.publisher-button:hover{background:#eaf2ed}.publisher-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.law-panel{display:grid;grid-template-columns:1fr 2fr;gap:35px;margin:46px 0}.law-links{display:grid;grid-template-columns:1fr 1fr;gap:12px}.law-links a,.reference-grid article>a{display:flex;flex-direction:column;text-decoration:none;padding:17px;border:1px solid var(--line);border-radius:8px;background:var(--cream)}.law-links span,.reference-grid span{color:var(--muted);font-size:12px}.notice,.hold{background:#f5ead6;border-left:4px solid #b57b24;padding:17px 19px;margin:24px 0;border-radius:5px}.back{display:inline-block;margin-bottom:28px}.town-hero h1{margin:12px 0}.town-page{max-width:1380px}.town-search{padding:24px;margin:28px 0}.town-search h2{margin-top:0}.town-search form{display:flex;gap:10px}.town-search button,.search-result button,.page-toc button{border:1px solid var(--green);background:var(--green);color:white;border-radius:5px;padding:10px 16px}.town-layout{display:grid;grid-template-columns:330px 1fr;gap:22px;align-items:start}.contents{padding:24px;position:sticky;top:92px;max-height:calc(100vh - 112px);overflow:auto}.contents h2{margin-top:0}.contents h3{font-size:13px;margin-top:25px}.contents ol,.contents ul{padding-left:20px}.contents li{margin:8px 0}.contents li span{display:block;color:var(--muted);font-size:11px}.documents{padding:25px}.documents>h2{margin-top:0}.document{padding:22px 0;border-top:1px solid var(--line)}.document:first-of-type{border-top:0}.document h3{font-size:20px;margin:4px 0}.document p{font-size:13px}.document details{margin-top:16px}.document summary{cursor:pointer;font-weight:600;color:var(--green)}.page-toc{columns:2;column-gap:28px;padding-left:24px}.page-toc li{break-inside:avoid;margin:5px 0}.page-toc button{border:0;background:none;color:var(--green);padding:2px;text-align:left;font-size:12px}.page-toc button:hover{text-decoration:underline}.loading{color:var(--muted)}.search-result{padding:16px 0;border-top:1px solid var(--line);display:grid;grid-template-columns:220px 1fr auto;gap:18px;align-items:start}.search-result mark{background:#fff0ae;color:inherit;border-radius:2px;padding:0 .08em}.search-result span{display:block;color:var(--muted);font-size:12px}.search-result p{margin:0;font-size:13px}.reference-grid,.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.reference-grid article,.about-grid article{padding:25px}.reference-grid h2{margin-top:0}.reference-grid article>a{margin:10px 0}.empty{padding:30px;text-align:center;color:var(--muted);background:#f1f3ec;border-radius:7px}dialog{width:min(1050px,94vw);max-height:90vh;border:1px solid var(--line);border-radius:12px;padding:25px}dialog::backdrop{background:#173d3699}.dialog-head{position:sticky;top:-25px;background:white;padding:18px 0;z-index:3}.dialog-head h2{margin:4px 0}.dialog-head button{border:1px solid var(--line);background:white;border-radius:5px;padding:9px 14px}#reader-text{white-space:pre-wrap;font:14px/1.7 ui-monospace,SFMono-Regular,monospace}.law-citation{color:#155f8a;text-decoration:underline}footer{display:flex;justify-content:space-between;gap:20px;padding:25px 5%;border-top:1px solid var(--line);color:var(--muted);font-size:12px;background:var(--cream)}@media(max-width:900px){.edition{display:none}.town-layout{grid-template-columns:1fr}.contents{position:static;max-height:none}.law-panel{grid-template-columns:1fr}.page-toc{columns:1}.search-result{grid-template-columns:1fr}.reference-grid,.about-grid{grid-template-columns:1fr}}
@media(max-width:620px){header{flex-wrap:wrap;padding:15px 18px}nav{order:3;width:100%;margin:0;gap:14px;overflow:auto}main{padding:32px 16px}h1{font-size:44px}.stats{grid-template-columns:1fr 1fr}.stats div{padding:13px}.stats div:nth-child(3){border-left:0}.directory{padding:18px}.directory-controls,.law-links{grid-template-columns:1fr}.town-table th:nth-child(3),.town-table td:nth-child(3){display:none}.town-table td:first-child{min-width:150px}.town-search form{flex-direction:column}.section-head,.town-hero,.document-head{flex-direction:column}.reference-grid,.about-grid{grid-template-columns:1fr}footer{flex-direction:column}}.official-code .publisher-actions{justify-content:center}.official-code p{margin-top:0}

/* Mass.gov-inspired Commonwealth Bay Blue theme and clean search result list. */
body{background:var(--paper);color:var(--ink)}
a{color:var(--blue)}
header{background:var(--blue);border-bottom:0;color:#fff;box-shadow:0 2px 10px #0A2B481A}
.brand,nav a{color:#fff}
.brand:hover,nav a:hover{text-decoration:underline;text-underline-offset:5px}
.edition{border-color:#FFFFFF66;color:#fff;background:#FFFFFF12}
.kicker{color:var(--blue)}
h1,h2,h3{color:var(--ink)}
h1{font:700 58px/1.08 'DM Sans',system-ui,sans-serif;letter-spacing:-1.4px}
.directory,.town-search,.documents,.contents,.reference-grid article,.about-grid article{background:#fff;border-color:var(--line);box-shadow:0 3px 14px #0A2B480A}
input,select{border-color:#AABAC7;color:var(--ink)}
input:focus,select:focus{outline:3px solid #0088FF38;border-color:var(--focus)}
.status{background:#E3F0E7;color:#245A3C}
.status.link-only{background:var(--blue-light);color:var(--blue-active)}
.status.pending{background:#FEF9E8;color:#6C5100}
.source-button,.publisher-button{border-color:var(--blue);background:var(--blue);color:#fff}
.source-button:hover,.publisher-button:hover{border-color:var(--blue-active);background:var(--blue-active);color:#fff}
.town-search button,.search-result button,.page-toc button{border-color:var(--blue);background:var(--blue);color:#fff}
.page-toc button{border:0;background:none;color:var(--blue);text-align:left}
.search-result{display:block;padding:22px 0;border:0;border-top:1px solid var(--line)}
.search-result:first-child{border-top:1px solid var(--line)}
.result-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:var(--muted);font-size:12px;line-height:1.4}
.result-source{font-weight:600;color:var(--muted)}
.result-page{border-left:1px solid var(--line);padding-left:8px}
.search-result h3{font-size:19px;line-height:1.35;color:var(--blue);margin:7px 0 8px;font-weight:650}
.search-result p{margin:0;color:#303943;font-size:14px;line-height:1.65}
.search-result mark{background:var(--blue-light);color:var(--blue-active);border-radius:2px;padding:0 .1em;font-weight:700}
.search-result button{margin-top:10px;border:0;background:none;color:var(--blue);font-size:13px;font-weight:700;padding:2px 0;text-decoration:underline;text-underline-offset:3px}
.search-result button:hover{background:none;color:var(--blue-active)}
.notice,.hold{background:#E7EEF4;border-left-color:var(--blue);color:var(--ink)}
.empty{background:var(--blue-light);color:var(--muted)}
dialog::backdrop{background:#0A2B4880}
.law-citation{color:var(--blue)}
footer{background:#fff;color:var(--muted)}
@media(max-width:900px){.search-result{display:block}}
@media(max-width:620px){h1{font-size:42px;letter-spacing:-.7px}.search-result{padding:18px 0}.result-meta{gap:6px}}

/* Keep the viewport fixed horizontally on phones; let long content wrap inside it. */
html,body{max-width:100%;overflow-x:clip;overscroll-behavior-x:none}
body{width:100%;overflow-x:hidden}
main,header,footer,.town-page,.directory,.town-search,.documents,.contents,.town-layout,.town-hero{min-width:0;max-width:100%}
a,button,p,li,td,th,h1,h2,h3{overflow-wrap:anywhere}
img,svg,video,canvas,iframe{max-width:100%}
#reader-text{max-width:100%;overflow-wrap:anywhere;word-break:break-word}
.town-table-wrap{max-width:100%;overscroll-behavior-x:contain}
@media(max-width:620px){html,body{width:100%;overflow-x:hidden;overscroll-behavior-x:none}main{width:100%;max-width:100%;padding-inline:16px}header{width:100%;max-width:100%;overflow-x:hidden}nav{min-width:0;max-width:100%}.town-table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}}

/* Mobile directory: preserve page margins while allowing the table itself to pan. */
@media(max-width:620px){.directory{padding:18px}.town-table-wrap{width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;padding-bottom:6px}.town-table{width:100%;min-width:600px}.town-table th,.town-table td{padding:16px 18px}.town-table th:nth-child(3),.town-table td:nth-child(3){display:table-cell}.town-table td:first-child{min-width:190px}}

/* Keep the homepage title on one line per phrase and tighten directory rows. */
.home-page .hero h1{font-size:56px;white-space:nowrap;letter-spacing:-1.6px}
.town-table td{padding-block:9px}
.town-table td:first-child a{line-height:1.25}
@media(max-width:620px){.home-page .hero h1{font-size:clamp(23px,7.2vw,42px);letter-spacing:-1.2px}.town-table th,.town-table td{padding:10px 14px}.town-table td:first-child{min-width:190px}}
.search-result h3{margin:0}.search-result h3 a{color:var(--ink);text-decoration:none}.search-result h3 a:hover,.search-result h3 a:focus-visible{color:var(--blue);text-decoration:underline;text-underline-offset:4px}
.municipality-page header,.municipality-page .dialog-head{position:static!important;top:auto}

/* Town headings stay compact and readable on narrow screens. */
.municipality-page .town-page{padding-top:34px}
.municipality-page .back{margin-bottom:18px}
.municipality-page .town-hero h1{font-size:clamp(34px,4.4vw,52px);line-height:1.08;letter-spacing:-1px;margin:8px 0 10px}
.municipality-page .town-hero{gap:14px}
.page-toc a{display:inline-block;padding:2px;color:var(--blue);font-size:12px;line-height:1.45}
.source-actions{display:flex;flex-direction:column;align-items:flex-end;gap:7px;font-size:13px}
.text-page{max-width:980px}
.text-page .text-meta{color:var(--muted);margin-bottom:24px}
.text-page .section-text{white-space:pre-wrap;overflow-wrap:anywhere;background:#fff;border:1px solid var(--line);border-radius:12px;padding:28px;font:15px/1.75 ui-monospace,SFMono-Regular,monospace}
.text-page .position-nav{display:flex;justify-content:space-between;gap:18px;margin:28px 0}
@media(max-width:620px){.municipality-page .town-page{padding-top:24px}.municipality-page .town-hero h1{font-size:clamp(29px,9vw,38px);line-height:1.1}.source-actions{align-items:flex-start}.text-page .section-text{padding:18px;font-size:14px}.text-page .position-nav{flex-direction:column}}

.document-title-link{text-decoration:none;color:inherit}.document-title-link:hover{color:var(--green);text-decoration:underline}

/* Homepage municipality directory: one centered, prominent town column. */
.home-page .town-table-wrap{overflow:visible}
.home-page .town-table{width:100%;min-width:0;table-layout:fixed}
.home-page .town-table th,.home-page .town-table td{text-align:center;padding:15px 20px}
.home-page .town-table td:first-child{min-width:0}
.home-page .town-table td:first-child a{display:block;font-size:18px;line-height:1.35;font-weight:700;text-decoration-thickness:1px;text-underline-offset:5px}
.home-page .town-table td:first-child a:hover{color:var(--blue-hover)}
@media(max-width:620px){.home-page .town-table{min-width:0}.home-page .town-table th,.home-page .town-table td{padding:14px 8px}.home-page .town-table td:first-child{min-width:0}.home-page .town-table td:first-child a{font-size:17px}}
