.ttt-stage{color:#5a1a35;min-height:100vh;font-family:var(--font-geist-sans), system-ui, sans-serif;background:radial-gradient(circle at 15% 10%,#fff0f5 0,#0000 45%),radial-gradient(circle at 85% 90%,#ffb3c9 0,#0000 50%),linear-gradient(160deg,#ffd6e4,#ff9ebb 60%,#ff7aa2);flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:110px 16px 70px;display:flex;position:relative;overflow:hidden}.ttt-stage svg{display:block}.ttt-floater{bottom:-60px;left:var(--x);font-size:var(--s);opacity:.55;pointer-events:none;-webkit-user-select:none;user-select:none;animation:ttt-rise var(--d) linear var(--dl) infinite;position:absolute}@keyframes ttt-rise{0%{transform:translate(0)rotate(0)}50%{transform:translate(24px,-55vh)rotate(18deg)}to{transform:translate(-12px,-115vh)rotate(-12deg)}}.ttt-cupidTrack{z-index:5;animation:18s linear infinite ttt-fly;position:absolute;top:70px;left:0}@keyframes ttt-fly{0%{transform:translate(-160px)}to{transform:translate(calc(100vw + 160px))}}.ttt-cupidBob{cursor:pointer;filter:drop-shadow(0 6px 8px #c2185b40);background:0 0;border:none;padding:0;animation:1.4s ease-in-out infinite alternate ttt-bob;display:block;position:relative}@keyframes ttt-bob{0%{transform:translateY(-10px)rotate(-5deg)}to{transform:translateY(12px)rotate(5deg)}}.ttt-wingB{transform-origin:56px 48px;animation:.35s ease-in-out infinite alternate ttt-flapB}.ttt-wingF{transform-origin:56px 52px;animation:.35s ease-in-out infinite alternate ttt-flapF}@keyframes ttt-flapB{0%{transform:rotate(-18deg)}to{transform:rotate(12deg)}}@keyframes ttt-flapF{0%{transform:rotate(-10deg)}to{transform:rotate(16deg)}}.ttt-tickled{animation:.9s ease-in-out ttt-spin}@keyframes ttt-spin{0%{transform:rotate(0)scale(1)}50%{transform:rotate(180deg)scale(1.25)}to{transform:rotate(360deg)scale(1)}}.ttt-love{font-size:26px;animation:.9s ease-out forwards ttt-loveUp;position:absolute;top:-10px;left:40%}@keyframes ttt-loveUp{0%{opacity:1;transform:translateY(0)scale(.5)}to{opacity:0;transform:translateY(-50px)scale(1.4)}}.ttt-arrow{z-index:4;pointer-events:none;filter:drop-shadow(0 3px 4px #0003);position:absolute;top:46%;left:0}.ttt-toRight{animation:1s ease-out both ttt-shootR}.ttt-toLeft{animation:1s ease-out both ttt-shootL}@keyframes ttt-shootR{0%{transform:translate(-140px)}to{transform:translate(calc(100vw + 20px))}}@keyframes ttt-shootL{0%{transform:translate(calc(100vw + 20px))scaleX(-1)}to{transform:translate(-140px)scaleX(-1)}}.ttt-beat{filter:drop-shadow(0 8px 12px #ff2e6366);width:90px;height:90px;animation:1.1s ease-in-out infinite ttt-heartbeat}.ttt-beat svg{width:100%;height:100%}@keyframes ttt-heartbeat{0%,to{transform:scale(1)}15%{transform:scale(1.18)}30%{transform:scale(1)}45%{transform:scale(1.12)}}.ttt-title,.ttt-titleSm{color:#c2185b;text-shadow:0 2px #fff,0 6px 16px #fff9;z-index:2;margin:0;font-family:Georgia,Playfair Display,serif;font-style:italic;font-weight:700}.ttt-title{font-size:clamp(2.2rem,7vw,3.6rem)}.ttt-titleSm{font-size:clamp(1.6rem,5vw,2.2rem)}.ttt-tagline{letter-spacing:.12em;text-transform:uppercase;z-index:2;margin:0;font-size:.85rem;font-weight:600}.ttt-card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:2;background:#ffffff8c;border-radius:28px;flex-direction:column;align-items:center;gap:12px;padding:22px 26px;display:flex;box-shadow:0 16px 40px #c2185b33,inset 0 0 0 2px #ffffffb3}.ttt-row{z-index:2;align-items:center;gap:10px;display:flex}.ttt-or{opacity:.75;margin:0;font-size:.9rem}.ttt-btn,.ttt-btnGhost{cursor:pointer;border:none;border-radius:999px;padding:12px 26px;font-size:1rem;font-weight:700;transition:transform .12s,box-shadow .12s}.ttt-btn{color:#fff;background:linear-gradient(135deg,#ff5c8a,#ff2e63);box-shadow:0 6px #c2185b,0 12px 20px #ff2e6359}.ttt-btnGhost{color:#c2185b;background:#fff;box-shadow:0 5px #ffc0d3,0 10px 16px #c2185b26}.ttt-btn:hover,.ttt-btnGhost:hover:not(:disabled){transform:translateY(-2px)}.ttt-btn:active{transform:translateY(5px);box-shadow:0 1px #c2185b}.ttt-btnGhost:active{transform:translateY(4px);box-shadow:0 1px #ffc0d3}.ttt-btnGhost:disabled{opacity:.5;cursor:not-allowed}.ttt-input{color:#5a1a35;letter-spacing:.3em;text-align:center;background:#ffffffe6;border:2px solid #ffb3c9;border-radius:999px;outline:none;width:130px;padding:11px 12px;font-size:1rem;font-weight:800}.ttt-input:focus{border-color:#ff2e63}.ttt-code{letter-spacing:.35em;color:#c2185b;padding-left:.35em;font-family:ui-monospace,monospace;font-size:2.4rem;font-weight:800}.ttt-error{color:#b3123f;z-index:2;margin:0;font-weight:600}.ttt-footnote{opacity:.7;z-index:2;margin:6px 0 0;font-size:.85rem}.ttt-players{z-index:2;align-items:center;gap:12px;display:flex}.ttt-vs{font-size:1.6rem;animation:1.4s ease-in-out infinite ttt-heartbeat}.ttt-player{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffff8c;border:2px solid #0000;border-radius:999px;align-items:center;gap:8px;padding:8px 16px 8px 10px;font-weight:700;transition:all .3s;display:flex}.ttt-player em{color:#fff;background:#ff2e63;border-radius:999px;padding:2px 8px;font-size:.7rem;font-style:normal}.ttt-pIcon{flex:none;width:34px;height:34px}.ttt-pIcon svg{width:100%;height:100%}.ttt-active{border-color:#ff2e63;animation:1.2s ease-in-out infinite alternate ttt-pulseCard;box-shadow:0 0 0 6px #ff2e632e,0 8px 24px #ff2e634d}@keyframes ttt-pulseCard{0%{transform:scale(1)}to{transform:scale(1.06)}}.ttt-champ{background:#fff8d6;border-color:#ffc400;box-shadow:0 0 24px #ffc400b3}.ttt-dim{opacity:.5}.ttt-status{z-index:2;text-align:center;background:#fffc;border-radius:999px;padding:10px 22px;font-weight:700;box-shadow:0 8px 20px #c2185b26}.ttt-board{--cell:min(26vw, 112px);z-index:2;grid-template-columns:repeat(3, var(--cell));-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff59;border-radius:32px;gap:10px;padding:14px;display:grid;box-shadow:0 20px 50px #c2185b40,inset 0 0 0 2px #ffffffb3}.ttt-cell{width:var(--cell);height:var(--cell);cursor:default;background:linear-gradient(145deg,#fff,#ffe6ee);border:none;border-radius:24px;place-items:center;padding:0;transition:transform .15s,box-shadow .15s;display:grid;position:relative;box-shadow:0 6px #ffc0d3,0 10px 18px #c2185b2e}.ttt-playable{cursor:pointer}.ttt-playable:hover{transform:translateY(-4px)scale(1.04)}.ttt-playable:active{transform:translateY(3px);box-shadow:0 2px #ffc0d3}.ttt-mark{filter:drop-shadow(0 4px 6px #c2185b59);width:62%;height:62%;animation:.5s cubic-bezier(.2,1.6,.4,1) both ttt-pop;display:block}.ttt-mark svg,.ttt-ghost svg{width:100%;height:100%}@keyframes ttt-pop{0%{transform:scale(0)rotate(-40deg)}to{transform:scale(1)rotate(0)}}.ttt-ghost{opacity:0;pointer-events:none;width:62%;height:62%;margin:auto;transition:opacity .15s;position:absolute;inset:0}.ttt-playable:hover .ttt-ghost{opacity:.3}.ttt-gem{transform-box:fill-box;transform-origin:50%;animation:1.6s ease-in-out infinite ttt-twinkle}@keyframes ttt-twinkle{0%,to{transform:scale(1)}50%{transform:scale(1.25)rotate(8deg)}}.ttt-burst{color:#ff2e63;opacity:0;pointer-events:none;font-size:14px;animation:.8s ease-out forwards ttt-burst;position:absolute;top:50%;left:50%}@keyframes ttt-burst{0%{opacity:1;transform:translate(-50%,-50%)scale(.3)}to{transform:translate(calc(-50% + var(--dx)), calc(-50% + var(--dy))) scale(1.2);opacity:0}}.ttt-win{background:linear-gradient(145deg,#fff8d6,#ffe27a);animation:.9s ease-in-out infinite alternate ttt-winPulse;box-shadow:0 0 0 3px #ffc400,0 0 28px #ffc400cc}.ttt-win .ttt-mark{animation:.5s both ttt-pop,.6s ease-in-out .5s infinite alternate ttt-jig}@keyframes ttt-winPulse{0%{transform:scale(1)}to{transform:scale(1.06)}}@keyframes ttt-jig{0%{transform:rotate(-8deg)scale(1.05)}to{transform:rotate(8deg)scale(1.18)}}.ttt-confetti{top:-30px;left:var(--x);font-size:var(--s);z-index:20;pointer-events:none;animation:ttt-fall var(--d) ease-in var(--dl) 2 both;position:absolute}@keyframes ttt-fall{0%{opacity:1;transform:translateY(-10vh)rotate(0)}to{transform:translate(var(--sw), 110vh) rotate(540deg);opacity:.9}}@media (prefers-reduced-motion:reduce){.ttt-floater,.ttt-cupidTrack,.ttt-cupidBob,.ttt-wingB,.ttt-wingF,.ttt-confetti,.ttt-arrow{animation:none}}
