/* Toranj 0.5 — the Festival. Composited motion; no canvas render loop. */
:root{--festival-ink:#173d3b;--festival-gold:#bf9a54}
.token-chip{padding:7px 9px;border:1px solid var(--line);border-radius:20px;font-size:11px;color:var(--accent);font-weight:800;white-space:nowrap;background:var(--surface)}
.top-actions{gap:5px}.top-actions .wallet{font-size:11px}
.festival-invite{position:relative;isolation:isolate;display:flex;align-items:center;gap:14px;width:100%;min-height:138px;margin:15px 0;padding:18px;border-radius:24px;border:1px solid #b49a65;background:radial-gradient(ellipse at 15% 0%,#56675c,transparent 65%),linear-gradient(130deg,#122f2d,#1d4741);color:#f5e5bb;text-align:start;overflow:hidden;box-shadow:0 13px 26px #13292224}
.festival-invite:before{content:'';position:absolute;inset:-55%;background:repeating-conic-gradient(from 10deg,#edd19b0b 0deg 1deg,transparent 1deg 15deg);z-index:-1;transform:rotate(12deg)}
.festival-invite>span:nth-child(2){flex:1;min-width:0}.festival-invite small{font:9px Georgia,serif;letter-spacing:2px}.festival-invite b{display:block;font-size:20px;margin:6px 0}.festival-invite em{font-style:normal;font-size:10px;line-height:1.8;opacity:.85}.festival-invite>svg{width:20px;flex-shrink:0}
.cup-crest{--cup:#b49852;position:relative;display:inline-flex;width:88px;height:96px;align-items:center;justify-content:center;flex-shrink:0;color:#f3d998;filter:drop-shadow(0 8px 8px #102c3540);background:linear-gradient(135deg,#dec185 0%,#7a6034 30%,#e1c895 48%,#a47d38 70%,#ede1b4 100%);clip-path:polygon(50% 0,89% 18%,94% 64%,76% 86%,50% 100%,24% 86%,6% 64%,11% 18%)}
.cup-crest:before{content:'';position:absolute;inset:3px;background:radial-gradient(ellipse at 30% 0%,var(--cup),#132c32 88%);clip-path:inherit}.cup-crest:after{content:'';position:absolute;inset:8px;border:1px solid #dfc78655;border-radius:40% 40% 47% 47%}.cup-crest>svg{width:39px;height:39px;z-index:1;filter:drop-shadow(0 2px 4px #0008)}.cup-crest i{position:absolute;bottom:16px;font:9px Georgia;letter-spacing:3px;z-index:2}.crest-rays{position:absolute;inset:13px;background:repeating-conic-gradient(#edd19b26 0deg 1deg,transparent 1deg 30deg);border-radius:50%}.crest-1,.crest-7{clip-path:polygon(50% 0,72% 12%,96% 10%,94% 56%,82% 80%,50% 100%,18% 80%,6% 56%,4% 10%,28% 12%)}.crest-2,.crest-4{clip-path:polygon(50% 0,90% 20%,100% 60%,75% 92%,50% 100%,25% 92%,0 60%,10% 20%)}.crest-3,.crest-6{clip-path:polygon(50% 0,62% 12%,80% 8%,83% 30%,100% 50%,85% 70%,80% 91%,60% 87%,50% 100%,40% 87%,20% 91%,15% 70%,0 50%,17% 30%,20% 8%,38% 12%)}
.store-editorial{position:relative;overflow:hidden;background:#e8decb;border:1px solid #c8b79b;padding:25px;border-radius:20px;margin:18px 0;color:#24413c}.store-editorial small{font-size:10px;letter-spacing:1px}.store-editorial h2{font-size:25px;line-height:1.5;max-width:90%;position:relative;z-index:1;margin:10px 0}.store-editorial p{font-size:12px;line-height:2;max-width:92%;position:relative;z-index:1}.store-signet{position:absolute;left:-20px;bottom:-36px;opacity:.11;transform:rotate(12deg);width:155px}.store-signet svg{width:100%;height:auto}.store-nav{display:flex;gap:7px;overflow-x:auto;margin:15px 0;padding-bottom:5px;scrollbar-width:thin}.store-nav button{flex:0 0 auto;border:1px solid var(--line);border-radius:20px;padding:9px 13px;font-size:11px;background:var(--surface);color:var(--muted)}.store-nav button.selected{background:var(--accent);border-color:var(--accent);color:var(--onaccent)}.checkline{display:flex;align-items:center;gap:8px;font-size:11px;line-height:1.8}.checkline input{width:18px;height:18px;accent-color:var(--accent)}.vault-pack-copy small{display:block;font-size:10px;color:var(--accent);margin:8px 0}
.cup-intro{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:18px;margin:14px 0}.cup-intro>div{flex:1}.cup-intro small{font-size:9px;color:var(--muted);letter-spacing:1px}.cup-intro strong{display:block;font-size:32px;color:var(--accent);margin:7px 0}.cup-intro p{font-size:10px;line-height:1.9;margin:0}.cup-intro .button{font-size:10px;padding:10px;flex-basis:80px;flex-shrink:0;min-height:44px}
.cup-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:20px 0}.cup-card{min-width:0;border:1px solid var(--line);border-radius:22px;overflow:hidden;text-align:start;background:var(--surface);padding:0;box-shadow:0 5px 14px #112d2810;transition:transform .2s}.cup-card:active{transform:scale(.98)}.cup-card-art{position:relative;display:grid;place-items:center;height:156px;background:radial-gradient(ellipse at 50% 110%,var(--cup),transparent 80%),linear-gradient(130deg,#173b3b,#12272d);overflow:hidden}.cup-card-art:before{content:'';position:absolute;width:170px;height:170px;border:1px solid #bba57240;border-radius:50%;box-shadow:0 0 0 18px #cba5620a,0 0 0 36px #cba56207;transform:translateY(25px)}.cup-card-art>span:last-child{position:absolute;top:10px;left:10px;color:#e8d6aa;border:1px solid #e8d6aa44;padding:3px 6px;border-radius:4px;font:8px Georgia,serif;letter-spacing:1px}.cup-card-copy{padding:14px 12px}.cup-card-copy>small{display:block;font-size:8px;letter-spacing:.6px;color:var(--muted);min-height:16px}.cup-card-copy h2{font-size:20px;line-height:1.5;margin:5px 0 8px}.cup-card-copy p{font-size:10px;line-height:1.9;min-height:76px;margin:0 0 12px;color:var(--muted)}.cup-metrics{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;border-top:1px solid var(--line);padding-top:12px;font-size:10px}.cup-metrics b{color:var(--accent)}.cup-card-copy em{display:block;font-style:normal;font-size:10px;margin-top:10px;color:var(--accent)}
.run-card{padding:22px;border:1px solid var(--cup);border-radius:22px;background:var(--surface);box-shadow:0 8px 23px #1a343b10}.run-heading{display:flex;gap:18px;align-items:center}.run-heading .cup-crest{width:62px;height:70px}.run-heading .cup-crest>svg{width:28px}.run-heading .cup-crest i{display:none}.run-heading h2{margin:6px 0;font-size:25px}.run-heading small{font-size:9px;color:var(--muted)}.run-wins{display:flex;justify-content:space-between;gap:8px;margin:25px 0 17px;position:relative}.run-wins:before{content:'';position:absolute;height:1px;background:var(--line);top:19px;inset-inline:20px}.run-wins span{position:relative;width:38px;height:38px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--line);background:var(--bg);font-size:12px}.run-wins span.complete{background:var(--cup);color:white;border-color:var(--cup)}.run-status{display:flex;justify-content:space-between;gap:10px;font-size:11px;margin-bottom:20px}.run-card>.button{width:100%}.cup-history{display:grid;grid-template-columns:1fr auto auto;gap:15px;border-bottom:1px solid var(--line);padding:12px 0;font-size:11px}.cup-history small{color:var(--muted);font-size:9px}
.cup-detail-crest{text-align:center;margin:0 0 20px}.cup-detail-crest .cup-crest{width:120px;height:130px}.cup-detail-crest .cup-crest>svg{width:54px;height:54px}.cup-facts{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:14px;margin:22px 0;overflow:hidden}.cup-facts>div{text-align:center;padding:13px 6px;border-inline-end:1px solid var(--line)}.cup-facts small{display:block;font-size:8px;color:var(--muted);margin-bottom:9px}.cup-facts b{font-size:15px}.reward-track{display:flex;gap:8px;overflow:auto;padding:7px 0 12px}.reward-track>div{min-width:54px;flex:1;display:flex;align-items:center;flex-direction:column;gap:10px;border:1px solid var(--line);border-radius:12px;padding:12px 6px;font-size:11px;background:var(--surface)}.reward-track svg{width:18px;height:18px;color:var(--accent)}.reward-track span{font-size:9px;color:var(--muted)}.reward-track b{font-size:10px;line-height:1.8}
.trophy-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:20px 0}.trophy-grid button{background:var(--surface);padding:18px 7px;border:1px solid var(--line);border-radius:18px;display:flex;align-items:center;flex-direction:column;gap:10px;min-width:0}.trophy-grid button.locked{filter:grayscale(1);opacity:.5}.trophy-grid button.equipped{border:2px solid var(--accent)}.trophy-grid b{font-size:15px}.trophy-grid small{font-size:9px;color:var(--muted)}.result-crest{text-align:center;margin-bottom:10px}.result-crest+.sheet-emblem{display:none}.champion-note{background:var(--surface);border:1px solid var(--accent);border-radius:14px;padding:13px;color:var(--accent);line-height:2}.seat-crest{position:absolute;width:28px;height:31px;top:45px;inset-inline-end:4px}.seat-crest>svg{width:14px;height:14px}.seat-crest i{display:none}
.music-now{display:flex;align-items:center;gap:16px;border-bottom:1px solid var(--line);padding:14px 0 25px;margin-bottom:20px}.music-now small{display:block;font-size:9px;color:var(--muted);margin-bottom:9px}.music-now b{font-size:16px}.record-disc{width:64px;height:64px;flex-shrink:0;display:grid;place-items:center;border-radius:50%;background:repeating-radial-gradient(circle,#14393a 0px,#214c48 2px,#153a39 3px,#143330 5px);box-shadow:0 4px 15px #143b3730;color:#e4cfa0}.record-disc svg{width:24px;height:24px}.music-mode{display:flex;gap:6px;margin-bottom:15px}.music-mode .button{font-size:9px;flex:1;padding:8px 4px;min-width:0}.music-library{max-height:46vh;overflow-y:auto;border:1px solid var(--line);border-radius:15px;margin:15px 0}.music-track{display:flex;align-items:center;gap:12px;width:100%;text-align:start;border:0;border-bottom:1px solid var(--line);padding:14px;background:transparent;color:var(--ink)}.music-track>span{font:12px Georgia;color:var(--muted);width:24px}.music-track>div{flex:1;min-width:0}.music-track b{display:block;font-size:12px;line-height:1.8}.music-track small{display:block;font-size:9px;margin-top:5px;color:var(--muted)}.music-track svg{width:19px;height:19px;flex-shrink:0}.music-track.selected{background:var(--surface);color:var(--accent);box-shadow:inset 3px 0 var(--accent)}
.decision-note{display:block;font-size:9px;color:var(--accent);padding-top:4px}.review-reason{font-size:10px;color:var(--muted);display:flex;gap:6px;align-items:center;line-height:1.8}.review-reason svg{width:15px;height:15px}.review-trick{margin-bottom:20px}.journey-steps{display:grid;gap:13px;margin:18px 0;font-size:12px}.journey-focus h2{font-size:24px}.four-colors .suit-2{color:#168872!important}.four-colors .suit-3{color:#347dd0!important}
body[data-cup]:not([data-cup=""]) .card.back{background:radial-gradient(circle at 50% 40%,var(--cup-color),#143438 80%)!important;border:2px solid #c5aa70!important;box-shadow:inset 0 0 0 3px #264b49,inset 0 0 0 4px #bda067!important}body[data-cup]:not([data-cup=""]) .card.back:after{display:block!important;content:'✧';position:absolute;inset:10%;border:1px solid #dbc49080;border-radius:40%;color:#eddcaa;font:36px Georgia;display:grid!important;place-items:center;background:none!important}body[data-cup]:not([data-cup=""]) .card.back:before{display:none!important}
.celebration{position:fixed;inset:0;pointer-events:none;z-index:9999;overflow:hidden}.celebration i{position:absolute;left:var(--x);top:-15px;width:6px;height:11px;background:#cfa959;animation:confetti-drop 1.8s var(--d) cubic-bezier(.2,.5,.4,1) both}.celebration i:nth-child(3n){background:#558f86;border-radius:50%}.celebration i:nth-child(4n){background:#ad6684}.cup-card-art .cup-crest{animation:crest-arrive .55s ease-out both}.cup-grid .cup-card:nth-child(2n) .cup-crest{animation-delay:.08s}.turn-label .thinking{box-shadow:0 0 0 0 #bb995840;animation:thinking-halo 1.6s infinite}.selected.hand-card{filter:drop-shadow(0 -3px 6px #ba98554d)}
@keyframes crest-arrive{from{transform:translateY(12px) scale(.94);opacity:0}to{transform:none;opacity:1}}@keyframes confetti-drop{0%{transform:translateY(-10px) rotate(0);opacity:0}15%{opacity:1}100%{transform:translateY(90vh) rotate(var(--r));opacity:0}}@keyframes thinking-halo{60%{box-shadow:0 0 0 5px #bb995800}100%{box-shadow:0 0 0 0 #bb995800}}
body[data-theme=modern] .festival-invite{background:radial-gradient(ellipse at 15% 0%,#455487,transparent 65%),linear-gradient(130deg,#171d31,#232a44);border-color:#69719a;color:#dde2ff}body[data-theme=modern] .store-editorial{background:linear-gradient(120deg,#252d49,#20283e);border-color:#46516b;color:#e5e9ff}body[data-theme=modern] .cup-card-art{background:radial-gradient(ellipse at 50% 110%,var(--cup),transparent 80%),linear-gradient(130deg,#161d35,#141a2c)}
@media(max-width:350px){.festival-invite{padding:14px;gap:10px}.festival-invite .cup-crest{width:65px;height:76px}.festival-invite b{font-size:18px}.cup-card-copy{padding:12px 9px}.cup-card-copy h2{font-size:18px}.cup-card-copy p{min-height:95px}.cup-card-art{height:138px}.top-actions .wallet{font-size:9px}.token-chip{font-size:9px;padding:6px}.top-actions .round{width:29px;height:29px}.store-nav button{padding:9px 11px}}
body.reduced *,body.reduced *:before,body.reduced *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

body[data-cup=petal] .card.back:after{content:'❀'!important}body[data-cup=cypress] .card.back:after{content:'♜'!important}body[data-cup=mirror] .card.back:after{content:'◇'!important}body[data-cup=ember] .card.back:after{content:'♨'!important}body[data-cup=seer] .card.back:after{content:'✺'!important}body[data-cup=bond] .card.back:after{content:'∞'!important}body[data-cup=eclipse] .card.back:after{content:'☾'!important}body[data-cup=royal] .card.back:after{content:'♔'!important}
.cup-card{display:flex;flex-direction:column}.cup-card-art{width:100%;flex-shrink:0}.cup-card-copy{width:100%;flex:1}

.hand-zone .hand-cards{height:calc(100% - 29px)}.hand-card.row0{top:16px}.hand-caption.decision-guide{color:var(--accent);padding-inline:8px}
