:root{--ink:#17211b;--muted:#68736c;--paper:#f7f8f5;--line:#dfe4df;--green:#1e8a5a;--amber:#d89521;--red:#d65145;--gray:#87918b;--white:#fff;--shadow:0 12px 36px rgba(23,33,27,.14)}
*{box-sizing:border-box}[hidden]{display:none!important}html,body{height:100%;margin:0}body{font-family:Inter,Pretendard,"Noto Sans KR",system-ui,sans-serif;color:var(--ink);background:var(--paper);letter-spacing:0;overflow:hidden}
button,a{font:inherit}.topbar{height:68px;padding:0 20px;display:flex;align-items:center;justify-content:space-between;background:rgba(247,248,245,.96);border-bottom:1px solid var(--line);position:relative;z-index:1000}.brand{display:flex;align-items:center;gap:11px}.brand-mark{display:grid;place-items:center;width:38px;height:38px;background:var(--ink);color:white;font-size:12px;font-weight:800;border-radius:7px}.brand div{display:flex;flex-direction:column}.brand strong{font-size:16px}.brand span:last-child{font-size:12px;color:var(--muted);margin-top:2px}.icon-button{width:42px;height:42px;padding:9px;border:1px solid var(--line);border-radius:7px;background:var(--white);color:var(--ink);cursor:pointer}.icon-button:hover{background:#edf5f0}.icon-button svg{width:100%;fill:none;stroke:currentColor;stroke-width:1.8}
main{height:calc(100% - 68px);display:grid;grid-template-columns:minmax(0,1fr) 390px}.map-region{position:relative;min-width:0}.map-region,#map{height:100%}.leaflet-container{font-family:inherit;background:#e9eeea}.legend{position:absolute;left:16px;bottom:18px;z-index:500;background:rgba(255,255,255,.94);border:1px solid var(--line);box-shadow:0 4px 18px rgba(23,33,27,.1);border-radius:6px;padding:9px 11px;display:flex;gap:12px;font-size:11px;color:var(--muted)}.legend span{display:flex;align-items:center;gap:5px}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--gray);flex:0 0 auto}.dot.quiet{background:var(--green)}.dot.moderate{background:var(--amber)}.dot.busy{background:var(--red)}.dot.unknown{background:var(--gray)}.map-message{position:absolute;z-index:600;top:16px;left:50%;transform:translateX(-50%);padding:10px 14px;background:var(--ink);color:white;border-radius:6px;font-size:13px;box-shadow:var(--shadow);max-width:calc(100% - 32px);text-align:center}
.place-search{position:absolute;z-index:600;top:16px;left:50%;transform:translateX(-50%);width:min(420px,calc(100% - 120px));height:46px;display:flex;background:white;border:1px solid var(--line);border-radius:7px;box-shadow:0 5px 18px rgba(23,33,27,.16);overflow:hidden}.place-search input{min-width:0;flex:1;border:0;outline:0;padding:0 14px;color:var(--ink);font-size:14px}.place-search button{width:46px;border:0;border-left:1px solid var(--line);background:white;padding:12px;cursor:pointer;color:var(--ink)}.place-search button:hover{background:#edf5f0}.place-search svg{width:100%;fill:none;stroke:currentColor;stroke-width:2}.place-search:focus-within{border-color:#7ea88f}.map-message{top:72px}
.sheet{position:relative;background:var(--white);border-left:1px solid var(--line);padding:30px 26px 18px;display:flex;flex-direction:column;min-width:0;overflow:auto;z-index:700}.sheet-handle{display:none}.empty-state{margin:auto 0}.eyebrow{margin:0 0 7px;color:var(--green);font-size:12px;font-weight:800}.empty-state h1,.detail h1{font-size:25px;line-height:1.25;margin:0;overflow-wrap:anywhere}.empty-state>p:last-child{font-size:14px;line-height:1.65;color:var(--muted);max-width:290px}.detail{display:flex;flex-direction:column;min-height:100%}.detail-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.status-badge{white-space:nowrap;border-radius:5px;padding:7px 9px;color:white;background:var(--gray);font-size:12px;font-weight:800}.status-badge.quiet{background:var(--green)}.status-badge.moderate{background:var(--amber)}.status-badge.busy{background:var(--red)}.meta{margin-top:22px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.meta-row{display:flex;justify-content:space-between;gap:20px;padding:12px 0;font-size:13px}.meta-row+.meta-row{border-top:1px solid #edf0ed}.meta-row span{color:var(--muted)}.meta-row strong{text-align:right}.report-block{margin-top:26px}.report-block>p{font-size:14px;font-weight:800;margin:0 0 11px}.report-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.report-buttons button{height:43px;border:1px solid var(--line);border-radius:6px;background:white;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;font-weight:700;font-size:13px}.report-buttons button:hover{background:#f2f5f2}.report-buttons button:disabled{opacity:.55;cursor:wait}.report-block small{display:block;color:var(--muted);font-size:11px;margin-top:10px;min-height:16px}.route-link{margin-top:22px;display:flex;align-items:center;justify-content:center;height:46px;border-radius:6px;background:var(--ink);color:white;text-decoration:none;font-size:14px;font-weight:800}.route-link:hover{background:#2b3930}.sheet footer{margin-top:auto;padding-top:28px;color:#8b948e;font-size:10px;line-height:1.5}
.toilet-marker{border:0;background:transparent}.marker-pin{width:30px;height:30px;border-radius:50% 50% 50% 4px;transform:rotate(-45deg);background:var(--gray);border:3px solid white;box-shadow:0 3px 9px rgba(23,33,27,.3)}.marker-pin::after{content:"WC";position:absolute;inset:0;display:grid;place-items:center;transform:rotate(45deg);color:white;font-size:8px;font-weight:900}.marker-pin.quiet{background:var(--green)}.marker-pin.moderate{background:var(--amber)}.marker-pin.busy{background:var(--red)}
@media(max-width:760px){.topbar{height:60px;padding:0 14px}.brand-mark{width:34px;height:34px}.icon-button{width:40px;height:40px}main{height:calc(100% - 60px);display:block;position:relative}.map-region{height:100%}.place-search{top:10px;width:calc(100% - 90px);height:42px;margin-left:19px}.place-search input{font-size:13px}.map-message{top:62px}.legend{left:10px;bottom:218px;right:10px;justify-content:center;gap:9px;overflow:hidden}.sheet{position:absolute;left:0;right:0;bottom:0;height:205px;border-left:0;border-top:1px solid var(--line);border-radius:8px 8px 0 0;padding:17px 17px 10px;box-shadow:0 -8px 28px rgba(23,33,27,.12);transition:height .2s ease}.sheet:has(.detail:not([hidden])){height:min(52vh,430px)}.sheet-handle{display:block;width:38px;height:4px;border-radius:3px;background:#cdd3ce;margin:-8px auto 13px}.empty-state{margin:8px 0 auto}.empty-state h1,.detail h1{font-size:20px}.empty-state>p:last-child{margin:7px 0}.detail-heading{flex-shrink:0}.meta{margin-top:15px}.meta-row{padding:9px 0}.report-block{margin-top:16px}.route-link{margin-top:14px;height:42px}.sheet footer{display:none}.legend span{font-size:10px}.leaflet-control-zoom{margin-top:10px!important}}
