
:root{--paper:#f6efdc;--paper2:#efe5c8;--ink:#2b2318;--muted:#6b5d47;--rule:#c9b98f;--yp:#f5cf2a;--yp-ink:#1a1408;--red:#8c2b1c;--link:#8B2E2A;--accent:#8B2E2A;--accent-dark:#6a211e}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;color:var(--ink);background:var(--paper);background-image:radial-gradient(rgba(120,90,40,.06) 1px,transparent 1px),radial-gradient(rgba(120,90,40,.04) 1px,transparent 1px);background-size:7px 7px,13px 13px;background-position:0 0,3px 5px;font:17px/1.55 Georgia,"Iowan Old Style","Palatino Linotype",Palatino,"Times New Roman",serif}
a{color:var(--accent)}a:hover{color:var(--accent-dark)}
.wrap{max-width:1120px;margin:0 auto;padding:0 18px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.masthead{border-bottom:4px double var(--ink);padding:18px 0 0;text-align:center;background:linear-gradient(var(--paper2),var(--paper))}
.brand{display:inline-block;text-decoration:none;color:var(--ink)}
.brand-kicker{display:block;font-variant:small-caps;letter-spacing:.18em;font-size:14px;color:var(--muted)}
.brand-name{display:block;font:700 clamp(30px,6vw,52px)/1.05 "Playfair Display",Georgia,serif;letter-spacing:.01em;margin:4px 0}
.brand-sub{display:block;font-style:italic;color:var(--muted);font-size:15px}
.mainnav{display:flex;flex-wrap:wrap;justify-content:center;gap:2px 0;margin-top:14px;border-top:1px solid var(--rule)}
.mainnav a{padding:9px 14px;text-decoration:none;color:var(--ink);font-variant:small-caps;letter-spacing:.06em;font-size:16px}
.mainnav a[aria-current]{background:var(--ink);color:var(--paper)}
.mainnav a:hover{background:var(--yp);color:var(--yp-ink)}
main{padding:22px 18px 40px}
h1,h2,h3{font-family:Georgia,"Times New Roman",serif;line-height:1.2}
.page-title{font-size:clamp(28px,4.5vw,40px);text-align:center;margin:10px 0 6px;border-bottom:1px solid var(--rule);padding-bottom:10px}
.lede{text-align:center;color:var(--muted);max-width:760px;margin:6px auto 20px;font-style:italic}
.sec-title{font-size:26px;border-bottom:2px solid var(--ink);padding-bottom:4px;margin-top:34px}
.hero{text-align:center;padding:18px 0 8px}
.hero-kicker{margin:0;font-variant:small-caps;letter-spacing:.3em;color:var(--muted)}
.hero h1{font-size:clamp(36px,7vw,64px);margin:2px 0 4px}
.hero-sub{margin:0 auto 18px;font-style:italic;color:var(--muted)}
.bigsearch{display:flex;max-width:640px;margin:0 auto;border:2px solid var(--ink);background:#fffaf0}
.bigsearch input{flex:1;min-width:0;border:0;padding:14px;font:inherit;background:transparent}
.bigsearch button,.toolbar button,.claim button{border:0;background:var(--ink);color:var(--paper);font:700 16px Georgia,serif;padding:0 22px;cursor:pointer;letter-spacing:.04em}
.bigsearch button{background:var(--accent)}.bigsearch button:hover{background:var(--ink)}
.hero-count{margin:12px 0 0}
.two-col{display:grid;grid-template-columns:1.6fr 1fr;gap:28px;align-items:start}
.card{background:#fffaf0;border:1px solid var(--rule);box-shadow:3px 3px 0 var(--rule);padding:16px 18px}
.card h3{margin-top:0;font-variant:small-caps;letter-spacing:.05em;border-bottom:1px solid var(--rule);padding-bottom:6px}
.facts{width:100%;border-collapse:collapse;font-size:15px}
.facts th,.facts td{text-align:left;vertical-align:top;padding:6px 4px;border-bottom:1px dotted var(--rule)}
.facts th{width:38%;font-weight:600;color:var(--muted)}
.small{font-size:13px;color:var(--muted)}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}
.tile{background:#fffaf0;border:1px solid var(--rule);border-top:8px solid var(--yp);padding:14px 16px;display:flex;flex-direction:column}
.tile h3{margin:0 0 4px;font-size:21px}.tile h3 a{text-decoration:none;color:var(--ink)}
.tile p{margin:0 0 8px;font-size:15px;color:var(--muted)}
.tile ul{margin:0 0 10px;padding-left:18px;font-size:14px;columns:1}
.tile-more{margin-top:auto;font-weight:700;font-size:15px}
.fest li{margin-bottom:8px}
.badge{display:inline-block;background:var(--yp);color:var(--yp-ink);font:700 11px/1 system-ui,sans-serif;text-transform:uppercase;letter-spacing:.1em;padding:5px 7px;border:1px solid var(--yp-ink);vertical-align:middle}
.newsletter input{width:100%;padding:10px;font:inherit;margin:4px 0 8px;border:1px solid var(--rule)}
.newsletter button{width:100%;padding:10px;font:700 15px Georgia,serif;background:#bdb39b;color:#fff;border:0}
/* directory */
.toolbar{position:sticky;top:0;z-index:5;display:flex;flex-wrap:wrap;gap:8px;background:var(--paper2);border:2px solid var(--ink);padding:10px;margin:0 0 14px}
.toolbar input,.toolbar select{font:inherit;padding:9px;border:1px solid var(--rule);background:#fffaf0;min-width:0}
.toolbar input{flex:2 1 260px}.toolbar select{flex:1 1 180px}
.toolbar button{padding:9px 16px}
.count{flex-basis:100%;margin:2px 0 0;font-size:14px;color:var(--muted);font-style:italic}
.cat-index{margin-bottom:20px;border:1px solid var(--rule);background:#fffaf0;padding:8px 14px}
.cat-index summary{cursor:pointer;font-variant:small-caps;letter-spacing:.06em;font-weight:700}
.cols{columns:3 230px;font-size:14px;padding-left:22px;margin:8px 0}
.cols li{break-inside:avoid}.cols .n{color:var(--muted);font-size:12px}
.cat{margin-bottom:26px;scroll-margin-top:120px}
.yp-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;background:var(--yp);color:var(--yp-ink);border-top:3px solid var(--yp-ink);border-bottom:1px solid var(--yp-ink);padding:6px 10px;margin:0 0 6px;font:900 clamp(17px,2.4vw,22px)/1.15 "Franklin Gothic Medium","Arial Narrow",Arial,sans-serif;letter-spacing:.04em}
.yp-head small{font:italic 13px Georgia,serif;white-space:nowrap}
.listings{list-style:none;margin:0;padding:0;columns:2 340px;column-gap:28px;column-rule:1px solid var(--rule)}
.listing{break-inside:avoid;padding:8px 0 9px;border-bottom:1px dotted var(--rule)}
.l-name{font-size:17px;margin:0;text-transform:uppercase;letter-spacing:.02em}
.l-addr{font-size:15px}.missing{color:var(--muted);font-style:italic;font-size:14px}
.l-phone{display:inline-block;font:700 16px/1.4 "Courier New",Courier,monospace;text-decoration:none;color:var(--ink);margin-right:12px}
a.l-phone::before{content:"\260E\00a0";color:var(--red)}
a.l-phone:hover{color:var(--red);text-decoration:underline}
.l-web{font-size:14px;word-break:break-all}
.l-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:2px 10px;font:12px/1.5 system-ui,sans-serif;color:var(--muted);margin-top:3px}
.l-meta a{color:var(--muted)}.l-meta a.l-claim{font-style:normal;font-weight:700;color:var(--accent)}
.l-fb{font-size:14px}
.claim-bar{max-width:900px;margin:0 auto 14px;border:2px solid var(--ink);background:var(--yp);color:var(--yp-ink);padding:8px 14px;text-align:center;font-size:15px}
.claim-bar a{color:var(--yp-ink);font-weight:700}
.adv-contact{text-align:left}
.form-msg a{color:var(--yp-ink)}
.mail-note{font-size:14px;color:var(--muted);margin:10px 0 0}
.foot-claim a{font-weight:700}
.totop{font-size:13px;display:inline-block;margin-top:6px}
.noresults{text-align:center;font-style:italic;padding:30px}
/* prose */
.prose{max-width:820px;margin:0 auto}
.prose h2{border-bottom:2px solid var(--ink);padding-bottom:4px;margin-top:34px}
.prose p,.prose li{text-align:left}
.table-wrap{overflow-x:auto;margin:14px 0}
.prose table{border-collapse:collapse;font-size:14px;background:#fffaf0;min-width:600px}
.prose th,.prose td{border:1px solid var(--rule);padding:6px 8px;vertical-align:top;text-align:left}
.prose th{background:var(--paper2)}
.prose td a{word-break:break-word}
.rule{border:0;border-top:1px solid var(--rule);margin:26px 0}
/* voices */
.voices{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:18px}
.voice{background:#fffaf0;border:1px dashed var(--muted);padding:16px 18px}
.voice h2{font-size:21px;margin:10px 0 4px}.who{margin:0 0 10px;color:var(--muted)}
.quote-empty{border-left:4px solid var(--yp);background:var(--paper);padding:10px 12px;font-style:italic;color:var(--muted);font-size:15px;margin-bottom:10px}
.voice summary{cursor:pointer;font-weight:700}.voice ol{font-size:15px}
/* community */
.plain{padding-left:20px}.plain li{margin:6px 0}.muted{color:var(--muted);font-size:14px}
/* claim */
.notice{max-width:760px;margin:0 auto 16px;border:2px solid var(--red);background:#fff4ec;padding:10px 14px}
.claim{max-width:760px;margin:0 auto}
.claim fieldset{border:1px solid var(--rule);margin:0 0 14px;padding:10px 14px 14px}
.claim legend{font-variant:small-caps;letter-spacing:.06em;font-weight:700;padding:0 6px}
.claim label{display:block;margin:10px 0 3px;font-size:15px}
.claim input[type=text],.claim input[type=email],.claim input[type=tel],.claim input[type=url],.claim select,.claim textarea{width:100%;padding:10px;font:inherit;border:1px solid var(--rule);background:#fff}
.radios label{display:inline-block;margin-right:16px}
.claim button{padding:12px 22px}
.form-msg{border:1px solid var(--rule);background:var(--yp);padding:10px;margin-top:12px}
.placeholder{background:var(--yp);color:var(--yp-ink);padding:1px 5px}
.sitefoot{border-top:4px double var(--ink);background:var(--paper2);padding:18px 0 26px;font-size:15px;text-align:center}
.sitefoot p{margin:6px 0}
@media (max-width:760px){
 body{font-size:16px}.two-col{grid-template-columns:1fr}
 .mainnav a{padding:8px 9px;font-size:15px}
 .toolbar{position:static}
 .listings{columns:1}
}
@media print{.mainnav,.toolbar,.cat-index,.l-meta,.totop{display:none}body{background:#fff}}

/* ---- national additions ---- */
.natbar{background:var(--ink);color:var(--paper);font:14px/1.4 system-ui,-apple-system,"Segoe UI",sans-serif}
.natbar .wrap{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 16px;padding-top:6px;padding-bottom:6px}
.natbrand{color:var(--yp);font:700 16px Georgia,serif;text-decoration:none;letter-spacing:.04em}
.natnav{display:flex;flex-wrap:wrap;gap:2px}
.natnav a{color:var(--paper);text-decoration:none;padding:4px 9px;border-radius:2px}
.natnav a:hover,.natnav a[aria-current]{background:var(--yp);color:var(--yp-ink)}
.masthead.national{padding-bottom:16px}
.masthead.town .brand-name{font-size:clamp(28px,5vw,46px);color:var(--accent)}
.hero h1{color:var(--accent)}
.crumbs{font:13px/1.5 system-ui,sans-serif;color:var(--muted);margin:0 0 6px}
.crumbs a{color:var(--muted)}.crumbs .sep{margin:0 4px}
.btn{display:inline-block;background:var(--accent);color:#fff;text-decoration:none;padding:9px 16px;font-weight:700;border:2px solid var(--accent)}
.btn:hover{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.btn.big{font-size:18px;padding:12px 22px;margin:4px}
.btn.ghost{background:transparent;color:var(--accent);border-color:var(--accent)}
.btn.ghost:hover{background:var(--yp);color:var(--yp-ink);border-color:var(--ink)}
.national-hero h1{max-width:900px;margin-left:auto;margin-right:auto}
.national-hero .hero-sub{max-width:720px;font-size:19px}
.hero-cta{margin:18px 0 0}
.three{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px;margin:16px 0}
.three.four{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.who-for{margin-top:8px}.who-for h3{margin-bottom:4px}
.find-grid{display:grid;grid-template-columns:2fr 1fr;gap:24px;align-items:start}
.state-h{font-variant:small-caps;letter-spacing:.08em;margin:8px 0}.state-h a{color:var(--ink)}
.town-card{background:#fffaf0;border:1px solid var(--rule);border-left:8px solid var(--yp);box-shadow:3px 3px 0 var(--rule);padding:14px 18px;margin-bottom:14px}
.town-card h3{font-size:26px;margin:6px 0 2px}.town-card h3 a{color:var(--ink);text-decoration:none}
.town-card p{margin:4px 0}.tc-stats{color:var(--muted);font-style:italic;font-size:15px}
.town-cards{max-width:760px;margin:0 auto}
.badge.live{background:#2f6b2f;color:#fff;border-color:#1d451d}
.coming h3{margin-top:0}
.center-sec{text-align:center;margin-top:30px}
.center-card{max-width:760px;margin:24px auto;text-align:center}
.center{text-align:center}
.state-list{columns:4 170px;list-style:none;padding:0;font-size:15px}.state-list li{margin:3px 0}
/* forms */
.pform{max-width:760px}
.pform.claim{margin:0 auto}
.pform fieldset{border:1px solid var(--rule);background:#fffaf0;margin:0 0 14px;padding:10px 16px 14px}
.pform legend{font-variant:small-caps;letter-spacing:.06em;font-weight:700;padding:0 6px}
.field{margin:10px 0 0}
.field label{display:block;margin:0 0 3px;font-size:15px;font-weight:600}
.field.check label{font-weight:400;display:flex;gap:8px;align-items:flex-start}
.field.check input{margin-top:5px;width:18px;height:18px;flex:none}
.pform input[type=text],.pform input[type=email],.pform input[type=tel],.pform input[type=url],.pform select,.pform textarea{width:100%;padding:10px;font:inherit;border:1px solid var(--rule);background:#fff;border-radius:0}
.pform input:focus,.pform select:focus,.pform textarea:focus{outline:3px solid var(--yp);outline-offset:0;border-color:var(--ink)}
.pform input:user-invalid,.pform select:user-invalid{border-color:var(--red)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.hint{display:block;color:var(--muted);font-size:13px;margin-top:2px}
.req{color:var(--red)}
.form-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px}
.pform button{border:0;background:var(--ink);color:var(--paper);font:700 16px Georgia,serif;padding:12px 24px;cursor:pointer;letter-spacing:.04em}
.pform button{background:var(--accent)}.pform button:hover{background:var(--ink)}
.form-tag{font:italic 13px Georgia,serif;color:var(--muted)}
.form-msg{border:2px solid var(--yp-ink);background:var(--yp);color:var(--yp-ink);padding:10px 12px;margin-top:12px;font-weight:700}
.pform.compact .field{margin-top:6px}
.pform.compact button{width:100%}
.newsletter .pform input{margin:0}
.hp{display:none!important}
.form-done{border:2px solid var(--yp-ink);background:var(--yp);color:var(--yp-ink);padding:14px 16px;margin-top:12px}
.form-done p{margin:4px 0}.form-done .form-done-h{font-weight:700;font-size:18px}
.form-done:focus{outline:3px solid var(--accent);outline-offset:2px}
.form-msg.form-err{border-color:var(--red);background:#fbe9e4;color:#6b1d10}.form-msg.form-err a{color:#6b1d10}
.pform button[disabled]{opacity:.6;cursor:wait}
.prefill-note{max-width:760px;margin:0 auto 14px;border:1px dashed var(--ink);background:#fffaf0;padding:8px 12px;font-size:15px}
/* listings extra */
.l-outside{display:inline-block;font:700 11px/1.6 system-ui,sans-serif;text-transform:uppercase;letter-spacing:.06em;background:#e8dcc0;border:1px solid var(--muted);color:var(--ink);padding:0 6px;margin:2px 0}
.l-note{font:italic 12px Georgia,serif;color:var(--muted)}
.l-phone.nolink{margin-right:4px}
.cat-foot{font-size:13px;margin:6px 0 0}
.yp-head a{color:inherit;text-decoration:none}.yp-head a:hover{text-decoration:underline}
.chips{text-align:center;font-size:14px}
.chip{display:inline-block;border:1px solid var(--ink);padding:2px 9px;margin:2px;text-decoration:none;color:var(--ink);background:#fffaf0}
.chip.alt{background:var(--yp)}
.cat-layout{display:grid;grid-template-columns:1fr 260px;gap:26px;align-items:start}
.cat-layout .listings{columns:1}
.cat-side{position:sticky;top:10px;max-height:calc(100vh - 20px);overflow:auto;background:#fffaf0;border:1px solid var(--rule);padding:8px 12px;font-size:14px}
.cat-side h3{margin:4px 0 6px;font-variant:small-caps}
.side-list{padding-left:20px;margin:0}.side-list li{margin:2px 0}.side-list .cur a{font-weight:700;color:var(--ink)}.side-list .n{color:var(--muted);font-size:12px}
.prevnext{display:flex;justify-content:space-between;gap:12px;margin:18px 0;font-weight:700}
.missing-biz{margin-top:18px}
.toc{max-width:820px;margin:0 auto 10px}.toc ol{margin:0}
.fb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:18px}
.fb-list{list-style:none;padding:0;margin:0}
.fb-list li{padding:7px 0;border-bottom:1px dotted var(--rule)}
.fb-list a{font-weight:700}
.fb-meta{display:block;font:13px/1.4 system-ui,sans-serif;color:var(--muted)}
.footlinks{font-size:14px}
/* photos */
.toolbar button{background:var(--accent)}.toolbar button:hover{background:var(--ink)}
.photo{margin:0 0 16px}
.photo img{display:block;width:100%;height:auto;border:1px solid var(--rule);background:#e8dcc0}
.photo figcaption{margin-top:5px;font-size:14px;line-height:1.4;color:var(--muted)}
.photo .cap{font-style:italic;color:var(--ink)}
.credit{display:block;font:11.5px/1.4 system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--muted);margin-top:2px}
.credit a{color:var(--muted)}
.hero-photo{margin:4px 0 6px}
.hero-photo img{aspect-ratio:16/6.5;object-fit:cover;object-position:50% 60%;border:2px solid var(--ink);box-shadow:4px 4px 0 var(--rule)}
.hero-photo figcaption{text-align:center}
.photo-pair{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:26px 0 0}
.photo-pair img{aspect-ratio:3/2;object-fit:cover}
.tile.has-photo{padding-top:0}
.tile-photo{margin:0 -16px 10px}
.tile-photo img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;border-bottom:1px solid var(--rule)}
.tile-photo figcaption{padding:3px 16px 0}
.tile-photo .credit{font-size:10.5px}
.figs-right{float:right;clear:right;width:44%;margin:4px 0 12px 22px}
.figs-right .photo{margin-bottom:14px}
.prose h2,.prose hr{clear:both}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px;margin:16px 0}
.gallery .photo img{aspect-ratio:4/3;object-fit:cover}
.gallery .photo figcaption{font-size:13px}
.credit-list{max-width:900px;margin:0 auto}
.credit-card{display:grid;grid-template-columns:240px 1fr;gap:18px;align-items:start;background:#fffaf0;border:1px solid var(--rule);padding:14px;margin-bottom:14px;scroll-margin-top:20px}
.credit-card img{width:100%;height:auto;border:1px solid var(--rule)}
.credit-card h2{font-size:19px;margin:0 0 6px}
.credit-card:target{outline:3px solid var(--accent)}
@media (max-width:760px){.figs-right{float:none;width:100%;margin:0 0 14px}.photo-pair{grid-template-columns:1fr}.credit-card{grid-template-columns:1fr}.hero-photo img{aspect-ratio:4/3}}
@media (max-width:860px){.find-grid,.cat-layout{grid-template-columns:1fr}.cat-side{position:static;max-height:none}.fb-grid{grid-template-columns:1fr}}
@media (max-width:600px){.grid2{grid-template-columns:1fr}.natbar .wrap{justify-content:center}}
