.btn{background:#8E5F10;color:#fff}              /* white on #8E5F10 is about 5.7:1 (AA); #A9741A is about 3.9:1 */
.btn:hover{background:#6F4A0C}
.btn--ghost{background:transparent;color:#8E5F10;border:1px solid #8E5F10}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.fine{font-size:.85rem;color:var(--muted)}
.stack>*+*{margin-top:1rem}
.err{color:#9C1C1C;font-weight:600}
label.f{display:block;font-weight:600;margin:.75rem 0 .25rem}
input,select,textarea{font:inherit;width:100%;padding:.55rem .6rem;border:1px solid var(--border);border-radius:.4rem;background:#fff;color:var(--ink)}
input[type=checkbox],input[type=radio]{width:auto}
.row{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:.75rem}
.photo.ph{background:var(--night);display:grid;place-items:center;min-height:12rem}
/* calendar: solid = open, half = enquire first, hatched = booked, hatched + word = closed */
table.cal{border-collapse:collapse;width:100%;max-width:26rem;table-layout:fixed;margin:.5rem 0 1.5rem}
table.cal caption{font:600 1.1rem Oswald,sans-serif;text-align:left;padding-bottom:.4rem}
table.cal th{font-size:.75rem;color:var(--muted);font-weight:600}
table.cal td{height:2.4rem;text-align:center;border:1px solid var(--border);font-size:.9rem}
table.cal td.o{background:var(--open);color:#fff;font-weight:600}
table.cal td.q{background:linear-gradient(90deg,var(--open) 50%,#fff 50%);color:var(--ink)}
table.cal td.x,table.cal td.b{background:repeating-linear-gradient(45deg,#d9d4c4,#d9d4c4 4px,#fff 4px,#fff 8px);color:var(--ink)}
table.cal td.p,table.cal td.n{background:#f0ece0;color:#6b665b}
table.cal td.sel{outline:3px solid #8E5F10;outline-offset:-3px}
table.cal td button{all:unset;display:block;width:100%;height:100%;line-height:2.4rem;cursor:pointer}
table.cal td button:focus-visible{outline:3px solid #8E5F10}
.legend span{display:inline-block;margin-right:1rem;font-size:.85rem}
.legend span:before{content:"";display:inline-block;width:1rem;height:1rem;margin-right:.35rem;vertical-align:-.2rem;border:1px solid var(--border)}
.legend .o:before{background:var(--open)}
.legend .q:before{background:linear-gradient(90deg,var(--open) 50%,#fff 50%)}
.legend .x:before,.legend .b:before{background:repeating-linear-gradient(45deg,#d9d4c4,#d9d4c4 3px,#fff 3px,#fff 6px)}
/* search + map */
.srch{display:grid;grid-template-columns:minmax(18rem,26rem) 1fr;min-height:70vh}
.srch aside{padding:1rem;overflow:auto;max-height:80vh}
#map{min-height:24rem;height:100%}
.pin{background:url(/assets/img/pin.svg) no-repeat center/contain}
.pickmap{height:18rem;border:1px solid var(--border)}
@media (max-width:48rem){.srch{grid-template-columns:1fr}#map{height:50vh;order:-1}}
/* portal */
body.portal main{max-width:72rem;margin:0 auto;padding:1.5rem 1rem 4rem}
.tabs{display:flex;gap:.25rem;flex-wrap:wrap;border-bottom:2px solid var(--border);margin:1rem 0}
.tabs a{padding:.5rem .9rem;text-decoration:none;color:var(--ink);border-radius:.4rem .4rem 0 0}
.tabs a[aria-current],.tabs a[aria-selected=true]{background:#fff;border:1px solid var(--border);border-bottom-color:#fff;font-weight:600}
table.data{width:100%;border-collapse:collapse}
table.data th,table.data td{text-align:left;padding:.5rem;border-bottom:1px solid var(--border);vertical-align:top}
.banner{padding:.75rem 1rem;border-radius:.5rem;border:1px solid var(--border);background:#fff}
.banner.warn{border-color:#A9741A}
.badge{display:inline-block;padding:.1rem .6rem;border-radius:99px;border:1px solid var(--border);font-size:.8rem;background:#fff}
.toast{position:fixed;right:1rem;bottom:1rem;background:var(--night);color:var(--bone);padding:.7rem 1rem;border-radius:.5rem;z-index:20}
.monthbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;max-width:44rem}
.monthbar h2{margin:0}
table.cal--edit{max-width:44rem}
table.cal--edit td{height:auto;padding:0}
table.cal--edit button.daycell{all:unset;box-sizing:border-box;display:block;width:100%;min-height:3.6rem;padding:.3rem;cursor:pointer;text-align:left}
table.cal--edit button.daycell .d{display:block;font-weight:700}
table.cal--edit button.daycell .s{display:block;font-size:.72rem;color:var(--muted)}
table.cal--edit button.daycell[aria-pressed=true]{outline:3px solid #8E5F10;outline-offset:-3px;background:#f6ecd2}
table.cal--edit button.daycell:focus-visible{outline:3px solid #8E5F10;outline-offset:-3px}
.photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));gap:1rem}
.photos figure{margin:0}
.photos img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:var(--night)}
.photos figcaption{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.25rem}
.who{overflow-wrap:anywhere}
.msg{white-space:pre-wrap;overflow-wrap:anywhere;max-width:28rem}
.plans{display:grid;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:1rem}
.plan{border:1px solid var(--border);border-radius:.5rem;padding:1rem;background:#fff}
.plan .price{font-weight:600}
/* admin */
.confirm{margin-top:.5rem;padding:.6rem;border:1px solid var(--border);border-radius:.4rem;background:#fff;max-width:22rem}
.confirm input{display:block;width:100%;box-sizing:border-box}
table.data th[scope=row]{font-weight:600}
