:root{--ink:#17211e;--muted:#65716d;--paper:#f5f3ec;--panel:#fffef9;--forest:#17483a;--forest2:#236550;--lime:#d9f178;--line:#dcded7;--danger:#a73737;--shadow:0 16px 42px rgba(18,37,31,.18)}
*{box-sizing:border-box}html,body{height:100%;margin:0;font-family:Inter,Pretendard,"Noto Sans KR",system-ui,sans-serif;color:var(--ink);background:var(--paper)}button,input,select,textarea{font:inherit}.hidden{display:none!important}.app,#map{position:fixed;inset:0}.leaflet-control-attribution{font-size:10px}.leaflet-control-zoom{margin-top:112px!important}
.topbar{position:fixed;z-index:500;top:18px;left:18px;right:18px;height:68px;display:flex;align-items:center;justify-content:space-between;pointer-events:none}.brand,.topbar button{pointer-events:auto}.brand{display:flex;gap:11px;align-items:center;background:rgba(255,254,249,.94);backdrop-filter:blur(14px);padding:9px 16px 9px 10px;border:1px solid rgba(255,255,255,.8);border-radius:18px;box-shadow:var(--shadow)}.brand-mark,.auth-logo{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:var(--forest);color:var(--lime);font-weight:900;font-family:Georgia,serif;font-style:italic;font-size:24px}.brand strong{display:block;font-size:18px}.brand small{display:block;color:var(--muted);font-size:11px;margin-top:1px}.icon-button{border:0;background:rgba(255,254,249,.94);border-radius:12px;padding:11px 14px;box-shadow:0 5px 18px rgba(0,0,0,.1);cursor:pointer;color:var(--muted)}
.search-panel{position:fixed;z-index:600;top:98px;left:18px;width:min(410px,calc(100vw - 36px))}.search-panel form{display:flex;background:var(--panel);padding:6px;border-radius:16px;box-shadow:var(--shadow)}.search-panel input{flex:1;min-width:0;border:0;background:transparent;padding:0 13px;outline:none}.search-panel button{border:0;border-radius:11px;background:var(--forest);color:white;padding:12px 18px;font-weight:700}.search-results{margin-top:7px;background:var(--panel);border-radius:15px;box-shadow:var(--shadow);overflow:hidden;max-height:320px;overflow-y:auto}.search-result{padding:13px 15px;border-bottom:1px solid var(--line);cursor:pointer}.search-result:last-child{border:0}.search-result strong,.search-result small{display:block}.search-result small{color:var(--muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.drawer{position:fixed;z-index:490;left:18px;top:166px;bottom:18px;width:360px;background:rgba(255,254,249,.96);backdrop-filter:blur(15px);border-radius:22px;box-shadow:var(--shadow);padding:20px;display:flex;flex-direction:column}.drawer-handle{display:none}.drawer-heading{display:flex;align-items:center;justify-content:space-between}.drawer-heading small{color:var(--forest2);font-weight:700}.drawer-heading h1{font-family:Georgia,"Noto Serif KR",serif;font-size:25px;margin:5px 0 14px}.filters{display:flex;gap:7px;overflow-x:auto;padding-bottom:13px}.chip{border:1px solid var(--line);border-radius:999px;background:white;padding:8px 12px;color:var(--muted);white-space:nowrap;cursor:pointer}.chip.active{background:var(--forest);border-color:var(--forest);color:white}.place-list{overflow:auto;display:flex;flex-direction:column;gap:9px;padding:1px 2px 10px}.empty{padding:28px 15px;text-align:center;color:var(--muted);line-height:1.65}.place-card{border:1px solid var(--line);background:white;border-radius:15px;padding:13px;cursor:pointer;transition:.15s}.place-card:hover{transform:translateY(-1px);border-color:#a9b7b0}.place-card-top{display:flex;justify-content:space-between;gap:10px}.category{font-size:11px;color:var(--forest2);font-weight:800}.place-card h3{font-size:16px;margin:4px 0}.place-card p{font-size:12px;color:var(--muted);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.distance{white-space:nowrap;background:#eef4ef;color:var(--forest);border-radius:999px;padding:5px 8px;font-size:12px;height:max-content}.visited{opacity:.56}
.map-actions{position:fixed;z-index:520;right:18px;bottom:24px;display:flex;gap:9px}.map-actions button{height:52px;border-radius:16px;padding:0 18px;font-weight:800;box-shadow:var(--shadow);cursor:pointer}.primary-action{border:0;background:var(--forest);color:white}.primary-action span{color:var(--lime);font-size:19px}.secondary-action{border:1px solid white;background:rgba(255,254,249,.94);color:var(--ink)}.secondary-action.active{background:var(--lime);border-color:var(--lime)}.mobile-only{display:none}.gps-panel{position:fixed;z-index:520;right:18px;bottom:88px;background:#10241e;color:#dbe7e2;padding:10px 13px;border-radius:11px;font:12px ui-monospace,monospace;box-shadow:var(--shadow)}
.auth-view{min-height:100%;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 20% 10%,#436a54 0,#1d3c32 28%,#0c1815 70%)}.auth-card{width:min(430px,100%);background:var(--panel);padding:38px;border-radius:28px;box-shadow:0 30px 80px rgba(0,0,0,.35)}.auth-logo{width:58px;height:58px;font-size:32px}.eyebrow{font-size:11px;letter-spacing:.2em;color:var(--forest2);font-weight:900;margin:23px 0 8px}.auth-card h1{font-family:Georgia,"Noto Serif KR",serif;font-size:31px;margin:0 0 10px}.auth-card>p:not(.eyebrow):not(.error-text){color:var(--muted);line-height:1.6}.auth-card label,.form-row label{display:block;font-size:12px;font-weight:800;color:var(--muted);margin-bottom:6px}.auth-card input,.form-row input,.form-row select,.form-row textarea{width:100%;border:1px solid var(--line);border-radius:12px;background:white;padding:13px;outline:none}.auth-card input:focus,.form-row input:focus,.form-row textarea:focus{border-color:var(--forest2);box-shadow:0 0 0 3px rgba(35,101,80,.12)}.auth-card button{width:100%;border:0;border-radius:13px;background:var(--forest);color:white;padding:14px;margin-top:12px;font-weight:800}.error-text{color:var(--danger);min-height:20px;font-size:13px}
dialog{border:0;border-radius:24px;padding:0;width:min(560px,calc(100vw - 28px));box-shadow:0 30px 90px rgba(0,0,0,.4)}dialog::backdrop{background:rgba(7,18,15,.55);backdrop-filter:blur(3px)}#placeForm{padding:25px}.dialog-title{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:17px}.dialog-title small{color:var(--forest2);font-weight:800}.dialog-title h2{margin:4px 0 0;font-family:Georgia,"Noto Serif KR",serif}.form-row{margin-bottom:13px}.form-row textarea{min-height:80px;resize:vertical}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.check-row{display:flex;align-items:center;gap:8px;font-size:14px}.check-row input{width:18px;height:18px}.dialog-actions{display:flex;align-items:center;gap:8px;margin-top:20px}.dialog-actions span{flex:1}.dialog-actions button{border:0;border-radius:11px;padding:11px 15px;font-weight:800}.save{background:var(--forest);color:white}.ghost{background:#edf0ec}.danger{background:#fae6e6;color:var(--danger)}.toast{position:fixed;z-index:900;left:50%;bottom:25px;transform:translateX(-50%);background:#10241e;color:white;border-radius:12px;padding:12px 18px;box-shadow:var(--shadow)}
.place-pin{background:var(--forest);border:3px solid white;border-radius:50% 50% 50% 0;width:28px!important;height:28px!important;transform:rotate(-45deg);box-shadow:0 4px 9px rgba(0,0,0,.25)}.place-pin span{display:block;transform:rotate(45deg);color:var(--lime);font-size:14px;text-align:center;line-height:22px}.current-pin{width:22px!important;height:22px!important;border-radius:50%;background:#2b84ff;border:4px solid white;box-shadow:0 0 0 9px rgba(43,132,255,.2)}.leaflet-popup-content-wrapper{border-radius:15px}.popup h3{margin:0 0 4px}.popup p{margin:0 0 9px;color:var(--muted)}.popup-actions{display:flex;gap:6px}.popup-actions button{border:0;border-radius:9px;padding:8px 9px;font-weight:700}.popup-actions .send{background:var(--forest);color:white}
@media(max-width:760px){.brand small{display:none}.drawer{left:0;right:0;top:auto;bottom:0;width:auto;height:min(70vh,560px);border-radius:24px 24px 0 0;transform:translateY(110%);transition:.25s;padding:13px 18px 20px}.drawer.open{transform:translateY(0)}.drawer-handle{display:block;width:48px;height:5px;border-radius:9px;background:#ccd1cd;margin:0 auto 13px}.search-panel{top:92px}.map-actions{left:12px;right:12px;bottom:17px;display:grid;grid-template-columns:1.25fr 1fr 1fr}.map-actions button{padding:0 9px}.map-actions #addButton{display:none}.mobile-only{display:inline-block}.map-actions #listButton{display:block}.topbar{top:12px;left:12px;right:12px}.brand{padding-right:11px}.leaflet-control-zoom{margin-top:160px!important}.gps-panel{right:12px;bottom:80px}.auth-card{padding:29px 24px}}

