:root{--sai-top: env(safe-area-inset-top, 0px);--sai-bottom: env(safe-area-inset-bottom, 0px);--beni: oklch(.52 .19 28);--beni-2: oklch(.62 .21 32);--sumi: oklch(.13 .012 50);--sumi-2: oklch(.19 .014 50);--sumi-3: oklch(.25 .015 55);--kin: oklch(.78 .13 85);--kin-2: oklch(.88 .14 88);--matsuba: oklch(.5 .07 145);--murasaki: oklch(.45 .1 320);--aozumi: oklch(.5 .1 230);--washi: oklch(.88 .018 75);--washi-2: oklch(.78 .025 70);--paper-warm: oklch(.94 .02 80)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;background:var(--sumi);color:var(--washi);font-family:"Noto Serif JP",serif;overflow:hidden;-webkit-font-smoothing:antialiased}#root{width:100vw;height:100dvh;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden}#root:has(#game-root.portrait){align-items:flex-start;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}#game-root{width:1440px;height:900px;position:relative;overflow:hidden;transform-origin:center center;contain:layout style paint;will-change:transform}#game-root.portrait{width:420px;height:780px;transform-origin:top center}.card.compact{width:76px;height:107px;border-radius:7px}.card.compact .card-corner .val{font-size:15px}.card.compact .card-corner .mult{font-size:8px;padding:1px 3px}.card.compact .card-portrait .kanji{font-size:34px}.card.compact .card-name{font-size:8px;letter-spacing:.1em;padding:2px 0 1px}.card.compact .card-romaji{font-size:5px}.card.compact.selected{transform:translateY(-14px)}.card.compact.face-down:after{font-size:42px}.gslot.compact{width:40px;height:40px}.gslot.compact .gicon{font-size:17px}.gslot.compact .gtip{bottom:50px;width:160px;font-size:10px;padding:6px 8px}.washi-bg{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(ellipse 60% 40% at 15% 20%,oklch(.25 .04 30 / .55),transparent 70%),radial-gradient(ellipse 50% 35% at 85% 75%,oklch(.22 .05 270 / .45),transparent 70%),radial-gradient(ellipse 40% 30% at 50% 50%,oklch(.2 .02 60 / .35),transparent 70%),linear-gradient(180deg,#080302,#100906,#060301)}.washi-bg:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:repeating-linear-gradient(90deg,transparent 0 2px,oklch(1 0 0 / .012) 2px 3px),repeating-linear-gradient(0deg,transparent 0 60px,oklch(1 0 0 / .015) 60px 61px);mix-blend-mode:overlay}.washi-bg:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(circle at 22% 60%,oklch(0 0 0 / .5) 0 1.5%,transparent 3%),radial-gradient(circle at 78% 30%,oklch(0 0 0 / .4) 0 1%,transparent 2.5%);will-change:transform,opacity;animation:ink-drift 28s ease-in-out infinite alternate}.grain{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.18;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.95 0 0 0 0 0.85 0 0 0 0 0.7 0 0 0 0.5 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");mix-blend-mode:overlay}@media (pointer: coarse){.washi-bg:after{filter:none;animation:none;opacity:.6}.grain{mix-blend-mode:normal;opacity:.06}.washi-bg:before{mix-blend-mode:normal;opacity:.04}.card:before{display:none}.foxfire-fill:before{filter:none}}.fnt-jp{font-family:Shippori Mincho,"Noto Serif JP",serif}.fnt-mono{font-family:JetBrains Mono,monospace;font-feature-settings:"tnum"}.vrt{writing-mode:vertical-rl;text-orientation:upright;letter-spacing:.15em}.card{position:relative;width:120px;height:168px;border-radius:10px;background:linear-gradient(165deg,var(--paper-warm) 0%,var(--washi) 50%,var(--washi-2) 100%);box-shadow:inset 0 0 0 1px #0003,inset 0 0 0 3px var(--card-accent, var(--beni)),inset 0 0 0 4px #efe7d9,inset 0 0 14px #0000001f,0 12px 26px #0000008c,0 2px 4px #0006;cursor:pointer;-webkit-user-select:none;user-select:none;transition:transform .35s cubic-bezier(.2,.8,.2,1.05),box-shadow .35s;will-change:transform;transform:translateZ(0)}.card:before{content:"";position:absolute;top:4px;right:4px;bottom:4px;left:4px;border-radius:6px;background:linear-gradient(90deg,transparent 0 4px,oklch(0 0 0 / .2) 4px 5px,transparent 5px 9px),linear-gradient(0deg,transparent 0 4px,oklch(0 0 0 / .2) 4px 5px,transparent 5px 9px);background-size:9px 100%,100% 9px;pointer-events:none;mix-blend-mode:multiply;opacity:.5}.card.selected{transform:translateY(-22px);box-shadow:inset 0 0 0 1px #0003,inset 0 0 0 3px var(--kin),inset 0 0 0 4px #feedc9,inset 0 0 18px #ddb04959,0 18px 36px #e14e0080,0 0 28px #ddb04973;box-shadow:inset 0 0 0 1px #0003,inset 0 0 0 3px var(--kin),inset 0 0 0 4px #feedc9,inset 0 0 18px #ddb04959,0 18px 36px oklch(.62 .22 40 / .5),0 0 28px #ddb04973}.card.sealed{opacity:.65;cursor:default;box-shadow:inset 0 0 0 2px #488bfb8c,0 0 10px #296cd840;animation:sealed-pulse 2.4s ease-in-out infinite}.card.compact.sealed{opacity:.65}@keyframes sealed-pulse{0%,to{box-shadow:inset 0 0 0 2px #488bfb66,0 0 8px #296cd82e}50%{box-shadow:inset 0 0 0 2px #6da4ffb3,0 0 16px #2e79f566;box-shadow:inset 0 0 0 2px oklch(.72 .2 260 / .7),0 0 16px #2e79f566}}.card-inner{position:absolute;top:6px;right:6px;bottom:6px;left:6px;display:flex;flex-direction:column}.card-corner{display:flex;justify-content:space-between;align-items:flex-start;padding:2px 4px}.card-corner .val{font-family:Shippori Mincho,serif;font-size:22px;font-weight:800;line-height:1;color:var(--card-accent, var(--beni))}.card-corner .mult{font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;background:var(--sumi);color:var(--kin);padding:2px 5px;border-radius:3px}.card-portrait{flex:1;margin:4px;background:repeating-linear-gradient(45deg,var(--card-accent, var(--beni)) 0 6px,oklch(from var(--card-accent, var(--beni)) calc(l - .07) c h) 6px 12px);border:1px solid oklch(0 0 0 / .25);position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}.card-portrait:before{content:"";position:absolute;top:6px;right:6px;bottom:6px;left:6px;background:#efe7d9f0;border-radius:2px;z-index:0}.card-portrait.has-img:before{background:transparent;box-shadow:inset 0 0 0 1px #0003}.card-portrait-img{position:absolute;top:6px;right:6px;bottom:6px;left:6px;width:calc(100% - 12px);height:calc(100% - 12px);object-fit:cover;object-position:center 15%;border-radius:2px;z-index:1;filter:saturate(.82) contrast(1.06) sepia(.1)}.card-portrait-overlay{position:absolute;top:6px;right:6px;bottom:6px;left:6px;border-radius:2px;z-index:2;pointer-events:none;background:linear-gradient(to bottom,transparent 35%,oklch(from var(--card-accent,var(--beni)) l c h / .6) 100%)}.card-portrait .kanji{position:relative;z-index:1;font-family:Shippori Mincho,serif;font-size:56px;font-weight:800;color:var(--card-accent, var(--beni));text-shadow:1px 2px 0 oklch(0 0 0 / .15);line-height:1}.card-portrait .stripes{position:absolute;left:8px;right:8px;bottom:8px;height:4px;z-index:3;background:repeating-linear-gradient(90deg,var(--sumi) 0 2px,transparent 2px 4px);opacity:.5}.card-name{text-align:center;padding:3px 0 2px;font-family:Shippori Mincho,serif;font-size:11px;letter-spacing:.2em;color:var(--sumi)}.card-romaji{text-align:center;font-size:7px;letter-spacing:.18em;color:var(--sumi-3);text-transform:uppercase;font-family:JetBrains Mono,monospace}.card.face-down .card-inner{display:none}.card.face-down{background:radial-gradient(circle at 50% 50%,#5b1713,#290101);box-shadow:inset 0 0 0 1px #00000080,inset 0 0 0 3px #ddb049,inset 0 0 0 4px #950004,inset 0 0 24px #000000b3,0 14px 30px #000000a6;box-shadow:inset 0 0 0 1px #00000080,inset 0 0 0 3px #ddb049,inset 0 0 0 4px oklch(.42 .18 28),inset 0 0 24px #000000b3,0 14px 30px #000000a6}.card.face-down:after{content:"鬼";position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-family:Shippori Mincho,serif;font-size:64px;font-weight:800;color:#ddb049d9;text-shadow:0 0 14px oklch(.78 .13 85 / .6)}.gslot{width:64px;height:64px;border-radius:50%;background:radial-gradient(circle at 50% 45%,#17100c,#060301);border:2px solid oklch(.3 .02 60);box-shadow:inset 0 2px 8px #000000b3,inset 0 0 0 1px #ddb04940;display:flex;align-items:center;justify-content:center;position:relative}.gslot.filled{background:radial-gradient(circle at 50% 45%,#621d18,#320101);border-color:#ddb049;box-shadow:inset 0 0 0 1px #ffe1a2,0 0 18px #ddb04980;box-shadow:inset 0 0 0 1px oklch(.92 .16 85),0 0 18px #ddb04980}.gslot .gicon{font-family:Shippori Mincho,serif;font-size:26px;font-weight:800;color:var(--kin-2);text-shadow:0 0 8px oklch(.78 .13 85 / .7)}.gslot .gtip{position:absolute;bottom:76px;left:50%;transform:translate(-50%);background:#060302;color:var(--washi);border:1px solid oklch(.78 .13 85);padding:8px 12px;width:220px;font-size:12px;line-height:1.5;z-index:80;pointer-events:none;box-shadow:0 8px 22px #0009;opacity:0;transition:opacity .18s;white-space:normal}.gslot:hover .gtip{opacity:1}.foxfire-track{position:relative;border-radius:6px;background:linear-gradient(180deg,#030101,#0a0503);border:1px solid oklch(.3 .015 55);box-shadow:inset 0 0 12px #0009;overflow:hidden}.foxfire-fill{position:absolute;left:0;bottom:0;width:100%;background:linear-gradient(180deg,#ffdeba,#ffcf9e,#ffbf81 12.5%,#ffb772,#ffae63 18.75%,#ff9c3e 25%,#e14e00 55%,#c62600 77.5%,#b90001,#a30018);background:linear-gradient(180deg,color(xyz 0.842 0.756 0.153),color(xyz 0.769 0.669 0.114),color(xyz 0.7 0.589 0.081) 12.5%,color(xyz 0.667 0.551 0.066),color(xyz 0.636 0.515 0.052) 18.75%,color(xyz 0.575 0.448 0.028) 25%,color(xyz 0.358 0.212 0.003) 55%,color(xyz 0.246 0.133 0.008) 77.5%,color(xyz 0.2 0.102 0.009),color(xyz 0.16 0.077 0.01));transition:height .9s cubic-bezier(.2,.7,.2,1);box-shadow:0 0 18px #ff9c3fb3,0 0 38px #e14e0073;box-shadow:0 0 18px oklch(.78 .2 60 / .7),0 0 38px oklch(.62 .22 40 / .45);will-change:height}.foxfire-fill:before{content:"";position:absolute;inset:-2px 0 auto 0;height:18px;background:radial-gradient(ellipse at 20% 100%,oklch(.95 .15 70 / .9),transparent 60%),radial-gradient(ellipse at 55% 100%,oklch(.85 .18 50 / .9),transparent 60%),radial-gradient(ellipse at 85% 100%,oklch(.9 .16 60 / .9),transparent 60%);filter:blur(2px);animation:foxfire-flicker 1.4s ease-in-out infinite}.foxfire-fill:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:repeating-linear-gradient(180deg,transparent 0 8px,oklch(1 0 0 / .06) 8px 9px);mix-blend-mode:overlay;animation:foxfire-rise 1.8s linear infinite}.formation-ring{position:absolute;left:50%;top:50%;width:760px;height:320px;margin:-160px 0 0 -380px;border-radius:50%;background:radial-gradient(ellipse 60% 50% at 50% 50%,oklch(.78 .13 85 / .1),transparent 70%);pointer-events:none}.formation-ring:before,.formation-ring:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:1px dashed oklch(.78 .13 85 / .4)}.formation-ring:after{top:20px;right:20px;bottom:20px;left:20px;border-style:solid;border-color:#ddb04926;animation:ring-spin 60s linear infinite}.ring-sigils{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;font-family:Shippori Mincho,serif;font-size:14px;color:#ddb04980;letter-spacing:.4em}.btn-edo{font-family:Shippori Mincho,serif;background:linear-gradient(180deg,#8d0000,#560000);background:linear-gradient(180deg,color(xyz 0.113 0.054 0.002),color(xyz 0.045 0.017 -0.003));color:#feedc9;border:1px solid oklch(.78 .13 85);box-shadow:inset 0 1px #ddb04980,inset 0 0 0 2px #0b0604,0 6px 16px #0000008c;padding:14px 28px;letter-spacing:.3em;cursor:pointer;transition:transform .15s,box-shadow .2s;border-radius:0}.btn-edo:hover:not(:disabled){transform:translateY(-2px);box-shadow:inset 0 1px #ddb049cc,inset 0 0 0 2px #0b0604,0 10px 22px #9500048c,0 0 24px #ddb04966;box-shadow:inset 0 1px #ddb049cc,inset 0 0 0 2px #0b0604,0 10px 22px oklch(.42 .18 28 / .55),0 0 24px #ddb04966}.btn-edo:active:not(:disabled){transform:translateY(1px)}.btn-edo:disabled{opacity:.4;cursor:not-allowed}.btn-edo.alt{background:linear-gradient(180deg,#392316,#1c0d06)}.shop-card{width:220px;min-height:320px;background:linear-gradient(180deg,#1b1410,#0c0604);border:1px solid oklch(.78 .13 85);box-shadow:inset 0 0 0 3px #0b0604,inset 0 0 0 4px #95000499,0 14px 30px #0009;box-shadow:inset 0 0 0 3px #0b0604,inset 0 0 0 4px oklch(.42 .18 28 / .6),0 14px 30px #0009;padding:18px;display:flex;flex-direction:column;position:relative;transition:transform .25s,box-shadow .25s;cursor:pointer}.shop-card.mob{width:118px;min-height:0;padding:8px 8px 10px}.shop-card:hover:not(.disabled){transform:translateY(-8px);box-shadow:inset 0 0 0 3px #0b0604,inset 0 0 0 4px #ddb049,0 22px 40px #ddb04959,0 0 32px #ddb04966}.shop-card.disabled{opacity:.45;cursor:not-allowed}.glow-white{box-shadow:0 0 60px 20px #f7ede0b3!important}.glow-blue{box-shadow:0 0 60px 20px #0089c9b3!important;box-shadow:0 0 60px 20px oklch(.6 .18 240 / .7)!important}.glow-gold{box-shadow:0 0 80px 24px #ffc251d9!important;box-shadow:0 0 80px 24px oklch(.85 .18 80 / .85)!important}@keyframes ink-drift{0%{transform:translate(0) scale(1);opacity:.7}50%{transform:translate(2%,-1.5%) scale(1.05);opacity:.85}to{transform:translate(-1.5%,2%) scale(1.03);opacity:.6}}@keyframes foxfire-flicker{0%,to{transform:scaleY(1) translateY(0);opacity:1}35%{transform:scaleY(1.4) translateY(-3px);opacity:.85}65%{transform:scaleY(.85) translateY(1px);opacity:1}}@keyframes foxfire-rise{0%{background-position:0 0}to{background-position:0 -40px}}@keyframes ring-spin{to{transform:rotate(360deg)}}@keyframes hand-enter{0%{transform:translateY(160px) rotate(0);opacity:0}to{transform:var(--rest-tf, translateY(0));opacity:1}}@keyframes flip-in{0%{transform:rotateY(180deg) translateY(0)}60%{transform:rotateY(0) translateY(-18px)}to{transform:rotateY(0) translateY(0)}}@keyframes mult-explode{0%{transform:scale(1);color:var(--kin)}20%{transform:scale(1.8) rotate(-3deg);color:var(--beni-2);text-shadow:0 0 30px var(--beni-2)}40%{transform:scale(2) rotate(2deg);color:#ffe9e3;color:oklch(.95 .22 35);text-shadow:0 0 50px oklch(.95 .22 35)}60%{transform:scale(1.7) rotate(-1deg);color:var(--beni-2)}to{transform:scale(1);color:var(--kin)}}@keyframes screen-shake{0%,to{transform:translate(0)}20%{transform:translate(-6px,2px)}40%{transform:translate(5px,-3px)}60%{transform:translate(-3px,4px)}80%{transform:translate(4px,-1px)}}@keyframes ink-splatter{0%{transform:scale(.4);opacity:0}10%{opacity:.95}to{transform:scale(3.5);opacity:0}}@keyframes spark-fly{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(.2);opacity:0}}@keyframes smoke-dissolve{0%{transform:translateY(0) scale(1);opacity:1}to{transform:translateY(-60px) scale(1.15);opacity:0}}@keyframes pack-shake{0%,to{transform:rotate(0)}20%{transform:rotate(-3deg)}40%{transform:rotate(4deg)}60%{transform:rotate(-2deg)}80%{transform:rotate(3deg)}}@keyframes pack-burst{0%{transform:scale(0);opacity:0}50%{transform:scale(1.2);opacity:1}to{transform:scale(2.4);opacity:0}}@keyframes fly-up{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--fx,0),var(--fy,-200px)) scale(.4);opacity:0}}@keyframes title-float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes splash-blink{0%,to{opacity:.45}50%{opacity:.15}}@keyframes fade-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes score-pop{0%{transform:scale(1)}35%{transform:scale(1.18)}to{transform:scale(1)}}@keyframes hand-type-enter{0%{transform:translateY(-12px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes log-slide-in{0%{opacity:0;transform:translate(14px)}to{opacity:1;transform:translate(0)}}@keyframes goshuin-pop{0%{transform:scale(.5) rotate(-10deg);opacity:0}60%{transform:scale(1.15) rotate(2deg);opacity:1}to{transform:scale(1) rotate(0);opacity:1}}.shake{animation:screen-shake .5s linear}.smoke-out{animation:smoke-dissolve .7s ease-out forwards}.mult-explode{animation:mult-explode .95s cubic-bezier(.2,.8,.2,1.05)}.fly-up-anim{animation:fly-up .7s cubic-bezier(.4,.1,.6,1) forwards}.pack-shake{animation:pack-shake .45s infinite}.pack-burst-el{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border-radius:50%;animation:pack-burst 1.1s ease-out forwards}.card.flipping{animation:flip-in .55s cubic-bezier(.3,.8,.2,1) forwards}.ink-shock{position:absolute;left:50%;top:50%;width:600px;height:600px;margin:-300px 0 0 -300px;background:radial-gradient(circle at 50% 50%,oklch(0 0 0 / .85) 0%,oklch(0 0 0 / .5) 30%,transparent 65%),radial-gradient(circle at 30% 40%,oklch(0 0 0 / .4) 0 3%,transparent 6%),radial-gradient(circle at 70% 30%,oklch(0 0 0 / .5) 0 4%,transparent 7%);filter:blur(2px);pointer-events:none;animation:ink-splatter .9s ease-out forwards;z-index:50}.spark{position:absolute;width:6px;height:6px;border-radius:50%;background:radial-gradient(circle,oklch(.95 .18 70),oklch(.55 .22 30) 70%,transparent);pointer-events:none;will-change:transform,opacity;animation:spark-fly .9s ease-out forwards}@media (pointer: coarse){.spark{filter:none}}.score-history-item{display:flex;align-items:center;gap:8px;padding:4px 8px;border-left:2px solid oklch(.78 .13 85 / .3);animation:fade-in .4s ease-out}.help-btn{position:absolute;top:18px;right:18px;z-index:400;width:38px;height:38px;border-radius:50%;background:#17100ceb;border:1px solid oklch(.78 .13 85 / .45);color:var(--kin);font-size:17px;cursor:pointer;box-shadow:0 4px 14px #0000008c;transition:all .2s;display:flex;align-items:center;justify-content:center}.help-btn:hover{background:#2b221d;border-color:var(--kin);box-shadow:0 0 20px #ddb04973;transform:scale(1.1)}.help-tab-btn{font-family:Shippori Mincho,serif;padding:7px 16px;font-size:12px;letter-spacing:.2em;background:#0d0805;color:var(--washi-2);border:1px solid oklch(.28 .015 55);cursor:pointer;transition:all .15s;border-radius:0}.help-tab-btn:hover{color:var(--washi);border-color:#795d46}.help-tab-btn.active{background:#790002;background:oklch(.36 .16 28);color:var(--kin-2);border-color:var(--kin)}.help-table{width:100%;border-collapse:collapse;font-size:13px}.help-table th{font-family:Shippori Mincho,serif;font-size:10px;letter-spacing:.3em;color:var(--washi-2);padding:8px 12px;border-bottom:1px solid oklch(.78 .13 85 / .25);text-align:left}.help-table td{padding:9px 12px;border-bottom:1px solid oklch(.78 .13 85 / .08);vertical-align:middle}.help-table tr:hover td{background:#17100c99}.help-section-hd{font-family:Shippori Mincho,serif;font-size:12px;letter-spacing:.4em;color:var(--kin);border-left:2px solid var(--kin);padding-left:10px;margin:20px 0 10px}
