{"id":1606,"date":"2025-07-24T17:05:13","date_gmt":"2025-07-24T08:05:13","guid":{"rendered":"https:\/\/hotel-ishigaki.com\/?page_id=1606"},"modified":"2026-10-07T16:58:08","modified_gmt":"2026-10-07T07:58:08","slug":"bike_rental","status":"publish","type":"page","link":"https:\/\/hotel-ishigaki.com\/en\/bike_rental\/","title":{"rendered":"BIKE RENTAL"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1606\" class=\"elementor elementor-1606\" 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-474ac076 elementor-section-full_width elementor-section-stretched elementor-section-height-min-height elementor-section-height-default elementor-section-items-middle\" data-id=\"474ac076\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;,&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;none&quot;,&quot;_ha_eqh_enable&quot;:false}\">\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-24f40cb5\" data-id=\"24f40cb5\" 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-f4a63b9 igb-heroen elementor-widget elementor-widget-heading\" data-id=\"f4a63b9\" 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<h4 class=\"elementor-heading-title elementor-size-default\">Bike Rental<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-igbhero2 igb-herosub elementor-widget elementor-widget-heading\" data-id=\"igbhero2\" 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<p class=\"elementor-heading-title elementor-size-default\">Explore Ishigaki Island at your own pace by bike.<\/p>\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-igbintro elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"igbintro\" 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-8d07284\" data-id=\"8d07284\" 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-igbcss elementor-widget elementor-widget-html\" data-id=\"igbcss\" 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<!-- IG bike page css v2.0.0 -->\n<style>\n.igb-photo.igb-photo img{width:100%!important;height:auto!important;aspect-ratio:16\/9;object-fit:cover;object-position:center;display:block;border-radius:12px}\n.igb-jp .elementor-heading-title,.igb-jp.elementor-widget-text-editor,.igb-jp .elementor-widget-container,.igb-jpf{font-family:\"Zen Maru Gothic\",\"Noto Sans JP\",sans-serif!important}\n.igb-btnf .elementor-button{font-family:\"Josefin Sans\",\"Zen Maru Gothic\",\"Noto Sans JP\",sans-serif!important}\n.igb-herosub .elementor-heading-title{font-family:\"Zen Maru Gothic\",\"Noto Sans JP\",sans-serif!important}\n.igb-heroen .elementor-heading-title{font-family:\"Josefin Sans\",\"Zen Maru Gothic\",\"Noto Sans JP\",sans-serif!important}\n.igb-jp .elementor-widget-container a{color:#A9707D}\n.igb-nw{white-space:nowrap}\n.igb-herosub .elementor-heading-title{text-shadow:0 1px 3px rgba(0,0,0,.55),0 0 18px rgba(0,0,0,.45)!important}\n.igb-heroen .elementor-heading-title{text-shadow:0 1px 4px rgba(0,0,0,.35),0 0 20px rgba(0,0,0,.35)!important}\n@media (max-width:767px){.igb-herosub{padding:0 22px}.igb-herosub .elementor-heading-title{word-break:keep-all;overflow-wrap:anywhere}}\n@media (max-width:600px){.igb-rules-card{padding:6px 18px!important;border-radius:14px!important}}\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3a418ed elementor-widget elementor-widget-heading\" data-id=\"3a418ed\" 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\">Bike Rental<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6a762a1 igb-jp elementor-widget elementor-widget-heading\" data-id=\"6a762a1\" 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<h3 class=\"elementor-heading-title elementor-size-default\">Rental Bicycles for Our Guests<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2df8e35 igb-jp elementor-widget elementor-widget-text-editor\" data-id=\"2df8e35\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tHotel Ishigaki &amp; Chikonkiya offers rental bicycles for our guests.<br>Ride to the ferry terminal, the town centre or along the coast, and enjoy Ishigaki Island at a leisurely pace.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-igbphoto elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"igbphoto\" 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-50 elementor-inner-column elementor-element elementor-element-7d0b14c\" data-id=\"7d0b14c\" 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-4f8f0b9 igb-photo elementor-widget elementor-widget-image\" data-id=\"4f8f0b9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/hotel-ishigaki.com\/wp-content\/uploads\/2026\/09\/ig-city-bike-169-1024x576.webp\" class=\"attachment-large size-large wp-image-1937\" alt=\"City bike (bicycle rental)\" srcset=\"https:\/\/hotel-ishigaki.com\/wp-content\/uploads\/2026\/09\/ig-city-bike-169-1024x576.webp 1024w, https:\/\/hotel-ishigaki.com\/wp-content\/uploads\/2026\/09\/ig-city-bike-169-300x169.webp 300w, https:\/\/hotel-ishigaki.com\/wp-content\/uploads\/2026\/09\/ig-city-bike-169-768x432.webp 768w, https:\/\/hotel-ishigaki.com\/wp-content\/uploads\/2026\/09\/ig-city-bike-169-1536x864.webp 1536w, https:\/\/hotel-ishigaki.com\/wp-content\/uploads\/2026\/09\/ig-city-bike-169.webp 2000w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-81bfa61 igb-jp elementor-widget elementor-widget-heading\" data-id=\"81bfa61\" 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<h3 class=\"elementor-heading-title elementor-size-default\">City Bike<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-09a3886 igb-jp elementor-widget elementor-widget-text-editor\" data-id=\"09a3886\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tPerfect for getting around town.<br>Free for rentals of up to 3 hours (once per day).<br><small style=\"color:#7A7A7A\">* Not electrically assisted<\/small>\t\t\t\t\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<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-94906a1\" data-id=\"94906a1\" 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-55ab868 igb-photo elementor-widget elementor-widget-image\" data-id=\"55ab868\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/hotel-ishigaki.com\/wp-content\/uploads\/2026\/09\/ig-cross-bike-169-1024x576.webp\" class=\"attachment-large size-large wp-image-1938\" alt=\"Cross bike (bicycle rental)\" srcset=\"https:\/\/hotel-ishigaki.com\/wp-content\/uploads\/2026\/09\/ig-cross-bike-169-1024x576.webp 1024w, https:\/\/hotel-ishigaki.com\/wp-content\/uploads\/2026\/09\/ig-cross-bike-169-300x169.webp 300w, https:\/\/hotel-ishigaki.com\/wp-content\/uploads\/2026\/09\/ig-cross-bike-169-768x432.webp 768w, https:\/\/hotel-ishigaki.com\/wp-content\/uploads\/2026\/09\/ig-cross-bike-169-1536x864.webp 1536w, https:\/\/hotel-ishigaki.com\/wp-content\/uploads\/2026\/09\/ig-cross-bike-169.webp 2000w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dbe2140 igb-jp elementor-widget elementor-widget-heading\" data-id=\"dbe2140\" 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<h3 class=\"elementor-heading-title elementor-size-default\">Cross Bike<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b47d60a igb-jp elementor-widget elementor-widget-text-editor\" data-id=\"b47d60a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tA lighter, faster ride for going a little further.<br>Ideal for cycling along the coast.<br><small style=\"color:#7A7A7A\">* Not electrically assisted<\/small>\t\t\t\t\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\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-igbpricesec elementor-section-full_width igb-sec-price elementor-section-height-default elementor-section-height-default\" data-id=\"igbpricesec\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&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-507250e\" data-id=\"507250e\" 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-41a2211 elementor-widget elementor-widget-heading\" data-id=\"41a2211\" 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\">Price<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cb37ae9 igb-jp elementor-widget elementor-widget-heading\" data-id=\"cb37ae9\" 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<h3 class=\"elementor-heading-title elementor-size-default\">Rates (tax included)<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-igbprice elementor-widget elementor-widget-html\" data-id=\"igbprice\" 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<!-- IG bike price table v2.2.0 -->\n<div class=\"igb-price igb-jpf\">\n<style>\n\/* v2.1.0 \u65b0\u30c8\u30f3\u30de\u30ca: \u767d\u3044\u89d2\u4e38\u30ab\u30fc\u30c9\uff08\u67a0\u7dda\u306a\u3057\u30fb\u6de1\u3044\u5f71\uff09\u30fb\u898b\u51fa\u3057\u884c\u306f\u6de1\u30d4\u30f3\u30af\u30fb\u91d1\u984d\u306f Josefin Sans *\/\n.igb-price{max-width:820px;margin:0 auto;color:#54595F;font-size:16px;line-height:1.7}\n.igb-price .igb-price-card{background:#fff;border-radius:16px;box-shadow:0 10px 30px rgba(169,112,125,.10);overflow:hidden}\n.igb-price table{width:100%;border-collapse:collapse;background:#fff;border:0;margin:0}\n.igb-price th,.igb-price td{padding:16px 16px;border:0;border-bottom:1px solid #F3E9EC;text-align:center;vertical-align:middle}\n.igb-price thead th{background:#FCEFF3;color:#54595F;font-weight:700;font-size:15px;letter-spacing:.04em}\n.igb-price tbody th{text-align:left;font-weight:700;background:#fff;width:40%;padding-left:24px}\n.igb-price tbody th small{display:block;font-weight:500;font-size:12.5px;color:#7A7A7A}\n.igb-price td{font-family:\"Josefin Sans\",sans-serif;font-weight:400;font-size:20px;letter-spacing:.04em}\n.igb-price td.free{font-family:inherit;font-weight:700;font-size:17px;letter-spacing:0;color:#A9707D}\n.igb-price td.free small{display:block;font-weight:500;font-size:12px;color:#7A7A7A;font-family:inherit}\n.igb-price td.formula{font-family:inherit;font-weight:500;font-size:14.5px;letter-spacing:0}\n.igb-price tr:last-child th,.igb-price tr:last-child td{border-bottom:0}\n.igb-price ul{margin:20px 0 0;padding-left:1.3em;font-size:14px;color:#54595F;line-height:1.8}\n.igb-price li{margin:4px 0}\n.igb-price li::marker{color:#CB98A1}\n@media (max-width:600px){\n  .igb-price{font-size:14px}\n  .igb-price .igb-price-card{border-radius:14px}\n  .igb-price th,.igb-price td{padding:12px 8px}\n  .igb-price thead th{font-size:12px;letter-spacing:0;padding:12px 4px;word-break:keep-all}\n  .igb-price tbody th{width:38%;font-size:13.5px;padding-left:14px}\n  .igb-price td{font-size:17px}\n  .igb-price td.free{font-size:15px}\n  .igb-price td.formula{font-size:12.5px}\n}\n<\/style>\n<div class=\"igb-price-card\"><table>\n<thead><tr><th>Plan<\/th><th>City bike<\/th><th>Cross bike<\/th><\/tr><\/thead>\n<tbody>\n<tr><th>Up to 3 hours<small>same-day return<\/small><\/th><td class=\"free\">Free<small>once per day, one rental per guest<\/small><\/td><td>\u00a51,000<\/td><\/tr>\n<tr><th>Full day<small>over 3 hours, until <span class=\"igb-nw\">23:00<\/span><\/small><\/th><td>\u00a51,000<\/td><td>\u00a51,500<\/td><\/tr>\n<tr><th>2 days<\/th><td>\u00a51,500<\/td><td>\u00a52,000<\/td><\/tr>\n<tr><th>3 days<\/th><td>\u00a52,000<\/td><td>\u00a52,500<\/td><\/tr>\n<tr><th>4 days or more<\/th><td class=\"formula\">3-day rate <span class=\"igb-nw\">+ \u00a51,000<\/span> per day<\/td><td class=\"formula\">3-day rate <span class=\"igb-nw\">+ \u00a51,500<\/span> per day<\/td><\/tr>\n<\/tbody>\n<\/table><\/div>\n<ul>\n<li>All prices are per bike and include tax. Rental days don't need to be consecutive as long as they fall within your stay; the multi-day rate applies.<\/li>\n<li>The free rate applies only to city bikes rented for up to 3 hours. Rentals that include a cross bike are charged even if under 3 hours.<\/li>\n<li>Both paid and free plans can be requested on the day, even at short notice (up to 30 minutes before the start time). Paid plans are paid by credit card (Stripe), and your booking is confirmed once payment is complete.<\/li>\n<li>Neither the city bikes nor the cross bikes are electrically assisted (pedal only).<\/li>\n<\/ul>\n<\/div>\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-igbrules elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"igbrules\" data-element_type=\"section\" data-e-type=\"section\" id=\"bike-rules\" 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-75e02d1\" data-id=\"75e02d1\" 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-4e05904 elementor-widget elementor-widget-heading\" data-id=\"4e05904\" 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\">Rules<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6d13d54 igb-jp elementor-widget elementor-widget-heading\" data-id=\"6d13d54\" 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<h3 class=\"elementor-heading-title elementor-size-default\">Rental Rules<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-13e0a1f igb-jp elementor-widget elementor-widget-text-editor\" data-id=\"13e0a1f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul class=\"igb-rules-card\" style=\"list-style:none;margin:0 auto;padding:14px 32px;text-align:left;max-width:820px;background:#fff;border-radius:16px;box-shadow:0 10px 30px rgba(169,112,125,.10)\">\n<li style=\"padding:14px 0 14px 1.4em;border-bottom:1px solid #F3E9EC;position:relative\"><span style=\"position:absolute;left:2px;top:1.45em;width:7px;height:7px;border-radius:50%;background:#CB98A1\"><\/span><strong style=\"display:block;margin-bottom:2px\">Rental hours<\/strong><span class=\"igb-nw\">9:00\u201323:00<\/span> (start times <span class=\"igb-nw\">9:00\u201320:00<\/span>). Bikes must be returned by <span class=\"igb-nw\">23:00<\/span> on the day.<\/li>\n<li style=\"padding:14px 0 14px 1.4em;border-bottom:1px solid #F3E9EC;position:relative\"><span style=\"position:absolute;left:2px;top:1.45em;width:7px;height:7px;border-radius:50%;background:#CB98A1\"><\/span><strong style=\"display:block;margin-bottom:2px\">Request deadline<\/strong>Both paid and free plans can be requested <strong>on the day, even at short notice<\/strong> (<strong>up to 30 minutes before the start time<\/strong>; paid plans are confirmed once paid).<\/li>\n<li style=\"padding:14px 0 14px 1.4em;border-bottom:1px solid #F3E9EC;position:relative\"><span style=\"position:absolute;left:2px;top:1.45em;width:7px;height:7px;border-radius:50%;background:#CB98A1\"><\/span><strong style=\"display:block;margin-bottom:2px\">Rental period<\/strong>You may rent a bike before <span class=\"igb-nw\">check-in<\/span>. Rentals are not available after <span class=\"igb-nw\">check-out<\/span>.<\/li>\n<li style=\"padding:14px 0 14px 1.4em;border-bottom:1px solid #F3E9EC;position:relative\"><span style=\"position:absolute;left:2px;top:1.45em;width:7px;height:7px;border-radius:50%;background:#CB98A1\"><\/span><strong style=\"display:block;margin-bottom:2px\">Availability<\/strong>Bikes are limited in number (the number available may change due to inspections and repairs). Colours and makes may change without notice.<\/li>\n<li style=\"padding:14px 0 14px 1.4em;border-bottom:1px solid #F3E9EC;position:relative\"><span style=\"position:absolute;left:2px;top:1.45em;width:7px;height:7px;border-radius:50%;background:#CB98A1\"><\/span><strong style=\"display:block;margin-bottom:2px\">Bike type<\/strong>Neither the city bikes nor the cross bikes are electrically assisted (pedal only).<\/li>\n<li style=\"padding:14px 0 14px 1.4em;border-bottom:1px solid #F3E9EC;position:relative\"><span style=\"position:absolute;left:2px;top:1.45em;width:7px;height:7px;border-radius:50%;background:#CB98A1\"><\/span><strong style=\"display:block;margin-bottom:2px\">Return<\/strong>After use, please return the bike to the designated spot on the hotel grounds (to the left of the building entrance).<\/li>\n<li style=\"padding:14px 0 14px 1.4em;border-bottom:1px solid #F3E9EC;position:relative\"><span style=\"position:absolute;left:2px;top:1.45em;width:7px;height:7px;border-radius:50%;background:#CB98A1\"><\/span><strong style=\"display:block;margin-bottom:2px\">Helmets &#038; insurance<\/strong>Helmets are not provided and no insurance is included. Please follow the traffic rules and ride safely.<\/li>\n<li style=\"padding:14px 0 14px 1.4em;border-bottom:1px solid #F3E9EC;position:relative\"><span style=\"position:absolute;left:2px;top:1.45em;width:7px;height:7px;border-radius:50%;background:#CB98A1\"><\/span><strong style=\"display:block;margin-bottom:2px\">Damage or loss<\/strong>Damage or loss caused intentionally or through negligence will be charged at actual cost.<\/li>\n<li style=\"padding:14px 0 14px 1.4em;border-bottom:1px solid #F3E9EC;position:relative\"><span style=\"position:absolute;left:2px;top:1.45em;width:7px;height:7px;border-radius:50%;background:#CB98A1\"><\/span><strong style=\"display:block;margin-bottom:2px\">Acceptance of terms<\/strong>Completing payment constitutes acceptance of the rental terms.<\/li>\n<li style=\"padding:14px 0 14px 1.4em;position:relative\"><span style=\"position:absolute;left:2px;top:1.45em;width:7px;height:7px;border-radius:50%;background:#CB98A1\"><\/span><strong style=\"display:block;margin-bottom:2px\">Contact<\/strong>Your booking details and lock code are shown on the request screen (no email is sent). If you have any questions, please contact us via the messaging feature of the site you booked on (e.g. Booking.com, Airbnb). If you booked on our official website, you can also reply to your booking confirmation email.<\/li>\n<\/ul>\t\t\t\t\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-igbreserve elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"igbreserve\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&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-847079e\" data-id=\"847079e\" 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-bcdb9e2 elementor-widget elementor-widget-heading\" data-id=\"bcdb9e2\" 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\">Bike Booking<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d969351 igb-jp elementor-widget elementor-widget-heading\" data-id=\"d969351\" 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<h3 class=\"elementor-heading-title elementor-size-default\">Request Form<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8d04006 igb-jp elementor-widget elementor-widget-text-editor\" data-id=\"8d04006\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tPlease use the form below. Your booking details, the lock code (free plan) or the payment link (paid plans) will be shown on this screen.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-igbform elementor-widget elementor-widget-html\" data-id=\"igbform\" 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<!-- IG bike rental form v3.7.0 (en) \u2014 hotel-ishigaki.com\/en\/bike_rental\/ Elementor HTML widget\uff08id igbform\uff09\u3002\u5916\u90e8\u30e9\u30a4\u30d6\u30e9\u30ea\u4e0d\u4f7f\u7528\u30fbjQuery\u975e\u4f9d\u5b58\u3002\n     \u751f\u6210\u5143: form_template.html + form_i18n.py \u2192 build_forms.py\uff08\u76f4\u63a5\u7de8\u96c6\u3057\u306a\u3044\u3002ja\/en\/zh\/ko \u306e4\u30d5\u30a1\u30a4\u30eb\u3092\u751f\u6210\uff09\n     v3.0.0: \u591a\u8a00\u8a9e\u5316\uff08\u6587\u8a00\u3092 L \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u96c6\u7d04\u30fb\u975e\u65e5\u672c\u8a9e\u30da\u30fc\u30b8\u306f GAS \u306e message_en \u3092\u8868\u793a\uff09\u3002\u30ed\u30b8\u30c3\u30af\u306f v2.3.0 \u3068\u540c\u3058\n     v3.1.0: \u9375\u756a\u53f7\u306e\u771f\u4e0a\u306b\u30b9\u30af\u30b7\u30e7\u4fdd\u5b58\u306e\u6ce8\u610f\uff08.igb-shot-top\uff09\u30fb\u9375\u306e\u8eca\u4e21\u540d\u3092 GAS \u306e {code,ja,en,key} \u304b\u3089\u8868\u793a\u30fbPMS\u540d\u306e\u8868\u8a18\u3092\u5168\u5ec3\n     v3.2.0: \u7121\u6599\u30d7\u30e9\u30f3\u3082\u6709\u6599\u3068\u540c\u3058\u304f\u300c\u5229\u7528\u958b\u59cb\u306e30\u5206\u524d\u307e\u3067\u300d\u53d7\u4ed8\uff08\u7de0\u5207\u8868\u793a\u30fb\u30a8\u30e9\u30fc\u6587\u3092\u7d71\u4e00\uff09\n     v3.3.0: \u4e88\u7d04\u30b5\u30a4\u30c8\uff08site\uff09\u30fb\u4e88\u7d04\u756a\u53f7\uff08booking_no\uff09\u6b04\u3092\u8ffd\u52a0\u3002Airbnb\uff0b\u6709\u6599\u306f\u652f\u6255\u30dc\u30bf\u30f3\u3092\u51fa\u3055\u305a GAS \u306e\u6848\u5185\uff0b\u9375\u756a\u53f7\u78ba\u8a8d\u30ea\u30f3\u30af\uff08?check=1&id&k \u2192 bike_status\uff09\u3002Airbnb\uff0b\u7121\u6599\u306f\u5f93\u6765\u3069\u304a\u308a\n     v3.3.1: GAS v1.8.0 \u306e\u78ba\u5b9a\u5951\u7d04\u306b\u5408\u308f\u305b\u3001?id&k \u306e\u72b6\u614b\u8868\u793a\u3092 pending_airbnb\uff0fexpired\uff0fcancelled \u5225\u306e\u6587\u8a00\u306b\n     v3.4.0: \u6709\u6599\uff08\u652f\u6255\u5f85\u3061\uff09\u30fbAirbnb\uff0b\u6709\u6599\u306e\u7533\u8fbc\u5f8c\u753b\u9762\u306e\u898b\u51fa\u3057\u76f4\u4e0b\u306b\u300c\u307e\u3060\u78ba\u5b9a\u3057\u3066\u3044\u307e\u305b\u3093\u300d\u306e\u5f37\u8abf\u67a0\uff08.igb-pending\uff09\u30fb\u898b\u51fa\u3057\u3092\u300c\u304a\u652f\u6255\u3044\u5f85\u3061\u300d\u306b\u3002\u7121\u6599\u30fb?paid=1 \u306f\u5f93\u6765\u3069\u304a\u308a\n     v3.5.0: \u3010\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3011bike_paid \u306f k \u3060\u3051\u3067\u306f\u78ba\u5b9a\u3057\u306a\u3044\uff08GAS v1.10.0\uff09\u3002?paid=1 \u3067 pending_payment \u306e\u9593\u306f\u300c\u304a\u652f\u6255\u3044\u3092\u78ba\u8a8d\u3057\u3066\u3044\u307e\u3059\u300d\u3092\u51fa\u3057\n             3\u79d2\u3054\u3068\u306b bike_status \u3092\u30dd\u30fc\u30ea\u30f3\u30b0\uff08\u6700\u5927120\u79d2\uff09\u3002paid \u3067\u9375\u756a\u53f7\u8868\u793a\u3001\u6642\u9593\u5207\u308c\u306f\u518d\u8aad\u307f\u8fbc\u307f\u306e\u6848\u5185\uff0b\u72b6\u6cc1\u78ba\u8a8d\u30ea\u30f3\u30af\n     v3.6.0: \u898b\u305f\u76ee\u306e\u307f\u65b0\u30c8\u30f3\u30de\u30ca\u5316\uff08ig-site\/STYLE.md\uff09\u3002Times New Roman \u5168\u5ec3\u2192\u82f1\u5b57\/\u6570\u5b57 Josefin Sans\u30fb\u548c\u6587 Zen Maru Gothic\uff08zh\/ko \u306f data-lang \u5225\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\uff09\u30fb\u30ab\u30fc\u30c9\u89d2\u4e3816px\uff0b\u6de1\u3044\u5f71\u30fb\u5165\u529b\u6b0416px\/\u89d2\u4e3810px\u30fb\u30dc\u30bf\u30f3\u306f\u30d4\u30f3\u30af\u5730\u00d7\u6fc3\u30b0\u30ec\u30fc\uff08\u652f\u6255\u30dc\u30bf\u30f3\u3082\uff09\u3002HTML\u69cb\u9020\u30fbJS\u30fb\u9001\u4fe1\u5185\u5bb9\u306f v3.5.0 \u3068\u540c\u4e00\n     v3.6.1: \u30c6\u30fc\u30de\u306e label{line-height:1} \u3067\u540c\u610f\u6587\u30fb\u30d7\u30e9\u30f3\u540d\u306e2\u884c\u76ee\u304c\u8a70\u307e\u3063\u3066\u3044\u305f\u306e\u3092\u4fee\u6b63\uff08CSS\u306e\u307f\uff09\n     v3.7.0: \u5168\u8a00\u8a9e\u30c1\u30a7\u30c3\u30af\u5bfe\u5fdc\uff08\u6587\u8a00\u30fbCSS\u306e\u307f\u3002\u5224\u5b9a\u30fb\u9001\u4fe1\u30fb\u8a08\u7b97\u30ed\u30b8\u30c3\u30af\u306f v3.6.1 \u3068\u540c\u4e00\uff09: \u7a7a\u304d\u72b6\u6cc1\u306e\u53d6\u5f97\u4e2d\u306f\u30ab\u30ec\u30f3\u30c0\u30fc\u4e0a\u90e8\u306b\u300c\u8aad\u307f\u8fbc\u307f\u4e2d\u300d\u3092\u8868\u793a\uff08CSS :has \u3067\u5224\u5b9a\u30fb\u53d6\u5f97\u5931\u6557\u6642\u306f\u6d88\u3048\u308b\uff09\uff0f\n             \u91d1\u984d\u306e\u533a\u5207\u308a\u3092\u8a00\u8a9e\u5225\u306b\uff08yen() \u306e\u533a\u5207\u308a\u6587\u5b57\u3092 L.thou_sep \u304b\u3089\u3002de\/it\/es \u306f \u00a51.000\uff09\uff0fko \u306e\u30dc\u30bf\u30f3\u5b57\u9593\u3092\u8a70\u3081\u308b\uff0f\u6642\u523b\u30fb\u91d1\u984d\u30fbCheck-in \u306e\u9014\u4e2d\u6539\u884c\u9632\u6b62 .igb-nw -->\n<div id=\"igbike\" data-lang=\"en\">\n<style>\n\/* v3.6.0 \u65b0\u30c8\u30f3\u30de\u30ca\uff08ig-site\/STYLE.md\uff09: \u82f1\u5b57\/\u6570\u5b57=Josefin Sans\u30fb\u548c\u6587=Zen Maru Gothic\uff08\u4e2d\u97d3\u306f\u5404\u8a00\u8a9e\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\uff09\u30fb\u767d\u3044\u89d2\u4e38\u30ab\u30fc\u30c9\u30fb\u30d4\u30f3\u30af\u5730\u00d7\u6fc3\u30b0\u30ec\u30fc\u306e\u30dc\u30bf\u30f3\u3002\u898b\u305f\u76ee\u3060\u3051\u306e\u5909\u66f4 *\/\n#igbike{--ig-text:#54595F;--ig-sub:#7A7A7A;--ig-line:#E8C9D1;--ig-rose:#A9707D;--ig-rose2:#CB98A1;--ig-accent:#F5C5D5;--ig-accent-h:#EDB3C6;--ig-bg:#FAF4EF;--ig-pinkbg:#FCEFF3;--ig-red:#B3261E;--ig-green:#2E7D32;\n  --ig-jp:\"Zen Maru Gothic\",\"Noto Sans JP\",\"Hiragino Sans\",sans-serif;--ig-en:\"Josefin Sans\",\"Zen Maru Gothic\",sans-serif;\n  color:var(--ig-text);font-family:var(--ig-jp);font-weight:500;font-size:16px;line-height:1.8;max-width:820px;margin:0 auto;box-sizing:border-box}\n#igbike[data-lang=\"zh\"]{--ig-jp:\"Zen Maru Gothic\",\"Noto Sans TC\",\"PingFang TC\",\"Microsoft JhengHei\",sans-serif;--ig-en:\"Josefin Sans\",\"Zen Maru Gothic\",\"Noto Sans TC\",sans-serif}\n#igbike[data-lang=\"ko\"]{--ig-jp:\"Zen Maru Gothic\",\"Noto Sans KR\",\"Apple SD Gothic Neo\",\"Malgun Gothic\",sans-serif;--ig-en:\"Josefin Sans\",\"Zen Maru Gothic\",\"Noto Sans KR\",sans-serif}\n#igbike *{box-sizing:border-box}\n#igbike b,#igbike strong{font-weight:700}\n#igbike .igb-card{background:#fff;border:0;border-radius:16px;box-shadow:0 10px 30px rgba(169,112,125,.10);padding:32px 32px 28px}\n#igbike .igb-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 20px}\n#igbike .igb-field{display:flex;flex-direction:column;gap:7px}\n#igbike .igb-field.igb-full{grid-column:1 \/ -1}\n#igbike label{font-weight:700;font-size:14.5px;color:var(--ig-text);letter-spacing:.03em;line-height:1.6}\n#igbike label .req{color:var(--ig-rose);font-weight:500;margin-left:6px;font-size:12px}\n#igbike label .opt{color:var(--ig-sub);font-weight:500;margin-left:6px;font-size:12px}\n#igbike input[type=text],#igbike select,#igbike textarea{\n  width:100%;padding:11px 14px;border:1px solid #E6DADD;border-radius:10px;font:inherit;font-family:var(--ig-jp);font-weight:500;font-size:16px;color:var(--ig-text);background:#fff;min-height:48px;transition:border-color .2s,box-shadow .2s}\n#igbike input[type=text]::placeholder{color:#A8A3A6}\n#igbike input[type=text]:focus,#igbike select:focus,#igbike textarea:focus{outline:0;border-color:var(--ig-rose2);box-shadow:0 0 0 3px rgba(245,197,213,.45)}\n#igbike .igb-day:focus{outline:2px solid var(--ig-rose2);outline-offset:1px}\n#igbike .igb-hint{font-size:12.5px;color:var(--ig-sub);line-height:1.6}\n#igbike .igb-pending{display:flex;gap:12px;align-items:flex-start;background:#FDECEA;border:2px solid #D93025;border-radius:12px;padding:14px 16px;margin:4px 0 14px;color:#8A1C12;font-size:15px;line-height:1.7}\n#igbike .igb-pending .igb-pending-ico{font-size:26px;line-height:1.1;flex:none}\n#igbike .igb-pending b.igb-pending-h{display:block;font-size:17px;margin-bottom:2px}\n#igbike .igb-ab-note{display:none;margin-top:6px;padding:11px 14px;border-radius:10px;background:var(--ig-pinkbg);border:0;font-size:13.5px;line-height:1.7;color:var(--ig-text)}\n#igbike .igb-ab-note.show{display:block}\n#igbike .igb-check-link{display:block;margin:12px 0;padding:12px 14px;border:1px solid var(--ig-line);border-radius:10px;background:#fff;font-size:14.5px;word-break:break-all;color:var(--ig-rose)}\n#igbike .igb-cal{border:1px solid #F0E6E9;border-radius:12px;background:#fff;padding:12px 10px 6px}\n#igbike .igb-month{margin:0 0 12px}\n#igbike .igb-month-title{font-family:var(--ig-en);font-size:17px;font-weight:400;letter-spacing:.12em;text-align:center;margin:2px 0 8px;color:var(--ig-text)}\n#igbike .igb-dow,#igbike .igb-days{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}\n#igbike .igb-dow span{text-align:center;font-size:11.5px;color:var(--ig-sub);padding:2px 0}\n#igbike .igb-dow span:first-child{color:#C0504D}\n#igbike .igb-dow span:last-child{color:#4F6FB3}\n#igbike .igb-day{border:1px solid #F0E6E9;background:#fff;border-radius:8px;min-height:58px;padding:3px 1px 3px;overflow:hidden;font:inherit;font-family:var(--ig-jp);color:var(--ig-text);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.15;transition:background .15s,border-color .15s}\n#igbike .igb-day:not(:disabled):not(.full):not(.on):hover{border-color:var(--ig-accent);background:#FFF9FB}\n#igbike .igb-day b{font-family:var(--ig-en);font-weight:400;font-size:15px}\n#igbike .igb-day small{font-size:10px;color:var(--ig-sub);white-space:nowrap;display:block;line-height:1.25}\n#igbike .igb-day small.zero{color:var(--ig-red)}\n#igbike .igb-day.on{background:var(--ig-accent);border-color:var(--ig-accent)}\n#igbike .igb-day.on small{color:#54595F}\n#igbike .igb-day:disabled{opacity:.35;cursor:not-allowed;background:#f7f7f7}\n#igbike .igb-day.full{opacity:.5;cursor:not-allowed;background:#f3eeea}\n#igbike .igb-day.full small{color:var(--ig-red)}\n#igbike .igb-stock{font-size:13.5px;margin-top:2px;min-height:1.4em}\n#igbike .igb-day.pad{visibility:hidden}\n\/* v3.7.0 \u7a7a\u304d\u72b6\u6cc1\u306e\u53d6\u5f97\u4e2d\u8868\u793a: \u53d6\u5f97\u524d\u306e\u30bb\u30eb\u306f <small>\u2026<\/small> \u304c1\u500b\u3060\u3051\uff08only-of-type\uff09\uff08\u53d6\u5f97\u5f8c\u306f2\u500b or \u6e80\u8eca\u306e .zero\uff09\u3002\u53d6\u5f97\u5931\u6557\u6642\u306f avail-note \u306e\u76ee\u5370 span \u304c\u6d88\u3048\u308b\u306e\u3067\u51fa\u306a\u3044 *\/\n#igbike .igb-field:has(.igb-ld-mark) .igb-cal:has(.igb-day small:only-of-type:not(.zero))::before{content:attr(data-ld);display:block;text-align:center;font-size:13.5px;line-height:1.6;color:var(--ig-rose);background:var(--ig-pinkbg);border-radius:8px;padding:8px 10px;margin:0 2px 10px}\n#igbike .igb-day small:only-of-type:not(.zero){animation:igbpulse 1.2s ease-in-out infinite}\n@keyframes igbpulse{50%{opacity:.25}}\n#igbike .igb-nw{white-space:nowrap}\n#igbike[data-lang=\"ko\"] .igb-btn{letter-spacing:1px}\n#igbike .igb-sel{font-size:13.5px;margin-top:6px;min-height:1.4em}\n#igbike .igb-plans{display:grid;grid-template-columns:1fr 1fr;gap:10px}\n#igbike .igb-plan-opt{display:flex;align-items:flex-start;gap:10px;border:1px solid #EFE3E7;border-radius:12px;padding:12px 14px;cursor:pointer;background:#fff;font-weight:500;transition:border-color .2s,background .2s}\n#igbike .igb-plan-opt:hover{border-color:var(--ig-accent)}\n#igbike .igb-plan-opt input{width:20px;height:20px;margin-top:3px;flex:none;accent-color:#A9707D}\n#igbike .igb-plan-opt.on{border-color:var(--ig-accent);background:var(--ig-pinkbg);box-shadow:0 0 0 1px var(--ig-accent) inset}\n#igbike .igb-plan-opt .igb-plan-name{font-weight:700;font-size:15px;display:block}\n#igbike .igb-plan-opt .igb-plan-price{font-size:12.5px;color:var(--ig-sub);display:block;line-height:1.6}\n#igbike .igb-plan-opt .igb-plan-price b{font-family:var(--ig-en);font-weight:400;font-size:14px;letter-spacing:.04em;color:var(--ig-text)}\n#igbike .igb-check{display:flex;align-items:flex-start;gap:10px;font-weight:500;font-size:15px;line-height:1.75;cursor:pointer}\n#igbike .igb-rules-link{color:var(--ig-rose);text-decoration:underline;text-underline-offset:3px}\n#igbike .igb-check input{width:20px;height:20px;margin-top:4px;flex:none;accent-color:#A9707D}\n#igbike .igb-quote{margin-top:20px;padding:20px 22px;border-radius:12px;background:var(--ig-bg);border:0}\n#igbike .igb-quote .igb-amount{font-size:32px;font-weight:400;font-family:var(--ig-en);letter-spacing:.04em;line-height:1.2}\n#igbike .igb-quote .igb-amount small{font-size:15px;font-family:var(--ig-jp);font-weight:500;letter-spacing:0;color:var(--ig-sub);margin-left:6px}\n#igbike .igb-quote .igb-plan{font-size:14.5px;margin-top:4px}\n#igbike .igb-quote .igb-deadline{font-size:14px;margin-top:10px;padding-top:10px;border-top:1px solid #EADFD6}\n#igbike .igb-msg{margin-top:12px;padding:12px 14px;border-radius:10px;font-size:14.5px;line-height:1.7;display:none}\n#igbike .igb-msg.show{display:block}\n#igbike .igb-msg.err{background:#FDECEA;color:var(--ig-red);border:1px solid #F5C6C2}\n#igbike .igb-msg.info{background:#fff;color:var(--ig-text);border:1px solid #EFE3E7}\n#igbike .igb-btn{display:inline-block;width:100%;margin-top:20px;padding:18px 48px 16px;border:0;border-radius:10px;background:var(--ig-accent);color:#54595F;font-family:var(--ig-en);font-size:17px;font-weight:400;text-transform:uppercase;letter-spacing:3px;line-height:1.5;cursor:pointer;text-align:center;text-decoration:none!important;transition:background .2s,opacity .2s}\n#igbike .igb-btn:hover,#igbike .igb-btn:focus{background:var(--ig-accent-h);color:#54595F}\n#igbike .igb-btn:disabled{opacity:.45;cursor:not-allowed;background:var(--ig-accent)}\n#igbike .igb-btn.igb-pay{background:var(--ig-accent);color:#54595F}\n#igbike .igb-btn.igb-pay:hover{background:var(--ig-accent-h);color:#54595F}\n#igbike .igb-result{display:none}\n#igbike .igb-result.show{display:block}\n#igbike .igb-result h3{font-family:var(--ig-jp);font-weight:700;font-size:23px;letter-spacing:.04em;line-height:1.5;margin:0 0 12px;color:var(--ig-text)}\n#igbike .igb-result p{margin:0 0 10px}\n#igbike .igb-notice{background:var(--ig-bg);border:0;border-radius:12px;padding:16px 18px;white-space:pre-line;font-size:15px;line-height:1.8;margin:12px 0}\n#igbike .igb-keys{background:#fff;border:2px solid var(--ig-accent);border-radius:12px;padding:14px 18px;margin:12px 0}\n#igbike .igb-keys .igb-key{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid #F3E7EB;font-size:15px}\n#igbike .igb-keys .igb-key:last-child{border-bottom:0}\n#igbike .igb-keys .igb-key b{font-family:var(--ig-en);font-weight:400;font-size:23px;letter-spacing:.14em}\n#igbike .igb-shot-top{display:flex;gap:12px;align-items:center;background:#fff4d6;border:2px solid #f0b429;border-radius:12px;padding:12px 16px;margin:14px 0 8px}\n#igbike .igb-shot-top .igb-shot-ico{font-size:30px;line-height:1}\n#igbike .igb-shot-top b{display:block;font-size:16px;color:#7a4b00}\n#igbike .igb-shot-top span{display:block;font-size:13px;color:#7a4b00;margin-top:2px}\n#igbike .igb-shot{margin-top:14px;padding:10px 14px;border:1px dashed var(--ig-line);border-radius:10px;font-size:14px;background:#fff}\n#igbike .igb-kv{width:100%;border-collapse:collapse;font-size:14.5px;margin:10px 0}\n#igbike .igb-kv th,#igbike .igb-kv td{padding:8px 8px;border-bottom:1px solid #F0E6E9;text-align:left;vertical-align:top}\n#igbike .igb-kv th{width:32%;color:var(--ig-sub);font-weight:700}\n#igbike .igb-spin{display:inline-block;width:14px;height:14px;border:2px solid #E8C9D1;border-top-color:#A9707D;border-radius:50%;animation:igbspin .8s linear infinite;vertical-align:-2px;margin-right:6px}\n@keyframes igbspin{to{transform:rotate(360deg)}}\n@media (max-width:600px){\n  #igbike{font-size:15px}\n  #igbike .igb-card{padding:22px 16px 20px;border-radius:14px}\n  #igbike .igb-grid{grid-template-columns:1fr;gap:14px}\n  #igbike .igb-plans{grid-template-columns:1fr}\n  #igbike .igb-cal{padding:8px 4px 4px;border-radius:10px}\n  #igbike .igb-dow,#igbike .igb-days{gap:2px}\n  #igbike .igb-day{min-height:56px;border-radius:6px;padding:2px 0}\n  #igbike .igb-day b{font-size:14px}\n  #igbike .igb-day small{font-size:9px;letter-spacing:-0.03em}\n  #igbike .igb-quote .igb-amount{font-size:28px}\n  #igbike .igb-btn{font-size:16px;letter-spacing:2.5px;padding:17px 18px 15px}\n  #igbike .igb-result h3{font-size:20px}\n}\n<\/style>\n\n<div class=\"igb-card\">\n  <form id=\"igb-form\" novalidate>\n    <div class=\"igb-grid\">\n      <div class=\"igb-field\">\n        <label for=\"igb-name\">Name (as on your reservation)<span class=\"req\">Required<\/span><\/label>\n        <input type=\"text\" id=\"igb-name\" name=\"name\" autocomplete=\"name\" placeholder=\"e.g. John Smith\">\n      <\/div>\n      <div class=\"igb-field\">\n        <label for=\"igb-room\">Room number<span class=\"req\">Required<\/span><\/label>\n        <input type=\"text\" id=\"igb-room\" name=\"room\" inputmode=\"numeric\" placeholder=\"e.g. 201\">\n        <div class=\"igb-hint\">If you don't know your room number yet (before <span class=\"igb-nw\">check-in<\/span>), enter \u201cTBD\u201d.<\/div>\n      <\/div>\n      <div class=\"igb-field\">\n        <label for=\"igb-site\">Where you booked your stay<span class=\"req\">Required<\/span><\/label>\n        <select id=\"igb-site\" name=\"site\"><option value=\"\" selected>Please select<\/option><option value=\"official\">Official website<\/option><option value=\"booking\">Booking.com<\/option><option value=\"airbnb\">Airbnb<\/option><option value=\"rakuten\">Rakuten Travel<\/option><option value=\"jalan\">Jalan<\/option><option value=\"agoda\">Agoda<\/option><option value=\"expedia\">Expedia<\/option><option value=\"other\">Other<\/option><\/select>\n      <\/div>\n      <div class=\"igb-field\">\n        <label for=\"igb-booking\">Stay booking number<span class=\"opt\">Optional<\/span><\/label>\n        <input type=\"text\" id=\"igb-booking\" name=\"booking_no\" placeholder=\"If you know it\">\n      <\/div>\n      <div class=\"igb-field igb-full\" style=\"margin-top:-6px\"><div class=\"igb-ab-note\" id=\"igb-ab-note\">Booked on Airbnb? For paid plans there is no payment on this page. After your request, we will send <strong>a request for the additional charge via Airbnb messages<\/strong>, and the lock code will be provided once payment is confirmed. (Free plans show the lock code right away as usual.)<\/div><\/div>\n      <div class=\"igb-field igb-full\">\n        <label>Plan<span class=\"req\">Required<\/span><\/label>\n        <div class=\"igb-plans\" id=\"igb-plans\">\n          <label class=\"igb-plan-opt\"><input type=\"radio\" name=\"plan\" value=\"short\"><span><span class=\"igb-plan-name\">Up to 3 hours (same-day return)<\/span><span class=\"igb-plan-price\">City bike <b>Free<\/b> (once per day) \/ Cross bike <b><span class=\"igb-nw\">\u00a51,000<\/span><\/b><\/span><\/span><\/label>\n          <label class=\"igb-plan-opt\"><input type=\"radio\" name=\"plan\" value=\"full\" checked><span><span class=\"igb-plan-name\">Full day (until <span class=\"igb-nw\">23:00<\/span>)<\/span><span class=\"igb-plan-price\">City bike <b><span class=\"igb-nw\">\u00a51,000<\/span><\/b> \/ Cross bike <b><span class=\"igb-nw\">\u00a51,500<\/span><\/b><\/span><\/span><\/label>\n          <label class=\"igb-plan-opt\"><input type=\"radio\" name=\"plan\" value=\"2d\"><span><span class=\"igb-plan-name\">2 days<\/span><span class=\"igb-plan-price\">City bike <b><span class=\"igb-nw\">\u00a51,500<\/span><\/b> \/ Cross bike <b><span class=\"igb-nw\">\u00a52,000<\/span><\/b><\/span><\/span><\/label>\n          <label class=\"igb-plan-opt\"><input type=\"radio\" name=\"plan\" value=\"3d\"><span><span class=\"igb-plan-name\">3 days<\/span><span class=\"igb-plan-price\">City bike <b><span class=\"igb-nw\">\u00a52,000<\/span><\/b> \/ Cross bike <b><span class=\"igb-nw\">\u00a52,500<\/span><\/b><\/span><\/span><\/label>\n          <label class=\"igb-plan-opt\"><input type=\"radio\" name=\"plan\" value=\"4plus\"><span><span class=\"igb-plan-name\">4 days or more<\/span><span class=\"igb-plan-price\">3-day rate + per extra day: City bike <b><span class=\"igb-nw\">\u00a51,000<\/span><\/b> \/ Cross bike <b><span class=\"igb-nw\">\u00a51,500<\/span><\/b><\/span><\/span><\/label>\n        <\/div>\n        <div class=\"igb-hint\">Prices are per bike, tax included. Rental days don't need to be consecutive as long as they fall within your stay.<\/div>\n      <\/div>\n      <div class=\"igb-field igb-full\">\n        <label>Rental dates (today to 30 days ahead)<span class=\"req\">Required<\/span><\/label>\n        <div class=\"igb-hint\" id=\"igb-plan-guide\" style=\"font-size:13.5px;color:var(--ig-text)\"><\/div>\n        <div class=\"igb-cal\" id=\"igb-cal\" data-ld=\"Loading availability\u2026 (this may take a little while)\"><\/div>\n        <div class=\"igb-sel\" id=\"igb-sel\"><\/div>\n        <div class=\"igb-stock\" id=\"igb-stock\"><\/div>\n        <div class=\"igb-hint\" id=\"igb-avail-note\"><span class=\"igb-ld-mark\" hidden><\/span>Numbers show bikes available (top: city bike \/ bottom: cross bike). Rental before <span class=\"igb-nw\">check-in<\/span> is fine; not available after <span class=\"igb-nw\">check-out<\/span>.<\/div>\n      <\/div>\n      <div class=\"igb-field\">\n        <label for=\"igb-start\">Start time<span class=\"req\">Required<\/span><\/label>\n        <select id=\"igb-start\" name=\"start\"><\/select>\n        <div class=\"igb-hint\">Rental hours <span class=\"igb-nw\">9:00\u201323:00<\/span>. Start times <span class=\"igb-nw\">9:00\u201320:00<\/span> (every 30 min). For today, only times at least 30 minutes from now can be selected.<\/div>\n      <\/div>\n      <div class=\"igb-field\">\n        <label>&nbsp;<\/label>\n        <div class=\"igb-hint\" id=\"igb-time-note\" style=\"padding-top:10px\">For full-day and multi-day plans, please return the bike by <span class=\"igb-nw\">23:00<\/span> on each rental day.<\/div>\n      <\/div>\n      <div class=\"igb-field\">\n        <label for=\"igb-city\">City bikes<\/label>\n        <select id=\"igb-city\" name=\"city\"><option value=\"0\">0<\/option><option value=\"1\" selected>1<\/option><option value=\"2\">2<\/option><\/select>\n      <\/div>\n      <div class=\"igb-field\">\n        <label for=\"igb-cross\">Cross bikes<\/label>\n        <select id=\"igb-cross\" name=\"cross\"><option value=\"0\" selected>0<\/option><option value=\"1\">1<\/option><option value=\"2\">2<\/option><\/select>\n      <\/div>\n    <\/div>\n\n    <div class=\"igb-quote\" id=\"igb-quote\" aria-live=\"polite\">\n      <div class=\"igb-amount\" id=\"igb-amount\">\u2014<\/div>\n      <div class=\"igb-plan\" id=\"igb-plan\">The price will appear once you fill in the details.<\/div>\n      <div class=\"igb-deadline\" id=\"igb-deadline\"><\/div>\n    <\/div>\n\n    <div class=\"igb-field igb-full\" style=\"margin-top:16px\">\n      <label class=\"igb-check\"><input type=\"checkbox\" id=\"igb-agree\" name=\"agree\"><span>I agree to the <a href=\"https:\/\/hotel-ishigaki.com\/en\/termsandconditions\/\" target=\"_blank\" rel=\"noopener\" class=\"igb-rules-link\">Terms &amp; Conditions<\/a> and the <a href=\"#bike-rules\" class=\"igb-rules-link\">rental rules<\/a>. For paid plans, completing payment constitutes acceptance of the terms.<\/span><\/label>\n    <\/div>\n\n    <div class=\"igb-msg\" id=\"igb-msg\" role=\"alert\"><\/div>\n    <div class=\"igb-hint\" style=\"margin-top:14px;text-align:center\">Please read the <a href=\"#bike-rules\" class=\"igb-rules-link\">rental rules<\/a> before submitting (jumps to the rules section on this page).<\/div>\n    <button type=\"submit\" class=\"igb-btn\" id=\"igb-submit\">Request a Bike<\/button>\n    <div class=\"igb-hint\" style=\"margin-top:10px;text-align:center\">After submitting, your booking details and the lock code (free plan) or payment link (paid plans) will be shown on this screen. Paid plans are confirmed once payment is complete (for same-day requests, please pay before your start time). No email is sent, so please take a screenshot of this screen.<\/div>\n  <\/form>\n\n  <div class=\"igb-result\" id=\"igb-result\"><\/div>\n<\/div>\n\n<script>\n(function(){\n  var GAS_URL = \"https:\/\/script.google.com\/macros\/s\/AKfycbxen4in3lAtpNtHC8O-_B4RBDN97sOUBU3_Un5k03er6EsiF7ua9P_sEDyM3kYfPd_I\/exec\";\n  var L = {\"r_pending_h\":\"Request received (awaiting payment)\",\"pend_h\":\"Your booking is not confirmed yet\",\"pend_paid\":\"It will be confirmed once you complete payment using the button below.\",\"pend_ab\":\"It will be confirmed once you pay the additional-charge request sent via Airbnb messages.\",\"pend_deadline\":\"Payment deadline: {dl}. After the deadline, the request is cancelled automatically.\",\"pend_keys\":\"The lock code will be shown after payment is complete.\",\"l_cancelled_p\":\"Booking {id} has been cancelled. If you would like to rent a bike, please submit a new request on this page.\",\"l_cancelled_h\":\"Cancelled\",\"l_expired_p\":\"Booking {id} was cancelled because the payment deadline passed. If you would still like to rent a bike, please submit a new request on this page.\",\"l_expired_h\":\"Payment deadline passed\",\"l_wait_ab_p\":\"We have not yet confirmed payment for booking {id}. Please check your Airbnb messages. Once you have paid, reopen this page to see your lock code.\",\"v_site\":\"Please select where you booked your stay.\",\"s_site\":\"Booked on (number)\",\"r_ab_h\":\"Request received\",\"r_ab_p\":\"We will send <strong>a request for the additional charge via Airbnb messages<\/strong>. Your booking is confirmed once payment is complete, and we will then provide the lock code.\",\"r_ab_check\":\"\ud83d\udd11 After paying, check your lock code here\",\"shot_top_p_ab\":\"Your booking ID and the lock-code link are shown only on this screen. No email will be sent.\",\"l_checking_status\":\"Checking your booking\u2026\",\"l_wait_pay_h\":\"Waiting for payment confirmation\",\"l_wait_pay_p\":\"We have not yet confirmed payment for booking {id}. Once you have paid, reopen this page to see your lock code.\",\"l_reload\":\"\ud83d\udd04 Check again\",\"l_status_other\":\"Status of booking {id}: {status}\",\"plan_name\":{\"short\":\"Up to 3 hours\",\"full\":\"Full day\",\"2d\":\"2 days\",\"3d\":\"3 days\",\"4plus\":\"4 days or more\"},\"dow\":[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],\"thou_sep\":\",\",\"months\":[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],\"fmt_day\":\"{mon} {d} ({w})\",\"month_title\":\"{mon} {y}\",\"city_short\":\"City \",\"cross_short\":\"Cross \",\"full\":\"Full\",\"selected\":\"Selected: {list} ({n} day(s))\",\"select_none\":\"Select the days you'd like to rent.\",\"guide_short\":\"Up to 3 hours: select 1 day.\",\"guide_full\":\"Full day: select 1 day.\",\"guide_4plus\":\"4 days or more: select at least 4 days (selecting the first day pre-selects 4 consecutive days; they don't have to be consecutive).\",\"guide_n\":\"{need}-day plan: select {need} days (selecting the first day pre-selects consecutive days; they don't have to be consecutive).\",\"time_short\":\"Up to 3 hours: please return the bike within 3 hours of your start time (by 23:00 at the latest).\",\"time_full\":\"For full-day and multi-day plans, please return the bike by 23:00 on each rental day.\",\"city_name\":\"city bike\",\"cross_name\":\"cross bike\",\"clamped\":\"Only {max} {name}(s) available on {day}, so the quantity was changed to {max}.\",\"stock\":\"Availability for these dates: city bike {c} \/ cross bike {x}\",\"stock_loading\":\"Availability for these dates: loading\u2026\",\"avail_fail\":\"Could not load availability. It will be checked when you submit.\",\"err_full_dates\":\"No bikes are available on the selected dates. Please choose other dates.\",\"err_min_one\":\"Please select at least one bike.\",\"err_no_dates\":\"Please select your rental dates.\",\"err_4plus\":\"The 4-days-or-more plan needs at least 4 days (currently {n}).\",\"err_mismatch\":\"The {plan} plan needs {need} day(s) selected (currently {n}).\",\"err_mismatch_key\":\" plan needs \",\"label_short\":\"Up to 3 hours ({start}\u2013{end})\",\"free_suffix\":\" \u00b7 city bike free\",\"label_full\":\"Full day ({start}\u201323:00)\",\"label_days\":\"{n} days\",\"err_no_start_today\":\"No start times are available today (requests must be made at least 30 minutes before the start time).\",\"dl_paid\":\"Request by 30 minutes before the start time ({t}); paid plans are confirmed once paid\",\"late_paid\":\"Requests must be made at least 30 minutes before the start time. This time can't be accepted.\",\"err_city_avail\":\"Only {n} city bike(s) available on {day}.\",\"err_cross_avail\":\"Only {n} cross bike(s) available on {day}.\",\"amount_placeholder\":\"Select your dates to see the price\",\"qty_line\":\"Bikes: city {c} \/ cross {x}\",\"qty_plain\":\"City bike {c} \/ Cross bike {x}\",\"line_dates\":\"Dates: {list}\",\"line_plan\":\"Plan: {p}\",\"sep_list\":\", \",\"sep_parts\":\" \u00b7 \",\"tax\":\"tax incl.\",\"free_tag\":\" \u00b7 free\",\"dl_prefix\":\"Deadline: \",\"v_name\":\"Please enter your name.\",\"v_room\":\"Please enter your room number (or \u201cTBD\u201d).\",\"v_agree\":\"Please tick the box to agree to the rental rules.\",\"sending\":\"Sending\u2026\",\"e_late_paid\":\"Requests must be made at least 30 minutes before the start time.\",\"e_no_stock\":\"Sorry, no bikes are available on the requested dates. Please try different dates or quantities.\",\"e_bad_dates\":\"Invalid dates. Please choose dates within 30 days from today.\",\"e_invalid\":\"Some of the information is invalid.\",\"e_generic\":\"Sending failed. Please try again later, or contact us via the messaging feature of the site you booked on.\",\"btn_submit\":\"Request a Bike\",\"key_label\":\"Lock code\",\"key_title\":\"Lock code (dial lock)\",\"shot_top_p\":\"The lock code is shown only on this screen. No email will be sent.\",\"shot_top_h\":\"Please take a screenshot of this screen\",\"shot_html\":\"Please <strong>take a screenshot<\/strong> of this screen (no email will be sent).<br>If you have any questions, please contact us via the messaging feature of the site you booked on (e.g. Booking.com, Airbnb). If you booked on our official website, you can also reply to your booking confirmation email.\",\"s_id\":\"Booking ID\",\"s_name_room\":\"Name \/ Room\",\"s_dates\":\"Dates\",\"s_plan\":\"Plan\",\"s_qty\":\"Bikes\",\"s_price\":\"Price\",\"tax_paren\":\" (tax incl.)\",\"r_paid_h\":\"Request received\",\"r_paid_p\":\"Please pay using the button below. <strong>Your booking is confirmed once payment is complete, and payment constitutes acceptance of the terms.<\/strong>\",\"r_paid_deadline\":\"Payment deadline: {dl} (the request is cancelled automatically after the deadline)\",\"r_pay_btn\":\"Proceed to payment\",\"r_pay_hint\":\"After paying you will return to this page, where the lock code will be shown.\",\"r_free_h\":\"Your request is complete\",\"r_free_hint\":\"The bikes are kept at the designated spot on the hotel grounds (to the left of the building entrance). Please return the bike to the same place after use.\",\"l_checking\":\"Confirming your payment\u2026\",\"l_wait\":\"Please wait a moment.\",\"l_thanks_h\":\"Thank you for your payment\",\"l_thanks_p\":\"Booking {id} is confirmed.\",\"l_thanks_hint\":\"The bikes are kept at the designated spot on the hotel grounds (to the left of the building entrance). Please return the bike to the same place after use. Rental hours are 9:00\u201323:00.\",\"l_accepted_h\":\"Payment received\",\"l_accepted_p\":\"Booking {id} (status: {status}). Once confirmed, we will send you the lock code via the messaging feature of the site you booked on.\",\"l_fail_h\":\"Could not confirm\",\"l_fail_default\":\"The booking could not be found.\",\"l_fail_p\":\"Please contact us via the messaging feature of the site you booked on (booking ID {id}).\",\"l_poll_timeout\":\"Booking {id}. Confirming your payment is taking a while. Please check again in a moment using the button below (your lock code will be shown once payment is confirmed).\",\"l_neterr_h\":\"Connection error\",\"l_neterr_p\":\"We could not check your payment status. If reloading the page doesn't help, please contact us via the messaging feature of the site you booked on (booking ID {id}).\"};\n  var root = document.getElementById(\"igbike\");\n  var LANG = root.getAttribute(\"data-lang\") || \"ja\";\n  var MSG_FIELD = (LANG === \"ja\") ? \"message\" : \"message_en\";   \/\/ GAS \u306e\u6848\u5185\u6587: \u65e5\u672c\u8a9e\u30da\u30fc\u30b8\u306f message\u3001\u305d\u308c\u4ee5\u5916\u306f message_en\n  var RANGE_DAYS = 30;\n  var PLAN_DAYS = { short:1, full:1, \"2d\":2, \"3d\":3, \"4plus\":4 };   \/\/ \u5fc5\u8981\u65e5\u6570\uff084plus \u306f\u6700\u4f4e\uff09\n  var PRICE = { city:{one:1000,two:1500,three:2000,extra:1000,short:0}, cross:{one:1500,two:2000,three:2500,extra:1500,short:1000} };\n  var $ = function(id){ return document.getElementById(id); };\n  var form=$(\"igb-form\"), fName=$(\"igb-name\"), fRoom=$(\"igb-room\"), fSite=$(\"igb-site\"), fBooking=$(\"igb-booking\"), abNote=$(\"igb-ab-note\"), cal=$(\"igb-cal\"), selEl=$(\"igb-sel\"), stockEl=$(\"igb-stock\"), fStart=$(\"igb-start\"), guideEl=$(\"igb-plan-guide\"), timeNote=$(\"igb-time-note\"),\n      fCity=$(\"igb-city\"), fCross=$(\"igb-cross\"), fAgree=$(\"igb-agree\"), msg=$(\"igb-msg\"), btn=$(\"igb-submit\"),\n      amountEl=$(\"igb-amount\"), planEl=$(\"igb-plan\"), dlEl=$(\"igb-deadline\"), result=$(\"igb-result\"), availNote=$(\"igb-avail-note\");\n  var selected = {};      \/\/ \"YYYY-MM-DD\" -> true\n  var avail = null;       \/\/ {\"YYYY-MM-DD\":{city:n,cross:n}} or null (unknown)\n  var msgKind = \"\";       \/\/ \"late\" | \"err\" | \"info\" | \"\"\n  function T(s, v){ return String(s).replace(\/\\{(\\w+)\\}\/g, function(_, k){ return (v && k in v) ? v[k] : \"\"; }); }\n  function plan(){ var r=form.querySelector('input[name=plan]:checked'); return r? r.value : \"full\"; }\n\n  \/\/ ---- utils (JST) ----\n  function pad(n){ return (n<10?\"0\":\"\")+n; }\n  function ymd(d){ return d.getUTCFullYear()+\"-\"+pad(d.getUTCMonth()+1)+\"-\"+pad(d.getUTCDate()); }\n  function parseYmd(s){ var m=\/^(\\d{4})-(\\d{2})-(\\d{2})$\/.exec(s||\"\"); return m? Date.UTC(+m[1],+m[2]-1,+m[3]) : NaN; }\n  function jstMs(dateStr, hh, mm){ var b=parseYmd(dateStr); return isNaN(b)? NaN : b + ((hh*60+mm)*60 - 9*3600)*1000; }\n  function dayLabel(d){ return T(L.fmt_day, {m:d.getUTCMonth()+1, d:d.getUTCDate(), mon:L.months[d.getUTCMonth()], w:L.dow[d.getUTCDay()]}); }\n  function fmtJst(ms){ var d=new Date(ms+9*3600*1000); return dayLabel(d)+\" \"+pad(d.getUTCHours())+\":\"+pad(d.getUTCMinutes()); }\n  function fmtDay(s){ var b=parseYmd(s); if(isNaN(b)) return s; return dayLabel(new Date(b)); }\n  function yen(n){ return \"\u00a5\"+String(n).replace(\/\\B(?=(\\d{3})+(?!\\d))\/g, L.thou_sep||\",\"); }   \/\/ v3.7.0 \u533a\u5207\u308a\u6587\u5b57\u306f\u8a00\u8a9e\u5225\uff08\u8868\u793a\u306e\u307f\uff09\n  function esc(s){ return String(s==null?\"\":s).replace(\/[&<>\"']\/g,function(c){return {\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\"}[c];}); }\n  function showMsg(kind, html){ msgKind=kind; msg.className=\"igb-msg show \"+(kind===\"info\"?\"info\":\"err\"); msg.innerHTML=html; }   \/\/ kind: late(\u9001\u4fe1\u30d6\u30ed\u30c3\u30af) \/ err(\u9001\u4fe1\u30a8\u30e9\u30fc) \/ info(\u53f0\u6570\u81ea\u52d5\u8abf\u6574)\n  function hideMsg(){ msgKind=\"\"; msg.className=\"igb-msg\"; msg.innerHTML=\"\"; }\n  function todayJstMs(){ var t=Date.now()+9*3600*1000; return t - (t % 86400000); }   \/\/ JST\u306e\u65e5\u4ed8 00:00 (UTC\u57fa\u6e96ms)\n  var TODAY = ymd(new Date(todayJstMs()));\n  var LAST = ymd(new Date(todayJstMs()+RANGE_DAYS*86400000));\n\n  \/\/ ---- start time options ----\n  (function(){ for(var h=9; h<=20; h++){ for(var m=0; m<60; m+=30){ if(h===20&&m>0) break; var v=pad(h)+\":\"+pad(m); var o=document.createElement(\"option\"); o.value=v; o.textContent=v; if(v===\"11:00\") o.selected=true; fStart.appendChild(o);} } })();\n\n  \/\/ ---- calendar (today .. today+30) ----\n  function renderCal(){\n    cal.innerHTML=\"\";\n    var t0=todayJstMs(), tEnd=t0+RANGE_DAYS*86400000;\n    var d=new Date(t0); var y=d.getUTCFullYear(), m=d.getUTCMonth();\n    while(Date.UTC(y,m,1) <= tEnd){\n      var mon=document.createElement(\"div\"); mon.className=\"igb-month\";\n      var title=document.createElement(\"div\"); title.className=\"igb-month-title\"; title.textContent=T(L.month_title,{y:y, m:m+1, mon:L.months[m]}); mon.appendChild(title);\n      var dow=document.createElement(\"div\"); dow.className=\"igb-dow\"; L.dow.forEach(function(w){ var s=document.createElement(\"span\"); s.textContent=w; dow.appendChild(s); }); mon.appendChild(dow);\n      var days=document.createElement(\"div\"); days.className=\"igb-days\";\n      var first=new Date(Date.UTC(y,m,1)).getUTCDay();\n      for(var i=0;i<first;i++){ var p=document.createElement(\"button\"); p.type=\"button\"; p.className=\"igb-day pad\"; p.tabIndex=-1; days.appendChild(p); }\n      var dim=new Date(Date.UTC(y,m+1,0)).getUTCDate();\n      for(var day=1; day<=dim; day++){\n        var ms=Date.UTC(y,m,day), key=ymd(new Date(ms));\n        var b=document.createElement(\"button\"); b.type=\"button\"; b.className=\"igb-day\"; b.setAttribute(\"data-d\",key);\n        var inRange = ms>=t0 && ms<=tEnd;\n        var a = avail && avail[key];\n        var sub = \"\";\n        if(inRange){\n          if(a){ sub = '<small class=\"'+(a.city===0?\"zero\":\"\")+'\">'+L.city_short+a.city+'<\/small><small class=\"'+(a.cross===0?\"zero\":\"\")+'\">'+L.cross_short+a.cross+'<\/small>'; }\n          else if(!avail){ sub = \"<small>\u2026<\/small>\"; }\n        }\n        if(inRange && a && a.city===0 && a.cross===0){ b.classList.add(\"full\"); sub='<small class=\"zero\">'+L.full+'<\/small>'; delete selected[key]; }\n        if(!inRange){ b.disabled=true; }\n        if(selected[key]) b.classList.add(\"on\");\n        b.innerHTML=\"<b>\"+day+\"<\/b>\"+sub;\n        (function(k,btn){ btn.addEventListener(\"click\", function(){ if(btn.classList.contains(\"full\")) return; toggleDate(k); }); })(key,b);\n        days.appendChild(b);\n      }\n      mon.appendChild(days); cal.appendChild(mon);\n      m++; if(m>11){ m=0; y++; }\n    }\n    renderSel();\n  }\n  function renderSel(){\n    var ks=Object.keys(selected).sort(), p=plan(), need=PLAN_DAYS[p];\n    selEl.innerHTML = ks.length ? T(L.selected,{list:\"<strong>\"+ks.map(fmtDay).join(L.sep_list)+\"<\/strong>\", n:ks.length}) : L.select_none;\n    var g;\n    if(p===\"short\") g=L.guide_short;\n    else if(p===\"full\") g=L.guide_full;\n    else if(p===\"4plus\") g=L.guide_4plus;\n    else g=T(L.guide_n,{need:need});\n    guideEl.textContent=g;\n    applyStockLimits(); applyStartLimits();\n    timeNote.textContent = p===\"short\" ? L.time_short : L.time_full;\n  }\n  function minAvail(){\n    \/\/ \u9078\u629e\u4e2d\u306e\u5229\u7528\u65e5\u3059\u3079\u3066\u3067\u306e\u7a7a\u304d\u53f0\u6570\u306e\u6700\u5c0f\u5024\uff08\u672a\u53d6\u5f97\u306e\u65e5\u306f\u4e0a\u96502\uff09\n    var ks=Object.keys(selected), m={city:2, cross:2, known:false};\n    ks.forEach(function(k){ var a=avail && avail[k]; if(a){ m.known=true; m.city=Math.min(m.city,a.city); m.cross=Math.min(m.cross,a.cross); } });\n    return m;\n  }\n  function limitDate(type){\n    \/\/ \u3069\u306e\u65e5\u304c\u4e0a\u9650\u3092\u6c7a\u3081\u3066\u3044\u308b\u304b\uff08\u30e1\u30c3\u30bb\u30fc\u30b8\u7528\uff09\n    var ks=Object.keys(selected).sort(), best=null;\n    ks.forEach(function(k){ var a=avail && avail[k]; if(a && (best===null || a[type] < (avail[best][type]))) best=k; });\n    return best;\n  }\n  function applyStockLimits(){\n    var m=minAvail(), changed=[];\n    [[fCity,\"city\",L.city_name],[fCross,\"cross\",L.cross_name]].forEach(function(t){\n      var sel=t[0], key=t[1], name=t[2], max=Object.keys(selected).length ? m[key] : 2;\n      Array.prototype.forEach.call(sel.options, function(o){ o.disabled = (+o.value > max); });\n      if(+sel.value > max){ sel.value=String(max); var d=limitDate(key); changed.push(T(L.clamped,{day:(d? fmtDay(d) : \"\"), name:name, max:max})); }\n    });\n    var ks=Object.keys(selected).length;\n    stockEl.innerHTML = ks ? (m.known ? T(L.stock,{c:m.city, x:m.cross}) : L.stock_loading) : \"\";\n    if(changed.length){ showMsg(\"info\", changed.map(esc).join(\"<br>\")); }\n    else if(msgKind===\"info\"){ hideMsg(); }\n  }\n  function dayBtn(k){ return cal.querySelector('.igb-day[data-d=\"'+k+'\"]'); }\n  function selectable(k){ var b=dayBtn(k); return b && !b.disabled && !b.classList.contains(\"full\"); }\n  function toggleDate(d){\n    var p=plan(), need=PLAN_DAYS[p], cur=Object.keys(selected).length;\n    if(selected[d]) { delete selected[d]; }\n    else if(need===1){ selected={}; selected[d]=true; }\n    else if(cur===0){\n      \/\/ \u6700\u521d\u306e\u65e5: \u5fc5\u8981\u65e5\u6570\u3076\u3093\u9023\u7d9a\u65e5\u3092\u4eee\u9078\u629e\uff08\u6e80\u8eca\u30fb\u7bc4\u56f2\u5916\u306f\u98db\u3070\u3059\uff09\n      selected={}; var t=parseYmd(d), got=0;\n      while(got<need && t<=parseYmd(LAST)){ var k=ymd(new Date(t)); if(selectable(k)){ selected[k]=true; got++; } t+=86400000; }\n    }\n    else { selected[d]=true; }\n    Array.prototype.forEach.call(cal.querySelectorAll(\".igb-day\"), function(c){ c.classList.toggle(\"on\", !!selected[c.getAttribute(\"data-d\")]); });\n    renderSel(); recalc();\n  }\n  function loadAvail(){\n    var url=GAS_URL+\"?action=bike_avail&from=\"+encodeURIComponent(TODAY)+\"&to=\"+encodeURIComponent(LAST);\n    fetch(url,{method:\"GET\",redirect:\"follow\"}).then(function(r){return r.json();}).then(function(j){\n      if(j && j.ok && j.days){ avail=j.days; }\n      else { avail=null; availNote.textContent=L.avail_fail; }\n      renderCal(); recalc();\n    }).catch(function(){ avail=null; availNote.textContent=L.avail_fail; renderCal(); recalc(); });\n  }\n\n  \/\/ ---- quote (DESIGN \u00a72 \u3068\u540c\u3058\u8a08\u7b97\u3002\u30b5\u30fc\u30d0\u5074\u304c\u6b63) ----\n  function applyStartLimits(){\n    \/\/ \u4eca\u65e5\u3092\u9078\u3093\u3067\u3044\u308b\u5834\u5408\u3001\u958b\u59cb\u6642\u523b\u3092\u300c\u73fe\u5728\u6642\u523b\uff0b30\u5206\u4ee5\u964d\u300d\u306b\u7d5e\u308b\uff08\u6709\u6599\u306e\u5f53\u65e5\u30fb\u76f4\u524d\u7533\u8fbc\u306b\u5bfe\u5fdc\uff09\n    var today = !!selected[TODAY], limit = Date.now() + 30*60*1000, firstOk = null;\n    Array.prototype.forEach.call(fStart.options, function(o){\n      var hh=+o.value.slice(0,2), mm=+o.value.slice(3,5);\n      o.disabled = today && (jstMs(TODAY,hh,mm) < limit);\n      if(!o.disabled && firstOk===null) firstOk=o.value;\n    });\n    if(fStart.options[fStart.selectedIndex] && fStart.options[fStart.selectedIndex].disabled && firstOk!==null) fStart.value=firstOk;\n  }\n  function quote(){\n    var dates=Object.keys(selected).sort(), n=dates.length, city=+fCity.value, cross=+fCross.value, p=plan(), three=(p===\"short\"), need=PLAN_DAYS[p], errors=[];\n    var q={amount:0, plan_label:\"\", free:false, deadline:NaN, dates:dates, city:city, cross:cross, three:three, errors:errors, start:fStart.value};\n    if(city+cross<1){ var mm=minAvail(); errors.push((n>=1 && mm.city===0 && mm.cross===0) ? L.err_full_dates : L.err_min_one); }\n    if(n<1) errors.push(L.err_no_dates);\n    else if(p===\"4plus\" && n<4) errors.push(T(L.err_4plus,{n:n}));\n    else if(p!==\"4plus\" && n!==need){ errors.push(T(L.err_mismatch,{plan:L.plan_name[p], need:need, n:n})); q.mismatch=true; }\n    var sh=+fStart.value.slice(0,2), sm=+fStart.value.slice(3,5);\n    var endLabel = three ? (pad(Math.min(sh+3,23))+\":\"+(sh+3>=23?\"00\":pad(sm))) : \"23:00\";\n    if(three){\n      q.amount = city*PRICE.city.short*n + cross*PRICE.cross.short*n;\n      q.free = (cross===0 && city>=1);\n      q.plan_label = T(L.label_short,{start:fStart.value, end:endLabel}) + (q.free ? L.free_suffix : \"\");\n    } else {\n      var pc, pk, m=Math.max(n,1);   \/\/ \u65e5\u6570\u306f\u30ab\u30ec\u30f3\u30c0\u30fc\u306e\u9078\u629e\u6570\uff08\u30d7\u30e9\u30f3\u3068\u4e0d\u4e00\u81f4\u306a\u3089\u4e0a\u306e\u30a8\u30e9\u30fc\u3067\u9001\u4fe1\u4e0d\u53ef\uff09\n      if(p===\"full\"||m<=1){ pc=PRICE.city.one; pk=PRICE.cross.one; q.plan_label=T(L.label_full,{start:fStart.value}); }\n      else if(m===2){ pc=PRICE.city.two; pk=PRICE.cross.two; q.plan_label=L.plan_name[\"2d\"]; }\n      else if(m===3){ pc=PRICE.city.three; pk=PRICE.cross.three; q.plan_label=L.plan_name[\"3d\"]; }\n      else { pc=PRICE.city.three+(m-3)*PRICE.city.extra; pk=PRICE.cross.three+(m-3)*PRICE.cross.extra; q.plan_label=T(L.label_days,{n:m}); }\n      q.amount = city*pc + cross*pk;\n    }\n    if(n>=1 && selected[TODAY] && Array.prototype.every.call(fStart.options, function(o){ return o.disabled; })){ errors.push(L.err_no_start_today); q.late=true; q.late_text=L.err_no_start_today; }\n    if(n>=1){\n      var first=dates[0];\n      \/\/ \u6709\u6599\u30fb\u7121\u6599\u3068\u3082\u5229\u7528\u958b\u59cb\u306e30\u5206\u524d\u307e\u3067\uff082026-09-28 \u30eb\u30fc\u30eb\u5909\u66f4\uff09\n      q.deadline = jstMs(first, sh, sm) - 30*60*1000; q.deadline_label=T(L.dl_paid,{t:fmtJst(q.deadline)});\n      if(Date.now() > q.deadline){\n        q.late_text = L.late_paid;\n        errors.push(q.late_text); q.late=true;\n      }\n      if(avail){\n        dates.forEach(function(d){ var a=avail[d]; if(!a) return;\n          if(city>a.city) errors.push(T(L.err_city_avail,{day:fmtDay(d), n:a.city}));\n          if(cross>a.cross) errors.push(T(L.err_cross_avail,{day:fmtDay(d), n:a.cross}));\n        });\n      }\n    }\n    return q;\n  }\n  function isBlocking(e){ return e===L.err_full_dates || e===L.err_min_one || e.indexOf(L.err_mismatch_key)>=0; }\n  function recalc(){\n    var q=quote();\n    if(!q.dates.length){\n      \/\/ \u5229\u7528\u65e5\u672a\u9078\u629e: \u91d1\u984d\u30fb\u30d7\u30e9\u30f3\u540d\u30fb\u7de0\u5207\u306f\u51fa\u3055\u306a\u3044\uff08\u300c\u00a50\u30fb\u7121\u6599\u300d\u304c\u30af\u30ed\u30b9\u30d0\u30a4\u30af\u3082\u7121\u6599\u3068\u8aa4\u8aad\u3055\u308c\u308b\u305f\u3081\uff09\n      amountEl.innerHTML = '\u2014<small>'+L.amount_placeholder+'<\/small>';\n      planEl.textContent = T(L.qty_line,{c:q.city, x:q.cross});\n      dlEl.textContent = \"\";\n    } else {\n      amountEl.innerHTML = yen(q.amount) + '<small>' + L.tax + (q.free? L.free_tag : \"\") + '<\/small>';\n      var parts=[T(L.line_dates,{list:q.dates.map(fmtDay).join(L.sep_list)})];\n      if(q.plan_label) parts.push(T(L.line_plan,{p:q.plan_label}));\n      parts.push(T(L.qty_line,{c:q.city, x:q.cross}));\n      planEl.textContent = parts.join(L.sep_parts);\n      dlEl.textContent = q.deadline_label ? (L.dl_prefix+q.deadline_label) : \"\";\n    }\n    var block = q.late ? q.late_text : (q.errors.filter(isBlocking)[0] || \"\");   \/\/ \u65e5\u6570\u4e0d\u4e00\u81f4\u30fb\u5408\u8a080\u53f0\u3082\u9001\u4fe1\u4e0d\u53ef\n    if(!q.dates.length) block=\"\";   \/\/ \u672a\u9078\u629e\u6642\u306f\u30e1\u30c3\u30bb\u30fc\u30b8\u306f\u51fa\u3055\u305a\u30dc\u30bf\u30f3\u3060\u3051\u7121\u52b9\n    if(block){ showMsg(\"late\", esc(block)); }\n    else if(msgKind===\"late\"){ hideMsg(); }     \/\/ \u9001\u4fe1\u30a8\u30e9\u30fc\u7b49\u306e\u8868\u793a\u306f\u6d88\u3055\u306a\u3044\n    btn.disabled = !!block || !q.dates.length;\n  }\n\n  \/\/ ---- validate & submit ----\n  function validate(q){\n    var errs=[];\n    if(!fName.value.trim()) errs.push(L.v_name);\n    if(!fRoom.value.trim()) errs.push(L.v_room);\n    if(!fSite.value) errs.push(L.v_site);\n    errs = errs.concat(q.errors);\n    if(!fAgree.checked) errs.push(L.v_agree);\n    return errs;\n  }\n  form.addEventListener(\"submit\", function(ev){\n    ev.preventDefault();\n    var q=quote(), errs=validate(q);\n    if(errs.length){ showMsg(\"err\", errs.map(esc).join(\"<br>\")); return; }\n    var payload={ action:\"bike_submit\", name:fName.value.trim(), room:fRoom.value.trim(), site:fSite.value, booking_no:fBooking.value.trim(), dates:q.dates, start:fStart.value,\n      three_hours:q.three, city:q.city, cross:q.cross, lang:LANG, note:\"\", agree:true, client_amount:q.amount };\n    btn.disabled=true; btn.innerHTML='<span class=\"igb-spin\"><\/span>'+L.sending; hideMsg();\n    fetch(GAS_URL,{method:\"POST\",body:JSON.stringify(payload),redirect:\"follow\"})\n      .then(function(r){ return r.text(); })\n      .then(function(t){ var j; try{ j=JSON.parse(t); }catch(e){ throw {code:\"bad_json\", error:t.slice(0,120)}; } return j; })\n      .then(function(j){ if(!j || !j.ok){ throw j || {code:\"unknown\"}; } renderResult(j, q); })\n      .catch(function(e){\n        var code = e && e.code, text;\n        if(code===\"late_paid\") text=L.e_late_paid;\n        else if(code===\"late_free\") text=L.e_late_paid;   \/\/ \u65e7\u30b3\u30fc\u30c9\u4e92\u63db\uff08\u7de0\u5207\u306f\u5171\u901a\u306e30\u5206\u524d\uff09\n        else if(code===\"no_stock\") text=L.e_no_stock;\n        else if(code===\"bad_dates\") text=L.e_bad_dates;\n        else if(code===\"invalid\") text=L.e_invalid+(e.error? \" (\"+esc(e.error)+\")\":\"\");\n        else text=L.e_generic+(e&&e.error? \"<br><small>\"+esc(e.error)+\"<\/small>\":\"\");\n        showMsg(\"err\", text);\n        btn.disabled=false; btn.textContent=L.btn_submit;\n        loadAvail();\n      });\n  });\n  function guideMsg(j){ var m = j && (j[MSG_FIELD] || j.message); return m ? '<div class=\"igb-notice\">'+esc(m)+'<\/div>' : \"\"; }\n  function keysHtml(keys){\n    if(!keys) return \"\";\n    var rows=[];\n    if(typeof keys===\"string\"){ rows.push('<div class=\"igb-key\"><span>'+L.key_label+'<\/span><b>'+esc(keys)+'<\/b><\/div>'); }\n    else if(Array.isArray(keys)){ keys.forEach(function(k){ if(k&&typeof k===\"object\") rows.push('<div class=\"igb-key\"><span>'+esc(k.label||(LANG===\"ja\"? k.ja : k.en)||k.ja||k.bike||k.name||\"\")+'<\/span><b>'+esc(k.key||k.code||k.value||\"\")+'<\/b><\/div>'); else rows.push('<div class=\"igb-key\"><span>'+L.key_label+'<\/span><b>'+esc(k)+'<\/b><\/div>'); }); }\n    else { Object.keys(keys).forEach(function(k){ rows.push('<div class=\"igb-key\"><span>'+esc(k)+'<\/span><b>'+esc(keys[k])+'<\/b><\/div>'); }); }\n    return rows.length ? '<div class=\"igb-shot-top\"><span class=\"igb-shot-ico\" aria-hidden=\"true\">\ud83d\udcf8<\/span><div><b>'+L.shot_top_h+'<\/b><span>'+L.shot_top_p+'<\/span><\/div><\/div>'+\n      '<div class=\"igb-keys\"><div style=\"font-weight:600;margin-bottom:4px\">'+L.key_title+'<\/div>'+rows.join(\"\")+'<\/div>' : \"\";\n  }\n  var SHOT = '<div class=\"igb-shot\">'+L.shot_html+'<\/div>';\n  function summaryRows(j, q){\n    return '<table class=\"igb-kv\">'+\n      '<tr><th>'+L.s_id+'<\/th><td>'+esc(j.id||\"\")+'<\/td><\/tr>'+\n      '<tr><th>'+L.s_name_room+'<\/th><td>'+esc(fName.value.trim())+' \/ '+esc(fRoom.value.trim())+'<\/td><\/tr>'+\n      '<tr><th>'+L.s_site+'<\/th><td>'+esc(siteLabel())+(fBooking.value.trim()? ' ('+esc(fBooking.value.trim())+')' : '')+'<\/td><\/tr>'+\n      '<tr><th>'+L.s_dates+'<\/th><td>'+esc(q.dates.map(fmtDay).join(L.sep_list))+'<\/td><\/tr>'+\n      '<tr><th>'+L.s_plan+'<\/th><td>'+esc(q.plan_label)+'<\/td><\/tr>'+\n      '<tr><th>'+L.s_qty+'<\/th><td>'+esc(T(L.qty_plain,{c:q.city, x:q.cross}))+'<\/td><\/tr>'+\n      '<tr><th>'+L.s_price+'<\/th><td>'+yen(j.amount!=null? j.amount : q.amount)+L.tax_paren+'<\/td><\/tr><\/table>';\n  }\n  function siteLabel(){ var o=fSite.options[fSite.selectedIndex]; return o && o.value ? o.text : \"\"; }\n  function isAirbnb(){ return fSite.value===\"airbnb\"; }\n  function checkUrl(j){\n    \/\/ \u9375\u756a\u53f7\u306e\u78ba\u8a8d\u7528URL\uff08GAS \u304c status_url\/check_url \u3092\u8fd4\u305b\u3070\u305d\u308c\u3092\u512a\u5148\u3002\u7121\u3051\u308c\u3070 id \u3068 k \u304b\u3089\u540c\u30da\u30fc\u30b8\u306e ?check=1 \u3092\u7d44\u307f\u7acb\u3066\u308b\uff09\n    var u = j && (j.status_url || j.check_url || \"\");\n    if(!u && j && j.id && j.k) u = location.origin + location.pathname + \"?check=1&id=\" + encodeURIComponent(j.id) + \"&k=\" + encodeURIComponent(j.k);\n    return u;\n  }\n  function pendingBox(body, dl){\n    \/\/ \u300c\u307e\u3060\u78ba\u5b9a\u3057\u3066\u3044\u307e\u305b\u3093\u300d\u5f37\u8abf\u67a0\uff08\u898b\u51fa\u3057\u306e\u76f4\u4e0b\u30fb\u53d7\u4ed8\u5185\u5bb9\u3088\u308a\u4e0a\uff09\n    return '<div class=\"igb-pending\" role=\"alert\"><span class=\"igb-pending-ico\" aria-hidden=\"true\">\u26a0\ufe0f<\/span><div><b class=\"igb-pending-h\">'+L.pend_h+'<\/b>'+body+\n      (dl? '<br>'+T(L.pend_deadline,{dl:\"<strong>\"+esc(dl)+\"<\/strong>\"}) : '')+'<br>'+L.pend_keys+'<\/div><\/div>';\n  }\n  function renderResult(j, q){\n    form.style.display=\"none\";\n    var html, message = guideMsg(j);\n    var abPending = (j.status===\"pending_airbnb\") || (isAirbnb() && !q.free && !(j.keys && j.keys.length));\n    if(abPending){\n      var cu = checkUrl(j);\n      var adl = j.pay_deadline_iso ? fmtJst(new Date(j.pay_deadline_iso).getTime()) : \"\";\n      html = '<h3>'+L.r_pending_h+'<\/h3>'+pendingBox(L.pend_ab, adl)+summaryRows(j,q)+message+\n        (cu? '<a class=\"igb-check-link\" href=\"'+esc(cu)+'\">'+L.r_ab_check+'<\/a>' : '')+\n        '<div class=\"igb-shot-top\"><span class=\"igb-shot-ico\" aria-hidden=\"true\">\ud83d\udcf8<\/span><div><b>'+L.shot_top_h+'<\/b><span>'+L.shot_top_p_ab+'<\/span><\/div><\/div>'+SHOT;\n    } else if(j.payment_url){\n      var dl = j.pay_deadline_iso ? fmtJst(new Date(j.pay_deadline_iso).getTime()) : \"\";\n      html = '<h3>'+L.r_pending_h+'<\/h3>'+pendingBox(L.pend_paid, dl)+summaryRows(j,q)+message+\n        '<a class=\"igb-btn igb-pay\" href=\"'+esc(j.payment_url)+'\" rel=\"noopener\">'+L.r_pay_btn+'<\/a>'+\n        '<p class=\"igb-hint\" style=\"margin-top:10px\">'+L.r_pay_hint+'<\/p>'+SHOT;\n    } else {\n      html = '<h3>'+L.r_free_h+'<\/h3>'+summaryRows(j,q)+keysHtml(j.keys)+message+\n        (message? \"\" : '<p class=\"igb-hint\">'+L.r_free_hint+'<\/p>')+SHOT;\n    }\n    result.innerHTML=html; result.className=\"igb-result show\";\n    try{ result.scrollIntoView({behavior:\"smooth\",block:\"start\"}); }catch(e){}\n  }\n\n  \/\/ ---- Stripe \u6c7a\u6e08\u5b8c\u4e86\u30ea\u30c0\u30a4\u30ec\u30af\u30c8 (?paid=1&id=IGB-xxxx&k=...) ----\n  function handlePaidLanding(){\n    var qs = new URLSearchParams(location.search);\n    var paid = qs.get(\"paid\")===\"1\";\n    var check = !paid && qs.get(\"id\") && qs.get(\"k\");      \/\/ ?check=1&id&k\uff08Airbnb \u7b49\u306e\u9375\u756a\u53f7\u78ba\u8a8d\uff09\u2192 bike_status\n    if(!paid && !check) return false;\n    var id=qs.get(\"id\")||\"\", k=qs.get(\"k\")||\"\", s=qs.get(\"s\")||qs.get(\"session_id\")||\"\";\n    form.style.display=\"none\";\n    result.className=\"igb-result show\";\n    result.innerHTML='<h3>'+(check? L.l_checking_status : L.l_checking)+'<\/h3><p><span class=\"igb-spin\"><\/span>'+L.l_wait+'<\/p>';\n    var url = check\n      ? GAS_URL+\"?action=bike_status&id=\"+encodeURIComponent(id)+\"&k=\"+encodeURIComponent(k)\n      : GAS_URL+\"?action=bike_paid&id=\"+encodeURIComponent(id)+\"&k=\"+encodeURIComponent(k)+(s?\"&s=\"+encodeURIComponent(s):\"\");\n    var t0=Date.now(), POLL_MS=3000, POLL_MAX=120000;\n    var stUrl=GAS_URL+\"?action=bike_status&id=\"+encodeURIComponent(id)+\"&k=\"+encodeURIComponent(k);\n    function render(j){\n      var message = guideMsg(j);\n      if(j && j.ok && (j.status===\"paid\"||j.status===\"confirmed\")){\n        result.innerHTML='<h3>'+L.l_thanks_h+'<\/h3><p>'+T(L.l_thanks_p,{id:\"<strong>\"+esc(id)+\"<\/strong>\"})+'<\/p>'+keysHtml(j.keys)+message+\n          (message? \"\" : '<p class=\"igb-hint\">'+L.l_thanks_hint+'<\/p>')+SHOT;\n      } else if(j && j.ok && paid && j.status===\"pending_payment\"){\n        \/\/ v3.5.0: \u652f\u6255\u5b8c\u4e86\u306e\u623b\u308a\u3002\u78ba\u5b9a\uff08Stripe \u306e\u901a\u77e5\uff09\u3092\u5f85\u3064\u9593\u306f\u30dd\u30fc\u30ea\u30f3\u30b0\u3002\u9375\u756a\u53f7\u306f paid \u306b\u306a\u3063\u3066\u304b\u3089\n        if(Date.now()-t0 < POLL_MAX){\n          result.innerHTML='<h3>'+L.l_checking+'<\/h3><p><span class=\"igb-spin\"><\/span>'+L.l_wait+'<\/p>';\n          setTimeout(function(){ get(stUrl); }, POLL_MS);\n          return;\n        }\n        var su = j.status_url || (location.origin + location.pathname + \"?check=1&id=\" + encodeURIComponent(id) + \"&k=\" + encodeURIComponent(k));\n        result.innerHTML='<h3>'+L.l_wait_pay_h+'<\/h3><p>'+T(L.l_poll_timeout,{id:\"<strong>\"+esc(id)+\"<\/strong>\"})+'<\/p>'+\n          '<a class=\"igb-check-link\" href=\"'+esc(su)+'\">'+L.l_reload+'<\/a>'+SHOT;\n      } else if(j && j.ok && check && (j.status===\"pending_airbnb\" || j.status===\"pending_payment\")){\n        var payLink = (j.status===\"pending_payment\" && j.payment_url) ? '<a class=\"igb-btn igb-pay\" href=\"'+esc(j.payment_url)+'\" rel=\"noopener\">'+L.r_pay_btn+'<\/a>' : '';\n        result.innerHTML='<h3>'+L.l_wait_pay_h+'<\/h3><p>'+T(j.status===\"pending_airbnb\"? L.l_wait_ab_p : L.l_wait_pay_p,{id:\"<strong>\"+esc(id)+\"<\/strong>\"})+'<\/p>'+message+payLink+\n          '<a class=\"igb-check-link\" href=\"'+esc(location.href)+'\">'+L.l_reload+'<\/a>'+SHOT;\n      } else if(j && j.ok && check && (j.status===\"expired\" || j.status===\"cancelled\")){\n        result.innerHTML='<h3>'+(j.status===\"expired\"? L.l_expired_h : L.l_cancelled_h)+'<\/h3><p>'+T(j.status===\"expired\"? L.l_expired_p : L.l_cancelled_p,{id:\"<strong>\"+esc(id)+\"<\/strong>\"})+'<\/p>'+message+SHOT;\n      } else if(j && j.ok && check){\n        result.innerHTML='<h3>'+L.l_fail_h+'<\/h3><p>'+T(L.l_status_other,{id:\"<strong>\"+esc(id)+\"<\/strong>\", status:esc(j.status||\"\")})+'<\/p>'+message+SHOT;\n      } else if(j && j.ok){\n        result.innerHTML='<h3>'+L.l_accepted_h+'<\/h3><p>'+T(L.l_accepted_p,{id:\"<strong>\"+esc(id)+\"<\/strong>\", status:esc(j.status||\"\")})+'<\/p>'+message+SHOT;\n      } else {\n        result.innerHTML='<h3>'+L.l_fail_h+'<\/h3><p>'+esc((j&&j.error)||L.l_fail_default)+'<br>'+T(L.l_fail_p,{id:esc(id)})+'<\/p>';\n      }\n    }\n    function get(u){\n      fetch(u,{method:\"GET\",redirect:\"follow\"}).then(function(r){return r.json();}).then(render).catch(function(){\n        if(paid && Date.now()-t0 < POLL_MAX){ setTimeout(function(){ get(stUrl); }, POLL_MS); return; }\n        result.innerHTML='<h3>'+L.l_neterr_h+'<\/h3><p>'+T(L.l_neterr_p,{id:esc(id)})+'<\/p>';\n      });\n    }\n    get(url);\n    return true;\n  }\n\n  \/\/ ---- wire up ----\n  [fStart,fCity,fCross].forEach(function(el){ el.addEventListener(\"change\", recalc); });\n  function abToggle(){ abNote.classList.toggle(\"show\", isAirbnb()); }\n  fSite.addEventListener(\"change\", abToggle);\n  Array.prototype.forEach.call(form.querySelectorAll('input[name=plan]'), function(r){\n    r.addEventListener(\"change\", function(){\n      Array.prototype.forEach.call(form.querySelectorAll(\".igb-plan-opt\"), function(l){ l.classList.toggle(\"on\", l.querySelector(\"input\").checked); });\n      var need=PLAN_DAYS[plan()], ks=Object.keys(selected).sort();\n      if(plan()!==\"4plus\" && ks.length>need){ selected={}; ks.slice(0,need).forEach(function(k){ selected[k]=true; }); }   \/\/ \u591a\u3059\u304e\u308b\u5206\u306f\u5148\u982d\u304b\u3089\u6b8b\u3059\n      Array.prototype.forEach.call(cal.querySelectorAll(\".igb-day\"), function(c){ c.classList.toggle(\"on\", !!selected[c.getAttribute(\"data-d\")]); });\n      renderSel(); recalc();\n    });\n  });\n  Array.prototype.forEach.call(form.querySelectorAll(\".igb-plan-opt\"), function(l){ l.classList.toggle(\"on\", l.querySelector(\"input\").checked); });\n  if(!handlePaidLanding()){ renderCal(); recalc(); loadAvail(); }\n})();\n<\/script>\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-4d3f0401 elementor-section-stretched elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4d3f0401\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;,&quot;background_background&quot;:&quot;classic&quot;,&quot;_ha_eqh_enable&quot;:false}\">\n\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-igbtailc\" data-id=\"igbtailc\" 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-1cb0ff7 elementor-widget elementor-widget-heading\" data-id=\"1cb0ff7\" 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\">Reservation<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e472e2f igb-jp elementor-widget elementor-widget-heading\" data-id=\"e472e2f\" 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<h3 class=\"elementor-heading-title elementor-size-default\">Reservations &amp; Availability<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-34df6dd6 elementor-align-center elementor-mobile-align-justify igb-btnf elementor-widget elementor-widget-button\" data-id=\"34df6dd6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-md\" href=\"https:\/\/hotel-ishigaki.airhost.co\/en\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Check Availability<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\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>Bike Rental Explore Ishigaki Island at your own pace by bike. Bike Rental Rental Bicycles for Our Guests Hotel Ishigaki &amp; Chikonkiya offers rental bicycles for our guests.Ride to the ferry terminal, the town centre or along the coast, and enjoy Ishigaki Island at a leisurely pace. City Bike Perfect for getting around town.Free for [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_templately_pack_id":"","_templately_imported_at":"","_templately_source":"","_templately_import_session_id":"","_locale":"en_US","_original_post":"https:\/\/hotel-ishigaki.com\/?page_id=1571","footnotes":""},"class_list":["post-1606","page","type-page","status-publish","hentry","en-US"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.5 - aioseo.com -->\n\t<meta name=\"description\" content=\"Rent a city bike or cross bike during your stay at Hotel Ishigaki &amp; Chikonkiya. Book online the same day and ride to the ferry terminal, town or coast.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/hotel-ishigaki.com\/en\/bike_rental\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"\u3010\u516c\u5f0f\u3011\u30db\u30c6\u30eb\u77f3\u57a3 &amp; \u3061\u3053\u3093\u304d\u3084\u30fc - \u300e\u5cf6\u306e\u4e2d\u5fc3\u3067\u3001\u5fc3\u3068\u8eab\u4f53\u3092\u6574\u3048\u308b\u300f \u30d2\u30ce\u30ad\u304c\u9999\u308b\u9ad8\u7d1a\u30d9\u30c3\u30c9\u3001\u81ea\u7136\u3092\u611b\u3059\u308b\u6d41\u6728\u5bb6\u5177 \u81ea\u5206\u3060\u3051\u306e\u6642\u9593\u3092\u904e\u3054\u305d\u3046\u3002\" \/>\n\t\t<meta property=\"og:type\" content=\"website\" \/>\n\t\t<meta property=\"og:title\" content=\"Bike Rental in Ishigaki | Hotel Ishigaki &amp; Chikonkiya\" \/>\n\t\t<meta property=\"og:description\" content=\"Rent a city bike or cross bike during your stay at Hotel Ishigaki &amp; Chikonkiya. Book online the same day and ride to the ferry terminal, town or coast.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/hotel-ishigaki.com\/en\/bike_rental\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/hotel-ishigaki.com\/wp-content\/uploads\/2026\/10\/hotel-ishigaki-ogp-1200x630-1.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/hotel-ishigaki.com\/wp-content\/uploads\/2026\/10\/hotel-ishigaki-ogp-1200x630-1.jpg\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Bike Rental in Ishigaki | Hotel Ishigaki &amp; Chikonkiya\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Rent a city bike or cross bike during your stay at Hotel Ishigaki &amp; Chikonkiya. Book online the same day and ride to the ferry terminal, town or coast.\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/hotel-ishigaki.com\/wp-content\/uploads\/2026\/10\/hotel-ishigaki-ogp-1200x630-1.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:\\\/\\\/hotel-ishigaki.com\\\/en\\\/bike_rental\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/hotel-ishigaki.com\\\/#listItem\",\"position\":1,\"name\":\"\\u5bb6\",\"item\":\"https:\\\/\\\/hotel-ishigaki.com\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/hotel-ishigaki.com\\\/en\\\/bike_rental\\\/#listItem\",\"name\":\"BIKE RENTAL\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/hotel-ishigaki.com\\\/en\\\/bike_rental\\\/#listItem\",\"position\":2,\"name\":\"BIKE RENTAL\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/hotel-ishigaki.com\\\/#listItem\",\"name\":\"\\u5bb6\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/hotel-ishigaki.com\\\/#organization\",\"name\":\"\\u30db\\u30c6\\u30eb\\u77f3\\u57a3 & \\u3061\\u3053\\u3093\\u304d\\u3084\\u30fc\",\"description\":\"\\u300e\\u5cf6\\u306e\\u4e2d\\u5fc3\\u3067\\u3001\\u5fc3\\u3068\\u8eab\\u4f53\\u3092\\u6574\\u3048\\u308b\\u300f \\u30d2\\u30ce\\u30ad\\u304c\\u9999\\u308b\\u9ad8\\u7d1a\\u30d9\\u30c3\\u30c9\\u3001\\u81ea\\u7136\\u3092\\u611b\\u3059\\u308b\\u6d41\\u6728\\u5bb6\\u5177 \\u81ea\\u5206\\u3060\\u3051\\u306e\\u6642\\u9593\\u3092\\u904e\\u3054\\u305d\\u3046\\u3002\",\"url\":\"https:\\\/\\\/hotel-ishigaki.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/hotel-ishigaki.com\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/cropped-\\u80cc\\u666f\\u7121\\u3057\\u3061\\u3053\\u3093\\u304d\\u3084\\u30fc\\u30ed\\u30b4\\u306e\\u307f\\u5c0f.png\",\"@id\":\"https:\\\/\\\/hotel-ishigaki.com\\\/en\\\/bike_rental\\\/#organizationLogo\",\"width\":239,\"height\":239},\"image\":{\"@id\":\"https:\\\/\\\/hotel-ishigaki.com\\\/en\\\/bike_rental\\\/#organizationLogo\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/hotel-ishigaki.com\\\/en\\\/bike_rental\\\/#webpage\",\"url\":\"https:\\\/\\\/hotel-ishigaki.com\\\/en\\\/bike_rental\\\/\",\"name\":\"Bike Rental in Ishigaki | Hotel Ishigaki & Chikonkiya\",\"description\":\"Rent a city bike or cross bike during your stay at Hotel Ishigaki & Chikonkiya. Book online the same day and ride to the ferry terminal, town or coast.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/hotel-ishigaki.com\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/hotel-ishigaki.com\\\/en\\\/bike_rental\\\/#breadcrumblist\"},\"datePublished\":\"2025-07-24T17:05:13+09:00\",\"dateModified\":\"2026-10-07T16:58:08+09:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/hotel-ishigaki.com\\\/#website\",\"url\":\"https:\\\/\\\/hotel-ishigaki.com\\\/\",\"name\":\"\\u30db\\u30c6\\u30eb\\u77f3\\u57a3 & \\u3061\\u3053\\u3093\\u304d\\u3084\\u30fc\",\"description\":\"\\u300e\\u5cf6\\u306e\\u4e2d\\u5fc3\\u3067\\u3001\\u5fc3\\u3068\\u8eab\\u4f53\\u3092\\u6574\\u3048\\u308b\\u300f \\u30d2\\u30ce\\u30ad\\u304c\\u9999\\u308b\\u9ad8\\u7d1a\\u30d9\\u30c3\\u30c9\\u3001\\u81ea\\u7136\\u3092\\u611b\\u3059\\u308b\\u6d41\\u6728\\u5bb6\\u5177 \\u81ea\\u5206\\u3060\\u3051\\u306e\\u6642\\u9593\\u3092\\u904e\\u3054\\u305d\\u3046\\u3002\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/hotel-ishigaki.com\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Bike Rental in Ishigaki | Hotel Ishigaki & Chikonkiya","description":"Rent a city bike or cross bike during your stay at Hotel Ishigaki & Chikonkiya. Book online the same day and ride to the ferry terminal, town or coast.","canonical_url":"https:\/\/hotel-ishigaki.com\/en\/bike_rental\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/hotel-ishigaki.com\/en\/bike_rental\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/hotel-ishigaki.com\/#listItem","position":1,"name":"\u5bb6","item":"https:\/\/hotel-ishigaki.com\/","nextItem":{"@type":"ListItem","@id":"https:\/\/hotel-ishigaki.com\/en\/bike_rental\/#listItem","name":"BIKE RENTAL"}},{"@type":"ListItem","@id":"https:\/\/hotel-ishigaki.com\/en\/bike_rental\/#listItem","position":2,"name":"BIKE RENTAL","previousItem":{"@type":"ListItem","@id":"https:\/\/hotel-ishigaki.com\/#listItem","name":"\u5bb6"}}]},{"@type":"Organization","@id":"https:\/\/hotel-ishigaki.com\/#organization","name":"\u30db\u30c6\u30eb\u77f3\u57a3 & \u3061\u3053\u3093\u304d\u3084\u30fc","description":"\u300e\u5cf6\u306e\u4e2d\u5fc3\u3067\u3001\u5fc3\u3068\u8eab\u4f53\u3092\u6574\u3048\u308b\u300f \u30d2\u30ce\u30ad\u304c\u9999\u308b\u9ad8\u7d1a\u30d9\u30c3\u30c9\u3001\u81ea\u7136\u3092\u611b\u3059\u308b\u6d41\u6728\u5bb6\u5177 \u81ea\u5206\u3060\u3051\u306e\u6642\u9593\u3092\u904e\u3054\u305d\u3046\u3002","url":"https:\/\/hotel-ishigaki.com\/","logo":{"@type":"ImageObject","url":"https:\/\/hotel-ishigaki.com\/wp-content\/uploads\/2023\/10\/cropped-\u80cc\u666f\u7121\u3057\u3061\u3053\u3093\u304d\u3084\u30fc\u30ed\u30b4\u306e\u307f\u5c0f.png","@id":"https:\/\/hotel-ishigaki.com\/en\/bike_rental\/#organizationLogo","width":239,"height":239},"image":{"@id":"https:\/\/hotel-ishigaki.com\/en\/bike_rental\/#organizationLogo"}},{"@type":"WebPage","@id":"https:\/\/hotel-ishigaki.com\/en\/bike_rental\/#webpage","url":"https:\/\/hotel-ishigaki.com\/en\/bike_rental\/","name":"Bike Rental in Ishigaki | Hotel Ishigaki & Chikonkiya","description":"Rent a city bike or cross bike during your stay at Hotel Ishigaki & Chikonkiya. Book online the same day and ride to the ferry terminal, town or coast.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/hotel-ishigaki.com\/#website"},"breadcrumb":{"@id":"https:\/\/hotel-ishigaki.com\/en\/bike_rental\/#breadcrumblist"},"datePublished":"2025-07-24T17:05:13+09:00","dateModified":"2026-10-07T16:58:08+09:00"},{"@type":"WebSite","@id":"https:\/\/hotel-ishigaki.com\/#website","url":"https:\/\/hotel-ishigaki.com\/","name":"\u30db\u30c6\u30eb\u77f3\u57a3 & \u3061\u3053\u3093\u304d\u3084\u30fc","description":"\u300e\u5cf6\u306e\u4e2d\u5fc3\u3067\u3001\u5fc3\u3068\u8eab\u4f53\u3092\u6574\u3048\u308b\u300f \u30d2\u30ce\u30ad\u304c\u9999\u308b\u9ad8\u7d1a\u30d9\u30c3\u30c9\u3001\u81ea\u7136\u3092\u611b\u3059\u308b\u6d41\u6728\u5bb6\u5177 \u81ea\u5206\u3060\u3051\u306e\u6642\u9593\u3092\u904e\u3054\u305d\u3046\u3002","inLanguage":"en-US","publisher":{"@id":"https:\/\/hotel-ishigaki.com\/#organization"}}]},"og:locale":"en_US","og:site_name":"\u3010\u516c\u5f0f\u3011\u30db\u30c6\u30eb\u77f3\u57a3 &amp; \u3061\u3053\u3093\u304d\u3084\u30fc - \u300e\u5cf6\u306e\u4e2d\u5fc3\u3067\u3001\u5fc3\u3068\u8eab\u4f53\u3092\u6574\u3048\u308b\u300f \u30d2\u30ce\u30ad\u304c\u9999\u308b\u9ad8\u7d1a\u30d9\u30c3\u30c9\u3001\u81ea\u7136\u3092\u611b\u3059\u308b\u6d41\u6728\u5bb6\u5177 \u81ea\u5206\u3060\u3051\u306e\u6642\u9593\u3092\u904e\u3054\u305d\u3046\u3002","og:type":"website","og:title":"Bike Rental in Ishigaki | Hotel Ishigaki &amp; Chikonkiya","og:description":"Rent a city bike or cross bike during your stay at Hotel Ishigaki &amp; Chikonkiya. Book online the same day and ride to the ferry terminal, town or coast.","og:url":"https:\/\/hotel-ishigaki.com\/en\/bike_rental\/","og:image":"https:\/\/hotel-ishigaki.com\/wp-content\/uploads\/2026\/10\/hotel-ishigaki-ogp-1200x630-1.jpg","og:image:secure_url":"https:\/\/hotel-ishigaki.com\/wp-content\/uploads\/2026\/10\/hotel-ishigaki-ogp-1200x630-1.jpg","twitter:card":"summary_large_image","twitter:title":"Bike Rental in Ishigaki | Hotel Ishigaki &amp; Chikonkiya","twitter:description":"Rent a city bike or cross bike during your stay at Hotel Ishigaki &amp; Chikonkiya. Book online the same day and ride to the ferry terminal, town or coast.","twitter:image":"https:\/\/hotel-ishigaki.com\/wp-content\/uploads\/2026\/10\/hotel-ishigaki-ogp-1200x630-1.jpg"},"aioseo_meta_data":{"post_id":"1606","title":"Bike Rental in Ishigaki | Hotel Ishigaki & Chikonkiya","description":"Rent a city bike or cross bike during your stay at Hotel Ishigaki & Chikonkiya. Book online the same day and ride to the ferry terminal, town or coast.","keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":"Bike Rental in Ishigaki | Hotel Ishigaki & Chikonkiya","og_description":"Rent a city bike or cross bike during your stay at Hotel Ishigaki & Chikonkiya. Book online the same day and ride to the ferry terminal, town or coast.","og_object_type":"website","og_image_type":"custom_image","og_image_url":"https:\/\/hotel-ishigaki.com\/wp-content\/uploads\/2026\/10\/hotel-ishigaki-ogp-1200x630-1.jpg","og_image_width":"0","og_image_height":"0","og_image_custom_url":"https:\/\/hotel-ishigaki.com\/wp-content\/uploads\/2026\/10\/hotel-ishigaki-ogp-1200x630-1.jpg","og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":true,"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":"2025-07-24 08:08:53","updated":"2026-10-07 09:57:22","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:\/\/hotel-ishigaki.com\/\" title=\"\u5bb6\">\u5bb6<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tBIKE RENTAL\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"\u5bb6","link":"https:\/\/hotel-ishigaki.com\/"},{"label":"BIKE RENTAL","link":"https:\/\/hotel-ishigaki.com\/en\/bike_rental\/"}],"_links":{"self":[{"href":"https:\/\/hotel-ishigaki.com\/wp-json\/wp\/v2\/pages\/1606","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hotel-ishigaki.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hotel-ishigaki.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/hotel-ishigaki.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hotel-ishigaki.com\/wp-json\/wp\/v2\/comments?post=1606"}],"version-history":[{"count":36,"href":"https:\/\/hotel-ishigaki.com\/wp-json\/wp\/v2\/pages\/1606\/revisions"}],"predecessor-version":[{"id":3078,"href":"https:\/\/hotel-ishigaki.com\/wp-json\/wp\/v2\/pages\/1606\/revisions\/3078"}],"wp:attachment":[{"href":"https:\/\/hotel-ishigaki.com\/wp-json\/wp\/v2\/media?parent=1606"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}