@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.isolate{isolation:isolate}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.hidden\!{display:none!important}.inline{display:inline}.table{display:table}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.transform\!{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)!important}.resize{resize:both}.lowercase{text-transform:lowercase}.italic{font-style:italic}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}:root{--ink:#211a42;--pink:#ff5d91;--purple:#7458df;--cream:#fffaf8}*{box-sizing:border-box}html{background:#faf8ff;min-height:100%}body{color:var(--ink);background:radial-gradient(circle at 15% 10%,#fff 0,#fff8fb 36%,#0000 55%),radial-gradient(circle at 85% 85%,#f1edff 0,#0000 40%),#fbfaff;margin:0;font-family:PingFang SC,Microsoft YaHei,system-ui,sans-serif}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent}.app-shell{width:min(100%,680px);min-height:100dvh;margin:auto;padding:34px 18px 28px;position:relative;overflow:hidden}.setup-shell{flex-direction:column;display:flex}.hero{text-align:center;margin-bottom:24px}.eyebrow{color:#8068d3;letter-spacing:.18em;background:#fff9;border:1px solid #e5dcff;border-radius:999px;padding:5px 13px;font-size:11px;font-weight:800;display:inline-block}.hero h1{letter-spacing:-.045em;color:#7457ce;-webkit-text-fill-color:transparent;-webkit-text-stroke:.35px #7b4fc624;filter:drop-shadow(0 2px #fff)drop-shadow(0 4px 7px #a88bd32b);background:linear-gradient(105deg,#ed6e9e 5%,#8a62de 52%,#654fc3 100%);-webkit-background-clip:text;background-clip:text;margin:12px 0 8px;font-family:PingFang SC,Microsoft YaHei,system-ui,sans-serif;font-size:clamp(23px,6vw,35px);font-weight:800;line-height:1.25}.hero h1 .title-star{color:#ffc95f;-webkit-text-fill-color:#ffc95f;filter:drop-shadow(0 1px #fff);font-size:.62em}.hero h1 em{color:#7652d5;letter-spacing:-.08em;-webkit-text-fill-color:#7652d5;text-shadow:1px 1px #fff,2px 2px #eadfff;margin:0 .16em;padding:0 .04em;font-family:Comic Sans MS,Hiragino Maru Gothic ProN,Yuanti SC,cursive;font-size:1.08em;font-style:normal;font-weight:900;display:inline-block;transform:rotate(-3deg)}.hero p{color:#5f5874;margin:0;font-size:14px}.decor{color:#efb4d2;opacity:.7;position:absolute}.decor-one{top:22px;left:24px}.decor-two{top:95px;right:30px}.cards{gap:18px;display:grid;position:relative}.mini-vs{display:none}.player-card{background:#ffffffba;border:1.5px solid;border-radius:20px;grid-template-columns:130px 1fr;align-items:center;gap:18px;padding:28px 18px 18px;display:grid;position:relative;box-shadow:0 12px 32px #563d8412}.player-1{border-color:#ff82aa}.player-2{border-color:#8a75e8}.player-tag{color:#fff;border-radius:999px;padding:6px 15px;font-size:13px;font-weight:700;position:absolute;top:14px;left:16px;transform:translateY(-50%);box-shadow:0 4px 12px #cfbedb66}.player-1 .player-tag{background:linear-gradient(135deg,#ff719f,#e94f82)}.player-2 .player-tag{background:linear-gradient(135deg,#8068e0,#5c45ba)}.avatar-upload{aspect-ratio:1;color:#9577c7;cursor:pointer;background:linear-gradient(145deg,#fff,#f7f0fa);border:1px dashed #d7cce4;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:130px;padding:0;transition:transform .22s,box-shadow .22s,border-color .22s;display:flex;overflow:hidden}.avatar-upload img,.fighter img,.turn-pill img,.intersection img,.winner-avatar img{object-fit:cover;object-position:center;width:100%;height:100%}.avatar-upload img{border-radius:50%}.avatar-upload span{font-size:12px}.upload-icon{line-height:1;font-size:20px!important}.player-form{border-left:1px solid #eee5ed;min-width:0;padding-left:18px}.player-form label,.upload-label{font-size:14px;font-weight:700;display:block}.player-form input[type=text],.player-form label input{background:#fffc;border:1px solid #ddd5e5;border-radius:10px;outline:none;width:100%;margin-top:8px;padding:11px 12px}.player-form input:focus{border-color:#9b80ea;box-shadow:0 0 0 3px #8a6ce31c}.upload-label{margin-top:14px}.change-image{color:#6e4fd0;cursor:pointer;background:#fffafd;border:1px dashed #cdbbea;border-radius:10px;width:100%;height:44px;margin-top:8px;transition:transform .18s,background-color .18s,box-shadow .18s}.change-image .upload-icon{margin-right:8px}.file-note{color:#777084;white-space:nowrap;text-overflow:ellipsis;margin:8px 0 0;font-size:10px;overflow:hidden}.file-note.error{color:#d93d70}.file-input{display:none}.start-button{color:#fff;cursor:pointer;background:linear-gradient(100deg,#ff7fa9,#f25b91);border:0;border-radius:999px;width:min(100%,330px);height:54px;margin:22px auto 0;font-size:18px;font-weight:800;transition:transform .2s,box-shadow .2s,filter .2s;position:relative;overflow:hidden;box-shadow:0 12px 22px #f773a54d}.start-button:after{content:"";background:linear-gradient(90deg,#0000,#fff9,#0000);width:25%;position:absolute;inset:-30% auto -30% -35%;transform:skew(-20deg)}.start-button span{margin-right:18px}.start-button:disabled{cursor:not-allowed;color:#f7f5f8;box-shadow:none;background:#d9d4df}.start-hint,.privacy-note{text-align:center;color:#847b8e;margin:8px 0 0;font-size:12px}.privacy-note{color:#a29aa8;margin-top:14px;font-size:11px}.site-credit{text-align:center;color:#aaa1b3;letter-spacing:.08em;margin:16px 0 0;font-size:10px;font-weight:600}.game-credit{margin-top:13px}.game-shell{flex-direction:column;width:min(100%,760px);padding:14px 12px 18px;display:flex}.versus-bar{background:#fff9;border:1px solid #e6dcf6;border-radius:18px;grid-template-columns:1fr auto 1fr;align-items:center;padding:10px 12px;display:grid;box-shadow:0 9px 30px #76618d12}.fighter{align-items:center;gap:9px;min-width:0;display:flex}.fighter-right{text-align:right;justify-content:flex-end}.fighter img{border:2px solid #ff91b1;border-radius:50%;width:56px;height:56px}.fighter-right img{border-color:#8f7ae1}.fighter b{white-space:nowrap;text-overflow:ellipsis;max-width:105px;font-size:14px;display:block;overflow:hidden}.fighter span{margin-top:3px;display:block}.pink-star,.pink-text{color:#eb4f82}.purple-star,.purple-text{color:#6551c9}.versus{text-align:center;padding:0 6px}.versus small{color:#9b8ea9;letter-spacing:.1em;font-size:8px;display:block}.versus strong{color:#ef739e;font-family:Georgia,serif;font-size:27px;font-style:italic}.game-status-row{justify-content:center;align-items:center;width:min(100%,560px);min-height:48px;margin:14px auto 12px;display:flex;position:relative}.turn-pill{background:#fffafc;border:1px solid #eadfea;border-radius:999px;justify-content:center;align-items:center;gap:10px;min-width:230px;max-width:80%;height:48px;margin:0;padding:6px 20px 6px 7px;font-size:14px;display:flex;box-shadow:0 4px 15px #745a8710}.turn-pill img{border:1px solid #e5bfd1;border-radius:50%;width:35px;height:35px}.sound-toggle{color:#74678b;cursor:pointer;background:#fffafd;border:1px solid #d8cdef;border-radius:999px;min-width:72px;height:38px;padding:0 11px;font-size:11px;font-weight:750;transition:transform .18s,box-shadow .18s,color .18s,background-color .18s;position:absolute;right:0}.sound-toggle.is-on{color:#664bc5;background:#f5f0ff;border-color:#b9a6ec;box-shadow:0 4px 12px #7455c91c}.board-wrap{width:min(100%,560px);margin:0 auto;padding-right:4px}.col-labels{text-align:center;color:#786a78;grid-template-columns:repeat(15,1fr);margin-left:26px;font-size:10px;display:grid}.board-row{display:flex}.row-labels{text-align:center;color:#786a78;grid-template-rows:repeat(15,1fr);align-items:center;width:26px;font-size:10px;display:grid}.board{aspect-ratio:1;touch-action:manipulation;background:#fff8f5;border-radius:15px;grid-template-rows:repeat(15,minmax(0,1fr));grid-template-columns:repeat(15,minmax(0,1fr));width:calc(100% - 26px);padding:0;display:grid;position:relative;box-shadow:inset 0 0 0 1px #eadbd9,0 14px 35px #6653751a}.board:before{content:"";z-index:0;pointer-events:none;background-image:linear-gradient(#a9868d 1px,#0000 1px),linear-gradient(90deg,#a9868d 1px,#0000 1px);background-position:0 0;background-size:7.14286% 7.14286%;border-bottom:1px solid #a9868d;border-right:1px solid #a9868d;position:absolute;inset:3.33333%}.intersection{cursor:pointer;z-index:1;background:0 0;border:0;border-radius:50%;width:100%;min-width:0;height:100%;min-height:0;padding:0;position:relative;overflow:visible}.intersection.has-piece{z-index:2}.intersection img{border:1px solid #fff;border-radius:50%;width:68%;height:68%;display:block;position:absolute;top:16%;left:16%;box-shadow:0 1px 4px #38283b45}.piece-1 img{outline:1.5px solid #ff719d}.piece-2 img{outline:1.5px solid #6754c7}.intersection.last-move:after{content:"";background:#ffd450;border:1px solid #fff;border-radius:50%;width:5px;height:5px;position:absolute;top:12%;right:12%;box-shadow:0 1px 4px #8c5b15}.game-controls{background:#fff9;border:1px solid #e6dff0;border-radius:15px;justify-content:space-between;align-items:center;gap:12px;width:min(100%,560px);margin:18px auto 0;padding:12px;font-size:12px;display:flex;box-shadow:0 8px 25px #604c7510}.game-controls>div{gap:8px;display:flex}.secondary,.primary{cursor:pointer;border-radius:12px;min-height:42px;padding:0 15px;font-weight:650;transition:transform .18s,box-shadow .18s,filter .18s,background-color .18s}.secondary{color:#312849;background:#fff;border:1px solid #e0d7e7}.pink-outline{color:#d74273;border-color:#f0c4d3}.purple-outline{color:#5945b9;border-color:#d3c8ef}.primary{color:#fff;background:linear-gradient(100deg,#ff739f,#ec598c);border:0}.primary.purple{background:linear-gradient(100deg,#876be0,#6a4fc8)}.modal-backdrop{z-index:20;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#251a2f6b;place-items:center;padding:22px;display:grid;position:fixed;inset:0}.modal-card{text-align:center;background:linear-gradient(145deg,#fff,#fff9fd);border-radius:22px;width:min(100%,390px);padding:30px 24px 24px;box-shadow:0 24px 70px #251c3180}.modal-card h2{margin:4px 0 20px;font-size:21px}.modal-card p{color:#50475f;line-height:1.65}.modal-actions{justify-content:center;gap:12px;margin-top:22px;display:flex}.modal-actions button{flex:1}.winner-card{border:1px solid #f2cddd}.confetti{color:#f371a4;letter-spacing:.25em}.winner-card h2{color:#ed4c80}.winner-avatar{width:128px;height:128px;margin:30px auto 16px;position:relative}.winner-avatar img{border:4px solid #ff8bad;border-radius:50%;box-shadow:0 9px 25px #c9517e4a}.crown{color:#ffc747;z-index:1;font-size:45px;position:absolute;top:-34px;left:50%;transform:translate(-50%)}.question-mark{color:#7657d2;background:#f7f2ff;border:5px solid #bda5ff;border-radius:50%;place-items:center;width:56px;height:56px;margin:-4px auto 15px;font-size:32px;font-weight:800;display:grid}.confirm-card h2{margin-bottom:12px}@media (max-width:430px){.app-shell{padding-left:12px;padding-right:12px}.player-card{grid-template-columns:105px 1fr;gap:12px;padding:26px 12px 14px}.avatar-upload{width:105px}.player-form{padding-left:12px}.file-note{font-size:9px}.hero{margin-bottom:20px}.game-shell{padding-top:8px}.fighter img{width:48px;height:48px}.fighter b{max-width:72px;font-size:13px}.game-status-row{justify-content:flex-start;margin-top:10px;margin-bottom:8px}.turn-pill{width:calc(100% - 80px);min-width:0;max-width:none}.sound-toggle{min-width:68px;padding:0 8px}.game-controls{flex-direction:column;align-items:stretch}.game-controls>div{grid-template-columns:1fr 1.2fr;display:grid}.secondary{padding:0 9px;font-size:12px}.board{border-radius:11px}.modal-card{padding-left:18px;padding-right:18px}}@media (min-width:720px){.setup-shell{justify-content:center;width:min(100%,1100px)}.cards{grid-template-columns:1fr 34px 1fr;align-items:center}.mini-vs{color:#ed6f99;text-align:center;font-family:Georgia,serif;font-size:22px;font-weight:700;display:block}.player-card{grid-template-columns:120px 1fr}.avatar-upload{width:120px}}@media (hover:hover){.player-card:hover{transform:translateY(-3px);box-shadow:0 17px 38px #563d841f}.avatar-upload:hover{border-color:#ad8de3;transform:scale(1.025);box-shadow:0 8px 22px #8066a82c}.change-image:hover{background:#faf4ff;transform:translateY(-1px);box-shadow:0 6px 14px #856cc51c}.start-button:not(:disabled):hover{filter:saturate(1.08);transform:translateY(-2px);box-shadow:0 16px 28px #f773a563}.secondary:hover,.primary:hover,.sound-toggle:hover{filter:saturate(1.08);transform:translateY(-2px);box-shadow:0 7px 15px #60427e24}.intersection:not(.has-piece):hover{background:#ef79a51b}}.start-button:not(:disabled):active,.change-image:active,.secondary:active,.primary:active,.avatar-upload:active,.sound-toggle:active{transform:scale(.97)}@media (prefers-reduced-motion:no-preference){.hero{animation:.55s cubic-bezier(.2,.75,.25,1) both soft-enter}.player-card{transition:transform .24s,box-shadow .24s;animation:.55s cubic-bezier(.2,.75,.25,1) both soft-enter}.player-1{animation-delay:.1s}.player-2{animation-delay:.2s}.start-button{animation:.5s cubic-bezier(.2,.75,.25,1) .28s both soft-enter}.start-button:not(:disabled):after{animation:2.8s ease-in-out 1s infinite button-shine}.decor-one{animation:3.4s ease-in-out infinite sparkle-float}.decor-two{animation:3.8s ease-in-out .7s infinite reverse sparkle-float}.versus-bar{animation:.42s ease-out both soft-enter}.turn-pill{animation:2.2s ease-in-out infinite turn-breathe}.board-wrap{animation:.5s ease-out 80ms both board-enter}.game-controls{animation:.45s ease-out .18s both soft-enter}.intersection.has-piece img{animation:.23s cubic-bezier(.2,1.45,.45,1) both piece-drop}.intersection.last-move:after{animation:1.15s ease-in-out infinite last-glow}.modal-card{animation:.25s cubic-bezier(.2,.9,.35,1.1) pop}.winner-card .confetti{animation:1.4s ease-in-out infinite celebrate}.winner-card .crown{animation:1.6s ease-in-out infinite crown-bob}@keyframes soft-enter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes board-enter{0%{opacity:0;transform:translateY(8px)scale(.985)}to{opacity:1;transform:none}}@keyframes piece-drop{0%{opacity:0;transform:scale(.3)rotate(-8deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes last-glow{50%{transform:scale(1.45);box-shadow:0 0 0 4px #ffd45033,0 1px 4px #8c5b15}}@keyframes turn-breathe{50%{transform:translateY(-2px);box-shadow:0 8px 20px #9876bd22}}@keyframes sparkle-float{50%{opacity:1;transform:translateY(-7px)rotate(12deg)scale(1.12)}}@keyframes button-shine{0%,58%{left:-35%}82%,to{left:118%}}@keyframes pop{0%{opacity:0;transform:translateY(10px)scale(.96)}}@keyframes celebrate{50%{letter-spacing:.32em;transform:scale(1.06)}}@keyframes crown-bob{50%{transform:translate(-50%)translateY(-5px)rotate(4deg)}}}.text-back{color:#756887;cursor:pointer;background:0 0;border:0;align-self:flex-start;margin-bottom:12px;padding:8px 2px;font-size:13px;text-decoration:none}.mode-shell{justify-content:center}.mode-grid{grid-template-columns:1fr 1fr;gap:16px;width:min(100%,620px);margin:18px auto;display:grid}.mode-card{text-align:center;cursor:pointer;background:#fff;border:1.5px solid;border-radius:24px;flex-direction:column;justify-content:center;align-items:center;gap:10px;min-height:190px;padding:26px 18px;text-decoration:none;transition:all .2s;display:flex}.mode-card strong{color:var(--ink);font-size:21px}.mode-card small{color:#766e82;line-height:1.5}.mode-icon{border-radius:50%;place-items:center;width:58px;height:58px;font-size:27px;display:grid}.local-mode{border-color:#f4a9bf}.local-mode .mode-icon{color:#e74f83;background:#fff0f5}.online-mode{border-color:#ad9be9}.online-mode .mode-icon{color:#694dcd;background:#f2eeff}.online-shell{flex-direction:column;width:min(100%,620px);min-height:100dvh;margin:auto;padding:24px 18px 34px;display:flex;position:relative}.online-heading{text-align:center;margin:42px 0 30px}.online-heading.compact{margin:20px 0 24px}.online-heading>span{letter-spacing:.16em;color:#8a72dc;font-size:11px;font-weight:800}.online-heading h1{color:#6048be;margin:10px 0 8px;font-size:clamp(26px,7vw,38px)}.online-heading p{color:#776f83;margin:0}.online-primary,.online-secondary{cursor:pointer;border-radius:15px;justify-content:center;align-items:center;min-height:52px;font-weight:800;text-decoration:none;display:flex}.online-primary{color:#fff;background:linear-gradient(100deg,#ff739f,#7557d8);border:0;box-shadow:0 10px 24px #875dc33c}.online-primary:disabled{opacity:.55}.online-secondary{color:#654cc1;background:#fff;border:1px solid #cfc2ec}.create-link{width:min(100%,380px);margin:0 auto}.or-line{color:#a399aa;align-items:center;gap:12px;margin:26px 0;display:flex}.or-line:before,.or-line:after{content:"";background:#e8e0eb;flex:1;height:1px}.join-code,.online-form{background:#fffc;border:1px solid #e6dcf1;border-radius:22px;padding:22px;box-shadow:0 12px 34px #604a7311}.join-code label,.online-form label{flex-direction:column;gap:9px;font-size:13px;font-weight:750;display:flex}.join-code input,.online-form input{background:#fff;border:1px solid #ddd3e6;border-radius:12px;outline:none;height:50px;padding:0 14px}.join-code input{text-transform:uppercase;text-align:center;letter-spacing:.18em;font-size:22px;font-weight:850}.join-code .online-secondary{background:#f0ebff;border:0;width:100%;margin-top:16px}.online-avatar{color:#785acf;cursor:pointer;background:#faf6ff;border:2px dashed #cbb8eb;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;width:142px;height:142px;margin:0 auto 22px;display:flex;overflow:hidden}.online-avatar img{object-fit:cover;width:100%;height:100%}.online-avatar span{font-size:34px}.online-avatar small{margin-top:4px}.online-form .online-primary{width:100%;margin-top:18px}.form-note{color:#9a91a0;text-align:center;font-size:11px}.form-error{color:#d63e71;text-align:center;font-size:12px}.loading-room,.empty-state{text-align:center;justify-content:center;align-items:center}.empty-state p{color:#766f80;margin-bottom:24px}.empty-state .online-primary{width:min(100%,300px)}.room-loader{color:#8b6bdc;font-size:38px;animation:1.8s linear infinite spin}.lobby-shell{width:min(100%,760px)}.room-header{text-align:center;background:#fff9;border:1px solid #e7dded;border-radius:20px;margin:2px auto 24px;padding:14px 28px}.room-header span{color:#928999;font-size:10px;display:block}.room-header strong{letter-spacing:.16em;color:#674dc1;margin:4px 0;font-size:31px;display:block}.room-header button{color:#df4f80;cursor:pointer;background:0 0;border:0;font-size:12px}.lobby-stage{grid-template-columns:1fr 55px 1fr;align-items:center;gap:10px;display:grid}.lobby-player{text-align:center;background:#fff;border:1.5px solid #eadde8;border-radius:24px;min-height:260px;padding:26px 12px 18px;position:relative}.lobby-player:first-child{border-color:#f3a2bc}.lobby-player:last-child{border-color:#b7a4ea}.player-label{color:#8d8095;font-size:11px;font-weight:800;position:absolute;top:12px;left:14px}.lobby-avatar{background:#f4eef8;border-radius:50%;width:128px;height:128px;margin:18px auto 13px;position:relative}.lobby-avatar img{object-fit:cover;border-radius:50%;width:100%;height:100%}.lobby-avatar i{border:2px solid #fff;border-radius:50%;width:14px;height:14px;position:absolute;bottom:7px;right:7px}.online-dot{background:#49c889}.offline-dot{background:#bab4bd}.lobby-avatar.placeholder{color:#baaec5;border:2px dashed #d9cee0;place-items:center;font-size:35px;display:grid}.lobby-player strong{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.presence-label{margin-top:5px;font-size:10px;display:block}.presence-label.is-online{color:#2d9b69}.presence-label.is-offline{color:#9b929f}.lobby-player small{border-radius:999px;margin-top:9px;padding:4px 10px;display:inline-block}.ready-badge{color:#3c9d70;background:#e9fff5}.not-ready-badge{color:#8f8497;background:#f3eff5}.lobby-vs{text-align:center;color:#e96393;font:italic 800 26px Georgia}.lobby-vs small{color:#918699;margin-top:8px;font:10px system-ui;display:block}.waiting-card,.ready-card{text-align:center;background:#fff9;border:1px solid #e6dcef;border-radius:22px;margin-top:20px;padding:22px}.waiting-card h2,.ready-card h2{margin:7px 0;font-size:19px}.waiting-card p,.ready-card p{color:#756d7e;font-size:13px}.waiting-card .online-secondary,.ready-card .online-primary{width:min(100%,290px);margin:16px auto 0}.waiting-stars{color:#ee77a0}.ready-card.all-ready{background:#f8f5ff;border-color:#b7a4ec}.room-error{margin-top:14px}.room-expiry{text-align:center;color:#a49ca9;margin-top:16px;font-size:10px}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width:520px){.mode-grid{grid-template-columns:1fr}.mode-card{min-height:140px}.lobby-stage{grid-template-columns:1fr 34px 1fr;gap:5px}.lobby-player{min-height:215px;padding-left:7px;padding-right:7px}.lobby-avatar{width:min(28vw,112px);height:min(28vw,112px)}.lobby-vs{font-size:20px}.room-header{margin-bottom:16px}.online-shell{padding-left:12px;padding-right:12px}}@media (hover:hover){.mode-card:hover{transform:translateY(-4px);box-shadow:0 16px 32px #654b7d1b}.online-primary:hover,.online-secondary:hover{filter:saturate(1.08);transform:translateY(-1px)}}.waiting-start{color:#684fc4;background:#f0ebff;border-radius:14px;width:min(100%,290px);margin:16px auto 0;padding:14px;font-weight:750}.online-game-shell{width:min(100%,760px);min-height:100dvh;padding:14px 12px calc(24px + env(safe-area-inset-bottom));flex-direction:column;margin:auto;display:flex;overflow:hidden}.game-loading,.game-empty,.result-shell{text-align:center;justify-content:center;align-items:center}.game-empty p{color:#756d7e}.game-empty .online-primary{width:min(100%,300px);margin-top:18px}.online-game-header{background:#fff9;border:1px solid #e6dcf6;border-radius:18px;grid-template-columns:1fr auto 1fr;align-items:center;padding:10px 12px;display:grid;box-shadow:0 9px 30px #76618d12}.online-fighter{align-items:center;gap:9px;min-width:0;transition:opacity .2s,transform .2s;display:flex}.online-fighter.reverse{text-align:right;justify-content:flex-end}.online-fighter.inactive{opacity:.58;transform:scale(.96)}.online-fighter img,.game-avatar-placeholder{object-fit:cover;background:#f4eef8;border:2px solid #ff7da5;border-radius:50%;flex:0 0 54px;width:54px;height:54px}.online-fighter.reverse img,.online-fighter.reverse .game-avatar-placeholder{border-color:#7864d8}.game-avatar-placeholder{place-items:center;display:grid}.online-fighter b{text-overflow:ellipsis;white-space:nowrap;max-width:105px;font-size:13px;display:block;overflow:hidden}.online-fighter small{color:#8d8293;margin-top:3px;font-size:9px;display:block}.game-vs{text-align:center;color:#eb6b98;font:italic 800 25px Georgia}.game-vs small{color:#988da1;letter-spacing:.08em;font:8px system-ui;display:block}.game-meta{justify-content:center;align-items:center;width:min(100%,560px);min-height:45px;margin:12px auto 9px;display:flex;position:relative}.game-turn{border-radius:999px;padding:10px 18px;font-size:13px;font-weight:750}.game-turn.mine{color:#5f47bb;background:#f0ebff;box-shadow:0 5px 15px #7256c323}.game-turn.theirs{color:#887d8d;background:#f4f0f4}.connection-state{font-size:9px;position:absolute;right:0}.connection-state.connected{color:#279a68}.connection-state.connecting,.connection-state.recovering{color:#b27d3b}.online-board-wrap{-webkit-user-select:none;user-select:none;touch-action:manipulation;width:min(100%,560px);margin:0 auto;padding-right:3px}.online-col-labels{text-align:center;color:#786a78;grid-template-columns:repeat(15,1fr);margin-left:25px;font-size:9px;display:grid}.online-board-row{display:flex}.online-row-labels{text-align:center;color:#786a78;grid-template-rows:repeat(15,1fr);align-items:center;width:25px;font-size:9px;display:grid}.online-board{aspect-ratio:1;background:#fff8f5;border-radius:13px;grid-template:repeat(15,minmax(0,1fr))/repeat(15,minmax(0,1fr));width:calc(100% - 25px);display:grid;position:relative;box-shadow:inset 0 0 0 1px #eadbd9,0 14px 35px #6653751a}.online-board:before{content:"";pointer-events:none;background-image:linear-gradient(#a9868d 1px,#0000 1px),linear-gradient(90deg,#a9868d 1px,#0000 1px);background-size:7.14286% 7.14286%;border-bottom:1px solid #a9868d;border-right:1px solid #a9868d;position:absolute;inset:3.33333%}.online-intersection{z-index:1;touch-action:manipulation;background:0 0;border:0;border-radius:50%;width:100%;min-width:0;height:100%;min-height:0;padding:0;position:relative}.online-intersection.has-piece{z-index:2}.online-intersection img{object-fit:cover;border:1px solid #fff;border-radius:50%;width:68%;height:68%;position:absolute;inset:16%;box-shadow:0 1px 4px #38283b45}.online-intersection.piece-1 img{outline:1.5px solid #ff719d}.online-intersection.piece-2 img{outline:1.5px solid #6754c7}.online-intersection.latest:after{content:"";z-index:3;background:#ffd24e;border:1px solid #fff;border-radius:50%;width:6px;height:6px;position:absolute;top:10%;right:10%;box-shadow:0 0 0 3px #ffd24e42}.online-intersection:disabled{cursor:default}.online-game-controls{background:#fff9;border:1px solid #e6dff0;border-radius:14px;justify-content:space-between;align-items:center;width:min(100%,560px);margin:15px auto 0;padding:11px 12px;font-size:11px;display:flex}.game-leave-button{color:#cf4774;cursor:pointer;background:#fff;border:1px solid #e9c8d3;border-radius:10px;padding:9px 13px}.game-inline-error{color:#d53e70;text-align:center;margin:10px auto 0;font-size:12px}.game-result-card{text-align:center;background:linear-gradient(145deg,#fff,#fff9fd);border:1px solid #eadfec;border-radius:25px;width:min(100%,410px);padding:30px 24px;box-shadow:0 22px 60px #4e365330}.game-result-card h1{color:#654abd;font-size:24px}.game-result-card.finished h1{color:#e74e80}.result-stars{color:#ef719d;letter-spacing:.25em}.result-avatar{width:140px;height:140px;margin:35px auto 16px;position:relative}.result-avatar img{object-fit:cover;border:4px solid #ff88ab;border-radius:50%;width:100%;height:100%;box-shadow:0 10px 26px #c9517e43}.result-avatar span{z-index:1;color:#ffc747;font-size:48px;position:absolute;top:-38px;left:50%;transform:translate(-50%)}.draw-avatars{justify-content:center;margin:24px 0;display:flex}.draw-avatars img{object-fit:cover;border:3px solid #ff8bad;border-radius:50%;width:90px;height:90px}.draw-avatars img+img{border-color:#816ce0;margin-left:-14px}.result-actions{grid-template-columns:1fr 1fr;gap:10px;margin-top:24px;display:grid}.result-actions .online-primary,.result-actions .online-secondary{min-height:48px}.game-result-card.cancelled .question-mark{color:#87768f;background:#f6f1f7;border-color:#cfbfdf}@media (max-width:430px){.online-game-shell{padding:8px 7px calc(18px + env(safe-area-inset-bottom))}.online-game-header{padding:8px}.online-fighter{gap:5px}.online-fighter img,.game-avatar-placeholder{flex-basis:45px;width:45px;height:45px}.online-fighter b{max-width:68px;font-size:11px}.game-vs{font-size:20px}.game-meta{justify-content:flex-start}.game-turn{max-width:calc(100% - 102px);padding:9px 12px;font-size:11px}.connection-state{right:4px}.online-board-wrap{width:100%}.online-board{border-radius:10px}.online-game-controls{margin-top:10px}.result-actions{grid-template-columns:1fr}.game-result-card{padding:26px 18px}}@media (prefers-reduced-motion:no-preference){.online-intersection.has-piece img{animation:.22s cubic-bezier(.2,1.45,.45,1) both piece-drop}.online-intersection.latest:after{animation:1.15s ease-in-out infinite last-glow}.game-result-card{animation:.25s cubic-bezier(.2,.9,.35,1.1) pop}}.online-sound{flex:none;margin-left:8px;position:static}.oc-image-loading{opacity:0}.oc-image-loaded{opacity:1;transition:opacity .18s}.lobby-avatar,.online-fighter>img,.online-intersection.has-piece,.result-avatar-circle,.draw-avatars img{background:linear-gradient(110deg,#f4edf8 30%,#fff8fc 48%,#eee6f8 66%) 0 0/240% 100%;animation:1.2s ease-in-out infinite imageSkeleton}.online-fighter>img.oc-image-loaded,.online-intersection img.oc-image-loaded,.result-avatar img.oc-image-loaded,.draw-avatars img.oc-image-loaded,.lobby-avatar img.oc-image-loaded{background:0 0;animation:none}.result-avatar{background:0 0;border-radius:50%}.result-avatar-circle{border:4px solid #ff88ab;border-radius:50%;width:100%;height:100%;overflow:hidden;box-shadow:0 10px 26px #c9517e43}.result-avatar-circle img{object-fit:cover;object-position:center;width:100%;height:100%;box-shadow:none;border:0;border-radius:50%;display:block}@keyframes imageSkeleton{0%{background-position:100% 0}to{background-position:-100% 0}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
