@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Zen+Old+Mincho:wght@600;700;900&family=Noto+Sans+JP:wght@400;500;600;700&family=JetBrains+Mono:wght@500;600&display=swap");:root{--c-bg:#f6f3ec;--c-bg-subtle:#ece8de;--c-surface:#fbf9f3;--c-surface-alt:#f3efe5;--c-ink:#14110d;--c-text:#1a1814;--c-text-muted:#5a564d;--c-text-light:#908a7c;--c-border:#cbc3b1;--c-border-strong:#8c8472;--c-border-light:#e0dbcd;--c-accent:#b9342a;--c-accent-hover:#971f15;--c-accent-soft:#f1d9d2;--c-accent-ink:#6e1810;--c-primary:#1a1814;--c-primary-hover:#000000;--c-primary-soft:#e0dbcd;--c-primary-text:#1a1814;--c-success:#4a6b3a;--c-success-soft:#dbe4cf;--c-warning:#a36b1f;--c-warning-soft:#efe1c6;--c-danger:#b9342a;--c-danger-soft:#f1d9d2;--c-info:#355870;--c-info-soft:#d6e0e8;--shadow-xs:0 1px 0 rgba(20,17,13,0.04);--shadow-sm:0 1px 0 rgba(20,17,13,0.05),0 1px 2px rgba(20,17,13,0.04);--shadow-md:0 2px 4px rgba(20,17,13,0.08);--shadow-lg:0 4px 12px rgba(20,17,13,0.10);--shadow-xl:0 8px 24px rgba(20,17,13,0.14);--shadow-ring:0 0 0 2px rgba(185,52,42,0.25);--radius-sm:2px;--radius-md:4px;--radius-lg:6px;--radius-xl:10px;--font-sans:"Inter","Noto Sans JP",-apple-system,BlinkMacSystemFont,"Hiragino Sans","Meiryo",sans-serif;--font-serif:"Zen Old Mincho","YuMincho","Hiragino Mincho ProN",serif;--font-mono:"JetBrains Mono",ui-monospace,"SFMono-Regular",Consolas,monospace;--font-xs:11px;--font-sm:12px;--font-md:13px;--font-lg:14px;--font-xl:16px;--font-2xl:18px;--font-3xl:22px;--font-4xl:28px;--t-fast:120ms cubic-bezier(0.4,0,0.2,1);--t-base:180ms cubic-bezier(0.4,0,0.2,1);--t-slow:260ms cubic-bezier(0.4,0,0.2,1)}*{box-sizing:border-box}body,html{margin:0;padding:0;font-family:var(--font-sans);color:var(--c-text);background:radial-gradient(ellipse at top,rgba(255,255,255,.55),transparent 60%),var(--c-bg);font-size:var(--font-md);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:0;font-feature-settings:"palt"}h1,h2,h3,h4{font-family:var(--font-serif);font-weight:700;line-height:1.35;letter-spacing:.01em;color:var(--c-ink)}.mono,.num{font-family:var(--font-mono)}.mono,.num,.stats,table{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}button{font-family:inherit;font-weight:500;cursor:pointer;transition:all var(--t-fast);-webkit-tap-highlight-color:transparent}button:active{transform:translateY(1px)}input,select,textarea{font-family:inherit;font-size:var(--font-md);color:var(--c-text);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-sm);padding:8px 10px;transition:border-color var(--t-fast),box-shadow var(--t-fast);width:100%}input:hover,select:hover,textarea:hover{border-color:var(--c-border-strong)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--c-accent);box-shadow:var(--shadow-ring)}a{color:var(--c-accent-ink);border-bottom:1px dotted var(--c-accent);transition:color var(--t-fast)}a,a:hover{text-decoration:none}a:hover{color:var(--c-accent-hover);border-bottom-style:solid}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--c-border);border-radius:0}::-webkit-scrollbar-thumb:hover{background:var(--c-border-strong)}.app-shell{display:flex;flex-direction:column;height:100vh;background:var(--c-bg)}.app-header{background:var(--c-ink);color:#f6f3ec;border-bottom:2px solid var(--c-accent);position:relative}.app-header:after{content:"";position:absolute;left:0;right:0;bottom:-3px;height:1px;background:rgba(255,255,255,.05)}.app-header a{color:#f6f3ec;border-bottom-color:rgba(246,243,236,.4)}.app-header a:hover{color:#fff}.app-header .btn{background:transparent;color:#f6f3ec;border-color:rgba(246,243,236,.25)}.app-header .btn:hover{background:rgba(246,243,236,.08);border-color:rgba(246,243,236,.5)}.brand{gap:12px;min-width:0}.brand,.brand-mark{display:inline-flex;align-items:center}.brand-mark{width:38px;height:38px;justify-content:center;background:var(--c-accent);font-weight:900;font-size:20px;letter-spacing:0;border:1px solid #6e1810;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08),var(--shadow-sm)}.brand-mark,.brand-title{color:#f6f3ec;font-family:var(--font-serif)}.brand-title{font-size:18px;font-weight:700;letter-spacing:.02em}.brand-sub{font-size:11px;color:rgba(246,243,236,.6);letter-spacing:.04em;margin-top:1px}.brand-chip,.brand-sub{font-family:var(--font-sans)}.brand-chip{display:inline-block;margin-left:8px;padding:1px 7px;font-size:10px;font-weight:600;letter-spacing:.12em;color:var(--c-accent);background:rgba(246,243,236,.92);border-radius:1px;vertical-align:2px}.app-main{display:grid;grid-template-columns:minmax(0,1fr) minmax(420px,480px);flex:1 1;min-height:0}.app-main.sidebar-collapsed{grid-template-columns:1fr 0}.app-main.sidebar-collapsed .app-sidebar{display:none}.app-map{min-width:0;min-height:0;position:relative}.app-sidebar{overflow-y:auto;padding:18px 18px 28px;border-left:1px solid var(--c-border);background:var(--c-surface-alt)}.app-sidebar>:first-child{background:var(--c-surface);border:1px solid var(--c-border);border-left:3px solid var(--c-ink);border-radius:var(--radius-sm);padding:10px 12px;margin-bottom:14px;box-shadow:var(--shadow-xs);font-size:var(--font-sm)}.app-sidebar>:first-child a,.app-sidebar>:first-child button{font-size:var(--font-sm)}@media (max-width:1100px){.app-main{grid-template-columns:1fr;grid-template-rows:55vh 1fr}.app-main.sidebar-collapsed{grid-template-rows:1fr 0}.app-sidebar{border-left:0;border-top:1px solid var(--c-border);padding:14px}}@media (max-width:768px){.app-shell{height:auto;min-height:100vh}.app-main{display:block;grid-template-rows:none}.app-map{height:45vh}.app-sidebar{overflow-y:visible;height:auto;padding:14px 14px 80px}.app-main.sidebar-collapsed{grid-template-rows:none}.app-main.sidebar-collapsed .app-map{height:88vh}.brand-title{font-size:15px}.brand-sub{display:none}}.card{padding:14px 16px;margin-bottom:12px;box-shadow:var(--shadow-xs)}.card,.card-elevated{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-md)}.card-elevated{border-left:3px solid var(--c-accent);padding:16px 18px;box-shadow:var(--shadow-sm)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 13px;border:1px solid var(--c-border-strong);border-radius:var(--radius-sm);background:var(--c-surface);color:var(--c-text);font-size:var(--font-md);font-weight:500;white-space:nowrap;transition:background var(--t-fast),border-color var(--t-fast)}.btn:hover{background:var(--c-bg-subtle)}.btn-primary,.btn:hover{border-color:var(--c-ink)}.btn-primary{background:var(--c-ink);color:#f6f3ec;font-weight:600}.btn-primary:hover{background:#000;border-color:#000}.btn-cta{background:var(--c-accent);color:#f6f3ec;border:1px solid var(--c-accent-ink);padding:12px 18px;font-size:var(--font-lg);font-weight:700;font-family:var(--font-serif);letter-spacing:.06em;border-radius:var(--radius-sm);box-shadow:0 2px 0 var(--c-accent-ink)}.btn-cta:hover{background:var(--c-accent-hover);box-shadow:0 2px 0 #4a0f08}.btn-cta:active{transform:translateY(1px);box-shadow:0 1px 0 var(--c-accent-ink)}.btn-ghost{background:transparent;border-color:transparent;color:var(--c-text-muted)}.btn-ghost:hover{background:var(--c-bg-subtle);color:var(--c-text);border-color:var(--c-border)}.btn-sm{padding:4px 9px;font-size:var(--font-sm)}.btn-icon{padding:6px}.badge{display:inline-flex;align-items:center;gap:4px;padding:1px 7px;font-size:var(--font-xs);font-weight:600;border-radius:1px;background:var(--c-primary-soft);color:var(--c-ink);border:1px solid var(--c-border);font-family:var(--font-sans);letter-spacing:.04em}.badge-success{background:var(--c-success-soft);color:#2c4422;border-color:#b4c0a4}.badge-warning{background:var(--c-warning-soft);color:#5e3d10;border-color:#cdb486}.badge-danger{background:var(--c-danger-soft);color:var(--c-accent-ink);border-color:#d8a8a0}.badge-info{background:var(--c-info-soft);color:#1f3848;border-color:#a9bdcb}.section-title{font-family:var(--font-serif);font-size:var(--font-sm);font-weight:700;color:var(--c-ink);letter-spacing:.12em;margin:0 0 10px;display:flex;align-items:center;gap:8px}.section-title:before{content:"";display:inline-block;width:3px;height:14px;background:var(--c-accent)}.tabs{display:flex;flex-wrap:nowrap;overflow-x:auto;align-items:stretch;border-bottom:1px solid var(--c-border-strong);margin:6px 0 18px;background:transparent;padding:0;gap:0;scrollbar-width:thin}.tabs::-webkit-scrollbar{height:4px}.tab{flex:1 1;min-width:56px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:10px 6px 9px;background:transparent;border:0;border-bottom:2px solid transparent;color:var(--c-text-muted);font-size:11px;font-weight:600;letter-spacing:.04em;line-height:1.1;position:relative;transition:color var(--t-fast),border-color var(--t-fast);margin-bottom:-1px;white-space:nowrap}.tab:hover{color:var(--c-ink)}.tab .tab-label{font-family:var(--font-sans)}.tab.tab-active{color:var(--c-accent);border-bottom-color:var(--c-accent)}.tab.tab-active .tab-label{color:var(--c-ink)}.tab-badge{top:4px;right:10px;min-width:14px;height:14px;padding:0 4px;background:var(--c-accent);color:#f6f3ec;font-size:9px;font-weight:700;border-radius:7px;justify-content:center;font-family:var(--font-mono)}.map-ctrl,.tab-badge{position:absolute;display:inline-flex;align-items:center}.map-ctrl{z-index:5;background:rgba(251,249,243,.96);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border:1px solid var(--c-border-strong);border-radius:var(--radius-sm);padding:7px 12px;font-size:var(--font-sm);font-weight:600;letter-spacing:.04em;box-shadow:var(--shadow-md);cursor:pointer;color:var(--c-ink);gap:6px;transition:background var(--t-fast),border-color var(--t-fast)}.map-ctrl:hover{background:#fff;border-color:var(--c-ink)}.map-ctrl.active{background:var(--c-accent);color:#f6f3ec;border-color:var(--c-accent-ink);box-shadow:0 2px 0 var(--c-accent-ink)}.maplibregl-ctrl-attrib{font-size:10px;opacity:.65}@keyframes pulse-soft{0%,to{opacity:1}50%{opacity:.55}}.animate-pulse{animation:pulse-soft 1.6s ease-in-out infinite}@keyframes fade-in{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}.animate-fade{animation:fade-in var(--t-base) ease-out}.app-footer-mini{margin-top:24px;padding-top:12px;border-top:1px dashed var(--c-border-strong);display:flex;justify-content:space-between;align-items:center;font-size:10px;color:var(--c-text-light);font-family:var(--font-mono);letter-spacing:.06em}