/*OBF*/@font-face{font-family:'OBrush';src:url('../../fonts/obrush_c21.woff2') format('woff2');font-weight:400;font-display:swap;unicode-range:U+C12D,U+C130-C131,U+C139-C140,U+C154-C168,U+C194-C27D,U+C2A8,U+C2B4,U+C2B7-C2B9,U+C2DD,U+C2EB,U+C2ED-C30D,U+C368-C53B,U+C545,U+C549,U+C54C,U+C555-C557,U+C559-C55E,U+C561-C571,U+C57D-C598,U+C5B5-C5BB,U+C5BD-C5C4,U+C5C7,U+C5C9-C5CC,U+C5D1,U+C5E0-C5E3,U+C5ED-C5EE,U+C5FC-C61B,U+C625,U+C62C-C62D,U+C633-C63B,U+C644,U+C655-C6A9,U+C6B1,U+C6C0-C6CC,U+C6DC-C6F9,U+C717-C721,U+C728-C735,U+C751,U+C775,U+C783,U+C787,U+C789-C78E,U+C794-C7A4,U+C7A6,U+C7C1-C800,U+C810,U+C813,U+C81D-C838,U+C871-C881,U+C88B-C8E0,U+C8FD,U+C904-C90D,U+C92C-C99D,U+C9CA-C9F1,U+CA0D-CC3E,U+CC45-CCA8,U+CCAD,U+CCD0-CCE4,U+CD09-CD1B,U+CD5C-CD95,U+CD9C-CE35,U+CE5C-CE6D,U+CE7C-CEA1,U+CEE8,U+CEF7-CF08,U+CF20-CF8C,U+CFFC-D06C,U+D074-D07D,U+D0A8-D0B9,U+D0C1-D0D5,U+D0ED-D0F1,U+D131-D134,U+D145,U+D150-D17C,U+D1A1-D1A4,U+D1F4,U+D230-D30E,U+D31D-D328,U+D380-D398,U+D39C-D3B4,U+D3D0,U+D3ED-D45C,U+D479-D47C,U+D488-D551,U+D559,U+D56B-D56D,U+D575-D588,U+D5C8,U+D5D0-D600,U+D608-D64D,U+D658-D669,U+D68D-D749,U+D754-D790,U+D799-D7A3}@font-face{font-family:'OBrush';src:url('../../fonts/obrush_c11.woff2') format('woff2');font-weight:400;font-display:swap;unicode-range:U+AC04-AC07,U+AC11-AC16,U+AC1A,U+AC1D-AC54,U+AC71-AC77,U+AC81,U+AC89,U+ACA0-ACAC,U+ACBD-ACC1,U+ACE1-ACE4,U+ACE8-ACF1,U+ACF5,U+AD04-AD50,U+AD70-AD73,U+AD76-AD7F,U+AD82-ADC8,U+ADE0,U+ADF9-ADFC,U+AE09-AE0B,U+AE34,U+AE40,U+AE43-AE4A,U+AE4E-AE65,U+AE7C,U+AEBE-AECF,U+AEF4-AFC0,U+AFD4-B04A,U+B053-B08D,U+B0A1,U+B0A9-B0AB,U+B0AD-B0B3,U+B0B8-B0E5,U+B109-B10C,U+B113-B123,U+B128-B141,U+B155,U+B179-B192,U+B194-B1A8,U+B20C-B290,U+B299-B2AC,U+B2CC-B2D0,U+B2DD,U+B2E5,U+B2EB,U+B2ED-B2EE,U+B2FF,U+B304-B313,U+B355-B35C,U+B365-B371,U+B3C5-B3D5,U+B3FC-B410,U+B41C-B429,U+B451-B454,U+B460-B4C8,U+B4DD,U+B4E3,U+B4EC-B545,U+B550-B5A1,U+B5A8-B755,U+B77D-B784,U+B78F-B790,U+B799-B7C9,U+B7F0-B801,U+B808-B818,U+B825-B840,U+B85D-B86D,U+B8B0-B8E1,U+B8EC-B960,U+B975,U+B985,U+B989,U+B9AD,U+B9BD-B9C1,U+B9C9,U+B9CE,U+B9D1-B9D9,U+B9DD,U+B9E1,U+B9E5-B9FA,U+BA3C-BA4D,U+BA58-BA74,U+BA87,U+BAA9-BABB,U+BB36,U+BB47-BBA4,U+BBFC-BBFF,U+BC0C-BC11,U+BC15-BC18,U+BC1C-BC1D,U+BC25,U+BC2D-BC43,U+BC85,U+BC8C-BC94,U+BC97-BCC0,U+BCCD-BCD1,U+BCF8-BD05,U+BD10-BD59,U+BD81,U+BD90-BE14,U+BE4C-BE5A,U+BE60-BF18,U+BFCC-C090,U+C0AD,U+C0B6,U+C0BD-C0BF,U+C0C9-C0D8,U+C11D-C11E,U+C124-C12C}@font-face{font-family:'OBrush';src:url('../../fonts/obrush_s1.woff2') format('woff2');font-weight:400;font-display:swap;unicode-range:U+21-27,U+2A-2B,U+2D,U+2F,U+33-34,U+36,U+38-3E,U+40,U+43-48,U+4A-4C,U+4E-53,U+55-7E,U+FC-314E,U+FF08-FF1F}@font-face{font-family:'OBrush';src:url('../../fonts/obrush_b1.woff2') format('woff2');font-weight:400;font-display:block;unicode-range:U+28-29,U+31,U+35,U+3F,U+41-42,U+49,U+4D,U+54,U+B7,U+AC01,U+AC08,U+AC19,U+AC1C,U+AC70,U+AC78-AC80,U+AC83,U+AC8C,U+ACB9-ACBC,U+ACC4-ACE0,U+ACF3,U+ACFC,U+AD6C-AD6D,U+AD74,U+ADDC,U+AE08,U+AE38,U+AE41,U+AE4C,U+AEBC,U+AED8,U+AFC8,U+B04C,U+B0A0,U+B0A8,U+B0AC,U+B108,U+B110,U+B150,U+B178,U+B193,U+B204-B208,U+B2C8,U+B2D8,U+B2E8,U+B2F5,U+B354,U+B3D9,U+B418,U+B458,U+B4E0,U+B5A4,U+B760-B77C,U+B78D,U+B791-B798,U+B807,U+B824,U+B8E8,U+B974,U+B978-B984,U+B987,U+B9B4-B9BC,U+B9CC,U+B9D0,U+B9DE,U+B9E4,U+BA38,U+BA54,U+BABD,U+BB35,U+BB3B,U+BBF8,U+BC00,U+BC14,U+BC24,U+BC84,U+BC88,U+BC95,U+BCC4,U+BCD5,U+BCF5,U+BD09,U+BD84-BD88,U+BE5B,U+C0B0,U+C0C8,U+C120-C123,U+C148-C14B,U+C190,U+C2A4,U+C2AC,U+C2DC,U+C313,U+C544,U+C548,U+C54A,U+C554,U+C558,U+C57C,U+C5BC,U+C5C5,U+C5D4,U+C628,U+C62E,U+C654,U+C6B8,U+C6D0-C6D4,U+C704,U+C77D,U+C785,U+C791,U+C804-C808,U+C811,U+C81C,U+C84C,U+C885,U+C900,U+C911-C918,U+C9C8,U+C9F8,U+CC44,U+CCAB,U+CCB4,U+CD08,U+CD1D,U+CD98,U+CE58-CE59,U+CEEC,U+CF1C,U+CFE0,U+D070,U+D0A4,U+D0DC,U+D130,U+D138,U+D14C,U+D22C,U+D310,U+D37C,U+D399,U+D3BC,U+D3EC,U+D478,U+D480,U+D589-D5A5,U+D5CC,U+D604,U+D750-D751,U+D798}@font-face{font-family:'OBrush';src:url('../../fonts/obrush_a1.woff2') format('woff2');font-weight:400;font-display:block;unicode-range:U+20,U+2C,U+2E,U+30,U+32,U+37,U+AC00,U+AC10,U+ACB0,U+ACE7,U+AD00,U+AD81,U+ADF8,U+AE00,U+AE30,U+AE68,U+B098-B09C,U+B0B4,U+B124,U+B144,U+B294-B298,U+B2E4,U+B2EC,U+B2F4,U+B2F9,U+B300,U+B35F,U+B3C4,U+B450,U+B4DC,U+B4E4,U+B54C,U+B78C,U+B7EC,U+B85C,U+B871,U+B9AC,U+B9B0,U+B9C8,U+B9DB,U+BA39,U+BA85,U+BAA8,U+BB18-BB34,U+BB38,U+BB3C,U+BC1B,U+BC29,U+BCF4,U+BD80,U+BD89,U+BE44-BE48,U+BF51,U+C0AC,U+C0B4,U+C0BC,U+C0C1,U+C0DD-C11C,U+C12F,U+C138,U+C18C-C18D,U+C2B5,U+C2E0-C2E4,U+C2EC,U+C560,U+C5B4,U+C5C6,U+C5C8,U+C5D0,U+C5EC,U+C5F0-C5F4,U+C624,U+C640,U+C6B0,U+C6B4,U+C724,U+C73C-C74C,U+C758-C774,U+C778-C77C,U+C784,U+C788,U+C790,U+C7A5,U+C7AC,U+C801,U+C815,U+C870,U+C8FC,U+C9C0-C9C4,U+CE74-CE78,U+CEE4,U+CFE8,U+D0C0,U+D0DD,U+D1A0,U+D1B5,U+D314,U+D3B8,U+D3C9,U+D558,U+D55C-D569,U+D574,U+D654-D655,U+D68C}/*OBF*/
/* 무진의 타로 — 골동품 카드방 톤: 먹색·버건디·남색 벨벳·금박. 카드 섞기/펼치기/뒤집기는 전부 코드 애니메이션, 무진은 공통 영상 5컷. */
:root{
  --brush:'OBrush','Noto Serif KR',serif; --bmj:'Song Myung','Noto Serif KR',serif; --cg:'Cormorant Garamond',Georgia,serif;
  --bg:#07060a; --stage:#16121a; --card:#221c25; --line:rgba(255,236,210,.1); --line-2:rgba(227,184,102,.3);
  --ink:#f6f1ea; --ink-2:#d2c8bb; --ink-3:#8f867b; --gold:#e3b866; --gold-2:#f3d79b; --wine:#6d1f2e; --indigo:#2a2350;
  --wood:#46b47f; --fire:#ec5a43; --earth:#d3a13a; --metal:#c9d1dc; --water:#5b8ce6;
  --sans:'Noto Sans KR',"Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif; --serif:'Noto Serif KR',serif;
  color-scheme:dark;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);display:flex;justify-content:center;overflow:hidden;word-break:keep-all;overflow-wrap:break-word}
