:root{--bg-primary: #0a0d14;--bg-secondary: #121824;--bg-card: rgba(22, 28, 42, .78);--bg-card-hover: rgba(30, 39, 58, .88);--bg-glass: rgba(15, 20, 32, .82);--bg-glass-heavy: rgba(10, 13, 20, .94);--border-subtle: rgba(255, 255, 255, .08);--border-glass: rgba(212, 175, 55, .25);--border-gold: #d4af37;--text-main: #f5f6fa;--text-muted: #9aa3b6;--text-sub: #cbd2e1;--text-gold: #e6ca65;--gold: #d4af37;--gold-glow: rgba(212, 175, 55, .4);--indigo: #2c4263;--vermilion: #e04836;--vermilion-glow: rgba(224, 72, 54, .35);--emerald: #209973;--quality-acid: #f43f5e;--quality-sulfur: #f59e0b;--quality-salt: #3b82f6;--quality-simple: #10b981;--quality-iron: #b45309;--quality-sulfate: #8b5cf6;--quality-bicarb: #06b6d4;--shadow-glass: 0 8px 32px 0 rgba(0, 0, 0, .5);--shadow-gold: 0 4px 20px rgba(212, 175, 55, .25);--backdrop-blur: blur(16px);--font-serif: "Noto Serif JP", "Zen Old Mincho", serif;--font-sans: "Outfit", -apple-system, BlinkMacSystemFont, sans-serif;--transition-smooth: all .25s cubic-bezier(.16, 1, .3, 1)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background-color:var(--bg-primary);color:var(--text-main);line-height:1.6;overflow-x:hidden;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:#0a0d1499}::-webkit-scrollbar-thumb{background:#d4af374d;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--gold)}.app-container{display:flex;flex-direction:column;height:100vh;width:100vw;position:relative;overflow:hidden}.header{position:absolute;top:0;left:0;right:0;height:72px;z-index:1000;display:flex;align-items:center;justify-content:space-between;padding:0 28px;background:linear-gradient(180deg,rgba(10,13,20,.95) 0%,rgba(10,13,20,.75) 75%,transparent 100%);-webkit-backdrop-filter:var(--backdrop-blur);backdrop-filter:var(--backdrop-blur);border-bottom:1px solid var(--border-subtle)}.brand{display:flex;align-items:center;gap:16px;cursor:pointer}.brand-crest{width:42px;height:42px;border-radius:50%;background:radial-gradient(circle,#2d3852,#151a26);border:1.5px solid var(--gold);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-gold);font-family:var(--font-serif);font-size:20px;font-weight:700;color:var(--gold)}.brand-text h1{font-family:var(--font-serif);font-size:20px;font-weight:900;letter-spacing:.15em;color:var(--text-main);display:flex;align-items:baseline;gap:8px}.brand-tagline{font-size:11px;color:var(--text-muted);letter-spacing:.08em}.header-actions{display:flex;align-items:center;gap:12px}.search-bar-wrap{position:relative;width:320px}.search-input{width:100%;padding:10px 16px 10px 40px;border-radius:999px;background:#ffffff12;border:1px solid rgba(255,255,255,.15);color:var(--text-main);font-size:13px;outline:none;transition:var(--transition-smooth)}.search-input:focus{background:#ffffff1f;border-color:var(--gold);box-shadow:0 0 12px var(--gold-glow)}.search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--text-muted);pointer-events:none}.nav-btn{display:flex;align-items:center;gap:8px;padding:9px 18px;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer;border:1px solid var(--border-subtle);background:#ffffff0d;color:var(--text-main);transition:var(--transition-smooth);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.nav-btn:hover{background:#ffffff1a;border-color:var(--gold);transform:translateY(-1px)}.nav-btn.primary{background:linear-gradient(135deg,#d4af3740,#d4af3714);border-color:var(--gold);color:var(--text-gold);box-shadow:0 0 16px #d4af3726}.nav-btn.primary:hover{background:linear-gradient(135deg,#d4af3766,#d4af3726);box-shadow:var(--shadow-gold)}.main-content{flex:1;position:relative;width:100%;height:100%}.map-container{width:100%;height:100%;z-index:1}.leaflet-container{background-color:#0b0e14!important;font-family:var(--font-sans)!important}.custom-onsen-marker{display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .2s cubic-bezier(.175,.885,.32,1.275)}.custom-onsen-marker:hover{transform:scale(1.22) translateY(-4px);z-index:9999!important}.marker-pin{width:36px;height:36px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);display:flex;align-items:center;justify-content:center;box-shadow:0 4px 14px #0009;border:2px solid #fff;position:relative}.marker-pin.visited{background:linear-gradient(135deg,#d4af37,#aa8416);border-color:#ffe694;box-shadow:0 0 16px #d4af37cc}.marker-pin.wishlist{background:linear-gradient(135deg,#3b82f6,#1e40af);border-color:#93c5fd;box-shadow:0 0 16px #3b82f6cc}.marker-pin.default{background:linear-gradient(135deg,#334155,#1e293b);border-color:#94a3b8}.marker-icon{transform:rotate(45deg);font-size:15px;-webkit-user-select:none;user-select:none}.filter-drawer-toggle{position:absolute;top:90px;left:24px;z-index:500;display:flex;align-items:center;gap:8px;padding:10px 18px;border-radius:999px;background:var(--bg-glass-heavy);border:1px solid var(--border-subtle);color:var(--text-main);box-shadow:var(--shadow-glass);cursor:pointer;transition:var(--transition-smooth);-webkit-backdrop-filter:var(--backdrop-blur);backdrop-filter:var(--backdrop-blur);font-size:13px;font-weight:500}.filter-drawer-toggle:hover{border-color:var(--gold);transform:translateY(-2px);box-shadow:var(--shadow-gold)}.filter-drawer{position:absolute;top:86px;left:24px;bottom:24px;width:360px;max-width:calc(100vw - 48px);z-index:600;background:var(--bg-glass-heavy);border:1px solid var(--border-subtle);border-radius:16px;-webkit-backdrop-filter:var(--backdrop-blur);backdrop-filter:var(--backdrop-blur);box-shadow:0 20px 40px #0009;display:flex;flex-direction:column;overflow:hidden;animation:slideInLeft .3s cubic-bezier(.16,1,.3,1)}@keyframes slideInLeft{0%{opacity:0;transform:translate(-40px)}to{opacity:1;transform:translate(0)}}.drawer-header{padding:18px 20px;border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:space-between}.drawer-title{font-family:var(--font-serif);font-size:16px;font-weight:700;letter-spacing:.05em;display:flex;align-items:center;gap:8px;color:var(--text-gold)}.drawer-close{background:transparent;border:none;color:var(--text-muted);cursor:pointer;padding:4px;border-radius:6px;display:flex;align-items:center}.drawer-close:hover{color:var(--text-main);background:#ffffff1a}.drawer-content{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:24px}.filter-section-title{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);margin-bottom:10px;font-weight:600}.pill-group{display:flex;flex-wrap:wrap;gap:8px}.filter-pill{padding:6px 12px;border-radius:999px;font-size:12px;background:#ffffff0d;border:1px solid var(--border-subtle);color:var(--text-sub);cursor:pointer;transition:var(--transition-smooth)}.filter-pill:hover{background:#ffffff1f;color:var(--text-main)}.filter-pill.active{background:#d4af3733;border-color:var(--gold);color:var(--text-gold);font-weight:600}.quality-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:6px;font-size:11px;font-weight:600;background:#ffffff14;border:1px solid rgba(255,255,255,.12)}.quality-pill.acid{border-color:var(--quality-acid);color:var(--quality-acid);background:#f43f5e1f}.quality-pill.sulfur{border-color:var(--quality-sulfur);color:var(--quality-sulfur);background:#f59e0b1f}.quality-pill.salt{border-color:var(--quality-salt);color:var(--quality-salt);background:#3b82f61f}.quality-pill.simple{border-color:var(--quality-simple);color:var(--quality-simple);background:#10b9811f}.quality-pill.iron{border-color:var(--quality-iron);color:var(--quality-iron);background:#b453091f}.quality-pill.sulfate{border-color:var(--quality-sulfate);color:var(--quality-sulfate);background:#8b5cf61f}.quality-pill.bicarb{border-color:var(--quality-bicarb);color:var(--quality-bicarb);background:#06b6d41f}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;background:#05070cd1;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center;padding:24px;animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-card{width:100%;max-width:760px;max-height:90vh;background:var(--bg-secondary);border:1px solid rgba(212,175,55,.3);border-radius:20px;box-shadow:0 25px 60px -15px #000000d9,0 0 30px #d4af3726;display:flex;flex-direction:column;overflow:hidden;animation:popUp .3s cubic-bezier(.16,1,.3,1);position:relative}@keyframes popUp{0%{opacity:0;transform:scale(.96) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-header-hero{position:relative;height:220px;width:100%;overflow:hidden}.modal-hero-img{width:100%;height:100%;object-fit:cover;filter:brightness(.65)}.modal-hero-gradient{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#1218241a,#121824f2)}.modal-hero-content{position:absolute;bottom:20px;left:28px;right:28px;display:flex;justify-content:space-between;align-items:flex-end}.modal-hero-title h2{font-family:var(--font-serif);font-size:28px;font-weight:900;letter-spacing:.08em;color:#fff;text-shadow:0 2px 10px rgba(0,0,0,.7)}.modal-hero-title .kana{font-size:13px;color:var(--text-gold);letter-spacing:.12em;margin-bottom:4px}.modal-close-btn{position:absolute;top:16px;right:16px;width:36px;height:36px;border-radius:50%;background:#00000080;border:1px solid rgba(255,255,255,.2);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:10;transition:var(--transition-smooth)}.modal-close-btn:hover{background:#fff3;transform:rotate(90deg)}.modal-body{padding:28px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:28px}.science-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;background:#ffffff08;padding:18px;border-radius:12px;border:1px solid var(--border-subtle)}.stat-box{display:flex;flex-direction:column}.stat-label{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px}.stat-value{font-size:18px;font-weight:700;font-family:var(--font-sans);color:var(--text-main);display:flex;align-items:baseline;gap:4px}.stat-unit{font-size:12px;color:var(--text-muted);font-weight:400}.ph-bar-container{grid-column:span 3;margin-top:8px}.ph-track{height:8px;border-radius:4px;background:linear-gradient(90deg,#ef4444,#f97316,#eab308 40%,#10b981 55%,#06b6d4 75%,#3b82f6);position:relative;overflow:visible}.ph-indicator{position:absolute;top:-4px;width:16px;height:16px;border-radius:50%;background:#fff;border:2px solid #000;box-shadow:0 0 8px #000c;transform:translate(-50%);transition:left .4s ease}.ph-labels{display:flex;justify-content:space-between;font-size:10px;color:var(--text-muted);margin-top:6px}.culture-card{background:linear-gradient(135deg,#232d4466,#14192699);border-left:3px solid var(--gold);border-radius:0 12px 12px 0;padding:16px 20px;position:relative}.culture-card-title{font-family:var(--font-serif);font-size:14px;font-weight:700;color:var(--text-gold);margin-bottom:8px;display:flex;align-items:center;gap:8px}.culture-card-text{font-size:13.5px;color:var(--text-sub);line-height:1.7}.facility-list{display:flex;flex-direction:column;gap:12px}.facility-card{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:#ffffff08;border:1px solid var(--border-subtle);border-radius:10px;transition:var(--transition-smooth)}.facility-card:hover{background:#ffffff0f;border-color:#d4af3766}.facility-info h4{font-size:14px;font-weight:600;margin-bottom:4px;display:flex;align-items:center;gap:8px}.facility-type-badge{font-size:10px;padding:2px 6px;border-radius:4px;background:#ffffff1a;color:var(--text-muted)}.facility-meta{font-size:12px;color:var(--text-muted);display:flex;gap:14px}.modal-actions{display:flex;gap:12px;margin-top:10px}.action-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:13px 20px;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer;transition:var(--transition-smooth);border:none}.action-btn.visit{background:linear-gradient(135deg,#d4af37,#b89120);color:#0d1117;box-shadow:0 4px 16px #d4af3759}.action-btn.visit:hover{transform:translateY(-2px);box-shadow:0 6px 22px #d4af3780}.action-btn.wishlist{background:#ffffff14;border:1px solid var(--border-subtle);color:var(--text-main)}.action-btn.wishlist:hover{background:#ffffff26;border-color:#3b82f6;color:#93c5fd}.mypage-modal{max-width:920px}.mypage-header{padding:24px 32px;background:linear-gradient(135deg,#161e2e,#0d121c);border-bottom:1px solid var(--border-subtle);display:flex;justify-content:space-between;align-items:center}.stats-bar{display:flex;gap:28px;padding:16px 28px;background:#ffffff05;border-bottom:1px solid var(--border-subtle)}.stat-item{display:flex;flex-direction:column}.stat-item .val{font-size:24px;font-weight:800;color:var(--gold);font-family:var(--font-sans)}.stat-item .lbl{font-size:11px;color:var(--text-muted)}.badge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.badge-card{padding:16px;border-radius:12px;background:#ffffff08;border:1px solid var(--border-subtle);display:flex;gap:14px;position:relative;overflow:hidden;transition:var(--transition-smooth)}.badge-card.unlocked{background:linear-gradient(135deg,#d4af371f,#1e283c80);border-color:#d4af3780;box-shadow:0 0 20px #d4af3726}.badge-card.unlocked:after{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:linear-gradient(45deg,transparent,rgba(255,255,255,.06),transparent);transform:rotate(35deg);animation:shine 4s infinite linear}@keyframes shine{0%{transform:translate(-100%,-100%) rotate(35deg)}to{transform:translate(100%,100%) rotate(35deg)}}.badge-icon-box{width:48px;height:48px;border-radius:12px;background:#0006;border:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:center;font-size:24px;flex-shrink:0}.badge-card.unlocked .badge-icon-box{border-color:var(--gold);background:radial-gradient(circle,#d4af3733,#0009)}.badge-card.locked{opacity:.65;filter:grayscale(.6)}.badge-title{font-size:14px;font-weight:700;color:var(--text-main);margin-bottom:2px}.badge-desc{font-size:11px;color:var(--text-muted);line-height:1.4;margin-bottom:8px}.badge-progress-bar{height:4px;background:#ffffff1a;border-radius:2px;overflow:hidden}.badge-progress-fill{height:100%;background:var(--gold);border-radius:2px}.japan-prefectures-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(70px,1fr));gap:8px;margin-top:12px}.pref-badge{padding:8px 4px;text-align:center;border-radius:8px;font-size:12px;font-family:var(--font-serif);background:#ffffff08;border:1px solid var(--border-subtle);color:var(--text-muted);transition:var(--transition-smooth)}.pref-badge.visited{background:linear-gradient(135deg,#cbd5e147,#94a3b81a);border-color:#cbd5e1;color:#f1f5f9;font-weight:700;box-shadow:0 0 10px #cbd5e12e}.pref-badge.completed{background:linear-gradient(135deg,#d4af3752,#d4af371f);border-color:var(--gold);color:var(--text-gold);font-weight:700;box-shadow:0 0 12px #d4af3747}.timeline-list{display:flex;flex-direction:column;gap:16px;position:relative;padding-left:20px}.timeline-list:before{content:"";position:absolute;left:6px;top:6px;bottom:6px;width:2px;background:linear-gradient(180deg,var(--gold) 0%,rgba(255,255,255,.05) 100%)}.timeline-item{position:relative;background:#ffffff08;border:1px solid var(--border-subtle);border-radius:12px;padding:16px 20px}.timeline-dot{position:absolute;left:-20px;top:18px;width:12px;height:12px;border-radius:50%;background:var(--gold);border:2px solid var(--bg-secondary);box-shadow:0 0 8px var(--gold-glow)}.timeline-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.timeline-date{font-size:12px;color:var(--text-muted);font-family:var(--font-sans)}.timeline-title{font-family:var(--font-serif);font-size:16px;font-weight:700;color:var(--text-main)}.timeline-memo{font-size:13px;color:var(--text-sub);margin-top:6px;line-height:1.6}.form-group{display:flex;flex-direction:column;gap:6px}.form-label{font-size:12px;font-weight:600;color:var(--text-muted)}.form-input,.form-textarea,.form-select{padding:10px 14px;background:#ffffff0f;border:1px solid var(--border-subtle);border-radius:8px;color:var(--text-main);font-size:13px;font-family:var(--font-sans);outline:none;transition:var(--transition-smooth)}.form-input:focus,.form-textarea:focus,.form-select:focus{border-color:var(--gold);background:#ffffff1a;box-shadow:0 0 10px var(--gold-glow)}
