@import url("https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@500;600&family=Inter:wght@400;500&display=swap");:root{--cream:#f6f2ea;--surface:#fff;--ink:#1d1c1a;--muted:#6e6a62;--hair:rgba(29,28,26,.12);--hair2:rgba(29,28,26,.22);--green:#3b6d11;--green-50:#eaf3de;--green-900:#27500a;--gold:#ba7517;--radius:14px;--serif:"Cormorant Garamond",Georgia,serif;--sans:"Inter",system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--cream);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.wrap{max-width:760px;margin:0 auto;padding:0 18px 56px}.header{position:-webkit-sticky;position:sticky;top:0;z-index:20;background:hsla(40,40%,94%,.92);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--hair)}.header-in{max-width:760px;margin:0 auto;padding:12px 18px;justify-content:space-between;gap:12px}.brand,.header-in{display:flex;align-items:center}.brand{gap:9px}.brand img{height:30px;width:auto}.brand span{font-family:var(--serif);font-size:20px;letter-spacing:.02em}.header-actions{display:flex;align-items:center;gap:8px}.lang{display:flex;border:1px solid var(--hair2);border-radius:999px;overflow:hidden}.lang button{border:none;background:transparent;padding:4px 11px;font-size:12px;cursor:pointer;color:var(--muted);font-family:var(--sans)}.lang button.on{background:var(--green);color:#fff}.logout{border:1px solid var(--hair2);background:transparent;border-radius:999px;padding:5px 12px;font-size:12px;color:var(--muted);cursor:pointer;font-family:var(--sans)}.hero{padding:30px 0 8px}.hero h1{font-family:var(--serif);font-weight:600;font-size:34px;line-height:1.1;margin:0 0 8px}.hero p{color:var(--muted);margin:0;font-size:16px}.navgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:14px;gap:14px;margin-top:24px}.navcard{display:flex;gap:13px;align-items:flex-start;background:var(--surface);border:1px solid var(--hair);border-radius:var(--radius);padding:16px;transition:border-color .15s}.navcard:hover{border-color:var(--hair2)}.navico{width:42px;height:42px;border-radius:11px;background:var(--green-50);color:var(--green);display:flex;align-items:center;justify-content:center;flex:none}.navico svg{width:22px;height:22px}.navcard h3{margin:0;font-size:16px;font-weight:500}.navcard p{margin:3px 0 0;font-size:13px;color:var(--muted);line-height:1.45}.pagehead{padding:22px 0 6px}.pagehead h1{font-family:var(--serif);font-weight:600;font-size:30px;margin:0}.back{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:14px;padding:16px 0 0}.back svg{width:16px;height:16px}.tools{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:14px 0 18px}.tools input[type=text]{flex:1 1;min-width:160px;border:1px solid var(--hair2);border-radius:10px;padding:9px 12px;font-size:15px;font-family:var(--sans);background:var(--surface)}.toggle{display:inline-flex;align-items:center;gap:7px;font-size:14px;color:var(--muted);cursor:pointer}.toggle input{width:16px;height:16px;accent-color:var(--green)}.cat-h{font-family:var(--serif);font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--green);margin:26px 0 12px;font-weight:600}.place{background:var(--surface);border:1px solid var(--hair);border-radius:var(--radius);padding:16px;margin-bottom:13px}.place h3{margin:0 0 6px;font-size:18px;font-weight:500;display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-family:var(--serif)}.pill{font-size:11px;padding:2px 9px;border-radius:999px;font-family:var(--sans)}.pill.fav{background:var(--green);color:#fff}.pill.tag{border:1px solid var(--hair2)}.pill.tag,.rate{color:var(--muted)}.rate{display:flex;align-items:center;gap:6px;font-size:13px;margin-bottom:6px}.rate svg{width:14px;height:14px;color:var(--gold)}.place .desc{font-size:14.5px;margin:2px 0 0}.quote{font-size:13.5px;font-style:italic;border-left:2px solid var(--green);padding-left:11px;margin:10px 0}.addr,.quote{color:var(--muted)}.addr{font-size:12.5px;margin-top:8px;display:flex;gap:6px;align-items:flex-start}.addr svg{width:14px;height:14px;flex:none;margin-top:2px}.acts{display:flex;gap:9px;margin-top:12px}.maps{display:inline-flex;align-items:center;gap:7px;font-size:14px;padding:8px 14px;border-radius:10px;background:var(--green);color:#fff;border:none;cursor:pointer}.maps svg{width:15px;height:15px}.card{background:var(--surface);border:1px solid var(--hair);border-radius:var(--radius);padding:18px;margin-bottom:14px}.card h2{font-family:var(--serif);font-size:21px;font-weight:600;margin:0 0 12px;display:flex;align-items:center;gap:9px}.card h2 svg{width:21px;height:21px;color:var(--green)}.steps{margin:0;padding-left:20px;line-height:1.85}.steps li{margin-bottom:4px}.mono{font-family:ui-monospace,Menlo,monospace;background:var(--green-50);color:var(--green-900);padding:1px 7px;border-radius:6px}.kv{display:flex;align-items:center;gap:9px;margin:8px 0;flex-wrap:wrap}.kv .k{font-size:14px;min-width:96px}.iconbtn,.kv .k{color:var(--muted)}.iconbtn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:32px;border:1px solid var(--hair2);background:transparent;border-radius:9px;cursor:pointer}.iconbtn svg{width:16px;height:16px}.photo{width:100%;border-radius:12px;border:1px solid var(--hair);display:block;margin:4px 0 6px}.photo-cap{font-size:13px;color:var(--muted);margin:0 0 16px}.rule{display:flex;gap:11px;align-items:flex-start;padding:11px 0;border-bottom:1px solid var(--hair)}.rule:last-child{border-bottom:none}.rule svg{width:19px;height:19px;color:var(--green);flex:none;margin-top:1px}.rule p{margin:0;font-size:14.5px}.slider-row{display:flex;align-items:center;gap:14px;margin:14px 0}.slider-row label{flex:none;width:150px;font-size:15px}.slider-row input[type=range]{flex:1 1;accent-color:var(--green)}.slider-row .val{width:26px;text-align:right;font-weight:500;color:var(--green)}textarea{width:100%;border:1px solid var(--hair2);border-radius:10px;padding:10px 12px;background:var(--surface);resize:vertical}.btn,textarea{font-size:15px;font-family:var(--sans)}.btn{background:var(--green);color:#fff;border:none;border-radius:10px;padding:11px 18px;cursor:pointer;display:inline-flex;align-items:center;gap:8px}.btn svg{width:16px;height:16px}.muted{color:var(--muted);font-size:13.5px}.login-screen{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--cream)}.login-box{width:100%;max-width:360px;text-align:center}.login-box img{height:96px;margin-bottom:6px}.login-box h1{font-family:var(--serif);font-size:26px;font-weight:600;margin:0 0 6px}.login-box p{color:var(--muted);font-size:14.5px;margin:0 0 20px}.login-box input{width:100%;border:1px solid var(--hair2);border-radius:10px;padding:12px 14px;font-size:16px;text-align:center;letter-spacing:.04em;font-family:var(--sans);background:var(--surface)}.login-box .btn{width:100%;justify-content:center;margin-top:12px}.login-err{color:#a32d2d;font-size:13.5px;margin-top:12px;min-height:18px}.soon{background:var(--surface);border:1px dashed var(--hair2);border-radius:var(--radius);padding:30px 20px;text-align:center;color:var(--muted);margin-top:18px}.soon svg{width:34px;height:34px;color:var(--green);opacity:.6}.thanks{background:var(--green-50);color:var(--green-900);border-radius:var(--radius);padding:26px;text-align:center;margin-top:8px}.thanks svg{width:34px;height:34px}.adminbar{position:-webkit-sticky;position:sticky;top:0;z-index:20;background:var(--ink);color:#fff}.adminbar-in{max-width:900px;margin:0 auto;padding:12px 18px;display:flex;align-items:center;justify-content:space-between;gap:12px}.adminbar .ab-brand{display:flex;align-items:center;gap:9px;font-family:var(--serif);font-size:19px}.adminbar .ab-brand img{height:26px}.ab-actions{display:flex;align-items:center;gap:10px}.btn-ghost{background:transparent;border:1px solid hsla(0,0%,100%,.45);color:#fff;border-radius:999px;padding:7px 14px;font-size:13px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:6px}.admin-wrap{max-width:900px;margin:0 auto;padding:20px 18px 56px}.admin-wrap h1{font-family:var(--serif);font-size:28px;font-weight:600;margin:0 0 4px}.btn-line{background:transparent;border:1px solid var(--hair2);color:var(--ink);border-radius:10px;padding:9px 14px;font-size:14px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:7px}.cal{background:var(--surface);border:1px solid var(--hair);border-radius:var(--radius);padding:16px;margin:18px 0}.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.cal-head h3{font-family:var(--serif);font-size:20px;margin:0;text-transform:capitalize}.cal-nav{display:flex;gap:8px}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:4px;gap:4px}.cal-dow{font-size:11px;color:var(--muted);text-align:center;padding:4px 0;text-transform:uppercase;letter-spacing:.05em}.cal-cell{min-height:60px;border:1px solid var(--hair);border-radius:8px;padding:4px;font-size:12px;background:#fff}.cal-cell.empty{background:transparent;border:none}.cal-cell.today{outline:2px solid var(--green);outline-offset:-2px}.cal-num{color:var(--muted)}.cal-band{margin-top:3px;border-radius:5px;padding:1px 5px;color:#fff;font-size:10.5px;line-height:1.5;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.rtable{width:100%;border-collapse:collapse;margin-top:6px;background:var(--surface);border:1px solid var(--hair);border-radius:var(--radius);overflow:hidden}.rtable td,.rtable th{text-align:left;padding:10px 12px;font-size:13.5px;border-bottom:1px solid var(--hair);vertical-align:middle}.rtable th{background:#faf7f0;color:var(--muted);font-weight:500;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em}.rtable tr:last-child td{border-bottom:none}.codechip{font-family:ui-monospace,Menlo,monospace;background:var(--green-50);color:var(--green-900);padding:2px 8px;border-radius:6px;white-space:nowrap}.field{margin-bottom:14px}.field label{display:block;font-size:13.5px;color:var(--muted);margin-bottom:5px}.field input{width:100%;border:1px solid var(--hair2);border-radius:10px;padding:10px 12px;font-size:15px;font-family:var(--sans);background:var(--surface)}.field .hint{font-size:12px;color:var(--muted);margin-top:4px}.row2{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.msgbox{background:#faf7f0;border:1px solid var(--hair);border-radius:12px;padding:14px;margin-top:14px}.msgbox .mb-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.msgbox pre{white-space:pre-wrap;font-family:var(--sans);font-size:13.5px;margin:10px 0 0;line-height:1.55;color:var(--ink)}.alert{background:#fdecec;border:1px solid #f3c2c2;color:#9b2c2c;border-radius:10px;padding:10px 12px;font-size:14px;margin-top:10px}.okbox{background:var(--green-50);border:1px solid #c9e2ad;border-radius:12px;padding:18px;margin-top:14px}.okbox .bigcode{font-family:ui-monospace,Menlo,monospace;font-size:24px;color:var(--green-900);letter-spacing:.04em}.empty-state{background:var(--surface);border:1px dashed var(--hair2);border-radius:var(--radius);padding:28px;text-align:center;color:var(--muted);margin-top:10px}@media (max-width:560px){.row2{grid-template-columns:1fr}.cal-cell{min-height:48px}.cal-band{font-size:9.5px}}.catmap{margin:4px 0 24px}.catmap-title{font-family:var(--sans);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--green-900);font-weight:600;margin-bottom:12px}.catmap-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:10px;gap:10px}.cattile{border:none;border-radius:14px;padding:15px 16px 13px;text-align:left;cursor:pointer;display:flex;flex-direction:column;justify-content:space-between;gap:6px;min-height:94px;transition:transform .12s ease,box-shadow .12s ease;font-family:var(--sans)}.cattile:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(0,0,0,.1)}.cattile.sel{outline:3px solid var(--ink);outline-offset:2px}.cattile-n{font-family:var(--serif);font-size:34px;line-height:1;font-weight:600}.cattile-l{font-size:13px;font-weight:500;line-height:1.25}.catmap-clear{margin-top:12px;background:var(--ink);color:#fff;border:none;border-radius:999px;padding:8px 18px;font-size:13px;font-family:var(--sans);cursor:pointer}@media (max-width:720px){.catmap-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width:520px){.catmap-grid{grid-template-columns:repeat(2,1fr);gap:8px}.cattile{min-height:82px;padding:13px}.cattile-n{font-size:28px}}.welcome{margin:2px 0 18px}.welcome-h{font-family:var(--serif);font-size:30px;font-weight:600;line-height:1.15;margin:0 0 10px}.welcome p{color:var(--muted);font-size:15px;line-height:1.62;margin:0 0 10px;max-width:64ch}.welcome p:last-child{margin-bottom:0}@media (max-width:520px){.welcome-h{font-size:25px}}.estmenu{display:grid;grid-template-columns:repeat(5,1fr);grid-gap:8px;gap:8px;margin:18px 0 24px}.estmenu button{flex-direction:column;gap:7px;background:transparent;border:none;cursor:pointer;padding:6px 2px;font-family:var(--sans);color:var(--ink)}.estmenu button,.estmenu-ic{display:flex;align-items:center}.estmenu-ic{width:50px;height:50px;border-radius:50%;background:var(--green-50);color:var(--green);justify-content:center;transition:transform .12s ease,background .12s ease}.estmenu button:hover .estmenu-ic{transform:translateY(-2px);background:#dfeecb}.estmenu-l{font-size:12px;font-weight:500;text-align:center;line-height:1.2}.card{scroll-margin-top:74px}@media (max-width:520px){.estmenu{gap:4px}.estmenu-ic{width:44px;height:44px}.estmenu-l{font-size:10.5px}}.estmenu button.on .estmenu-ic{background:var(--green);color:#fff}.estmenu button.on .estmenu-l{color:var(--green);font-weight:600}.ircards{display:flex;flex-direction:column;gap:14px;margin-top:18px}.ircard{display:flex;align-items:center;gap:16px;width:100%;text-align:left;background:var(--surface);border:1px solid var(--hair);border-radius:18px;padding:18px;cursor:pointer;font-family:var(--sans);color:var(--ink);transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}.ircard:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(29,28,26,.1);border-color:var(--hair2)}.ircard-ic{flex:0 0 auto;width:56px;height:56px;border-radius:15px;color:#fff;display:flex;align-items:center;justify-content:center}.ircard-tx{flex:1 1 auto;min-width:0}.ircard-tx h3{font-family:var(--serif);font-size:21px;font-weight:600;margin:0 0 2px}.ircard-tx p{color:var(--muted);font-size:13.5px;margin:0;line-height:1.4}.ircard-ar{flex:0 0 auto;color:var(--muted)}button.back{background:none;border:none;cursor:pointer;font:inherit;padding:0}.ir-map{width:100%;height:62vh;min-height:360px;border-radius:16px;overflow:hidden;border:1px solid var(--hair);background:#e9e6df;position:relative;z-index:0;isolation:isolate}.ir-map-loading{display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:28px}.ir-hint{color:var(--muted);font-size:13px;text-align:center;margin-top:10px}.ir-pin{background:none;border:none}.leaflet-popup-content-wrapper{border-radius:12px;box-shadow:0 6px 20px rgba(29,28,26,.18)}.leaflet-popup-content{margin:12px 14px}.ir-pop strong{display:block;font-family:var(--serif);font-size:16.5px;color:var(--ink);margin-bottom:4px;line-height:1.2}.ir-pop span{display:block;font-size:13px;color:var(--muted);line-height:1.45}.gmap{width:100%;height:44vh;min-height:300px;border-radius:16px;overflow:hidden;border:1px solid var(--hair);background:#e9e6df;position:relative;z-index:0;isolation:isolate}.gmap-loading{display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:28px}.gplaces{display:flex;flex-direction:column;gap:12px;margin-top:16px}.gplace{display:flex;gap:14px;width:100%;text-align:left;background:var(--surface);border:1px solid var(--hair);border-radius:16px;padding:12px;cursor:pointer;font-family:var(--sans);color:var(--ink);transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease;align-items:flex-start}.gplace:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(29,28,26,.1);border-color:var(--hair2)}.gplace-photo{flex:0 0 auto;width:74px;height:74px;border-radius:12px;object-fit:cover}.gplace-ph{display:flex;align-items:center;justify-content:center;color:#fff;font-family:var(--serif);font-size:30px;font-weight:600}.gplace-body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:3px}.gplace-name{font-family:var(--serif);font-size:18px;font-weight:600;line-height:1.15}.gplace-meta{font-size:12.5px;color:var(--muted)}.gstar{color:var(--gold)}.gplace-note{font-size:13px;color:var(--ink);opacity:.85;line-height:1.4}.gpop{max-width:230px}.gpop strong{display:block;font-family:var(--serif);font-size:16px;margin-bottom:2px}.gpop-rate{margin-bottom:3px}.gpop-note,.gpop-rate{display:block;font-size:12.5px;color:var(--muted)}.gpop-note{line-height:1.4}.gplace-go{display:inline-flex;align-items:center;gap:5px;align-self:flex-start;margin-top:7px;padding:6px 12px;border-radius:999px;background:var(--green-50);color:var(--green-900);font-family:var(--sans);font-size:12.5px;font-weight:600;text-decoration:none;border:1px solid transparent;transition:background .12s ease,border-color .12s ease}.gplace-go:hover{background:#fff;border-color:var(--green)}.gplace-go-pin{font-size:12px;line-height:1}.gplace-dist{display:inline-flex;align-items:center;gap:5px;font-family:var(--sans);font-size:12px;color:var(--muted);margin:1px 0 2px}.gplace-dist svg{flex:0 0 auto;opacity:.85}.install{margin-top:22px;display:flex;flex-direction:column}.install,.install-btn{align-items:center;gap:8px}.install-btn{display:inline-flex;padding:11px 18px;border-radius:999px;border:1px solid var(--hair2);background:var(--surface);color:var(--ink);font-family:var(--sans);font-size:14px;font-weight:600;cursor:pointer;transition:background .12s ease,border-color .12s ease,transform .12s ease}.install-btn:hover{background:#fff;border-color:var(--green);transform:translateY(-1px)}.install-tip{max-width:320px;text-align:center;font-size:12.5px;color:var(--muted);line-height:1.45}.esttime,.install-tip{font-family:var(--sans)}.esttime{display:inline-block;margin:2px 0 14px;padding:7px 13px;border-radius:999px;background:var(--green-50);color:var(--green-900);font-size:13.5px;font-weight:600}.msgrow{display:flex;align-items:center;gap:6px}.msglabel{display:inline-block;min-width:62px;font-family:var(--sans);font-size:11.5px;color:var(--muted);font-weight:600}.seg{display:inline-flex;border:1px solid var(--hair2);border-radius:999px;overflow:hidden;background:var(--surface)}.seg button{border:0;background:transparent;padding:8px 18px;font-family:var(--sans);font-size:14px;color:var(--muted);cursor:pointer}.seg button.on{background:var(--green);color:#fff;font-weight:600}.tag-inv{display:inline-block;margin-left:8px;padding:2px 8px;border-radius:999px;background:var(--green-50);color:var(--green-900);font-family:var(--sans);font-size:11px;font-weight:600;vertical-align:middle}.modal-ov{position:fixed;inset:0;background:rgba(29,28,26,.45);display:flex;align-items:center;justify-content:center;padding:18px;z-index:50}.modal-card{background:var(--surface);border-radius:16px;max-width:520px;width:100%;max-height:85vh;display:flex;flex-direction:column;box-shadow:0 18px 50px rgba(0,0,0,.25)}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px;border-bottom:1px solid var(--hair)}.modal-body{padding:16px 18px;overflow-y:auto}.dl-scores{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px 16px;gap:8px 16px;margin-bottom:6px}.dl-score{display:flex;align-items:center;justify-content:space-between;font-family:var(--sans);font-size:13.5px;border-bottom:1px solid var(--hair);padding-bottom:5px}.dl-score b{font-size:15px;color:var(--green-900)}.dl-of{font-size:11px;color:var(--muted);font-weight:400}.dl-txt{margin-top:12px}.dl-q{display:block;font-family:var(--sans);font-size:12px;color:var(--muted);font-weight:600;margin-bottom:2px}.dl-txt p{margin:0;font-size:14px}.dl-block{margin-bottom:16px}.dl-block h4{margin:0 0 6px;font-size:13.5px}.dl-block h4,.dl-list{font-family:var(--sans)}.dl-list{margin:0;padding-left:18px;font-size:13px;color:var(--ink)}.dl-list li{margin:2px 0}.dl-n{color:var(--green-900);font-weight:600}.dl-when{color:var(--muted);font-size:12px}