:root{--ink:#16302f;--muted:#637675;--line:#dce7e5;--paper:#fff;--soft:#f3f8f7;--brand:#087f78;--brand-dark:#05635e;--open:#0b8a5a;--closed:#667574;--danger:#b42318;--shadow:0 18px 50px rgba(18,48,47,.16);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);font-size:16px}
*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--soft)}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:var(--brand)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.muted,.hint,.optional{color:var(--muted)}.hint{font-size:.875rem;margin:.6rem 0 0}.optional{font-weight:400}.eyebrow{color:var(--brand);font-size:.75rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.topbar{height:72px;background:rgba(255,255,255,.96);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 clamp(1rem,3vw,2.25rem);position:relative;z-index:1001}.brand{display:flex;align-items:center;gap:.7rem;color:var(--ink);font-weight:800;font-size:1.13rem;text-decoration:none}.brand img{width:38px;height:38px}.brand-mark{background:var(--brand);color:#fff;border-radius:10px;padding:.45rem;font-weight:900}.brand-large{font-size:1.25rem;margin-bottom:2rem}.top-actions{display:flex;gap:.6rem}
.button{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:44px;padding:.65rem 1rem;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--ink);font-weight:700;text-decoration:none;transition:.16s ease}.button:hover{border-color:#aabfbc;background:var(--soft)}.button.primary{background:var(--brand);border-color:var(--brand);color:#fff}.button.primary:hover{background:var(--brand-dark)}.button:disabled{opacity:.55;cursor:wait}.icon-button span:first-child{font-size:1.4rem}.text-button{border:0;background:none;color:var(--brand);font-weight:700;padding:.35rem}
.map-shell{height:calc(100% - 72px);position:relative}.map-shell #map{height:100%;width:100%;background:#dbe8e5}.search-panel{position:absolute;z-index:500;top:1rem;left:50%;transform:translateX(-50%);width:min(560px,calc(100% - 2rem));display:grid;gap:.5rem}.search-box{height:52px;background:#fff;border-radius:15px;display:flex;box-shadow:0 8px 30px rgba(18,48,47,.18);overflow:hidden;border:1px solid rgba(255,255,255,.8)}.search-box input{flex:1;border:0;outline:0;padding:0 1rem;min-width:0;color:var(--ink)}.search-box button{border:0;background:var(--brand);color:#fff;font-size:1.55rem;width:54px}.legend{justify-self:center;background:rgba(255,255,255,.94);box-shadow:0 4px 16px rgba(18,48,47,.1);padding:.4rem .75rem;border-radius:999px;font-size:.75rem;display:flex;gap:.8rem}.legend span{display:flex;align-items:center;gap:.3rem}.dot{width:9px;height:9px;border-radius:50%;display:inline-block}.dot.open{background:var(--open)}.dot.closed{background:var(--closed)}.legal-link{position:absolute;z-index:500;left:.7rem;bottom:.7rem;background:rgba(255,255,255,.94);border-radius:8px;padding:.35rem .55rem;color:var(--ink);font-size:.72rem;text-decoration:none;box-shadow:0 3px 12px rgba(18,48,47,.12)}
.wc-marker-wrap{background:none;border:0}.wc-marker{width:44px;height:44px;display:grid;place-items:center;background:var(--open);color:#fff;border:3px solid #fff;border-radius:50% 50% 50% 8px;transform:rotate(-45deg);box-shadow:0 5px 15px rgba(18,48,47,.28);position:relative}.wc-marker b{font-size:.74rem;transform:rotate(45deg)}.wc-marker.is-closed{background:var(--closed)}.wc-marker i{position:absolute;right:-6px;top:-6px;transform:rotate(45deg);font-style:normal;background:#fff;color:var(--closed);border:2px solid var(--closed);border-radius:50%;width:20px;height:20px;display:grid;place-items:center;font-weight:900;line-height:1}.leaflet-tooltip{border:0!important;border-radius:10px!important;box-shadow:0 5px 20px rgba(18,48,47,.18)!important;padding:.55rem .7rem!important}
.toast{position:fixed;z-index:3000;bottom:1.25rem;left:50%;transform:translate(-50%,120px);background:var(--ink);color:#fff;border-radius:12px;padding:.8rem 1.1rem;box-shadow:var(--shadow);opacity:0;transition:.25s;max-width:min(440px,calc(100% - 2rem));text-align:center}.toast.visible{opacity:1;transform:translate(-50%,0)}.toast.error{background:var(--danger)}
.dialog{padding:0;border:0;border-radius:20px;background:var(--paper);color:var(--ink);box-shadow:var(--shadow);width:min(720px,calc(100% - 2rem));max-height:min(90vh,900px);overflow:auto}.dialog::backdrop{background:rgba(13,35,34,.56);backdrop-filter:blur(3px)}.dialog-close{position:sticky;float:right;z-index:3;top:.75rem;margin:.75rem .75rem -3rem 0;width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:rgba(255,255,255,.95);font-size:1.5rem;line-height:1}.dialog-head{padding:2rem 2rem 1rem}.dialog-head h1,.detail-body h1{font-size:clamp(1.65rem,5vw,2.15rem);line-height:1.1;margin:.4rem 0}.dialog-head p{margin:.5rem 0;color:var(--muted)}.form-section{padding:1.3rem 2rem;border-top:1px solid var(--line)}.form-section h2,.comments h2{font-size:1rem;margin:0 0 1rem}.section-title{display:flex;align-items:center;justify-content:space-between;gap:1rem}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.form-grid .full{grid-column:1/-1}label{display:grid;gap:.4rem;font-weight:700;font-size:.875rem}input,select,textarea{width:100%;border:1px solid #b9cbc8;border-radius:10px;padding:.7rem .75rem;background:#fff;color:var(--ink);min-height:44px}textarea{resize:vertical}input:focus,select:focus,textarea:focus{outline:3px solid rgba(8,127,120,.16);border-color:var(--brand)}small{font-size:.76rem;color:var(--muted)}.coordinate-grid{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}.coordinate-grid label:first-child{grid-column:1/-1}.coordinate-grid .button{align-self:end}.file-field{border:1px dashed #aabfbc;border-radius:12px;padding:1rem;background:var(--soft)}.hours-grid{display:grid;gap:.4rem}.hours-row{display:grid;grid-template-columns:1fr 112px auto 112px;align-items:center;gap:.6rem}.hours-row input[type=time]{min-height:40px;padding:.4rem}.day-toggle{display:flex;align-items:center;gap:.55rem}.day-toggle input{width:18px;min-height:18px;accent-color:var(--brand)}.dialog-actions{position:sticky;bottom:0;background:#fff;border-top:1px solid var(--line);padding:1rem 2rem;display:flex;justify-content:flex-end;gap:.7rem}
.gallery{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;background:#dce8e6}.gallery img{width:100%;height:270px;object-fit:cover;flex:0 0 100%;scroll-snap-align:start}.detail-body{padding:1.75rem 2rem 2rem}.detail-top{display:flex;align-items:center;justify-content:space-between;gap:.8rem}.category{font-size:.77rem;text-transform:uppercase;letter-spacing:.08em;font-weight:800;color:var(--brand)}.status{font-size:.8rem;font-weight:800;border-radius:999px;padding:.35rem .6rem}.status.open{background:#e8f6ef;color:#087849}.status.closed{background:#eef1f1;color:#53605f}.address{color:var(--muted)}.ratings{margin:1.2rem 0;display:grid;grid-template-columns:1fr 1fr;gap:.6rem;background:var(--soft);border-radius:14px;padding:1rem}.ratings>div{display:grid;grid-template-columns:1fr auto;align-items:center}.ratings>div>span:first-child{grid-column:1/-1;color:var(--muted);font-size:.8rem}.ratings .overall{grid-column:1/-1;border-bottom:1px solid var(--line);padding-bottom:.75rem;margin-bottom:.2rem}.ratings .overall strong{font-size:1.25rem}.ratings>small{grid-column:1/-1}.stars{color:#e39d14;letter-spacing:.03em;margin-right:.35rem}.hours-list{border-top:1px solid var(--line);margin:.8rem 0}.hours-list>div{display:flex;justify-content:space-between;padding:.45rem 0;border-bottom:1px solid var(--line);font-size:.85rem}.route-button{margin:1rem 0}.comments{border-top:1px solid var(--line);margin-top:1rem;padding-top:1.3rem}.comment{padding:.9rem 0;border-bottom:1px solid var(--line)}.comment div{display:flex;justify-content:space-between;gap:1rem}.comment time{color:var(--muted);font-size:.78rem}.comment p{margin:.4rem 0}.review-form{background:var(--soft);border-radius:14px;padding:1rem;margin-top:1.2rem}.review-form h3{margin:0 0 1rem;font-size:1rem}.review-form .button{margin-top:1rem}.loading{padding:4rem;text-align:center;color:var(--muted)}
.install-page{min-height:100%;display:grid;place-items:center;padding:2rem}.install-card{width:min(680px,100%);background:#fff;border-radius:20px;padding:2rem;box-shadow:var(--shadow)}.install-card h1{margin:.4rem 0}.notice{padding:.8rem 1rem;border-radius:10px;margin:1rem 0;background:#e8f6ef}.notice.error{background:#fff0ef;color:var(--danger)}code{background:var(--soft);padding:.15rem .35rem;border-radius:4px}
@media(max-width:680px){.topbar{height:64px;padding:0 .75rem}.brand span{display:none}.top-actions{gap:.35rem}.button-label{display:none}.map-shell{height:calc(100% - 64px)}.search-panel{top:.65rem}.legend{font-size:.68rem}.dialog{width:100%;max-width:none;height:94vh;max-height:none;margin:auto 0 0;border-radius:20px 20px 0 0}.dialog-head,.form-section,.detail-body{padding-left:1rem;padding-right:1rem}.dialog-actions{padding:1rem}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.coordinate-grid{grid-template-columns:1fr 1fr}.coordinate-grid label:first-child,.coordinate-grid .button{grid-column:1/-1}.hours-row{grid-template-columns:1fr 88px auto 88px;gap:.3rem}.hours-row input[type=time]{font-size:.8rem;padding:.3rem}.ratings{grid-template-columns:1fr}.ratings>small{grid-column:auto}.gallery img{height:220px}.detail-top{align-items:flex-start;flex-direction:column}.install-page{padding:.75rem}.install-card{padding:1.2rem}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
