{"id":1746,"date":"2026-09-29T15:44:01","date_gmt":"2026-09-29T06:44:01","guid":{"rendered":"https:\/\/little-island-okinawa.com\/nago\/ko-book\/"},"modified":"2026-10-28T09:41:27","modified_gmt":"2026-10-28T00:41:27","slug":"ko-book","status":"publish","type":"page","link":"https:\/\/little-island-okinawa.com\/nago\/ko-book\/","title":{"rendered":"\uc628\ub77c\uc778 \uc608\uc57d"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1746\" class=\"elementor elementor-1746\" data-elementor-settings=\"{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-ngbkhero elementor-section-full_width elementor-section-height-min-height elementor-section-stretched elementor-section-content-middle elementor-section-height-default elementor-section-items-middle\" data-id=\"ngbkhero\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;stretch_section&quot;:&quot;section-stretched&quot;}\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ngbkhcol\" data-id=\"ngbkhcol\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ngbkh1 ng-hero-h ng-hero-noja elementor-widget elementor-widget-heading\" data-id=\"ngbkh1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Online Booking<span class=\"li-vh\">\uff5c\ube48 \uac1d\uc2e4 \uac80\uc0c9\u00b7\uc608\uc57d\uff5cLittle Island Okinawa \ub098\uace0<\/span><\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ngbkh2 ng-hero-ja elementor-widget elementor-widget-heading\" data-id=\"ngbkh2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\ube48 \uac1d\uc2e4 \uac80\uc0c9 \u00b7 \uc608\uc57d<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ngbkhbox elementor-widget elementor-widget-html\" data-id=\"ngbkhbox\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n<div class=\"ngbk-hero\" id=\"ngbk-hero\">\n<style>\n.ngbk-hero{--navy:#163A5E;--navy-d:#0f2a45;--ink:#333;--muted:#6b7280;--ok:#1a8f4d;--warn:#c47a00;--ng:#b42318;--line:#dfe3e8;--gray:#E9EBEF;font-family:\"Roboto\",-apple-system,\"Hiragino Kaku Gothic ProN\",\"Hiragino Sans\",\"Noto Sans JP\",sans-serif;color:var(--ink);line-height:1.5;max-width:1000px;margin:22px auto 0;padding:0 12px;position:relative;text-align:left}\n.ngbk-hero *{box-sizing:border-box}\n\/* \u4e88\u7d04\u30da\u30fc\u30b8\u81ea\u8eab\u3067\u306f\u53f3\u4e0b\u306e\u6d6e\u904a\u300cBook\u300d\u30dc\u30bf\u30f3\uff08\u65e7\u4e88\u7d04\u30a8\u30f3\u30b8\u30f3\u884c\u304d\uff09\u3092\u96a0\u3059\u3002\u30ab\u30ec\u30f3\u30c0\u30fc\u306b\u3082\u91cd\u306a\u308b\u305f\u3081 *\/\n#myz-floating-cta{display:none!important}\n\/* \u691c\u7d22\u30d0\u30fc *\/\n.ngbk-hero .bar{background:#fff;border-radius:14px;box-shadow:0 14px 40px rgba(0,0,0,.22);padding:12px;display:grid;grid-template-columns:1fr 1fr 150px 190px;gap:10px;align-items:end}\n.ngbk-hero .f label{display:block;font-size:12px;color:var(--muted);margin-bottom:4px}\n.ngbk-hero .f .val{width:100%;border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:15px;background:#fff;min-height:46px;cursor:pointer;display:flex;align-items:center;gap:8px;font-family:inherit;color:var(--ink);text-align:left;font-weight:400;line-height:1.3}\n.ngbk-hero .f .val:hover,.ngbk-hero .f .val:focus{background:#fff;color:var(--ink)}\n.ngbk-hero .f .val::before{content:\"\";width:16px;height:16px;flex:0 0 16px;background:no-repeat center\/16px url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%23163A5E' stroke-width='2' stroke-linecap='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'\/%3E%3Cpath d='M3 10h18M8 3v4M16 3v4'\/%3E%3C\/svg%3E\")}\n.ngbk-hero .f .val.empty{color:#9aa3ad}\n.ngbk-hero .f .val.active{border-color:var(--navy);box-shadow:0 0 0 2px rgba(22,58,94,.15)}\n.ngbk-hero .f select{width:100%;border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:15px;background:#fff;min-height:46px;font-family:inherit;color:var(--ink)}\n.ngbk-hero .btn{background:var(--navy);color:#fff;border:0;border-radius:8px;padding:12px 16px;font-size:15px;font-weight:700;cursor:pointer;font-family:inherit;min-height:46px;line-height:1.2}\n.ngbk-hero .btn:hover{background:var(--navy-d);color:#fff}\n.ngbk-hero .btn[disabled]{opacity:.45;cursor:not-allowed}\n.ngbk-hero .sub{margin-top:8px;text-align:center;font-size:12px;color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.6)}\n\/* \u30ab\u30ec\u30f3\u30c0\u30fc\uff08\u30c9\u30ed\u30c3\u30d7\u30c0\u30a6\u30f3\uff09 *\/\n.ngbk-hero .panel{position:absolute;left:12px;right:12px;top:calc(100% + 8px);z-index:30;background:#fff;border-radius:14px;box-shadow:0 18px 50px rgba(0,0,0,.28);padding:14px 16px;display:none}\n.ngbk-hero.open .panel{display:block}\n.ngbk-hero.open .sub{visibility:hidden}\n.ngbk-hero .panel .head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}\n.ngbk-hero .panel .head button{background:#fff;border:1px solid var(--line);border-radius:8px;width:36px;height:36px;cursor:pointer;font-size:18px;color:var(--navy);line-height:1}\n.ngbk-hero .panel .head button[disabled]{opacity:.3;cursor:not-allowed}\n.ngbk-hero .panel .hint{font-size:13px;color:var(--navy);font-weight:700}\n.ngbk-hero .months{display:grid;grid-template-columns:1fr 1fr;gap:18px}\n.ngbk-hero .month h4{margin:0 0 4px;text-align:center;font-size:14px;color:var(--navy);font-weight:700}\n.ngbk-hero table{width:100%;border-collapse:collapse;table-layout:fixed;margin:0;border:0;background:transparent}\n.ngbk-hero table tr,.ngbk-hero table tbody>tr:nth-child(odd)>td,.ngbk-hero table tbody>tr:nth-child(odd)>th,.ngbk-hero table tbody tr:hover>td,.ngbk-hero table tbody tr:hover>th{background:transparent!important}\n.ngbk-hero th{font-size:11px;color:var(--muted);font-weight:500;padding:2px 0;border:0;background:none;text-align:center}\n.ngbk-hero th.sat{color:#2563eb}.ngbk-hero th.sun{color:#dc2626}\n.ngbk-hero td{padding:1px;border:0;vertical-align:top}\n.ngbk-hero .d{display:block;border-radius:8px;padding:3px 0 2px;cursor:pointer;text-align:center;border:1px solid transparent;min-height:44px}\n.ngbk-hero .d .n{display:block;font-size:13px;line-height:1.2}\n.ngbk-hero .d .p{display:block;font-size:10px;line-height:1.2;color:var(--navy);font-weight:700;white-space:nowrap}\n.ngbk-hero .d .l{display:block;font-size:9.5px;line-height:1.2;color:var(--ok)}\n.ngbk-hero .d.few .l{color:var(--warn)}\n.ngbk-hero .d.x{background:#f1f2f4;color:#b8bec6;cursor:not-allowed}\n.ngbk-hero .d.x .p,.ngbk-hero .d.x .l{color:#b8bec6}\n.ngbk-hero .d.past{color:#c9ced4;cursor:not-allowed;background:none}\n.ngbk-hero .d.co{background:#f7f7f8;color:#6b7280}\n.ngbk-hero .d.far{opacity:.35;cursor:not-allowed}\n.ngbk-hero .d.far:hover{background:none!important}\n.ngbk-hero .why.flash{animation:ngbkflash .9s ease}\n@keyframes ngbkflash{0%,60%{background:#fde68a}100%{background:#f1f5fa}}\n.ngbk-hero .d.co .p{color:#6b7280;font-weight:500;font-size:9px}\n.ngbk-hero .d.past .p,.ngbk-hero .d.past .l{visibility:hidden}\n.ngbk-hero .d.nodata .p,.ngbk-hero .d.nodata .l{visibility:hidden}\n.ngbk-hero .d.loading{cursor:progress}\n.ngbk-hero .d.loading .p{height:10px;margin:3px 8px 0;border-radius:3px;background:linear-gradient(90deg,#eef1f5 0%,#f8fafc 50%,#eef1f5 100%);background-size:200% 100%;animation:ngbkshim 1s linear infinite}\n@keyframes ngbkshim{0%{background-position:200% 0}100%{background-position:0 0}}\n.ngbk-hero .d:not(.x):not(.past):hover{background:var(--gray)}\n.ngbk-hero .d.sel,.ngbk-hero .d.sel:hover{background:var(--navy)!important;color:#fff}.ngbk-hero .d.sel .p,.ngbk-hero .d.sel .l{color:#dbe6f2}\n.ngbk-hero .d.in,.ngbk-hero .d.in:hover{background:#e3ecf6}\n.ngbk-hero .foot{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:8px;flex-wrap:wrap}\n.ngbk-hero .legend{font-size:11px;color:var(--muted);display:flex;gap:12px;flex-wrap:wrap}\n.ngbk-hero .foot .right{display:flex;align-items:center;gap:12px;margin-left:auto}\n.ngbk-hero .nights{font-size:13px;color:var(--navy);font-weight:700}\n.ngbk-hero .why{display:none;font-size:12.5px;line-height:1.6;background:#f1f5fa;color:var(--navy);border-radius:8px;padding:8px 12px;margin:0 0 8px}\n.ngbk-hero .why.show{display:block}\n.ngbk-hero .sublink{background:none;border:0;padding:0;margin-left:10px;color:#fff;text-decoration:underline;font-size:12px;cursor:pointer;font-family:inherit;text-shadow:inherit}\n.ngbk-hero .sublink:hover{background:none;color:#fff}\n.ngbk-hero .close{background:none;border:1px solid var(--line);border-radius:8px;padding:7px 14px;font-size:13px;cursor:pointer;color:var(--navy);font-family:inherit}\n@media (max-width:860px){\n  .ngbk-hero{padding:0 8px;margin-top:14px}\n  .ngbk-hero .bar{grid-template-columns:1fr 1fr;padding:10px;gap:8px}\n  .ngbk-hero .bar .btn{grid-column:1\/-1}\n  .ngbk-hero .panel{left:8px;right:8px;padding:12px}\n  .ngbk-hero .months{grid-template-columns:1fr}\n  .ngbk-hero .month:nth-child(2){display:none}\n  .ngbk-hero .d{min-height:46px}\n}\n<\/style>\n<div class=\"bar\">\n  <div class=\"f\"><label>\uccb4\ud06c\uc778<\/label><button type=\"button\" class=\"val empty\" id=\"ngbk-v-in\">\ub0a0\uc9dc \uc120\ud0dd<\/button><\/div>\n  <div class=\"f\"><label>\uccb4\ud06c\uc544\uc6c3<\/label><button type=\"button\" class=\"val empty\" id=\"ngbk-v-out\">\ub0a0\uc9dc \uc120\ud0dd<\/button><\/div>\n  <div class=\"f\"><label>1\uc2e4 \uc778\uc6d0<\/label><select id=\"ngbk-guests\"><option value=\"1\">1\uba85<\/option><option value=\"2\" selected>2\uba85<\/option><\/select><\/div>\n  <button type=\"button\" class=\"btn\" id=\"ngbk-search\" disabled>\ube48 \uac1d\uc2e4 \uac80\uc0c9<\/button>\n<\/div>\n<div class=\"sub\">\uc608\uc57d \uc2dc\uc5d0\ub294 \uce74\ub4dc \uc2b9\uc778\ub9cc \uc774\ub8e8\uc5b4\uc9c0\uba70, \uacb0\uc81c\ub294 \uccb4\ud06c\uc778 2\uc77c \uc804\uc785\ub2c8\ub2e4.<button type=\"button\" class=\"sublink\" id=\"ngbk-clear2\" hidden>\ub0a0\uc9dc \uc9c0\uc6b0\uae30<\/button><\/div>\n<div class=\"panel\" id=\"ngbk-panel\">\n  <div class=\"head\"><button type=\"button\" id=\"ngbk-prev\" aria-label=\"\uc774\uc804 \ub2ec\">\u2039<\/button><span class=\"hint\" id=\"ngbk-hint\">\uccb4\ud06c\uc778 \ub0a0\uc9dc\ub97c \uc120\ud0dd\ud558\uc138\uc694<\/span><button type=\"button\" id=\"ngbk-next\" aria-label=\"\ub2e4\uc74c \ub2ec\">\u203a<\/button><\/div>\n  <div class=\"why\" id=\"ngbk-why\"><\/div>\n  <div class=\"months\" id=\"ngbk-months\"><div class=\"month\"><h4>\ubd88\ub7ec\uc624\ub294 \uc911\u2026<\/h4><\/div><\/div>\n  <div class=\"foot\">\n    <div class=\"legend\"><span>\uc694\uae08\uff1d1\ubc15\ubd80\ud130 \uc608\uc57d \uac00\ub2a5\ud55c \ud50c\ub79c\uc758 1\ubc15 \uc694\uae08(\uc138\uae08 \ud3ec\ud568\u00b7\uc5f0\ubc15 \ud560\uc778\uc740 \ub354 \uc800\ub834)<\/span><span>\uc794\uc5ecN\uff1d\ub0a8\uc740 \uac1d\uc2e4 \uc218<\/span><span>\ud68c\uc0c9\uff1d\ub9cc\uc2e4(\uc120\ud0dd \ubd88\uac00)<\/span><\/div>\n    <div class=\"right\"><span class=\"nights\" id=\"ngbk-nights\"><\/span><button type=\"button\" class=\"close\" id=\"ngbk-clear\">\ub0a0\uc9dc \uc9c0\uc6b0\uae30<\/button><button type=\"button\" class=\"close\" id=\"ngbk-close\">\ub2eb\uae30<\/button><\/div>\n  <\/div>\n<\/div>\n<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-ngbkbody elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ngbkbody\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ngbkbcol\" data-id=\"ngbkbcol\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ngbkwidg elementor-widget elementor-widget-html\" data-id=\"ngbkwidg\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n<div class=\"ngbk\" id=\"ngbk\">\n<style>\n.ngbk{--navy:#163A5E;--navy-d:#0f2a45;--ink:#333;--muted:#6b7280;--ok:#1a8f4d;--okbg:#e9f6ef;--warn:#b45309;--warnbg:#fff4e5;--ng:#b42318;--ngbg:#fdecea;--line:#dfe3e8;--gray:#E9EBEF;font-family:\"Roboto\",-apple-system,\"Hiragino Kaku Gothic ProN\",\"Hiragino Sans\",\"Noto Sans JP\",sans-serif;color:var(--ink);line-height:1.6;max-width:1000px;margin:0 auto;padding:0 16px}\n.ngbk *{box-sizing:border-box}\n.ngbk .guide{max-width:880px;margin:8px auto 40px;background:#f1f5fa;border:1px solid #d6e2ef;border-radius:16px;padding:28px 28px 30px;text-align:center}\n.ngbk .guide .g-eye{margin:0 0 20px;font-size:13px;font-weight:700;letter-spacing:.14em;color:var(--navy)}\n.ngbk .guide ol{list-style:none;margin:0 0 24px;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:16px}\n.ngbk .guide li{position:relative;margin:0;padding:0 6px;display:flex;flex-direction:column;align-items:center;gap:4px}\n.ngbk .guide li+li::before{content:\"\";position:absolute;top:17px;right:calc(50% + 27px);width:calc(100% - 38px);height:2px;border-radius:2px;background:#cfdbe8}\n.ngbk .guide .g-n{width:34px;height:34px;border-radius:50%;background:var(--navy);color:#fff;font-weight:700;font-size:15px;display:flex;align-items:center;justify-content:center;margin-bottom:6px}\n.ngbk .guide .g-t{color:var(--navy);font-weight:700;font-size:15px}\n.ngbk .guide .g-d{color:var(--muted);font-size:13px;line-height:1.65}\n.ngbk .guide .g-btn{appearance:none;border:0;border-radius:999px;background:var(--navy);color:#fff;font-weight:700;font-size:15px;padding:12px 32px;cursor:pointer;font-family:inherit}\n.ngbk .guide .g-btn:hover{background:var(--navy-d)}\n@media (max-width:640px){\n  .ngbk .guide{padding:22px 18px 24px;margin-bottom:28px}\n  .ngbk .guide ol{grid-template-columns:1fr;gap:14px;text-align:left}\n  .ngbk .guide li{display:grid;grid-template-columns:34px 1fr;column-gap:12px;row-gap:0;align-items:start;padding:0}\n  .ngbk .guide li+li::before{display:none}\n  .ngbk .guide .g-n{grid-row:1 \/ span 2;margin:0}\n  .ngbk .guide .g-btn{width:100%}\n}\n.ngbk .loading{max-width:1000px;margin:8px auto 40px}\n#ngbk-results{scroll-margin-top:24px}\n.ngbk .ld-head{display:flex;align-items:center;justify-content:center;gap:12px;margin:4px 0 20px;color:var(--navy);font-weight:700;font-size:15px}\n.ngbk .ld-spin{width:22px;height:22px;border-radius:50%;border:3px solid #cfdbe8;border-top-color:var(--navy);animation:ngbk-spin .8s linear infinite;flex:none}\n.ngbk .sk{border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-bottom:18px;background:#fff;display:grid;grid-template-columns:280px 1fr}\n.ngbk .sk-ph{aspect-ratio:4\/3}\n.ngbk .sk-body{padding:18px;display:flex;flex-direction:column;gap:12px}\n.ngbk .sk-body i{display:block;height:14px;border-radius:7px}\n.ngbk .sk-body i.w1{width:38%;height:20px}.ngbk .sk-body i.w2{width:72%}.ngbk .sk-body i.w3{width:55%}\n.ngbk .sk-body i.w4{width:160px;height:40px;border-radius:999px;margin-top:auto;align-self:flex-end}\n.ngbk .sk-ph,.ngbk .sk-body i{background:linear-gradient(90deg,#eef1f5 25%,#f8f9fb 50%,#eef1f5 75%);background-size:200% 100%;animation:ngbk-shimmer 1.3s ease-in-out infinite}\n@keyframes ngbk-spin{to{transform:rotate(360deg)}}\n@keyframes ngbk-shimmer{0%{background-position:100% 0}100%{background-position:-100% 0}}\n@media (max-width:760px){ .ngbk .sk{grid-template-columns:1fr} .ngbk .sk-ph{aspect-ratio:16\/9} }\n@media (prefers-reduced-motion:reduce){ .ngbk .ld-spin{animation-duration:2.4s} .ngbk .sk-ph,.ngbk .sk-body i{animation:none} }\n.ngbk .status{color:var(--muted);font-size:14px;margin:8px 0 12px}\n.ngbk .notice{border-radius:10px;padding:10px 14px;font-size:14px;margin:0 0 14px;display:flex;gap:8px;align-items:flex-start}\n.ngbk .notice.busy{background:var(--warnbg);color:var(--warn);border:1px solid #f5d6a8}\n.ngbk .notice b{font-weight:700}\n.ngbk .room{border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-bottom:18px;background:#fff}\n.ngbk .room .top{display:grid;grid-template-columns:280px 1fr}\n.ngbk .room .photo{background:#eee;aspect-ratio:4\/3;background-size:cover;background-position:center}\n.ngbk .room h3{margin:0 0 2px;color:var(--navy);font-size:18px;font-weight:700}\n.ngbk .room .meta{font-size:13px;color:var(--muted)}\n.ngbk .room .info{padding:16px 18px;display:flex;flex-direction:column;gap:10px}\n.ngbk .room .chips{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:2px}\n.ngbk .room .chip{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#374151;line-height:1.3}\n.ngbk .room .chip::before{content:\"\";width:18px;height:18px;flex:0 0 18px;background:no-repeat center\/18px}\n.ngbk .chip.area::before{background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%23163A5E' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='4' width='16' height='16' rx='1.5'\/%3E%3Cpath d='M4 9h4M9 4v4M20 15h-4M15 20v-4'\/%3E%3C\/svg%3E\")}\n.ngbk .chip.bed::before{background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%23163A5E' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 19v-7h18v7M3 12V6M7 12V9.5a1.5 1.5 0 0 1 1.5-1.5h3a1.5 1.5 0 0 1 1.5 1.5V12M3 16h18'\/%3E%3C\/svg%3E\")}\n.ngbk .chip.ppl::before{background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%23163A5E' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='8' r='3'\/%3E%3Cpath d='M3 20c0-3.3 2.7-5 6-5s6 1.7 6 5'\/%3E%3Ccircle cx='17' cy='9' r='2.3'\/%3E%3Cpath d='M16.5 15c2.8 0 4.5 1.8 4.5 4.5'\/%3E%3C\/svg%3E\")}\n.ngbk .chip.kit::before{background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%23163A5E' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 11h16v5a4 4 0 0 1-4 4H8a4 4 0 0 1-4-4z'\/%3E%3Cpath d='M2 11h2M20 11h2M9 5.5v3M12 4.5v4M15 5.5v3'\/%3E%3C\/svg%3E\")}\n.ngbk .chip.wash::before{background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%23163A5E' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='3' width='16' height='18' rx='2'\/%3E%3Ccircle cx='12' cy='13' r='4'\/%3E%3Cpath d='M7.5 6.5h2M14 6.5h2.5'\/%3E%3C\/svg%3E\")}\n.ngbk .chip.wifi::before{background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%23163A5E' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 9a14 14 0 0 1 19 0M5.5 12.5a9.5 9.5 0 0 1 13 0M8.8 16a4.8 4.8 0 0 1 6.4 0'\/%3E%3Ccircle cx='12' cy='19.2' r='.9' fill='%23163A5E'\/%3E%3C\/svg%3E\")}\n.ngbk .room .chip.elev::before{background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%23163A5E' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='3' width='14' height='18' rx='1.5'\/%3E%3Cpath d='M12 3v18'\/%3E%3Cpath d='M7.5 9.5l1.5-2 1.5 2M13.5 7.5l1.5 2 1.5-2'\/%3E%3C\/svg%3E\")}\n.ngbk .room .chip.noelev{color:#9ca3af}\n.ngbk .room .chip.noelev::before{background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='3' width='14' height='18' rx='1.5'\/%3E%3Cpath d='M12 3v18'\/%3E%3Cpath d='M7.5 9.5l1.5-2 1.5 2M13.5 7.5l1.5 2 1.5-2'\/%3E%3Cpath d='M3 3l18 18' stroke='%23b42318'\/%3E%3C\/svg%3E\")}\n.ngbk .room .notes{margin:0;padding:0;list-style:none;font-size:12px;color:var(--muted)}\n.ngbk .room .notes li{padding-left:1em;text-indent:-1em}\n.ngbk .room .notes li::before{content:\"\u30fb\"}\n.ngbk .room .photo{position:relative;border:0;padding:0;cursor:zoom-in;display:block;width:100%}\n.ngbk .room .photo .cnt{position:absolute;left:10px;bottom:10px;background:rgba(15,23,42,.72);color:#fff;font-size:12px;font-weight:700;border-radius:999px;padding:4px 10px 4px 26px;background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 8h3l1.5-2h7L17 8h3v11H4z'\/%3E%3Ccircle cx='12' cy='13.5' r='3.3'\/%3E%3C\/svg%3E\");background-repeat:no-repeat;background-position:8px center;background-size:14px}\n.ngbk .lb{position:fixed;inset:0;background:rgba(10,15,25,.9);z-index:10000;display:none;align-items:center;justify-content:center;flex-direction:column;padding:16px}\n.ngbk .lb.open{display:flex}\n.ngbk .lb img{max-width:min(1100px,100%);max-height:78vh;border-radius:8px;object-fit:contain;background:#111}\n.ngbk .lb .cap{color:#e5e7eb;font-size:13px;margin-top:10px}\n.ngbk .lb .nav{position:absolute;top:50%;transform:translateY(-50%);background:rgba(255,255,255,.14);color:#fff;border:0;border-radius:999px;width:48px;height:48px;font-size:26px;cursor:pointer;line-height:1}\n.ngbk .lb .nav:hover{background:rgba(255,255,255,.28)}\n.ngbk .lb .prev{left:14px}.ngbk .lb .next{right:14px}\n.ngbk .lb .x{position:absolute;top:14px;right:14px;background:rgba(255,255,255,.14);color:#fff;border:0;border-radius:999px;width:42px;height:42px;font-size:22px;cursor:pointer;line-height:1}\n\n.ngbk .plan{display:grid;grid-template-columns:1fr auto;gap:8px 18px;align-items:center;padding:14px 16px;border-top:1px solid var(--line)}\n.ngbk .plan .name{font-weight:700;font-size:14px}\n.ngbk .plan .desc{font-size:12px;color:var(--muted)}\n.ngbk .badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}\n.ngbk .badge{display:inline-block;font-size:12px;font-weight:700;border-radius:999px;padding:3px 10px;line-height:1.5}\n.ngbk .badge.free{background:var(--okbg);color:var(--ok)}\n.ngbk .badge.nofree{background:var(--ngbg);color:var(--ng)}\n.ngbk .badge.few{background:var(--warnbg);color:var(--warn)}\n.ngbk .plan .price{text-align:right;min-width:210px}\n.ngbk .plan .price .total{font-size:22px;font-weight:800;color:var(--navy)}\n.ngbk .plan .price .per{font-size:12px;color:var(--muted)}\n.ngbk .cond{background:#f1f5fa;border:1px solid #d6e2ef;border-radius:12px;padding:14px 18px;margin:0 0 16px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px}\n.ngbk .cond-main{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}\n.ngbk .cond-label{font-size:13px;color:var(--muted);font-weight:700}\n.ngbk .cond-dates{font-size:24px;font-weight:800;color:var(--navy);letter-spacing:.01em}\n.ngbk .cond-dates .arrow{margin:0 .35em;font-weight:500;color:#6b7c93}\n.ngbk .cond-sub{display:flex;align-items:center;gap:8px}\n.ngbk .pill{display:inline-block;background:#fff;border:1px solid #cfdbe8;color:var(--navy);font-weight:700;font-size:15px;border-radius:999px;padding:4px 14px}\n.ngbk .cond-edit{background:none;border:1px solid var(--navy);color:var(--navy);border-radius:8px;padding:6px 12px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit}\n.ngbk .cond-edit:hover{background:var(--navy);color:#fff}\n.ngbk .plan .price .was{font-size:13px;color:var(--muted);margin-top:2px}\n.ngbk .plan .price .was s{text-decoration-thickness:1.5px}\n.ngbk .plan .price .off{display:inline-block;margin-left:8px;font-size:12px;font-weight:800;color:#b91c1c;background:#fdecea;border-radius:4px;padding:1px 6px}\n.ngbk .roomsel{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-top:8px;font-size:13px;color:var(--ink)}\n.ngbk .roomsel label{font-weight:700;white-space:nowrap;margin:0}\n.ngbk .roomsel select{width:auto;min-width:84px;border:1px solid var(--line);border-radius:8px;padding:6px 10px;font-size:15px;min-height:38px;background:#fff;font-family:inherit;color:var(--ink)}\n.ngbk .roomsel .rs-note{font-size:11px;color:var(--muted);white-space:nowrap}\n@media (max-width:760px){ .ngbk .roomsel{justify-content:flex-start} }\n.ngbk .plan .price .total-label{font-size:12px;color:var(--muted);font-weight:700}\n.ngbk .plan .price .tax{display:inline-block;margin-left:6px;font-size:12px;font-weight:700;color:var(--navy);background:#e8eef6;border-radius:4px;padding:2px 6px;vertical-align:4px}\n@media (max-width:760px){\n  .ngbk .cond{padding:12px 14px}\n  .ngbk .cond-dates{font-size:20px}\n  .ngbk .cond-sub{width:100%}\n  .ngbk .cond-edit{margin-left:auto}\n}\n\n.ngbk .plan.na{background:#fbfbfc}\n.ngbk .plan.na .name{color:#6b7280}\n.ngbk .plan.na .desc{color:var(--ng);font-size:13px;font-weight:700}\n.ngbk .soldout{text-align:right;min-width:210px}\n.ngbk .soldout .big{display:inline-block;font-size:28px;font-weight:800;color:var(--ng);border:2.5px solid var(--ng);border-radius:10px;padding:4px 22px;letter-spacing:.12em;line-height:1.3;background:#fff}\n.ngbk .soldout .alt-btn{display:block;margin:10px 0 0 auto;background:#fff;border:1.5px solid var(--navy);color:var(--navy);border-radius:8px;padding:9px 16px;font-size:14px;font-weight:700;cursor:pointer;font-family:inherit}\n.ngbk .soldout .alt-btn:hover{background:var(--navy);color:#fff}\n@media (max-width:760px){ .ngbk .soldout{text-align:left;min-width:0;display:flex;align-items:center;gap:12px;flex-wrap:wrap} .ngbk .soldout .alt-btn{margin:0} .ngbk .soldout .big{font-size:24px} }\n.ngbk .btn{background:var(--navy);color:#fff;border:0;border-radius:8px;padding:12px 16px;font-size:15px;font-weight:700;cursor:pointer;font-family:inherit;min-height:46px;line-height:1.2}\n.ngbk .btn:hover{background:var(--navy-d);color:#fff}\n.ngbk .btn.sec{background:#fff;color:var(--navy);border:1.5px solid var(--navy)}\n.ngbk .plan .btn{display:inline-block;margin-top:10px;width:100%;text-align:center;text-decoration:none}\n.ngbk .fine{font-size:12px;color:var(--muted);margin:6px 0 40px}\n.ngbk .modal{position:fixed;inset:0;background:rgba(15,42,69,.55);z-index:9999;display:none;align-items:center;justify-content:center;padding:16px;overflow:auto}\n.ngbk .modal.open{display:flex}\n.ngbk .modal .box{background:#fff;border-radius:14px;max-width:540px;width:100%;padding:22px;box-shadow:0 20px 60px rgba(0,0,0,.3);margin:auto}\n.ngbk .modal h3{margin:0 0 4px;color:var(--navy);font-size:18px}\n.ngbk .modal .sum{font-size:13px;color:var(--muted);margin-bottom:12px}\n.ngbk .modal .cancel{border-radius:10px;padding:10px 12px;font-size:13px;margin-bottom:14px}\n.ngbk .modal .cancel.free{background:var(--okbg);color:#14532d;border:1px solid #bfe3cc}\n.ngbk .modal .cancel.nofree{background:var(--ngbg);color:#7f1d1d;border:1px solid #f5c2bd}\n.ngbk .modal .cancel b{display:block;font-size:14px;margin-bottom:2px}\n.ngbk .modal .grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}\n.ngbk .modal .grid .full{grid-column:1\/-1}\n.ngbk .modal input{width:100%;border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:15px;font-family:inherit;min-height:44px;background:#fff;color:var(--ink)}\n.ngbk .modal label{font-size:12px;color:var(--muted);display:block;margin-bottom:4px}\n.ngbk .modal .actions{display:flex;gap:10px;margin-top:16px}\n.ngbk .modal .actions .btn{flex:1}\n.ngbk .modal .note{font-size:12px;color:var(--muted);margin-top:10px}\n.ngbk .room .more-btn{display:none;align-self:flex-start;background:none;border:0;padding:2px 0;margin:0;font:inherit;font-size:13px;font-weight:700;color:var(--navy);text-decoration:underline;text-underline-offset:3px;cursor:pointer}\n\/* v1.1.0 \u30b9\u30de\u30db: \u691c\u7d22\u76f4\u5f8c\u306e1\u753b\u9762\u76ee\u306b\u6599\u91d1\u3068\u4e88\u7d04\u30dc\u30bf\u30f3\u304c\u5165\u308b\u3088\u3046\u90e8\u5c4b\u30ab\u30fc\u30c9\u3092\u7e2e\u3081\u308b *\/\n@media (max-width:760px){\n  .ngbk .room{margin-bottom:14px}\n  .ngbk .room .top{grid-template-columns:112px 1fr;align-items:start}\n  .ngbk .room .photo{aspect-ratio:1\/1;height:auto}\n  .ngbk .room .photo .cnt{left:6px;bottom:6px;font-size:11px;padding:2px 7px 2px 21px;background-position:6px center;background-size:12px}\n  .ngbk .room .info{padding:10px 12px;gap:6px}\n  .ngbk .room h3{font-size:16px}\n  .ngbk .room .chips{gap:4px 12px}\n  .ngbk .room:not(.open) .chip:nth-child(n+3),.ngbk .room:not(.open) .notes{display:none}\n  .ngbk .room .more-btn{display:inline-block}\n  .ngbk .plan{grid-template-columns:1fr;gap:2px;padding:12px 14px}\n  .ngbk .plan .name{font-size:13px}\n  .ngbk .plan .desc{display:none}\n  .ngbk .plan.na .desc{display:block}\n  .ngbk .badges{margin-top:4px}\n  .ngbk .plan .price{text-align:left;min-width:0}\n  .ngbk .plan .price .total{font-size:21px}\n  .ngbk .plan .btn{margin-top:8px}\n  .ngbk .notice{margin-bottom:10px;padding:8px 12px;font-size:13px}\n  .ngbk .cond{margin-bottom:10px}\n}\n<\/style>\n\n<div id=\"ngbk-results\"><div class=\"guide\">\n<p class=\"g-eye\">\uc608\uc57d \ubc29\ubc95<\/p>\n<ol>\n<li><span class=\"g-n\">1<\/span><span class=\"g-t\">\ub0a0\uc9dc \uc120\ud0dd<\/span><span class=\"g-d\">\ub2ec\ub825\uc5d0 1\ubc15 \uc694\uae08\uacfc \ube48 \uac1d\uc2e4 \ud604\ud669\uc774 \ud45c\uc2dc\ub429\ub2c8\ub2e4.<\/span><\/li>\n<li><span class=\"g-n\">2<\/span><span class=\"g-t\">\ud50c\ub79c \uc120\ud0dd<\/span><span class=\"g-d\">\uc608\uc57d \uac00\ub2a5\ud55c \ud50c\ub79c\uacfc \ucd1d \uc694\uae08\uc774 \uc5ec\uae30\uc5d0 \ud45c\uc2dc\ub429\ub2c8\ub2e4.<\/span><\/li>\n<li><span class=\"g-n\">3<\/span><span class=\"g-t\">\uce74\ub4dc \uc815\ubcf4 \uc785\ub825<\/span><span class=\"g-d\">\uc548\uc804\ud55c \uacb0\uc81c \ud398\uc774\uc9c0\uc5d0\uc11c \uc785\ub825\ud569\ub2c8\ub2e4. \uacb0\uc81c\ub294 \uccb4\ud06c\uc778 2\uc77c \uc804\uc785\ub2c8\ub2e4.<\/span><\/li>\n<\/ol>\n<button type=\"button\" class=\"g-btn\" id=\"ngbk-guide-go\">\ub0a0\uc9dc \uc120\ud0dd\ud558\uae30<\/button>\n<\/div><\/div>\n<div class=\"fine\" id=\"ngbk-fine\"><\/div>\n<div class=\"lb\" id=\"ngbk-lb\"><button type=\"button\" class=\"x\" id=\"ngbk-lb-x\" aria-label=\"\ub2eb\uae30\">\u00d7<\/button><button type=\"button\" class=\"nav prev\" id=\"ngbk-lb-prev\" aria-label=\"\uc774\uc804 \uc0ac\uc9c4\">\u2039<\/button><img id=\"ngbk-lb-img\" alt=\"\"><div class=\"cap\" id=\"ngbk-lb-cap\"><\/div><button type=\"button\" class=\"nav next\" id=\"ngbk-lb-next\" aria-label=\"\ub2e4\uc74c \uc0ac\uc9c4\">\u203a<\/button><\/div>\n\n<div class=\"modal\" id=\"ngbk-modal\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"ngbk-m-title\"><div class=\"box\">\n  <h3 id=\"ngbk-m-title\">\uc608\uc57d\uc790 \uc815\ubcf4<\/h3><div class=\"sum\" id=\"ngbk-m-sum\"><\/div>\n  <div class=\"cancel\" id=\"ngbk-m-cancel-box\"><\/div>\n  <form id=\"ngbk-gform\" class=\"grid\" autocomplete=\"on\" onsubmit=\"return false\">\n    <div><label>\uc131<\/label><input name=\"ln\" required placeholder=\"Kim\" autocomplete=\"family-name\"><\/div>\n    <div><label>\uc774\ub984<\/label><input name=\"fn\" required placeholder=\"Minjun\" autocomplete=\"given-name\"><\/div>\n    <div class=\"full\"><label>\uc774\uba54\uc77c<\/label><input name=\"email\" type=\"email\" required placeholder=\"minjun@example.com\" autocomplete=\"email\"><\/div>\n    <div class=\"full\"><label>\uc804\ud654\ubc88\ud638<\/label><input name=\"tel\" type=\"tel\" required placeholder=\"+82 10 1234 5678\" autocomplete=\"tel\"><\/div>\n  <\/form>\n  <div class=\"actions\"><button type=\"button\" class=\"btn sec\" id=\"ngbk-m-cancel\">\ub4a4\ub85c<\/button><button type=\"button\" class=\"btn\" id=\"ngbk-m-go\">\uce74\ub4dc \uc785\ub825\uc73c\ub85c \uc9c4\ud589 \u2192<\/button><\/div>\n  <div class=\"note\">\ub2e4\uc74c \ud654\uba74(\uc608\uc57d \uc2dc\uc2a4\ud15c\u00b7\uc601\uc5b4)\uc5d0\uc11c\ub294 \uce74\ub4dc \uc815\ubcf4\ub9cc \uc785\ub825\ud558\uba74 \ub429\ub2c8\ub2e4. \uc9c0\uae08\uc740 \uacb0\uc81c\ub418\uc9c0 \uc54a\uc73c\uba70, \uacb0\uc81c\ub294 \uccb4\ud06c\uc778 2\uc77c \uc804\uc5d0 \uc9c4\ud589\ub429\ub2c8\ub2e4.<\/div>\n<\/div><\/div>\n<\/div>\n\n<script>\n(function(){\n\/\/ ===== \u8a2d\u5b9a =====\nconst LANG = 'ko';   \/\/ \u8868\u793a\u8a00\u8a9e ja\/en\/tw\/ko\/cn\u3002build_ng_booking_page.py --lang \u304c\u8a00\u8a9e\u3054\u3068\u306b\u66f8\u304d\u63db\u3048\u308b\uff08v2.0.0\uff09\u3002ja\u4ee5\u5916\u306e\u30ab\u30fc\u30c9\u5165\u529b\u306f\u4e88\u7d04\u30a8\u30f3\u30b8\u30f3\u82f1\u8a9e\u7248\nconst API = '\/nago\/wp-json\/li\/v1\/be';\nconst HOUSE_URL_FALLBACK = 'https:\/\/littleislandokinawa_nago.airhost.co\/ja\/houses\/642928';\n\/\/ ===== \u8a08\u6e2c\uff08v1.0.4\uff09\uff1a\u6210\u7d04\u7387\u3068\u6d41\u5165\u7d4c\u8def\u3002\u516c\u5f0f\u30b5\u30a4\u30c8\u306e \/be\/track \u3068 Google\u30a2\u30ca\u30ea\u30c6\u30a3\u30af\u30b9\uff08Site Kit \u306e gtag\uff09\u3078\u3002\u6c0f\u540d\u30fb\u30e1\u30fc\u30eb\u30fb\u96fb\u8a71\u306f\u9001\u3089\u306a\u3044 =====\n\/\/   \u4e88\u7d04\u30a8\u30f3\u30b8\u30f3\u5074\uff08GTM\u30bf\u30b0\u300cNG Booking Tracking\u300d\uff09\u304c\u540c\u3058 sid \u3067 land\/card\/done \u3092\u8a18\u9332\u3057\u3001\u4e88\u7d04\u756a\u53f7\u3068\u3064\u306a\u3050\nconst TRACK_URL = API + '\/track';\nconst SID = (() => { const mk = () => Math.random().toString(36).slice(2, 10) + Date.now().toString(36); try { let s = sessionStorage.getItem('ngbk_sid'); if (!s) { s = mk(); sessionStorage.setItem('ngbk_sid', s); } return s; } catch(e){ return mk(); } })();\nconst DEV = window.matchMedia && matchMedia('(max-width: 767px)').matches ? 'sp' : 'pc';\nconst REF = (() => { try { const h = document.referrer ? new URL(document.referrer).hostname.toLowerCase() : ''; return h && h !== location.hostname ? h : ''; } catch(e){ return ''; } })();\nconst tracked = {};\n\/\/ ex\uff1d\u691c\u7d22\u6761\u4ef6\u306a\u3069\u306e\u6570\u5024\uff08v1.1.0: n=\u6cca\u6570 g=1\u5ba4\u306e\u4eba\u6570 lead=\u4f55\u65e5\u5148 dow=\u30c1\u30a7\u30c3\u30af\u30a4\u30f3\u66dc\u65e50-6 av=\u4e88\u7d04\u53ef1\/0 min=\u6700\u5b89\u5408\u8a08 rm=\u90e8\u5c4b\u6570 ms=\u691c\u7d22\u304b\u3089\u6599\u91d1\u3092\u898b\u308b\u307e\u3067\u306e\u30df\u30ea\u79d2\uff09\nfunction track(ev, gaName, gaParams, once, ex){\n  if (once && tracked[ev]) return; tracked[ev] = 1;\n  try { const body = JSON.stringify(Object.assign({ev, sid: SID, src: 'site', lang: LANG, dev: DEV, ref: REF, v: '1.1.0'}, ex || {})); if (navigator.sendBeacon) navigator.sendBeacon(TRACK_URL, new Blob([body], {type: 'text\/plain'})); } catch(e){}\n  try { if (gaName && typeof window.gtag === 'function') window.gtag('event', gaName, Object.assign({ngbk_lang: LANG}, gaParams || {})); } catch(e){}\n}\n\/\/ GA\u306e\u5229\u7528\u8005ID\uff08\u4e88\u7d04\u30a8\u30f3\u30b8\u30f3\u5074\u3067\u3082\u540c\u3058\u4eba\u3068\u3057\u3066\u6570\u3048\u308b\u305f\u3081\uff09\u3002Xserver WAF \u3092\u907f\u3051\u3066 document.cookie \u306f\u8aad\u307e\u305a gtag('get') \u3067\u53d6\u308b\nconst GA_ID = 'G-3KDEC2PZNE'; let GA_CID = '';\ntry { if (typeof window.gtag === 'function') window.gtag('get', GA_ID, 'client_id', c => { GA_CID = String(c || ''); }); } catch(e){}\nfunction gaCid(){ return \/^\\d+\\.\\d+$\/.test(GA_CID) ? GA_CID : ''; }\n\/\/ \u65bd\u8a2d\u3054\u3068\u306e\u8a2d\u5b9a\uff08\u5ba2\u5ba4\u6570\u30fb\u90e8\u5c4b\u30bf\u30a4\u30d7\u30fb\u30d7\u30e9\u30f3\u30fb\u90e8\u5c4b\u306e\u7279\u5fb4\u306e\u5404\u8a00\u8a9e\u8868\u8a18\uff09\u3002generate.py \u304c site.json \u304b\u3089\u57cb\u3081\u8fbc\u3080\nconst SITE = {\"total_rooms\": 28, \"rooms\": [{\"match\": \"double\", \"en\": \"Double room\", \"elevator\": false, \"name\": {\"en\": \"Double room\", \"tw\": \"\u96d9\u4eba\u623f\", \"ko\": \"\ub354\ube14\ub8f8\", \"cn\": \"\u5927\u5e8a\u623f\"}, \"bed\": {\"ja\": \"\u30c0\u30d6\u30eb\u30d9\u30c3\u30c9\u00d71\", \"en\": \"1 double bed\", \"tw\": \"\u96d9\u4eba\u5e8a\u00d71\", \"ko\": \"\ub354\ube14 \uce68\ub300\u00d71\", \"cn\": \"\u53cc\u4eba\u5e8a\u00d71\"}}, {\"match\": \"twin\", \"en\": \"Twin room\", \"elevator\": true, \"name\": {\"en\": \"Twin room\", \"tw\": \"\u96d9\u5e8a\u623f\", \"ko\": \"\ud2b8\uc708\ub8f8\", \"cn\": \"\u53cc\u5e8a\u623f\"}, \"bed\": {\"ja\": \"\u30b7\u30f3\u30b0\u30eb\u30d9\u30c3\u30c9\u00d72\", \"en\": \"2 single beds\", \"tw\": \"\u55ae\u4eba\u5e8a\u00d72\", \"ko\": \"\uc2f1\uae00 \uce68\ub300\u00d72\", \"cn\": \"\u5355\u4eba\u5e8a\u00d72\"}}], \"plans\": [{\"match_ja\": \"5\u9023\u6cca\", \"en\": \"[A] 5 Nights Minimum\", \"name\": {\"en\": \"5-Night Stay Discount (room only)\", \"tw\": \"\u9023\u4f4f5\u665a\u512a\u60e0\uff08\u4e0d\u542b\u9910\uff09\", \"ko\": \"5\uc5f0\ubc15 \ud560\uc778(\uc2dd\uc0ac \ubd88\ud3ec\ud568)\", \"cn\": \"\u8fde\u4f4f5\u665a\u4f18\u60e0\uff08\u4e0d\u542b\u9910\uff09\"}, \"desc\": {\"en\": \"Special rate for stays of 5 nights or more\", \"tw\": \"\u9023\u4f4f5\u665a\u4ee5\u4e0a\u7684\u512a\u60e0\u65b9\u6848\", \"ko\": \"5\ubc15 \uc774\uc0c1 \uc219\ubc15 \uc2dc \ud560\uc778\ub418\ub294 \ud50c\ub79c\", \"cn\": \"\u8fde\u4f4f5\u665a\u53ca\u4ee5\u4e0a\u7684\u4f18\u60e0\u65b9\u6848\"}}, {\"match_ja\": \"2\u9023\u6cca\", \"en\": \"[B] 2 Night Minimum\", \"name\": {\"en\": \"2-Night Stay Discount (room only)\", \"tw\": \"\u9023\u4f4f2\u665a\u512a\u60e0\uff08\u4e0d\u542b\u9910\uff09\", \"ko\": \"2\uc5f0\ubc15 \ud560\uc778(\uc2dd\uc0ac \ubd88\ud3ec\ud568)\", \"cn\": \"\u8fde\u4f4f2\u665a\u4f18\u60e0\uff08\u4e0d\u542b\u9910\uff09\"}, \"desc\": {\"en\": \"Special rate for stays of 2 nights or more\", \"tw\": \"\u9023\u4f4f2\u665a\u4ee5\u4e0a\u7684\u512a\u60e0\u65b9\u6848\", \"ko\": \"2\ubc15 \uc774\uc0c1 \uc219\ubc15 \uc2dc \ud560\uc778\ub418\ub294 \ud50c\ub79c\", \"cn\": \"\u8fde\u4f4f2\u665a\u53ca\u4ee5\u4e0a\u7684\u4f18\u60e0\u65b9\u6848\"}}, {\"match_ja\": \"\", \"en\": \"[C] Standard Rate\", \"name\": {\"en\": \"Standard Rate (room only)\", \"tw\": \"\u6a19\u6e96\u65b9\u6848\uff08\u4e0d\u542b\u9910\uff09\", \"ko\": \"\uc2a4\ud0e0\ub2e4\ub4dc(\uc2dd\uc0ac \ubd88\ud3ec\ud568)\", \"cn\": \"\u6807\u51c6\u65b9\u6848\uff08\u4e0d\u542b\u9910\uff09\"}, \"desc\": {\"en\": \"Bookable from 1 night\", \"tw\": \"1\u665a\u8d77\u5373\u53ef\u9810\u8a02\", \"ko\": \"1\ubc15\ubd80\ud130 \uc608\uc57d \uac00\ub2a5\ud55c \ud50c\ub79c\", \"cn\": \"1\u665a\u8d77\u5373\u53ef\u9884\u8ba2\"}}], \"chips\": [\"area\", \"bed\", \"ppl\", \"elev\", \"kit\", \"wash\", \"wifi\"], \"common\": {\"ja\": {\"area\": \"\u6d0b\u5ba425\u33a1\", \"ppl\": \"\u5927\u4eba2\u540d\", \"kit\": \"\u30ad\u30c3\u30c1\u30f3\", \"wash\": \"\u6d17\u6fef\u6a5f\", \"wifi\": \"\u7121\u6599Wi-Fi\"}, \"en\": {\"area\": \"25\u33a1 Western-style room\", \"ppl\": \"Up to 2 adults\", \"kit\": \"Kitchen\", \"wash\": \"Washing machine\", \"wifi\": \"Free Wi-Fi\"}, \"tw\": {\"area\": \"\u897f\u5f0f\u5ba2\u623f25\u33a1\", \"ppl\": \"\u6700\u591a2\u4f4d\u6210\u4eba\", \"kit\": \"\u5eda\u623f\", \"wash\": \"\u6d17\u8863\u6a5f\", \"wifi\": \"\u514d\u8cbbWi-Fi\"}, \"ko\": {\"area\": \"\uc591\uc2e4 25\u33a1\", \"ppl\": \"\uc131\uc778 \ucd5c\ub300 2\uba85\", \"kit\": \"\uc8fc\ubc29\", \"wash\": \"\uc138\ud0c1\uae30\", \"wifi\": \"\ubb34\ub8cc Wi-Fi\"}, \"cn\": {\"area\": \"\u897f\u5f0f\u5ba2\u623f25\u33a1\", \"ppl\": \"\u6700\u591a2\u4f4d\u6210\u4eba\", \"kit\": \"\u53a8\u623f\", \"wash\": \"\u6d17\u8863\u673a\", \"wifi\": \"\u514d\u8d39Wi-Fi\"}}, \"notes\": {\"ja\": [\"6\u6b73\u4ee5\u4e0b\u306e\u304a\u5b50\u69d8\u306f\u6dfb\u3044\u5bdd\u7121\u6599\uff081\u540d\u307e\u3067\uff09\", \"\u6ede\u5728\u4e2d\u306e\u5ba2\u5ba4\u6e05\u6383\u306f\u3042\u308a\u307e\u305b\u3093\", \"\u30da\u30c3\u30c8\u540c\u4f34\u306e\u3054\u5bbf\u6cca\u306f\u3067\u304d\u307e\u305b\u3093\"], \"en\": [\"Children aged 6 and under stay free when sharing a bed (1 child max.)\", \"No housekeeping during your stay\", \"Pets are not allowed\"], \"tw\": [\"6\u6b72\u4ee5\u4e0b\u5152\u7ae5\u4e0d\u4f54\u5e8a\u514d\u8cbb\uff08\u96501\u540d\uff09\", \"\u4f4f\u5bbf\u671f\u9593\u4e0d\u63d0\u4f9b\u5ba2\u623f\u6e05\u6f54\", \"\u4e0d\u53ef\u651c\u5e36\u5bf5\u7269\u5165\u4f4f\"], \"ko\": [\"6\uc138 \uc774\ud558 \uc5b4\ub9b0\uc774\ub294 \uce68\ub300\ub97c \ud568\uaed8 \uc4f0\uba74 \ubb34\ub8cc(1\uba85\uae4c\uc9c0)\", \"\uc219\ubc15 \uc911 \uac1d\uc2e4 \uccad\uc18c\ub294 \uc5c6\uc2b5\ub2c8\ub2e4\", \"\ubc18\ub824\ub3d9\ubb3c \ub3d9\ubc18 \uc219\ubc15\uc740 \ubd88\uac00\ud569\ub2c8\ub2e4\"], \"cn\": [\"6\u5c81\u4ee5\u4e0b\u513f\u7ae5\u4e0d\u5360\u5e8a\u514d\u8d39\uff08\u96501\u540d\uff09\", \"\u4f4f\u5bbf\u671f\u95f4\u4e0d\u63d0\u4f9b\u5ba2\u623f\u6e05\u6d01\", \"\u4e0d\u53ef\u643a\u5e26\u5ba0\u7269\u5165\u4f4f\"]}};\nconst TOTAL_ROOMS = SITE.total_rooms;   \/\/ AirHost\u306e\u7dcf\u5ba2\u5ba4\u6570\uff08\u300c\u4e88\u7d04\u304c\u96c6\u4e2d\u300d\u8868\u793a\u306e\u5206\u6bcd\uff09\u3002\u5ba2\u5ba4\u6570\u304c\u5909\u308f\u3063\u305f\u3089 site.json \u3092\u76f4\u3059\nconst BUSY_RATIO = 0.7;       \/\/ \u4e88\u7d04\u6e08\u307f\u304c\u3053\u306e\u5272\u5408\u4ee5\u4e0a\u306e\u591c\u3092\u300c\u4e88\u7d04\u304c\u96c6\u4e2d\u3057\u3066\u3044\u307e\u3059\u300d\u3068\u8868\u793a\nconst FEW_LEFT = 3;           \/\/ \u6b8b\u5ba4\u304c\u3053\u306e\u6570\u4ee5\u4e0b\u306a\u3089\u300c\u6b8b\u308aN\u5ba4\u300d\u3092\u5f37\u8abf\nconst SHOW_LEFT_MAX = 5;      \/\/ \u30ab\u30ec\u30f3\u30c0\u30fc\u306e\u30de\u30b9\u76ee\u306b\u6b8b\u5ba4\u6570\u3092\u51fa\u3059\u4e0a\u9650\uff08\u3053\u308c\u3088\u308a\u591a\u3044\u65e5\u306f\u6599\u91d1\u3060\u3051\uff09\nconst MAX_NIGHTS = 365;     \/\/ \u4e88\u7d04\u30a8\u30f3\u30b8\u30f3\u306e\u30d7\u30e9\u30f3\u8a2d\u5b9a max_stay=365 \u306b\u5408\u308f\u305b\u308b\uff082026-09-29\u78ba\u8a8d\uff09\nconst esc = s => String(s == null ? '' : s).replace(\/[&<>\"]\/g, c => ({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c]));\nconst MON = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];\nconst MONTHS = ['January','February','March','April','May','June','July','August','September','October','November','December'];\nconst pl = (n, one, many) => n === 1 ? one : many;\n\n\/\/ ===== \u6587\u8a00\uff08\u8a00\u8a9e\u5225\u30fb\u65bd\u8a2d\u5171\u901a\uff09\u3002\u90e8\u5c4b\u306e\u7279\u5fb4\u30fb\u30d7\u30e9\u30f3\u540d\u306e\u8a33\u306f SITE \u5074 =====\nconst I18N = {\n  ja: {\n    W: ['\u65e5','\u6708','\u706b','\u6c34','\u6728','\u91d1','\u571f'], tilde: '\u301c',\n    fmtS: (d,w) => `${d.getMonth()+1}\/${d.getDate()}\uff08${w}\uff09`,\n    fmtL: (d,w) => `${d.getFullYear()}\u5e74${d.getMonth()+1}\u6708${d.getDate()}\u65e5\uff08${w}\uff09`,\n    month: (y,m) => `${y}\u5e74${m}\u6708`,\n    roomFallback: '\u304a\u90e8\u5c4b', nj: '\u30fb', rj: '\u3001',\n    reason1: (d,names) => `${d}\u306f${names}\u304c\u6e80\u5ba4`,\n    why: (ci,lim,rs) => `${ci}\u30c1\u30a7\u30c3\u30af\u30a4\u30f3\u306e\u5834\u5408\u3001\u540c\u3058\u304a\u90e8\u5c4b\u3067\u7d9a\u3051\u3066\u6cca\u307e\u308c\u308b\u306e\u306f${lim}\u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u307e\u3067\u3067\u3059\uff08${rs}\uff09\u3002\u30c1\u30a7\u30c3\u30af\u30a4\u30f3\u65e5\u3092\u5909\u3048\u308b\u5834\u5408\u306f\u3001\u305d\u306e\u65e5\u4ed8\u3092\u62bc\u3059\u304b\u300c\u65e5\u4ed8\u3092\u30af\u30ea\u30a2\u300d\u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044\u3002`,\n    hintIn: '\u30c1\u30a7\u30c3\u30af\u30a4\u30f3\u65e5\u3092\u9078\u3093\u3067\u304f\u3060\u3055\u3044', hintOutUntil: l => `\u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u65e5\u3092\u9078\u3093\u3067\u304f\u3060\u3055\u3044\uff08${l}\u307e\u3067\uff09`, hintOut: '\u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u65e5\u3092\u9078\u3093\u3067\u304f\u3060\u3055\u3044',\n    farTitle: '\u540c\u3058\u304a\u90e8\u5c4b\u3067\u7d9a\u3051\u3066\u6cca\u307e\u308c\u306a\u3044\u305f\u3081\u9078\u3079\u307e\u305b\u3093', cellFull: '\u5b8c\u58f2', fullTitle: '\u6e80\u5ba4', outOnly: 'OUT\u306e\u307f', left: n => `\u6b8b${n}`,\n    selectDate: '\u65e5\u4ed8\u3092\u9078\u629e', nights: n => `${n}\u6cca`,\n    badgeFree: s => `${s}\u307e\u3067\u30ad\u30e3\u30f3\u30bb\u30eb\u7121\u6599`,\n    textFree: (l,nl,p) => `<b>${l}\u307e\u3067\u30ad\u30e3\u30f3\u30bb\u30eb\u7121\u6599<\/b>${nl ? `${nl}\u4ee5\u964d\u306e\u30ad\u30e3\u30f3\u30bb\u30eb\u306f\u5bbf\u6cca\u6599\u91d1\u306e${p}%\u304c\u304b\u304b\u308a\u307e\u3059\u3002` : ''}`,\n    badgeFee: p => `\u30ad\u30e3\u30f3\u30bb\u30eb\u6599 ${p}%`,\n    textFee: p => `<b>\u3054\u4e88\u7d04\u5f8c\u306e\u30ad\u30e3\u30f3\u30bb\u30eb\u306f\u5bbf\u6cca\u6599\u91d1\u306e${p}%\u304c\u304b\u304b\u308a\u307e\u3059<\/b>\u3053\u306e\u65e5\u7a0b\u306f\u30ad\u30e3\u30f3\u30bb\u30eb\u7121\u6599\u671f\u9593\u3092\u904e\u304e\u3066\u3044\u307e\u3059\u3002`,\n    aboutCancel: pol => `<b>\u30ad\u30e3\u30f3\u30bb\u30eb\u306b\u3064\u3044\u3066<\/b>${esc(pol).replace(\/\\n\/g,'<br>')}`,\n    elevYes: '\u30a8\u30ec\u30d9\u30fc\u30bf\u30fc\u3042\u308a', elevNo: '\u30a8\u30ec\u30d9\u30fc\u30bf\u30fc\u306a\u3057',\n    photoAria: n => `${n}\u306e\u5199\u771f\u3092\u898b\u308b`, photoCnt: n => `\u5199\u771f${n}\u679a`, lbCap: (n,i,t) => `${n}\uff08${i} \/ ${t}\uff09`,\n    checking: '\u7a7a\u5ba4\u3068\u6599\u91d1\u3092\u78ba\u8a8d\u3057\u3066\u3044\u307e\u3059\u2026', fetchErr: '\u7a7a\u5ba4\u60c5\u5831\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002', fetchLink: '\u4e88\u7d04\u30da\u30fc\u30b8\u306f\u3053\u3061\u3089',\n    condLabel: '\u3054\u5bbf\u6cca\u65e5', guestsPill: g => `1\u5ba4${g}\u540d`, editDates: '\u65e5\u7a0b\u3092\u5909\u66f4',\n    busy: (d,t,b,l) => `<b>\u3053\u306e\u65e5\u7a0b\u306f\u4e88\u7d04\u304c\u96c6\u4e2d\u3057\u3066\u3044\u307e\u3059\u3002<\/b>${d}\u306f\u5168${t}\u5ba4\u4e2d${b}\u5ba4\u304c\u4e88\u7d04\u6e08\u307f\u3067\u3059\uff08\u6b8b\u308a${l}\u5ba4\uff09\u3002`,\n    reasonFull: (d,r) => `${d}\u306f ${r} \u304c\u6e80\u5ba4\u3067\u3059`, reasonMin: n => `${n}\u6cca\u4ee5\u4e0a\u306e\u3054\u6ede\u5728\u5c02\u7528`,\n    naName: '\u3053\u306e\u65e5\u7a0b\u306f\u3054\u4e88\u7d04\u3044\u305f\u3060\u3051\u307e\u305b\u3093', bigFull: '\u6e80\u5ba4', bigNa: '\u4e88\u7d04\u4e0d\u53ef', altBtn: '\u5225\u306e\u65e5\u7a0b\u3092\u63a2\u3059',\n    few: n => `\u6b8b\u308a${n}\u5ba4`, opt: i => `${i}\u5ba4`, cond: (nt,g,n) => `${nt}\u6cca\u30fb${g}\u540d\u00d7${n}\u5ba4`, totalLabel: c => `${c}\u306e\u5408\u8a08`,\n    tax: '\u7a0e\u8fbc', per: y => `1\u6cca1\u5ba4\u3042\u305f\u308a ${y}\uff08\u7a0e\u8fbc\uff09`, roomsLabel: '\u90e8\u5c4b\u6570', maxRooms: n => `\uff08\u6700\u5927${n}\u5ba4\uff09`, bookBtn: '\u3053\u306e\u30d7\u30e9\u30f3\u3067\u4e88\u7d04\u306b\u9032\u3080 \u2192', more: '\u8a2d\u5099\u30fb\u3054\u6ce8\u610f\u3092\u898b\u308b', less: '\u8a2d\u5099\u30fb\u3054\u6ce8\u610f\u3092\u9589\u3058\u308b',\n    allFull: '\u3053\u306e\u65e5\u7a0b\u306f\u6e80\u5ba4\u3067\u3059\u3002\u30ab\u30ec\u30f3\u30c0\u30fc\u3067\u5225\u306e\u65e5\u7a0b\u3092\u304a\u9078\u3073\u304f\u3060\u3055\u3044\u3002',\n    fine: '\u8868\u793a\u6599\u91d1\u306f\u6d88\u8cbb\u7a0e\u8fbc\u307f\u3067\u3059\u3002\u6b8b\u5ba4\u6570\u30fb\u4e88\u7d04\u72b6\u6cc1\u306f\u4e88\u7d04\u30b7\u30b9\u30c6\u30e0\u306e\u73fe\u5728\u306e\u5728\u5eab\u306b\u57fa\u3065\u304d\u307e\u3059\u3002\u30ab\u30fc\u30c9\u60c5\u5831\u306f\u5b89\u5168\u306a\u6c7a\u6e08\u30da\u30fc\u30b8\uff08AirHost\uff0fStripe\uff09\u3067\u5165\u529b\u3057\u3001\u5f53\u30b5\u30a4\u30c8\u306f\u30ab\u30fc\u30c9\u60c5\u5831\u3092\u6271\u3044\u307e\u305b\u3093\u3002\u4e88\u7d04\u6642\u306f\u4e0e\u4fe1\u306e\u307f\u3067\u3001\u6c7a\u6e08\u306f\u30c1\u30a7\u30c3\u30af\u30a4\u30f32\u65e5\u524d\u306b\u884c\u308f\u308c\u307e\u3059\u3002',\n    modalSum: (r,n,ci,co,nt,g,tot) => `${r}\u00d7${n}\u5ba4\uff5c${ci}\u301c${co}\u30fb${nt}\u6cca\u30fb1\u5ba4${g}\u540d\uff5c\u5408\u8a08${tot}\uff08\u7a0e\u8fbc\uff09`\n  },\n  en: {\n    W: ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'], tilde: '\u2013',\n    fmtS: (d,w) => `${w}, ${MON[d.getMonth()]} ${d.getDate()}`,\n    fmtL: (d,w) => `${w}, ${MON[d.getMonth()]} ${d.getDate()}, ${d.getFullYear()}`,\n    month: (y,m) => `${MONTHS[m-1]} ${y}`,\n    roomFallback: 'rooms', nj: ' and ', rj: '; ',\n    reason1: (d,names) => `${names} fully booked on ${d}`,\n    why: (ci,lim,rs) => `With check-in on ${ci}, you can stay in the same room type until check-out on ${lim} (${rs}). To change your check-in date, tap that date or press \u201cClear dates\u201d.`,\n    hintIn: 'Select your check-in date', hintOutUntil: l => `Select your check-out date (until ${l})`, hintOut: 'Select your check-out date',\n    farTitle: 'Not selectable: the same room type is not available for all these nights', cellFull: 'Full', fullTitle: 'Fully booked', outOnly: 'Out only', left: n => `${n} left`,\n    selectDate: 'Select date', nights: n => pl(n, '1 night', `${n} nights`),\n    badgeFree: s => `Free cancellation until ${s}`,\n    textFree: (l,nl,p) => `<b>Free cancellation until ${l}<\/b>${nl ? `From ${nl}, cancellations are charged ${p}% of the room rate.` : ''}`,\n    badgeFee: p => `Cancellation fee ${p}%`,\n    textFee: p => `<b>Cancellations after booking are charged ${p}% of the room rate<\/b>The free cancellation period for these dates has passed.`,\n    aboutCancel: () => '',\n    elevYes: 'Elevator', elevNo: 'No elevator',\n    photoAria: n => `View photos of the ${n}`, photoCnt: n => pl(n, '1 photo', `${n} photos`), lbCap: (n,i,t) => `${n} (${i} \/ ${t})`,\n    checking: 'Checking availability and prices\u2026', fetchErr: 'Could not load availability.', fetchLink: 'Book here instead',\n    condLabel: 'Your stay', guestsPill: g => pl(+g, '1 guest \/ room', `${g} guests \/ room`), editDates: 'Change dates',\n    busy: (d,t,b,l) => `<b>These dates are in high demand.<\/b> On ${d}, ${b} of our ${t} rooms are already booked (${l} left).`,\n    reasonFull: (d,r) => `The ${r} is fully booked on ${d}`, reasonMin: n => `For stays of ${n} nights or more`,\n    naName: 'Not available for these dates', bigFull: 'Sold out', bigNa: 'Unavailable', altBtn: 'Search other dates',\n    few: n => `Only ${n} left`, opt: i => pl(i, '1 room', `${i} rooms`), cond: (nt,g,n) => `${pl(nt,'1 night',nt+' nights')} \u00b7 ${pl(+g,'1 guest',g+' guests')} \u00d7 ${pl(n,'1 room',n+' rooms')}`, totalLabel: c => `Total for ${c}`,\n    tax: 'incl. tax', per: y => `${y} per room per night (incl. tax)`, roomsLabel: 'Rooms', maxRooms: n => `(max. ${n})`, bookBtn: 'Book this plan \u2192', more: 'Room details & notes', less: 'Hide details',\n    allFull: 'No rooms are available for these dates. Please choose other dates in the calendar.',\n    fine: 'Prices include consumption tax. Rooms left and availability are based on the live inventory of our booking system. You enter your card details on the secure payment page (AirHost \/ Stripe); this site never handles your card information. Your card is only authorized when you book, and payment is taken 2 days before check-in.',\n    modalSum: (r,n,ci,co,nt,g,tot) => `${r} \u00d7 ${pl(n,'1 room',n+' rooms')} | ${ci} \u2013 ${co} \u00b7 ${pl(nt,'1 night',nt+' nights')} \u00b7 ${pl(+g,'1 guest',g+' guests')} per room | Total ${tot} (incl. tax)`\n  },\n  tw: {\n    W: ['\u65e5','\u4e00','\u4e8c','\u4e09','\u56db','\u4e94','\u516d'], tilde: '\u301c',\n    fmtS: (d,w) => `${d.getMonth()+1}\/${d.getDate()}\uff08${w}\uff09`,\n    fmtL: (d,w) => `${d.getFullYear()}\u5e74${d.getMonth()+1}\u6708${d.getDate()}\u65e5\uff08${w}\uff09`,\n    month: (y,m) => `${y}\u5e74${m}\u6708`,\n    roomFallback: '\u5ba2\u623f', nj: '\u30fb', rj: '\u3001',\n    reason1: (d,names) => `${d}${names}\u5df2\u5ba2\u6eff`,\n    why: (ci,lim,rs) => `${ci}\u5165\u4f4f\u6642\uff0c\u540c\u4e00\u623f\u578b\u6700\u591a\u53ef\u9023\u7e8c\u5165\u4f4f\u81f3${lim}\u9000\u623f\uff08${rs}\uff09\u3002\u5982\u8981\u66f4\u6539\u5165\u4f4f\u65e5\u671f\uff0c\u8acb\u9ede\u9078\u8a72\u65e5\u671f\u6216\u6309\u300c\u6e05\u9664\u65e5\u671f\u300d\u3002`,\n    hintIn: '\u8acb\u9078\u64c7\u5165\u4f4f\u65e5\u671f', hintOutUntil: l => `\u8acb\u9078\u64c7\u9000\u623f\u65e5\u671f\uff08\u6700\u665a${l}\uff09`, hintOut: '\u8acb\u9078\u64c7\u9000\u623f\u65e5\u671f',\n    farTitle: '\u7121\u6cd5\u4ee5\u540c\u4e00\u623f\u578b\u9023\u7e8c\u5165\u4f4f\uff0c\u56e0\u6b64\u7121\u6cd5\u9078\u64c7', cellFull: '\u5ba2\u6eff', fullTitle: '\u5ba2\u6eff', outOnly: '\u50c5\u53ef\u9000\u623f', left: n => `\u5269${n}`,\n    selectDate: '\u9078\u64c7\u65e5\u671f', nights: n => `${n}\u665a`,\n    badgeFree: s => `${s}\u524d\u514d\u8cbb\u53d6\u6d88`,\n    textFree: (l,nl,p) => `<b>${l}\u524d\u53ef\u514d\u8cbb\u53d6\u6d88<\/b>${nl ? `${nl}\u8d77\u53d6\u6d88\u5c07\u6536\u53d6\u4f4f\u5bbf\u8cbb\u7528\u7684${p}%\u3002` : ''}`,\n    badgeFee: p => `\u53d6\u6d88\u8cbb ${p}%`,\n    textFee: p => `<b>\u9810\u8a02\u5f8c\u53d6\u6d88\u5c07\u6536\u53d6\u4f4f\u5bbf\u8cbb\u7528\u7684${p}%<\/b>\u6b64\u65e5\u671f\u5df2\u8d85\u904e\u514d\u8cbb\u53d6\u6d88\u671f\u9650\u3002`,\n    aboutCancel: () => '',\n    elevYes: '\u6709\u96fb\u68af', elevNo: '\u7121\u96fb\u68af',\n    photoAria: n => `\u67e5\u770b${n}\u7684\u7167\u7247`, photoCnt: n => `\u7167\u7247${n}\u5f35`, lbCap: (n,i,t) => `${n}\uff08${i} \/ ${t}\uff09`,\n    checking: '\u6b63\u5728\u67e5\u8a62\u7a7a\u623f\u8207\u50f9\u683c\u2026', fetchErr: '\u7121\u6cd5\u53d6\u5f97\u7a7a\u623f\u8cc7\u8a0a\u3002', fetchLink: '\u8acb\u7531\u6b64\u9810\u8a02',\n    condLabel: '\u4f4f\u5bbf\u65e5\u671f', guestsPill: g => `\u6bcf\u9593${g}\u4eba`, editDates: '\u66f4\u6539\u65e5\u671f',\n    busy: (d,t,b,l) => `<b>\u6b64\u65e5\u671f\u9810\u8a02\u96c6\u4e2d\u3002<\/b>${d}\u5168\u9928${t}\u9593\u5ba2\u623f\u4e2d\u5df2\u6709${b}\u9593\u88ab\u9810\u8a02\uff08\u5269\u9918${l}\u9593\uff09\u3002`,\n    reasonFull: (d,r) => `${d} ${r}\u5df2\u5ba2\u6eff`, reasonMin: n => `\u9650\u4f4f\u5bbf${n}\u665a\u4ee5\u4e0a`,\n    naName: '\u6b64\u65e5\u671f\u7121\u6cd5\u9810\u8a02', bigFull: '\u5ba2\u6eff', bigNa: '\u7121\u6cd5\u9810\u8a02', altBtn: '\u67e5\u8a62\u5176\u4ed6\u65e5\u671f',\n    few: n => `\u50c5\u5269${n}\u9593`, opt: i => `${i}\u9593`, cond: (nt,g,n) => `${nt}\u665a\u30fb${g}\u4eba\u00d7${n}\u9593`, totalLabel: c => `${c}\u5408\u8a08`,\n    tax: '\u542b\u7a05', per: y => `\u6bcf\u9593\u6bcf\u665a ${y}\uff08\u542b\u7a05\uff09`, roomsLabel: '\u623f\u9593\u6578', maxRooms: n => `\uff08\u6700\u591a${n}\u9593\uff09`, bookBtn: '\u9810\u8a02\u6b64\u65b9\u6848 \u2192', more: '\u67e5\u770b\u8a2d\u5099\u8207\u6ce8\u610f\u4e8b\u9805', less: '\u6536\u8d77',\n    allFull: '\u6b64\u65e5\u671f\u5df2\u5ba2\u6eff\uff0c\u8acb\u5728\u65e5\u66c6\u4e2d\u9078\u64c7\u5176\u4ed6\u65e5\u671f\u3002',\n    fine: '\u986f\u793a\u50f9\u683c\u5df2\u542b\u6d88\u8cbb\u7a05\u3002\u5269\u9918\u623f\u6578\u8207\u9810\u8a02\u72c0\u6cc1\u4f9d\u64da\u8a02\u623f\u7cfb\u7d71\u7684\u5373\u6642\u5eab\u5b58\u3002\u4fe1\u7528\u5361\u8cc7\u8a0a\u8acb\u65bc\u5b89\u5168\u7684\u4ed8\u6b3e\u9801\u9762\uff08AirHost\uff0fStripe\uff09\u8f38\u5165\uff0c\u672c\u7db2\u7ad9\u4e0d\u8655\u7406\u4fe1\u7528\u5361\u8cc7\u8a0a\u3002\u9810\u8a02\u6642\u50c5\u9032\u884c\u4fe1\u7528\u5361\u9810\u6388\u6b0a\uff0c\u5c07\u65bc\u5165\u4f4f\u524d2\u5929\u6263\u6b3e\u3002',\n    modalSum: (r,n,ci,co,nt,g,tot) => `${r}\u00d7${n}\u9593\uff5c${ci}\u301c${co}\u30fb${nt}\u665a\u30fb\u6bcf\u9593${g}\u4eba\uff5c\u5408\u8a08${tot}\uff08\u542b\u7a05\uff09`\n  },\n  ko: {\n    W: ['\uc77c','\uc6d4','\ud654','\uc218','\ubaa9','\uae08','\ud1a0'], tilde: '~',\n    fmtS: (d,w) => `${d.getMonth()+1}\/${d.getDate()}(${w})`,\n    fmtL: (d,w) => `${d.getFullYear()}\ub144 ${d.getMonth()+1}\uc6d4 ${d.getDate()}\uc77c(${w})`,\n    month: (y,m) => `${y}\ub144 ${m}\uc6d4`,\n    roomFallback: '\uac1d\uc2e4', nj: '\u00b7', rj: ', ',\n    reason1: (d,names) => `${d} ${names} \ub9cc\uc2e4`,\n    why: (ci,lim,rs) => `${ci} \uccb4\ud06c\uc778 \uc2dc \uac19\uc740 \uac1d\uc2e4 \ud0c0\uc785\uc73c\ub85c \uc5f0\uc18d \uc219\ubc15\ud560 \uc218 \uc788\ub294 \ub0a0\uc9dc\ub294 ${lim} \uccb4\ud06c\uc544\uc6c3\uae4c\uc9c0\uc785\ub2c8\ub2e4(${rs}). \uccb4\ud06c\uc778 \ub0a0\uc9dc\ub97c \ubc14\uafb8\ub824\uba74 \ud574\ub2f9 \ub0a0\uc9dc\ub97c \ub204\ub974\uac70\ub098 '\ub0a0\uc9dc \uc9c0\uc6b0\uae30'\ub97c \ub204\ub974\uc138\uc694.`,\n    hintIn: '\uccb4\ud06c\uc778 \ub0a0\uc9dc\ub97c \uc120\ud0dd\ud558\uc138\uc694', hintOutUntil: l => `\uccb4\ud06c\uc544\uc6c3 \ub0a0\uc9dc\ub97c \uc120\ud0dd\ud558\uc138\uc694(${l}\uae4c\uc9c0)`, hintOut: '\uccb4\ud06c\uc544\uc6c3 \ub0a0\uc9dc\ub97c \uc120\ud0dd\ud558\uc138\uc694',\n    farTitle: '\uac19\uc740 \uac1d\uc2e4 \ud0c0\uc785\uc73c\ub85c \uc5f0\uc18d \uc219\ubc15\ud560 \uc218 \uc5c6\uc5b4 \uc120\ud0dd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4', cellFull: '\ub9cc\uc2e4', fullTitle: '\ub9cc\uc2e4', outOnly: '\uccb4\ud06c\uc544\uc6c3\ub9cc', left: n => `\uc794\uc5ec${n}`,\n    selectDate: '\ub0a0\uc9dc \uc120\ud0dd', nights: n => `${n}\ubc15`,\n    badgeFree: s => `${s}\uae4c\uc9c0 \ubb34\ub8cc \ucde8\uc18c`,\n    textFree: (l,nl,p) => `<b>${l}\uae4c\uc9c0 \ubb34\ub8cc \ucde8\uc18c<\/b>${nl ? `${nl}\ubd80\ud130 \ucde8\uc18c \uc2dc \uc219\ubc15 \uc694\uae08\uc758 ${p}%\uac00 \ubd80\uacfc\ub429\ub2c8\ub2e4.` : ''}`,\n    badgeFee: p => `\ucde8\uc18c \uc218\uc218\ub8cc ${p}%`,\n    textFee: p => `<b>\uc608\uc57d \ud6c4 \ucde8\uc18c \uc2dc \uc219\ubc15 \uc694\uae08\uc758 ${p}%\uac00 \ubd80\uacfc\ub429\ub2c8\ub2e4<\/b>\uc774 \uc77c\uc815\uc740 \ubb34\ub8cc \ucde8\uc18c \uae30\uac04\uc774 \uc9c0\ub0ac\uc2b5\ub2c8\ub2e4.`,\n    aboutCancel: () => '',\n    elevYes: '\uc5d8\ub9ac\ubca0\uc774\ud130 \uc788\uc74c', elevNo: '\uc5d8\ub9ac\ubca0\uc774\ud130 \uc5c6\uc74c',\n    photoAria: n => `${n} \uc0ac\uc9c4 \ubcf4\uae30`, photoCnt: n => `\uc0ac\uc9c4 ${n}\uc7a5`, lbCap: (n,i,t) => `${n} (${i} \/ ${t})`,\n    checking: '\ube48 \uac1d\uc2e4\uacfc \uc694\uae08\uc744 \ud655\uc778\ud558\ub294 \uc911\u2026', fetchErr: '\ube48 \uac1d\uc2e4 \uc815\ubcf4\ub97c \ubd88\ub7ec\uc624\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4.', fetchLink: '\uc608\uc57d \ud398\uc774\uc9c0\ub85c \uc774\ub3d9',\n    condLabel: '\uc219\ubc15 \uc77c\uc815', guestsPill: g => `1\uc2e4 ${g}\uba85`, editDates: '\uc77c\uc815 \ubcc0\uacbd',\n    busy: (d,t,b,l) => `<b>\uc774 \uc77c\uc815\uc740 \uc608\uc57d\uc774 \ubab0\ub824 \uc788\uc2b5\ub2c8\ub2e4.<\/b> ${d}\uc5d0\ub294 \uc804\uccb4 ${t}\uc2e4 \uc911 ${b}\uc2e4\uc774 \uc608\uc57d\ub418\uc5c8\uc2b5\ub2c8\ub2e4(\uc794\uc5ec ${l}\uc2e4).`,\n    reasonFull: (d,r) => `${d} ${r} \ub9cc\uc2e4`, reasonMin: n => `${n}\ubc15 \uc774\uc0c1 \uc219\ubc15 \uc804\uc6a9`,\n    naName: '\uc774 \uc77c\uc815\uc740 \uc608\uc57d\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4', bigFull: '\ub9cc\uc2e4', bigNa: '\uc608\uc57d \ubd88\uac00', altBtn: '\ub2e4\ub978 \uc77c\uc815 \ucc3e\uae30',\n    few: n => `${n}\uc2e4 \ub0a8\uc74c`, opt: i => `${i}\uc2e4`, cond: (nt,g,n) => `${nt}\ubc15\u00b7${g}\uba85\u00d7${n}\uc2e4`, totalLabel: c => `${c} \ud569\uacc4`,\n    tax: '\uc138\uae08 \ud3ec\ud568', per: y => `1\ubc15 1\uc2e4\ub2f9 ${y}(\uc138\uae08 \ud3ec\ud568)`, roomsLabel: '\uac1d\uc2e4 \uc218', maxRooms: n => `(\ucd5c\ub300 ${n}\uc2e4)`, bookBtn: '\uc774 \ud50c\ub79c\uc73c\ub85c \uc608\uc57d\ud558\uae30 \u2192', more: '\uc2dc\uc124\u00b7\uc720\uc758\uc0ac\ud56d \ubcf4\uae30', less: '\uc811\uae30',\n    allFull: '\uc774 \uc77c\uc815\uc740 \ub9cc\uc2e4\uc785\ub2c8\ub2e4. \ub2ec\ub825\uc5d0\uc11c \ub2e4\ub978 \ub0a0\uc9dc\ub97c \uc120\ud0dd\ud574 \uc8fc\uc138\uc694.',\n    fine: '\ud45c\uc2dc \uc694\uae08\uc740 \uc18c\ube44\uc138 \ud3ec\ud568\uc785\ub2c8\ub2e4. \uc794\uc5ec \uac1d\uc2e4 \uc218\uc640 \uc608\uc57d \ud604\ud669\uc740 \uc608\uc57d \uc2dc\uc2a4\ud15c\uc758 \uc2e4\uc2dc\uac04 \uc7ac\uace0\ub97c \uae30\uc900\uc73c\ub85c \ud569\ub2c8\ub2e4. \uce74\ub4dc \uc815\ubcf4\ub294 \uc548\uc804\ud55c \uacb0\uc81c \ud398\uc774\uc9c0(AirHost\uff0fStripe)\uc5d0\uc11c \uc785\ub825\ud558\uba70, \ubcf8 \uc0ac\uc774\ud2b8\ub294 \uce74\ub4dc \uc815\ubcf4\ub97c \ucde8\uae09\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc608\uc57d \uc2dc\uc5d0\ub294 \uce74\ub4dc \uc2b9\uc778\ub9cc \uc774\ub8e8\uc5b4\uc9c0\uba70, \uacb0\uc81c\ub294 \uccb4\ud06c\uc778 2\uc77c \uc804\uc5d0 \uc9c4\ud589\ub429\ub2c8\ub2e4.',\n    modalSum: (r,n,ci,co,nt,g,tot) => `${r}\u00d7${n}\uc2e4\uff5c${ci}~${co}\u00b7${nt}\ubc15\u00b71\uc2e4 ${g}\uba85\uff5c\ud569\uacc4 ${tot}(\uc138\uae08 \ud3ec\ud568)`\n  },\n  cn: {\n    W: ['\u65e5','\u4e00','\u4e8c','\u4e09','\u56db','\u4e94','\u516d'], tilde: '\u301c',\n    fmtS: (d,w) => `${d.getMonth()+1}\/${d.getDate()}\uff08${w}\uff09`,\n    fmtL: (d,w) => `${d.getFullYear()}\u5e74${d.getMonth()+1}\u6708${d.getDate()}\u65e5\uff08${w}\uff09`,\n    month: (y,m) => `${y}\u5e74${m}\u6708`,\n    roomFallback: '\u5ba2\u623f', nj: '\u30fb', rj: '\u3001',\n    reason1: (d,names) => `${d}${names}\u5df2\u6ee1\u623f`,\n    why: (ci,lim,rs) => `${ci}\u5165\u4f4f\u65f6\uff0c\u540c\u4e00\u623f\u578b\u6700\u591a\u53ef\u8fde\u7eed\u5165\u4f4f\u81f3${lim}\u9000\u623f\uff08${rs}\uff09\u3002\u5982\u9700\u66f4\u6539\u5165\u4f4f\u65e5\u671f\uff0c\u8bf7\u70b9\u51fb\u8be5\u65e5\u671f\u6216\u6309\u201c\u6e05\u9664\u65e5\u671f\u201d\u3002`,\n    hintIn: '\u8bf7\u9009\u62e9\u5165\u4f4f\u65e5\u671f', hintOutUntil: l => `\u8bf7\u9009\u62e9\u9000\u623f\u65e5\u671f\uff08\u6700\u665a${l}\uff09`, hintOut: '\u8bf7\u9009\u62e9\u9000\u623f\u65e5\u671f',\n    farTitle: '\u65e0\u6cd5\u4ee5\u540c\u4e00\u623f\u578b\u8fde\u7eed\u5165\u4f4f\uff0c\u56e0\u6b64\u65e0\u6cd5\u9009\u62e9', cellFull: '\u6ee1\u623f', fullTitle: '\u6ee1\u623f', outOnly: '\u4ec5\u53ef\u9000\u623f', left: n => `\u5269${n}`,\n    selectDate: '\u9009\u62e9\u65e5\u671f', nights: n => `${n}\u665a`,\n    badgeFree: s => `${s}\u524d\u514d\u8d39\u53d6\u6d88`,\n    textFree: (l,nl,p) => `<b>${l}\u524d\u53ef\u514d\u8d39\u53d6\u6d88<\/b>${nl ? `${nl}\u8d77\u53d6\u6d88\u5c06\u6536\u53d6\u4f4f\u5bbf\u8d39\u7528\u7684${p}%\u3002` : ''}`,\n    badgeFee: p => `\u53d6\u6d88\u8d39 ${p}%`,\n    textFee: p => `<b>\u9884\u8ba2\u540e\u53d6\u6d88\u5c06\u6536\u53d6\u4f4f\u5bbf\u8d39\u7528\u7684${p}%<\/b>\u8be5\u65e5\u671f\u5df2\u8d85\u8fc7\u514d\u8d39\u53d6\u6d88\u671f\u9650\u3002`,\n    aboutCancel: () => '',\n    elevYes: '\u6709\u7535\u68af', elevNo: '\u65e0\u7535\u68af',\n    photoAria: n => `\u67e5\u770b${n}\u7684\u7167\u7247`, photoCnt: n => `\u7167\u7247${n}\u5f20`, lbCap: (n,i,t) => `${n}\uff08${i} \/ ${t}\uff09`,\n    checking: '\u6b63\u5728\u67e5\u8be2\u7a7a\u623f\u548c\u4ef7\u683c\u2026', fetchErr: '\u65e0\u6cd5\u83b7\u53d6\u7a7a\u623f\u4fe1\u606f\u3002', fetchLink: '\u8bf7\u7531\u6b64\u9884\u8ba2',\n    condLabel: '\u4f4f\u5bbf\u65e5\u671f', guestsPill: g => `\u6bcf\u95f4${g}\u4eba`, editDates: '\u66f4\u6539\u65e5\u671f',\n    busy: (d,t,b,l) => `<b>\u8be5\u65e5\u671f\u9884\u8ba2\u8f83\u4e3a\u96c6\u4e2d\u3002<\/b>${d}\u5168\u9986${t}\u95f4\u5ba2\u623f\u4e2d\u5df2\u6709${b}\u95f4\u88ab\u9884\u8ba2\uff08\u5269\u4f59${l}\u95f4\uff09\u3002`,\n    reasonFull: (d,r) => `${d} ${r}\u5df2\u6ee1\u623f`, reasonMin: n => `\u9650\u4f4f\u5bbf${n}\u665a\u4ee5\u4e0a`,\n    naName: '\u8be5\u65e5\u671f\u65e0\u6cd5\u9884\u8ba2', bigFull: '\u6ee1\u623f', bigNa: '\u65e0\u6cd5\u9884\u8ba2', altBtn: '\u67e5\u8be2\u5176\u4ed6\u65e5\u671f',\n    few: n => `\u4ec5\u5269${n}\u95f4`, opt: i => `${i}\u95f4`, cond: (nt,g,n) => `${nt}\u665a\u30fb${g}\u4eba\u00d7${n}\u95f4`, totalLabel: c => `${c}\u5408\u8ba1`,\n    tax: '\u542b\u7a0e', per: y => `\u6bcf\u95f4\u6bcf\u665a ${y}\uff08\u542b\u7a0e\uff09`, roomsLabel: '\u623f\u95f4\u6570', maxRooms: n => `\uff08\u6700\u591a${n}\u95f4\uff09`, bookBtn: '\u9884\u8ba2\u6b64\u65b9\u6848 \u2192', more: '\u67e5\u770b\u8bbe\u65bd\u4e0e\u6ce8\u610f\u4e8b\u9879', less: '\u6536\u8d77',\n    allFull: '\u8be5\u65e5\u671f\u5df2\u6ee1\u623f\uff0c\u8bf7\u5728\u65e5\u5386\u4e2d\u9009\u62e9\u5176\u4ed6\u65e5\u671f\u3002',\n    fine: '\u663e\u793a\u4ef7\u683c\u5df2\u542b\u6d88\u8d39\u7a0e\u3002\u5269\u4f59\u623f\u6570\u548c\u9884\u8ba2\u60c5\u51b5\u4ee5\u8ba2\u623f\u7cfb\u7edf\u7684\u5b9e\u65f6\u5e93\u5b58\u4e3a\u51c6\u3002\u4fe1\u7528\u5361\u4fe1\u606f\u8bf7\u5728\u5b89\u5168\u7684\u652f\u4ed8\u9875\u9762\uff08AirHost\uff0fStripe\uff09\u586b\u5199\uff0c\u672c\u7f51\u7ad9\u4e0d\u5904\u7406\u4fe1\u7528\u5361\u4fe1\u606f\u3002\u9884\u8ba2\u65f6\u4ec5\u8fdb\u884c\u4fe1\u7528\u5361\u9884\u6388\u6743\uff0c\u5c06\u4e8e\u5165\u4f4f\u524d2\u5929\u6263\u6b3e\u3002',\n    modalSum: (r,n,ci,co,nt,g,tot) => `${r}\u00d7${n}\u95f4\uff5c${ci}\u301c${co}\u30fb${nt}\u665a\u30fb\u6bcf\u95f4${g}\u4eba\uff5c\u5408\u8ba1${tot}\uff08\u542b\u7a0e\uff09`\n  }\n};\nconst T = I18N[LANG] || I18N.ja;\n\/\/ \u90e8\u5c4b\u30bf\u30a4\u30d7\u30fb\u30d7\u30e9\u30f3\u306e\u8a2d\u5b9a\u3092\u540d\u524d\u304b\u3089\u5f15\u304f\uff08\u90e8\u5c4b=\u4e88\u7d04\u30a8\u30f3\u30b8\u30f3\u306e\u90e8\u5c4b\u540d\u306b match \u306e\u6b63\u898f\u8868\u73fe\u3001\u30d7\u30e9\u30f3=\u65e5\u672c\u8a9e\u30d7\u30e9\u30f3\u540d\u306b match_ja\u3001\u7121\u6307\u5b9a\u306e\u30d7\u30e9\u30f3\u306f\u65e2\u5b9a\uff09\nconst roomCfg = n => (SITE.rooms || []).find(r => new RegExp(r.match, 'i').test(n || '')) || null;\nconst planCfg = p => (SITE.plans || []).find(x => x.match_ja && new RegExp(x.match_ja).test(p.name || '')) || (SITE.plans || []).find(x => !x.match_ja) || null;\n\/\/ \u30d7\u30e9\u30f3\u540d\u306e\u5148\u982d\u306e\u7ba1\u7406\u7528\u8a18\u53f7\uff08[B]\u30fb\u3010A\u3011\u30fb(C) \u306a\u3069\u82f1\u6570\u5b571\u301c3\u6587\u5b57\u306e\u62ec\u5f27\u66f8\u304d\uff09\u306f\u8868\u793a\u3057\u306a\u3044\uff08v1.1.0\uff09\nconst stripCode = n => String(n || '').replace(\/^\\s*[\\[\uff3b\u3010(\uff08][A-Za-z0-9]{1,3}[\\]\uff3d\u3011)\uff09]\\s*\/, '');\nconst planName = p => { const c = LANG === 'ja' ? null : planCfg(p); return stripCode((c && c.name && c.name[LANG]) || p.name); };\nconst planDesc = p => { const c = LANG === 'ja' ? null : planCfg(p); return (c && c.desc && c.desc[LANG]) || p.desc; };\nconst roomLabel = n => { const c = roomCfg(n); return (c && c.name && c.name[LANG]) || n; };\n\nconst $ = id => document.getElementById(id);\nconst pad = n => String(n).padStart(2,'0');\nconst ymd = d => `${d.getFullYear()}-${pad(d.getMonth()+1)}-${pad(d.getDate())}`;\nconst toD = s => new Date(s+'T00:00:00');\nconst fmtJ = s => { const d = toD(s); return T.fmtS(d, T.W[d.getDay()]); };\nconst fmtLong = s => { const d = toD(s); return T.fmtL(d, T.W[d.getDay()]); };\nconst addDays = (s,n) => { const d = toD(s); d.setDate(d.getDate()+n); return ymd(d); };\nconst yen = n => '\u00a5' + Number(n).toLocaleString('ja-JP');\nconst today = new Date(); today.setHours(0,0,0,0);\nconst TODAY = ymd(today);\nconst minMonth = new Date(today.getFullYear(), today.getMonth(), 1);\nconst maxMonth = new Date(today.getFullYear(), today.getMonth()+23, 1);\n\nlet view = new Date(minMonth);\n\/\/ \u30b9\u30de\u30db\uff081\u304b\u6708\u8868\u793a\uff09\u3067\u4eca\u6708\u306e\u6b8b\u308a\u304c1\u9031\u9593\u672a\u6e80\u306a\u3089\u7fcc\u6708\u304b\u3089\u898b\u305b\u308b\uff08\u2039\u3067\u4eca\u6708\u306b\u623b\u308c\u308b\uff09\nif (window.matchMedia('(max-width:860px)').matches && new Date(today.getFullYear(), today.getMonth()+1, 0).getDate() - today.getDate() < 7) view = new Date(today.getFullYear(), today.getMonth()+1, 1);\nlet checkin = null, checkout = null, houseUrl = '', chosen = null, chosenRooms = 1, lastSearch = null, lastGuests = 2;\nconst monthData = {};      \/\/ 'YYYY-MM' -> {date: {left, rooms, min1, min}}\nconst monthPromise = {};\nconst roomNames = {};      \/\/ master_room_id -> \u90e8\u5c4b\u540d\uff08\/be\/month \u304b\u3089\uff09\nconst mkey = d => `${d.getFullYear()}-${pad(d.getMonth()+1)}`;\nconst info = s => (monthData[s.slice(0,7)] || {})[s];\n\nfunction loadMonth(d){\n  const k = mkey(d);\n  if (!monthPromise[k]) monthPromise[k] = fetch(`${API}\/month?month=${k}`).then(r => r.json()).then(j => { monthData[k] = (j && j.days) || {}; Object.assign(roomNames, (j && j.room_names) || {}); }).catch(() => { monthData[k] = {}; });\n  return monthPromise[k];\n}\n\n\/\/ \u30c1\u30a7\u30c3\u30af\u30a4\u30f3\u9078\u629e\u5f8c\u3001\u9078\u3079\u308b\u6700\u5f8c\u306e\u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u65e5\uff08\uff0b\u305d\u306e\u7406\u7531\uff09\u3002\n\/\/ \u540c\u3058\u90e8\u5c4b\u30bf\u30a4\u30d7\u3067\u6bce\u6669\u7a7a\u3044\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308b\uff08\u90e8\u5c4b\u30bf\u30a4\u30d7\u3092\u307e\u305f\u3050\u9023\u6cca\u306f\u4e88\u7d04\u30a8\u30f3\u30b8\u30f3\u3067\u3082\u53d6\u308c\u306a\u3044\uff09\u306e\u3067\u3001\n\/\/ \u30c1\u30a7\u30c3\u30af\u30a4\u30f3\u591c\u306b\u7a7a\u3044\u3066\u3044\u308b\u90e8\u5c4b\u30bf\u30a4\u30d7\u3092\u5019\u88dc\u306b\u3057\u3001\u591c\u3054\u3068\u306b\u6e80\u5ba4\u306b\u306a\u3063\u305f\u90e8\u5c4b\u30bf\u30a4\u30d7\u3092\u5916\u3059\u3002\u5019\u88dc\u304c\u5c3d\u304d\u305f\u591c\u306e\u5f53\u65e5\u304c\u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u9650\u754c\u3002\nfunction limitInfo(ci){\n  const first = info(ci);\n  let alive = first ? Object.keys(first.rooms || {}).filter(r => (+first.rooms[r] || 0) > 0) : null;\n  const full = [];           \/\/ [{room, date}] \u90e8\u5c4b\u30bf\u30a4\u30d7\u3054\u3068\u306b\u6700\u521d\u306b\u6e80\u5ba4\u306b\u306a\u3063\u305f\u591c\n  let d = ci;\n  for (let i = 0; i < MAX_NIGHTS; i++){\n    const inf = info(d);\n    if (inf) {\n      if (alive) { const next = alive.filter(r => (+(inf.rooms || {})[r] || 0) > 0); alive.filter(r => !next.includes(r)).forEach(r => full.push({room: r, date: d})); alive = next; }\n      if ((alive && alive.length === 0) || inf.left <= 0) return {limit: d, full, known: true};\n    }\n    const nx = addDays(d, 1);\n    if (!monthData[nx.slice(0,7)]) return {limit: addDays(ci, MAX_NIGHTS), full, known: false};\n    d = nx;\n  }\n  return {limit: d, full, known: true};\n}\nconst lastCheckoutFor = ci => limitInfo(ci).limit;\n\n\/\/ \u63cf\u753b\u306f\u901a\u4fe1\u3092\u5f85\u305f\u305a\u306b\u5373\u6642\u306b\u884c\u3046\uff08\u77e2\u5370\u3092\u62bc\u3057\u305f\u3089\u3059\u3050\u6708\u304c\u5207\u308a\u66ff\u308f\u308b\uff09\u3002\n\/\/ \u307e\u3060\u5c4a\u3044\u3066\u3044\u306a\u3044\u6708\u306f\u8aad\u307f\u8fbc\u307f\u8868\u793a\u306b\u3057\u3066\u3001\u5c4a\u3044\u305f\u3089\u63cf\u304d\u76f4\u3059\u3002\u9023\u6253\u3057\u3066\u3082\u6700\u65b0\u306e\u6708\u306e\u63cf\u753b\u3060\u3051\u304c\u53cd\u6620\u3055\u308c\u308b\nlet renderSeq = 0;\nfunction renderCal(){\n  const seq = ++renderSeq;\n  const months = [view, new Date(view.getFullYear(), view.getMonth()+1, 1)];\n  drawCal(months);\n  const missing = months.filter(m => !monthData[mkey(m)]);\n  if (missing.length) Promise.all(missing.map(loadMonth)).then(() => { if (seq === renderSeq) drawCal(months); });\n  prefetchAround();\n}\n\/\/ \u8868\u793a\u4e2d\u306e\u524d\u5f8c\u306e\u6708\u3092\u88cf\u3067\u5148\u8aad\u307f\uff08\u540c\u66422\u4ef6\u307e\u3067\u30fb\u53d6\u5f97\u6e08\u307f\u306f\u98db\u3070\u3059\uff09\nlet prefetchTimer = null;\nfunction prefetchAround(){\n  clearTimeout(prefetchTimer);\n  prefetchTimer = setTimeout(() => {\n    const want = [2, 3, -1, 4].map(o => new Date(view.getFullYear(), view.getMonth()+o, 1)).filter(m => m >= minMonth && m <= maxMonth && !monthPromise[mkey(m)]);\n    const step = () => { const batch = want.splice(0, 2); if (batch.length) Promise.all(batch.map(loadMonth)).then(step); };\n    step();\n  }, 250);\n}\nfunction drawCal(months){\n  const li = (checkin && !checkout) ? limitInfo(checkin) : null;\n  const limit = li ? li.limit : null;\n  const why = $('ngbk-why');\n  if (li && li.known && li.full.length) {\n    const byDate = {};\n    li.full.forEach(f => { (byDate[f.date] = byDate[f.date] || []).push(roomNames[f.room] ? roomLabel(roomNames[f.room]) : T.roomFallback); });\n    const reasons = Object.keys(byDate).sort().map(d => T.reason1(fmtJ(d), byDate[d].join(T.nj))).join(T.rj);\n    why.textContent = T.why(fmtJ(checkin), fmtJ(limit), reasons);\n    why.classList.add('show');\n  } else { why.textContent = ''; why.classList.remove('show'); }\n  $('ngbk-months').innerHTML = months.map(m => monthHTML(m, limit)).join('');\n  $('ngbk-prev').disabled = view <= minMonth;\n  $('ngbk-next').disabled = view >= maxMonth;\n  $('ngbk-hint').textContent = !checkin ? T.hintIn : (!checkout ? (limit && limit < addDays(checkin, MAX_NIGHTS) ? T.hintOutUntil(fmtJ(limit)) : T.hintOut) : `${fmtJ(checkin)} \u2192 ${fmtJ(checkout)}`);\n}\nfunction monthHTML(m, limit){\n  const y = m.getFullYear(), mo = m.getMonth(), first = new Date(y, mo, 1), days = new Date(y, mo+1, 0).getDate();\n  let cells = '<tr>' + '<td><\/td>'.repeat(first.getDay());\n  for (let d = 1; d <= days; d++){\n    const dt = new Date(y, mo, d), s = ymd(dt), inf = info(s);\n    let cls = 'd', p = '&nbsp;', l = '&nbsp;', title = '';\n    const choosingOut = checkin && !checkout;\n    if (s < TODAY) cls += ' past';\n    else if (choosingOut && s > checkin) {\n      if (s > limit) {\n        \/\/ \u3053\u306e\u65e5\u7a0b\u3067\u306f\u9078\u3079\u306a\u3044\u65e5\uff08\u540c\u3058\u304a\u90e8\u5c4b\u3067\u7d9a\u3051\u3066\u6cca\u307e\u308c\u306a\u3044\uff09\u3002\u62bc\u3057\u3066\u3082\u4f55\u3082\u5909\u3048\u305a\u3001\u7406\u7531\u306e\u884c\u3092\u76ee\u7acb\u305f\u305b\u308b\n        if (inf && inf.left > 0) { cls += ' far'; p = inf.min1 ? yen(inf.min1) : '&nbsp;'; title = T.farTitle; }\n        else { cls += ' x'; p = inf ? T.cellFull : '&nbsp;'; }\n      }\n      else if (inf && inf.left <= 0) { cls += ' co'; p = T.outOnly; }\n      else if (inf) { p = inf.min1 ? yen(inf.min1) : '&nbsp;'; }\n    }\n    else if (!inf && !monthData[s.slice(0,7)]) cls += ' loading';\n    else if (!inf) cls += ' nodata';\n    else if (inf.left <= 0) { cls += ' x'; p = T.cellFull; title = T.fullTitle; }\n    else {\n      p = inf.min1 ? yen(inf.min1) : '&nbsp;';\n      if (inf.left <= SHOW_LEFT_MAX) { l = T.left(inf.left); if (inf.left <= FEW_LEFT) cls += ' few'; }\n    }\n    if (checkin === s || checkout === s) cls += ' sel';\n    else if (checkin && checkout && s > checkin && s < checkout) cls += ' in';\n    cells += `<td><span class=\"${cls}\" data-d=\"${s}\"${title ? ` title=\"${esc(title)}\"` : ''}><span class=\"n\">${d}<\/span><span class=\"p\">${p}<\/span><span class=\"l\">${l}<\/span><\/span><\/td>`;\n    if (dt.getDay() === 6 && d < days) cells += '<\/tr><tr>';\n  }\n  const th = T.W.map((w,i) => `<th class=\"${i===0?'sun':i===6?'sat':''}\">${w}<\/th>`).join('');\n  return `<div class=\"month\"><h4>${T.month(y, mo+1)}<\/h4><table><tr>${th}<\/tr>${cells}<\/tr><\/table><\/div>`;\n}\nfunction syncSide(){\n  $('ngbk-v-in').textContent = checkin ? fmtJ(checkin) : T.selectDate; $('ngbk-v-in').classList.toggle('empty', !checkin);\n  $('ngbk-v-out').textContent = checkout ? fmtJ(checkout) : T.selectDate; $('ngbk-v-out').classList.toggle('empty', !checkout);\n  $('ngbk-nights').textContent = (checkin && checkout) ? T.nights(nightsBetween(checkin, checkout)) : '';\n  $('ngbk-search').disabled = !(checkin && checkout);\n  $('ngbk-clear2').hidden = !checkin;\n  $('ngbk-clear').style.visibility = checkin ? 'visible' : 'hidden';\n  const choosingOut = !!(checkin && !checkout);\n  $('ngbk-v-in').classList.toggle('active', isOpen() && !choosingOut);\n  $('ngbk-v-out').classList.toggle('active', isOpen() && choosingOut);\n}\n\/\/ ===== \u5916\u56fd\u8a9e\u30da\u30fc\u30b8\uff1a\u30d8\u30c3\u30c0\u30fc\u306e\u5b9f\u969b\u306e\u9ad8\u3055\u306b\u5408\u308f\u305b\u3066\u30d2\u30fc\u30ed\u30fc\u3092\u5f15\u304d\u4e0a\u3052\u308b\uff08v1.0.3\uff09\n\/\/ \u5916\u56fd\u8a9e\u30d8\u30c3\u30c0\u30fc\u306f\u753b\u9762\u5e45\u3067\u9ad8\u3055\u304c\u5909\u308f\u308b\uff08PC 106px\uff0f\u30b9\u30de\u30db 173px\uff0f\u5e45360px\u3060\u3068\u6298\u308a\u8fd4\u3057\u3066211px\uff09\u3002Elementor \u306e\u56fa\u5b9a\u5024\u3060\u3051\u3060\u3068\u9699\u9593\u3084\u898b\u51fa\u3057\u306e\u91cd\u306a\u308a\u304c\u51fa\u308b\nfunction fitHero(){\n  if (LANG === 'ja') return;\n  const H = document.querySelector('.ehf-header #masthead') || document.querySelector('#masthead');\n  const sec = $('ngbk-hero') && $('ngbk-hero').closest('.elementor-top-section');\n  if (!H || !sec) return;\n  sec.style.setProperty('margin-top', '0px', 'important'); sec.style.setProperty('padding-top', '0px', 'important');\n  const top0 = Math.round(sec.getBoundingClientRect().top - document.documentElement.getBoundingClientRect().top);   \/\/ \u5f15\u304d\u4e0a\u3052\u524d\u306e\u30d2\u30fc\u30ed\u30fc\u4e0a\u7aef\uff1d\u30d8\u30c3\u30c0\u30fc\u306e\u4e0b\u7aef\n  sec.style.setProperty('margin-top', (-top0) + 'px', 'important');\n  const h1 = document.querySelector('.elementor-element-ngbkh1');   \/\/ \u898b\u51fa\u3057\u300cOnline Booking\u300d\uff08Elementor\u306fid\u3067\u306a\u304fclass\u306b\u4ed8\u304f\uff09\n  if (h1) {\n    const over = Math.round(H.getBoundingClientRect().bottom + 16 - h1.getBoundingClientRect().top);\n    if (over > 0) sec.style.setProperty('padding-top', over + 'px', 'important');\n  }\n}\nlet fitT = 0;\nfitHero(); window.addEventListener('load', fitHero); window.addEventListener('resize', () => { clearTimeout(fitT); fitT = setTimeout(fitHero, 150); });\n\/\/ ===== \u30ab\u30ec\u30f3\u30c0\u30fc\u306e\u958b\u9589\uff08\u6700\u521d\u306f\u7d30\u9577\u3044\u691c\u7d22\u30d0\u30fc\u3060\u3051\u3002\u65e5\u4ed8\u6b04\u30af\u30ea\u30c3\u30af\u3067\u958b\u304f\uff09 =====\nconst isOpen = () => $('ngbk-hero').classList.contains('open');\nlet calFromY = null;   \/\/ \u30ab\u30ec\u30f3\u30c0\u30fc\u3092\u958b\u304f\u524d\u306e\u30b9\u30af\u30ed\u30fc\u30eb\u4f4d\u7f6e\uff08v1.5.1\u3002\u9589\u3058\u305f\u3089\u3053\u3053\u3078\u623b\u3059\uff09\nfunction openCal(){\n  if (!isOpen()) calFromY = window.scrollY;\n  $('ngbk-hero').classList.add('open'); syncSide(); renderCal();\n  const r = $('ngbk-panel').getBoundingClientRect();\n  if (r.bottom > window.innerHeight) window.scrollBy({top: r.bottom - window.innerHeight + 16, behavior: 'smooth'});\n}\nfunction closeCal(restore){\n  const was = isOpen();\n  $('ngbk-hero').classList.remove('open'); syncSide();\n  if (restore !== true || !was) return;\n  \/\/ \u65e5\u4ed8\u3092\u9078\u3073\u7d42\u3048\u305f\uff0f\u00d7\u3067\u9589\u3058\u305f\u6642\u306f\u3001\u958b\u304f\u524d\u306e\u4f4d\u7f6e\u3078\u623b\u3059\u3002\u305f\u3060\u3057\u691c\u7d22\u30d0\u30fc\u304c\u753b\u9762\u5185\u306b\u53ce\u307e\u3089\u306a\u3044\u4f4d\u7f6e\u306a\u3089\u3001\u691c\u7d22\u30d0\u30fc\u304c\u898b\u3048\u308b\u4f4d\u7f6e\u3078\n  let y = calFromY == null ? window.scrollY : calFromY;\n  const bar = $('ngbk-hero').getBoundingClientRect(), top = bar.top + window.scrollY;\n  if (top < y + 8 || top + bar.height > y + window.innerHeight - 8) y = Math.max(0, top - Math.max(16, (window.innerHeight - bar.height) \/ 2));\n  if (Math.abs(window.scrollY - y) > 4) window.scrollTo({top: y, behavior: 'smooth'});\n}\n\/\/ \u691c\u7d22\u524d\u306e\u300c\u3054\u4e88\u7d04\u306e\u6d41\u308c\u300d\u306e\u30dc\u30bf\u30f3\uff1a\u30da\u30fc\u30b8\u5148\u982d\u3078\u623b\u3063\u3066\u30ab\u30ec\u30f3\u30c0\u30fc\u3092\u958b\u304f\uff08v1.2.0\u3002\u5916\u5074\u30af\u30ea\u30c3\u30af\u5224\u5b9a\u306b\u639b\u304b\u3089\u306a\u3044\u3088\u3046\u9045\u3089\u305b\u3066\u958b\u304f\uff09\nif ($('ngbk-guide-go')) $('ngbk-guide-go').addEventListener('click', e => { e.stopPropagation(); window.scrollTo({top: 0, behavior: 'smooth'}); setTimeout(openCal, 450); });\nfunction pick(s){\n  const inf = info(s);\n  if (!checkin || checkout) {                       \/\/ \u30c1\u30a7\u30c3\u30af\u30a4\u30f3\u3092\u9078\u3076\n    if (!inf || inf.left <= 0) return;\n    checkin = s; checkout = null;\n  } else if (s <= checkin) {                        \/\/ \u30c1\u30a7\u30c3\u30af\u30a4\u30f3\u3092\u9078\u3073\u76f4\u3059\n    if (!inf || inf.left <= 0) return;\n    checkin = s;\n  } else {                                          \/\/ \u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u3092\u9078\u3076\n    if (s > lastCheckoutFor(checkin)) { flashWhy(); return; }   \/\/ \u9078\u3079\u306a\u3044\u65e5\uff1a\u7406\u7531\u3092\u76ee\u7acb\u305f\u305b\u308b\u3060\u3051\n    checkout = s;\n  }\n  syncSide(); renderCal();\n  if (checkin && checkout) setTimeout(() => closeCal(true), 350);   \/\/ \u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u307e\u3067\u9078\u3093\u3060\u3089\u9589\u3058\u3066\u30d0\u30fc\u306b\u623b\u3059\uff08\u958b\u304f\u524d\u306e\u4f4d\u7f6e\u3078\u30b9\u30af\u30ed\u30fc\u30eb\u3082\u623b\u3059 v1.5.1\uff09\n}\nconst nightsBetween = (a,b) => Math.round((toD(b)-toD(a))\/86400000);\nfunction dateList(a,b){ const out=[]; let d=a; while (d<b){ out.push(d); d=addDays(d,1);} return out; }\n\n$('ngbk-v-in').addEventListener('click', () => (isOpen() && !(checkin && !checkout)) ? closeCal() : openCal());\n$('ngbk-v-out').addEventListener('click', () => { if (isOpen() && checkin && !checkout) return closeCal(); if (checkin && checkout) checkout = null; openCal(); });\n$('ngbk-close').addEventListener('click', () => closeCal(true));\ndocument.getElementById('ngbk').addEventListener('click', e => {\n  if (!e.target.closest('#ngbk-cond-edit, [data-edit-dates]')) return;\n  e.stopPropagation();\n  track('edit', 'ngbk_edit');\n  $('ngbk-hero').scrollIntoView({behavior:'smooth', block:'center'});\n  setTimeout(() => { checkout = null; openCal(); }, 450);\n});\nfunction flashWhy(){ const w = $('ngbk-why'); if (!w.classList.contains('show')) return; w.classList.remove('flash'); void w.offsetWidth; w.classList.add('flash'); }\nfunction clearDates(){ checkin = null; checkout = null; syncSide(); renderCal(); }\n$('ngbk-clear').addEventListener('click', clearDates);\n$('ngbk-clear2').addEventListener('click', e => { clearDates(); openCal(); });\n\/\/ \u5916\u5074\u30af\u30ea\u30c3\u30af\u3067\u9589\u3058\u308b\u3002\u30de\u30b9\u76ee\u30af\u30ea\u30c3\u30af\u306f\u518d\u63cf\u753b\u3067\u8981\u7d20\u304cDOM\u304b\u3089\u5916\u308c\u308b\u306e\u3067\u5224\u5b9a\u3057\u306a\u3044\ndocument.addEventListener('click', e => {\n  if (!isOpen() || !e.target.isConnected) return;\n  if (!e.target.closest('#ngbk-hero')) closeCal();\n});\n$('ngbk-months').addEventListener('click', e => {\n  const t = e.target.closest('.d'); if (!t || t.classList.contains('past') || t.classList.contains('x') || t.classList.contains('nodata') || t.classList.contains('loading')) return;\n  pick(t.dataset.d);\n});\n$('ngbk-prev').onclick = () => { if (view > minMonth){ view = new Date(view.getFullYear(), view.getMonth()-1, 1); renderCal(); } };\n$('ngbk-next').onclick = () => { if (view < maxMonth){ view = new Date(view.getFullYear(), view.getMonth()+1, 1); renderCal(); } };\n\/\/ \u30b9\u30de\u30db\uff1a\u30ab\u30ec\u30f3\u30c0\u30fc\u3092\u5de6\u53f3\u306b\u30b9\u30ef\u30a4\u30d7\u3057\u3066\u6708\u3092\u79fb\u52d5\uff08v1.5.2\u3002\u5de6\u3078\uff1d\u7fcc\u6708\u30fb\u53f3\u3078\uff1d\u524d\u6708\u3002\u7e26\u30b9\u30af\u30ed\u30fc\u30eb\u3068\u65e5\u4ed8\u306e\u30bf\u30c3\u30d7\u306f\u305d\u306e\u307e\u307e\uff09\n(function(){\n  const box = $('ngbk-months'); let swX = 0, swY = 0, swT = 0, swOn = false;\n  box.style.touchAction = 'pan-y';\n  box.addEventListener('touchstart', e => { if (e.touches.length !== 1) { swOn = false; return; } const t = e.touches[0]; swX = t.clientX; swY = t.clientY; swT = Date.now(); swOn = true; }, {passive: true});\n  box.addEventListener('touchcancel', () => { swOn = false; }, {passive: true});\n  box.addEventListener('touchend', e => {\n    if (!swOn) return; swOn = false;\n    const t = e.changedTouches[0], dx = t.clientX - swX, dy = t.clientY - swY;\n    if (Math.abs(dx) < 45 || Math.abs(dx) < Math.abs(dy) * 1.5 || Date.now() - swT > 900) return;   \/\/ \u77ed\u3044\u30fb\u659c\u3081\u30fb\u3086\u3063\u304f\u308a\u306f\u6708\u9001\u308a\u306b\u3057\u306a\u3044\n    const btn = dx < 0 ? $('ngbk-next') : $('ngbk-prev');\n    if (btn.disabled) return;\n    btn.click();\n    if (box.animate) box.animate([{transform: `translateX(${dx < 0 ? 28 : -28}px)`, opacity: .35}, {transform: 'none', opacity: 1}], {duration: 220, easing: 'ease-out'});\n  }, {passive: true});\n})();\n\n\/\/ ===== \u30ad\u30e3\u30f3\u30bb\u30eb\u30dd\u30ea\u30b7\u30fc\uff08\u4e88\u7d04\u30a8\u30f3\u30b8\u30f3\u306e\u30d7\u30e9\u30f3\u8a2d\u5b9a policy \u6587\u5b57\u5217\u304b\u3089\u3002\u5143\u30c7\u30fc\u30bf\u306f\u65e5\u672c\u8a9e\u306a\u306e\u3067\u89e3\u6790\u306f\u65e5\u672c\u8a9e\u306e\u307e\u307e\u3001\u8868\u793a\u3060\u3051\u5404\u8a00\u8a9e\uff09 =====\nfunction cancelInfo(p){\n  const pol = p.policy || '';\n  const after = [...pol.matchAll(\/(\\d{4}-\\d{2}-\\d{2})\u4ee5\u964d\u306f\u3001\u30ad\u30e3\u30f3\u30bb\u30eb\u6599\\s*(\\d+)%\/g)].map(m => ({from:m[1], pct:+m[2]}));\n  const fu = p.free_until;\n  if (fu && fu >= TODAY) {\n    const next = after.find(a => a.from > fu) || after[0];\n    return { cls:'free', badge: T.badgeFree(fmtJ(fu)), text: T.textFree(fmtLong(fu), next ? fmtLong(next.from) : null, next ? next.pct : 0) };\n  }\n  const now = after.filter(a => a.from <= TODAY).pop() || after[after.length-1];\n  if (now) return { cls:'nofree', badge: T.badgeFee(now.pct), text: T.textFee(now.pct) };\n  return { cls:'free', badge:'', text: pol ? T.aboutCancel(pol) : '' };\n}\n\n\/\/ ===== \u90e8\u5c4b\u30ab\u30fc\u30c9\u4e0a\u6bb5\uff08\u5199\u771f\uff0b\u7279\u5fb4\uff09 =====\nconst roomPhotos = {};\nfunction roomTop(room){\n  const name = roomLabel(room.name);\n  const photos = (room.photos || []).filter(Boolean); roomPhotos[room.master_id] = {name, photos};\n  const rc = roomCfg(room.name) || {};\n  const bed = (rc.bed || {})[LANG] || '';\n  const elevChip = rc.elevator === true ? ['elev', T.elevYes] : (rc.elevator === false ? ['noelev', T.elevNo] : null);   \/\/ null\uff1d\u8868\u793a\u3057\u306a\u3044\n  const C = (SITE.common || {})[LANG] || {};\n  \/\/ \u7279\u5fb4\u30a2\u30a4\u30b3\u30f3\u306e\u4e26\u3073\uff08area\/bed\/ppl\/elev\/kit\/wash\/wifi\u3002\u30a2\u30a4\u30b3\u30f3\u306fCSS\u306b\u3042\u308b\u7a2e\u985e\u3060\u3051\uff09\u3002\u6587\u8a00\u304c\u7a7a\u306e\u3082\u306e\u306f\u51fa\u3055\u306a\u3044\n  const chips = (SITE.chips || ['area', 'bed', 'ppl', 'elev', 'kit', 'wash', 'wifi']).map(k => k === 'bed' ? ['bed', bed] : (k === 'elev' ? elevChip : [k, C[k]]))\n    .filter(Boolean)\n    .filter(c => c[1]).map(([k, t]) => `<span class=\"chip ${k}\">${esc(t)}<\/span>`).join('');\n  const notes = ((SITE.notes || {})[LANG] || []).map(n => `<li>${esc(n)}<\/li>`).join('');\n  const photo = photos.length\n    ? `<button type=\"button\" class=\"photo\" data-gallery=\"${room.master_id}\" aria-label=\"${esc(T.photoAria(name))}\" style=\"background-image:url('${esc(photos[0])}')\"><span class=\"cnt\">${esc(T.photoCnt(photos.length))}<\/span><\/button>`\n    : `<div class=\"photo\"><\/div>`;\n  return `${photo}<div class=\"info\"><h3>${esc(name)}<\/h3><div class=\"chips\">${chips}<\/div><ul class=\"notes\">${notes}<\/ul><button type=\"button\" class=\"more-btn\" data-more aria-expanded=\"false\">${esc(T.more)}<\/button><\/div>`;\n}\n\/\/ ===== \u5199\u771f\u306e\u62e1\u5927\u8868\u793a\uff08\u30af\u30ea\u30c3\u30af\u64cd\u4f5c\u306e\u307f\uff09 =====\nlet lb = {list: [], i: 0, name: ''};\nfunction lbShow(){ $('ngbk-lb-img').src = lb.list[lb.i]; $('ngbk-lb-cap').textContent = T.lbCap(lb.name, lb.i+1, lb.list.length);\n  $('ngbk-lb-prev').style.visibility = $('ngbk-lb-next').style.visibility = lb.list.length > 1 ? 'visible' : 'hidden'; }\ndocument.getElementById('ngbk').addEventListener('click', e => {\n  const g = e.target.closest('[data-gallery]'); if (!g) return;\n  const r = roomPhotos[g.dataset.gallery]; if (!r || !r.photos.length) return;\n  lb = {list: r.photos, i: 0, name: r.name}; lbShow(); $('ngbk-lb').classList.add('open');\n  track('photo', 'ngbk_photo', null, true);\n});\n\/\/ \u30b9\u30de\u30db: \u300c\u8a2d\u5099\u30fb\u3054\u6ce8\u610f\u3092\u898b\u308b\u300d\u3067\u90e8\u5c4b\u30ab\u30fc\u30c9\u306e\u7279\u5fb4\u30fb\u6ce8\u610f\u4e8b\u9805\u3092\u958b\u9589\uff08v1.1.0\uff09\ndocument.getElementById('ngbk').addEventListener('click', e => {\n  const b = e.target.closest('[data-more]'); if (!b) return;\n  const room = b.closest('.room'); const open = room.classList.toggle('open');\n  b.setAttribute('aria-expanded', open ? 'true' : 'false'); b.textContent = open ? T.less : T.more;\n  if (open) track('more', 'ngbk_more', null, true);\n});\n$('ngbk-lb-prev').onclick = e => { e.stopPropagation(); lb.i = (lb.i - 1 + lb.list.length) % lb.list.length; lbShow(); };\n$('ngbk-lb-next').onclick = e => { e.stopPropagation(); lb.i = (lb.i + 1) % lb.list.length; lbShow(); };\n$('ngbk-lb-img').onclick = e => { e.stopPropagation(); if (lb.list.length > 1){ lb.i = (lb.i + 1) % lb.list.length; lbShow(); } };\n$('ngbk-lb-x').onclick = () => $('ngbk-lb').classList.remove('open');\n$('ngbk-lb').addEventListener('click', e => { if (e.target.id === 'ngbk-lb') $('ngbk-lb').classList.remove('open'); });\n\n\/\/ ===== \u691c\u7d22 =====\n\/\/ \u691c\u7d22\u5f8c\u3001\u7d50\u679c\u306e\u5148\u982d\uff08\u3054\u5bbf\u6cca\u65e5\u306e\u5e2f\uff09\u3092\u8ffd\u5f93\u30d8\u30c3\u30c0\u30fc\u306e\u4e0b\u306b\u5408\u308f\u305b\u308b\uff08v1.5.3\u3002scrollIntoView \u3060\u3068\u56fa\u5b9a\u30d8\u30c3\u30c0\u30fc\u306e\u88cf\u306b\u6f5c\u3063\u3066\u65e5\u4ed8\u304c\u5207\u308c\u3066\u3044\u305f\uff09\nfunction headerCover(){\n  let c = 0; const seen = new Set();\n  const cand = [...document.querySelectorAll('header, #masthead, .ehf-header, .elementor-location-header, [data-elementor-type=\"header\"], #wpadminbar')];\n  [8, innerWidth \/ 2, innerWidth - 8].forEach(x => cand.push(...document.elementsFromPoint(x, 2)));\n  for (let e of cand) for (; e && e !== document.body && e !== document.documentElement && !seen.has(e); e = e.parentElement) {\n    seen.add(e);\n    const s = getComputedStyle(e);\n    if ((s.position !== 'fixed' && s.position !== 'sticky') || s.display === 'none' || s.visibility === 'hidden') continue;\n    const r = e.getBoundingClientRect();\n    if (!r.height || r.height > innerHeight * .5 || e.closest('#ngbk')) continue;\n    if (r.top <= 1 && r.bottom > 1) c = Math.max(c, r.bottom);            \/\/ \u753b\u9762\u4e0a\u7aef\u306b\u898b\u3048\u3066\u3044\u308b\n    else if (r.bottom <= 1 && r.bottom > -4) c = Math.max(c, r.height);   \/\/ \u4e0b\u30b9\u30af\u30ed\u30fc\u30eb\u3067\u4e0a\u3078\u96a0\u308c\u3066\u3044\u308b\uff08\u4e0a\u3078\u623b\u3059\u3068\u51fa\u3066\u304f\u308b\uff09\n  }\n  return Math.round(c);\n}\nfunction scrollToResults(){\n  const y = Math.max(0, Math.round($('ngbk-results').getBoundingClientRect().top + window.scrollY - headerCover() - 12));\n  if (Math.abs(window.scrollY - y) > 4) window.scrollTo({top: y, behavior: 'smooth'});\n}\nlet resUserMoved = false;   \/\/ \u691c\u7d22\u4e2d\u306b\u304a\u5ba2\u69d8\u304c\u81ea\u5206\u3067\u30b9\u30af\u30ed\u30fc\u30eb\u3057\u305f\u3089\u3001\u7d50\u679c\u3092\u63cf\u3044\u305f\u5f8c\u306b\u4f4d\u7f6e\u3092\u5408\u308f\u305b\u76f4\u3055\u306a\u3044\n['wheel', 'touchmove'].forEach(t => window.addEventListener(t, () => { resUserMoved = true; }, {passive: true}));\n$('ngbk-search').onclick = async () => {\n  closeCal();\n  const guests = $('ngbk-guests').value, nights = nightsBetween(checkin, checkout);\n  lastGuests = guests;\n  \/\/ \u691c\u7d22\u4e2d\uff1a\u56de\u8ee2\u30de\u30fc\u30af\uff0b\u90e8\u5c4b\u30ab\u30fc\u30c9\u306e\u5f62\u306e\u9aa8\u7d44\u307f\uff08\u5149\u304c\u6d41\u308c\u308b\uff09\u3002v1.0.2\n  const sk = '<div class=\"sk\" aria-hidden=\"true\"><div class=\"sk-ph\"><\/div><div class=\"sk-body\"><i class=\"w1\"><\/i><i class=\"w2\"><\/i><i class=\"w3\"><\/i><i class=\"w4\"><\/i><\/div><\/div>';\n  $('ngbk-results').innerHTML = `<div class=\"loading\" role=\"status\" aria-live=\"polite\"><div class=\"ld-head\"><span class=\"ld-spin\" aria-hidden=\"true\"><\/span><span>${esc(T.checking)}<\/span><\/div>${sk}${sk}<\/div>`;\n  resUserMoved = false; scrollToResults();\n  let j;\n  try { const r = await fetch(`${API}\/search?start_date=${checkin}&end_date=${checkout}&guests=${guests}`); j = await r.json(); } catch(e){ j = {error:'network'}; }\n  if (!j || j.error || !j.rooms){ $('ngbk-results').innerHTML = `<div class=\"status\">${esc(T.fetchErr)}<a href=\"${esc(beUrl(houseUrl||HOUSE_URL_FALLBACK))}\">${esc(T.fetchLink)}<\/a><\/div>`; return; }\n  houseUrl = j.house_url || houseUrl;\n  const dates = dateList(checkin, checkout);\n  let html = `<div class=\"cond\"><div class=\"cond-main\"><span class=\"cond-label\">${esc(T.condLabel)}<\/span><span class=\"cond-dates\">${fmtJ(checkin)}<span class=\"arrow\">${T.tilde}<\/span>${fmtJ(checkout)}<\/span><\/div>\n    <div class=\"cond-sub\"><span class=\"pill\">${esc(T.nights(nights))}<\/span><span class=\"pill\">${esc(T.guestsPill(guests))}<\/span><button type=\"button\" class=\"cond-edit\" id=\"ngbk-cond-edit\">${esc(T.editDates)}<\/button><\/div><\/div>`;\n\n  \/\/ \u4e8b\u5b9f\u30d9\u30fc\u30b9\u306e\u300c\u4e88\u7d04\u96c6\u4e2d\u300d\u8868\u793a\uff1a\u6ede\u5728\u4e2d\u3067\u6700\u3082\u57cb\u307e\u3063\u3066\u3044\u308b\u591c\u306e\u5b9f\u6570\n  let busiest = null;\n  for (const d of dates){\n    const rooms = j.breakdown[d] || {};\n    const left = Object.values(rooms).reduce((a, r) => a + (+r.allotment || 0), 0);\n    if (!busiest || left < busiest.left) busiest = {date:d, left};\n  }\n  if (busiest && busiest.left > 0) {\n    const booked = TOTAL_ROOMS - busiest.left;\n    if (booked \/ TOTAL_ROOMS >= BUSY_RATIO)\n      html += `<div class=\"notice busy\">\ud83d\udd25<span>${T.busy(fmtJ(busiest.date), TOTAL_ROOMS, booked, busiest.left)}<\/span><\/div>`;\n  }\n\n  let any = false;\n  const planIndex = {};\n  const blocks = [];\n  for (const room of j.rooms){\n    const rname = roomLabel(room.name);\n    let roomLeft = Infinity;\n    for (const d of dates){ const r = (j.breakdown[d]||{})[room.master_id]; roomLeft = Math.min(roomLeft, r ? (+r.allotment||0) : 0); }\n    const calc = p => {\n      let total=0, minStay=1, ok=true, reason='', full=false;\n      for (const d of dates){\n        const cell = ((j.breakdown[d]||{})[room.master_id]||{})[p.master_id];\n        if (!cell || cell.closed==='true' || !cell.allotment){ ok=false; full=true; reason=T.reasonFull(fmtJ(d), rname); break; }\n        total += cell.price; minStay = Math.max(minStay, cell.min_stay||1);\n      }\n      if (ok && nights < minStay){ ok=false; reason=T.reasonMin(minStay); }\n      return {...p, total, minStay, ok, reason, full};\n    };\n    const plans = room.rate_plans.map(calc).sort((a,b)=> (a.ok===b.ok ? a.total-b.total : (a.ok?-1:1)));\n    \/\/ \u901a\u5e38\u6599\u91d1\uff081\u6cca\u304b\u3089\u4f7f\u3048\u308b\u30d7\u30e9\u30f3\uff09\u306e\u540c\u3058\u65e5\u7a0b\u306e\u5408\u8a08\u3002\u9023\u6cca\u5272\u306e\u53d6\u308a\u6d88\u3057\u7dda\u7528\u3002\u4e88\u7d04\u30a8\u30f3\u30b8\u30f3\u306e\u540c\u3058\u30c7\u30fc\u30bf\u306b\u3042\u308b\u5b9f\u984d\u306a\u306e\u3067\u8ffd\u52a0\u306e\u901a\u4fe1\u306a\u3057\n    const std = room.rate_plans.map(p => {\n      let sum = 0;\n      for (const d of dates){ const c = ((j.breakdown[d]||{})[room.master_id]||{})[p.master_id]; if (!c || !(+c.price)) return null; if ((c.min_stay||1) > 1) return null; sum += +c.price; }\n      return sum;\n    }).filter(v => v).sort((a,b) => b - a)[0] || 0;\n    const best = plans.find(p=>p.ok); const shown = best ? [best] : plans.slice(0,1); if (best) any = true;\n    const maxRooms = Math.max(1, roomLeft);   \/\/ \u6b8b\u3063\u3066\u3044\u308b\u5ba4\u6570\u307e\u3067\u9078\u3079\u308b\uff08\u4e88\u7d04\u30a8\u30f3\u30b8\u30f3\u3068\u540c\u3058\uff09\n    const body = shown.map(p => {\n        if (!p.ok) {\n          return `<div class=\"plan na\"><div><div class=\"name\">${esc(T.naName)}<\/div><div class=\"desc\">${esc(p.reason)}<\/div><\/div>\n            <div class=\"soldout\"><div class=\"big\">${esc(p.full ? T.bigFull : T.bigNa)}<\/div><button type=\"button\" class=\"alt-btn\" data-edit-dates>${esc(T.altBtn)}<\/button><\/div><\/div>`;\n        }\n        const ci = cancelInfo(p); planIndex[p.id] = {p, room, rname, ci, std};\n        const off = std > p.total ? Math.round((1 - p.total \/ std) * 100) : 0;\n        const badges = [ci.badge ? `<span class=\"badge ${ci.cls}\">${esc(ci.badge)}<\/span>` : '',\n                        roomLeft <= FEW_LEFT ? `<span class=\"badge few\">${esc(T.few(roomLeft))}<\/span>` : ''].join('');\n        const opts = Array.from({length:maxRooms}, (_,i) => `<option value=\"${i+1}\">${esc(T.opt(i+1))}<\/option>`).join('');\n        return `<div class=\"plan\" data-price-plan=\"${p.id}\"><div><div class=\"name\">${esc(planName(p))}<\/div><div class=\"desc\">${esc(planDesc(p))}<\/div><div class=\"badges\">${badges}<\/div><\/div>\n             <div class=\"price\"><div class=\"total-label\">${T.totalLabel(`<span class=\"js-cond\">${esc(T.cond(nights, lastGuests, 1))}<\/span>`)}<\/div>\n             ${off > 0 ? `<div class=\"was\"><s class=\"js-was\">${yen(std)}<\/s><span class=\"off\">${off}%OFF<\/span><\/div>` : ''}\n             <div class=\"total\"><span class=\"js-total\">${yen(p.total)}<\/span><span class=\"tax\">${esc(T.tax)}<\/span><\/div><div class=\"per\">${esc(T.per(yen(Math.round(p.total\/nights))))}<\/div>\n             ${maxRooms > 1 ? `<div class=\"roomsel\"><label for=\"ngbk-rs-${p.id}\">${esc(T.roomsLabel)}<\/label><select id=\"ngbk-rs-${p.id}\" data-rooms-for=\"${p.id}\">${opts}<\/select><span class=\"rs-note\">${esc(T.maxRooms(maxRooms))}<\/span><\/div>` : ''}\n             <button type=\"button\" class=\"btn\" data-plan=\"${p.id}\">${esc(T.bookBtn)}<\/button><\/div><\/div>`;\n      }).join('');\n    blocks.push({ok: !!best, total: best ? best.total : Infinity, html: `<div class=\"room\"><div class=\"top\">${roomTop(room)}<\/div>${body}<\/div>`});\n  }\n  \/\/ \u4e88\u7d04\u3067\u304d\u308b\u90e8\u5c4b\u3092\u5148\u306b\u3001\u305d\u306e\u4e2d\u306f\u5b89\u3044\u9806\n  blocks.sort((a,b) => (a.ok===b.ok ? a.total-b.total : (a.ok?-1:1))).forEach(b => { html += b.html; });\n  if (!any) html += `<div class=\"status\">${esc(T.allFull)}<\/div>`;\n  $('ngbk-results').innerHTML = html;\n  if (!resUserMoved) { scrollToResults(); setTimeout(() => { if (!resUserMoved) scrollToResults(); }, 700); }\n  $('ngbk-fine').textContent = T.fine;\n  lastSearch = {planIndex, nights, guests, ci: checkin, co: checkout};   \/\/ \u4e88\u7d04\u306f\u691c\u7d22\u3057\u305f\u6642\u306e\u65e5\u7a0b\u3067\u9032\u3080\uff08\u300c\u65e5\u7a0b\u3092\u5909\u66f4\u300d\u3067 checkout \u304c\u7a7a\u306b\u306a\u3063\u3066\u3082\u53e4\u3044\u7d50\u679c\u306e\u30dc\u30bf\u30f3\u304b\u3089\u58ca\u308c\u305fURL\u306b\u3057\u306a\u3044\u30fbv1.1.0\uff09\n  const minTotal = Math.min(...Object.values(planIndex).map(x => x.p.total).filter(v => v > 0));\n  const sx = {n: nights, g: +guests, lead: Math.max(0, Math.round((toD(checkin) - toD(TODAY)) \/ 864e5)), dow: toD(checkin).getDay(), av: any ? 1 : 0};\n  if (isFinite(minTotal)) sx.min = minTotal;\n  track('search', 'ngbk_search', {nights, guests: +guests, available: any ? 1 : 0, lead: sx.lead}, false, sx);\n  watchPrice();\n};\n\n\/\/ \u6599\u91d1\u304c\u753b\u9762\u306b6\u5272\u4ee5\u4e0a\u898b\u3048\u305f\u3089 price \u30921\u56de\uff08\u691c\u7d22\u3054\u3068\uff09\u8a18\u9332\uff1d\u7d50\u679c\u3092\u898b\u305f\u4eba\u3068\u6599\u91d1\u307e\u3067\u898b\u305f\u4eba\u3092\u5206\u3051\u308b\uff08v1.1.0\uff09\nlet priceObs = null, searchAt = 0;\nfunction watchPrice(){\n  if (priceObs) priceObs.disconnect(); priceObs = null; searchAt = Date.now();\n  const el = document.querySelector('#ngbk-results .plan:not(.na) .price'); if (!el || !('IntersectionObserver' in window)) return;\n  priceObs = new IntersectionObserver(es => {\n    if (!es.some(x => x.isIntersecting)) return;\n    priceObs.disconnect(); priceObs = null; tracked.price = 0;\n    track('price', 'ngbk_price_seen', null, false, {ms: Math.min(Date.now() - searchAt, 9999999)});\n  }, {threshold: 0.6});\n  priceObs.observe(el);\n}\n\/\/ \u90e8\u5c4b\u6570\u3092\u5909\u3048\u305f\u3089\u5408\u8a08\u30fb\u53d6\u308a\u6d88\u3057\u7dda\u3092\u639b\u3051\u7b97\u3067\u66f4\u65b0\ndocument.getElementById('ngbk').addEventListener('change', e => {\n  const sel = e.target.closest('select[data-rooms-for]'); if (!sel || !lastSearch) return;\n  const it = lastSearch.planIndex[sel.dataset.roomsFor]; const n = +sel.value || 1;\n  const box = document.querySelector(`[data-price-plan=\"${sel.dataset.roomsFor}\"]`);\n  box.querySelector('.js-total').textContent = yen(it.p.total * n);\n  const w = box.querySelector('.js-was'); if (w) w.textContent = yen(it.std * n);\n  box.querySelector('.js-cond').textContent = T.cond(lastSearch.nights, lastSearch.guests, n);\n});\n\/\/ ===== \u6e96\u5099\u4e2d\u753b\u9762\uff08\u4e88\u7d04\u30a8\u30f3\u30b8\u30f3\u5074 airhost-autoadvance.js \u306e #myz-ov \u3068\u540c\u3058\u898b\u305f\u76ee\u30fb\u6587\u8a00\uff09=====\n\/\/ \u300c\u30ab\u30fc\u30c9\u5165\u529b\u3078\u9032\u3080\u300d\u3092\u62bc\u3057\u305f\u77ac\u9593\u306b\u51fa\u3057\u3066\u3001\u4e88\u7d04\u30a8\u30f3\u30b8\u30f3\u5074\u306e\u6e96\u5099\u4e2d\u753b\u9762\u3078\u305d\u306e\u307e\u307e\u3064\u306a\u3052\u308b\uff08\u5143\u306e\u30c7\u30b6\u30a4\u30f3\u304c\u898b\u3048\u308b\u6642\u9593\u3092\u6e1b\u3089\u3059\uff09\nconst OV = {\n  ja: { head: '\u3054\u4e88\u7d04\u624b\u7d9a\u304d\u4e2d', wait: '\u3053\u306e\u307e\u307e\u304a\u5f85\u3061\u304f\u3060\u3055\u3044', steps: ['\u304a\u90e8\u5c4b\u3092\u78ba\u4fdd\u3057\u3066\u3044\u307e\u3059', '\u304a\u5ba2\u69d8\u60c5\u5831\u3092\u767b\u9332\u3057\u3066\u3044\u307e\u3059', '\u30ab\u30fc\u30c9\u5165\u529b\u753b\u9762\u3092\u6e96\u5099\u3057\u3066\u3044\u307e\u3059'] },\n  en: { head: 'Processing your booking', wait: 'Please wait a moment', steps: ['Reserving your room', 'Registering your details', 'Preparing the card details page'] },\n  tw: { head: '\u9810\u8a02\u8655\u7406\u4e2d', wait: '\u8acb\u7a0d\u5019', steps: ['\u6b63\u5728\u70ba\u60a8\u4fdd\u7559\u5ba2\u623f', '\u6b63\u5728\u767b\u8a18\u65c5\u5ba2\u8cc7\u8a0a', '\u6b63\u5728\u6e96\u5099\u4fe1\u7528\u5361\u8f38\u5165\u9801\u9762'] },\n  ko: { head: '\uc608\uc57d \ucc98\ub9ac \uc911', wait: '\uc7a0\uc2dc\ub9cc \uae30\ub2e4\ub824 \uc8fc\uc138\uc694', steps: ['\uac1d\uc2e4\uc744 \ud655\ubcf4\ud558\ub294 \uc911\uc785\ub2c8\ub2e4', '\uc608\uc57d\uc790 \uc815\ubcf4\ub97c \ub4f1\ub85d\ud558\ub294 \uc911\uc785\ub2c8\ub2e4', '\uce74\ub4dc \uc785\ub825 \ud654\uba74\uc744 \uc900\ube44\ud558\ub294 \uc911\uc785\ub2c8\ub2e4'] },\n  cn: { head: '\u9884\u8ba2\u5904\u7406\u4e2d', wait: '\u8bf7\u7a0d\u5019', steps: ['\u6b63\u5728\u4e3a\u60a8\u4fdd\u7559\u5ba2\u623f', '\u6b63\u5728\u767b\u8bb0\u4f4f\u5ba2\u4fe1\u606f', '\u6b63\u5728\u51c6\u5907\u4fe1\u7528\u5361\u586b\u5199\u9875\u9762'] }\n};\nfunction showGoOverlay(){\n  const o = OV[LANG] || OV.ja;\n  let el = $('ngbk-ov');\n  if (!el) {\n    el = document.createElement('div'); el.id = 'ngbk-ov';\n    el.style.cssText = 'position:fixed;inset:0;z-index:100000;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:-apple-system,\"Hiragino Sans\",\"Hiragino Kaku Gothic ProN\",sans-serif;color:#163A5E;padding:24px';\n    el.innerHTML = '<style>@keyframes ngbkspin{to{transform:rotate(360deg)}}#ngbk-ov .st{display:flex;align-items:center;gap:12px;font-size:15px;padding:9px 0;color:#9aa3ad;white-space:nowrap}#ngbk-ov .st i{flex:0 0 26px;height:26px;border-radius:50%;border:2px solid #dfe3e8;display:flex;align-items:center;justify-content:center;font-style:normal;font-size:13px;font-weight:700}#ngbk-ov .st.now{color:#163A5E;font-weight:700}#ngbk-ov .st.now i{border-color:#dfe3e8;border-top-color:#163A5E;animation:ngbkspin .8s linear infinite}<\/style>'\n      + `<div style=\"font-size:13px;letter-spacing:.08em;color:#6b7280;margin-bottom:14px\">${esc(o.head)}<\/div><div>`\n      + o.steps.map((t, i) => `<div class=\"st${i === 0 ? ' now' : ''}\"><i>${i === 0 ? '' : i + 1}<\/i><span>${esc(t)}<\/span><\/div>`).join('')\n      + `<\/div><div style=\"margin-top:16px;font-size:12px;color:#9aa3ad\">${esc(o.wait)}<\/div>`;\n    document.body.appendChild(el);\n  }\n  el.style.display = 'flex';\n  clearTimeout(showGoOverlay.t);\n  showGoOverlay.t = setTimeout(hideGoOverlay, 25000);   \/\/ \u4e07\u4e00\u9077\u79fb\u3057\u306a\u3051\u308c\u3070\u5916\u3059\n}\nfunction hideGoOverlay(){ const el = $('ngbk-ov'); if (el) el.style.display = 'none'; }\n\/\/ \u4e88\u7d04\u30a8\u30f3\u30b8\u30f3\u304b\u3089\u300c\u623b\u308b\u300d\u3067\u623b\u3063\u3066\u304d\u305f\u3068\u304d\uff08\u30da\u30fc\u30b8\u304c\u305d\u306e\u307e\u307e\u5fa9\u5143\u3055\u308c\u308b\uff09\u306f\u6e96\u5099\u4e2d\u753b\u9762\u3092\u5916\u3059\nwindow.addEventListener('pageshow', e => { if (e.persisted) { hideGoOverlay(); } });\n\/\/ \u4e88\u7d04\u30a8\u30f3\u30b8\u30f3\u306eURL\uff1a\u65e5\u672c\u8a9e\u306f \/ja\/\u3001\u305d\u308c\u4ee5\u5916\u306e\u8a00\u8a9e\u306f\u82f1\u8a9e\u7248 \/en\/\uff08\u4e88\u7d04\u30a8\u30f3\u30b8\u30f3\u306e\u7e41\u4f53\u5b57\u7248\u306f\u7ffb\u8a33\u304c\u6b20\u3051\u3001\u7c21\u4f53\u5b57\u7248\u306f\u4eba\u6c11\u5143\u8868\u793a\u306b\u306a\u308b\u305f\u3081\u30022026-09-29\u78ba\u8a8d\uff09\nfunction beUrl(u){ return LANG === 'ja' ? u : String(u).replace('\/ja\/houses\/', '\/en\/houses\/'); }\n\/\/ ===== \u304a\u5ba2\u69d8\u60c5\u5831\u30e2\u30fc\u30c0\u30eb \u2192 \u4e88\u7d04\u30a8\u30f3\u30b8\u30f3\u3078 =====\ndocument.getElementById('ngbk').addEventListener('click', e => {\n  const b = e.target.closest('button[data-plan]'); if (!b || !lastSearch) return;\n  chosen = b.dataset.plan;\n  const it = lastSearch.planIndex[chosen];\n  chosenRooms = +((document.querySelector(`select[data-rooms-for=\"${chosen}\"]`)||{}).value || 1);\n  $('ngbk-m-sum').textContent = T.modalSum(it.rname, chosenRooms, fmtJ(lastSearch.ci), fmtJ(lastSearch.co), lastSearch.nights, lastSearch.guests, yen(it.p.total * chosenRooms));\n  const box = $('ngbk-m-cancel-box');\n  box.className = 'cancel ' + it.ci.cls; box.innerHTML = it.ci.text; box.style.display = it.ci.text ? '' : 'none';\n  $('ngbk-modal').classList.add('open'); $('ngbk-gform').querySelector('input').focus();\n  track('select', 'ngbk_select', {value: it.p.total * chosenRooms, currency: 'JPY', rooms: chosenRooms}, false, {rm: chosenRooms});\n});\n$('ngbk-m-cancel').onclick = () => { $('ngbk-modal').classList.remove('open'); track('back', 'ngbk_back'); };\n$('ngbk-modal').addEventListener('click', e => { if (e.target.id === 'ngbk-modal') { $('ngbk-modal').classList.remove('open'); track('back', 'ngbk_back'); } });\n$('ngbk-m-go').onclick = () => {\n  const f = $('ngbk-gform'); if (!f.reportValidity()) return;\n  const d = Object.fromEntries(new FormData(f).entries());\n  const u = new URL(beUrl(houseUrl || HOUSE_URL_FALLBACK)); const p = u.searchParams;\n  p.set('start_date', lastSearch.ci); p.set('end_date', lastSearch.co); p.set('rooms', String(chosenRooms)); p.set('guests', String(lastSearch.guests)); p.set('plan', chosen);\n  \/\/ guests\uff1d1\u5ba4\u3042\u305f\u308a\u306e\u4eba\u6570\uff08\u4e88\u7d04\u30a8\u30f3\u30b8\u30f3\u5074\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u304c\u90e8\u5c4b\u3054\u3068\u306b\u8a2d\u5b9a\u3059\u308b\uff09\n  for (const k of ['fn','ln','email','tel']) p.set(k, d[k]);\n  if (LANG !== 'ja') p.set('lang', LANG);   \/\/ \u4e88\u7d04\u30a8\u30f3\u30b8\u30f3\u5074\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u6848\u5185\u6587\u306e\u8a00\u8a9e\uff08v0.9.0\u301c\uff09\n  p.set('sid', SID); const cid = gaCid(); if (cid) p.set('gcid', cid);   \/\/ \u8a08\u6e2c\u7528\uff08v1.0.4\uff09\u3002\u4e88\u7d04\u30a8\u30f3\u30b8\u30f3\u5074\u306e\u8a08\u6e2c\u30bf\u30b0\u304c\u8aad\u3080\n  u.hash = 'myz=' + encodeURIComponent(p.toString());   \/\/ \u9014\u4e2d\u3067 ? \u4ee5\u964d\u304c\u6d88\u3048\u305f\u6642\u306e\u4e88\u5099\uff08\u4e88\u7d04\u30a8\u30f3\u30b8\u30f3\u5074\u30b9\u30af\u30ea\u30d7\u30c8\u304c\u8aad\u3080\uff09\n  $('ngbk-modal').classList.remove('open');\n  showGoOverlay();\n  track('handoff', 'ngbk_handoff', {value: lastSearch.planIndex[chosen].p.total * chosenRooms, currency: 'JPY', rooms: chosenRooms});\n  location.assign(u.toString());\n};\n\n\/\/ \u30d2\u30fc\u30ed\u30fc\u5074\u306e\u8981\u7d20\u304c\u63c3\u3063\u3066\u304b\u3089\u521d\u671f\u63cf\u753b\uff08Elementor\u306f\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u9806\u306b\u63cf\u753b\u3059\u308b\u306e\u3067\u901a\u5e38\u306f\u5373\u6642\uff09\nfunction boot(){ if (!$('ngbk-months')) return setTimeout(boot, 100); syncSide(); renderCal(); track('view', 'ngbk_view', null, true); }\nboot();\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Online Booking \ube48 \uac1d\uc2e4 \uac80\uc0c9 \u00b7 \uc608\uc57d \uccb4\ud06c\uc778\ub0a0\uc9dc \uc120\ud0dd \uccb4\ud06c\uc544\uc6c3\ub0a0\uc9dc \uc120\ud0dd 1\uc2e4 \uc778\uc6d01\uba852\uba85 \ube48 \uac1d\uc2e4 \uac80\uc0c9 \uc608\uc57d \uc2dc\uc5d0\ub294 \uce74\ub4dc \uc2b9\uc778\ub9cc \uc774\ub8e8\uc5b4\uc9c0\uba70, \uacb0\uc81c\ub294 \uccb4\ud06c\uc778 2\uc77c \uc804\uc785\ub2c8\ub2e4.\ub0a0\uc9dc \uc9c0\uc6b0\uae30 \u2039 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_locale":"ja","_original_post":"https:\/\/little-island-okinawa.com\/nago\/ko-book\/","footnotes":""},"class_list":["post-1746","page","type-page","status-publish","hentry","ja"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.5 - aioseo.com -->\n\t<meta name=\"description\" content=\"Little Island Okinawa Nago \uacf5\uc2dd \uc608\uc57d \ud398\uc774\uc9c0. \ub2ec\ub825\uc5d0\uc11c \uc2e4\uc2dc\uac04 \ube48 \uac1d\uc2e4\uacfc \uc694\uae08\uc744 \ud655\uc778\ud558\uace0 \ubc14\ub85c \uc608\uc57d\ud558\uc138\uc694. \uc8fc\ubc29\uc774 \uc788\ub294 \ucf58\ub3c4\ubbf8\ub2c8\uc5c4 \ud638\ud154, \uc815\uae00\ub9ac\uc544 \uc624\ud0a4\ub098\uc640\uae4c\uc9c0 \ucc28\ub85c \uc57d 10\ubd84.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/little-island-okinawa.com\/nago\/ko-book\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"ko_KR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Little Island Okinawa \ub098\uace0\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\uac1d\uc2e4 \uac80\uc0c9\u00b7\uc608\uc57d\uff5cLittle Island Okinawa Nago\u3010\uacf5\uc2dd\u3011\" \/>\n\t\t<meta property=\"og:description\" content=\"Little Island Okinawa Nago \uacf5\uc2dd \uc608\uc57d \ud398\uc774\uc9c0. \ub2ec\ub825\uc5d0\uc11c \uc2e4\uc2dc\uac04 \ube48 \uac1d\uc2e4\uacfc \uc694\uae08\uc744 \ud655\uc778\ud558\uace0 \ubc14\ub85c \uc608\uc57d\ud558\uc138\uc694. \uc8fc\ubc29\uc774 \uc788\ub294 \ucf58\ub3c4\ubbf8\ub2c8\uc5c4 \ud638\ud154, \uc815\uae00\ub9ac\uc544 \uc624\ud0a4\ub098\uc640\uae4c\uc9c0 \ucc28\ub85c \uc57d 10\ubd84.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/little-island-okinawa.com\/nago\/ko-book\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/little-island-okinawa.com\/nago\/wp-content\/uploads\/sites\/4\/2026\/10\/ng-og-book.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/little-island-okinawa.com\/nago\/wp-content\/uploads\/sites\/4\/2026\/10\/ng-og-book.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-09-29T06:44:01+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-10-28T00:41:27+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"\uac1d\uc2e4 \uac80\uc0c9\u00b7\uc608\uc57d\uff5cLittle Island Okinawa Nago\u3010\uacf5\uc2dd\u3011\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Little Island Okinawa Nago \uacf5\uc2dd \uc608\uc57d \ud398\uc774\uc9c0. \ub2ec\ub825\uc5d0\uc11c \uc2e4\uc2dc\uac04 \ube48 \uac1d\uc2e4\uacfc \uc694\uae08\uc744 \ud655\uc778\ud558\uace0 \ubc14\ub85c \uc608\uc57d\ud558\uc138\uc694. \uc8fc\ubc29\uc774 \uc788\ub294 \ucf58\ub3c4\ubbf8\ub2c8\uc5c4 \ud638\ud154, \uc815\uae00\ub9ac\uc544 \uc624\ud0a4\ub098\uc640\uae4c\uc9c0 \ucc28\ub85c \uc57d 10\ubd84.\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/little-island-okinawa.com\/nago\/wp-content\/uploads\/sites\/4\/2026\/10\/ng-og-book.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/little-island-okinawa.com\\\/nago\\\/ko-book\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/little-island-okinawa.com\\\/nago\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/little-island-okinawa.com\\\/nago\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/little-island-okinawa.com\\\/nago\\\/ko-book\\\/#listItem\",\"name\":\"\\uc628\\ub77c\\uc778 \\uc608\\uc57d\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/little-island-okinawa.com\\\/nago\\\/ko-book\\\/#listItem\",\"position\":2,\"name\":\"\\uc628\\ub77c\\uc778 \\uc608\\uc57d\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/little-island-okinawa.com\\\/nago\\\/#listItem\",\"name\":\"Home\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/little-island-okinawa.com\\\/nago\\\/#organization\",\"name\":\"\\u30ea\\u30c8\\u30eb\\u30a2\\u30a4\\u30e9\\u30f3\\u30c9\\u30aa\\u30ad\\u30ca\\u30ef\\u540d\\u8b77\",\"description\":\"\\u540d\\u8b77\\u5e02\\u70ba\\u53c8\\u306e\\u30ad\\u30c3\\u30c1\\u30f3\\u4ed8\\u304d\\u30b3\\u30f3\\u30c9\\u30df\\u30cb\\u30a2\\u30e0\\u30db\\u30c6\\u30eb\",\"url\":\"https:\\\/\\\/little-island-okinawa.com\\\/nago\\\/\",\"telephone\":\"+81-980-54-6505\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/little-island-okinawa.com\\\/nago\\\/wp-content\\\/uploads\\\/sites\\\/4\\\/2025\\\/04\\\/\\u30ea\\u30c8\\u30eb\\u30a2\\u30a4\\u30e9\\u30f3\\u30c9\\u3000\\u30ed\\u30b4\\u3000\\u80cc\\u666f\\u900f\\u904e.png\",\"@id\":\"https:\\\/\\\/little-island-okinawa.com\\\/nago\\\/ko-book\\\/#organizationLogo\",\"width\":500,\"height\":500,\"caption\":\"Little Island Okinawa\"},\"image\":{\"@id\":\"https:\\\/\\\/little-island-okinawa.com\\\/nago\\\/ko-book\\\/#organizationLogo\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/little-island-okinawa.com\\\/nago\\\/ko-book\\\/#webpage\",\"url\":\"https:\\\/\\\/little-island-okinawa.com\\\/nago\\\/ko-book\\\/\",\"name\":\"\\uac1d\\uc2e4 \\uac80\\uc0c9\\u00b7\\uc608\\uc57d\\uff5cLittle Island Okinawa Nago\\u3010\\uacf5\\uc2dd\\u3011\",\"description\":\"Little Island Okinawa Nago \\uacf5\\uc2dd \\uc608\\uc57d \\ud398\\uc774\\uc9c0. \\ub2ec\\ub825\\uc5d0\\uc11c \\uc2e4\\uc2dc\\uac04 \\ube48 \\uac1d\\uc2e4\\uacfc \\uc694\\uae08\\uc744 \\ud655\\uc778\\ud558\\uace0 \\ubc14\\ub85c \\uc608\\uc57d\\ud558\\uc138\\uc694. \\uc8fc\\ubc29\\uc774 \\uc788\\ub294 \\ucf58\\ub3c4\\ubbf8\\ub2c8\\uc5c4 \\ud638\\ud154, \\uc815\\uae00\\ub9ac\\uc544 \\uc624\\ud0a4\\ub098\\uc640\\uae4c\\uc9c0 \\ucc28\\ub85c \\uc57d 10\\ubd84.\",\"inLanguage\":\"ko\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/little-island-okinawa.com\\\/nago\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/little-island-okinawa.com\\\/nago\\\/ko-book\\\/#breadcrumblist\"},\"datePublished\":\"2026-09-29T15:44:01+09:00\",\"dateModified\":\"2026-10-28T09:41:27+09:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/little-island-okinawa.com\\\/nago\\\/#website\",\"url\":\"https:\\\/\\\/little-island-okinawa.com\\\/nago\\\/\",\"name\":\"LITTLE ISLAND OKINAWA \\u540d\\u8b77\",\"description\":\"\\u30b8\\u30e3\\u30f3\\u30b0\\u30ea\\u30a2\\u8fd1\\u304f\\u3000\\u30ad\\u30c3\\u30c1\\u30f3\\u4ed8\\u304d\\u30b3\\u30f3\\u30c9\\u30df\\u30cb\\u30a2\\u30e0\\u30db\\u30c6\\u30eb\",\"inLanguage\":\"ko\",\"publisher\":{\"@id\":\"https:\\\/\\\/little-island-okinawa.com\\\/nago\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\uac1d\uc2e4 \uac80\uc0c9\u00b7\uc608\uc57d\uff5cLittle Island Okinawa Nago\u3010\uacf5\uc2dd\u3011","description":"Little Island Okinawa Nago \uacf5\uc2dd \uc608\uc57d \ud398\uc774\uc9c0. \ub2ec\ub825\uc5d0\uc11c \uc2e4\uc2dc\uac04 \ube48 \uac1d\uc2e4\uacfc \uc694\uae08\uc744 \ud655\uc778\ud558\uace0 \ubc14\ub85c \uc608\uc57d\ud558\uc138\uc694. \uc8fc\ubc29\uc774 \uc788\ub294 \ucf58\ub3c4\ubbf8\ub2c8\uc5c4 \ud638\ud154, \uc815\uae00\ub9ac\uc544 \uc624\ud0a4\ub098\uc640\uae4c\uc9c0 \ucc28\ub85c \uc57d 10\ubd84.","canonical_url":"https:\/\/little-island-okinawa.com\/nago\/ko-book\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/little-island-okinawa.com\/nago\/ko-book\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/little-island-okinawa.com\/nago\/#listItem","position":1,"name":"Home","item":"https:\/\/little-island-okinawa.com\/nago\/","nextItem":{"@type":"ListItem","@id":"https:\/\/little-island-okinawa.com\/nago\/ko-book\/#listItem","name":"\uc628\ub77c\uc778 \uc608\uc57d"}},{"@type":"ListItem","@id":"https:\/\/little-island-okinawa.com\/nago\/ko-book\/#listItem","position":2,"name":"\uc628\ub77c\uc778 \uc608\uc57d","previousItem":{"@type":"ListItem","@id":"https:\/\/little-island-okinawa.com\/nago\/#listItem","name":"Home"}}]},{"@type":"Organization","@id":"https:\/\/little-island-okinawa.com\/nago\/#organization","name":"\u30ea\u30c8\u30eb\u30a2\u30a4\u30e9\u30f3\u30c9\u30aa\u30ad\u30ca\u30ef\u540d\u8b77","description":"\u540d\u8b77\u5e02\u70ba\u53c8\u306e\u30ad\u30c3\u30c1\u30f3\u4ed8\u304d\u30b3\u30f3\u30c9\u30df\u30cb\u30a2\u30e0\u30db\u30c6\u30eb","url":"https:\/\/little-island-okinawa.com\/nago\/","telephone":"+81-980-54-6505","logo":{"@type":"ImageObject","url":"https:\/\/little-island-okinawa.com\/nago\/wp-content\/uploads\/sites\/4\/2025\/04\/\u30ea\u30c8\u30eb\u30a2\u30a4\u30e9\u30f3\u30c9\u3000\u30ed\u30b4\u3000\u80cc\u666f\u900f\u904e.png","@id":"https:\/\/little-island-okinawa.com\/nago\/ko-book\/#organizationLogo","width":500,"height":500,"caption":"Little Island Okinawa"},"image":{"@id":"https:\/\/little-island-okinawa.com\/nago\/ko-book\/#organizationLogo"}},{"@type":"WebPage","@id":"https:\/\/little-island-okinawa.com\/nago\/ko-book\/#webpage","url":"https:\/\/little-island-okinawa.com\/nago\/ko-book\/","name":"\uac1d\uc2e4 \uac80\uc0c9\u00b7\uc608\uc57d\uff5cLittle Island Okinawa Nago\u3010\uacf5\uc2dd\u3011","description":"Little Island Okinawa Nago \uacf5\uc2dd \uc608\uc57d \ud398\uc774\uc9c0. \ub2ec\ub825\uc5d0\uc11c \uc2e4\uc2dc\uac04 \ube48 \uac1d\uc2e4\uacfc \uc694\uae08\uc744 \ud655\uc778\ud558\uace0 \ubc14\ub85c \uc608\uc57d\ud558\uc138\uc694. \uc8fc\ubc29\uc774 \uc788\ub294 \ucf58\ub3c4\ubbf8\ub2c8\uc5c4 \ud638\ud154, \uc815\uae00\ub9ac\uc544 \uc624\ud0a4\ub098\uc640\uae4c\uc9c0 \ucc28\ub85c \uc57d 10\ubd84.","inLanguage":"ko","isPartOf":{"@id":"https:\/\/little-island-okinawa.com\/nago\/#website"},"breadcrumb":{"@id":"https:\/\/little-island-okinawa.com\/nago\/ko-book\/#breadcrumblist"},"datePublished":"2026-09-29T15:44:01+09:00","dateModified":"2026-10-28T09:41:27+09:00"},{"@type":"WebSite","@id":"https:\/\/little-island-okinawa.com\/nago\/#website","url":"https:\/\/little-island-okinawa.com\/nago\/","name":"LITTLE ISLAND OKINAWA \u540d\u8b77","description":"\u30b8\u30e3\u30f3\u30b0\u30ea\u30a2\u8fd1\u304f\u3000\u30ad\u30c3\u30c1\u30f3\u4ed8\u304d\u30b3\u30f3\u30c9\u30df\u30cb\u30a2\u30e0\u30db\u30c6\u30eb","inLanguage":"ko","publisher":{"@id":"https:\/\/little-island-okinawa.com\/nago\/#organization"}}]},"og:locale":"ko_KR","og:site_name":"Little Island Okinawa \ub098\uace0","og:type":"article","og:title":"\uac1d\uc2e4 \uac80\uc0c9\u00b7\uc608\uc57d\uff5cLittle Island Okinawa Nago\u3010\uacf5\uc2dd\u3011","og:description":"Little Island Okinawa Nago \uacf5\uc2dd \uc608\uc57d \ud398\uc774\uc9c0. \ub2ec\ub825\uc5d0\uc11c \uc2e4\uc2dc\uac04 \ube48 \uac1d\uc2e4\uacfc \uc694\uae08\uc744 \ud655\uc778\ud558\uace0 \ubc14\ub85c \uc608\uc57d\ud558\uc138\uc694. \uc8fc\ubc29\uc774 \uc788\ub294 \ucf58\ub3c4\ubbf8\ub2c8\uc5c4 \ud638\ud154, \uc815\uae00\ub9ac\uc544 \uc624\ud0a4\ub098\uc640\uae4c\uc9c0 \ucc28\ub85c \uc57d 10\ubd84.","og:url":"https:\/\/little-island-okinawa.com\/nago\/ko-book\/","og:image":"https:\/\/little-island-okinawa.com\/nago\/wp-content\/uploads\/sites\/4\/2026\/10\/ng-og-book.jpg","og:image:secure_url":"https:\/\/little-island-okinawa.com\/nago\/wp-content\/uploads\/sites\/4\/2026\/10\/ng-og-book.jpg","og:image:width":1200,"og:image:height":630,"article:published_time":"2026-09-29T06:44:01+00:00","article:modified_time":"2026-10-28T00:41:27+00:00","twitter:card":"summary_large_image","twitter:title":"\uac1d\uc2e4 \uac80\uc0c9\u00b7\uc608\uc57d\uff5cLittle Island Okinawa Nago\u3010\uacf5\uc2dd\u3011","twitter:description":"Little Island Okinawa Nago \uacf5\uc2dd \uc608\uc57d \ud398\uc774\uc9c0. \ub2ec\ub825\uc5d0\uc11c \uc2e4\uc2dc\uac04 \ube48 \uac1d\uc2e4\uacfc \uc694\uae08\uc744 \ud655\uc778\ud558\uace0 \ubc14\ub85c \uc608\uc57d\ud558\uc138\uc694. \uc8fc\ubc29\uc774 \uc788\ub294 \ucf58\ub3c4\ubbf8\ub2c8\uc5c4 \ud638\ud154, \uc815\uae00\ub9ac\uc544 \uc624\ud0a4\ub098\uc640\uae4c\uc9c0 \ucc28\ub85c \uc57d 10\ubd84.","twitter:image":"https:\/\/little-island-okinawa.com\/nago\/wp-content\/uploads\/sites\/4\/2026\/10\/ng-og-book.jpg"},"aioseo_meta_data":{"post_id":"1746","title":"\uac1d\uc2e4 \uac80\uc0c9\u00b7\uc608\uc57d\uff5cLittle Island Okinawa Nago\u3010\uacf5\uc2dd\u3011","description":"Little Island Okinawa Nago \uacf5\uc2dd \uc608\uc57d \ud398\uc774\uc9c0. \ub2ec\ub825\uc5d0\uc11c \uc2e4\uc2dc\uac04 \ube48 \uac1d\uc2e4\uacfc \uc694\uae08\uc744 \ud655\uc778\ud558\uace0 \ubc14\ub85c \uc608\uc57d\ud558\uc138\uc694. \uc8fc\ubc29\uc774 \uc788\ub294 \ucf58\ub3c4\ubbf8\ub2c8\uc5c4 \ud638\ud154, \uc815\uae00\ub9ac\uc544 \uc624\ud0a4\ub098\uc640\uae4c\uc9c0 \ucc28\ub85c \uc57d 10\ubd84.","keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"WebPage","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":[],"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2026-09-29 06:56:10","updated":"2026-10-29 00:12:53","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/little-island-okinawa.com\/nago\/\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t\uc628\ub77c\uc778 \uc608\uc57d\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/little-island-okinawa.com\/nago\/"},{"label":"\uc628\ub77c\uc778 \uc608\uc57d","link":"https:\/\/little-island-okinawa.com\/nago\/ko-book\/"}],"_links":{"self":[{"href":"https:\/\/little-island-okinawa.com\/nago\/wp-json\/wp\/v2\/pages\/1746","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/little-island-okinawa.com\/nago\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/little-island-okinawa.com\/nago\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/little-island-okinawa.com\/nago\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/little-island-okinawa.com\/nago\/wp-json\/wp\/v2\/comments?post=1746"}],"version-history":[{"count":36,"href":"https:\/\/little-island-okinawa.com\/nago\/wp-json\/wp\/v2\/pages\/1746\/revisions"}],"predecessor-version":[{"id":2551,"href":"https:\/\/little-island-okinawa.com\/nago\/wp-json\/wp\/v2\/pages\/1746\/revisions\/2551"}],"wp:attachment":[{"href":"https:\/\/little-island-okinawa.com\/nago\/wp-json\/wp\/v2\/media?parent=1746"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}