*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#0a0a0f;--bg2:#12121a;--bg3:#1a1a28;
  --red:#c0392b;--purple:#8e44ad;--green:#27ae60;--orange:#e67e22;
  --text:#e8e8e8;--muted:#888;--border:#2a2a40;--gold:#f1c40f;--cyan:#00d4ff;
}
html,body{width:100%;height:100%;background:var(--bg);color:var(--text);font-family:'Courier New','Noto Sans JP',monospace;overflow:hidden;touch-action:manipulation}
#app{width:100%;height:100%;max-width:420px;margin:0 auto;display:flex;flex-direction:column;position:relative;overflow:hidden}
.screen{display:none;flex-direction:column;height:100%}
.screen.active{display:flex}
.btn{display:inline-flex;align-items:center;justify-content:center;padding:12px 20px;border:1px solid var(--border);background:var(--bg3);color:var(--text);font-family:inherit;font-size:14px;cursor:pointer;border-radius:4px;transition:all .15s;-webkit-tap-highlight-color:transparent;user-select:none;min-height:44px}
.btn:active{transform:scale(.96)}
.btn.primary{border-color:var(--red);color:var(--red)}
.btn.primary:active{background:var(--red);color:#fff}
.btn.success{border-color:var(--green);color:var(--green)}
.btn.warn{border-color:var(--orange);color:var(--orange)}
.btn.disabled{opacity:.3;pointer-events:none}
.tag{display:inline-block;padding:2px 8px;border-radius:3px;font-size:11px;font-weight:bold}
/* title */
#screen-title{background:radial-gradient(ellipse at 50% 30%,#1a0a2e 0%,var(--bg) 70%);align-items:center;justify-content:center;gap:0}
.title-glitch{font-size:42px;font-weight:bold;letter-spacing:6px;color:var(--red);text-shadow:0 0 20px rgba(192,57,43,.8),0 0 40px rgba(192,57,43,.4);animation:glitch 4s infinite;margin-bottom:6px}
.title-sub{font-size:12px;letter-spacing:4px;color:var(--purple);margin-bottom:60px}
@keyframes glitch{0%,90%,100%{text-shadow:0 0 20px rgba(192,57,43,.8),0 0 40px rgba(192,57,43,.4)}92%{text-shadow:-3px 0 var(--cyan),3px 0 var(--purple);transform:skewX(-2deg)}94%{text-shadow:3px 0 var(--cyan),-3px 0 var(--red);transform:skewX(1deg)}96%{text-shadow:0 0 20px rgba(192,57,43,.8);transform:skewX(0)}}
.title-buttons{display:flex;flex-direction:column;gap:12px;width:200px}
.title-demon-art{font-size:80px;margin-bottom:20px;animation:float 3s ease-in-out infinite;filter:drop-shadow(0 0 20px rgba(142,68,173,.6))}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
.title-version{position:absolute;bottom:16px;font-size:10px;color:var(--muted)}
/* explore */
#screen-explore{background:var(--bg)}
.explore-header{background:var(--bg2);border-bottom:1px solid var(--border);padding:10px 14px;display:flex;align-items:center;justify-content:space-between}
.floor-info{display:flex;flex-direction:column}
.floor-num{font-size:20px;font-weight:bold;color:var(--cyan);letter-spacing:2px}
.floor-label{font-size:10px;color:var(--muted);letter-spacing:1px}
.macca-display{font-size:13px;color:var(--gold)}
.header-btns{display:flex;gap:6px}
.explore-log{flex:1;overflow-y:auto;padding:10px 14px;display:flex;flex-direction:column;gap:4px;scroll-behavior:smooth}
.log-entry{font-size:12px;line-height:1.6;padding:3px 0;border-bottom:1px solid rgba(255,255,255,.04);animation:fadeIn .3s ease}
@keyframes fadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1}}
.log-entry.encounter{color:var(--red)}.log-entry.success{color:var(--green)}.log-entry.warn{color:var(--orange)}.log-entry.system{color:var(--purple)}.log-entry.boss{color:var(--gold);font-weight:bold}
.party-bar{background:var(--bg2);border-top:1px solid var(--border);padding:10px 14px}
.party-label{font-size:10px;color:var(--muted);letter-spacing:1px;margin-bottom:6px}
.party-list{display:flex;gap:8px}
.party-card{flex:1;background:var(--bg3);border:1px solid var(--border);border-radius:6px;padding:8px;min-width:0;transition:border-color .2s}
.party-card.empty{opacity:.3;border-style:dashed}.party-card.dead{border-color:var(--red);opacity:.5}
.party-card-top{display:flex;align-items:center;gap:6px;margin-bottom:4px}
.party-demon-emoji{font-size:22px}.party-demon-info{min-width:0}
.party-demon-name{font-size:11px;font-weight:bold;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.party-demon-lv{font-size:10px;color:var(--muted)}
.hp-bar-wrap{height:4px;background:var(--border);border-radius:2px;overflow:hidden}
.hp-bar{height:100%;background:var(--green);border-radius:2px;transition:width .4s,background .4s}
.hp-bar.low{background:var(--orange)}.hp-bar.critical{background:var(--red)}
.explore-controls{background:var(--bg2);border-top:1px solid var(--border);padding:10px 14px;display:flex;gap:8px}
.explore-controls .btn{flex:1}
.progress-wrap{padding:6px 14px;background:var(--bg2);border-top:1px solid var(--border)}
.progress-label{font-size:10px;color:var(--muted);margin-bottom:4px;display:flex;justify-content:space-between}
.progress-bar-bg{height:6px;background:var(--border);border-radius:3px;overflow:hidden}
.progress-bar{height:100%;background:linear-gradient(90deg,var(--purple),var(--cyan));border-radius:3px;transition:width 1s linear}
/* battle */
#screen-battle{background:radial-gradient(ellipse at 50% 20%,#1a0018 0%,var(--bg) 60%)}
.battle-header{padding:12px 14px;background:rgba(0,0,0,.4);border-bottom:1px solid var(--border);text-align:center}
.battle-floor{font-size:11px;color:var(--muted);letter-spacing:2px}
.battle-title{font-size:14px;color:var(--red);letter-spacing:1px}
.battle-enemy-area{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:20px}
.enemy-display{width:120px;height:120px;display:flex;align-items:center;justify-content:center}
.enemy-sprite{font-size:70px;filter:drop-shadow(0 0 20px rgba(192,57,43,.6));animation:enemyFloat 2s ease-in-out infinite}
.enemy-sprite.boss{font-size:85px;filter:drop-shadow(0 0 30px rgba(241,196,15,.8))}
@keyframes enemyFloat{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-6px) scale(1.02)}}
.enemy-hit{animation:hit .3s ease !important}
@keyframes hit{0%{transform:translateX(0);filter:brightness(3)}25%{transform:translateX(-8px)}75%{transform:translateX(8px)}100%{transform:translateX(0);filter:brightness(1)}}
.enemy-info{text-align:center}.enemy-name{font-size:18px;font-weight:bold;color:var(--text);margin-bottom:2px}
.enemy-tags{display:flex;gap:6px;justify-content:center;margin-bottom:8px}
.enemy-hp-wrap{width:200px;height:8px;background:var(--border);border-radius:4px;overflow:hidden;margin:0 auto}
.enemy-hp-bar{height:100%;background:linear-gradient(90deg,var(--red),var(--orange));border-radius:4px;transition:width .4s}
.enemy-hp-text{font-size:11px;color:var(--muted);margin-top:4px}
.battle-log-area{padding:8px 14px;min-height:50px;max-height:70px;overflow:hidden}
.battle-log-text{font-size:13px;line-height:1.6;color:var(--text);animation:fadeIn .2s ease}
.battle-actions{background:var(--bg2);border-top:1px solid var(--border);padding:12px 14px}
.action-row{display:flex;gap:8px;margin-bottom:8px}
.action-row:last-child{margin-bottom:0}
.action-row .btn{flex:1;font-size:13px}
.negotiate-panel{display:none;background:var(--bg2);border-top:1px solid var(--border);padding:10px 14px}
.negotiate-panel.active{display:block}
.negotiate-title{font-size:11px;color:var(--purple);letter-spacing:1px;margin-bottom:8px}
.negotiate-opts{display:flex;flex-direction:column;gap:6px}
.negotiate-opts .btn{font-size:12px}
/* fusion */
#screen-fusion{background:radial-gradient(ellipse at 50% 0%,#0d001a 0%,var(--bg) 60%)}
.fusion-header{padding:12px 14px;background:rgba(0,0,0,.4);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px}
.fusion-header-title{font-size:15px;font-weight:bold;color:var(--purple);letter-spacing:2px}
.fusion-content{flex:1;overflow-y:auto;padding:14px}
.fusion-slots{display:flex;gap:10px;align-items:center;margin-bottom:16px}
.fusion-slot{flex:1;background:var(--bg3);border:1px dashed var(--border);border-radius:8px;padding:12px;text-align:center;cursor:pointer;min-height:100px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;transition:border-color .2s}
.fusion-slot.filled{border-style:solid;border-color:var(--purple)}.fusion-slot:active{background:#1e1e2e}
.fusion-slot-emoji{font-size:32px}.fusion-slot-name{font-size:12px;font-weight:bold}.fusion-slot-info{font-size:10px;color:var(--muted)}
.fusion-arrow{font-size:20px;color:var(--purple);flex-shrink:0}
.fusion-result-preview{background:var(--bg3);border:1px solid var(--purple);border-radius:8px;padding:14px;text-align:center;margin-bottom:14px;display:none}
.fusion-result-preview.active{display:block}
.fusion-result-label{font-size:10px;color:var(--purple);letter-spacing:2px;margin-bottom:8px}
.fusion-result-emoji{font-size:48px;margin-bottom:4px}.fusion-result-name{font-size:18px;font-weight:bold;color:var(--gold)}.fusion-result-skill{font-size:11px;color:var(--cyan);margin-top:4px}
.fusion-demon-list{display:flex;flex-direction:column;gap:6px}
.fusion-demon-item{background:var(--bg3);border:1px solid var(--border);border-radius:6px;padding:10px 12px;display:flex;align-items:center;gap:10px;cursor:pointer;transition:border-color .2s}
.fusion-demon-item:active{border-color:var(--purple)}.fusion-demon-item.selected{border-color:var(--purple);background:#1e1230}
.fusion-demon-item .emoji{font-size:28px}.fusion-demon-item .info{flex:1}
.fusion-demon-item .dname{font-size:13px;font-weight:bold}.fusion-demon-item .ddetail{font-size:11px;color:var(--muted)}.fusion-demon-item .dskill{font-size:10px;color:var(--cyan)}
/* party screen */
#screen-party{background:var(--bg)}
.party-screen-header{padding:12px 14px;background:var(--bg2);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px}
.party-screen-title{font-size:15px;font-weight:bold;color:var(--cyan);letter-spacing:2px}
.party-screen-content{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:8px}
.demon-card-full{background:var(--bg3);border:1px solid var(--border);border-radius:8px;padding:12px;display:flex;gap:12px;align-items:center}
.demon-card-full.in-party{border-color:var(--cyan)}.demon-card-full .emoji{font-size:38px;flex-shrink:0}.demon-card-full .info{flex:1;min-width:0}
.demon-card-full .dname{font-size:14px;font-weight:bold;margin-bottom:2px}
.demon-card-full .dtags{display:flex;gap:4px;margin-bottom:4px;flex-wrap:wrap}
.demon-card-full .dstats{font-size:11px;color:var(--muted);margin-bottom:4px}
.demon-card-full .dskills{font-size:11px;color:var(--cyan)}.demon-card-full .dhp{margin-top:4px}
.demon-card-full .action-btn{flex-shrink:0;font-size:11px;padding:6px 10px;min-height:36px}
/* gameover */
#screen-gameover{background:radial-gradient(ellipse at 50% 40%,#200000 0%,var(--bg) 70%);align-items:center;justify-content:center;gap:20px;text-align:center;padding:40px}
.gameover-title{font-size:36px;font-weight:bold;color:var(--red);letter-spacing:4px}
.gameover-sub{font-size:13px;color:var(--muted)}
.gameover-stats{background:var(--bg3);border:1px solid var(--border);border-radius:8px;padding:20px;width:100%}
.gameover-stat-row{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--border);font-size:13px}
.gameover-stat-row:last-child{border-bottom:none}
.gameover-stat-row span:last-child{color:var(--gold);font-weight:bold}
/* attr tags */
.attr-炎{background:rgba(230,126,34,.25);color:var(--orange)}.attr-氷{background:rgba(0,212,255,.15);color:var(--cyan)}
.attr-電{background:rgba(241,196,15,.2);color:var(--gold)}.attr-物{background:rgba(232,232,232,.15);color:var(--text)}
.attr-呪{background:rgba(142,68,173,.3);color:var(--purple)}
.race-tag{background:rgba(255,255,255,.08);color:var(--muted)}.party-tag{background:rgba(0,212,255,.15);color:var(--cyan);font-size:9px}
::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}
/* party screen tabs */
.party-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);background:var(--bg2)}
.party-tab{flex:1;padding:10px;font-size:12px;letter-spacing:1px;background:none;border:none;border-bottom:2px solid transparent;color:var(--muted);font-family:inherit;cursor:pointer;transition:color .15s,border-color .15s;-webkit-tap-highlight-color:transparent}
.party-tab.active{color:var(--cyan);border-bottom-color:var(--cyan)}
/* item cards */
.item-card{background:var(--bg3);border:1px solid var(--border);border-radius:8px;padding:12px;display:flex;align-items:center;gap:12px}
.item-icon{font-size:32px;flex-shrink:0}
.item-info{flex:1;min-width:0}
.item-name{font-size:13px;font-weight:bold;margin-bottom:2px}
.item-desc{font-size:11px;color:var(--muted);margin-bottom:4px}
.item-qty{font-size:11px;color:var(--gold)}
.item-empty{color:var(--muted);text-align:center;padding:40px;font-size:13px}
#toast{position:fixed;bottom:80px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.85);border:1px solid var(--border);padding:8px 16px;border-radius:20px;font-size:12px;pointer-events:none;opacity:0;transition:opacity .3s;white-space:nowrap;z-index:100}
#toast.show{opacity:1}

/* ---- ANIM keyframes ---- */
@keyframes floatUp {
  0%   { opacity:1; transform:translateX(-50%) translateY(0); }
  100% { opacity:0; transform:translateX(-50%) translateY(-40px); }
}
@keyframes bannerPop {
  0%   { opacity:0; transform:translateX(-50%) scale(.7); }
  20%  { opacity:1; transform:translateX(-50%) scale(1.05); }
  80%  { opacity:1; transform:translateX(-50%) scale(1); }
  100% { opacity:0; transform:translateX(-50%) scale(.9); }
}
@keyframes fusionSpin {
  0%   { transform:scale(0) rotate(-180deg); opacity:0; }
  70%  { transform:scale(1.2) rotate(10deg); opacity:1; }
  100% { transform:scale(1) rotate(0deg); opacity:1; }
}
@keyframes fadeIn {
  from { opacity:0; } to { opacity:1; }
}
@keyframes shake {
  0%,100% { transform:translateX(0); }
  20%     { transform:translateX(-6px); }
  40%     { transform:translateX(6px); }
  60%     { transform:translateX(-4px); }
  80%     { transform:translateX(4px); }
}