button,input,select{font-family:inherit}
.stage{position:relative;width:100%;max-width:460px;height:100%;background:var(--stage);overflow:hidden}
@media (min-width:700px){.stage{height:min(100%,920px);margin:auto 0;border-radius:22px;box-shadow:0 30px 80px rgba(0,0,0,.6)}}
.scr{position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity .5s;overflow:hidden}
.scr.on{opacity:1;pointer-events:auto}
.scroll{overflow-y:auto;scrollbar-width:none}.scroll::-webkit-scrollbar{display:none}
.top{position:absolute;left:0;right:0;top:0;z-index:30;display:flex;align-items:center;gap:10px;padding:calc(env(safe-area-inset-top,0px) + 12px) 14px 10px}
.ib{width:36px;height:36px;border-radius:50%;border:1px solid rgba(255,255,255,.18);background:rgba(10,8,12,.45);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:grid;place-items:center;cursor:pointer;color:#fff}
.ib svg{width:18px;height:18px}
.top b{font-size:13px;font-weight:700;letter-spacing:.14em;color:rgba(255,236,200,.9);text-shadow:0 1px 8px rgba(0,0,0,.8)}
.top .snd{margin-left:auto}
.top.solid{background:linear-gradient(180deg,rgba(12,10,14,.96) 60%,rgba(12,10,14,0))}
.toast{position:absolute;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 90px);transform:translateX(-50%);z-index:95;background:rgba(0,0,0,.85);color:#fff;font-size:13.5px;padding:10px 16px;border-radius:999px;opacity:0;transition:opacity .3s;pointer-events:none;white-space:nowrap}
.toast.on{opacity:1}

/* ---------- 1. 질문 (위: 무진, 아래: 선택 — 얼굴을 가리지 않게 스크롤) ---------- */
#s1{overflow-y:auto;scrollbar-width:none}#s1::-webkit-scrollbar{display:none}
#s1 .hero{position:relative;height:58vh;max-height:540px;min-height:380px;background:#000 url('../../img/tarot/mujin.jpg') center 12%/cover no-repeat}
#s1 .hero:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(7,6,10,.35) 0%,rgba(7,6,10,0) 20%,rgba(7,6,10,0) 55%,rgba(12,10,14,.92) 88%,#0c0a0e 100%)}
#s1 .ht{position:absolute;left:18px;right:18px;bottom:6px;z-index:2}
#s1 .body{padding:4px 18px calc(env(safe-area-inset-bottom,0px) + 24px)}
.kick{font:700 11px/1 var(--sans);letter-spacing:.3em;color:var(--gold-2);opacity:.85}
.h1{font-family:var(--brush);font-size:46px;line-height:1.1;margin:8px 0 4px;text-shadow:0 3px 20px rgba(0,0,0,.8)}
.sub1{font-family:var(--bmj);font-size:16px;color:var(--ink-2);margin:0}
.lab{font-size:12px;font-weight:700;color:var(--ink-3);letter-spacing:.06em;margin:16px 0 8px}
.chips{display:flex;flex-wrap:wrap;gap:7px}
.chip{border:1px solid var(--line-2);background:rgba(20,16,22,.72);color:var(--ink);font-size:13.5px;font-weight:700;padding:9px 13px;border-radius:999px;cursor:pointer;transition:all .2s}
.chip.on{background:var(--gold);color:#1a120a;border-color:var(--gold)}
.qin{width:100%;height:46px;border-radius:14px;border:1px solid var(--line);background:rgba(255,255,255,.05);color:var(--ink);font-size:14.5px;padding:0 14px;outline:none}
.qin:focus{border-color:var(--line-2)}
/* 카드 수 (2026-10-03): 한 장 · 세 장(네 장) · 열 장 켈틱 크로스. 배치 그림 · 한 줄 설명 · 무료/결제 표시로 한눈에 구분 */
.spread{display:flex;flex-direction:column;gap:8px}
.sp{position:relative;display:grid;grid-template-columns:56px 1fr 20px;align-items:center;column-gap:12px;width:100%;padding:12px 14px 12px 10px;border:1px solid var(--line);background:rgba(20,16,22,.72);color:var(--ink);text-align:left;cursor:pointer;font:inherit;transition:border-color .2s,background-color .2s,box-shadow .2s}
.sp[hidden]{display:none}
.sp .lay{display:block;width:56px;height:44px;overflow:visible}
.sp .lay rect{fill:rgba(243,215,155,.05);stroke:rgba(243,215,155,.4);stroke-width:1;transition:fill .2s,stroke .2s}
.sp .tx{min-width:0}
.sp b{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;font-size:16px;font-weight:800;line-height:1.3;color:var(--ink-2)}
.sp .ds{display:block;margin-top:3px;font-size:14px;line-height:1.45;color:var(--ink-3)}
.sp .ps{display:block;margin-top:1px;font-size:14px;line-height:1.45;color:rgba(243,215,155,.6)}
.sp .tg{font-style:normal;font-size:12.5px;font-weight:700;line-height:1;padding:4px 6px 3px;border:1px solid rgba(243,215,155,.35);color:rgba(243,215,155,.8)}
.sp .tg.cost{border-color:var(--gold);background:var(--gold);color:#1a120a}
.sp .rd{width:20px;height:20px;align-self:start;margin-top:2px}
.sp .rd .o{fill:none;stroke:rgba(243,215,155,.35);stroke-width:1.5}
.sp .rd .i{fill:var(--gold);opacity:0;transition:opacity .2s}
.sp.on{border-color:var(--gold);background:rgba(227,184,102,.09);box-shadow:inset 3px 0 0 var(--gold)}
.sp.on b{color:var(--ink)}.sp.on .ds{color:var(--ink-2)}.sp.on .ps{color:var(--gold-2)}
.sp.on .lay rect{fill:rgba(227,184,102,.3);stroke:var(--gold-2)}
.sp.on .rd .o{stroke:var(--gold)}.sp.on .rd .i{opacity:1}
/* 열 장: 깊은 풀이는 버건디·남색 벨벳 판으로 따로 */
.sp.deep{grid-template-columns:68px 1fr 20px;margin-top:6px;padding:14px 14px 14px 10px;border-color:rgba(227,184,102,.32);background:linear-gradient(118deg,rgba(109,31,46,.5),rgba(42,35,80,.55))}
.sp.deep .lay{width:68px;height:60px}
.sp.deep .lay rect.x{fill:rgba(40,28,40,.9)}
.sp.deep.on .lay rect.x{fill:rgba(150,112,58,.95)}
.sp.deep.on{border-color:var(--gold);background:linear-gradient(118deg,rgba(109,31,46,.78),rgba(42,35,80,.8));box-shadow:inset 3px 0 0 var(--gold),0 10px 30px rgba(109,31,46,.3)}
.sp.deep .more{grid-column:1/-1;display:block;margin-top:12px;padding-top:11px;border-top:1px solid rgba(227,184,102,.22)}
.sp.deep .pos{display:block;font-size:14px;line-height:1.6;color:var(--ink-2)}
.sp.deep .ft{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-top:8px;font-size:14px;line-height:1.45;color:var(--ink-3)}
.sp.deep .pr{flex:none;font-family:var(--serif);font-weight:900;font-size:20px;line-height:1;color:var(--gold-2)}
.sp.deep.on .ft{color:var(--ink-2)}
.sp:focus-visible{outline:1px solid var(--gold-2);outline-offset:2px}
.spNote{margin:-2px 0 10px;font-size:14px;line-height:1.5;color:var(--ink-3)}.spNote:empty{display:none}
.goNote{margin:10px 0 0;font-size:14px;line-height:1.5;color:var(--ink-3);text-align:center}.goNote:empty{display:none}
@media (prefers-reduced-motion:reduce){.sp,.sp .lay rect,.sp .rd .i{transition:none}}
/* 처음부터 열 장을 고른 손님: 풀이 화면은 무료 풀이 칸 없이 열 장 풀이만 */
#s4.deep .free,#s4.deep #lockR,#s4.deep .obs-btn{display:none}
/* 처음 화면에서 바로 사는 열 장은 아직 공유할 결과가 없으니 결제 시트의 공유 할인 줄을 감춘다(무료 풀이를 그리면 다시 보임) */
.obp.nocp .cp{display:none}
.go{width:100%;height:54px;margin-top:18px;border:0;border-radius:16px;background:linear-gradient(180deg,#f0cf85,#d6a64f);color:#1a120a;font-size:16px;font-weight:900;cursor:pointer;box-shadow:0 8px 28px rgba(227,184,102,.25)}
.go:disabled{opacity:.35}

/* 떠다니는 금가루 */
.dust{position:absolute;inset:0;pointer-events:none;z-index:25;overflow:hidden}
.dust i{position:absolute;bottom:-8px;width:3px;height:3px;border-radius:50%;background:#ffd98a;box-shadow:0 0 6px 2px rgba(255,200,110,.55);opacity:0;animation:dust linear infinite}
@keyframes dust{0%{transform:translate(0,0);opacity:0}12%{opacity:.8}80%{opacity:.5}100%{transform:translate(var(--dx),-105vh);opacity:0}}
.veil{position:absolute;inset:0;background:#000;z-index:70;opacity:0;pointer-events:none;transition:opacity .28s}
.veil.on{opacity:1}

/* ---------- 2. 섞기·고르기 ---------- */
#s2{background:#050407}
#s2 .vbox{position:absolute;left:0;right:0;top:0;height:42%;overflow:hidden;background:#000 url('../../img/tarot/shuffle.jpg') center 30%/cover no-repeat}
#s2 .vbox video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 30%;transform-origin:50% 40%;transition:opacity .6s}
#s2 .vbox #vL{opacity:0}
#s2 .vbox.loop #vL{opacity:1}#s2 .vbox.loop #vS{opacity:0}
#s2 .vbox.still video{animation:kb 14s ease-in-out infinite alternate}
@keyframes kb{to{transform:scale(1.06)}}
#s2 .vbox:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(5,4,7,.3),rgba(5,4,7,0) 30%,rgba(5,4,7,0) 70%,#050407)}
#s2 .sub{position:absolute;left:16px;right:16px;top:calc(42% - 64px);z-index:5;text-align:center;font-family:var(--bmj);font-size:19px;color:#fff;text-shadow:0 2px 12px #000;opacity:0;transition:opacity .3s}
#s2 .sub.on{opacity:1}
#s2 .table{position:absolute;left:0;right:0;bottom:0;top:40%;background:#120a0e url('../../img/tarot/table.jpg') center/cover no-repeat}
#s2 .table:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 50% 45%,rgba(0,0,0,0) 30%,rgba(0,0,0,.55) 100%)}
.guide{position:absolute;left:0;right:0;top:14px;z-index:6;text-align:center;font-size:13.5px;font-weight:700;color:var(--gold-2);text-shadow:0 1px 8px #000}
.guide small{display:block;font-weight:500;color:var(--ink-2);font-size:12px;margin-top:4px}
.slots{position:absolute;left:0;right:0;top:48px;display:flex;justify-content:center;gap:34px;z-index:4}
.slot{width:62px;aspect-ratio:9/16;border:1.5px dashed rgba(243,215,155,.45);border-radius:8px;position:relative}
.slot i{position:absolute;left:50%;top:100%;width:92px;margin:6px 0 0 -46px;text-align:center;font-style:normal;font-size:10.5px;line-height:1.3;color:var(--ink-2)}
.deckArea{position:absolute;left:0;right:0;top:0;bottom:0;touch-action:none;user-select:none;-webkit-user-select:none}
.cd{position:absolute;width:74px;aspect-ratio:9/16;border-radius:7px;background:#111 url('../../img/tarot/back.jpg') center/cover no-repeat;box-shadow:0 6px 18px rgba(0,0,0,.6),0 0 0 1px rgba(227,184,102,.35) inset;transition:transform .35s cubic-bezier(.2,.8,.2,1),left .45s cubic-bezier(.2,.8,.2,1),top .45s cubic-bezier(.2,.8,.2,1),width .45s,opacity .3s;will-change:transform}
.cd.fast{transition:transform .09s linear}
.cd.hov{filter:brightness(1.25);box-shadow:0 0 22px rgba(243,215,155,.75),0 0 0 1.5px rgba(243,215,155,.9) inset}
.cd.fly{box-shadow:0 0 30px 6px rgba(243,215,155,.7),0 0 0 1.5px rgba(243,215,155,.9) inset;transition:left .7s cubic-bezier(.3,.8,.2,1),top .7s cubic-bezier(.3,.8,.2,1),width .7s,transform .7s cubic-bezier(.3,.8,.2,1)}
.ring{position:absolute;left:50%;top:58%;width:170px;height:170px;margin:-85px 0 0 -85px;pointer-events:none;z-index:1}
.ring circle{fill:none;stroke-width:3}
.ring .bgc{stroke:rgba(243,215,155,.15)}.ring .fg{stroke:var(--gold);stroke-linecap:round;transform:rotate(-90deg);transform-origin:50% 50%;transition:stroke-dashoffset .1s linear;filter:drop-shadow(0 0 8px rgba(227,184,102,.8))}

/* ---------- 3. 공개 ---------- */
#s3{background:#0a0709 url('../../img/tarot/table.jpg') center/cover no-repeat}
#s3:before{content:"";position:absolute;inset:0;background:rgba(5,3,6,.55)}
#s3 .guide{top:calc(env(safe-area-inset-top,0px) + 64px)}
.row{position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);display:flex;justify-content:center;gap:12px;padding:0 12px}
.fc{position:relative;width:30%;max-width:130px;aspect-ratio:9/16;perspective:900px;cursor:pointer}
.fc.one{width:56%;max-width:230px}
.fc .in{position:absolute;inset:0;transform-style:preserve-3d;transition:transform .9s cubic-bezier(.3,.7,.2,1)}
.fc.flip .in{transform:rotateY(180deg)}
.fc .f,.fc .b{position:absolute;inset:0;border-radius:9px;backface-visibility:hidden;-webkit-backface-visibility:hidden;overflow:hidden;box-shadow:0 12px 30px rgba(0,0,0,.6)}
.fc .b{background:#111 url('../../img/tarot/back.jpg') center/cover}
.fc .f{transform:rotateY(180deg);background:#111}
.fc.rv .f .art{transform:rotate(180deg)}
.fc .f .art{position:absolute;inset:0;background:#111 center/cover no-repeat}
.fc .cap{position:absolute;left:-12px;right:-12px;top:calc(100% + 8px);text-align:center;font-family:var(--serif);font-weight:700;font-size:13px;color:var(--gold-2);opacity:0;transition:opacity .4s .5s;line-height:1.3}
.fc .cap small{display:block;font-family:var(--cg);font-style:italic;font-weight:600;font-size:11px;color:rgba(243,215,155,.75)}
.fc.flip .cap{opacity:1}
.fc .f .no{position:absolute;left:0;right:0;top:6.3%;text-align:center;font-family:var(--cg);font-weight:700;font-size:clamp(11px,3.2vw,15px);color:var(--gold-2);letter-spacing:.1em;z-index:2;text-shadow:0 1px 4px #000}
.fc .glow{position:absolute;inset:-18%;border-radius:50%;background:radial-gradient(circle,rgba(243,215,155,.55),rgba(243,215,155,0) 60%);opacity:0;pointer-events:none;z-index:-1}
.fc.flip .glow{animation:glw 1.4s ease-out}
@keyframes glw{0%{opacity:0;transform:scale(.6)}30%{opacity:1}100%{opacity:0;transform:scale(1.25)}}
.fc .pl{position:absolute;left:-10px;right:-10px;bottom:calc(100% + 8px);text-align:center;font-size:11.5px;line-height:1.3;font-weight:700;color:var(--gold-2)}
.fc .rvTag{position:absolute;left:50%;bottom:-62px;transform:translateX(-50%);font-size:11px;font-weight:800;color:#ffb3a7;opacity:0;transition:opacity .4s .6s;white-space:nowrap}
.fc.flip.rv .rvTag{opacity:1}

/* 한 장씩 크게 뒤집는 스포트라이트 */
.spot{position:absolute;inset:0;z-index:40;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(3,2,4,0);pointer-events:none;transition:background .4s}
.spot.on{background:rgba(3,2,4,.72);pointer-events:auto}
.spot .fc{width:60%;max-width:250px;transition:transform .6s cubic-bezier(.2,.8,.2,1),opacity .4s}
.spot .fc .in{transition:transform 1s cubic-bezier(.3,.7,.2,1)}
.spot .cap{font-size:18px}.spot .cap small{font-size:13px}
.spot .mean{margin-top:78px;max-width:300px;text-align:center;font-family:var(--bmj);font-size:16px;line-height:1.6;color:var(--ink-2);opacity:0;transition:opacity .5s .9s;padding:0 18px}
.spot.shown .mean{opacity:1}
.spot .tapn{position:absolute;bottom:calc(env(safe-area-inset-bottom,0px) + 26px);font-size:12px;color:var(--ink-3);opacity:0;transition:opacity .4s 1.4s}
.spot.shown .tapn{opacity:1}
.zoom{position:absolute;inset:0;z-index:85;background:rgba(3,2,4,.95);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:none;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:20px}
.zoom.on{display:flex}
.zoom .zc{position:relative;width:64%;max-width:280px;aspect-ratio:9/16;border-radius:10px;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.7)}
.zoom .zc .zi{position:absolute;inset:0;background:#111 center/cover no-repeat}.zoom .zc.rv .zi{transform:rotate(180deg)}
.zoom b{font-family:var(--serif);font-size:20px}.zoom small{color:var(--ink-3);font-size:12.5px}
.say p+p{margin-top:10px}
.say p.combo{font-size:15px;color:var(--ink-2);border-left:2px solid rgba(227,184,102,.6);padding-left:10px}
.qhint{min-height:18px;margin-top:7px;font-size:12px;color:var(--gold-2);opacity:.85;transition:opacity .3s}
.verd{border-color:rgba(227,184,102,.35);background:linear-gradient(180deg,rgba(227,184,102,.08),rgba(21,17,24,1) 60%)}
.verd .big{font-family:var(--brush);font-size:31px;line-height:1.25;color:var(--gold-2);margin:2px 0 10px}
.verd .big.sm{font-size:23px}
.verd p{margin:0;font-size:15px;line-height:1.7;color:var(--ink)}.verd p b{color:var(--gold-2);font-weight:700}
.verd .tm{margin-top:12px;padding-top:12px;border-top:1px solid var(--line);font-size:13.5px;line-height:1.6;color:var(--ink-2)}
.verd .tm b{color:var(--ink);font-weight:800;margin-right:6px}.verd .tm small{display:block;color:var(--ink-3);font-size:11.5px;margin-top:2px}
details.how summary{cursor:pointer;list-style:none;font-size:12px;letter-spacing:.14em;color:var(--gold);font-weight:800;display:flex;justify-content:space-between}
details.how summary::-webkit-details-marker{display:none}
details.how summary:after{content:"펼치기";letter-spacing:0;font-weight:500;color:var(--ink-3)}details.how[open] summary:after{content:"접기"}
details.how ul{margin:12px 0 0;padding-left:18px;font-size:13.5px;line-height:1.7;color:var(--ink-2)}details.how li+li{margin-top:4px}details.how li b{color:var(--ink)}
details.how .nb{margin:12px 0 0;font-size:12px;color:var(--ink-3);line-height:1.6}
.say .close{color:var(--gold-2)}

/* ---------- 반응 영상 ---------- */
.rx{position:absolute;inset:0;z-index:80;background:#000;opacity:0;pointer-events:none;transition:opacity .5s}
.rx.on{opacity:1;pointer-events:auto}
.rx video,.rx .po{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 20%;background:#000 center 20%/cover no-repeat}
.rx .sh{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.35),rgba(0,0,0,0) 25%,rgba(0,0,0,0) 55%,rgba(0,0,0,.8) 90%)}
.rx .sub{position:absolute;left:22px;right:22px;bottom:calc(env(safe-area-inset-bottom,0px) + 120px);text-align:center;font-family:var(--bmj);font-size:22px;line-height:1.5;color:#fff;text-shadow:0 2px 14px #000;opacity:0;transition:opacity .3s}
.rx .sub.on{opacity:1}
.rx .x{position:absolute;right:14px;top:calc(env(safe-area-inset-top,0px) + 14px);border:0;background:none;color:rgba(255,255,255,.7);font-size:12.5px;cursor:pointer;padding:6px}

/* ---------- 4. 풀이 ---------- */
#s4{background:var(--stage)}
#s4 .scroll{position:absolute;inset:0}
.rhero{position:relative;height:260px;background:#000 url('../../img/tarot/good.jpg') center 22%/cover no-repeat}
.rhero:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(12,10,14,.2),rgba(12,10,14,.1) 40%,var(--stage))}
.rhero .t{position:absolute;left:18px;right:18px;bottom:6px;z-index:2}
.rhero .t .h1{font-size:38px;margin:6px 0 0}
.rhero .t p{margin:6px 0 0;font-family:var(--bmj);font-size:15px;color:var(--ink-2)}
.wrap{padding:6px 16px calc(env(safe-area-inset-bottom,0px) + 34px)}
.box{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:16px;margin-top:12px}
.box h3{margin:0 0 10px;font-size:12px;letter-spacing:.14em;color:var(--gold);font-weight:800}
.cr{display:grid;grid-template-columns:78px 1fr;gap:14px;align-items:start}
.cr+.cr{margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}
.cr .th{width:78px;aspect-ratio:9/16;border-radius:7px;background:#111 center/cover no-repeat;box-shadow:0 6px 16px rgba(0,0,0,.5)}
.cr .th.rv{transform:rotate(180deg)}
.cr .p{font-size:11.5px;font-weight:800;color:var(--gold);letter-spacing:.06em}
.cr .n{font-family:var(--serif);font-weight:900;font-size:18px;margin:3px 0 2px}
.cr .n small{font-family:var(--cg);font-style:italic;font-weight:600;font-size:13px;color:var(--ink-3);margin-left:6px}
.cr .ud{display:inline-block;font-size:11px;font-weight:800;padding:2px 8px;border-radius:999px;margin-right:4px}
.ud.up{background:rgba(127,214,166,.15);color:#8fe0b3}.ud.rv{background:rgba(255,138,122,.15);color:#ffab9f}
.el{display:inline-block;font-size:11px;font-weight:800;padding:2px 8px;border-radius:999px;background:rgba(255,255,255,.06);color:var(--c)}
.kws{margin:7px 0 6px;display:flex;flex-wrap:wrap;gap:5px}
.kws span{font-size:11.5px;color:var(--ink-2);border:1px solid var(--line);border-radius:999px;padding:2px 8px}
.cr .m{font-size:14.5px;line-height:1.65;color:var(--ink);margin:0}
.say{display:grid;grid-template-columns:44px 1fr;gap:12px;align-items:start}
.say .av{width:44px;height:44px;border-radius:50%;background:#222 url('../../img/tarot/avatar.jpg') center/cover;border:1px solid var(--line-2)}
.say p{margin:0;font-family:var(--bmj);font-size:16.5px;line-height:1.7;color:var(--ink)}
.say p b{color:var(--gold-2);font-weight:400}
.oh p{margin:0;font-size:14.5px;line-height:1.7;color:var(--ink-2)}
.oh p b{color:var(--ink)}
.oh .mini{display:flex;gap:8px;margin-top:10px}
.oh .mini input,.oh .mini select{flex:1;height:42px;border-radius:12px;border:1px solid var(--line);background:rgba(255,255,255,.05);color:var(--ink);padding:0 10px;font-size:14px}
.oh .mini button{height:42px;border:0;border-radius:12px;background:var(--gold);color:#1a120a;font-weight:800;padding:0 14px;cursor:pointer}
.lock{position:relative;overflow:hidden}
.lock .blur{filter:blur(5px);opacity:.55;pointer-events:none;user-select:none}
.lock .cta{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;background:linear-gradient(180deg,rgba(21,17,24,.2),rgba(21,17,24,.85))}
.lock .cta b{font-size:15px}.lock .cta small{font-size:12.5px;color:var(--ink-2)}
.btn2{height:48px;border-radius:14px;border:1px solid var(--line-2);background:rgba(255,255,255,.04);color:var(--ink);font-weight:800;font-size:14.5px;cursor:pointer;width:100%;margin-top:10px}
.pay{height:48px;border:0;border-radius:14px;background:linear-gradient(180deg,#f0cf85,#d6a64f);color:#1a120a;font-weight:900;font-size:15px;padding:0 22px;cursor:pointer}
.foot{margin-top:14px;text-align:center;font-size:11.5px;color:var(--ink-3);line-height:1.6}

/* ===== 2026-09-30 22시 비주얼 고도화 ===== */
/* 라운딩 걷기(홈과 통일) — 원형 요소만 유지 */
.stage *:not(.dust i):not(.fc .glow):not(.ib):not(.say .av):not(.spark):not(.rays){border-radius:0!important}
.fc .in,.fc .f,.fc .b{border-radius:4px!important}
/* 섞기: 더 큰 덱 + 반으로 갈라 엇갈려 섞는 리플 */
.deckArea .cd{transition:transform .22s cubic-bezier(.3,.7,.3,1)}
.deckArea.riff .cd{transition:transform .16s ease-out}
/* 공개: 카드 뒤로 번지는 빛줄기 — 좋음 금빛, 고민 보랏빛, 조심 붉은빛 */
.spot .rays{position:absolute;left:50%;top:44%;width:560px;height:560px;margin:-280px 0 0 -280px;border-radius:50%;pointer-events:none;opacity:0;transform:scale(.6) rotate(0deg);transition:opacity .7s,transform 1.2s cubic-bezier(.2,.8,.2,1);
  background:repeating-conic-gradient(from 0deg,var(--rc) 0deg 4deg,transparent 4deg 16deg);-webkit-mask:radial-gradient(circle,#000 8%,rgba(0,0,0,.5) 34%,transparent 66%);mask:radial-gradient(circle,#000 8%,rgba(0,0,0,.5) 34%,transparent 66%)}
.spot.shown .rays{opacity:.55;transform:scale(1) rotate(0deg);animation:raySpin 26s linear infinite}
@keyframes raySpin{to{transform:scale(1) rotate(360deg)}}
.spot .halo{position:absolute;left:50%;top:44%;width:340px;height:340px;margin:-170px 0 0 -170px;border-radius:50%;pointer-events:none;background:radial-gradient(circle,var(--rc),transparent 65%);opacity:0;transition:opacity .8s}
.spot.shown .halo{opacity:.5}
.spot.shown .fc{animation:pushIn 3.2s ease-out forwards}
@keyframes pushIn{to{transform:scale(1.04)}}
.spot .fc,.spot .mean,.spot .tapn{position:relative;z-index:1}
/* 결과: 뽑은 카드 줄 */
.drawn{display:flex;justify-content:center;gap:12px;margin:-6px 16px 4px;position:relative;z-index:3}
.drawn button{flex:0 1 96px;border:0;padding:0;background:none;cursor:pointer;color:var(--ink);text-align:center;animation:dIn .7s both}
@keyframes dIn{from{opacity:0;transform:translateY(16px) rotateX(30deg)}}
.drawn .im{display:block;aspect-ratio:9/16;background:#111 center/cover no-repeat;box-shadow:0 0 0 1px rgba(227,184,102,.55),0 12px 26px rgba(0,0,0,.55),0 0 22px rgba(227,184,102,.18)}
.drawn .im.rv{transform:rotate(180deg)}
.drawn small{display:block;margin-top:7px;font-size:10.5px;letter-spacing:.06em;color:var(--gold-2)}
.drawn b{display:block;font-size:13px;margin-top:2px}
.verd{position:relative;border:1px solid rgba(227,184,102,.45)!important;background:linear-gradient(180deg,rgba(227,184,102,.1),rgba(227,184,102,.02))!important}
.verd::after{content:"卜";position:absolute;right:14px;top:12px;width:30px;height:30px;display:grid;place-items:center;font-family:var(--serif);font-weight:900;font-size:16px;color:#fff4ea;background:#a8322a;transform:rotate(-6deg);box-shadow:inset 0 0 0 2px rgba(255,240,230,.3)}

/* ===== 카드방 — 섞기·고르기·공개가 손님 자리에서 본 한 장면 안에서 (2026-09-30 밤) =====
   먼 층: 살아 있는 방(영상) + 깊이 지도 입체 / 중간 층: 향 연기·금가루 / 앞 층: 초점 밖 촛불빛. 폰을 기울이면 층마다 다르게 움직인다. */
.room{position:absolute;inset:0;z-index:0;opacity:0;transition:opacity .9s;pointer-events:none;overflow:hidden;background:#0a0709;--px:0;--py:0}
.room.on{opacity:1}
.room .rbg{position:absolute;inset:0;background:#0a0709 url('../../img/tarot/room.jpg') center 30%/cover no-repeat;transform-origin:50% 62%;transition:transform 1.6s cubic-bezier(.2,.8,.2,1)}
.room .rbg video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 30%;opacity:0;transition:opacity .8s}
.room .rbg.vok video{opacity:1}
.room .rbg.d3on video{opacity:0!important}
.room.lean .rbg{transform:scale(1.05)}
.room.dim .rbg{transform:scale(1.09)}
.room .fog{position:absolute;inset:-12%;pointer-events:none;mix-blend-mode:screen;transform:translate(calc(var(--px)*-10px),calc(var(--py)*-6px))}
.room .fog i{position:absolute;inset:0;opacity:.32;background:radial-gradient(38% 16% at 30% 30%,rgba(150,170,220,.5),transparent 70%),radial-gradient(34% 12% at 72% 44%,rgba(170,150,200,.4),transparent 70%),radial-gradient(50% 14% at 50% 58%,rgba(210,170,140,.28),transparent 72%);animation:fogA 26s ease-in-out infinite alternate}
.room .fog i+i{opacity:.22;animation:fogB 34s ease-in-out infinite alternate;background:radial-gradient(30% 12% at 65% 22%,rgba(140,160,215,.5),transparent 70%),radial-gradient(40% 14% at 25% 50%,rgba(200,160,150,.3),transparent 70%)}
@keyframes fogA{from{transform:translate(-4%,2%) scale(1)}to{transform:translate(5%,-3%) scale(1.12)}}
@keyframes fogB{from{transform:translate(4%,-2%) scale(1.1)}to{transform:translate(-5%,3%) scale(1)}}
.room .mote{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;mix-blend-mode:screen}
.room .flick{position:absolute;inset:0;pointer-events:none;mix-blend-mode:screen;background:radial-gradient(30% 18% at 3% 60%,rgba(255,160,70,.34),transparent 70%),radial-gradient(30% 18% at 97% 60%,rgba(255,160,70,.32),transparent 70%),radial-gradient(60% 20% at 50% 68%,rgba(255,185,110,.16),transparent 72%);animation:flk 2.7s linear infinite}
@keyframes flk{0%{opacity:.8}6%{opacity:.95}11%{opacity:.72}19%{opacity:1}27%{opacity:.84}34%{opacity:.9}42%{opacity:.7}51%{opacity:.96}60%{opacity:.82}68%{opacity:1}77%{opacity:.76}86%{opacity:.92}93%{opacity:.8}100%{opacity:.8}}
.room .shade{position:absolute;inset:0;pointer-events:none;background:radial-gradient(120% 80% at 50% 55%,rgba(0,0,0,0) 45%,rgba(4,2,5,.72) 100%),linear-gradient(180deg,rgba(5,4,7,.55),rgba(5,4,7,0) 18%,rgba(5,4,7,0) 80%,rgba(5,4,7,.5));transition:background-color .8s}
.room.dim .shade{background-color:rgba(5,3,6,.5)}
/* 앞 층: 카드보다 앞에 있는 초점 밖 촛불빛 — 가장 크게 움직여서 깊이가 생긴다 */
.roomFg{position:absolute;inset:-6%;z-index:20;pointer-events:none;opacity:0;transition:opacity .9s;transform:translate(calc(var(--px)*-26px),calc(var(--py)*-16px))}
.roomFg.on{opacity:1}.roomFg.dim{opacity:.45}
.roomFg i{position:absolute;border-radius:50%;mix-blend-mode:screen;background:radial-gradient(circle,rgba(255,196,120,.34),rgba(255,160,80,.12) 45%,rgba(255,150,70,0) 70%);animation:bk 7s ease-in-out infinite alternate}
@keyframes bk{from{transform:translate(0,0) scale(1);opacity:.75}to{transform:translate(8px,-12px) scale(1.08);opacity:1}}
/* 섞기 영상도 네모 박스가 아니라 방 안에 스며들게 */
#s2{background:transparent}
#s2 .vbox{height:auto;bottom:0;background:none;-webkit-mask-image:linear-gradient(180deg,#000 0,#000 50%,rgba(0,0,0,0) 74%);mask-image:linear-gradient(180deg,#000 0,#000 50%,rgba(0,0,0,0) 74%);transition:opacity 1s}
#s2 .vbox:after{display:none}
#s2 .vbox.gone{opacity:0}
#s2 .sub{top:50%}
#s2 .table{background:none}
#s2 .table:before{display:none}
#s3{background:transparent}
#s3:before{background:rgba(5,3,6,.18)}

/* ===== v59 수정: 섞기 영상은 다시 보이게(입 모양·손이 없으면 더 어색) — 아래만 방 탁자로 스며들게, 자막과 안내 문구 겹침·잠금 박스 글자 겹침 ===== */
#s2 .vbox:not(.gone){opacity:1}
#s2 .vbox{-webkit-mask-image:linear-gradient(180deg,#000 0,#000 64%,rgba(0,0,0,0) 86%);mask-image:linear-gradient(180deg,#000 0,#000 64%,rgba(0,0,0,0) 86%)}
#s2 .sub{top:calc(40% + 12px)}
#s2.talk .guide{opacity:0}
#s2 .guide{transition:opacity .4s}
.slots{top:66px}
.lock{min-height:196px}
.lock .cta{top:38px}
#rprem .tp-slots{display:grid;grid-template-columns:repeat(5,1fr);gap:10px 8px;margin:6px 0 16px}
#rprem .tp-slots div{text-align:center;min-width:0}
#rprem .tp-slots span{display:block;aspect-ratio:9/16;border:1px dashed rgba(227,184,102,.35);transition:all .3s}
#rprem .tp-slots div.now span{border:1px solid var(--gold);box-shadow:0 0 14px rgba(227,184,102,.35)}
#rprem .tp-slots div.on span{border:0;background:#111 url('../../img/tarot/back.jpg') center/cover;box-shadow:0 0 0 1px rgba(227,184,102,.55);animation:tpin .35s ease both}
#rprem .tp-slots small{display:block;margin-top:5px;font-size:10px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#rprem .tp-fan{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}
#rprem .tp-fan button{aspect-ratio:9/16;border:0;padding:0;background:#111 url('../../img/tarot/back.jpg') center/cover;box-shadow:0 0 0 1px rgba(227,184,102,.35);cursor:pointer;transition:transform .2s,opacity .3s}
#rprem .tp-fan button:hover{transform:translateY(-4px)}
#rprem .tp-fan button.used{opacity:.1;pointer-events:none}
#rprem .tp-go{display:block;width:100%;height:50px;margin-top:16px;border:0;background:var(--gold);color:#16110c;font-weight:800;font-size:15px;font-family:inherit;cursor:pointer}
#rprem .tp-go:disabled{opacity:.4;cursor:default}
#rprem .tp-flip{animation:tpflip .7s ease both}
@keyframes tpin{from{transform:translateY(-16px);opacity:0}to{transform:none;opacity:1}}
@keyframes tpflip{0%{transform:rotateY(90deg);filter:brightness(2)}100%{filter:none}}
#rprem .pk-deck span.rv.tp-flip{animation-name:tpflipr}
@keyframes tpflipr{0%{transform:rotate(180deg) rotateY(90deg);filter:brightness(2)}100%{transform:rotate(180deg);filter:none}}
#rprem{margin:14px 0}
#rprem .pk-sec{margin-top:12px}

/* ===== 78장 (2026-10-03): 리본처럼 길게 펼친 덱 · 진짜 빛이 지나가는 3D 뒤집기 ===== */
.deckArea{perspective:820px;perspective-origin:50% 68%}
.deckArea .cd{left:0;top:0;width:60px;height:107px;transition:none;will-change:transform;backface-visibility:hidden;-webkit-backface-visibility:hidden;transform-origin:50% 50%}
.deckArea .cd.off,.deckArea .cd.gone{visibility:hidden}
.deckArea{outline:none}.deckArea:focus-visible{box-shadow:inset 0 0 0 1px rgba(243,215,155,.55)}
.deckArea .cd.ctr{box-shadow:0 10px 26px rgba(0,0,0,.65),0 0 18px rgba(243,215,155,.4),0 0 0 1.5px rgba(243,215,155,.85) inset}
.deckArea .cd.pull{box-shadow:0 22px 40px rgba(0,0,0,.7),0 0 30px 4px rgba(243,215,155,.55),0 0 0 1.5px rgba(243,215,155,.95) inset}
.deckArea .cd.fly{transition:transform .72s cubic-bezier(.3,.8,.2,1),box-shadow .72s;box-shadow:0 0 30px 6px rgba(243,215,155,.6),0 0 0 1.5px rgba(243,215,155,.9) inset}
.deckArea .cd.land{box-shadow:0 4px 12px rgba(0,0,0,.6),0 0 0 1px rgba(243,215,155,.6) inset}
.deckArea.rib{-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 8%,#000 92%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 8%,#000 92%,transparent 100%)}
.slots.n4{gap:16px}
.spot .tapn{position:absolute}
/* 기울기 광택은 은은하게: 주인공은 뒤집힐 때 지나가는 반사광 */
.spot .fc .hsh,.zoom .zc .hsh{opacity:.22}
.slots.n4 .slot i{width:70px;margin-left:-35px}
.row.n4{gap:8px;padding:0 8px}.row.n4 .fc{width:21.5%}.row.n4 .fc .pl{font-size:10.5px}.row.n4 .fc .cap{font-size:11.5px}.row.n4 .fc .cap small{font-size:9.5px}
/* 마이너 카드 이름표(로마 숫자 대신 한글) */
.fc .f .no.ko{font-family:var(--serif);font-weight:700;font-size:clamp(8.5px,2.5vw,12px);letter-spacing:.02em}
.spot .fc .f .no.ko{font-size:15px}
/* 그림이 아직 안 왔을 때 바탕 */
.fc .f .art.fbk,.cr .th.fbk,.drawn .im.fbk,.zoom .zc .zi.fbk{background:radial-gradient(120% 70% at 50% 40%,#3a2a3c,#151017 70%);overflow:hidden}
.cr .th.fbk,.drawn .im.fbk{position:relative}
.fbk:before{content:attr(data-s);position:absolute;left:0;right:0;top:40%;transform:translateY(-50%);text-align:center;font-family:var(--serif);font-weight:900;font-size:20px;color:rgba(243,215,155,.5);letter-spacing:.08em}
.fbk:after{content:attr(data-l);position:absolute;left:4px;right:4px;bottom:12%;text-align:center;font-size:10.5px;line-height:1.3;font-weight:700;color:rgba(243,215,155,.7)}
.fbk>i{position:absolute;inset:0;z-index:1;background:transparent center/cover no-repeat}
/* 뒤집기: 원근이 살아 있는 rotateY + 돌아가는 동안 빛이 빠졌다 들어오고, 앞면이 서면 빛줄기가 표면을 한 번 훑고 지나간다 */
.fc{perspective:1100px}
.fc.flip .in{animation:flip3d 1s cubic-bezier(.35,.6,.2,1) both}
@keyframes flip3d{0%{transform:translateZ(0) rotateY(0deg) rotateX(0deg)}40%{transform:translateZ(80px) rotateY(80deg) rotateX(4deg)}100%{transform:translateZ(0) rotateY(180deg) rotateX(0deg)}}
.fc .b:after,.fc .f:before{content:"";position:absolute;inset:0;pointer-events:none;background:#000;opacity:0;z-index:3}
.fc.flip .b:after{animation:shOut 1s both}
.fc.flip .f:before{animation:shIn 1s both}
@keyframes shOut{0%{opacity:0}40%{opacity:.6}100%{opacity:.6}}
@keyframes shIn{0%,40%{opacity:.65}100%{opacity:0}}
.fc .f .spec{position:absolute;top:-12%;bottom:-12%;left:-110%;width:110%;z-index:4;pointer-events:none;mix-blend-mode:screen;opacity:0;
  background:linear-gradient(104deg,rgba(255,255,255,0) 18%,rgba(255,226,170,.14) 32%,rgba(255,246,226,.55) 45%,rgba(255,255,250,.95) 50%,rgba(255,240,205,.5) 55%,rgba(255,220,160,.08) 66%,rgba(255,255,255,0) 80%)}
.fc.flip .f .spec{animation:spec 1.6s .42s cubic-bezier(.3,.55,.25,1) both}
@keyframes spec{0%{opacity:0;transform:translateX(0)}12%{opacity:1}80%{opacity:.9}100%{opacity:0;transform:translateX(205%)}}
/* ===== 프리미엄 열 장 고르기 (2026-10-03): 무료와 같은 리본 덱(js/tarot_deck.js) 위에 켈틱 크로스 자리판. 카드방 장면 안에서 고른다 ===== */
.stage.tpk-on .scr.on{visibility:hidden}
.stage.tpk-on .top{opacity:0;pointer-events:none}
.tpk{position:absolute;inset:0;z-index:19;opacity:0;transition:opacity .45s;overflow:hidden}
.tpk.on{opacity:1}.tpk[hidden]{display:none}
.tpk:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(5,4,7,.72),rgba(5,4,7,.38) 46%,rgba(5,4,7,0) 62%)}
.tpk-area{position:absolute;inset:0;z-index:1}
.tpk-hd{position:absolute;left:0;right:0;top:0;z-index:3;display:flex;align-items:center;gap:10px;padding:calc(env(safe-area-inset-top,0px) + 12px) 16px 0 14px}
.tpk-hd b{font-size:13px;font-weight:700;letter-spacing:.14em;color:rgba(255,236,200,.9);text-shadow:0 1px 8px rgba(0,0,0,.8)}
.tpk-n{margin-left:auto;font-family:var(--cg);font-weight:700;font-size:16px;color:var(--ink-3);letter-spacing:.06em}
.tpk-n em{font-style:normal;font-size:24px;color:var(--gold-2);margin-right:2px}
.tpk-g{position:absolute;left:16px;right:16px;top:calc(env(safe-area-inset-top,0px) + 58px);z-index:3;text-align:center;pointer-events:none}
.tpk-g b{display:block;font-family:var(--bmj);font-weight:400;font-size:20px;line-height:1.3;color:var(--gold-2);text-shadow:0 2px 12px #000}
.tpk-g small{display:block;margin-top:4px;font-size:12px;line-height:1.45;color:var(--ink-2);text-shadow:0 1px 8px #000}
.tpk-tray{position:absolute;left:50%;top:110px;width:398px;height:282px;z-index:2;pointer-events:none;transform-origin:50% 0}
.tpk-s{position:absolute;width:0;height:0}
.tpk-s span{position:absolute;left:-18px;top:-32px;width:36px;height:64px;border:1px dashed rgba(227,184,102,.4);display:grid;place-items:center;font-family:var(--cg);font-weight:700;font-size:15px;color:rgba(243,215,155,.38);transition:border-color .3s,box-shadow .3s,background-color .3s,color .3s}
.tpk-s.x{z-index:2}.tpk-s.x span{transform:rotate(90deg)}
.tpk-s.now span{border:1px solid var(--gold);color:var(--gold-2);box-shadow:0 0 16px rgba(227,184,102,.42),inset 0 0 12px rgba(227,184,102,.16)}
.tpk-s.on span{border:0;color:transparent;background:#111 url('../../img/tarot/back.jpg') center/cover;box-shadow:0 0 0 1px rgba(227,184,102,.6),0 6px 14px rgba(0,0,0,.55);animation:tpkIn .45s ease-out both}
@keyframes tpkIn{from{filter:brightness(1.7)}to{filter:none}}
.tpk-s i{position:absolute;top:35px;left:-50px;width:100px;text-align:center;font-style:normal;font-size:11px;line-height:1.25;color:var(--ink-3);white-space:nowrap;text-shadow:0 1px 6px #000}
.tpk-s.r i{top:-7px;left:26px;width:auto;text-align:left}
.tpk-s u{text-decoration:none;transition:color .3s}.tpk-s u.on{color:var(--ink-2)}.tpk-s u.now{color:var(--gold-2);font-weight:700}
.tpk-ft{position:absolute;left:0;right:0;bottom:0;z-index:3;display:grid;grid-template-columns:1fr 1fr 1.5fr;gap:8px;padding:28px 16px calc(env(safe-area-inset-bottom,0px) + 14px);background:linear-gradient(180deg,rgba(7,5,8,0),rgba(7,5,8,.82) 42%)}
.tpk-ft button{height:48px;min-width:0;border:1px solid var(--line-2);background:rgba(12,9,14,.62);color:var(--ink);font-family:inherit;font-weight:700;font-size:14px;cursor:pointer;transition:opacity .25s,background .25s}
.tpk-ft button:disabled{opacity:.35;cursor:default}
.tpk-ft .tpk-go{border:0;background:linear-gradient(180deg,#f0cf85,#d6a64f);color:#1a120a;font-weight:900;font-size:15px}
.tpk-ft .tpk-go:disabled{opacity:1;background:rgba(227,184,102,.14);color:rgba(243,215,155,.7);box-shadow:inset 0 0 0 1px rgba(227,184,102,.3)}
.tpk button:focus-visible{outline:1px solid var(--gold-2);outline-offset:2px}
@media (prefers-reduced-motion:reduce){.tpk,.tpk-s span,.tpk-ft button{transition:none}.tpk-s.on span{animation:none}}
