{"id":29836,"date":"2026-01-31T11:21:31","date_gmt":"2026-01-31T16:21:31","guid":{"rendered":"https:\/\/www.portablebar.com\/?page_id=29836"},"modified":"2026-02-09T16:01:34","modified_gmt":"2026-02-09T21:01:34","slug":"mobile-bartending-laws","status":"publish","type":"page","link":"https:\/\/www.portablebar.com\/ja\/mobile-bartending-laws\/","title":{"rendered":"\u5dde\u5225\u30e2\u30d0\u30a4\u30eb\u30d0\u30fc\u30c6\u30f3\u30c0\u30fc\u6cd5\uff1a\u7a76\u6975\u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u30ac\u30a4\u30c9"},"content":{"rendered":"<p><!DOCTYPE html><br \/>\n<html lang=\"en\"><br \/>\n<head><br \/>\n    <meta charset=\"UTF-8\"><br \/>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><br \/>\n    <title>\u5dde\u5225\u30e2\u30d0\u30a4\u30eb\u30d0\u30fc\u30c6\u30f3\u30c0\u30fc\u6cd5\uff5cPortableBar.com<\/title><br \/>\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script><br \/>\n    <script>\n        tailwind.config = {\n            important: true,\n        }\n    <\/script><\/p>\n<style>\n        \/* Typography Overrides *\/\n        .pb-hub h2 { margin-top: 2rem; margin-bottom: 1rem; line-height: 1.2; color: #1e293b; }\n        .pb-hub p { margin-bottom: 1.2rem; }\n        .pb-hub a { text-decoration: none; transition: all 0.2s; }<\/p>\n<p>        \/* Map Container *\/\n        #map-container {\n            background: #f8fafc;\n            border-radius: 12px;\n            padding: 20px;\n            border: 2px solid #e2e8f0;\n        }<\/p>\n<p>        \/* State Styling *\/\n        .state {\n            stroke: #ffffff;\n            stroke-width: 1.5;\n            stroke-linejoin: round;\n            cursor: pointer;\n            transition: all 0.2s ease;\n        }<\/p>\n<p>        .state.active {\n            fill: #3b82f6;\n        }<\/p>\n<p>        .state.active:hover {\n            fill: #2563eb;\n            stroke-width: 2.5;\n            filter: drop-shadow(0 0 8px rgba(59, 130, 246, 0.6));\n        }<\/p>\n<p>        .state.inactive {\n            fill: #cbd5e1;\n            cursor: not-allowed;\n        }<\/p>\n<p>        .state.inactive:hover {\n            fill: #94a3b8;\n        }<\/p>\n<p>        \/* State Labels *\/\n        .state-label {\n            font-size: 10px;\n            font-weight: 700;\n            fill: #1f2937;\n            pointer-events: none;\n            text-anchor: middle;\n            dominant-baseline: middle;\n        }<\/p>\n<p>        \/* Tooltip *\/\n        .map-tooltip {\n            position: absolute;\n            background: white;\n            border: 3px solid #3b82f6;\n            border-radius: 10px;\n            padding: 14px 18px;\n            box-shadow: 0 6px 20px rgba(0,0,0,0.15);\n            pointer-events: none;\n            opacity: 0;\n            transition: opacity 0.2s;\n            z-index: 1000;\n            min-width: 220px;\n        }<\/p>\n<p>        .map-tooltip.show {\n            opacity: 1;\n        }<\/p>\n<p>        .map-tooltip h3 {\n            font-size: 16px;\n            font-weight: 700;\n            margin-bottom: 8px;\n            color: #1e293b;\n            border-bottom: 2px solid #3b82f6;\n            padding-bottom: 4px;\n        }<\/p>\n<p>        .map-tooltip .available {\n            color: #3b82f6;\n            font-weight: 600;\n            font-size: 13px;\n        }<\/p>\n<p>        .map-tooltip .coming-soon {\n            color: #94a3b8;\n            font-weight: 600;\n            font-size: 13px;\n        }<\/p>\n<p>        \/* State Card Styling *\/\n        .state-card { \n            transition: all 0.2s; \n        }<\/p>\n<p>        .state-card:hover { \n            transform: translateY(-2px); \n            box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); \n            border-color: #3b82f6; \n        }<\/p>\n<p>        .state-card.inactive { \n            opacity: 0.6; \n            cursor: default; \n        }<\/p>\n<p>        .state-card.inactive:hover { \n            transform: none; \n            box-shadow: none; \n            border-color: #e2e8f0; \n        }<\/p>\n<p>        \/* Mobile hide\/show *\/\n        @media (max-width: 1023px) {\n            #desktop-map-section {\n                display: none !important;\n            }\n            #mobile-list-section {\n                display: block !important;\n            }\n        }<\/p>\n<p>        @media (min-width: 1024px) {\n            #desktop-map-section {\n                display: block !important;\n            }\n            #mobile-list-section {\n                display: none !important;\n            }\n        }<\/p>\n<p>        \/* Search Box *\/\n        .search-box {\n            position: relative;\n        }<\/p>\n<p>        .search-icon {\n            position: absolute;\n            left: 12px;\n            top: 50%;\n            transform: translateY(-50%);\n            color: #94a3b8;\n        }\n    <\/style>\n<p><\/head><br \/>\n<body class=\"bg-white\"><\/p>\n<p>    <script>\n            const STATE_CONFIG = {\n            'alabama': { name: 'Alabama', abbr: 'AL', active: true},\n            'alaska': { name: 'Alaska', abbr: 'AK', active: false },\n            'arizona': { name: 'Arizona', abbr: 'AZ', active: true },\n            'arkansas': { name: 'Arkansas', abbr: 'AR', active: false },\n            'california': { name: 'California', abbr: 'CA', active: true },\n            'colorado': { name: 'Colorado', abbr: 'CO', active: true },\n            'connecticut': { name: 'Connecticut', abbr: 'CT', active: true },\n            'delaware': { name: 'Delaware', abbr: 'DE', active: false },\n            'florida': { name: 'Florida', abbr: 'FL', active: true },\n            'georgia': { name: 'Georgia', abbr: 'GA', active: true },\n            'hawaii': { name: 'Hawaii', abbr: 'HI', active: false },\n            'idaho': { name: 'Idaho', abbr: 'ID', active: false },\n            'illinois': { name: 'Illinois', abbr: 'IL', active: true },\n            'indiana': { name: 'Indiana', abbr: 'IN', active: true },\n            'iowa': { name: 'Iowa', abbr: 'IA', active: false },\n            'kansas': { name: 'Kansas', abbr: 'KS', active: false },\n            'kentucky': { name: 'Kentucky', abbr: 'KY', active: true },\n            'louisiana': { name: 'Louisiana', abbr: 'LA', active: true },\n            'maine': { name: 'Maine', abbr: 'ME', active: false },\n            'maryland': { name: 'Maryland', abbr: 'MD', active: true },\n            'massachusetts': { name: 'Massachusetts', abbr: 'MA', active: true },\n            'michigan': { name: 'Michigan', abbr: 'MI', active: true },\n            'minnesota': { name: 'Minnesota', abbr: 'MN', active: false },\n            'mississippi': { name: 'Mississippi', abbr: 'MS', active: true },\n            'missouri': { name: 'Missouri', abbr: 'MO', active: false },\n            'montana': { name: 'Montana', abbr: 'MT', active: false },\n            'nebraska': { name: 'Nebraska', abbr: 'NE', active: false },\n            'nevada': { name: 'Nevada', abbr: 'NV', active: true },\n            'new-hampshire': { name: 'New Hampshire', abbr: 'NH', active: false },\n            'new-jersey': { name: 'New Jersey', abbr: 'NJ', active: true },\n            'new-mexico': { name: 'New Mexico', abbr: 'NM', active: false },\n            'new-york': { name: 'New York', abbr: 'NY', active: true },\n            'north-carolina': { name: 'North Carolina', abbr: 'NC', active: true },\n            'north-dakota': { name: 'North Dakota', abbr: 'ND', active: false },\n            'ohio': { name: 'Ohio', abbr: 'OH', active: true },\n            'oklahoma': { name: 'Oklahoma', abbr: 'OK', active: false },\n            'oregon': { name: 'Oregon', abbr: 'OR', active: true },\n            'pennsylvania': { name: 'Pennsylvania', abbr: 'PA', active: true },\n            'rhode-island': { name: 'Rhode Island', abbr: 'RI', active: false },\n            'south-carolina': { name: 'South Carolina', abbr: 'SC', active: true },\n            'south-dakota': { name: 'South Dakota', abbr: 'SD', active: false },\n            'tennessee': { name: 'Tennessee', abbr: 'TN', active: true },\n            'texas': { name: 'Texas', abbr: 'TX', active: true },\n            'utah': { name: 'Utah', abbr: 'UT', active: false },\n            'vermont': { name: 'Vermont', abbr: 'VT', active: true },\n            'virginia': { name: 'Virginia', abbr: 'VA', active: true },\n            'washington': { name: 'Washington', abbr: 'WA', active: true },\n            'west-virginia': { name: 'West Virginia', abbr: 'WV', active: true },\n            'wisconsin': { name: 'Wisconsin', abbr: 'WI', active: false },\n            'wyoming': { name: 'Wyoming', abbr: 'WY', active: false }\n        };<\/p>\n<p>        \/\/ Create reverse lookup by abbreviation\n        const stateByAbbr = {};\n        Object.entries(STATE_CONFIG).forEach(([slug, data]) => {\n            stateByAbbr[data.abbr] = { ...data, slug };\n        });\n    <\/script><\/p>\n<div class=\"pb-hub w-full bg-white p-6 md:p-12 text-slate-800 font-sans leading-relaxed shadow-sm my-8\">\n<p>        <!-- Breadcrumb --><\/p>\n<nav class=\"text-sm text-slate-500 mb-6 flex items-center\">\n            <a class=\"hover:text-blue-600 transition-colors\" href=\"\/ja\/\">\u30db\u30fc\u30e0<\/a><br \/>\n            <span class=\"mx-2 text-slate-300\">\/<\/span><br \/>\n            <span class=\"text-slate-800 font-semibold\">\u30e2\u30d0\u30a4\u30eb\u30fb\u30d0\u30fc\u30c6\u30f3\u30c7\u30a3\u30f3\u30b0\u6cd5<\/span><br \/>\n        <\/nav>\n<p>        <!-- Header --><\/p>\n<header class=\"border-b-4 border-blue-900 pb-8 mb-10 text-center max-w-4xl mx-auto\">\n<p class=\"text-sm font-bold text-blue-600 uppercase tracking-widest mb-2\">\u56fd\u5bb6\u898f\u5236\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9<\/p>\n<h1 class=\"text-4xl md:text-5xl font-extrabold text-slate-900 mb-6\">\u5dde\u5225\u30e2\u30d0\u30a4\u30eb\u30fb\u30d0\u30fc\u30c6\u30f3\u30c7\u30a3\u30f3\u30b0\u6cd5<\/h1>\n<p class=\"text-xl text-slate-600\">\u9152\u7a0e\u6cd5\u306f\u5730\u57df\u306b\u3088\u3063\u3066\u7570\u306a\u308b\u3002\u30c6\u30ad\u30b5\u30b9\u3067\u306f\u6709\u52b9\u3067\u3082\u3001\u30cb\u30e5\u30fc\u30e8\u30fc\u30af\u3067\u306f\u9055\u6cd5\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u79c1\u305f\u3061\u306f\u3001\u3042\u306a\u305f\u304c\u9152\u985e\u8ca9\u58f2\u696d\u8005\u3067\u3042\u308d\u3046\u3068\u306a\u304b\u308d\u3046\u3068\u3001\u5408\u6cd5\u7684\u306b\u9152\u985e\u3092\u8ca9\u58f2\u3067\u304d\u308b\u3088\u3046\u3001\u7a76\u6975\u306e\u30ac\u30a4\u30c9\u3092\u4f5c\u6210\u3057\u305f\u3002 <strong>\u30c9\u30e9\u30a4\u30cf\u30a4\u30e4\u30fc<\/strong> \u30b5\u30fc\u30d3\u30b9\u307e\u305f\u306f <strong>\u30a6\u30a7\u30c3\u30c8\u30fb\u30cf\u30a4\u30e4\u30fc<\/strong> \u30b1\u30fc\u30bf\u30ea\u30f3\u30b0.<\/p>\n<\/header>\n<p>        <!-- Dry vs Wet Explainer --><\/p>\n<section class=\"grid md:grid-cols-2 gap-8 mb-16 max-w-5xl mx-auto\">\n<div class=\"bg-slate-50 p-6 rounded-lg border border-slate-200\">\n<h3 class=\"text-xl font-bold text-green-700 mb-2\">\u30c9\u30e9\u30a4\u30fb\u30cf\u30a4\u30e4\u30fc\u3068\u306f\uff1f<\/h3>\n<p class=\"text-sm text-slate-600 mb-0\">\u3042\u306a\u305f\u306f\u52b4\u50cd\u529b\uff08\u30d0\u30fc\u30c6\u30f3\u30c0\u30fc\uff09\u3068\u8a2d\u5099\uff08\u30dd\u30fc\u30bf\u30d6\u30eb\u30d0\u30fc\u3001\u30c4\u30fc\u30eb\uff09\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u305d\u306e <strong>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8<\/strong> \u304c\u9152\u3092\u8cfc\u5165\u3059\u308b\u3002\u307b\u3068\u3093\u3069\u306e\u5dde\u3067\u306f\u3001\u9152\u985e\u8ca9\u58f2\u514d\u8a31\u306f\u5fc5\u8981\u306a\u3044\u304c\u3001\u300c\u8ca9\u58f2\u7981\u6b62\u300d\u306e\u898f\u5247\u3092\u53b3\u5b88\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002.<\/p>\n<\/p><\/div>\n<div class=\"bg-slate-50 p-6 rounded-lg border border-slate-200\">\n<h3 class=\"text-xl font-bold text-red-700 mb-2\">\u30a6\u30a7\u30c3\u30c8\u30fb\u30cf\u30a4\u30e4\u30fc\u3068\u306f\uff1f<\/h3>\n<p class=\"text-sm text-slate-600 mb-0\">\u30a2\u30eb\u30b3\u30fc\u30eb\u3001\u52b4\u50cd\u529b\u3001\u8cac\u4efb\u3092\u63d0\u4f9b\u3059\u308b\u3002\u3053\u306e\u5834\u5408\u3001\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u5dde\u767a\u884c\u306e <strong>\u9152\u985e\u8ca9\u58f2\u514d\u8a31<\/strong> \u307e\u305f\u306f <strong>\u30b1\u30fc\u30bf\u30ea\u30f3\u30b0\u8a31\u53ef\u8a3c<\/strong>, \u3055\u3089\u306b\u591a\u984d\u306e\u4fdd\u967a\u304c\u9069\u7528\u3055\u308c\u308b\u3002.<\/p>\n<\/p><\/div>\n<\/section>\n<p>        <!-- Desktop: Interactive Map --><\/p>\n<section id=\"desktop-map-section\" class=\"mb-16\" style=\"display: none;\">\n<h2 class=\"text-3xl font-bold text-slate-900 mb-8 text-center\">\u5dde\u3092\u9078\u629e<\/h2>\n<div class=\"max-w-6xl mx-auto\">\n<div id=\"map-container\">\n                    <svg id=\"us-map\" viewbox=\"0 0 960 600\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" preserveaspectratio=\"xMidYMid meet\">\n                        <!-- Map loaded by JavaScript -->\n                    <\/svg><\/p>\n<div id=\"map-tooltip\" class=\"map-tooltip\"><\/div>\n<\/p><\/div>\n<p class=\"text-center text-slate-400 text-sm mt-6\">\n                    <span class=\"inline-block mr-4\"><span class=\"inline-block w-3 h-3 bg-blue-500 rounded-sm mr-1\"><\/span> \u767a\u58f2\u4e2d<\/span><br \/>\n                    <span class=\"inline-block\"><span class=\"inline-block w-3 h-3 bg-slate-300 rounded-sm mr-1\"><\/span> \u8fd1\u65e5\u516c\u958b<\/span>\n                <\/p>\n<p class=\"text-center text-slate-400 text-sm mt-2\"><em><strong><span id=\"active-count-desktop\">0<\/span> 50\u5dde\u306e\u3046\u3061<\/strong> \u5229\u7528\u53ef\u80fd\u3067\u3059\u3002\u3053\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u6bce\u9031\u66f4\u65b0\u3057\u3066\u3044\u307e\u3059\u3002.<\/em><\/p>\n<\/p><\/div>\n<\/section>\n<p>        <!-- Mobile: State Cards --><\/p>\n<section id=\"mobile-list-section\" class=\"mb-16\" style=\"display: none;\">\n<h2 class=\"text-3xl font-bold text-slate-900 mb-8 text-center\">\u5dde\u3092\u9078\u629e<\/h2>\n<p>            <!-- Search Box --><\/p>\n<div class=\"search-box mb-6 max-w-md mx-auto\">\n                <svg class=\"search-icon w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewbox=\"0 0 24 24\">\n                    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"><\/path>\n                <\/svg><br \/>\n                <input \n                    type=\"text\" \n                    id=\"state-search\" \n                    placeholder=\"\u3042\u306a\u305f\u306e\u5dde\u3092\u691c\u7d22...\" \n                    class=\"w-full pl-10 pr-4 py-3 border-2 border-slate-200 rounded-lg focus:border-blue-600 focus:outline-none\"\n                \/>\n            <\/div>\n<p>            <!-- State Cards Grid --><\/p>\n<div id=\"state-cards-grid\" class=\"grid grid-cols-2 md:grid-cols-4 lg:grid-cols-5 gap-4\">\n                <!-- Generated by JavaScript -->\n            <\/div>\n<p class=\"text-center text-slate-400 text-sm mt-8\"><em>\u3042\u306a\u305f\u306e\u5dde\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u304b\uff1f\u3053\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u6bce\u9031\u66f4\u65b0\u3057\u3066\u3044\u307e\u3059\u3002\u3059\u3050\u306b\u30c1\u30a7\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002.<\/em><\/p>\n<\/section>\n<p>        <!-- CTA Section --><\/p>\n<section class=\"bg-slate-900 text-white p-8 rounded-xl text-center\">\n<h2 class=\"text-2xl font-bold text-white mb-4 mt-0\">\u898f\u5236\u306f\u8907\u96d1\u3067\u3059\u304c\u3001\u3042\u306a\u305f\u306e\u30d0\u30fc\u306f\u305d\u3046\u3067\u3042\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002.<\/h2>\n<p class=\"text-slate-300 max-w-2xl mx-auto mb-8\">\u8a31\u8a8d\u53ef\u3084\u4fdd\u967a\u306e\u4ef6\u3060\u3051\u3067\u3082\u5341\u5206\u5927\u5909\u3067\u3057\u3087\u3046\u3002\u5c4a\u3044\u3066\u3001\u3059\u3050\u306b\u4f7f\u3048\u3066\u3001\u9577\u5e74\u306e\u7d4c\u9a13\u304c\u3042\u308b\u3088\u3046\u306b\u898b\u305b\u3089\u308c\u308b\u6a5f\u6750\u3092\u624b\u306b\u5165\u308c\u307e\u3057\u3087\u3046\u3002.<\/p>\n<p>            <a class=\"inline-block bg-blue-600 hover:bg-blue-500 text-white font-bold py-3 px-8 rounded-full transition-all\" href=\"\/ja\/\"><br \/>\n                \u81ea\u3089\u58f2\u308c\u308b\u30d0\u30fc<br \/>\n            <\/a><br \/>\n        <\/section>\n<\/p><\/div>\n<p>    <!-- Load D3 and TopoJSON --><br \/>\n    <script src=\"https:\/\/d3js.org\/d3.v7.min.js\"><\/script><br \/>\n    <script src=\"https:\/\/d3js.org\/topojson.v3.min.js\"><\/script><\/p>\n<p>    <script>\n        \/\/ Initialize on page load\n        document.addEventListener('DOMContentLoaded', () => {\n            loadUSMap();\n            generateStateCards();\n            setupSearch();\n            updateActiveCount();\n        });<\/p>\n<p>        \/\/ Load US map with D3 and TopoJSON\n        async function loadUSMap() {\n            try {\n                const us = await d3.json('https:\/\/cdn.jsdelivr.net\/npm\/us-atlas@3\/states-10m.json');<\/p>\n<p>                const svg = d3.select('#us-map');\n                const width = 960;\n                const height = 600;<\/p>\n<p>                const projection = d3.geoAlbersUsa()\n                    .scale(1280)\n                    .translate([width \/ 2, height \/ 2]);<\/p>\n<p>                const path = d3.geoPath().projection(projection);\n                const states = topojson.feature(us, us.objects.states);<\/p>\n<p>                const stateIdToAbbr = {\n                    '01': 'AL', '02': 'AK', '04': 'AZ', '05': 'AR', '06': 'CA', '08': 'CO', '09': 'CT', '10': 'DE',\n                    '12': 'FL', '13': 'GA', '15': 'HI', '16': 'ID', '17': 'IL', '18': 'IN', '19': 'IA', '20': 'KS',\n                    '21': 'KY', '22': 'LA', '23': 'ME', '24': 'MD', '25': 'MA', '26': 'MI', '27': 'MN', '28': 'MS',\n                    '29': 'MO', '30': 'MT', '31': 'NE', '32': 'NV', '33': 'NH', '34': 'NJ', '35': 'NM', '36': 'NY',\n                    '37': 'NC', '38': 'ND', '39': 'OH', '40': 'OK', '41': 'OR', '42': 'PA', '44': 'RI', '45': 'SC',\n                    '46': 'SD', '47': 'TN', '48': 'TX', '49': 'UT', '50': 'VT', '51': 'VA', '53': 'WA', '54': 'WV',\n                    '55': 'WI', '56': 'WY'\n                };<\/p>\n<p>                svg.selectAll('path')\n                    .data(states.features)\n                    .enter()\n                    .append('path')\n                    .attr('d', path)\n                    .attr('class', d => {\n                        const abbr = stateIdToAbbr[d.id];\n                        const stateData = stateByAbbr[abbr];\n                        return `state ${stateData && stateData.active ? 'active' : 'inactive'}`;\n                    })\n                    .attr('data-state-id', d => d.id)\n                    .attr('data-abbr', d => stateIdToAbbr[d.id])\n                    .on('click', function(event, d) {\n                        const abbr = stateIdToAbbr[d.id];\n                        const stateData = stateByAbbr[abbr];\n                        if (stateData && stateData.active) {\n                            window.location.href = `\/mobile-bartending-laws\/${stateData.slug}\/`;\n                        }\n                    })\n                    .on('mouseenter', function(event, d) {\n                        const abbr = stateIdToAbbr[d.id];\n                        const stateData = stateByAbbr[abbr];\n                        if (stateData) {\n                            showTooltip(event, stateData);\n                        }\n                    })\n                    .on('mousemove', moveTooltip)\n                    .on('mouseleave', hideTooltip);<\/p>\n<p>                svg.selectAll('text')\n                    .data(states.features)\n                    .enter()\n                    .append('text')\n                    .attr('class', 'state-label')\n                    .attr('transform', d => `translate(${path.centroid(d)})`)\n                    .text(d => stateIdToAbbr[d.id]);<\/p>\n<p>            } catch (error) {\n                console.error('Error loading map:', error);\n            }\n        }<\/p>\n<p>        \/\/ Show tooltip\n        function showTooltip(e, data) {\n            const tooltip = document.getElementById('map-tooltip');\n            let html = `<\/p>\n<h3>${data.name}<\/h3>\n<p>`;<\/p>\n<p>            if (data.active) {\n                html += `<\/p>\n<p class=\"available\">Guide Available \u2192<\/p>\n<p>`;\n            } else {\n                html += `<\/p>\n<p class=\"coming-soon\">Coming Soon<\/p>\n<p>`;\n            }<\/p>\n<p>            tooltip.innerHTML = html;\n            tooltip.classList.add('show');\n        }<\/p>\n<p>        function moveTooltip(e) {\n            const tooltip = document.getElementById('map-tooltip');\n            tooltip.style.left = (e.pageX + 15) + 'px';\n            tooltip.style.top = (e.pageY + 15) + 'px';\n        }<\/p>\n<p>        function hideTooltip() {\n            document.getElementById('map-tooltip').classList.remove('show');\n        }<\/p>\n<p>        \/\/ Generate state cards for mobile\n        function generateStateCards() {\n            const container = document.getElementById('state-cards-grid');\n            const states = Object.entries(STATE_CONFIG).sort((a, b) => a[1].name.localeCompare(b[1].name));<\/p>\n<p>            container.innerHTML = states.map(([slug, data]) => {\n                if (data.active) {\n                    return `\n                        <a class=\"state-card block bg-blue-50 border-2 border-blue-200 p-4 rounded-lg text-center group\" href=\"\/mobile-bartending-laws\/${slug}\/\">\n                            <span class=\"block font-bold text-blue-900 text-lg group-hover:text-blue-700\">${data.name}<\/span>\n                            <span class=\"text-xs font-bold text-blue-600 uppercase tracking-wide\">View Guide \u2192<\/span>\n                        <\/a>\n                    `;\n                } else {\n                    return `<\/p>\n<div class=\"state-card inactive bg-slate-50 border border-slate-200 p-4 rounded-lg text-center\">\n                            <span class=\"block font-bold text-slate-400\">${data.name}<\/span>\n                            <span class=\"text-xs text-slate-400\">Coming Soon<\/span>\n                        <\/div>\n<p>                    `;\n                }\n            }).join('');\n        }<\/p>\n<p>        \/\/ Search functionality\n        function setupSearch() {\n            const searchInput = document.getElementById('state-search');\n            searchInput.addEventListener('input', (e) => {\n                const term = e.target.value.toLowerCase();\n                document.querySelectorAll('.state-card').forEach(card => {\n                    const name = card.querySelector('span').textContent.toLowerCase();\n                    card.style.display = name.includes(term) ? 'block' : 'none';\n                });\n            });\n        }<\/p>\n<p>        \/\/ Update active count\n        function updateActiveCount() {\n            const count = Object.values(STATE_CONFIG).filter(s => s.active).length;\n            const desktopCounter = document.getElementById('active-count-desktop');\n            if (desktopCounter) {\n                desktopCounter.textContent = count;\n            }\n        }\n    <\/script><\/p>\n<p><\/body><br \/>\n<\/html><\/p>","protected":false},"excerpt":{"rendered":"<p>\u5dde\u5225\u306e\u79fb\u52d5\u5f0f\u30d0\u30fc\u30c6\u30f3\u30c0\u30fc\u6cd5\uff5cPortableBar.com \u30db\u30fc\u30e0 \/ \u79fb\u52d5\u5f0f\u30d0\u30fc\u30c6\u30f3\u30c0\u30fc\u6cd5 \u5168\u56fd\u898f\u5236\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u5dde\u5225\u306e\u79fb\u52d5\u5f0f\u30d0\u30fc\u30c6\u30f3\u30c0\u30fc\u6cd5 \u9152\u7a0e\u6cd5\u306f\u5730\u57df\u306b\u3088\u3063\u3066\u7570\u306a\u308a\u307e\u3059\u3002\u30c6\u30ad\u30b5\u30b9\u5dde\u3067\u306f\u6709\u52b9\u3067\u3082\u3001\u30cb\u30e5\u30fc\u30e8\u30fc\u30af\u5dde\u3067\u306f\u9055\u6cd5\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u30c9\u30e9\u30a4\u30cf\u30a4\u30e4\u30fc\u30b5\u30fc\u30d3\u30b9\u3067\u3042\u308c\u3001\u30a6\u30a7\u30c3\u30c8\u30cf\u30a4\u30e4\u30fc\u30b1\u30fc\u30bf\u30ea\u30f3\u30b0\u3067\u3042\u308c\u3001\u5408\u6cd5\u7684\u306b\u904b\u55b6\u3059\u308b\u305f\u3081\u306e\u7a76\u6975\u306e\u30ac\u30a4\u30c9\u3092\u307e\u3068\u3081\u307e\u3057\u305f\u3002\u30c9\u30e9\u30a4\u30fb\u30cf\u30a4\u30e4\u30fc\u3068\u306f\uff1f\u3042\u306a\u305f\u306f\u52b4\u50cd\u529b\uff08\u30d0\u30fc\u30c6\u30f3\u30c0\u30fc\uff09\u3068\u8a2d\u5099\uff08\u30dd\u30fc\u30bf\u30d6\u30eb\u30d0\u30fc\u3001\u30c4\u30fc\u30eb\uff09\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u304a\u5ba2\u69d8\u306f\u304a\u9152\u3092\u8cfc\u5165\u3057\u307e\u3059\u3002\u307b\u3068\u3093\u3069\u306e\u5dde\u3067\u306f\u3001\u9152\u985e\u8ca9\u58f2\u514d\u8a31\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u300c\u8ca9\u58f2\u7981\u6b62\u300d\u306e\u898f\u5247\u3092\u53b3\u5b88\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30a6\u30a7\u30c3\u30c8\u30fb\u30cf\u30a4\u30e4\u30fc\u3068\u306f\uff1f\u30a2\u30eb\u30b3\u30fc\u30eb\u3001\u52b4\u50cd\u529b\u3001\u8cac\u4efb\u3092\u63d0\u4f9b\u3059\u308b\u3002\u3053\u308c\u306f\u307b\u3068\u3093\u3069<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-tailwind-canvas.php","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-29836","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Mobile Bartending Laws by State: The Ultimate Licensing Guide | PortableBar.com<\/title>\n<meta name=\"description\" content=\"Starting a mobile bar? Don&#039;t guess on permits. Browse our comprehensive state-by-state guide to liquor laws, licensing requirements, and Dry Hire vs. Wet Hire rules.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.portablebar.com\/ja\/mobile-bartending-laws\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mobile Bartending Laws by State: The Ultimate Licensing Guide | PortableBar.com\" \/>\n<meta property=\"og:description\" content=\"Starting a mobile bar? Don&#039;t guess on permits. Browse our comprehensive state-by-state guide to liquor laws, licensing requirements, and Dry Hire vs. Wet Hire rules.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.portablebar.com\/ja\/mobile-bartending-laws\/\" \/>\n<meta property=\"og:site_name\" content=\"Portable Bars by Customized Designs\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-09T21:01:34+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data1\" content=\"1\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.portablebar.com\\\/ja\\\/mobile-bartending-laws\\\/\",\"url\":\"https:\\\/\\\/www.portablebar.com\\\/ja\\\/mobile-bartending-laws\\\/\",\"name\":\"Mobile Bartending Laws by State: The Ultimate Licensing Guide | PortableBar.com\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.portablebar.com\\\/ja\\\/#website\"},\"datePublished\":\"2026-01-31T16:21:31+00:00\",\"dateModified\":\"2026-02-09T21:01:34+00:00\",\"description\":\"Starting a mobile bar? Don't guess on permits. Browse our comprehensive state-by-state guide to liquor laws, licensing requirements, and Dry Hire vs. Wet Hire rules.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.portablebar.com\\\/ja\\\/mobile-bartending-laws\\\/#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.portablebar.com\\\/ja\\\/mobile-bartending-laws\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.portablebar.com\\\/ja\\\/mobile-bartending-laws\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.portablebar.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mobile Bartending Laws by State: The Ultimate Licensing Guide\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.portablebar.com\\\/ja\\\/#website\",\"url\":\"https:\\\/\\\/www.portablebar.com\\\/ja\\\/\",\"name\":\"Portable Bars by Customized Designs\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.portablebar.com\\\/ja\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u5dde\u5225\u30e2\u30d0\u30a4\u30eb\u30d0\u30fc\u30c6\u30f3\u30c0\u30fc\u6cd5\uff1a\u7a76\u6975\u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u30ac\u30a4\u30c9\uff5cPortableBar.com","description":"\u79fb\u52d5\u5f0f\u30d0\u30fc\u3092\u59cb\u3081\u308b\uff1f\u8a31\u8a8d\u53ef\u306b\u3064\u3044\u3066\u63a8\u6e2c\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u9152\u7a0e\u6cd5\u3001\u514d\u8a31\u8981\u4ef6\u3001\u30c9\u30e9\u30a4\u30fb\u30cf\u30a4\u30e4\u30fc\u3068\u30a6\u30a7\u30c3\u30c8\u30fb\u30cf\u30a4\u30e4\u30fc\u306e\u898f\u5247\u306b\u95a2\u3059\u308b\u5dde\u3054\u3068\u306e\u7dcf\u5408\u30ac\u30a4\u30c9\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.portablebar.com\/ja\/mobile-bartending-laws\/","og_locale":"ja_JP","og_type":"article","og_title":"Mobile Bartending Laws by State: The Ultimate Licensing Guide | PortableBar.com","og_description":"Starting a mobile bar? Don't guess on permits. Browse our comprehensive state-by-state guide to liquor laws, licensing requirements, and Dry Hire vs. Wet Hire rules.","og_url":"https:\/\/www.portablebar.com\/ja\/mobile-bartending-laws\/","og_site_name":"Portable Bars by Customized Designs","article_modified_time":"2026-02-09T21:01:34+00:00","twitter_card":"summary_large_image","twitter_misc":{"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"1\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.portablebar.com\/ja\/mobile-bartending-laws\/","url":"https:\/\/www.portablebar.com\/ja\/mobile-bartending-laws\/","name":"\u5dde\u5225\u30e2\u30d0\u30a4\u30eb\u30d0\u30fc\u30c6\u30f3\u30c0\u30fc\u6cd5\uff1a\u7a76\u6975\u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u30ac\u30a4\u30c9\uff5cPortableBar.com","isPartOf":{"@id":"https:\/\/www.portablebar.com\/ja\/#website"},"datePublished":"2026-01-31T16:21:31+00:00","dateModified":"2026-02-09T21:01:34+00:00","description":"\u79fb\u52d5\u5f0f\u30d0\u30fc\u3092\u59cb\u3081\u308b\uff1f\u8a31\u8a8d\u53ef\u306b\u3064\u3044\u3066\u63a8\u6e2c\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u9152\u7a0e\u6cd5\u3001\u514d\u8a31\u8981\u4ef6\u3001\u30c9\u30e9\u30a4\u30fb\u30cf\u30a4\u30e4\u30fc\u3068\u30a6\u30a7\u30c3\u30c8\u30fb\u30cf\u30a4\u30e4\u30fc\u306e\u898f\u5247\u306b\u95a2\u3059\u308b\u5dde\u3054\u3068\u306e\u7dcf\u5408\u30ac\u30a4\u30c9\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002.","breadcrumb":{"@id":"https:\/\/www.portablebar.com\/ja\/mobile-bartending-laws\/#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.portablebar.com\/ja\/mobile-bartending-laws\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.portablebar.com\/ja\/mobile-bartending-laws\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.portablebar.com\/"},{"@type":"ListItem","position":2,"name":"Mobile Bartending Laws by State: The Ultimate Licensing Guide"}]},{"@type":"WebSite","@id":"https:\/\/www.portablebar.com\/ja\/#website","url":"https:\/\/www.portablebar.com\/ja\/","name":"\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30fb\u30c7\u30b6\u30a4\u30f3\u306b\u3088\u308b\u30dd\u30fc\u30bf\u30d6\u30eb\u30fb\u30d0\u30fc","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.portablebar.com\/ja\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"}]}},"_links":{"self":[{"href":"https:\/\/www.portablebar.com\/ja\/wp-json\/wp\/v2\/pages\/29836","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.portablebar.com\/ja\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.portablebar.com\/ja\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.portablebar.com\/ja\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.portablebar.com\/ja\/wp-json\/wp\/v2\/comments?post=29836"}],"version-history":[{"count":35,"href":"https:\/\/www.portablebar.com\/ja\/wp-json\/wp\/v2\/pages\/29836\/revisions"}],"predecessor-version":[{"id":30142,"href":"https:\/\/www.portablebar.com\/ja\/wp-json\/wp\/v2\/pages\/29836\/revisions\/30142"}],"wp:attachment":[{"href":"https:\/\/www.portablebar.com\/ja\/wp-json\/wp\/v2\/media?parent=29836"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}