:root{--paper: #efe6d2;--paper-dark: #e2d5b8;--ink: #1f1a17;--ink-soft: #5b5149;--seal: #b3322a;--up: #2f7d4a;--down: #b3322a;--gold: #a37a1f;font-family:Nanum Myeongjo,Apple SD Gothic Neo,serif}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);min-height:100vh;background-image:radial-gradient(circle at 20% 10%,#f6efdf 0,transparent 50%),radial-gradient(circle at 80% 90%,#e6dac0 0,transparent 50%)}#app{max-width:1100px;margin:0 auto;padding:16px}button{font:inherit;background:var(--ink);color:var(--paper);border:0;padding:10px 18px;border-radius:4px;cursor:pointer}button:disabled{opacity:.35;cursor:not-allowed}button.ghost{background:transparent;color:var(--ink);border:1px solid var(--ink)}b.up{color:var(--up)}b.down{color:var(--down)}[title]{cursor:help}.topbar{display:flex;gap:20px;align-items:center;padding:8px 12px;border-bottom:2px solid var(--ink);margin-bottom:16px}.topbar .deck-btn{margin-left:auto}.enemy{text-align:center;padding:8px;border-radius:8px;transition:background .15s}.enemy.targetable{cursor:crosshair;outline:2px dashed var(--seal)}.enemy.targetable:hover{background:var(--paper-dark)}.intent{font-size:20px;font-weight:700;min-height:28px}.silhouette{font-size:72px;filter:grayscale(1) contrast(1.4);line-height:1.2}.silhouette img,.card .art img{width:100%;height:100%;object-fit:cover}.bar{position:relative;height:16px;background:#cbbfa6;border:1px solid var(--ink);border-radius:3px;overflow:hidden}.bar div{height:100%;background:var(--seal)}.bar span{position:absolute;top:0;right:0;bottom:0;left:0;font-size:12px;line-height:15px;color:#fff;text-shadow:0 0 2px #000}.row{display:flex;gap:8px;justify-content:center;margin-top:4px;min-height:22px}.card{width:130px;height:190px;background:#fbf6ea;border:2px solid var(--ink);border-radius:8px;padding:8px;position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer;transition:transform .12s,box-shadow .12s}@media(hover:hover){.card:hover{transform:translateY(-8px);box-shadow:0 6px 12px #0003}}.card.selected{transform:translateY(-16px);box-shadow:0 0 0 3px var(--seal)}.card.disabled{opacity:.4;cursor:not-allowed;transform:none}.card.synergy{box-shadow:0 0 0 3px var(--gold),0 0 12px var(--gold)}.card .cost{position:absolute;top:-10px;left:-10px;width:28px;height:28px;border-radius:50%;background:var(--ink);color:var(--paper);display:grid;place-items:center;font-weight:700}.card .art{width:100%;height:70px;display:grid;place-items:center;font-size:36px;background:var(--paper-dark);border-radius:4px;overflow:hidden}.card .name{font-weight:700;font-size:14px;text-align:center}.card .text{font-size:13px;text-align:center}.card.companion{border-color:#3d5a6c}.card.record{border-color:var(--seal)}.map-wrap{display:grid;justify-items:center;gap:12px}.map{position:relative;width:100%;max-width:640px;background:#f4ecd9;border:2px solid var(--ink);border-radius:6px;box-shadow:inset 0 0 40px #785f3240}.map svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.map line{vector-effect:non-scaling-stroke}.map line{stroke:#b9ab8f;stroke-width:2;stroke-dasharray:4 4}.map line.lit{stroke:var(--ink);stroke-dasharray:none;stroke-width:2.5}.node{position:absolute;transform:translate(-50%,-50%);width:46px;height:46px;padding:0;border-radius:50%;font-size:22px;background:#fbf6ea;color:var(--ink);border:2px solid var(--ink);display:grid;place-items:center}.node:disabled{opacity:1;cursor:default}.node.fog{background:#ddd3c0;border-color:#b9ab8f;filter:grayscale(1);opacity:.75}.node.open{cursor:pointer;animation:pulse 1.4s infinite}.node.open:hover{background:var(--paper-dark)}.node.current{box-shadow:0 0 0 4px var(--ink)}.node.shifty{border-style:dashed;border-color:#6b5aa6;animation:wobble 2.4s ease-in-out infinite}.node.open.shifty{animation:pulse 1.4s infinite,wobble 2.4s ease-in-out infinite}.node.recorded:after{content:"印";position:absolute;right:-8px;top:-8px;font-size:11px;background:var(--seal);color:#fff;width:18px;height:18px;border-radius:3px;display:grid;place-items:center}.node.reveal{animation:reveal .9s ease-out}@keyframes pulse{50%{box-shadow:0 0 0 6px #b3322a40}}@keyframes wobble{50%{transform:translate(-50%,-50%) rotate(6deg)}}@keyframes reveal{0%{filter:blur(6px) grayscale(1);opacity:0}to{filter:none;opacity:1}}.legend{font-size:13px;color:var(--ink-soft);display:flex;gap:10px;align-items:center}.shifty-key{border:2px dashed #6b5aa6;border-radius:10px;padding:0 6px}.seal-key{background:var(--seal);color:#fff;padding:0 4px;border-radius:3px}.night-banner{background:#2b2540;color:#efe6d2;padding:10px 16px;border-radius:6px;animation:reveal 1.2s ease-out}.panel{display:grid;justify-items:center;gap:14px;text-align:center;padding:20px}.panel h2{margin:0;font-size:26px}.panel p{margin:0;color:var(--ink-soft);max-width:560px}.panel.end{margin-top:15vh}.cards{display:flex;flex-wrap:wrap;justify-content:center;gap:14px;padding:8px}.shop-item{display:grid;justify-items:center;gap:4px}.price{font-weight:700;color:var(--gold)}.price.poor{color:var(--down)}.node.past{opacity:.55}@media(max-width:640px){#app{padding:8px}.topbar{gap:10px;padding:6px 4px;margin-bottom:8px;font-size:14px}.topbar button{padding:6px 10px}.card{width:104px;height:150px;padding:6px 4px}.card .art{height:44px;font-size:26px}.card .name{font-size:12px}.card .text{font-size:11.5px}.card .cost{width:24px;height:24px;top:-8px;left:-6px;font-size:13px}.node{width:40px;height:40px;font-size:19px}.legend{flex-wrap:wrap;justify-content:center;font-size:12px}.panel{padding:12px 4px}.panel h2{font-size:22px}.panel .cards .card,.shop-item .card{width:104px}.shop-item{width:calc((100% - 28px) / 3);max-width:120px}.shop-item .card{width:100%}.cards{gap:10px;padding:4px}}.card{user-select:none;-webkit-user-select:none}.card.draggable{touch-action:none}.card.dragging{opacity:.35}.card.ghost{position:fixed;z-index:100;pointer-events:none;transform:translate(-50%,-60%) rotate(-4deg) scale(1.05);box-shadow:0 10px 24px #00000059;margin:0!important}.enemy.drop{background:var(--paper-dark);outline:3px solid var(--seal)}.title{margin-top:8vh}.title h1{font-size:40px;margin:0;letter-spacing:4px}.story{max-width:560px;line-height:1.8;text-align:left}.story-panel p{line-height:1.8}.row-buttons{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.new-seen{color:var(--seal)!important;font-weight:700}.entry{width:120px;padding:8px;border:2px solid var(--ink);border-radius:8px;background:#fbf6ea;text-align:center}.entry .silhouette{font-size:44px}.entry .name{font-weight:700;font-size:14px}.entry .meta{font-size:12px;color:var(--ink-soft)}.entry.unknown,.card.unknown{opacity:.5;border-style:dashed;cursor:default}.entry.unknown .silhouette{filter:brightness(0) opacity(.5)}.touch-tip{position:fixed;left:50%;bottom:20px;transform:translate(-50%);z-index:200;max-width:90vw;background:var(--ink);color:var(--paper);padding:10px 14px;border-radius:6px;font-size:14px;box-shadow:0 4px 12px #0000004d}@media(max-width:640px){.title h1{font-size:30px}.entry,.bestiary .cards .card{width:calc((100% - 20px) / 3)}}.card{-webkit-touch-callout:none}.card-detail{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;background:#1f1a17b8;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:16px;animation:reveal .2s ease-out}.card-detail .card{width:180px!important;height:260px;transform:none!important;opacity:1!important;cursor:default}.card-detail .card .art{height:100px;font-size:48px}.card-detail .card .name{font-size:18px}.card-detail .card .text{font-size:16px}.detail-info{background:var(--paper);border-radius:8px;padding:12px 16px;max-width:420px;width:100%}.detail-info .family{font-size:13px;color:var(--ink-soft);margin-bottom:6px}.detail-info ul{margin:0;padding-left:18px;display:grid;gap:6px;font-size:14px;line-height:1.5}.detail-info .hint{margin-top:10px;font-size:12px;color:var(--ink-soft);text-align:center}:root{--uncommon: #2f5d8a;--rare: #b8862b}.card .gem{position:absolute;top:4px;right:6px;font-size:13px;line-height:1}.card.r-uncommon .gem,.card.r-uncommon .name,b.rarity.r-uncommon{color:var(--uncommon)}.card.r-rare .gem,.card.r-rare .name,b.rarity.r-rare{color:var(--rare)}.card.r-uncommon{background:linear-gradient(180deg,#eef3f8 0,#fbf6ea 45%)}.card.r-rare{background:linear-gradient(180deg,#fbf0d6 0,#fbf6ea 45%);box-shadow:inset 0 0 0 2px #b8862b8c}.card.r-rare.synergy{box-shadow:inset 0 0 0 2px #b8862b8c,0 0 0 3px var(--gold),0 0 12px var(--gold)}.combat{display:grid;gap:10px;min-height:calc(100vh - 32px);min-height:calc(100dvh - 32px);grid-template-rows:1fr auto}.field{display:flex;flex-direction:column-reverse;gap:6px}.enemies{display:flex;justify-content:center;gap:12px}.enemy{flex:0 1 170px;min-width:0}.fighter.player{width:min(320px,100%);margin:0 auto;text-align:center}.fighter.player .silhouette{display:none}.hud{display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:"hand hand hand" "left . right";align-items:end;gap:8px}.hud-left{grid-area:left;display:flex;align-items:center;gap:10px}.hud-right{grid-area:right;display:flex;align-items:center;gap:10px}.inkstone{width:64px;height:46px;border-radius:50%/46%;display:grid;place-items:center;font-weight:700;color:var(--paper);background:radial-gradient(ellipse at 50% 38%,#4a413c 0,#1f1a17 62%);box-shadow:inset 0 -4px #000,0 3px #8a7f70}.inkstone.dry{opacity:.45}.pile{font-size:12px;color:var(--ink-soft);text-align:center;line-height:1.3;padding:4px 8px;border:1px solid #b9ab8f;border-radius:4px;background:#fbf6ea}.pile b{display:block;font-size:16px;color:var(--ink)}.end-turn{padding:12px 18px;white-space:nowrap}.hand{--cw: 130px;--hw: calc(100vw - 32px) ;--step: 3deg;grid-area:hand;display:flex;justify-content:center;padding-top:48px;min-width:0}.hand .card{flex:0 0 auto;width:var(--cw);--rot: 0deg;transform:rotate(var(--rot));transform-origin:50% 160%;box-shadow:-3px 0 6px #0000001f}.hand .card+.card{margin-left:min(6px,calc((var(--hw) - var(--cw) * var(--n)) / (var(--n) - 1)))}.hand .card.disabled{transform:rotate(var(--rot))}@media(hover:hover){.hand .card:not(.disabled):hover{transform:translateY(-18px) scale(1.06);z-index:5}}.hand .card.selected{transform:translateY(-24px) scale(1.25);transform-origin:50% 100%;opacity:1;z-index:10;box-shadow:0 0 0 3px var(--seal),0 8px 18px #0000004d}.hand .card.selected:first-child{transform-origin:0 100%}.hand .card.selected:last-child{transform-origin:100% 100%}@media(max-width:640px)and (orientation:portrait){.combat{min-height:calc(100vh - 16px);min-height:calc(100dvh - 16px)}.field{justify-content:space-between}.enemies{gap:6px}.enemy{flex:1 1 0;max-width:150px;padding:6px 4px}.intent{font-size:15px;min-height:22px}.silhouette{font-size:44px}.enemy .name{font-size:13px}.hand{--cw: 104px;--hw: calc(100vw - 16px) ;padding-top:64px}.hand .card+.card{margin-left:min(-14px,calc((var(--hw) - var(--cw) * var(--n)) / (var(--n) - 1)))}.hand .card.selected{transform:translateY(-24px) scale(1.3)}}@media(orientation:landscape){.field{flex-direction:row;align-items:flex-end;justify-content:space-between;gap:16px;padding:0 3% 6px;border-bottom:3px solid var(--ink);border-image:linear-gradient(90deg,transparent,var(--ink) 15%,var(--ink) 85%,transparent) 1}.fighter.player{width:200px;margin:0}.fighter.player .silhouette{display:block}.enemies{flex:1;justify-content:flex-end}.hud{grid-template-areas:"left hand right";align-items:end}.hud-left,.hud-right{flex-direction:column;gap:8px}.hand{--hw: calc(min(100vw, 1100px) - 300px) }.hand .card{--rot: calc((var(--i) - (var(--n) - 1) / 2) * var(--step))}}@media(orientation:landscape)and (max-height:500px){#app{padding:4px 12px}.combat{gap:4px;min-height:calc(100vh - 16px);min-height:calc(100dvh - 16px)}.fighter.player{width:130px}.silhouette{font-size:34px;line-height:1.1}.enemy{flex:0 1 120px;padding:2px 4px}.enemy .name,.fighter .name{font-size:12px}.intent{font-size:13px;min-height:18px}.bar{height:12px}.bar span{font-size:10px;line-height:11px}.row{min-height:16px;margin-top:2px;font-size:12px}.field{padding-bottom:2px}.hand{--cw: 84px;--hw: calc(100vw - 240px) ;--step: 4deg;padding-top:22px}.hand .card{height:118px;padding:4px 3px;gap:2px}.hand .card .art{height:30px;font-size:20px}.hand .card .name{font-size:10.5px}.hand .card .text{font-size:10px}.hand .card .cost{width:20px;height:20px;top:-6px;left:-5px;font-size:11px}.hand .card.selected{transform:translateY(-18px) scale(1.35)}.inkstone{width:52px;height:36px;font-size:13px}.pile{font-size:10px;padding:2px 6px}.pile b{font-size:13px}.end-turn{padding:8px 10px;font-size:13px}}.warn{color:var(--down)!important}.wheel{position:relative;width:min(94vw,600px);margin:0 auto}.wheel svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.wheel line{stroke:#b9ab8f;stroke-width:.6;stroke-dasharray:1.2 1.2}.wheel line.owned{stroke:var(--ink);stroke-width:1;stroke-dasharray:none}.wheel .core{position:absolute;left:50%;transform:translate(-50%,-50%);width:76px;height:76px;border-radius:50%;background:var(--ink);color:var(--paper);display:grid;place-items:center;align-content:center;font-size:26px;line-height:1.1;box-shadow:0 0 0 4px #b9ab8f}.wheel .core b{font-size:13px}.ray-label{position:absolute;transform:translate(-50%,-50%);font-weight:700;font-size:15px;color:var(--ink-soft)}.tnode{position:absolute;transform:translate(-50%,-50%);width:48px;height:48px;padding:0;border-radius:50%;font-size:22px;display:grid;place-items:center;background:#fbf6ea;color:var(--ink);border:2px solid #b9ab8f}.tnode:disabled{opacity:1}.tnode.owned{background:#efe2c2;border-color:var(--ink);box-shadow:0 0 0 3px #1f1a1726}.tnode.buyable{border-color:var(--seal);animation:pulse 1.6s infinite}.tnode.locked{filter:grayscale(1);opacity:.5}.tnode.picked{box-shadow:0 0 0 4px var(--seal);opacity:1;z-index:2}.tinfo{display:grid;gap:6px;justify-items:center;min-height:92px;max-width:420px;text-align:center}.tinfo .hint,.tinfo .why{color:var(--ink-soft);font-size:14px}.branch-tag{font-size:12px;padding:1px 6px;border:1px solid var(--ink-soft);border-radius:8px;color:var(--ink-soft)}@media(max-width:640px){.tnode{width:32px;height:32px;font-size:15px}.wheel .core{width:56px;height:56px;font-size:20px}.ray-label{font-size:12px}}:root{--night: #1E2A3A;--night-deep: #141C27;--fog: #8E9AA6;--paper: #EAE3D2;--paper-dark: #D9CFB8;--ink: #17140F;--ink-soft: #544B40;--seal: #C23B22;--seal-bright: #E8705A;--jade: #3F8F7A;--jade-bright: #6FC2A9;--text: #E6E2D8;--text-soft: #A3ADB8;--gold: #C9A24A;--up: #2F7D63;--down: #B8331E;--uncommon: #2F5F8E;--rare: #A87A1E;--brush: "Nanum Brush Script", "Gowun Dodum", serif;font-family:Gowun Dodum,Apple SD Gothic Neo,sans-serif}body{background:var(--night);color:var(--text);background-image:radial-gradient(ellipse 120% 60% at 50% 110%,#2C3A4C 0,transparent 60%),radial-gradient(ellipse 80% 40% at 20% -10%,#273446 0,transparent 70%)}h1,h2,h3,.ray-label{font-family:var(--brush);font-weight:400}:focus-visible{outline:3px solid var(--jade-bright);outline-offset:2px}button{background:var(--paper);color:var(--ink);font-weight:700;border-radius:3px}button:hover:not(:disabled){background:#f4efe3}button.ghost{background:transparent;color:var(--text);border:1px solid var(--fog)}button.ghost:hover:not(:disabled){background:#eae3d214}.topbar{border-bottom:1px solid rgba(142,154,166,.5)}.topbar b{font-family:var(--brush);font-size:24px;font-weight:400}.card,.entry,.pile,.detail-info,.touch-tip,.tnode{color:var(--ink)}.card{background:var(--paper);border-color:var(--ink)}.card .art{background:var(--paper-dark)}.card.r-uncommon{background:linear-gradient(180deg,#DCE4EA 0,var(--paper) 45%)}.card.r-rare{background:linear-gradient(180deg,#EFE0B8 0,var(--paper) 45%);box-shadow:inset 0 0 0 2px #a87a1e8c}.card.companion{border-color:#2f4a5c}.entry{background:var(--paper);border-color:var(--ink)}.entry.unknown,.card.unknown{background:transparent;color:var(--text-soft);border-color:var(--fog);opacity:.6}.pile{background:var(--paper);border:0}.touch-tip{background:var(--paper)}.silhouette{filter:grayscale(1) brightness(1.25) contrast(1.15) drop-shadow(0 6px 10px rgba(0,0,0,.45))}.enemy .name,.fighter .name{font-family:var(--brush);font-size:22px;line-height:1}.intent{color:var(--text)}.enemy.targetable{outline-color:var(--seal-bright)}.enemy.targetable:hover,.enemy.drop{background:#eae3d212}.enemy.drop{outline-color:var(--seal-bright)}.bar{background:#2b3747;border-color:#8e9aa699}.bar div{background:var(--seal)}.inkstone{box-shadow:inset 0 -4px #000,0 0 0 2px var(--paper-dark),0 3px 0 2px #0d131b;font-size:15px}.end-turn{background:var(--paper)}@media(orientation:landscape){.field{border-image:linear-gradient(90deg,transparent,rgba(234,227,210,.55) 15%,rgba(234,227,210,.55) 85%,transparent) 1}}.map{background:var(--paper);border:0;border-radius:2px;box-shadow:0 0 0 1px #0d131b,0 18px 40px #0006,inset 0 0 50px #785f3238;overflow:hidden}.node{background:var(--paper)}.node.fog{width:14px;height:14px;background:var(--fog);border:0;opacity:.5;filter:none}.node.open{border-color:var(--jade);animation:pulse-jade 1.4s infinite}@keyframes pulse-jade{50%{box-shadow:0 0 0 7px #3f8f7a4d}}.fog-bank{position:absolute;left:-10%;right:-10%;top:0;pointer-events:none;z-index:3;background:radial-gradient(ellipse 30% 22% at 20% 70%,rgba(110,122,136,.55),transparent 70%),radial-gradient(ellipse 35% 25% at 75% 60%,rgba(96,108,124,.55),transparent 70%),radial-gradient(ellipse 50% 30% at 50% 30%,rgba(80,92,108,.6),transparent 75%),linear-gradient(180deg,#3a4452eb 0,#626c7adb 70%,#8e9aa68c);background-size:160% 100%,140% 100%,180% 100%,100% 100%;-webkit-mask-image:linear-gradient(180deg,#000 80%,transparent);mask-image:linear-gradient(180deg,#000 80%,transparent);animation:drift 18s ease-in-out infinite alternate;transition:height .9s ease,filter 1.2s ease}.fog-bank.night{filter:brightness(.55) saturate(1.4) hue-rotate(20deg)}@keyframes drift{to{background-position:30% 0,-25% 0,20% 0,0 0}}.legend{color:var(--text-soft)}.shifty-key{border-color:#9c8cd6}.node.shifty{border-color:#6b5aa6}.night-banner{background:#2b2540;border:1px solid #4A3F6E}.panel p{color:var(--text-soft)}.panel h2{font-size:40px;line-height:1.1}.price{color:var(--gold)}.price.poor{color:var(--seal-bright)}.new-seen{color:var(--gold)!important}.warn{color:var(--seal-bright)!important}.title h1{font-size:clamp(64px,14vw,128px);letter-spacing:0;line-height:.9;color:var(--paper);text-shadow:0 0 30px rgba(142,154,166,.35)}.title .story{color:var(--text-soft);font-size:16px;line-height:1.9}.wheel line{stroke:#8e9aa699}.wheel line.owned{stroke:var(--paper)}.wheel .core{background:var(--ink);box-shadow:0 0 0 3px var(--paper-dark),0 0 30px #00000080}.tnode{background:var(--paper);border-color:var(--fog)}.tnode.owned{background:var(--paper);border-color:var(--ink);box-shadow:0 0 0 3px var(--paper-dark)}.tnode.buyable{border-color:var(--jade);animation:pulse-jade 1.6s infinite}.tnode.locked{opacity:.4}.tnode.picked{box-shadow:0 0 0 4px var(--jade-bright)}.ray-label{color:var(--text-soft);font-size:26px}.tinfo .hint,.tinfo .why{color:var(--text-soft)}.branch-tag{border-color:var(--text-soft);color:var(--text-soft)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
