:root{
  --paper:#e6eef6;--surface:#f7fafd;--surface-soft:#eaf1f7;--surface-strong:#dfe9f2;--ink:#182536;--muted:#627489;--line:#c9d7e4;
  --ice:#dff4ff;--blue:#1479c9;--blue2:#0e5b9c;--mint:#dff7ef;--orange:#ff8b3d;--panel-alpha:rgba(248,251,255,.95);--panel-solid:#ffffff;--card-bg:#f8fbfe;--card-hover:#eef7ff;--card-active:#e3f2ff;--chip-bg:#e8f1f7;--chip-text:#536b7d;--popup-bg:#ffffff;--popup-muted:#647484;--focus-ring:rgba(87,174,229,.15);
  --shadow:0 18px 50px rgba(30,52,73,.18);--header:74px;--drawer:270px;
}
*{box-sizing:border-box}html,body{height:100%;margin:0}body{overflow:hidden;background:var(--paper);color:var(--ink);font-family:"Yu Gothic UI","Hiragino Kaku Gothic ProN",Meiryo,sans-serif}button,input,select{font:inherit}button{cursor:pointer}#map{position:absolute;inset:0;background:#dce7ee}.leaflet-container{font-family:inherit}
.app-header{position:fixed;z-index:1400;top:14px;left:14px;right:14px;height:60px;display:grid;grid-template-columns:auto minmax(260px,620px) auto;gap:16px;align-items:center;padding:8px 10px 8px 14px;border:1px solid var(--line);border-radius:20px;background:var(--panel-alpha);box-shadow:var(--shadow);backdrop-filter:blur(16px)}
.logo{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none}.logo-symbol{display:grid;place-items:center;width:42px;height:42px;border-radius:14px;background:linear-gradient(145deg,var(--blue2),var(--blue));color:#fff;font-weight:900;font-size:1.1rem;box-shadow:inset 0 0 0 1px #ffffff66}.logo-copy strong{display:block;font-size:.98rem;letter-spacing:.09em}.logo-copy small{display:block;margin-top:1px;color:var(--muted);font-size:.61rem;letter-spacing:.08em}
.global-search{position:relative}.global-search input{width:100%;height:44px;padding:0 42px 0 42px;border:1px solid var(--line);border-radius:14px;background:var(--surface-soft);color:var(--ink);outline:none}.global-search input:focus{border-color:#79bde7;box-shadow:0 0 0 4px var(--focus-ring)}.search-icon{position:absolute;left:15px;top:50%;transform:translateY(-50%);font-size:1.25rem;color:#7a8998}.clear-search{position:absolute;right:8px;top:7px;width:30px;height:30px;border:0;border-radius:9px;background:transparent;color:var(--muted)}.clear-search:hover{background:var(--surface-strong)}.header-actions{display:flex;gap:8px}.round-button{width:43px;height:43px;border:1px solid var(--line);border-radius:14px;background:var(--panel-solid);color:var(--blue2);font-size:1.05rem}.round-button:hover{background:var(--ice)}
.filter-rail{position:fixed;z-index:1300;top:88px;left:50%;transform:translateX(-50%);display:flex;gap:8px;max-width:calc(100vw - 28px);padding:4px;overflow-x:auto;scrollbar-width:none}.filter-rail::-webkit-scrollbar{display:none}.filter-chip{flex:0 0 auto;height:38px;padding:0 15px;border:1px solid rgba(255,255,255,.9);border-radius:999px;background:var(--panel-alpha);box-shadow:0 8px 22px rgba(30,52,73,.12);color:var(--muted);font-size:.74rem;font-weight:700;backdrop-filter:blur(12px)}.filter-chip:hover,.filter-chip.active{background:var(--blue);color:#fff;border-color:var(--blue)}.filter-more{background:var(--blue2);color:#fff;border-color:var(--blue2)}
.filter-panel{position:fixed;z-index:1500;top:88px;right:14px;width:min(390px,calc(100vw - 28px));padding:20px;border:1px solid var(--line);border-radius:22px;background:var(--panel-alpha);box-shadow:var(--shadow);backdrop-filter:blur(18px)}.filter-panel-head{display:flex;align-items:flex-start;justify-content:space-between}.filter-panel-head small,.drawer-head small{color:var(--blue);font-size:.62rem;font-weight:900;letter-spacing:.18em}.filter-panel-head h2,.drawer-head h2{margin:3px 0 0;font-size:1.12rem}.filter-panel-head button{width:34px;height:34px;border:0;border-radius:10px;background:var(--surface-strong);color:var(--muted);font-size:1.15rem}.filter-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:18px}.filter-fields label>span{display:block;margin-bottom:6px;color:var(--muted);font-size:.69rem;font-weight:700}.filter-fields select{width:100%;height:42px;padding:0 10px;border:1px solid var(--line);border-radius:11px;background:var(--surface-soft);color:var(--ink)}.toggle-line{display:flex;align-items:center;gap:9px;margin-top:15px;color:var(--muted);font-size:.74rem}.toggle-line input{width:17px;height:17px;accent-color:var(--blue)}.filter-panel-actions{display:grid;grid-template-columns:1fr 1.5fr;gap:10px;margin-top:18px}.filter-panel-actions button{height:44px;border-radius:12px;font-weight:800}.ghost-action{border:1px solid var(--line);background:var(--panel-solid);color:var(--muted)}.primary-action{border:0;background:linear-gradient(135deg,var(--blue),var(--blue2));color:#fff}
.map-status{position:fixed;z-index:1200;left:18px;top:93px;display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid var(--line);border-radius:14px;background:var(--panel-alpha);box-shadow:0 9px 22px rgba(30,52,73,.12);font-size:.72rem;color:var(--muted);backdrop-filter:blur(10px)}.map-status b{color:var(--blue2);font-size:.92rem}.divider{width:1px;height:15px;background:var(--line)}
.map-switcher{position:fixed;z-index:1250;right:18px;top:93px}.map-switcher>button{height:39px;padding:0 15px;border:1px solid var(--line);border-radius:13px;background:var(--panel-alpha);box-shadow:0 8px 20px rgba(30,52,73,.12);color:var(--ink);font-weight:700}.map-menu{position:absolute;right:0;top:46px;min-width:145px;padding:7px;border:1px solid var(--line);border-radius:15px;background:var(--panel-solid);box-shadow:var(--shadow)}.map-menu button{width:100%;padding:9px 10px;border:0;border-radius:9px;background:transparent;text-align:left;color:var(--muted);font-size:.73rem}.map-menu button:hover,.map-menu button.selected{background:var(--ice);color:var(--blue2);font-weight:800}
.result-drawer{position:fixed;z-index:1350;left:50%;bottom:14px;transform:translateX(-50%);width:min(1120px,calc(100vw - 28px));height:var(--drawer);display:flex;flex-direction:column;border:1px solid var(--line);border-radius:26px;background:var(--panel-alpha);box-shadow:var(--shadow);backdrop-filter:blur(16px);transition:transform .28s,height .28s}.result-drawer.collapsed{transform:translate(-50%,calc(100% - 62px))}.drawer-handle{position:absolute;top:7px;left:50%;transform:translateX(-50%);width:52px;height:20px;border:0;background:transparent}.drawer-handle span{display:block;width:34px;height:4px;margin:auto;border-radius:999px;background:#c8d2dc}.drawer-head{display:flex;align-items:flex-end;justify-content:space-between;padding:24px 22px 10px}.drawer-head p{margin:0;color:var(--muted);font-size:.73rem}.facility-list{display:grid;grid-auto-flow:column;grid-auto-columns:285px;gap:12px;overflow-x:auto;overflow-y:hidden;padding:4px 18px 15px;scroll-snap-type:x proximity;scrollbar-color:#bdcbd6 transparent}.facility-card{position:relative;scroll-snap-align:start;display:flex;flex-direction:column;min-height:146px;padding:15px;border:1px solid var(--line);border-radius:18px;background:var(--card-bg);transition:.15s;cursor:pointer}.facility-card:hover{transform:translateY(-2px);border-color:#8cc8ec;background:var(--card-hover);box-shadow:0 11px 25px rgba(47,96,129,.13)}.facility-card.active{transform:translateY(-2px);border-color:var(--blue);background:var(--card-active);box-shadow:0 0 0 3px var(--focus-ring),0 11px 25px rgba(47,96,129,.13)}.facility-card.no-location{opacity:.55;cursor:default}.card-top{display:flex;justify-content:space-between;gap:10px}.type-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:999px;background:var(--chip-bg);color:var(--chip-text);font-size:.62rem;font-weight:800}.type-pill i{width:7px;height:7px;border-radius:50%}.card-pref{color:#7c8996;font-size:.65rem}.facility-name{margin:12px 0 4px;font-size:.91rem;line-height:1.45}.facility-address{margin:0;color:#7a8794;font-size:.67rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.facility-genres{display:flex;gap:5px;flex-wrap:wrap;margin-top:auto;padding-top:11px}.mini-chip{padding:3px 7px;border-radius:7px;background:var(--chip-bg);color:var(--chip-text);font-size:.61rem}.card-arrow{position:absolute;right:14px;bottom:13px;color:#7ab7dd;font-size:1.2rem}.empty{padding:30px;color:var(--muted)}.drawer-footer{display:flex;justify-content:space-between;gap:12px;padding:8px 20px 11px;border-top:1px solid #edf1f4;color:#8a96a1;font-size:.61rem}.loading{position:fixed;z-index:2000;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:10px;padding:14px 18px;border-radius:15px;background:var(--panel-solid);box-shadow:var(--shadow);color:var(--muted);font-size:.76rem}.loading.hidden{display:none}.spinner{width:20px;height:20px;border:3px solid #dceaf3;border-top-color:var(--blue);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.snow-pin{filter:drop-shadow(0 4px 4px rgba(25,45,61,.3))}.cluster-icon{background:transparent}.cluster-icon div{display:grid;place-items:center;border:3px solid #fff;border-radius:50%;background:linear-gradient(145deg,#1682cb,#0b527f);box-shadow:0 6px 16px rgba(18,67,99,.33);color:#fff;font-weight:900}.leaflet-popup-content-wrapper{border:1px solid var(--line);border-radius:18px;background:var(--popup-bg);color:var(--ink);box-shadow:0 18px 42px rgba(25,45,61,.22)}.leaflet-popup-content{margin:16px 17px}.leaflet-popup-tip{background:var(--popup-bg);box-shadow:none}.popup-name{margin:0 0 8px;font-size:1rem}.popup-badges{display:flex;gap:7px}.popup-badge{padding:3px 8px;border-radius:999px;color:#fff;font-size:.62rem;font-weight:800}.popup-closed{color:#d34d5d;font-size:.68rem;font-weight:800}.popup-address,.popup-intro{color:var(--popup-muted);font-size:.72rem;line-height:1.6}.popup-address a{color:#1479c9;text-decoration:none}.popup-section{margin-top:10px}.popup-label{margin-bottom:5px;color:#8a96a1;font-size:.6rem;font-weight:800;letter-spacing:.08em}.popup-chips{display:flex;flex-wrap:wrap;gap:4px}.popup-chip{padding:3px 7px;border-radius:7px;background:var(--chip-bg);color:var(--chip-text);font-size:.61rem}.popup-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:12px}.popup-actions a{padding:8px;border-radius:9px;background:var(--ice);color:var(--blue2);text-align:center;text-decoration:none;font-size:.67rem;font-weight:800}.leaflet-control-attribution{background:var(--panel-solid)!important;color:#758493!important}.leaflet-control-attribution a{color:#1479c9!important}
@media(max-width:760px){:root{--drawer:315px}.app-header{top:8px;left:8px;right:8px;height:auto;grid-template-columns:1fr auto;padding:9px}.logo-copy small{display:none}.logo-symbol{width:38px;height:38px}.global-search{grid-column:1/-1;grid-row:2}.header-actions{grid-column:2;grid-row:1}.filter-rail{top:116px;left:8px;right:8px;transform:none;max-width:none}.map-status{top:166px;left:10px}.map-switcher{top:166px;right:10px}.filter-panel{top:116px;left:8px;right:8px;width:auto}.filter-fields{grid-template-columns:1fr}.result-drawer{bottom:8px;width:calc(100vw - 16px);height:var(--drawer);border-radius:22px}.facility-list{grid-auto-columns:82vw;padding-left:12px}.drawer-head{padding:22px 15px 8px}.drawer-footer{display:none}.logo-copy strong{font-size:.86rem}.map-status{font-size:.65rem}}


/* User-selectable appearance themes */

:root[data-theme="light"]{color-scheme:light;--paper:#eef2f6;--surface:#ffffff;--surface-soft:#f1f5f8;--surface-strong:#dfe7ed;--ink:#17212b;--muted:#4f6070;--line:#aebbc6;--ice:#d9ecfb;--blue:#0068b5;--blue2:#004b87;--mint:#dcefe8;--panel-alpha:rgba(255,255,255,.98);--panel-solid:#ffffff;--card-bg:#ffffff;--card-hover:#eef7fd;--card-active:#dceffc;--chip-bg:#e6edf2;--chip-text:#344b5c;--popup-bg:#ffffff;--popup-muted:#465867;--focus-ring:rgba(0,104,181,.24);--shadow:0 18px 46px rgba(22,39,53,.20)}
:root[data-theme="dark"]{color-scheme:dark;--paper:#0d1821;--surface:#172630;--surface-soft:#1d303b;--surface-strong:#29404c;--ink:#f4f8fa;--muted:#bac7cf;--line:#526773;--ice:#173b50;--blue:#62c2ee;--blue2:#8ad5f6;--mint:#1d443b;--panel-alpha:rgba(17,31,40,.98);--panel-solid:#172630;--card-bg:#152833;--card-hover:#1d3a48;--card-active:#20485a;--chip-bg:#29404c;--chip-text:#e2edf2;--popup-bg:#172630;--popup-muted:#c2ced5;--focus-ring:rgba(98,194,238,.30);--shadow:0 18px 50px rgba(0,0,0,.48)}
:root[data-theme="contrast"]{color-scheme:light;--paper:#ffffff;--surface:#ffffff;--surface-soft:#f4f4f4;--surface-strong:#dedede;--ink:#101010;--muted:#2f2f2f;--line:#5f5f5f;--ice:#dbeeff;--blue:#0057a6;--blue2:#003e78;--mint:#dcefe6;--panel-alpha:#ffffff;--panel-solid:#ffffff;--card-bg:#ffffff;--card-hover:#e8f3ff;--card-active:#d2e9ff;--chip-bg:#ececec;--chip-text:#171717;--popup-bg:#ffffff;--popup-muted:#222222;--focus-ring:rgba(0,87,166,.34);--shadow:0 12px 30px rgba(0,0,0,.22)}
:root[data-theme="system"]{color-scheme:light;--paper:#eef2f6;--surface:#ffffff;--surface-soft:#f1f5f8;--surface-strong:#dfe7ed;--ink:#17212b;--muted:#4f6070;--line:#aebbc6;--ice:#d9ecfb;--blue:#0068b5;--blue2:#004b87;--mint:#dcefe8;--panel-alpha:rgba(255,255,255,.98);--panel-solid:#ffffff;--card-bg:#ffffff;--card-hover:#eef7fd;--card-active:#dceffc;--chip-bg:#e6edf2;--chip-text:#344b5c;--popup-bg:#ffffff;--popup-muted:#465867;--focus-ring:rgba(0,104,181,.24);--shadow:0 18px 46px rgba(22,39,53,.20)}
@media (prefers-color-scheme:dark){:root[data-theme="system"]{color-scheme:dark;--paper:#0d1821;--surface:#172630;--surface-soft:#1d303b;--surface-strong:#29404c;--ink:#f4f8fa;--muted:#bac7cf;--line:#526773;--ice:#173b50;--blue:#62c2ee;--blue2:#8ad5f6;--mint:#1d443b;--panel-alpha:rgba(17,31,40,.98);--panel-solid:#172630;--card-bg:#152833;--card-hover:#1d3a48;--card-active:#20485a;--chip-bg:#29404c;--chip-text:#e2edf2;--popup-bg:#172630;--popup-muted:#c2ced5;--focus-ring:rgba(98,194,238,.30);--shadow:0 18px 50px rgba(0,0,0,.48)}}
.theme-panel{position:fixed;z-index:1600;top:88px;right:14px;width:min(390px,calc(100vw - 28px));padding:20px;border:1px solid var(--line);border-radius:22px;background:var(--panel-alpha);box-shadow:var(--shadow);backdrop-filter:blur(18px);color:var(--ink)}
.theme-panel-head{display:flex;align-items:flex-start;justify-content:space-between}.theme-panel-head small{color:var(--blue);font-size:.62rem;font-weight:900;letter-spacing:.18em}.theme-panel-head h2{margin:3px 0 0;font-size:1.12rem}.theme-panel-head button{width:34px;height:34px;border:0;border-radius:10px;background:var(--surface-strong);color:var(--muted);font-size:1.15rem}.theme-help{margin:12px 0 15px;color:var(--muted);font-size:.75rem;line-height:1.65}.theme-grid{display:grid;gap:9px}.theme-option{display:grid;grid-template-columns:48px 1fr 24px;gap:12px;align-items:center;width:100%;padding:10px;border:1px solid var(--line);border-radius:14px;background:var(--panel-solid);color:var(--ink);text-align:left}.theme-option:hover{border-color:var(--blue);transform:translateY(-1px)}.theme-option.active{border:2px solid var(--blue);background:var(--card-active);box-shadow:0 0 0 3px var(--focus-ring)}.theme-option b,.theme-option small{display:block}.theme-option b{font-size:.82rem}.theme-option small{margin-top:2px;color:var(--muted);font-size:.66rem}.theme-option i{display:none;color:var(--blue2);font-style:normal;font-size:1.05rem;font-weight:900}.theme-option.active i{display:block}.theme-preview{width:48px;height:34px;border-radius:10px;border:1px solid var(--line);box-shadow:inset 0 0 0 1px #0000000d}.light-preview{background:linear-gradient(135deg,#ffffff 50%,#0068b5 50%)}.dark-preview{background:linear-gradient(135deg,#172630 50%,#62c2ee 50%)}.contrast-preview{background:linear-gradient(135deg,#ffffff 0 46%,#101010 46% 54%,#0057a6 54%)}.system-preview{background:linear-gradient(135deg,#f7fafc 0 48%,#8fa3b5 48% 52%,#14232e 52%)}.theme-reset{width:100%;height:42px;margin-top:14px;border:1px solid var(--line);border-radius:12px;background:var(--surface-soft);color:var(--muted);font-weight:800}
@media(max-width:700px){.theme-panel{top:116px;left:8px;right:8px;width:auto}}
.filter-hint{margin:9px 0 0;color:var(--muted);font-size:.66rem;line-height:1.5}
.map-legend{position:fixed;z-index:1200;left:18px;top:139px;display:flex;gap:10px;padding:8px 11px;border:1px solid var(--line);border-radius:12px;background:var(--panel-alpha);box-shadow:0 8px 20px rgba(30,52,73,.1);font-size:.62rem;color:var(--muted);backdrop-filter:blur(10px)}
.map-legend span{display:flex;align-items:center;gap:5px;white-space:nowrap}.map-legend i{width:8px;height:8px;border-radius:50%}.legend-planned{background:#58bcec}.legend-visited{background:#f59a23}.legend-pause{background:#7c5cc4}.legend-closed{background:#858e98}.legend-selected{background:#0b2f5b}
.status-note{margin:5px 0 0;color:var(--muted);font-size:.61rem}.facility-card:focus-visible{outline:3px solid var(--blue);outline-offset:2px}.list-limit{display:flex;align-items:center;width:280px;padding:18px;color:var(--muted);font-size:.72rem;line-height:1.6}.popup-schools{padding-left:18px;color:var(--popup-muted);font-size:.68rem}.popup-schools a{color:var(--blue)}
@media(max-width:760px){.map-legend{top:210px;left:10px;right:10px;width:max-content;max-width:calc(100vw - 20px);overflow-x:auto}.map-status,.map-switcher{top:166px}}

.popup-contribute{display:grid;gap:4px;margin-top:10px;padding:10px;border:1px solid var(--line);border-radius:11px;background:var(--surface-soft)}.popup-contribute strong{font-size:.72rem}.popup-contribute span{color:var(--popup-muted);font-size:.62rem;line-height:1.45}.popup-contribute a{margin-top:3px;padding:8px;border-radius:9px;background:var(--blue);color:#fff;text-align:center;text-decoration:none;font-size:.67rem;font-weight:850}.drawer-contact{flex:0 0 auto;padding:5px 9px;border:1px solid var(--line);border-radius:8px;background:var(--panel-solid);color:var(--blue2);text-decoration:none;font-size:.66rem;font-weight:800}.header-link{display:grid;place-items:center;text-decoration:none}.popup-actions a{display:flex;align-items:center;justify-content:center;line-height:1.3}.drawer-footer{gap:10px}.drawer-footer span:nth-child(2){flex:1}

/* 雪レポBASE統合機能 */
.header-link{display:grid;place-items:center;text-decoration:none;font-size:.72rem;font-weight:900}.map-login-state{padding-left:4px;color:var(--blue2);font-weight:800}.map-legend{position:fixed;z-index:1200;right:18px;top:142px;display:flex;gap:9px;flex-wrap:wrap;max-width:min(520px,calc(100vw - 36px));padding:8px 11px;border:1px solid var(--line);border-radius:12px;background:var(--panel-alpha);box-shadow:0 8px 20px rgba(30,52,73,.12);font-size:.62rem;color:var(--muted);backdrop-filter:blur(10px)}.map-legend span{display:flex;align-items:center;gap:4px}.map-legend i{width:8px;height:8px;border-radius:50%}.legend-planned{background:#58bcec}.legend-visited{background:#f59a23}.legend-pause{background:#7c5cc4}.legend-closed{background:#858e98}.legend-selected{background:#0b2f5b}.legend-personal{display:grid;place-items:center;width:18px;height:18px;border-radius:999px;background:#fff;color:#0e5b9c;border:1px solid #8cc8ec}.filter-hint{margin:12px 0 0;color:var(--muted);font-size:.68rem;line-height:1.5}.card-personal{margin-top:7px;color:var(--blue2);font-size:.66rem;font-weight:800}.yukirepo-marker{position:relative;background:transparent;border:0}.pin-count,.pin-favorite,.pin-home{position:absolute;display:grid;place-items:center;border:2px solid #fff;border-radius:999px;box-shadow:0 3px 8px rgba(0,0,0,.25);font-size:9px;line-height:1}.pin-count{right:-8px;top:-6px;min-width:20px;height:20px;padding:0 4px;background:#fff;color:#0e5b9c}.pin-favorite{left:-7px;top:-4px;width:19px;height:19px;background:#ffcf4a;color:#6b4a00}.pin-home{right:-7px;bottom:3px;width:18px;height:18px;background:#264860;color:#fff}.popup-loading{min-width:235px}.popup-personal{margin:10px 0;color:#0e5b9c;font-size:.72rem;font-weight:800}.popup-detail-button{display:flex;align-items:center;justify-content:center;width:100%;min-height:39px;margin-top:7px;border:0;border-radius:10px;background:linear-gradient(135deg,var(--blue),var(--blue2));color:#fff;text-decoration:none;font-weight:800}.popup-secondary-button{border:1px solid var(--line);background:#fff;color:var(--blue2)}.map-toast{position:fixed;z-index:3000;left:50%;top:86px;transform:translateX(-50%);max-width:min(520px,calc(100vw - 30px));padding:12px 17px;border-radius:13px;background:#153f5f;color:#fff;box-shadow:var(--shadow);font-size:.76rem;font-weight:800}.map-toast.is-error{background:#8e2f3a}.map-dialog{width:min(760px,calc(100vw - 24px));max-height:min(88vh,900px);padding:0;border:1px solid var(--line);border-radius:22px;background:var(--panel-solid);color:var(--ink);box-shadow:0 30px 80px rgba(15,35,51,.35);overflow:auto}.map-dialog::backdrop{background:rgba(15,31,45,.55);backdrop-filter:blur(3px)}.dialog-x{position:sticky;z-index:3;float:right;top:12px;right:12px;width:38px;height:38px;margin:12px;border:0;border-radius:12px;background:var(--surface-strong);color:var(--muted);font-size:1.25rem}.dialog-loading{display:flex;align-items:center;justify-content:center;gap:10px;min-height:260px}.resort-dialog-card{padding:6px 28px 30px}.map-eyebrow{margin:0 0 4px;color:var(--blue);font-size:.66rem;font-weight:900;letter-spacing:.15em}.resort-dialog-card h2,.form-dialog h2{margin:0 0 8px;font-size:1.55rem}.resort-dialog-badges{display:flex;gap:6px;flex-wrap:wrap}.resort-dialog-badges span{padding:4px 9px;border-radius:999px;color:#fff;font-size:.65rem;font-weight:800}.resort-dialog-badges .needs-review{background:#8b6aa8}.resort-address,.resort-description{color:var(--muted);line-height:1.7}.review-tags{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}.review-tags span{padding:5px 9px;border-radius:999px;background:var(--chip-bg);color:var(--chip-text);font-size:.67rem;font-weight:800}.top-tags span{background:#eaf5ff;color:#0e5b9c}.resort-summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:18px 0}.resort-summary-grid>div{display:flex;flex-direction:column;gap:4px;padding:15px;border:1px solid var(--line);border-radius:14px;background:var(--surface-soft)}.resort-summary-grid small{color:var(--muted)}.rating-average{font-size:1.45rem;color:#d58a00}.resort-link-row{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 20px}.resort-link-row a{padding:8px 11px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--blue2);text-decoration:none;font-size:.7rem;font-weight:800}.personal-resort-panel,.review-section,.login-prompt{margin-top:18px;padding:18px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}.personal-resort-panel h3,.review-section h3{margin:0}.personal-resort-stats{display:flex;gap:10px;align-items:baseline;margin:8px 0}.personal-resort-stats strong{font-size:1.2rem;color:var(--blue2)}.personal-resort-stats span{color:var(--muted);font-size:.72rem}.resort-toggle-row,.dialog-actions{display:flex;gap:8px;flex-wrap:wrap}.resort-toggle{padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--muted);font-weight:800}.resort-toggle.is-active{border-color:var(--blue);background:var(--ice);color:var(--blue2)}.dialog-actions{margin-top:14px}.dialog-actions button,.dialog-actions a{min-height:42px;padding:0 14px;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;text-decoration:none;font-size:.72rem;font-weight:800}.secondary-action{border:1px solid var(--line);background:#fff;color:var(--blue2)}.visit-history{margin-top:14px}.visit-history summary{cursor:pointer;color:var(--blue2);font-weight:800}.visit-history article{display:grid;grid-template-columns:1fr auto;gap:3px 10px;padding:10px 0;border-bottom:1px solid var(--line)}.visit-history article span,.visit-history article small{color:var(--muted);font-size:.68rem}.visit-history article small{grid-column:1/-1}.section-title-row{display:flex;justify-content:space-between;align-items:center}.review-list{display:grid;gap:10px}.resort-review-card{padding:13px;border:1px solid var(--line);border-radius:13px;background:#fff}.resort-review-card header{display:flex;align-items:center;justify-content:space-between;gap:10px}.resort-review-card header a{display:flex;align-items:center;gap:8px;color:inherit;text-decoration:none}.resort-review-card img{width:34px;height:34px;border-radius:50%;object-fit:cover}.resort-review-card header span span{display:block}.resort-review-card small{color:var(--muted)}.resort-review-card p{line-height:1.7}.resort-review-card footer{display:flex;justify-content:space-between;align-items:center}.resort-review-card footer button{border:0;background:transparent;color:var(--muted);font-size:.65rem}.rating-stars{color:#e5a400;white-space:nowrap}.form-dialog form{padding:2px 28px 30px}.form-dialog label,.form-dialog fieldset{display:block;margin-top:14px}.form-dialog label>span,.form-dialog legend{display:block;margin-bottom:6px;color:var(--muted);font-size:.72rem;font-weight:800}.form-dialog input,.form-dialog select,.form-dialog textarea{width:100%;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--surface-soft);color:var(--ink)}.form-dialog fieldset{padding:0;border:0}.star-buttons{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.star-choice{min-height:52px;border:1px solid var(--line);border-radius:10px;background:#fff;color:#c6b27d;font-size:1.2rem}.star-choice small{display:block;font-size:.62rem}.star-choice.is-selected{border-color:#e0a000;background:#fff8df;color:#e0a000}.tag-choice-grid{display:flex;flex-wrap:wrap;gap:7px}.tag-choice-grid label{margin:0}.tag-choice-grid input{position:absolute;opacity:0;width:1px}.tag-choice-grid span{display:inline-flex;padding:8px 10px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--muted);font-size:.68rem}.tag-choice-grid input:checked+span{border-color:var(--blue);background:var(--ice);color:var(--blue2);font-weight:800}.form-note,.dialog-message{color:var(--muted);font-size:.68rem;line-height:1.6}.dialog-message{min-height:1.2em;color:#a22}.login-prompt{text-align:center}.login-prompt .primary-action{display:inline-flex;align-items:center;min-height:42px;padding:0 16px;border-radius:10px;text-decoration:none}.empty h2{margin-top:0}
@media(max-width:900px){.app-header{grid-template-columns:auto minmax(150px,1fr) auto}.header-actions .header-link:nth-child(1),.header-actions .header-link:nth-child(3){display:none}.map-legend{display:none}.map-status{top:140px}.map-switcher{top:140px}.resort-summary-grid{grid-template-columns:1fr}}
@media(max-width:640px){:root{--drawer:235px}.app-header{top:7px;left:7px;right:7px;height:56px;grid-template-columns:auto 1fr auto;gap:7px;padding:6px}.logo-copy{display:none}.logo-symbol{width:39px;height:39px}.global-search input{height:40px;padding-left:35px}.header-actions{gap:5px}.round-button{width:38px;height:38px}.header-actions .header-link{display:none}.filter-rail{top:68px;left:7px;right:7px;transform:none;max-width:none}.map-status{top:113px;left:8px;padding:7px 9px}.map-status span:nth-child(2),.map-status span:nth-child(3){display:none}.map-switcher{top:113px;right:8px}.filter-panel{top:112px;right:7px;width:calc(100vw - 14px);max-height:70vh;overflow:auto}.filter-fields{grid-template-columns:1fr 1fr}.result-drawer{bottom:7px;width:calc(100vw - 14px);border-radius:20px}.facility-list{grid-auto-columns:250px}.drawer-footer span:nth-child(2){display:none}.map-dialog{width:calc(100vw - 12px);max-height:92vh;border-radius:17px}.resort-dialog-card,.form-dialog form{padding-left:16px;padding-right:16px}.resort-dialog-card h2,.form-dialog h2{font-size:1.25rem}.resort-summary-grid{grid-template-columns:1fr}.star-buttons{gap:4px}.star-choice{min-height:46px}.resort-review-card header{align-items:flex-start;flex-direction:column}.map-toast{top:70px}}

/* 2026-08 public map rules */
.facility-card{min-height:164px}
.facility-summary{margin:6px 0 0;color:#526b7e;font-size:.66rem;line-height:1.45;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:640px){.facility-card{min-height:158px}.facility-summary{font-size:.65rem}}

/* 2026-08 map pin color semantics
   planned/unvisited: light blue / visited: orange / paused: purple / closed: gray / selected: navy */
.pin-count{font-weight:900}
.map-weather-summary{display:flex;flex-direction:column;gap:3px;margin:14px 0;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--surface-soft)}.map-weather-summary small,.map-weather-summary span,.map-weather-summary em{color:var(--muted);font-size:.68rem}.map-weather-summary strong{font-size:1.08rem}.map-weather-summary em{font-style:normal}

/* 気象庁 警報・注意報 */
.pin-warning{position:absolute;right:-2px;top:-4px;display:grid;place-items:center;width:18px;height:18px;border:2px solid #fff;border-radius:50%;background:#d64545;color:#fff;font:800 12px/1 system-ui,sans-serif;box-shadow:0 2px 5px rgba(0,0,0,.28)}
.popup-warning,.facility-warning{display:grid;gap:2px;margin:8px 0;padding:7px 9px;border:1px solid #f1b6a9;border-radius:8px;background:#fff5f1;color:#722518}
.popup-warning strong,.facility-warning strong{font-size:12px}.popup-warning span,.facility-warning span{font-size:11px;line-height:1.45}
.facility-warning{margin:7px 0 2px}
.map-warning-state{font-size:11px;color:#315d78}.map-warning-state.is-stale{color:#8a6b25}
.resort-warning-panel{margin:16px 0;padding:14px 16px;border:1px solid #efb3a5;border-radius:14px;background:#fff6f2;color:#64251c}
.resort-warning-panel h3{margin:2px 0 5px;font-size:18px}.resort-warning-panel p{margin:6px 0;line-height:1.6}.resort-warning-panel p strong{display:inline-block;margin:0 6px 4px 0;padding:3px 7px;border-radius:999px;background:#fff;color:#8d241b;border:1px solid #efc3ba;font-size:12px}
.resort-warning-panel .warning-area{font-size:12px;color:#70493f}.warning-meta{display:flex;flex-wrap:wrap;gap:8px 14px;margin:7px 0;font-size:11px;color:#7b625a}.resort-warning-panel>a{display:inline-block;margin-top:4px;font-weight:700}.warning-attribution{display:block;margin-top:7px;color:#765f58}
@media (max-width:700px){.resort-warning-panel{padding:12px}.map-warning-state{display:none}}
.legend-warning{display:inline-grid!important;place-items:center;width:16px!important;height:16px!important;border-radius:50%!important;background:#d64545!important;color:#fff!important;font:800 10px/1 system-ui,sans-serif!important}


/* v0.0.1 map UX v2: readability, safe viewport, responsive layout */
:root{
  --drawer:250px;
  --muted:#4f6375;
  --chip-text:#3f5668;
  --popup-muted:#4e6274;
  --panel-alpha:rgba(250,252,255,.985);
}

/* Base readability and keyboard focus */
.global-search input::placeholder{color:#65798b;opacity:1}
.filter-chip{font-size:.79rem;color:#455a6d}
.map-status{font-size:.76rem;color:#455a6d}
.map-legend{left:18px;right:auto;top:139px;font-size:.68rem;color:#455a6d}
.map-switcher>button{min-width:92px}
.map-menu button{font-size:.78rem;min-height:38px}
.drawer-head p,.facility-address,.facility-summary,.drawer-footer{color:#4a6073}
.facility-name{font-size:.96rem;line-height:1.4}
.facility-address{font-size:.72rem}
.facility-summary{font-size:.70rem;line-height:1.5}
.type-pill{font-size:.67rem}
.card-pref{font-size:.69rem;color:#607386}
.card-personal{font-size:.70rem}
.mini-chip{font-size:.65rem}
.drawer-head{padding-top:20px}
.drawer-head h2{font-size:1.08rem}
.drawer-footer{font-size:.65rem}

button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,.facility-card:focus-visible{
  outline:3px solid #1479c9;
  outline-offset:2px;
}

/* Marker and cluster clarity */
.yukirepo-marker .snow-pin{transition:transform .16s ease,filter .16s ease;transform-origin:50% 100%}
.yukirepo-marker.is-selected .snow-pin{transform:scale(1.16);filter:drop-shadow(0 6px 7px rgba(11,47,91,.42))}
.cluster-icon div{font-size:.78rem;box-shadow:0 7px 18px rgba(18,67,99,.38)}
@media(hover:hover){.yukirepo-marker:hover .snow-pin{transform:scale(1.08)}.yukirepo-marker.is-selected:hover .snow-pin{transform:scale(1.18)}.cluster-icon:hover div{filter:brightness(1.06)}}

/* Popup: shorter, clearer and always readable */
.leaflet-popup-content-wrapper{border-color:#bfcfdd;box-shadow:0 20px 46px rgba(22,45,64,.28)}
.leaflet-popup-content{max-height:min(390px,calc(100vh - 245px));overflow:auto;scrollbar-gutter:stable;margin:15px 16px}
.resort-popup-card{min-width:250px}
.popup-name{margin:0 28px 8px 0;font-size:1.05rem;line-height:1.35}
.popup-badges{align-items:center;flex-wrap:wrap}
.popup-badge{font-size:.66rem}
.popup-pref,.popup-personal{font-size:.76rem}
.popup-personal{line-height:1.55}
.popup-address,.popup-intro{font-size:.76rem;color:var(--popup-muted)}
.leaflet-container .popup-address a{color:#0b63a8;font-weight:700}
.popup-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:11px}
.leaflet-container .popup-detail-button{width:auto;min-height:40px;margin:0;padding:7px 9px;color:#fff!important;font-size:.75rem;line-height:1.25}
.leaflet-container .popup-secondary-button{color:var(--blue2)!important;background:#fff}
.leaflet-popup-close-button{top:7px!important;right:7px!important;width:30px!important;height:30px!important;display:grid!important;place-items:center;font-size:21px!important;line-height:1!important;border-radius:9px;color:#52687a!important}
.leaflet-popup-close-button:hover{background:#eaf1f7;color:#18334a!important}

/* Filter/UI hierarchy */
.filter-more.has-filters{box-shadow:0 0 0 3px rgba(20,121,201,.18),0 8px 22px rgba(30,52,73,.12)}
.filter-panel{max-height:calc(100vh - 110px);overflow:auto;overscroll-behavior:contain}
.map-menu{z-index:2}

/* Drawer: keep map visible while preserving list usefulness */
.result-drawer{height:var(--drawer)}
.facility-list{grid-auto-columns:276px;padding-bottom:12px}
.facility-card{min-height:152px;padding:14px}
.result-drawer.collapsed{transform:translate(-50%,calc(100% - 60px))}
body.drawer-collapsed .drawer-handle span{background:#8da3b5}

/* Keep Leaflet controls/attribution clear of the open drawer on narrower screens. */
.leaflet-bottom{transition:bottom .24s ease}
@media(max-width:1200px){
  body:not(.drawer-collapsed) .leaflet-bottom{bottom:calc(var(--drawer) + 8px)}
  body.drawer-collapsed .leaflet-bottom{bottom:58px}
}

/* Mid-size screens: separate filters from status controls instead of overlapping them. */
@media(max-width:1100px) and (min-width:761px){
  .map-status{top:137px}
  .map-switcher{top:137px}
  .map-legend{display:none}
}

/* Tablet/mobile: normalize earlier competing breakpoints. */
@media(max-width:760px){
  :root{--drawer:270px}
  .app-header{top:8px;left:8px;right:8px;height:auto;grid-template-columns:1fr auto;gap:8px;padding:9px}
  .logo{grid-column:1;grid-row:1;width:max-content}
  .logo-copy small{display:none}
  .logo-symbol{width:38px;height:38px}
  .header-actions{grid-column:2;grid-row:1;gap:5px}
  .global-search{grid-column:1/-1;grid-row:2}
  .global-search input{height:42px}
  .filter-rail{top:116px;left:8px;right:8px;transform:none;max-width:none}
  .map-status{top:164px;left:10px;padding:8px 10px}
  .map-switcher{top:164px;right:10px}
  .map-legend{display:none}
  .filter-panel{top:116px;left:8px;right:8px;width:auto;max-height:calc(100vh - 132px)}
  .filter-fields{grid-template-columns:1fr}
  .result-drawer{bottom:8px;width:calc(100vw - 16px);height:var(--drawer);border-radius:22px}
  .facility-list{grid-auto-columns:min(82vw,300px);padding-left:12px}
  .drawer-head{padding:21px 15px 8px}
  .drawer-footer{display:none}
  .leaflet-popup-content{max-height:min(360px,calc(100vh - 225px))}
}

/* Phones: keep search in the header row and make filters single-column. */
@media(max-width:640px){
  :root{--drawer:245px}
  .app-header{top:7px;left:7px;right:7px;height:56px;grid-template-columns:auto minmax(0,1fr) auto;gap:6px;padding:6px}
  .logo{grid-column:1;grid-row:1}
  .logo-copy{display:none}
  .logo-symbol{width:39px;height:39px}
  .global-search{grid-column:2;grid-row:1;min-width:0}
  .global-search input{height:40px;padding-left:34px;padding-right:35px;font-size:.82rem}
  .header-actions{grid-column:3;grid-row:1;gap:4px}
  .header-actions .header-link{display:none}
  .round-button{width:38px;height:38px}
  .filter-rail{top:68px;left:7px;right:7px}
  .filter-chip{height:37px;padding:0 13px;font-size:.74rem}
  .map-status{top:112px;left:8px;font-size:.72rem}
  .map-status span:nth-child(2),.map-status span:nth-child(3){display:none}
  .map-switcher{top:112px;right:8px}
  .map-switcher>button{height:38px;min-width:84px;padding:0 11px;font-size:.76rem}
  .filter-panel{top:111px;left:7px;right:7px;width:auto;max-height:calc(100vh - 120px);padding:16px}
  .filter-fields{grid-template-columns:1fr;gap:10px}
  .result-drawer{bottom:max(7px,env(safe-area-inset-bottom));width:calc(100vw - 14px);border-radius:20px}
  .facility-list{grid-auto-columns:min(84vw,290px)}
  .facility-card{min-height:150px}
  .leaflet-popup-content-wrapper{border-radius:15px}
  .leaflet-popup-content{max-height:min(330px,calc(100vh - 200px));margin:13px 14px}
  .resort-popup-card{min-width:230px}
  .popup-actions{gap:6px}
  .leaflet-container .popup-detail-button{font-size:.72rem}
}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}
}
