@font-face{font-family:Cinzel;src:url(fonts/cinzel.woff2) format('woff2');font-weight:400 900;font-display:swap}
@font-face{font-family:Crimson;src:url(fonts/crimson.woff2) format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Crimson;src:url(fonts/crimson600.woff2) format('woff2');font-weight:600 700;font-display:swap}
:root{--gold:#f3cf7a;--gold2:#b8862f;--ink:#e9e4ff;--muted:#a9a3d6;--panel:rgba(14,12,40,.82);--edge:rgba(170,150,255,.35);--hp:#e24b6a;--hp2:#ff8aa0;--xp:#7c6cff;--pip:#ffd76a}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:#05041a;color:var(--ink);font-family:Crimson,Georgia,serif;font-size:17px;overflow:hidden;overscroll-behavior:none}
button{font-family:inherit;color:inherit}
.hidden{display:none!important}
#backdrop{position:fixed;inset:-40px;background:url(img/bg_title.webp) center/cover;filter:blur(28px) brightness(.45) saturate(1.3)}
#app{position:relative;margin:0 auto;width:100%;overflow-x:hidden;max-width:480px;height:100dvh;overflow:hidden;box-shadow:0 0 80px rgba(120,90,255,.35);background:#07061c}
.bg{position:absolute;inset:0;background:#07061c center/cover no-repeat;opacity:0;transition:opacity .9s ease;transform:scale(1.04);animation:drift 40s ease-in-out infinite alternate}
.bg.on{opacity:1}
@keyframes drift{from{transform:scale(1.04) translateY(0)}to{transform:scale(1.1) translateY(-14px)}}
#fx{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:5}
#vignette{position:absolute;inset:0;pointer-events:none;z-index:2;background:radial-gradient(ellipse at 50% 40%,rgba(0,0,0,0) 45%,rgba(4,2,20,.75) 100%)}
body[data-screen=loc] #vignette,body[data-screen=shop] #vignette,body[data-screen=battle] #vignette{background:linear-gradient(180deg,rgba(6,4,26,.25),rgba(6,4,26,.55) 45%,rgba(6,4,26,.92))}
.screen{position:absolute;inset:0;z-index:10;display:none;flex-direction:column;padding:env(safe-area-inset-top) 14px calc(env(safe-area-inset-bottom) + 10px)}
.screen.active{display:flex;animation:fadein .5s ease}
@keyframes fadein{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
h1,h2,h3,.btn,.b-name,.hud-name,.spot-label,.c-name,.map-title,.dlg-name{font-family:Cinzel,Georgia,serif;letter-spacing:.04em}
h2{margin:.2em 0 .4em;font-size:1.25rem;color:var(--gold);text-shadow:0 0 12px rgba(243,207,122,.35)}
h3{font-size:.95rem;color:var(--muted);margin:1em 0 .4em}
.muted{color:var(--muted);font-size:.92rem}
.center{text-align:center}
.row{display:flex;gap:10px;justify-content:center;margin-top:14px;flex-wrap:wrap}
.col{display:flex;flex-direction:column;gap:9px;margin-top:10px}

/* buttons */
.btn{border:0;cursor:pointer;border-radius:12px;padding:.7em 1.2em;font-size:.92rem;font-weight:700;position:relative;transition:transform .12s,filter .2s;text-shadow:0 1px 2px rgba(0,0,0,.6)}
.btn:active{transform:scale(.96)}
.btn:disabled{filter:grayscale(.8) brightness(.6);cursor:default}
.btn.big{font-size:1.05rem;padding:.9em 1.4em;width:100%}
.btn.small{font-size:.78rem;padding:.55em .9em}
.btn small{display:block;font-family:Crimson,serif;font-weight:400;font-size:.8rem;opacity:.85;letter-spacing:0}
.btn-gold{background:linear-gradient(180deg,#ffe7a6,#d7a346 55%,#9b6a1d);color:#2a1604;text-shadow:0 1px 0 rgba(255,255,255,.4);box-shadow:0 0 0 1px #6e4a10,0 4px 0 #5a3b0b,0 6px 18px rgba(243,190,90,.35),inset 0 1px 0 rgba(255,255,255,.7)}
.btn-arcane{background:linear-gradient(180deg,#8c6bff,#5434d6 55%,#2e1a8a);color:#fff;box-shadow:0 0 0 1px #24135f,0 4px 0 #1d0f4d,0 6px 22px rgba(140,107,255,.5),inset 0 1px 0 rgba(255,255,255,.4)}
.btn-ghost{background:rgba(20,16,56,.75);border:1px solid var(--edge);color:var(--ink);backdrop-filter:blur(6px)}
.btn-danger{background:linear-gradient(180deg,#ff7a8a,#b3263e 60%,#6d1022);color:#fff;box-shadow:0 0 0 1px #4d0a17,0 4px 0 #3d0812}
.icon-btn{background:rgba(20,16,56,.7);border:1px solid var(--edge);border-radius:50%;width:38px;height:38px;font-size:1rem;cursor:pointer}

/* title */
#s-title{justify-content:space-between;padding-top:calc(env(safe-area-inset-top) + 7vh)}
.title-wrap{text-align:center}
.title-sub{font-family:Cinzel,serif;color:#cfc3ff;letter-spacing:.18em;font-size:.78rem;text-transform:uppercase;text-shadow:0 0 10px #6b4dff}
.logo{text-transform:uppercase;margin:.15em 0 0;font-size:clamp(2.6rem,13vw,3.8rem);font-weight:900;line-height:1;background:linear-gradient(180deg,#fff7d6 0%,#f3cf7a 40%,#a0702a 70%,#ffe6a0 100%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 18px rgba(160,120,255,.8)) drop-shadow(0 3px 0 #2a1650);animation:glow 4s ease-in-out infinite}
.logo span{display:block;font-size:.72em;letter-spacing:.12em}
@keyframes glow{50%{filter:drop-shadow(0 0 30px rgba(190,150,255,1)) drop-shadow(0 3px 0 #2a1650)}}
.title-rune{color:#bfa9ff;letter-spacing:.6em;margin-top:.5em;text-shadow:0 0 12px #8f6bff;animation:pulse 3s infinite}
@keyframes pulse{50%{opacity:.5}}
.title-menu{display:flex;flex-direction:column;gap:12px;padding:0 6px 4vh}
.title-foot{text-align:center;min-height:1.4em;color:#dfe9ff;font-size:.9rem;text-shadow:0 0 8px #8fd0ff}

/* name */
#s-name{justify-content:center}
.panel{background:var(--panel);border:1px solid var(--edge);border-radius:18px;padding:22px;box-shadow:0 10px 40px rgba(0,0,0,.6),inset 0 0 30px rgba(120,90,255,.15);backdrop-filter:blur(8px)}
.name-panel{text-align:center;display:flex;flex-direction:column;gap:14px;align-items:center}
.name-portrait{width:130px;height:130px;border-radius:50%;object-fit:cover;border:3px solid var(--gold);box-shadow:0 0 30px rgba(120,160,255,.6)}
#name-input{width:100%;font-family:Cinzel,serif;font-size:1.2rem;text-align:center;padding:.7em;border-radius:12px;border:1px solid var(--edge);background:rgba(5,4,25,.8);color:var(--gold);outline:none}
#name-input:focus{border-color:var(--gold);box-shadow:0 0 14px rgba(243,207,122,.4)}

/* HUD */
#hud{position:absolute;z-index:30;left:0;right:0;top:0;display:flex;justify-content:space-between;align-items:center;padding:calc(env(safe-area-inset-top) + 8px) 12px 8px;background:linear-gradient(180deg,rgba(5,4,22,.95),rgba(5,4,22,.6) 70%,transparent)}
.hud-left{display:flex;gap:10px;align-items:center;flex:1;min-width:0}
.hud-avatar{position:relative;width:48px;height:48px;flex:none}
.hud-avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover;border:2px solid var(--gold);box-shadow:0 0 12px rgba(120,150,255,.6)}
.hud-avatar span{position:absolute;right:-4px;bottom:-4px;background:linear-gradient(#8c6bff,#3d22a8);border:1px solid var(--gold);border-radius:50%;width:22px;height:22px;display:grid;place-items:center;font-size:.72rem;font-weight:700;font-family:Cinzel,serif}
.hud-bars{flex:1;min-width:0;max-width:200px}
.hud-name{font-size:.82rem;color:var(--gold);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar{position:relative;height:12px;border-radius:7px;background:rgba(0,0,0,.6);border:1px solid rgba(255,255,255,.18);overflow:hidden;margin-top:3px}
.bar i{position:absolute;inset:0 auto 0 0;width:100%;transition:width .5s ease}
.bar.hp i{background:linear-gradient(180deg,var(--hp2),var(--hp) 60%,#8d1d38)}
.bar.xp{height:6px}.bar.xp i{background:linear-gradient(90deg,#5b48ff,#b69bff)}
.bar b{position:absolute;inset:0;font-size:.62rem;line-height:12px;text-align:center;font-family:system-ui,sans-serif;text-shadow:0 1px 2px #000}
.bar.big{height:16px}.bar.big b{line-height:16px;font-size:.7rem}
.hud-right{display:flex;gap:8px;align-items:center}
.gold{background:rgba(20,16,56,.7);border:1px solid rgba(243,207,122,.4);border-radius:20px;padding:.3em .8em;font-weight:700;color:var(--gold);font-family:Cinzel,serif;font-size:.85rem}

/* bottom nav */
#nav{position:absolute;z-index:30;left:0;right:0;bottom:0;display:flex;justify-content:space-around;padding:6px 6px calc(env(safe-area-inset-bottom) + 6px);background:linear-gradient(0deg,rgba(5,4,22,.98),rgba(10,8,34,.9));border-top:1px solid var(--edge)}
#nav button{position:relative;background:none;border:0;cursor:pointer;display:flex;flex-direction:column;align-items:center;font-size:1.25rem;padding:4px 8px;border-radius:10px}
#nav button span{font-size:.66rem;font-family:Cinzel,serif;color:var(--muted);margin-top:2px}
#nav button:active{background:rgba(140,107,255,.2)}
.dot{position:absolute;top:2px;right:10px;width:10px;height:10px;border-radius:50%;background:#ffd34d;box-shadow:0 0 8px #ffd34d}

/* map */
#s-map{padding:0;justify-content:center;align-items:center}
#map-frame{position:relative;height:100%;aspect-ratio:9/16;max-width:100%}
#map-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.map-title{position:absolute;top:calc(env(safe-area-inset-top) + 70px);left:0;right:0;text-align:center;font-size:1.05rem;color:#e5dcff;text-shadow:0 0 10px #6b4dff,0 2px 4px #000;pointer-events:none;letter-spacing:.2em}
.spot{position:absolute;transform:translate(-50%,-50%);background:none;border:0;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;z-index:3}
.spot-dot{width:22px;height:22px;border-radius:50%;background:radial-gradient(circle,#fff 0,#ffe6a0 30%,rgba(255,200,90,.0) 70%);box-shadow:0 0 18px 6px rgba(255,210,120,.55);animation:beacon 2.2s ease-in-out infinite}
@keyframes beacon{50%{transform:scale(1.35);box-shadow:0 0 26px 10px rgba(255,210,120,.75)}}
.spot-label{background:rgba(10,8,34,.86);border:1px solid rgba(243,207,122,.55);border-radius:10px;padding:.25em .6em;font-size:.68rem;color:var(--gold);white-space:nowrap;box-shadow:0 3px 10px rgba(0,0,0,.6)}
.spot.locked .spot-dot{background:radial-gradient(circle,#999 0,#555 40%,transparent 70%);box-shadow:none;animation:none}
.spot.locked .spot-label{color:#9a96b8;border-color:rgba(150,150,180,.4)}
.qmark{position:absolute;top:-22px;font-family:Cinzel,serif;font-weight:900;font-size:1.4rem;color:#ffd34d;text-shadow:0 0 10px #ffb300,0 2px 0 #6b3d00;animation:bob 1s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-5px)}}
.spot:nth-child(odd) .spot-label{transform:translateY(0)}

/* location */
#s-loc,#s-shop{padding-top:calc(env(safe-area-inset-top) + 76px);padding-bottom:calc(env(safe-area-inset-bottom) + 74px);overflow-y:auto}
.loc-head{display:flex;align-items:center;gap:10px}
.loc-head h2{margin:0;font-size:1.2rem}
.loc-desc{margin:.6em 0 1em;color:#d8d2ff;font-style:italic;text-shadow:0 1px 3px #000;font-size:.98rem}
.loc-list{display:flex;flex-direction:column;gap:10px;margin-top:auto}
.entry{display:flex;align-items:center;gap:12px;text-align:left;width:100%;cursor:pointer;background:linear-gradient(90deg,rgba(24,18,66,.92),rgba(14,10,40,.85));border:1px solid var(--edge);border-radius:14px;padding:8px 12px 8px 8px;box-shadow:0 4px 16px rgba(0,0,0,.5);position:relative;transition:transform .12s,border-color .2s}
.entry:active{transform:scale(.98)}
.entry:hover{border-color:rgba(243,207,122,.6)}
.entry img,.entry .ico{width:56px;height:56px;border-radius:12px;object-fit:cover;border:1px solid rgba(243,207,122,.5);flex:none}
.entry .ico{display:grid;place-items:center;font-size:1.8rem;background:rgba(0,0,0,.35)}
.entry div{flex:1;min-width:0}
.entry b{display:block;font-family:Cinzel,serif;font-size:.92rem;color:var(--gold)}
.entry small{color:var(--muted);font-size:.82rem}
.entry .go{font-size:1.3rem}
.entry .qmark{position:static;font-size:1.6rem}
.entry.foe{border-color:rgba(255,110,140,.35);background:linear-gradient(90deg,rgba(50,14,40,.9),rgba(18,10,36,.85))}
.entry.boss{border-color:rgba(255,80,80,.7);box-shadow:0 0 20px rgba(255,60,90,.35)}
.entry.boss b{color:#ff9a9a}
.entry:disabled{opacity:.6}

/* shop */
.shop-keeper{display:flex;gap:12px;align-items:center;margin:12px 0}
.shop-keeper img{width:84px;height:84px;border-radius:50%;object-fit:cover;border:2px solid var(--gold);box-shadow:0 0 20px rgba(255,120,220,.4);flex:none}
.shop-keeper p{margin:0;background:var(--panel);border:1px solid var(--edge);border-radius:14px;padding:10px 12px;font-style:italic;font-size:.95rem}
.shop-list{display:flex;flex-direction:column;gap:9px}
.shop-item{display:flex;gap:10px;align-items:center;background:rgba(16,12,44,.88);border:1px solid var(--edge);border-radius:14px;padding:9px}
.shop-item .ico{width:48px;height:48px;display:grid;place-items:center;font-size:1.7rem;background:radial-gradient(circle,rgba(255,200,255,.18),rgba(0,0,0,.3));border-radius:12px;flex:none}
.si-txt{flex:1;min-width:0}.si-txt b{font-family:Cinzel,serif;font-size:.86rem;color:var(--gold);display:block}.si-txt small{color:var(--muted);font-size:.8rem}
.sch{font-style:normal;font-size:.72rem;margin-left:4px}
.shop-item.scroll{border-color:rgba(201,155,255,.5)}

/* battle */
#s-battle{padding-top:calc(env(safe-area-inset-top) + 10px);gap:8px}
.b-enemy{display:flex;flex-direction:column;align-items:center;gap:6px}
.b-portrait{position:relative;border-radius:50%;flex:none}
.b-portrait img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}
.b-portrait.enemy{width:min(58vw,30vh,250px);height:min(58vw,30vh,250px);border:3px solid #c9a3ff;box-shadow:0 0 0 4px rgba(20,10,50,.8),0 0 40px rgba(170,110,255,.6);animation:breathe 4s ease-in-out infinite}
.b-portrait.enemy.boss{border-color:#ff7070;box-shadow:0 0 0 4px rgba(50,10,20,.8),0 0 50px rgba(255,60,80,.7)}
@keyframes breathe{50%{transform:scale(1.03)}}
.b-portrait.player{width:76px;height:76px;border:3px solid var(--gold);box-shadow:0 0 22px rgba(120,160,255,.6)}
.b-portrait.shake{animation:shake .45s}
@keyframes shake{20%{transform:translateX(-9px) rotate(-2deg)}40%{transform:translateX(8px) rotate(2deg)}60%{transform:translateX(-6px)}80%{transform:translateX(4px)}}
.b-portrait.defeated{filter:grayscale(1) brightness(.4);transform:scale(.9);transition:all 1s}
.fxlayer{position:absolute;inset:0;pointer-events:none}
.float{position:absolute;left:50%;top:40%;transform:translate(-50%,0);font-family:Cinzel,serif;font-weight:900;font-size:1.7rem;animation:floatup 1.3s ease-out forwards;white-space:nowrap;z-index:4}
.float.dmg{color:#ff6b6b;text-shadow:0 0 8px #000,0 2px 0 #4a0000}
.float.heal{color:#7dffb0;text-shadow:0 0 8px #000,0 2px 0 #003a1a}
.float.miss{color:#ccc;font-size:1.2rem;text-shadow:0 2px 3px #000}
.float.dot{font-size:1.5rem}
@keyframes floatup{0%{opacity:0;transform:translate(-50%,10px) scale(.6)}15%{opacity:1;transform:translate(-50%,0) scale(1.2)}100%{opacity:0;transform:translate(-50%,-70px) scale(1)}}
.b-info{width:100%;max-width:300px}
.b-enemy .b-info{text-align:center}
.b-name{font-size:.95rem;color:var(--gold);text-shadow:0 2px 4px #000}
.b-name small{color:var(--muted);font-size:.72rem}
.pips{display:flex;gap:4px;margin-top:5px;justify-content:center}
.b-player .pips{justify-content:flex-start}
.pips i{width:12px;height:12px;border-radius:50%;background:rgba(255,255,255,.08);border:1px solid rgba(255,215,106,.3);transform:rotate(45deg);border-radius:3px}
.pips i.on{background:radial-gradient(circle,#fff6c9,#ffd76a 50%,#c48a1b);box-shadow:0 0 8px #ffd76a;border-color:#ffe9a3}
.status{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;font-size:.78rem;min-height:1.2em;margin-top:3px}
.b-player .status{justify-content:flex-start}
.status span{background:rgba(0,0,0,.5);border-radius:8px;padding:0 5px}
.b-log{flex:1;min-height:70px;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;gap:2px;font-size:.88rem;text-align:center;text-shadow:0 1px 3px #000,0 0 6px #000}
.b-log .ln{animation:fadein .3s}
.b-log .hint{color:#bfb6ff;font-size:.8rem}
.b-log .miss{color:#aaa}
.weak{color:#ffd34d;font-weight:700}.res{color:#9aa}
.b-player{display:flex;align-items:center;gap:12px;background:rgba(10,8,34,.72);border:1px solid var(--edge);border-radius:16px;padding:8px 12px;backdrop-filter:blur(4px)}
.b-actions{display:flex;justify-content:space-between;align-items:center}
.b-turn{font-family:Cinzel,serif;font-size:.8rem;color:var(--gold)}
.hand{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;transition:opacity .3s}
.hand.locked{opacity:.7;pointer-events:none;filter:saturate(.7)}
.b-hint{text-align:center;font-size:.7rem;color:var(--muted)}

/* cards */
.card{position:relative;min-width:0;overflow:visible;aspect-ratio:5/7.4;border-radius:10px;padding:4px 4px 5px;cursor:pointer;display:flex;flex-direction:column;align-items:center;text-align:center;
  background:linear-gradient(170deg,color-mix(in srgb,var(--c1) 35%,#1a1440) 0%,var(--c2) 70%,#0b0820);
  border:2px solid color-mix(in srgb,var(--c1) 70%,#fff);box-shadow:0 0 12px color-mix(in srgb,var(--c1) 45%,transparent),inset 0 0 14px rgba(0,0,0,.6);transition:transform .15s,filter .2s}
.card.deal{animation:dealin .35s ease backwards}
.hand .card.deal:nth-child(2){animation-delay:.05s}.hand .card.deal:nth-child(3){animation-delay:.1s}.hand .card.deal:nth-child(4){animation-delay:.15s}.hand .card.deal:nth-child(5){animation-delay:.2s}
@keyframes dealin{from{opacity:0;transform:translateY(30px) rotate(-6deg)}}
.card:hover{transform:translateY(-6px)}
.card:active{transform:translateY(-3px) scale(.97)}
.card.dim{filter:grayscale(.65) brightness(.6)}
.card.nope{animation:shake .4s}
.c-pips{display:flex;gap:2px;height:9px;justify-content:center;flex-wrap:wrap}
.c-pips i{width:7px;height:7px;transform:rotate(45deg);background:#ffd76a;box-shadow:0 0 4px #ffd76a;border-radius:1px}
.c-ico{font-size:1.5rem;margin:3px 0 1px;filter:drop-shadow(0 0 6px var(--c1))}
.c-name{max-width:100%;overflow-wrap:break-word;hyphens:manual;font-size:.56rem;font-weight:800;color:#fff;line-height:1.1;text-shadow:0 1px 2px #000;min-height:2.2em;display:flex;align-items:center}
.c-desc{font-size:.56rem;line-height:1.15;color:#e8e3ff;flex:1;margin-top:2px;font-family:system-ui,sans-serif}
.c-acc{font-size:.55rem;color:#ffe9a3;font-family:system-ui,sans-serif;font-weight:700}
.c-swap{position:absolute;top:-7px;right:-7px;width:20px;height:20px;border-radius:50%;background:#2a1650;border:1px solid var(--edge);font-size:.65rem;display:grid;place-items:center;color:#d8cfff;font-family:system-ui}
.card.big{width:120px;margin:8px auto;cursor:default}
.card.big .c-ico{font-size:2.2rem}.card.big .c-name{font-size:.8rem}.card.big .c-desc,.card.big .c-acc{font-size:.72rem}
.book{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:10px 0 14px}
.book .card{cursor:default;animation:none}
.locked-card{--c1:#555;--c2:#16142a;filter:none;opacity:.7}

/* modal */
#modal{position:absolute;inset:0;z-index:60;background:rgba(3,2,15,.7);display:flex;align-items:center;justify-content:center;padding:18px;backdrop-filter:blur(3px);animation:fadein .25s}
.modal-card{width:100%;max-height:88%;overflow-y:auto;background:linear-gradient(180deg,rgba(28,22,72,.97),rgba(12,9,36,.98));border:1px solid rgba(243,207,122,.55);border-radius:18px;padding:18px;box-shadow:0 0 0 4px rgba(10,8,30,.8),0 0 50px rgba(140,107,255,.45)}
.modal-card p{margin:.5em 0}
.modal-por{width:130px;height:130px;border-radius:50%;object-fit:cover;border:3px solid #c9a3ff;box-shadow:0 0 30px rgba(170,110,255,.6)}
.modal-por.boss{border-color:#ff7070;box-shadow:0 0 40px rgba(255,60,80,.7)}
.warn{color:#ffcf7a;font-size:.9rem}
.big-emoji{font-size:3.2rem;filter:drop-shadow(0 0 16px rgba(255,220,120,.7));animation:bob 1.6s ease-in-out infinite}
.loot{display:flex;justify-content:center;gap:14px;flex-wrap:wrap;font-family:Cinzel,serif;color:var(--gold);margin:10px 0}
.qdone{color:#ffd34d;font-weight:700}
.lvl-burst{width:90px;height:90px;margin:0 auto;border-radius:50%;display:grid;place-items:center;font-family:Cinzel,serif;font-weight:900;font-size:2.6rem;color:#2a1604;background:radial-gradient(circle,#fff6c9,#f3cf7a 50%,#b8862f);box-shadow:0 0 40px 10px rgba(243,207,122,.6);animation:pulse 1.5s infinite}
.pot-list{display:flex;flex-direction:column;gap:8px;margin:10px 0}
.pot-row{display:flex;align-items:center;gap:10px;background:rgba(0,0,0,.3);border:1px solid var(--edge);border-radius:12px;padding:8px;text-align:left;width:100%;cursor:pointer}
div.pot-row{cursor:default}
.pot-row:disabled{opacity:.45}
.pot-row .ico{font-size:1.6rem}
.pot-row span:nth-child(2){flex:1}.pot-row b{display:block;font-family:Cinzel,serif;font-size:.85rem;color:var(--gold)}.pot-row small{color:var(--muted);font-size:.8rem}
.pot-row em{font-style:normal;font-family:Cinzel,serif;color:var(--gold)}
.quest{background:rgba(0,0,0,.3);border:1px solid var(--edge);border-radius:12px;padding:10px;margin:8px 0}
.quest.cur{border-color:rgba(243,207,122,.6);box-shadow:0 0 14px rgba(243,207,122,.2)}
.quest b{font-family:Cinzel,serif;color:var(--gold)}.quest p{margin:.3em 0;font-size:.95rem}.quest small{color:#ffd34d}
.quest.done{color:var(--muted);padding:6px 10px;font-size:.9rem}
.help p{font-size:.95rem}.help .q{color:#ffd34d}

/* dialog */
#dialog{position:absolute;inset:0;z-index:50;display:flex;align-items:flex-end;padding:0 10px calc(env(safe-area-inset-bottom) + 84px);background:linear-gradient(0deg,rgba(3,2,15,.85),rgba(3,2,15,.2) 60%,transparent);animation:fadein .3s}
.dlg-box{position:relative;width:100%;background:linear-gradient(180deg,rgba(30,24,78,.97),rgba(12,9,36,.98));border:1px solid rgba(243,207,122,.6);border-radius:18px;padding:16px 14px 12px;padding-top:58px;box-shadow:0 0 0 3px rgba(10,8,30,.8),0 0 40px rgba(140,107,255,.4)}
#dlg-por{position:absolute;top:-62px;left:14px;width:112px;height:112px;border-radius:50%;object-fit:cover;border:3px solid var(--gold);box-shadow:0 0 26px rgba(140,160,255,.6);background:#111}
.dlg-name{position:absolute;top:12px;left:138px;right:12px;color:var(--gold);font-size:1rem}
.dlg-name small{display:block;font-family:Crimson,serif;color:var(--muted);font-size:.8rem;letter-spacing:0}
.dlg-text{min-height:4.6em;font-size:1.05rem;line-height:1.4}
.dlg-choices{display:flex;justify-content:flex-end;margin-top:8px}

/* toast / flash */
#toasts{position:absolute;z-index:70;left:0;right:0;top:calc(env(safe-area-inset-top) + 74px);display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:none}
.toast{background:rgba(16,12,44,.95);border:1px solid var(--edge);border-radius:12px;padding:8px 14px;font-size:.92rem;max-width:90%;text-align:center;box-shadow:0 6px 20px rgba(0,0,0,.5);animation:fadein .3s;transition:opacity .5s,transform .5s}
.toast.gold{border-color:var(--gold);box-shadow:0 0 20px rgba(243,207,122,.35)}
.toast.out{opacity:0;transform:translateY(-10px)}
#flash{position:absolute;inset:0;z-index:6;pointer-events:none;opacity:0;mix-blend-mode:screen}
#flash.go{animation:flash .5s ease-out}
@keyframes flash{0%{opacity:.35}100%{opacity:0}}

@media (min-height:800px){.card .c-name{font-size:.62rem}.card .c-desc{font-size:.6rem}}
@media (max-height:700px){.b-hint{display:none}}
@media (min-width:481px){#app{border-left:1px solid rgba(170,150,255,.2);border-right:1px solid rgba(170,150,255,.2)}}

/* ---- polish + chapter 2 ---- */
.title-ch{margin-top:.9em;display:inline-block;font-family:Cinzel,serif;font-size:.72rem;letter-spacing:.12em;color:#fff3c9;background:linear-gradient(90deg,rgba(90,60,200,.0),rgba(90,60,200,.55),rgba(90,60,200,0));padding:.35em 1.4em;text-shadow:0 0 8px #8f6bff}
.map-tabs{position:absolute;top:calc(env(safe-area-inset-top) + 66px);left:0;right:0;display:flex;justify-content:center;gap:6px;z-index:4;padding:0 10px}
.map-tab{position:relative;font-family:Cinzel,serif;font-size:.7rem;letter-spacing:.06em;padding:.5em .9em;border-radius:20px;border:1px solid rgba(243,207,122,.35);background:rgba(10,8,34,.82);color:#cfc6ff;cursor:pointer;box-shadow:0 3px 10px rgba(0,0,0,.6)}
.map-tab.on{background:linear-gradient(180deg,#8c6bff,#3d22a8);color:#fff;border-color:var(--gold);box-shadow:0 0 14px rgba(140,107,255,.7)}
.tab-q{position:absolute;top:-10px;right:-4px;font-style:normal;font-weight:900;color:#ffd34d;font-size:1.1rem;text-shadow:0 0 8px #ffb300,0 2px 0 #6b3d00;animation:bob 1s ease-in-out infinite}
.b-actions{gap:8px}
.b-actions .btn{flex:none;min-width:96px}
.b-turn{flex:1;text-align:center;white-space:nowrap;line-height:1.1;font-size:.82rem;opacity:.85}
.b-turn small{display:block;font-family:Crimson,serif;color:var(--muted);font-size:.72rem;letter-spacing:0}
.b-turn.mine{opacity:1;text-shadow:0 0 10px rgba(243,207,122,.7)}
.c-swap{width:24px;height:24px;top:-9px;right:-9px;font-size:.7rem;z-index:2}
.c-copies{position:absolute;left:-6px;top:-7px;background:#1b1240;border:1px solid var(--gold);color:var(--gold);border-radius:9px;font-size:.6rem;font-family:Cinzel,serif;font-weight:700;padding:0 4px;line-height:15px}
.c-free{font-size:.5rem;font-family:system-ui,sans-serif;font-weight:800;color:#ffe9a3;letter-spacing:.05em;line-height:9px}
.card.casting{animation:castup .3s ease-in forwards;pointer-events:none}
@keyframes castup{to{transform:translateY(-90px) scale(1.15);opacity:0;filter:brightness(1.8)}}
.b-portrait.lunge{animation:lunge .45s ease}
.b-portrait.enemy.lunge{animation:lungeDown .45s ease}
@keyframes lunge{40%{transform:translateY(-10px) scale(1.06)}}
@keyframes lungeDown{40%{transform:translateY(10px) scale(1.05)}}
.b-portrait.enemy.enraged{border-color:#ff4d6d;box-shadow:0 0 0 4px rgba(60,6,20,.85),0 0 60px rgba(255,40,80,.9);filter:saturate(1.3) contrast(1.05)}
.pips i.pop{animation:pippop .6s ease}
@keyframes pippop{0%{transform:rotate(45deg) scale(2.2);box-shadow:0 0 16px #fff}100%{transform:rotate(45deg) scale(1)}}
.float.crit{font-size:2.2rem;color:#ffd34d;text-shadow:0 0 10px #ff4000,0 2px 0 #4a0000}
.b-log .phase{color:#ff8fa3}
.lvl-hard{color:#ffb070}
.boss-tag{color:#ff8a8a;letter-spacing:.1em}
.deck-rules{display:flex;flex-direction:column;gap:3px;background:rgba(0,0,0,.3);border:1px solid rgba(243,207,122,.35);border-radius:12px;padding:8px 10px;font-size:.86rem;margin:6px 0}
.deck-rules b{color:var(--gold)}
.deck-rules>b{font-family:Cinzel,serif;font-size:.8rem}
.book .card{margin-top:6px}
.unlock{display:flex;flex-direction:column;gap:4px;background:linear-gradient(180deg,rgba(140,107,255,.25),rgba(40,20,90,.35));border:1px solid rgba(201,155,255,.6);border-radius:12px;padding:10px;margin:10px 0}
.unlock b{color:#fff3c9;font-family:Cinzel,serif;font-size:.9rem}.unlock span{font-size:.9rem}
.q-ch{display:block;font-size:.72rem;color:var(--muted);font-family:Cinzel,serif;letter-spacing:.06em;margin-bottom:2px}
.stats{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:.88rem;color:var(--muted);margin:6px 0 12px}
.dlg-choices{align-items:center;gap:10px}
.dlg-count{color:var(--gold);opacity:.7;animation:bob 1s ease-in-out infinite}
@media (max-width:360px){.map-tab{font-size:.62rem;padding:.45em .7em}.b-actions .btn{min-width:84px}}
/* character select */
.name-panel{gap:10px;max-height:100%;overflow-y:auto}
.name-panel h2{margin:0}
.name-q{font-size:1rem}
.char-pick{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;width:100%}
.char-opt{display:flex;flex-direction:column;align-items:center;gap:2px;background:rgba(5,4,25,.7);border:2px solid var(--edge);border-radius:14px;padding:6px 2px;cursor:pointer;transition:transform .12s,border-color .2s,box-shadow .2s}
.char-opt img{width:100%;aspect-ratio:1;border-radius:50%;object-fit:cover}
.char-opt b{font-family:Cinzel,serif;font-size:.6rem;color:var(--gold);letter-spacing:.02em}
.char-opt small{font-size:.7rem;color:var(--muted)}
.char-opt.on{border-color:var(--gold);box-shadow:0 0 16px rgba(243,207,122,.55);transform:translateY(-3px)}
.char-desc{font-size:.9rem;color:#d8d2ff;font-style:italic;min-height:1.2em}
.name-portrait{width:120px;height:120px}
@media (max-height:700px){.name-portrait{width:84px;height:84px}}
/* character select */
.name-panel{gap:10px;max-height:100%;overflow-y:auto}
.name-panel h2{margin:0}
.name-q{font-size:1rem}
.char-pick{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;width:100%}
.char-opt{display:flex;flex-direction:column;align-items:center;gap:2px;background:rgba(5,4,25,.7);border:2px solid var(--edge);border-radius:14px;padding:6px 2px;cursor:pointer;transition:transform .12s,border-color .2s,box-shadow .2s}
.char-opt img{width:100%;aspect-ratio:1;border-radius:50%;object-fit:cover}
.char-opt b{font-family:Cinzel,serif;font-size:.6rem;color:var(--gold);letter-spacing:.02em}
.char-opt small{font-size:.7rem;color:var(--muted)}
.char-opt.on{border-color:var(--gold);box-shadow:0 0 16px rgba(243,207,122,.55);transform:translateY(-3px)}
.char-desc{font-size:.9rem;color:#d8d2ff;font-style:italic;min-height:1.2em}
.name-portrait{width:120px;height:120px}
@media (max-height:700px){.name-portrait{width:84px;height:84px}}
body[data-screen=map] #toasts{top:calc(env(safe-area-inset-top) + 112px)}
