:root{--parchment:#f4e8cf;--parchment-deep:#e8d5ae;--paper:#fdf6e6;--ink:#3a2e4d;--ink-soft:#6b5a80;--ink-bleed:#5c468c2e;--accent:#7a5cb8;--attack:#c9604f;--skill:#4f86b8;--power:#d0a13a;--hp:#d4574a;--block:#4f86b8;--good:#3f9a5c;--shadow:0 4px 12px #46321e2e;--radius:14px;--card-w:128px;--card-h:178px;color:var(--ink);font-family:Gowun Dodum,Apple SD Gothic Neo,Malgun Gothic,sans-serif}*{box-sizing:border-box}html,body{-webkit-user-select:none;user-select:none;height:100%;margin:0;overflow:hidden}body{background:radial-gradient(ellipse at 15% 20%, var(--ink-bleed), transparent 40%), radial-gradient(ellipse at 85% 75%, #5c468c1f, transparent 45%), radial-gradient(circle at 60% 10%, #c9604f14, transparent 30%), linear-gradient(var(--parchment), var(--parchment-deep))}button{font:inherit;color:inherit}.btn{border:2px solid var(--ink);background:var(--paper);cursor:pointer;box-shadow:0 3px 0 var(--ink);border-radius:999px;padding:10px 22px;font-family:Gowun Batang,serif;font-weight:700;transition:transform .1s,box-shadow .1s,background .2s}.btn:hover:not(:disabled){background:#fff;transform:translateY(-1px)}.btn:active:not(:disabled){box-shadow:0 1px 0 var(--ink);transform:translateY(2px)}.btn:disabled{opacity:.45;cursor:default}.btn.small{padding:4px 14px;font-size:14px}#app{height:100%}.busy .hand,.busy .end-turn{pointer-events:none}.combat{grid-template-rows:auto 1fr auto;height:100%;display:grid}.topbar{border-bottom:2px dashed #3a2e4d33;align-items:center;gap:14px;padding:8px 18px;font-size:14px;display:flex}.topbar .title{font-family:Gowun Batang,serif;font-size:20px;font-weight:700}.topbar .turn{background:var(--ink);color:var(--paper);border-radius:999px;padding:2px 10px}.topbar .seed{color:var(--ink-soft)}.topbar .spacer{flex:1}.enc-select{font:inherit;background:var(--paper);border:1.5px solid var(--ink-soft);border-radius:8px;padding:3px 6px}.field{justify-content:space-between;align-items:center;min-height:0;padding:16px 6vw;display:flex}.side{align-items:flex-end;gap:28px;display:flex}.unit{flex-direction:column;align-items:center;gap:4px;width:150px;transition:filter .2s,opacity .3s;display:flex;position:relative}.unit .portrait{filter:drop-shadow(0 6px 4px #3a2e4d40);background:radial-gradient(circle,#ffffffb3,#fff0 70%);border-radius:50%;place-items:center;width:120px;height:120px;font-size:76px;line-height:1;display:grid}img.portrait{object-fit:contain}.unit-name{font-family:Gowun Batang,serif;font-weight:700}.unit.elite .unit-name:before{content:"★ ";color:var(--power)}.unit.dead{opacity:.25;filter:grayscale();pointer-events:none}.unit.dead .intent{visibility:hidden}.hpbar{border:1.5px solid var(--ink);background:#3a2e4d26;border-radius:999px;width:130px;height:16px;position:relative;overflow:visible}.hp-fill{background:linear-gradient(var(--hp), #b8463b);border-radius:999px;height:100%;transition:width .3s ease-out}.has-block .hpbar{border-color:var(--block)}.has-block .hp-fill{background:linear-gradient(#7fa9d0, var(--block))}.hp-text{color:#fff;text-shadow:0 0 2px var(--ink), 0 0 2px var(--ink);place-items:center;font-size:11px;font-weight:700;display:grid;position:absolute;inset:0}.block-badge{background:var(--block);color:#fff;border:2px solid var(--paper);width:28px;height:28px;box-shadow:var(--shadow);border-radius:50% 50% 45% 45%;place-items:center;font-size:13px;font-weight:700;display:grid;position:absolute;top:50%;left:-16px;transform:translateY(-50%)}.block-badge[hidden]{display:none}.statuses{flex-wrap:wrap;justify-content:center;gap:4px;min-height:22px;display:flex}.status{background:var(--paper);cursor:help;border:1px solid #3a2e4d40;border-radius:8px;padding:1px 5px;font-size:14px}.status b{margin-left:2px;font-size:12px}.status.debuff{border-color:#c9604f99}.intent{background:var(--paper);border:1.5px solid var(--ink);min-height:28px;box-shadow:var(--shadow);cursor:help;border-radius:999px;align-items:center;gap:4px;padding:2px 10px;font-weight:700;animation:2s ease-in-out infinite bob;display:flex}.intent-attack,.intent-attackDebuff{color:var(--attack);border-color:var(--attack)}.intent-defend{color:var(--block);border-color:var(--block)}.intent-buff{color:var(--power);border-color:var(--power)}.intent-debuff{color:var(--accent);border-color:var(--accent)}@keyframes bob{50%{transform:translateY(-4px)}}.targeting .unit.enemy:not(.dead){cursor:crosshair}.targeting .unit.enemy:not(.dead) .portrait{animation:1.2s ease-in-out infinite pulse}.unit.enemy.targeted .portrait{background:radial-gradient(circle,#c9604f59,#0000 70%);transform:scale(1.06)}@keyframes pulse{50%{filter:drop-shadow(0 0 10px #c9604fb3)}}.imprints{border:1.5px dashed var(--ink-soft);cursor:help;background:#fdf6e6cc;border-radius:10px;align-items:center;gap:6px;padding:2px 8px;font-size:13px;display:flex}.imprints .label{color:var(--ink-soft)}.imprint b{margin-left:1px}.combo{color:var(--ink-soft);font-size:12px}.hud{grid-template-columns:150px 1fr 170px;align-items:end;gap:10px;padding:0 18px 14px;display:grid}.hud-left,.hud-right{flex-direction:column;align-items:center;gap:10px;display:flex}.pile-row{gap:8px;display:flex}.ink-orb{background:radial-gradient(circle at 35% 30%, #9a7fd4, var(--ink) 75%);width:92px;height:92px;color:var(--paper);text-align:center;box-shadow:0 0 0 4px #5c468c33, 0 0 24px 6px var(--ink-bleed);border-radius:46% 54% 50% 50%/55% 45%;place-content:center;line-height:1;display:grid}.ink-orb b{font-size:34px}.ink-orb small{opacity:.8;font-size:13px}.ink-orb span{margin-top:2px;font-size:11px}.pile{background:var(--paper);border:1.5px solid var(--ink-soft);cursor:pointer;border-radius:10px;flex-direction:column;align-items:center;min-width:64px;padding:4px 8px;line-height:1.1;display:flex}.pile:hover{border-color:var(--ink)}.pile small{color:var(--ink-soft);font-size:11px}.end-turn{font-size:18px}.hand{height:calc(var(--card-h) + 30px);justify-content:center;align-items:flex-end;display:flex}.card{--rot:0deg;--lift:0px;flex:0 0 var(--card-w);width:var(--card-w);height:var(--card-h);background:var(--paper);border:2px solid var(--ink);border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer;transform:translateY(var(--lift)) rotate(var(--rot));transform-origin:50% 120%;flex-direction:column;align-items:center;margin:0 -10px;padding:8px 8px 10px;transition:transform .15s ease-out,box-shadow .15s;display:flex;position:relative}.card:before{content:"";border-radius:inherit;background:radial-gradient(ellipse at 80% 90%, var(--type-bleed,var(--ink-bleed)), transparent 55%);pointer-events:none;position:absolute;inset:0}.card.type-attack{--type:var(--attack);--type-bleed:#c9604f33}.card.type-skill{--type:var(--skill);--type-bleed:#4f86b833}.card.type-power{--type:var(--power);--type-bleed:#d0a13a40}.card{border-color:var(--type,var(--ink))}.hand .card:hover,.hand .card.selected{z-index:5;transform:translateY(-34px)rotate(0)scale(1.08);box-shadow:0 10px 22px #46321e4d}.hand .card.selected{outline:3px solid var(--accent);outline-offset:2px}.card.dragging{z-index:10;pointer-events:none;transition:none;box-shadow:0 16px 30px #46321e59}.card.will-play{outline:3px solid var(--good);outline-offset:2px}.card.unplayable .card-cost{background:#9b8f86}.card.unplayable{filter:saturate(.5)}.card-cost{background:radial-gradient(circle at 35% 30%, #9a7fd4, var(--ink) 80%);width:32px;height:32px;color:var(--paper);border:2px solid var(--paper);border-radius:48% 52% 45% 55%;place-items:center;font-size:18px;font-weight:700;display:grid;position:absolute;top:-10px;left:-10px}.card-name{white-space:nowrap;font-family:Gowun Batang,serif;font-size:14px;font-weight:700}.card-art{object-fit:cover;background:#3a2e4d0f;border-radius:8px;place-items:center;width:100%;height:58px;margin:4px 0;font-size:40px;line-height:1;display:grid}.card-type{color:var(--type,var(--ink-soft));font-size:10px;font-weight:700}.card-text{text-align:center;word-break:keep-all;margin-top:4px;font-size:12px;line-height:1.35}.num{font-weight:700}.num.up{color:var(--good)}.num.down{color:var(--attack)}.float-text{z-index:50;pointer-events:none;white-space:nowrap;text-shadow:0 0 3px var(--paper), 0 0 3px var(--paper), 0 0 6px var(--paper);font-family:Gowun Batang,serif;font-size:22px;font-weight:700;position:fixed}.float-text.dmg{color:var(--hp);font-size:34px}.float-text.block,.float-text.blocked{color:var(--block)}.float-text.buff{color:var(--power);font-size:17px}.float-text.debuff{color:var(--accent);font-size:17px}.float-text.move-name{color:var(--ink);background:var(--paper);border:1.5px solid var(--ink);border-radius:999px;padding:0 10px;font-size:16px}.float-text.info{color:var(--ink-soft);font-size:15px}.banner{z-index:40;pointer-events:none;background:linear-gradient(90deg, transparent, var(--paper) 20%, var(--paper) 80%, transparent);padding:10px 60px;font-family:Gowun Batang,serif;font-size:34px;font-weight:700;position:fixed;top:42%;left:50%;transform:translate(-50%,-50%)}.overlay{z-index:60;background:#3a2e4d59;place-items:center;display:grid;position:fixed;inset:0}.modal{background:var(--paper);border:2px solid var(--ink);text-align:center;border-radius:18px;max-width:min(900px,92vw);max-height:86vh;padding:20px 26px;overflow:auto;box-shadow:0 20px 40px #3a2e4d4d}.modal h2{margin:4px 0 14px;font-family:Gowun Batang,serif}.card-grid{flex-wrap:wrap;justify-content:center;gap:16px;margin-bottom:14px;padding:10px;display:flex}.card-grid .card{cursor:default;margin:0}.result .modal{padding:30px 50px}.result-icon{font-size:54px}.empty{color:var(--ink-soft)}.combat-root,.run{height:100%}.run{grid-template-rows:auto 1fr;display:grid}.topbar .stat{white-space:nowrap;font-weight:700}.topbar .stat.hp{color:var(--hp)}.topbar .stat.gold{color:#9a7420}.hud-right .turn{color:var(--ink-soft);font-size:13px}.unit.boss .unit-name:before{content:"👑 "}.unit.boss .portrait{width:140px;height:140px;font-size:96px}.screen{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;min-height:0;padding:20px;display:flex;overflow:auto}.screen h2{margin:0;font-family:Gowun Batang,serif;font-size:28px}.screen .dim{color:var(--ink-soft)}.big-icon{font-size:72px;line-height:1}.map-screen{justify-content:flex-start;padding:0;position:relative}.map-scroll{width:100%;height:100%;overflow:auto}.map-layer{background:radial-gradient(at 50% 0,#7a5cb81f,#0000 40%),#fdf6e68c;border:2px dashed #3a2e4d33;border-radius:24px;flex:none;margin:10px auto 40px;position:relative}.map-edges{position:absolute;inset:0}.map-edges line{stroke:#3a2e4d4d;stroke-width:2.5px;stroke-dasharray:2 7;stroke-linecap:round}.map-edges line.walked{stroke:var(--ink);stroke-dasharray:none;stroke-width:3.5px}.map-node{border:2px solid var(--ink-soft);background:var(--paper);cursor:default;border-radius:50%;place-items:center;width:46px;height:46px;padding:0;font-size:22px;transition:transform .15s,box-shadow .15s;display:grid;position:absolute;transform:translate(-50%,-50%)}.map-node:disabled{opacity:.55}.map-node.visited{opacity:1;border-color:var(--ink);background:#e9dcc0}.map-node.current{box-shadow:0 0 0 4px #7a5cb859}.map-node.available{opacity:1;cursor:pointer;border-color:var(--accent);border-width:3px;animation:1.4s ease-in-out infinite node-pulse}.map-node.available:hover{animation:none;transform:translate(-50%,-50%)scale(1.2)}.map-node.node-boss{border-width:3px;width:76px;height:76px;font-size:40px}.map-node.node-elite{border-color:var(--attack)}@keyframes node-pulse{50%{box-shadow:0 0 0 7px #7a5cb840}}.map-legend{background:var(--paper);border:1.5px solid var(--ink-soft);text-align:left;border-radius:12px;padding:10px 14px;font-size:14px;line-height:1.7;position:absolute;top:18px;right:18px}.reward-gold{color:#9a7420;font-size:20px;font-weight:700}.reward-cards .card{cursor:pointer;transition:transform .15s,box-shadow .15s}.reward-cards .card:hover{transform:translateY(-8px)scale(1.06);box-shadow:0 12px 24px #46321e4d}.choices{gap:18px;margin-top:10px;display:flex}.choice{background:var(--paper);border:2px solid var(--ink);cursor:pointer;min-width:170px;box-shadow:0 3px 0 var(--ink);border-radius:16px;flex-direction:column;gap:4px;padding:16px 20px;display:flex}.choice b{font-family:Gowun Batang,serif;font-size:18px}.choice small{color:var(--ink-soft)}.choice:hover:not(:disabled){background:#fff}.choice:disabled{opacity:.45;cursor:default}.relic-bar,.potion-bar{align-items:center;gap:4px;display:flex}.relic{cursor:help;font-size:20px;display:inline-block}.potion{border:1.5px dashed var(--ink-soft);background:var(--paper);cursor:pointer;border-radius:50%;width:32px;height:32px;padding:0;font-size:17px}.potion.empty{opacity:.4;cursor:default}.potion.selected{outline:3px solid var(--accent);outline-offset:1px}.card.upgraded .card-name,.float-text.heal{color:var(--good)}.float-text.relic{color:var(--ink);font-size:16px}.toast{z-index:80;background:var(--ink);color:var(--paper);border-radius:999px;padding:8px 18px;position:fixed;bottom:40px;left:50%;transform:translate(-50%)}.game-title{margin:0;font-family:Gowun Batang,serif;font-size:44px}.choice.character{text-align:center;align-items:center;width:260px}.choice.character .portrait{font-size:64px}.choice .blurb{word-break:keep-all;font-size:13px;line-height:1.5}.choice.wide{text-align:left;width:min(520px,90vw);font-size:15px}.loot-list{flex-direction:column;align-items:center;gap:6px;display:flex}.loot{background:var(--paper);border:1.5px solid #3a2e4d40;border-radius:12px;padding:6px 14px}.loot.gold{color:#9a7420;font-weight:700}.loot.lost{opacity:.5}.loot-icon{margin-right:6px}.pick-grid .card{cursor:pointer}.pick-grid .card:hover{transform:translateY(-6px)}.event-body{flex-direction:column;align-items:center;gap:10px;margin-top:6px;display:flex}.event-result{font-weight:700}.event-screen>p{word-break:keep-all;max-width:520px}.shop-screen{justify-content:flex-start}.shop-row{flex-wrap:wrap;justify-content:center;gap:18px;display:flex}.shop-item{cursor:pointer;flex-direction:column;align-items:center;gap:8px;transition:transform .15s;display:flex}.shop-item:hover:not(.sold){transform:translateY(-5px)}.shop-item.small{background:var(--paper);border:2px solid var(--ink-soft);border-radius:14px;width:130px;padding:10px 8px}.shop-item.sold{opacity:.35;cursor:default}.shop-icon{font-size:34px}.shop-name{font-size:14px;font-weight:700}.shop-desc{color:var(--ink-soft);word-break:keep-all;font-size:12px}.price{color:#9a7420;font-weight:700}.price.too-much{color:var(--attack)}.run>.select-screen{grid-row:1/-1}html,body{height:100dvh}.hand .card{touch-action:none}.btn.small.icon{padding:4px 9px}@media (hover:none){.hand .card:hover:not(.selected){transform:translateY(var(--lift)) rotate(var(--rot));box-shadow:var(--shadow)}}@media (width<=760px){:root{--card-w:86px;--card-h:126px;--radius:10px}.topbar{flex-wrap:wrap;gap:4px 10px;padding:6px 10px;font-size:12px}.topbar .title,.topbar .seed,.topbar .spacer{display:none}.topbar .btn.small{padding:3px 9px;font-size:12px}.potion{width:26px;height:26px;font-size:14px}.relic{font-size:16px}.field{align-items:flex-end;gap:6px;padding:6px 8px}.side{gap:6px}.enemy-side{flex-wrap:wrap;justify-content:flex-end}.unit{width:96px}.unit .portrait,.unit.boss .portrait{width:64px;height:64px;font-size:44px}.unit-name{font-size:12px}.hpbar{width:88px;height:14px}.intent{min-height:22px;padding:1px 7px;font-size:12px}.imprints{padding:1px 5px;font-size:11px}.status{font-size:11px}.hud{grid-template-columns:1fr 1fr;grid-template-areas:"hand hand""left right";gap:4px;padding:0 8px 8px}.hud .hand{grid-area:hand}.hud-left{flex-direction:row;grid-area:left;justify-content:flex-start}.hud-right{flex-direction:row-reverse;grid-area:right;justify-content:flex-start;align-items:center}.ink-orb{width:58px;height:58px}.ink-orb b{font-size:22px}.ink-orb span{display:none}.pile{min-width:46px;padding:2px 5px}.pile small{display:none}.end-turn{padding:8px 14px;font-size:15px}.hud-right .turn{display:none}.hand{height:calc(var(--card-h) + 18px)}.hand .card{margin:0 -13px}.hand .card:hover,.hand .card.selected{transform:translateY(-22px)rotate(0)scale(1.12)}.card{padding:5px 4px 6px}.card-cost{width:24px;height:24px;font-size:14px;top:-8px;left:-8px}.card-name{font-size:11px}.card-art{height:34px;margin:2px 0;font-size:24px}.card-type{font-size:9px}.card-text{font-size:10px;line-height:1.25}.map-legend{display:none}.choices{flex-direction:column;align-items:center}.card-grid{gap:10px;padding:4px}.shop-row{gap:10px}.shop-item.small{width:104px;padding:8px 6px}.screen h2{font-size:22px}.game-title{font-size:34px}.float-text.dmg{font-size:26px}.banner{padding:8px 30px;font-size:24px}.modal{padding:14px 12px}.map-node{width:38px;height:38px;font-size:18px}.map-node.node-boss{width:60px;height:60px;font-size:32px}}.end-turn,.imprints .label{white-space:nowrap}@media (width<=760px){.card-name{letter-spacing:-.04em;text-overflow:ellipsis;max-width:100%;font-size:10px;overflow:hidden}}:root{--unit:clamp(96px, 22vh, 200px);--card-w:clamp(118px, 10.5vw, 158px);--card-h:calc(var(--card-w) * 1.4)}.field{justify-content:center;gap:clamp(40px,14vw,260px);padding:8px 4vw}.side{gap:clamp(12px,3vw,40px)}.unit{width:calc(var(--unit) * 1.15)}.unit .portrait,.unit.boss .portrait{width:var(--unit);height:var(--unit);font-size:calc(var(--unit) * .66)}.unit.boss .portrait{--unit:clamp(110px, 27vh, 240px)}.hpbar{width:100%;height:clamp(14px,2.4vh,20px)}.hp-text{font-size:clamp(11px,1.6vh,14px)}.unit-name,.intent{font-size:clamp(13px,2vh,17px)}.card-art{height:calc(var(--card-h) * .32);font-size:calc(var(--card-w) * .32)}.card-name{font-size:calc(var(--card-w) * .11)}.card-text{font-size:calc(var(--card-w) * .095)}.card-cost{width:calc(var(--card-w) * .25);height:calc(var(--card-w) * .25);font-size:calc(var(--card-w) * .14)}.hud{padding-bottom:10px}@media (width<=760px){:root{--unit:clamp(60px, 13vh, 110px);--card-w:86px}.field{justify-content:space-between;align-items:center;gap:6px}.unit{width:calc(var(--unit) * 1.35)}.unit.boss .portrait{--unit:clamp(72px, 16vh, 130px)}.card-name,.card-text{font-size:10px}.hud .hand{margin-bottom:16px}}img.pixel{image-rendering:pixelated;object-fit:contain;display:block}img.card-art.pixel{padding:2px 0}img.portrait.pixel{filter:drop-shadow(0 3px #3a2e4d1f);background:0 0}.choice.character img.portrait{width:128px;height:128px}.relic-img,.stat-img{width:26px;height:26px}.stat-img{vertical-align:middle;display:inline-block!important}.potion-img{width:24px;height:24px;margin:auto}.loot-img{vertical-align:middle;width:28px;height:28px;display:inline-block!important}img.shop-icon{width:48px;height:48px;margin:0 auto}@media (width<=760px){.relic-img{width:20px;height:20px}.potion-img{width:18px;height:18px}}.field{background:linear-gradient(to bottom, #f4e8cfb8 0%, #f4e8cf8c 40%, #e8d5aeeb 68%, var(--parchment-deep) 72%, #dcc49a 100%), var(--shelf,none) top left / auto 72% repeat-x;image-rendering:pixelated;border-bottom:3px solid #8a5a3c59;position:relative}.field .unit{image-rendering:auto}.unit:not(.dead) .portrait{transform-origin:50% 100%;animation:2.6s ease-in-out infinite idle}.enemy-side .unit:nth-child(2) .portrait{animation-delay:-.9s}.enemy-side .unit:nth-child(3) .portrait{animation-delay:-1.7s}@keyframes idle{50%{transform:translateY(-3px)scaleY(1.025)}}.tip{z-index:100;background:var(--ink);max-width:280px;color:var(--paper);white-space:pre-line;pointer-events:none;word-break:keep-all;border-radius:10px;padding:8px 12px;font-size:13px;line-height:1.5;position:fixed;box-shadow:0 6px 16px #3a2e4d4d}.dmg-preview{background:var(--hp);color:#fff;border:2px solid var(--paper);box-shadow:var(--shadow);border-radius:999px;padding:1px 8px;font-size:14px;font-weight:700;display:none;position:absolute;top:-26px;right:-6px}.dmg-preview.show{animation:.2s ease-out pop;display:block}.dmg-preview.lethal{background:var(--ink)}@keyframes pop{0%{transform:scale(.6)}}.card.rarity-uncommon .card-name:after{content:" ◆";color:var(--skill);font-size:.7em}.card.rarity-rare .card-name:after{content:" ★";color:var(--power);font-size:.8em}.card.rarity-rare{box-shadow:0 0 0 2px #d0a13a8c, var(--shadow)}.card[data-tip]{cursor:pointer}.field{background-size:auto,auto 56%;align-items:flex-end;padding-bottom:3vh}.enemies-3 .unit{--unit:clamp(80px, 18vh, 170px)}@media (width<=760px){.enemy-side{flex-wrap:nowrap;gap:2px}.enemies-2 .unit{--unit:clamp(52px, 10vh, 84px);width:calc(var(--unit) * 1.3)}.enemies-3 .unit{--unit:clamp(42px, 8vh, 66px);width:calc(var(--unit) * 1.35)}.enemies-2 .unit-name,.enemies-3 .unit-name{white-space:nowrap;font-size:10px}.enemies-3 .intent{padding:0 5px;font-size:11px}.field .player-side .unit{--unit:clamp(56px, 11vh, 96px)}}
