:root{font-family:system-ui,-apple-system,'Segoe UI',sans-serif;--bg:#f6f3ee;--paper:#fff;--ink:#241a12;--muted:#736a60;--line:#e5e0d6;--accent:#7a4a2b;--wash:#f5ede1;color:var(--ink);background:var(--bg);font-synthesis:none}*{box-sizing:border-box}html,body{height:100%;margin:0}body{height:100dvh;display:flex;flex-direction:column;overflow:hidden;font-size:16px}button,input,select{font:inherit}button,a,label,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:var(--accent)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #b09a76;outline-offset:3px}button{color:var(--ink)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:12px 20px;background:var(--paper);border-top:3px solid var(--accent);border-bottom:1px solid var(--line);flex-shrink:0}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--ink)}.monogram{display:grid;place-items:center;width:36px;height:39px;background:var(--accent);color:white;font:30px/1 Georgia,serif;padding-right:3px;border-radius:3px}h1{font:600 22px/1.2 Georgia,serif;margin:0;letter-spacing:-.5px}.brand-divider{font-weight:400;color:#b4a28c;margin:0 3px}.brand-sub{display:block;font-size:10px;letter-spacing:1.1px;color:var(--muted);margin-top:5px}.topbar-right{display:flex;align-items:center;gap:22px}.edition{font-size:13px;color:var(--muted);white-space:nowrap}.view-switch{display:flex;border:1px solid var(--line);border-radius:6px;padding:3px;gap:3px;background:#faf8f4}.view-switch button{font-size:14px;border:0;border-radius:3px;padding:7px 13px;background:none;white-space:nowrap;color:var(--muted)}.view-switch button[aria-pressed=true]{background:var(--ink);color:#fff}.filters{padding:12px 20px 9px;background:var(--bg);border-bottom:1px solid var(--line);flex-shrink:0;z-index:5}#filter-toggle{display:none}.filter-row{display:flex;align-items:end;gap:18px;flex-wrap:wrap}fieldset{border:0;padding:0;margin:0;min-width:0}legend,.field>label{display:block;font-size:12px;font-weight:600;color:var(--muted);margin-bottom:6px;padding:0}.priority-options,.days{display:flex;gap:5px}.priority-options label,.days label{position:relative;cursor:pointer}.priority-options input,.days input{position:absolute;opacity:0;width:1px;height:1px}.priority-options span,.days span{display:flex;align-items:center;gap:5px;white-space:nowrap;padding:7px 10px;border:1px solid #dcd4c7;border-radius:5px;background:var(--paper);font-size:14px;line-height:20px}.priority-options b{font-size:15px;color:#987026}.priority-options label:nth-child(2) b{color:#37666a}.priority-options label:nth-child(3) b{color:#80786e}.priority-options input:checked+span,.days input:checked+span{background:#eee1ce;border-color:#a68152;color:#553817}.priority-options input:focus-visible+span,.days input:focus-visible+span{outline:3px solid #b09a76;outline-offset:2px}select{font-size:14px;padding:8px 28px 8px 9px;max-width:220px;height:36px;background:white;border:1px solid #dcd4c7;border-radius:5px;color:var(--ink)}.time-fields{display:flex;align-items:center;gap:7px}.time-fields input{padding:6px 5px;font-size:14px;width:100px;height:36px;background:white;border:1px solid #dcd4c7;border-radius:5px;color:var(--ink)}.time-fields>span{color:var(--muted);font-size:13px}.text-button{padding:9px 0;margin-left:auto;background:none;border:0;color:var(--accent);font-size:13px;text-decoration:underline;text-underline-offset:3px}.filter-meta{display:flex;align-items:center;gap:24px;margin-top:10px;font-size:12px;color:var(--muted);min-height:19px}.unknown-toggle{display:flex;align-items:center;gap:6px;cursor:pointer}.unknown-toggle input{accent-color:var(--accent);margin:0;width:14px;height:14px}.results-body{display:flex;flex:1;min-height:0;overflow:hidden}.map-panel{display:none;position:relative;min-width:0;min-height:0;flex:1}.map-visible .map-panel{display:block}#map{position:absolute;inset:0;z-index:0;background:#e8ebe3}.fit-map{border:1px solid #d7d0c4;background:white;box-shadow:0 1px 6px #35220e16;border-radius:5px;padding:9px 13px;font-size:13px}.map-legend{position:absolute;bottom:28px;left:12px;z-index:2;background:#ffffffed;padding:9px 12px;border:1px solid #e5e0d6;border-radius:5px;display:flex;gap:14px;color:#777065;font-size:12px;box-shadow:0 1px 6px #35220e0d}.legend-high{color:#986b1c}.legend-medium{color:#37666a}.list-panel{display:flex;flex-direction:column;min-height:0;min-width:0;background:white;flex:1}.map-visible .list-panel{flex:0 0 clamp(340px,30vw,430px);border-left:1px solid #cfc6b9}.results-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 18px 13px;border-bottom:1px solid var(--line);background:#fcfaf6}.results-heading h2{margin:0;font-size:17px;line-height:1.3;font-weight:650}.results-heading p{font-size:12px;color:var(--muted);margin:4px 0 0;line-height:1.5}.list-caption{font-size:10px;letter-spacing:1px;color:#968674;white-space:nowrap}.cards{overflow:auto;flex:1;min-height:0;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#cbbfae transparent}.card{border-bottom:1px solid var(--line);background:#fff;border-left:3px solid transparent;scroll-margin-block:12px}.card:hover{background:#fcfaf6}.card.selected{border-left-color:var(--accent);background:#faf4e9}.card summary{cursor:pointer;list-style:none;padding:14px 17px;position:relative}.card summary::-webkit-details-marker{display:none}.card summary:after{content:'＋';position:absolute;right:17px;top:16px;font-size:15px;color:#a09484}.card[open] summary:after{content:'−'}.card[open] summary{padding-bottom:7px}.card-top{display:flex;gap:8px;align-items:center;margin-bottom:6px;padding-right:18px}.district{font-size:11px;color:#857767;letter-spacing:.4px}.priority-badge{font-size:11px;color:#8c6424;font-weight:600}.priority-badge.medium{color:#37666a}.priority-badge.low{color:#777065}.card h3{font-size:16px;line-height:1.4;font-weight:600;margin:0 20px 8px 0;letter-spacing:-.2px}.status{display:inline-block;padding:3px 6px;border:1px solid #d6e3d4;background:#f3f8f1;color:#456340;border-radius:4px;font-size:11px;font-weight:500;line-height:1.3}.status.reservation{background:#f0f2fa;border-color:#d9dceb;color:#515b89}.status.partial{background:#fff9e9;border-color:#e9dfbf;color:#8c6b2a}.status.full{background:#fcf0ed;border-color:#e9d4cd;color:#985245}.status.unknown{background:#f4f3f1;border-color:#dedbd6;color:#777065}.card-body{padding:0 17px 16px}.address{font-size:13px;line-height:1.55;color:var(--muted);margin:3px 0 12px}.schedules{display:grid;gap:8px;border-top:1px solid #e9e2d6;padding-top:11px}.schedule{display:flex;justify-content:space-between;align-items:start;gap:13px;font-size:13px;line-height:1.45}.schedule strong{font-weight:500;white-space:nowrap}.schedule>span{text-align:right;overflow-wrap:anywhere}.unconfirmed{color:#96782f}.closed{color:#969084}.card-links{display:flex;justify-content:space-between;gap:12px;margin-top:14px}.card-links a{font-size:13px;text-underline-offset:3px}.show-on-map{background:none;border:0;border-top:1px solid var(--line);padding:11px 0 0;margin-top:13px;color:var(--accent);font-size:13px;width:100%;text-align:left}.location-pending{font-size:12px;color:var(--muted);margin:12px 0 0}.data-note{font-size:11px;color:var(--muted);line-height:1.6;padding:10px 17px;background:#fcfaf6;border-top:1px solid var(--line);flex-shrink:0}.data-note span{display:block}.data-note a{font-size:10px}.empty{padding:30px 20px;text-align:center}.empty h3{font-size:18px;line-height:1.4}.empty p{font-size:14px;color:var(--muted);line-height:1.6}.empty button{padding:9px 13px;color:white;border:0;border-radius:5px;background:var(--accent);font-size:14px}.loading{padding:20px;color:var(--muted)}.place-marker span{display:grid;place-items:center;border:2px solid white;width:28px;height:28px;color:white;border-radius:50%;box-shadow:0 1px 6px #30221160;font-size:14px;font-weight:600}.place-marker.selected span{outline:3px solid #352819;outline-offset:2px}.cluster-marker{display:grid;place-items:center;border-radius:50%;background:#fbfaf7eF;border:2px solid #8d7656;box-shadow:0 2px 8px #35220e38;color:#503b22;font:600 15px/1 system-ui;}.leaflet-container{font-family:inherit}.leaflet-control-attribution{font-size:10px!important}.leaflet-tooltip{font-family:inherit;white-space:normal;max-width:260px;font-size:13px}.leaflet-control-zoom a{color:#493927}.results-body:not(.map-visible) .cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));align-content:start;align-items:start;gap:12px;padding:18px;background:var(--bg)}.results-body:not(.map-visible) .card{border:1px solid var(--line);border-left:3px solid transparent;border-radius:6px}.results-body:not(.map-visible) .card.selected{border-left-color:var(--accent)}#place-dialog{border:0;position:fixed;inset:auto 0 0;margin:0 auto;width:min(100%,640px);max-height:70dvh;padding:12px 22px 25px;border-radius:16px 16px 0 0;color:var(--ink);box-shadow:0 -5px 40px #241a1240;overflow:auto}#place-dialog::backdrop{background:#241a122b}.dialog-handle{width:38px;height:4px;border-radius:4px;background:#d6cdbf;margin:0 auto 20px}.close-detail{position:absolute;right:12px;top:12px;width:32px;height:32px;border-radius:50%;border:1px solid var(--line);background:#fcfaf6;font-size:23px;line-height:1}.detail-heading{font:600 22px/1.3 Georgia,serif;margin:8px 24px 10px 0}.detail-content .address{margin-top:13px}.detail-content .status{font-size:13px}.detail-content .schedule,.detail-content .card-links a{font-size:14px}.group-links{display:flex;flex-direction:column;gap:8px;margin-top:17px;padding-top:13px;border-top:1px solid var(--line)}.group-links button{background:none;color:var(--accent);text-align:left;border:0;padding:5px 0;font-size:14px}.detail-location{font-size:12px;color:var(--muted);margin-top:12px}@media(min-width:1600px){.map-visible .list-panel{flex-basis:430px}}@media(max-width:1100px){.filter-row{gap:12px}.text-button{margin-left:0}.brand-sub{font-size:9px}.map-visible .list-panel{flex-basis:340px}}@media(max-width:760px){.topbar{padding:9px 12px;gap:10px}.monogram{width:30px;height:33px;font-size:25px}.brand{gap:8px}h1{font-size:18px}.brand-sub{font-size:8px;letter-spacing:.45px;max-width:185px;line-height:1.5}.brand-divider{margin:0}.topbar-right{gap:7px}.edition{display:none}.view-switch{padding:2px;gap:1px}.view-switch button{font-size:12px;padding:7px 9px}.desktop-only{display:none}.filters{padding:0 12px;position:relative}#filter-toggle{display:flex;align-items:center;gap:6px;width:100%;border:0;padding:11px 0;background:none;font-size:14px;font-weight:600;text-align:left}#filter-count{font-size:12px;color:var(--muted);font-weight:400}.toggle-icon{margin-left:auto;font-size:17px}#filter-content{display:none;position:absolute;top:100%;left:0;right:0;background:var(--bg);border-bottom:1px solid #d4c8b5;padding:15px;box-shadow:0 8px 18px #241a1220;max-height:calc(100dvh - 140px);overflow:auto}.filters.expanded #filter-content{display:block}.filter-row{display:grid;grid-template-columns:1fr;gap:15px}.priority-options,.days{gap:5px}.priority-options span,.days span{padding:7px 11px;font-size:14px}.time-fields input{width:125px;font-size:16px}.access-field select{width:100%;max-width:none}.filter-meta{display:block;font-size:12px;line-height:1.6;margin-top:14px}.filter-meta #time-hint{display:block;margin-top:10px}.text-button{justify-self:start;padding:0}.map-visible .list-panel{display:none}.map-visible .map-panel{width:100%;flex:1}.map-legend{bottom:25px;font-size:12px}.fit-map{padding:8px 11px}.results-heading{padding:12px 15px}.results-body:not(.map-visible) .cards{display:block;padding:0;background:white}.results-body:not(.map-visible) .card{border-radius:0;border:0;border-left:3px solid transparent;border-bottom:1px solid var(--line)}.card summary{padding:14px 15px}.card-body{padding:0 15px 16px}.data-note{padding:9px 15px}.list-caption{display:none}.unknown-toggle{font-size:14px}#place-dialog .card-links{flex-wrap:wrap}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}@media(max-height:540px) and (min-width:761px){.filters{padding-top:7px;padding-bottom:6px}.filter-meta{margin-top:6px}.topbar{padding-block:7px}.data-note{display:none}}
.lang-toggle{display:inline-flex;padding:0;border:1px solid currentColor;border-radius:4px;background:transparent;color:inherit;cursor:pointer;overflow:hidden;font:inherit;font-size:.75rem;font-weight:600;letter-spacing:.05em}
.lang-toggle span{padding:.3rem .5rem;opacity:.55}
.lang-toggle span.on{background:#7a4a2b;color:#fff;opacity:1}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%}.dot.free{background:#5c9150}.dot.booking{background:#5a67a8}.dot.full{background:#c0604c}.dot.unknown{background:#b3aca2}
.dot.mixed{background:#c9a13b}.card summary .status+.status{margin-left:4px}.filter-meta{flex-wrap:wrap;row-gap:6px}
.activities{margin:0 0 12px;padding:0 0 0 17px;font-size:12.5px;line-height:1.5;color:var(--muted)}.activities li{margin:2px 0}
.status.rare{background:#f6efe2;border-color:#e2d2b4;color:#8a6a2f}
#navbar{display:flex;align-items:center;gap:6px;flex-wrap:nowrap;padding:5px 14px;background:var(--ink);font-size:12.5px;flex-shrink:0}
#navbar .wordmark{color:#fff;font-weight:700;text-decoration:none;white-space:nowrap}
#navbar .nav-sep{color:#8a7f72}
#navbar .nav-home{color:#cbbfae;text-decoration:none;white-space:nowrap}
#navbar a:hover{text-decoration:underline}
#navbar .build{margin-left:auto;color:#8a7f72;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px}
.hours{flex-wrap:wrap}
@media(max-width:760px){#navbar{font-size:11px;padding:4px 12px}#navbar .nav-home{overflow:hidden;text-overflow:ellipsis}}
#filter-count{font-weight:700;color:var(--ink)}.toggle-icon{font-size:14px;font-weight:600;color:var(--accent)}
.map-buttons{position:absolute;top:12px;right:12px;z-index:2;display:flex;gap:6px}.map-buttons button{border:1px solid #d7d0c4;background:white;box-shadow:0 1px 6px #35220e16;border-radius:5px;padding:9px 13px;font-size:13px}#locate.active{background:#2f6fd0;border-color:#2f6fd0;color:#fff}

.table-wrap{overflow:auto;flex:1;min-height:0;background:var(--paper)}
.places-table{border-collapse:collapse;width:100%;font-size:13px;table-layout:fixed}
.places-table th:nth-child(1){width:auto}.places-table th:nth-child(2){width:46px}.places-table th:nth-child(3),.places-table th:nth-child(4){width:124px}.places-table th:nth-child(5){width:80px}.places-table th:nth-child(6){width:104px}
.places-table th{position:sticky;top:0;z-index:1;background:#fcfaf6;border-bottom:1px solid #d9d2c6;text-align:left;padding:0;white-space:nowrap}
.places-table th button{width:100%;text-align:left;background:none;border:0;padding:9px 10px;font:inherit;font-size:11.5px;font-weight:700;letter-spacing:.3px;color:var(--muted);text-transform:uppercase}
.places-table td{padding:7px 10px;border-bottom:1px solid var(--line);vertical-align:top;line-height:1.4}
.places-table tbody tr{cursor:pointer}
.places-table tbody tr:hover,.places-table tbody tr:focus-visible{background:#faf4e9}
.places-table td:nth-child(2){text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}
.places-table td:nth-child(3),.places-table td:nth-child(4){font-variant-numeric:tabular-nums;font-size:11.5px;overflow-wrap:anywhere}
.places-table td:nth-child(6){white-space:nowrap;color:var(--muted);font-size:12px}
.t-rare{color:#8a6a2f}
.t-full{color:#985245}
.places-table .t-letter{margin-left:4px}
@media(min-width:761px){.places-table.only-sat th:nth-child(4),.places-table.only-sat td:nth-child(4){opacity:.45}}
@media(max-width:760px){.places-table{font-size:12px}
.places-table.only-sat th:nth-child(4),.places-table.only-sat td:nth-child(4),.places-table.only-sun th:nth-child(3),.places-table.only-sun td:nth-child(3){display:none}
.places-table .t-stars,.places-table .t-entry{display:none}
.places-table th:nth-child(5),.places-table th:nth-child(6){width:34px}
.places-table td:nth-child(5),.places-table td:nth-child(6){text-align:center;padding-left:2px;padding-right:2px}.places-table td,.places-table th button{padding:6px 5px}.places-table th:nth-child(2){width:32px}.places-table th:nth-child(3),.places-table th:nth-child(4){width:78px}.places-table th:nth-child(5){width:52px}.places-table th:nth-child(6){width:64px}.places-table td:nth-child(3),.places-table td:nth-child(4){font-size:10.5px}}

.marks{display:inline-flex;gap:3px;float:right;margin-left:6px}
.mark-btn{border:1px solid var(--line);background:var(--paper);border-radius:5px;width:28px;height:26px;padding:0;font-size:13px;line-height:1}
.mark-btn.love{color:#c0392b}
.mark-btn.hide{color:#8a8279}
.mark-btn:hover{border-color:#b9ad99}
.mark-btn.love.on{background:#fdeef0;border-color:#c0392b;color:#c0392b}
.mark-btn.hide.on{color:#5f584f}
.card.mark-hide{opacity:.5}
.card.mark-hide h3{text-decoration:line-through}
.card.mark-love{border-left-color:#c0392b}
.places-table tr.mark-hide{opacity:.5}
.places-table tr.mark-hide td:first-child b{text-decoration:line-through}
.places-table th:nth-child(7){width:70px}
.places-table td:nth-child(7){padding:4px 6px}
.places-table .marks{float:none}
.detail-content .marks{float:right}
/* A hearted place wears a red band outside its circle, visible at any zoom. */
.place-marker span.loved{box-shadow:0 0 0 3px #c0392b,0 2px 7px #30221166}
@media(max-width:760px){.places-table th:nth-child(7){width:62px}.mark-btn{width:26px;height:24px}}
.mark-btn.hide.on{background:#efece7;border-color:#cfc7ba}

.priority-options label:first-child b{color:#8a5b12}
.priority-options label:nth-child(2) b{color:#987026}
.priority-options label:nth-child(3) b{color:#37666a}
.priority-options label:nth-child(4) b{color:#80786e}
.priority-badge.aplus{color:#8a5b12;font-weight:700}
.legend-aplus{color:#8a5b12;font-weight:600}
/* A+ wears a gold band, a hearted place a red one; both can show at once. */
.place-marker span.aplus{box-shadow:0 0 0 3px #d9b45e,0 2px 7px #30221166}
.place-marker span.aplus.loved{box-shadow:0 0 0 3px #c0392b,0 0 0 6px #d9b45e,0 2px 7px #30221166}
.cluster-marker.loved{border-color:#c0392b;box-shadow:0 0 0 3px #c0392b,0 2px 8px #35220e38}
