:root{--bg:#1a1a2e;--panel-bg:#16213e;--accent:#e94560;--text:#eee;--text-secondary:#aab;--input-bg:#0f0f23;--border:#2a2a4a}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:'Segoe UI','Noto Sans JP','Noto Sans SC',sans-serif;background:var(--bg);overflow:hidden;height:100vh;width:100vw;user-select:none;-webkit-user-select:none}
#app{display:flex;height:100vh;width:100vw}
#sidebar{width:360px;min-width:360px;background:var(--panel-bg);color:var(--text);display:flex;flex-direction:column;border-right:1px solid var(--border);z-index:1000}
#sidebar-header{padding:14px 20px;background:linear-gradient(135deg,#1a1a2e,#16213e);border-bottom:2px solid var(--accent);text-align:center}
#sidebar-header h1{font-size:1.2em;font-weight:800;color:#fff}
#sidebar-header .subtitle{font-size:.68em;color:var(--text-secondary)}
#lang-row{display:flex;align-items:center;gap:8px;padding:10px 20px;background:var(--input-bg);border-bottom:1px solid var(--border)}
#lang-row label{font-size:.72em;color:var(--text-secondary);white-space:nowrap}
#lang-row select{flex:1;font-size:.78em;padding:6px 8px;background:var(--panel-bg);border:1px solid var(--border);color:var(--text);border-radius:5px}
#sidebar-content{flex:1;padding:14px 20px;overflow-y:auto;display:flex;flex-direction:column;gap:10px}
.form-group{display:flex;flex-direction:column;gap:3px}
.form-group label{font-size:.75em;font-weight:700;color:var(--text-secondary);letter-spacing:.04em}
.form-group .value-display{font-size:.7em;color:var(--accent);text-align:right}
input[type="range"]{-webkit-appearance:none;width:100%;height:6px;border-radius:3px;background:linear-gradient(90deg,#2ecc71,#f1c40f,#e74c3c,#8e44ad);outline:none}
input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:var(--accent);cursor:pointer;border:2px solid #fff}
select{background:var(--input-bg);border:1px solid var(--border);color:var(--text);padding:7px 8px;border-radius:5px;font-size:.85em;width:100%;outline:none;cursor:pointer}
.btn-row{display:flex;gap:8px}
.btn{flex:1;padding:11px 6px;border:none;border-radius:7px;font-size:.85em;font-weight:700;cursor:pointer;transition:all .2s;text-align:center}
.btn-start{background:var(--accent);color:#fff}
.btn-start:hover{background:#ff5a7a}
.btn-start:disabled{background:#555;cursor:not-allowed}
.btn-reset{background:#444;color:#ccc}.btn-reset:hover{background:#666}
#epicenter-info{background:var(--input-bg);border-radius:6px;padding:10px;font-size:.78em;color:var(--text-secondary);border:1px dashed var(--border);min-height:55px;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1.4}
#epicenter-info.set{border-color:var(--accent);color:var(--text);text-align:left;justify-content:flex-start}
#status-bar{margin-top:auto;padding:10px 20px;background:var(--input-bg);border-top:1px solid var(--border);font-size:.72em;color:var(--text-secondary);display:flex;align-items:center;gap:8px}
.status-dot{width:8px;height:8px;border-radius:50%;background:#2ecc71;flex-shrink:0}
.status-dot.running{background:var(--accent);animation:pulse .6s infinite alternate}
@keyframes pulse{to{box-shadow:0 0 12px var(--accent)}}
#map-container{flex:1;position:relative}
#map{width:100%;height:100%;background:#d8e8f0}
#timeline{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);background:rgba(22,33,62,.92);border:1px solid var(--border);border-radius:10px;padding:10px 20px;color:var(--text);font-size:.75em;display:none;z-index:999;backdrop-filter:blur(8px);min-width:360px;text-align:center}
#timeline.show{display:block}
#timeline .elapsed{font-size:2em;font-weight:800;color:var(--accent);font-family:Consolas,monospace}
#timeline .wave-info{margin-top:4px;display:flex;gap:20px;justify-content:center}
.wave-info .p-wave{color:#4da6ff}.wave-info .s-wave{color:#ff9f43}
.sim-ctrl{margin-top:6px;display:flex;gap:6px;justify-content:center}
.sim-ctrl button{background:var(--border);border:none;color:var(--text);padding:3px 10px;border-radius:4px;cursor:pointer;font-size:1.1em}
.sim-ctrl button:hover{background:var(--accent)}
#eew-alert{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:rgba(200,20,30,.95);color:#fff;padding:20px 40px;border-radius:12px;font-size:1.4em;font-weight:900;z-index:1001;display:none;text-align:center;letter-spacing:.06em;border:3px solid #ff0;animation:eew-flash .5s infinite alternate}
@keyframes eew-flash{to{box-shadow:0 0 80px rgba(255,255,0,.8)}}
#eew-alert .eew-title{font-size:.65em;color:#ff0}
#eew-alert .eew-countdown{font-size:2.8em;font-weight:900;margin-top:4px}
#legend{position:absolute;top:12px;right:12px;background:rgba(22,33,62,.9);border:1px solid var(--border);border-radius:8px;padding:10px 14px;color:var(--text);font-size:.68em;z-index:999;backdrop-filter:blur(6px);display:none;line-height:1.5}
#legend.show{display:block}
#legend h3{font-size:.9em;margin-bottom:4px}
#legend .row{display:flex;align-items:center;gap:5px}
#legend .swatch{width:14px;height:14px;border-radius:50%;flex-shrink:0;border:2px solid rgba(255,255,255,.3)}
#max-pga-panel{position:absolute;top:425px;right:12px;background:rgba(22,33,62,.9);border:1px solid var(--border);border-radius:8px;padding:10px 14px;color:var(--text);font-size:.68em;z-index:999;backdrop-filter:blur(6px);display:none;text-align:center;min-width:90px}
#max-pga-panel.show{display:block}
.max-pga-title{font-size:.72em;color:var(--text-secondary)}
.max-pga-value{font-size:2em;font-weight:900;color:#ff6b6b;font-family:Consolas,monospace}
.max-pga-unit{font-size:.62em;color:var(--text-secondary)}
.max-shindo-value{font-size:1.2em;font-weight:900}
.epicenter-marker{background:transparent!important;border:none!important}
.epicenter-icon{position:relative;width:40px;height:40px;transform:rotate(45deg)}
.epicenter-icon .cross-v,.epicenter-icon .cross-h{position:absolute;background:#ff1744}
.epicenter-icon .cross-v{width:5px;height:40px;left:17.5px;top:0;border-radius:3px}
.epicenter-icon .cross-h{width:40px;height:5px;left:0;top:17.5px;border-radius:3px}
.epicenter-pulse{position:absolute;width:40px;height:40px;border:3px solid #ff1744;border-radius:50%;left:0;top:0;animation:epicenter-pulse 1s infinite}
@keyframes epicenter-pulse{0%{transform:scale(1);opacity:1}100%{transform:scale(3);opacity:0}}
#sidebar-content::-webkit-scrollbar{width:4px}
#sidebar-content::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}
/* Tab navigation */
#tab-nav{display:flex;background:var(--input-bg);border-bottom:1px solid var(--border)}
.tab-btn{flex:1;padding:8px 4px;border:none;background:transparent;color:var(--text-secondary);font-size:.72em;font-weight:700;cursor:pointer;transition:all .2s;border-bottom:2px solid transparent}
.tab-btn.active{color:var(--accent);border-bottom-color:var(--accent);background:rgba(233,68,96,.08)}
.tab-btn:hover{color:var(--text)}
.tab-panel{display:none;flex-direction:column;gap:8px}
.tab-panel.active{display:flex}
/* Advanced panel */
.adv-section{margin-bottom:2px}
.adv-title{font-size:.7em;font-weight:800;color:var(--accent);padding:6px 0 4px;border-bottom:1px solid var(--border);text-transform:uppercase;letter-spacing:.05em;cursor:pointer}
.adv-title:hover{color:#ff5a7a}
.adv-row{display:flex;align-items:center;gap:6px;padding:3px 0;font-size:.68em}
.adv-row span:first-child{width:75px;flex-shrink:0;color:var(--text-secondary);font-size:.92em}
.adv-row input[type="range"]{flex:1;height:3px}
.adv-row select{flex:1;min-width:0;background:var(--input-bg);color:var(--text);border:1px solid var(--border);border-radius:4px;font-size:.95em;padding:1px 2px}
.adv-row input[type="range"]::-webkit-slider-thumb{width:12px;height:12px}
.adv-val{width:52px;text-align:right;color:var(--text);font-family:Consolas,monospace;font-size:.85em;flex-shrink:0}
.adv-rst{width:18px;height:18px;border:none;border-radius:50%;background:var(--border);color:var(--text-secondary);font-size:.6em;cursor:pointer;flex-shrink:0;line-height:1}
.adv-rst:hover{background:var(--accent);color:#fff}
/* Info panel */
.info-block{background:var(--input-bg);border-radius:6px;padding:10px;font-size:.7em;line-height:1.6;font-family:Consolas,monospace}
.info-block .info-label{color:var(--text-secondary)}
.info-block .info-val{color:var(--accent);font-weight:700}
.info-block .info-hdr{color:var(--accent);font-weight:800;font-size:.95em;margin-bottom:2px;border-bottom:1px solid var(--border);padding-bottom:2px}
/* Checkbox row */
.chk-row{display:flex;align-items:center;gap:6px;font-size:.75em;color:var(--text);cursor:pointer}
.chk-row input[type="checkbox"]{accent-color:var(--accent);width:auto}
/* Value display */
.vd{font-size:.7em;color:var(--accent);text-align:right}
.input-row{display:flex;gap:6px;align-items:center}
.input-row input[type="range"]{flex:1}
.input-row input[type="number"]{width:58px;background:var(--input-bg);border:1px solid var(--border);color:var(--text);padding:2px 4px;border-radius:4px;font-size:.78em;text-align:center;font-family:Consolas,monospace}
.input-row input[type="number"]:focus{border-color:var(--accent);outline:none}
.apply-btn{width:24px;height:24px;border:none;border-radius:4px;background:var(--accent);color:#fff;font-size:.8em;cursor:pointer;flex-shrink:0;line-height:1}
.apply-btn:hover{background:#ff5a7a}
/* Sidebar header smaller */
#sidebar-header{padding:10px 16px}
#sidebar-header h1{font-size:1.05em}
#sidebar-content{padding:8px 14px;gap:7px}
#tsunami-enable{accent-color:var(--accent)}
/* Disclaimer */
.disclaimer{padding:6px 8px;margin-top:6px;background:rgba(233,69,96,.08);border:1px solid rgba(233,69,96,.2);border-radius:5px;font-size:.65em;color:var(--text-secondary);line-height:1.5;text-align:center}
/* Visit counter */
#visit-counter{padding:4px 8px;font-size:.62em;color:var(--text-secondary);text-align:center;opacity:.7}
#visit-count{color:var(--accent);font-weight:700}
/* Map simulation watermark */
#sim-watermark{position:absolute;bottom:50px;left:50%;transform:translateX(-50%);z-index:1000;pointer-events:none;color:rgba(255,60,30,.55);font-size:.85em;font-weight:800;letter-spacing:2px;white-space:nowrap;text-shadow:0 0 8px rgba(255,0,0,.3);animation:watermark-pulse 3s ease-in-out infinite}
@keyframes watermark-pulse{0%,100%{opacity:.55}50%{opacity:.85}}
/* JQuake-style EEW info box */
#eew-info-box{position:absolute;top:12px;left:12px;z-index:1000;display:flex;align-items:stretch;background:rgba(0,0,0,.82);border:2px solid rgba(255,60,30,.7);border-radius:6px;overflow:hidden;pointer-events:none;min-width:180px}
#eew-info-box .eew-shindo{width:52px;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.5);font-size:28px;font-weight:900;color:#fff;text-shadow:0 0 6px rgba(255,255,255,.5)}
#eew-info-box .eew-detail{flex:1;padding:6px 10px;display:flex;flex-direction:column;gap:2px}
#eew-info-box .eew-bulletin{font-size:.75em;font-weight:700;color:#fa0}
#eew-info-box .eew-mag{font-size:1.1em;font-weight:800;color:#fff}
#eew-info-box .eew-depth{font-size:.75em;color:#ccc}
#eew-info-box .eew-time{font-size:.7em;color:var(--text-secondary)}
/* Help button & modal */
.help-link{color:var(--accent);font-size:.75em;cursor:pointer;white-space:nowrap;margin-left:auto;flex-shrink:0}
.help-link:hover{color:#ff5a7a;text-decoration:underline}
.help-overlay{position:fixed;top:0;left:0;width:100%;height:100%;z-index:9999;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center}
.help-panel{background:var(--panel-bg);border:1px solid var(--border);border-radius:8px;max-width:600px;max-height:80vh;width:90%;overflow:hidden;display:flex;flex-direction:column}
.help-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);font-size:1.1em;font-weight:700;color:var(--accent)}
.help-close{border:none;background:none;color:var(--text-secondary);font-size:1.4em;cursor:pointer;padding:0 4px}
.help-close:hover{color:var(--accent)}
.help-body{overflow-y:auto;padding:14px 16px;font-size:.82em;line-height:1.6;color:var(--text)}
.help-body h3{color:var(--accent);font-size:1em;margin:12px 0 4px}
.help-body p{margin:0 0 8px;color:var(--text-secondary)}
.help-body h3:first-child{margin-top:0}
/* Error overlay */
#error-overlay{position:fixed;bottom:0;left:0;right:0;z-index:99999;display:flex;justify-content:center;pointer-events:none}
#error-panel{pointer-events:auto;max-width:700px;width:95%;margin-bottom:4px;background:rgba(180,20,20,.95);border:2px solid rgba(255,60,60,.7);border-radius:6px 6px 0 0;overflow:hidden;backdrop-filter:blur(6px)}
#error-header{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:rgba(0,0,0,.3);font-size:.78em;font-weight:700;color:#faa}
#error-close{border:none;background:none;color:#faa;font-size:1.2em;cursor:pointer;padding:0 4px;line-height:1}
#error-close:hover{color:#fff}
#error-body{padding:8px 12px;font-size:.72em;color:#fcc;line-height:1.5;font-family:Consolas,monospace;max-height:120px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}
/* Map labels */
.pref-label{background:transparent!important;border:none!important;box-shadow:none!important;font-size:10px;color:#6a5a7a;font-weight:600;text-shadow:0 0 3px rgba(255,255,255,.7);white-space:nowrap}
.city-label{background:transparent!important;border:none!important;box-shadow:none!important;font-size:9px;color:#555;font-weight:500;white-space:nowrap}
/* Real-time earthquake bar */
#realtime-bar{margin-bottom:4px}
.realtime-btn{width:100%;padding:8px;border:2px dashed var(--border);border-radius:6px;background:var(--input-bg);color:var(--text-secondary);font-size:.78em;font-weight:700;cursor:pointer;transition:all .3s}
.realtime-btn:hover{border-color:var(--accent);color:var(--accent)}
.realtime-btn.active{border-color:#2ecc71;border-style:solid;color:#2ecc71;background:rgba(46,204,113,.08)}
.realtime-btn.pulse{animation:realtime-pulse 2s infinite}
@keyframes realtime-pulse{0%,100%{box-shadow:0 0 0 rgba(46,204,113,0)}50%{box-shadow:0 0 12px rgba(46,204,113,.3)}}
#realtime-list{max-height:160px;overflow-y:auto;margin-top:4px;background:var(--input-bg);border-radius:6px;padding:4px}
.realtime-item{padding:5px 8px;cursor:pointer;border-radius:4px;font-size:.7em;color:var(--text);border-bottom:1px solid var(--border);transition:background .15s}
.realtime-item:last-child{border-bottom:none}
.realtime-item:hover{background:rgba(233,69,96,.1)}
.realtime-item .rt-mag{font-weight:700;color:var(--accent)}
.realtime-item .rt-place{color:var(--text-secondary);font-size:.9em}
.realtime-item .rt-time{float:right;color:var(--text-secondary);font-size:.85em}
/* Auto-focus button */
.autofocus-btn{position:absolute;bottom:90px;left:12px;z-index:1500;width:36px;height:36px;border-radius:50%;border:2px solid rgba(255,255,255,.4);background:rgba(22,33,62,.85);color:#fff;font-size:18px;cursor:pointer;display:none;align-items:center;justify-content:center;backdrop-filter:blur(4px);transition:all .2s}
.autofocus-btn.show{display:flex !important}
.autofocus-btn.active{border-color:#2ecc71;color:#2ecc71;box-shadow:0 0 10px rgba(46,204,113,.4)}
.autofocus-btn.active::after{color:#2ecc71}
.autofocus-btn::after{content:'⊕';font-size:16px}
.autofocus-btn:hover{border-color:#fff}
.autofocus-label{position:absolute;bottom:75px;left:14px;z-index:1500;display:none;font-size:10px;color:rgba(255,255,255,.75);white-space:nowrap;pointer-events:none;text-shadow:0 0 4px rgba(0,0,0,.6)}
.autofocus-label.show{display:block !important}
/* Intensity table */
#intensity-table{display:none;margin-bottom:6px;font-size:.7em;background:var(--input-bg);border-radius:6px;padding:6px;max-height:200px;overflow-y:auto}
#intensity-table.show{display:block}
#intensity-table table{width:100%;border-collapse:collapse}
#intensity-table th{font-size:.8em;color:var(--text-secondary);text-align:left;padding:1px 4px;border-bottom:1px solid var(--border)}
#intensity-table td{padding:1px 4px;font-family:Consolas,monospace;font-size:.85em;white-space:nowrap}
#intensity-table .shindo-cell{font-weight:700;text-align:center;width:28px;border-radius:2px}
/* Station popup */
.station-popup{position:absolute;z-index:2000;background:rgba(22,33,62,.95);border:1px solid var(--accent);border-radius:8px;padding:8px 12px;color:#fff;font-size:.72em;line-height:1.5;pointer-events:none;box-shadow:0 4px 16px rgba(0,0,0,.5);min-width:140px}
.station-popup .sp-name{font-weight:700;color:var(--accent);font-size:1.1em}
.station-popup .sp-val{color:#fff;font-weight:700}
/* -- Mobile toggle button -- */
#btn-mobile-toggle{display:none;position:absolute;top:8px;left:8px;z-index:2000;width:36px;height:36px;border-radius:6px;border:1px solid var(--border);background:rgba(22,33,62,.9);color:var(--text);font-size:18px;cursor:pointer;align-items:center;justify-content:center;backdrop-filter:blur(4px)}
#btn-mobile-toggle.show{display:flex}
/* -- Share button -- */
#btn-share{background:rgba(22,33,62,.9);border:1px solid var(--border);color:var(--text);padding:4px 10px;border-radius:4px;cursor:pointer;font-size:.9em;margin-left:4px;transition:all .2s;white-space:nowrap}
#btn-share:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
#share-toast{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:rgba(46,204,113,.95);color:#fff;padding:10px 24px;border-radius:8px;font-size:.85em;font-weight:700;z-index:9999;pointer-events:none;opacity:0;transition:opacity .3s}
#share-toast.show{opacity:1}
/* ================================================================
   MOBILE RESPONSIVE — max-width 768px
   ================================================================ */
@media (max-width:768px) {
  body{overflow:hidden}
  #app{flex-direction:column}
  #sidebar{width:100%;min-width:0;max-height:45vh;border-right:none;border-bottom:2px solid var(--accent);position:absolute;bottom:0;left:0;z-index:1500;transition:max-height .3s}
  #sidebar.collapsed{max-height:0;overflow:hidden;border-bottom:none}
  #sidebar-header{padding:8px 12px}
  #sidebar-header h1{font-size:1em}
  #sidebar-content{padding:8px 12px;gap:6px;max-height:calc(45vh - 90px)}
  #map-container{flex:1;height:100vh}
  #btn-mobile-toggle.show{display:flex}
  /* Timeline compact */
  #timeline{min-width:auto;width:90vw;bottom:8px;padding:6px 12px;font-size:.65em}
  #timeline .elapsed{font-size:1.3em}
  #timeline .wave-info{gap:10px}
  /* Legend compact */
  #legend{top:40px;right:4px;padding:6px 8px;font-size:.6em}
  #legend h3{font-size:.75em}
  /* Max PGA panel reposition */
  #max-pga-panel{top:auto;bottom:70px;right:4px;padding:6px 8px;font-size:.6em;min-width:70px}
  #max-pga-panel .max-pga-value{font-size:1.4em}
  /* EEW info box reposition */
  #eew-info-box{top:40px;left:4px}
  /* EEW alert smaller */
  #eew-alert{padding:14px 24px;font-size:1em}
  #eew-alert .eew-countdown{font-size:2em}
  /* Realtime bar */
  #realtime-list{max-height:100px}
  /* Admin page */
  #admin-container{padding:10px;max-width:100%}
  .stat-grid{grid-template-columns:1fr}
  /* Error overlay */
  #error-panel{max-width:95vw}
  /* Help panel */
  .help-panel{width:95vw;max-height:80vh;margin:10px}
  .help-body{max-height:calc(80vh - 50px)}
  /* Share button inline */
  #btn-share{font-size:.75em;padding:3px 6px}
}
@media(max-width:750px){#app{flex-direction:column}#sidebar{width:100%;min-width:100%;max-height:44vh}}
