:root{color-scheme:light;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:#2d2430;background:#fff7fb;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--pink: #ff6f91;--rose: #ff477e;--mint: #47c2b4;--lemon: #ffd166;--violet: #8e7cff;--blue: #5da9ff;--ink: #2d2430;--muted: #7f6f83;--line: rgba(75, 50, 75, .12);--surface: rgba(255, 255, 255, .82);--shadow: 0 18px 50px rgba(178, 78, 118, .18);--radius: 8px;letter-spacing:0}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;overflow-x:hidden;background:radial-gradient(circle at 12% 14%,rgba(255,209,102,.35),transparent 26%),radial-gradient(circle at 82% 12%,rgba(71,194,180,.24),transparent 24%),linear-gradient(135deg,#fff8fb,#fff4e8 48%,#edf9ff)}button,input,textarea{font:inherit;letter-spacing:0}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.58}h1,h2,p{margin:0}.boot-screen,.auth-screen,.lobby-screen{min-height:100vh;display:grid;place-items:center;padding:24px}.boot-screen{color:var(--rose);font-weight:900;font-size:28px}.app-shell{min-height:100vh;position:relative}.app-logout{position:fixed;top:18px;right:18px;z-index:20}.app-settings{position:fixed;top:18px;right:70px;z-index:20}.auth-panel,.lobby-panel{width:min(100%,430px);border:1px solid rgba(255,255,255,.72);background:var(--surface);box-shadow:var(--shadow);border-radius:var(--radius);padding:28px;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.lobby-panel{width:min(100%,560px)}.brand-lockup{display:flex;align-items:center;gap:16px;margin-bottom:22px}.brand-dice{width:74px;height:74px;filter:drop-shadow(0 14px 22px rgba(255,111,145,.22));animation:floaty 4.8s ease-in-out infinite}.eyebrow{color:var(--rose);font-size:12px;font-weight:800;text-transform:uppercase}.auth-panel h1,.lobby-panel h1,.game-topbar h1{font-size:30px;line-height:1.08;color:var(--ink)}.segmented-control{display:grid;grid-template-columns:1fr 1fr;gap:6px;border:1px solid var(--line);border-radius:var(--radius);padding:5px;background:#ffffff9e;margin-bottom:20px}.segmented-control button{min-height:42px;border:0;border-radius:6px;background:transparent;color:var(--muted);font-weight:800}.segmented-control button.active{color:#fff;background:linear-gradient(135deg,var(--pink),var(--violet));box-shadow:0 10px 24px #ff6f9147}.gender-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.gender-options button{min-height:44px;border:1px solid var(--line);border-radius:var(--radius);display:inline-flex;align-items:center;justify-content:center;gap:6px;color:var(--muted);background:#ffffffb8;font-weight:900}.gender-options button.active{color:#fff;background:linear-gradient(135deg,var(--rose),var(--violet));box-shadow:0 10px 24px #ff6f9138}.birthdate-grid{display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:8px}.birthdate-grid .input-wrap{min-width:0;padding:0 10px}.auth-form,.lobby-actions{display:grid;gap:14px}label{display:grid;gap:8px;color:var(--muted);font-size:13px;font-weight:700}.input-wrap{min-height:48px;display:flex;align-items:center;gap:10px;border:1px solid var(--line);background:#ffffffdb;border-radius:var(--radius);padding:0 14px;color:var(--rose)}.input-wrap input,.input-wrap select,.chat-form input,.dare-panel textarea{width:100%;border:0;outline:0;background:transparent;color:var(--ink)}.input-wrap select{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-height:42px;font:inherit;font-weight:800}.primary-button,.secondary-button,.ghost-button,.option-button,.icon-button,.dice-button,.dare-options button,.history-list button{border:0;transition:transform .18s ease,box-shadow .18s ease,background .18s ease}.primary-button,.secondary-button,.ghost-button{min-height:48px;border-radius:var(--radius);display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:900}.primary-button{color:#fff;background:linear-gradient(135deg,var(--rose),var(--violet));box-shadow:0 14px 28px #ff477e42}.secondary-button{color:var(--ink);background:#fff;border:1px solid var(--line)}.ghost-button{color:var(--rose);background:#ff6f911a}.primary-button:not(:disabled):hover,.secondary-button:not(:disabled):hover,.ghost-button:not(:disabled):hover,.icon-button:not(:disabled):hover,.option-button:not(:disabled):hover,.dice-button:not(:disabled):hover,.dare-options button:not(:disabled):hover{transform:translateY(-2px)}.icon-button{width:42px;height:42px;display:inline-grid;place-items:center;border-radius:var(--radius);color:var(--ink);background:#ffffffdb;border:1px solid rgba(255,255,255,.7);box-shadow:0 10px 24px #6f506f1a}.join-form{display:grid;grid-template-columns:1fr auto;gap:10px}.template-select-panel{position:relative;display:grid;gap:8px}.template-select-button{width:100%;min-height:74px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;text-align:left;color:var(--ink);background:#ffffffdb;box-shadow:0 10px 24px #6f506f14}.template-select-button span{min-width:0;display:grid;gap:4px}.template-select-button strong{overflow:hidden;font-size:20px;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.template-select-button svg{transition:transform .18s ease}.template-select-button.open svg{transform:rotate(180deg)}.template-menu{display:grid;gap:8px;border:1px solid var(--line);border-radius:var(--radius);padding:8px;background:#fffffff0;box-shadow:0 16px 34px #6f506f24}.template-menu button{min-height:48px;display:flex;align-items:center;border:1px solid var(--line);border-radius:6px;padding:10px;text-align:left;color:var(--ink);background:#ffffffc7}.template-menu button.active{border-color:#ff477e66;background:#ffeef6f5}.template-menu strong{font-size:14px;font-weight:950}.template-panel{display:grid;gap:12px;padding:14px;border:1px solid var(--line);border-radius:var(--radius);background:#ffffffad}.template-title{display:inline-flex;align-items:center;gap:8px;color:var(--ink);font-weight:950}.template-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.template-list button{min-height:76px;display:grid;gap:5px;border:1px solid var(--line);border-radius:var(--radius);padding:10px;text-align:left;color:var(--ink);background:#ffffffdb}.template-list button.active{border-color:#ff477e6b;background:#ffeef6f5;box-shadow:0 10px 24px #ff477e1f}.template-list strong{font-size:14px;font-weight:950}.template-list span,.template-note{color:var(--muted);font-size:12px;font-weight:750;line-height:1.45}.custom-template-editor{display:grid;gap:12px}.cell-picker{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.cell-picker button{min-height:32px;border:1px solid var(--line);border-radius:6px;color:var(--muted);background:#fff;font-size:12px;font-weight:900}.cell-picker button.active{color:#fff;background:linear-gradient(135deg,var(--rose),var(--violet));border-color:transparent}.custom-question-form{display:grid;gap:10px}.custom-question-form textarea,.text-answer-form textarea{width:100%;min-height:86px;resize:vertical;border:1px solid var(--line);border-radius:var(--radius);padding:12px;outline:0;color:var(--ink);background:#ffffffe6}.custom-question-form select{width:100%;min-height:44px;border:1px solid var(--line);border-radius:var(--radius);padding:0 12px;color:var(--ink);background:#ffffffe6;font-weight:850}.custom-options,.text-answer-form{display:grid;gap:8px}.custom-option-row{display:grid;grid-template-columns:minmax(0,1fr) 42px;gap:8px}.custom-option-row input{min-height:42px;border:1px solid var(--line);border-radius:var(--radius);padding:0 12px;outline:0;color:var(--ink);background:#ffffffe6}.history-panel{display:grid;gap:10px;margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}.history-title{display:inline-flex;align-items:center;gap:8px;color:var(--ink);font-weight:900}.history-empty{min-height:46px;display:grid;place-items:center;color:var(--muted);border-radius:var(--radius);background:#ffffff94;border:1px solid var(--line);font-weight:800}.history-list{display:grid;gap:8px;max-height:260px;overflow:auto;padding-right:2px}.history-card{display:grid;grid-template-columns:minmax(0,1fr) 44px;gap:8px;align-items:stretch}.history-open-button,.history-delete-button{border:1px solid var(--line);border-radius:var(--radius);color:var(--ink);background:#ffffffd1}.history-open-button{min-height:62px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 12px;text-align:left}.history-delete-button{width:44px;display:grid;place-items:center;color:#9f1239}.history-open-button:not(:disabled):hover,.history-delete-button:not(:disabled):hover{transform:translateY(-2px);box-shadow:0 12px 24px #6f506f1a}.history-list span{min-width:0;display:grid;gap:4px}.history-list strong{font-size:14px;font-weight:950}.history-list em{overflow:hidden;color:var(--muted);font-size:12px;font-style:normal;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.history-list .history-players{display:flex;align-items:center;gap:8px;min-width:0}.history-list .history-player{display:inline-flex;align-items:center;gap:4px;min-width:0}.history-player i{width:7px;height:7px;flex:0 0 auto;border-radius:999px;background:#7f6f8357}.history-player i.online{background:var(--mint);box-shadow:0 0 0 3px #47c2b42e}.form-error,.toast-line{padding:12px 14px;border-radius:var(--radius);color:#9f1239;background:#ff6f911f;font-weight:700}.settings-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:grid;place-items:center;padding:18px;background:#2d243047}.settings-dialog{position:relative;width:min(100%,760px);max-height:calc(100vh - 36px);overflow:auto;display:grid;gap:18px;border:1px solid rgba(255,255,255,.82);border-radius:var(--radius);padding:24px;background:#fffffff5;box-shadow:0 24px 70px #2d243038}.settings-close{position:absolute;top:12px;right:12px}.settings-back{position:absolute;top:12px;left:12px}.settings-title{display:flex;align-items:center;gap:12px;padding:0 48px}.settings-title h2{font-size:22px}.settings-form{display:grid;gap:12px}.settings-menu{display:grid;gap:10px}.settings-menu button{min-height:54px;border:1px solid var(--line);border-radius:var(--radius);padding:0 16px;text-align:left;color:var(--ink);background:#ffffffdb;font-weight:950}.template-name-field{margin-bottom:-2px}.custom-template-actions{display:flex;align-items:center;gap:12px}.custom-template-actions .primary-button{min-width:132px}.save-status{color:#25604d;font-size:13px;font-weight:900}.settings-ok{border:1px solid rgba(71,194,180,.28);border-radius:var(--radius);padding:14px;color:#25604d;background:#c7f2dea8;font-weight:850;line-height:1.5}.settings-custom-ready{display:flex;align-items:center;justify-content:space-between;gap:12px}.settings-custom-ready span{min-width:0}.game-screen{min-height:100vh;padding:18px clamp(14px,4vw,32px) 88px}.game-topbar{width:min(1180px,100%);margin:0 auto 12px;display:flex;align-items:center;justify-content:space-between;gap:16px}.room-code-line{display:inline-flex;align-items:center;gap:7px}.room-copy-button{width:28px;height:28px;box-shadow:none}.room-copy-feedback{min-height:26px;display:inline-flex;align-items:center;border-radius:999px;padding:0 10px;font-size:12px;font-weight:900;color:#25604d;background:#c7f2ded1;border:1px solid rgba(93,200,155,.38);animation:copy-feedback-in .18s ease-out}.room-copy-feedback.error{color:#9b3d48;background:#ffdadfe6;border-color:#ee76845c}.toast-line{width:min(1180px,100%);margin:0 auto 12px}.game-layout{width:min(1180px,100%);margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:16px;align-items:start}.play-zone{display:grid;gap:14px}.board-wrap{border-radius:18px;padding:clamp(14px,2.4vw,20px);background:#ffffffc7;border:1px solid rgba(255,255,255,.86);box-shadow:0 18px 44px #6156741f;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.board-question-wrap{min-height:min(760px,calc(100vw - 28px));display:grid;place-items:stretch}.board-grid{width:min(100%,360px);aspect-ratio:7 / 10;margin:0 auto;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-template-rows:repeat(10,minmax(0,1fr));gap:8px;position:relative;contain:layout style;isolation:isolate}.board-cell,.prompt-panel,.chat-panel,.player-chip{border:1px solid rgba(255,255,255,.72);background:#ffffffd1;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.board-cell{--cell-bg: linear-gradient(180deg, #f9f7ff 0%, #ded6ff 100%);--cell-line: rgba(142, 124, 255, .3);--cell-depth: #b8a9f4;--cell-text: rgba(65, 56, 94, .68);min-width:0;min-height:0;border-radius:10px;padding:0;display:grid;place-items:center;background:var(--cell-bg);border-color:var(--cell-line);box-shadow:inset 0 1px #ffffffeb,inset 0 -1px #574a8214,0 4px 0 var(--cell-depth),0 12px 18px #483e6e29;position:relative;overflow:hidden;backface-visibility:hidden;contain:layout style;transform:translateZ(0);transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.board-cell:before{content:"";position:absolute;top:1px;right:1px;bottom:42%;left:1px;border-radius:inherit;background:linear-gradient(180deg,#ffffff9e,#ffffff14);pointer-events:none}.board-cell:after{content:none}.cell-tone-0{--cell-bg: linear-gradient(180deg, #faf7ff 0%, #d9ccff 100%);--cell-line: rgba(152, 120, 255, .32);--cell-depth: #b49df0;--cell-text: rgba(88, 67, 133, .72)}.cell-tone-1{--cell-bg: linear-gradient(180deg, #f5fbff 0%, #cfe2ff 100%);--cell-line: rgba(108, 163, 255, .3);--cell-depth: #9fbdf0;--cell-text: rgba(62, 93, 141, .72)}.cell-tone-2{--cell-bg: linear-gradient(180deg, #fff7fb 0%, #ffd0e2 100%);--cell-line: rgba(255, 126, 166, .3);--cell-depth: #efa1c0;--cell-text: rgba(136, 68, 94, .72)}.cell-tone-3{--cell-bg: linear-gradient(180deg, #f4fffb 0%, #ccefe6 100%);--cell-line: rgba(77, 190, 169, .28);--cell-depth: #9bd6cc;--cell-text: rgba(48, 112, 104, .72)}.cell-tone-4{--cell-bg: linear-gradient(180deg, #fffaf0 0%, #ffe0a8 100%);--cell-line: rgba(240, 181, 70, .28);--cell-depth: #e3bd70;--cell-text: rgba(124, 89, 36, .72)}.cell-tone-5{--cell-bg: linear-gradient(180deg, #f8fbff 0%, #d7defa 100%);--cell-line: rgba(134, 146, 218, .28);--cell-depth: #aeb8e4;--cell-text: rgba(78, 83, 126, .72)}.board-cell.active{border-color:#ff477e5c;overflow:visible;box-shadow:inset 0 1px #ffffffe6,inset 0 -1px #574a8214,0 0 0 3px #ff477e1a,0 5px color-mix(in srgb,var(--cell-depth),#ff477e 18%),0 16px 28px #ff477e2e;transform:translate3d(0,-3px,0);animation:pulseCell 1.4s ease-in-out infinite}.cell-number{position:relative;z-index:2;justify-self:center;min-width:0;height:auto;display:inline-grid;place-items:center;border-radius:0;font-size:clamp(11px,1.55vw,15px);font-weight:900;color:var(--cell-text);background:transparent}.finish-cell{--cell-bg: linear-gradient(180deg, #ffffff 0%, #f1e9ff 100%);--cell-line: rgba(142, 124, 255, .42);--cell-depth: #b6a4ef}.start-cell{--cell-bg: linear-gradient(180deg, #f7fbff 0%, #d6e8ff 100%);--cell-line: rgba(107, 166, 255, .34);--cell-depth: #9ebfee}.start-cell-label{color:#4f76b8;font-size:clamp(10px,1.35vw,13px)}.finish-cell-label{color:var(--violet);font-size:clamp(10px,1.35vw,13px)}.cell-node{display:none}.cell-tokens{position:absolute;z-index:2;left:50%;bottom:3px;transform:translate(-50%);display:flex;align-items:center;justify-content:center;gap:2px;min-height:0}.player-token{width:20px;height:20px;display:inline-grid;place-items:center;border-radius:999px;color:#fff;font-size:12px;font-weight:900;background:var(--player-color);border:2px solid rgba(255,255,255,.9);box-shadow:0 7px 12px color-mix(in srgb,var(--player-color),transparent 58%),0 2px #15142229;backface-visibility:hidden;contain:layout style paint;will-change:transform}.player-token.moving{animation:tokenHop .3s cubic-bezier(.18,1.35,.34,1)}.board-center{grid-column:4;grid-row:4;position:relative;z-index:5;min-width:0;min-height:0;border:1px solid rgba(142,124,255,.18);border-radius:14px;display:grid;place-items:center;padding:5px;background:#fff;box-shadow:inset 0 1px #ffffffeb,0 10px 24px #544c701a;overflow:hidden}.board-center.active{border-color:#ff477e52;box-shadow:inset 0 1px #ffffffeb,0 0 0 3px #ff477e1a,0 14px 28px #ff477e24}.finish-label{position:absolute;top:5px;left:50%;z-index:3;transform:translate(-50%);display:inline-flex;align-items:center;gap:2px;color:var(--violet);font-size:10px;font-weight:950;white-space:nowrap}.board-center>.gate-tokens{position:absolute;left:50%;bottom:4px;z-index:4;transform:translate(-50%);justify-content:center}.board-status-row{width:min(100%,360px);margin:12px auto 0;display:grid;justify-items:center;gap:8px;min-height:94px;border-radius:16px;padding:10px 12px 12px;color:var(--ink);border:1px solid rgba(112,101,143,.1);font-weight:900;background:#ffffffb8}.board-status-text{min-width:0;display:grid;gap:3px;text-align:center}.board-status-text span{color:var(--muted);font-size:12px}.board-status-text strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}.gate-tokens{min-width:22px;min-height:22px;display:inline-flex;align-items:center;justify-content:flex-end;gap:3px}.gate-tokens .player-token{width:20px;height:20px}.dice-button{--dice-depth: #c83f76;width:66px;height:66px;flex:0 0 auto;order:-1;border-radius:18px;display:grid;place-items:center;align-content:center;color:#fff;background:linear-gradient(180deg,rgba(255,255,255,.24),transparent 46%),linear-gradient(135deg,var(--rose),var(--violet));box-shadow:inset 0 1px #fff6,inset 0 -1px #50286e29,0 6px 0 var(--dice-depth),0 18px 30px #ff477e47;font-weight:950;font-size:12px;transform:translateY(-2px);transform-origin:50% 58%;backface-visibility:hidden;will-change:transform}.dice-button svg{width:26px;height:26px;filter:drop-shadow(0 2px 0 rgba(80,40,110,.18))}.dice-button:not(:disabled):hover{transform:translateY(-4px);box-shadow:inset 0 1px #ffffff75,inset 0 -1px #50286e29,0 8px 0 var(--dice-depth),0 22px 34px #ff477e52}.dice-button:not(:disabled):active{transform:translateY(2px);box-shadow:inset 0 1px #ffffff5c,inset 0 -1px #50286e2e,0 2px 0 var(--dice-depth),0 10px 20px #ff477e38}.dice-button.my-turn:not(.rolling){animation:diceReady 1.6s ease-in-out infinite}.dice-button:disabled{color:#ffffffc7;background:linear-gradient(180deg,rgba(255,255,255,.22),transparent 48%),linear-gradient(135deg,#d5d0df,#bfb7ce);box-shadow:inset 0 1px #ffffff61,0 5px #a9a1b8,0 14px 22px #4f455e1f;transform:translateY(-1px)}.dice-button.rolled:not(.rolling){animation:dicePop .7s ease}.dice-button.rolling{color:#fff;background:linear-gradient(180deg,rgba(255,255,255,.24),transparent 46%),linear-gradient(135deg,var(--rose),var(--violet));box-shadow:inset 0 1px #ffffff6b,inset 0 -1px #50286e29,0 7px 0 var(--dice-depth),0 22px 36px #ff477e57;opacity:1;animation:diceSpin .82s cubic-bezier(.2,.88,.16,1) both}.action-zone{display:grid;gap:14px}.prompt-panel{min-height:188px;border-radius:var(--radius);padding:18px;box-shadow:0 14px 34px #6f506f1a}.board-question-panel{min-height:100%;display:grid;align-items:center;padding:clamp(18px,4vw,42px);background:linear-gradient(135deg,#ffffffeb,#fff3f9e0),radial-gradient(circle at 18% 20%,rgba(255,209,102,.24),transparent 28%),radial-gradient(circle at 82% 78%,rgba(71,194,180,.18),transparent 28%)}.idle-prompt{display:flex;align-items:center;gap:14px;color:var(--rose)}.prompt-panel h2{margin-top:5px;font-size:22px;line-height:1.35}.card-flip{animation:cardIn .46s cubic-bezier(.2,.88,.3,1)}.option-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:16px 0 12px}.option-button{min-height:48px;border-radius:var(--radius);padding:10px 12px;color:var(--ink);font-weight:900;background:#fff6faf5;border:1px solid var(--line)}.option-button:nth-child(2n){background:#fff6faf5}.answer-option{display:flex;align-items:center;justify-content:space-between;gap:10px}.answer-option.selected{color:#7a1234;background:#ffdce9fa;border-color:#ff477e73;box-shadow:0 12px 26px #ff477e2e}.answer-option strong{flex:0 0 auto;min-height:26px;display:inline-flex;align-items:center;border-radius:999px;padding:0 10px;color:#fff;background:var(--rose);font-size:12px}.hidden{display:none!important}.text-answer-reveal{margin:16px 0 12px;min-height:82px;display:grid;align-items:center;border:1px solid rgba(255,71,126,.26);border-radius:var(--radius);padding:16px;color:#7a1234;background:#ffeef6f5;box-shadow:0 12px 26px #ff477e1f;font-size:18px;font-weight:900;line-height:1.45;white-space:pre-wrap}.answer-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--muted);font-weight:800}.answer-status{display:grid;gap:4px}.answer-countdown{color:var(--rose-dark);font-size:14px}.compact-button{min-height:40px;padding:0 14px}.reaction-bar{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin-top:16px}.reaction-bar button{min-height:52px;border:1px solid var(--line);border-radius:var(--radius);display:grid;place-items:center;gap:2px;color:var(--ink);background:#ffffffb8;font-weight:900}.reaction-bar button span{font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-size:25px;line-height:1}.reaction-bar button em{font-style:normal;font-size:11px;color:var(--muted)}.reaction-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:45;pointer-events:none;display:grid;place-items:center;gap:10px;align-content:center}.floating-reaction{min-width:min(320px,calc(100vw - 42px));min-height:84px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;gap:12px;color:var(--ink);background:#ffffffe6;border:1px solid rgba(255,255,255,.82);box-shadow:0 20px 50px #b24e7638;animation:reactionFloat 2.6s ease forwards}.floating-reaction strong{width:54px;height:54px;display:grid;place-items:center;border-radius:999px;background:#ffecf4d1;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-size:34px;line-height:1}.floating-reaction span{font-weight:900}.dare-panel,.dare-card-content{display:grid;gap:13px}.dare-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;max-height:220px;overflow:auto;padding-right:2px}.dare-options button{min-height:58px;border-radius:var(--radius);padding:10px;display:flex;align-items:center;gap:8px;text-align:left;color:var(--ink);font-weight:800;background:#ffffffe6;border:1px solid var(--line)}.dare-options button.selected{color:#7a1234;background:#ffeaf2f2;border-color:#ff477e52}.dare-panel textarea{min-height:84px;resize:vertical;border:1px solid var(--line);border-radius:var(--radius);padding:12px;background:#ffffffe6}.confirm-list{display:flex;flex-wrap:wrap;gap:10px}.confirm-list span{min-height:34px;display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:0 12px;color:var(--muted);background:#ffffffe6;border:1px solid var(--line);font-weight:900}.confirm-list span.done{color:#0f766e;background:#47c2b429}.active-dare{background:linear-gradient(135deg,#ffffffe6,#fff1f7db),linear-gradient(135deg,#ffd16638,#8e7cff2e);animation:dareGlow 1.8s ease-in-out infinite}.chat-panel{height:calc(100vh - 110px);min-height:520px;border-radius:var(--radius);display:grid;grid-template-rows:auto 1fr auto;overflow:hidden;box-shadow:var(--shadow)}.chat-header{min-height:70px;display:flex;align-items:center;justify-content:space-between;padding:14px;border-bottom:1px solid var(--line)}.chat-header h2{font-size:20px}.chat-stream{overflow:auto;padding:14px;display:flex;flex-direction:column;gap:10px}.chat-bubble{max-width:86%;align-self:flex-start;border-radius:var(--radius);padding:9px 11px;background:#ffffffeb;border:1px solid var(--line);animation:bubbleIn .22s ease}.chat-bubble.mine{align-self:flex-end;color:#fff;background:linear-gradient(135deg,var(--rose),var(--violet));border-color:transparent}.chat-bubble p{line-height:1.4;overflow-wrap:anywhere}.chat-composer{position:relative;padding:12px;border-top:1px solid var(--line);background:#ffffffb8}.chat-form{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:9px}.chat-form input{min-height:42px;border-radius:var(--radius);padding:0 12px;border:1px solid var(--line);background:#fff}.emoji-toggle,.image-button{color:var(--muted);background:#fff;border:1px solid var(--line)}.image-button:disabled{opacity:.58;cursor:wait}.emoji-toggle.active{color:#fff;border-color:transparent;background:linear-gradient(135deg,var(--rose),var(--violet))}.emoji-picker{position:absolute;left:12px;right:12px;bottom:calc(100% + 8px);z-index:4;display:grid;grid-template-columns:repeat(auto-fit,minmax(38px,1fr));gap:7px;max-height:min(292px,45vh);overflow-y:auto;overscroll-behavior:contain;padding:10px;border:1px solid rgba(255,111,166,.22);border-radius:18px;background:#fffffff5;box-shadow:0 18px 44px #45305229;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);animation:bubbleIn .18s ease}.emoji-option{min-width:0;height:38px;border:1px solid transparent;border-radius:12px;background:#fff2f8d1;font-size:21px;line-height:1;box-shadow:inset 0 -1px #ffffffb8}.emoji-option:hover{border-color:#ff477e4d;background:#fff;transform:translateY(-1px)}.chat-file-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.chat-form-error{margin:0 0 8px;color:#ad1745;font-size:12px;font-weight:850}.chat-bubble.image-message{max-width:min(76%,260px);padding:4px}.chat-image-thumb{display:block;width:100%;overflow:hidden;border:0;border-radius:calc(var(--radius) - 4px);padding:0;background:transparent}.chat-image-thumb img{display:block;width:100%;max-height:230px;object-fit:cover}.chat-image-viewer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:grid;place-items:center;border:0;padding:22px;background:#19141cb8;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.chat-image-viewer img{max-width:min(92vw,820px);max-height:86vh;border-radius:18px;box-shadow:0 26px 70px #00000052}.send-button{color:#fff;background:var(--rose)}.chat-fab{display:none}.player-strip{position:fixed;left:50%;bottom:14px;z-index:30;width:min(620px,calc(100% - 28px));transform:translate(-50%);display:flex;justify-content:center;gap:10px;pointer-events:none}.player-chip{min-width:156px;min-height:54px;border-radius:999px;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:9px;padding:7px 13px 7px 7px;border:1px solid rgba(255,255,255,.76);color:var(--ink);background:#ffffffe0;box-shadow:0 12px 28px #6f506f2e;cursor:pointer;pointer-events:auto;text-align:left}.player-chip.active{box-shadow:0 0 0 4px #ffffffb8,0 14px 32px #6f506f38;transform:translateY(-2px)}.player-chip-avatar{width:40px;height:40px;border-radius:999px;border:3px solid rgba(255,255,255,.92);background:var(--player-color);box-shadow:0 8px 16px color-mix(in srgb,var(--player-color),transparent 58%)}.player-chip-avatar.online{box-shadow:0 0 0 3px #45de80b8,0 0 18px #22c55ea8,0 8px 16px color-mix(in srgb,var(--player-color),transparent 58%)}.player-chip-text{min-width:0;display:grid;gap:2px}.player-chip-text strong,.player-chip-text em{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-chip-text strong{font-size:14px;font-weight:950}.player-chip-text em{color:var(--muted);font-size:12px;font-style:normal;font-weight:850}.profile-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:24;border:0;background:transparent}.player-profile-popover{position:absolute;left:50%;bottom:74px;width:min(340px,calc(100vw - 36px));transform:translate(-50%);overflow:hidden;border:1px solid rgba(255,255,255,.82);border-radius:22px;padding:0;background:#fffffff5;box-shadow:0 18px 42px #6f506f2e;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);pointer-events:auto;animation:profile-popover-in .16s ease-out}.profile-card-top{min-height:116px;display:flex;align-items:flex-end;gap:13px;padding:22px 18px 16px;color:#fff;background:linear-gradient(135deg,color-mix(in srgb,var(--player-color),white 12%),color-mix(in srgb,var(--player-color),#8e7cff 22%)),radial-gradient(circle at 18% 12%,rgba(255,255,255,.42),transparent 30%)}.profile-avatar-large{width:62px;height:62px;flex:0 0 auto;border-radius:999px;border:4px solid rgba(255,255,255,.9);background:var(--player-color);box-shadow:0 14px 26px #4631502e}.profile-card-top div{min-width:0;display:grid;gap:4px}.profile-card-top strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:19px;font-weight:950}.profile-card-top em{color:#ffffffdb;font-size:12px;font-style:normal;font-weight:850}.profile-info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;padding:14px}.profile-info-grid div{min-width:0;border:1px solid var(--line);border-radius:12px;padding:10px;background:#fffafdb8}.profile-info-grid dt{margin-bottom:4px;color:var(--muted);font-size:12px;font-weight:900}.profile-info-grid dd{margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-size:13px;font-weight:900}.mobile-only{display:none}@keyframes floaty{0%,to{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-8px) rotate(3deg)}}@keyframes tokenHop{0%{transform:translateZ(0) scale(1)}45%{transform:translate3d(0,-14px,0) scale(1.08)}to{transform:translateZ(0) scale(1)}}@keyframes dicePop{0%{transform:rotate(0) scale(1)}40%{transform:rotate(12deg) scale(1.08)}70%{transform:rotate(-8deg) scale(.98)}to{transform:rotate(0) scale(1)}}@keyframes diceSpin{0%{transform:translate3d(0,-2px,0) rotate(0) scale(1);box-shadow:inset 0 1px #ffffff6b,inset 0 -1px #50286e29,0 6px 0 var(--dice-depth),0 18px 30px #ff477e47}18%{transform:translate3d(0,-10px,0) rotate(92deg) scale(1.07);box-shadow:inset 0 1px #ffffff80,inset 0 -1px #50286e24,0 12px 0 var(--dice-depth),0 30px 44px #ff477e5c}42%{transform:translate3d(0,-4px,0) rotate(205deg) scale(.98);box-shadow:inset 0 1px #ffffff70,inset 0 -1px #50286e29,0 5px 0 var(--dice-depth),0 18px 30px #ff477e4d}68%{transform:translate3d(0,-12px,0) rotate(318deg) scale(1.08);box-shadow:inset 0 1px #ffffff85,inset 0 -1px #50286e24,0 13px 0 var(--dice-depth),0 32px 46px #ff477e61}to{transform:translate3d(0,-2px,0) rotate(360deg) scale(1);box-shadow:inset 0 1px #ffffff6b,inset 0 -1px #50286e29,0 6px 0 var(--dice-depth),0 18px 30px #ff477e47}}@keyframes diceReady{0%,to{transform:translateY(-2px) scale(1);box-shadow:inset 0 1px #fff6,inset 0 -1px #50286e29,0 6px 0 var(--dice-depth),0 18px 30px #ff477e47}50%{transform:translateY(-6px) scale(1.03);box-shadow:inset 0 1px #ffffff7a,inset 0 -1px #50286e29,0 9px 0 var(--dice-depth),0 26px 40px #ff477e57}}@keyframes diceReadyMobile{0%,to{transform:translate3d(0,-2px,0) scale(1)}50%{transform:translate3d(0,-6px,0) scale(1.03)}}@keyframes diceSpinMobile{0%{transform:translate3d(0,-2px,0) rotate(0) scale(1)}18%{transform:translate3d(0,-9px,0) rotate(92deg) scale(1.06)}42%{transform:translate3d(0,-4px,0) rotate(205deg) scale(.98)}68%{transform:translate3d(0,-10px,0) rotate(318deg) scale(1.06)}to{transform:translate3d(0,-2px,0) rotate(360deg) scale(1)}}@keyframes pulseCell{0%,to{transform:translateY(-1px);box-shadow:inset 0 1px #ffffffe6,inset 0 -1px #574a8214,0 0 0 3px #ff477e1a,0 4px color-mix(in srgb,var(--cell-depth),#ff477e 18%),0 14px 24px #ff477e29}50%{transform:translateY(-4px);box-shadow:inset 0 1px #fffffff5,inset 0 -1px #574a8214,0 0 0 4px #ff477e29,0 6px color-mix(in srgb,var(--cell-depth),#ff477e 24%),0 18px 30px #ff477e33}}@keyframes pulseCellMobile{0%,to{transform:translate3d(0,-2px,0)}50%{transform:translate3d(0,-5px,0)}}@keyframes cardIn{0%{transform:translateY(8px) rotateX(8deg);opacity:0}to{transform:translateY(0) rotateX(0);opacity:1}}@keyframes copy-feedback-in{0%{opacity:0;transform:translateY(-4px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes profile-popover-in{0%{opacity:0;transform:translate(-50%) translateY(8px) scale(.98)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}@keyframes bubbleIn{0%{transform:translateY(5px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes dareGlow{0%,to{box-shadow:0 14px 34px #ff6f9129}50%{box-shadow:0 18px 44px #8e7cff3d}}@keyframes reactionFloat{0%{transform:translateY(18px) scale(.92);opacity:0}14%,78%{transform:translateY(0) scale(1);opacity:1}to{transform:translateY(-26px) scale(.98);opacity:0}}@media (max-width: 980px){.game-layout{grid-template-columns:1fr}.chat-panel{position:fixed;left:0;right:0;bottom:0;z-index:30;height:min(72vh,620px);min-height:360px;border-radius:18px 18px 0 0;transform:translateY(104%);transition:transform .24s ease;contain:layout style paint;content-visibility:hidden;pointer-events:none;visibility:hidden}.chat-panel.open{z-index:42;transform:translateY(0);content-visibility:visible;pointer-events:auto;visibility:visible}.chat-fab{position:fixed;right:18px;bottom:82px;z-index:22;width:54px;height:54px;display:grid;place-items:center;border:0;border-radius:999px;color:#fff;background:linear-gradient(135deg,var(--rose),var(--violet));box-shadow:0 16px 30px #ff477e47}.chat-fab span{position:absolute;top:8px;right:9px;width:10px;height:10px;border-radius:999px;background:var(--lemon)}.mobile-only{display:inline-grid}}@media (max-width: 640px){.auth-screen,.lobby-screen{padding:16px}.auth-panel,.lobby-panel{padding:20px}.template-list{grid-template-columns:1fr}.settings-dialog{padding:18px}.settings-custom-ready,.custom-template-actions{align-items:stretch;flex-direction:column}.cell-picker{grid-template-columns:repeat(6,minmax(0,1fr))}.auth-panel h1,.lobby-panel h1,.game-topbar h1{font-size:25px}.game-screen{padding:12px 10px 116px}.game-topbar{align-items:flex-start}.board-wrap{padding:10px;border-radius:16px;background:#fffffff0;box-shadow:0 8px 20px #6156741a}.auth-panel,.lobby-panel,.board-wrap,.board-cell,.prompt-panel,.chat-panel,.player-chip,.player-profile-popover{backdrop-filter:none;-webkit-backdrop-filter:none}.board-grid{width:min(100%,330px);gap:6px}.board-cell{border-radius:9px;box-shadow:inset 0 1px #ffffffdb,inset 0 -1px #574a8214,0 2px 0 var(--cell-depth),0 5px 8px #483e6e1f;transition:transform .16s ease,border-color .16s ease}.board-cell.active{box-shadow:inset 0 1px #ffffffeb,inset 0 -1px #574a8214,0 0 0 3px #ff477e1f,0 3px color-mix(in srgb,var(--cell-depth),#ff477e 18%),0 8px 12px #ff477e29;transform:translate3d(0,-3px,0);animation-name:pulseCellMobile}.board-cell:before{top:1px;right:1px;bottom:44%;left:1px;background:linear-gradient(180deg,rgba(255,255,255,.52),transparent 70%)}.board-cell:after{content:none}.cell-number{min-width:0;height:auto;font-size:11px}.cell-node{width:12px;height:12px;border-width:4px}.cell-tokens{bottom:2px;min-height:0;gap:2px}.player-token{width:16px;height:16px;font-size:10px;border-width:2px;box-shadow:0 3px 6px color-mix(in srgb,var(--player-color),transparent 66%),0 1px #15142224}.board-center{border-radius:9px;padding:3px;box-shadow:inset 0 1px #ffffffd1,0 6px 14px #544c7017}.finish-label{top:3px;font-size:8px}.finish-label svg{display:none}.gate-tokens{min-width:18px;min-height:18px;gap:2px}.gate-tokens .player-token{width:14px;height:14px}.dice-button{width:62px;height:62px;border-radius:17px;font-size:11px;box-shadow:inset 0 1px #ffffff61,inset 0 -1px #50286e24,0 5px 0 var(--dice-depth),0 12px 18px #ff477e33}.dice-button.my-turn:not(.rolling){animation-name:diceReadyMobile}.dice-button.rolling{box-shadow:inset 0 1px #fff6,inset 0 -1px #50286e24,0 5px 0 var(--dice-depth),0 14px 20px #ff477e38;animation-name:diceSpinMobile}.dice-button svg{width:24px;height:24px;filter:none}.board-status-row{min-height:96px;margin-top:9px;padding:10px;border-radius:14px;font-size:11px;background:#ffffffdb}.prompt-panel{padding:14px;box-shadow:0 8px 18px #6f506f14}.prompt-panel h2{font-size:19px}.option-grid,.dare-options,.reaction-bar{grid-template-columns:1fr}.reaction-bar{grid-template-columns:repeat(3,minmax(0,1fr))}.answer-option.selected{box-shadow:0 6px 14px #ff477e1f}.chat-panel{background:#fffffff5;box-shadow:0 -8px 22px #6f506f24}.chat-fab{box-shadow:0 8px 18px #ff477e38}.floating-reaction{box-shadow:0 10px 26px #b24e7629}.answer-footer{align-items:stretch;flex-direction:column}.player-strip{width:min(360px,calc(100% - 28px));bottom:10px;align-items:center;gap:8px}.player-chip{min-width:0;flex:1;min-height:48px;padding:6px 9px 6px 6px;gap:7px;background:#fffffff0;box-shadow:0 6px 14px #6f506f24}.player-chip-avatar{width:34px;height:34px;border-width:3px}.player-chip-text strong{font-size:12px}.player-chip-text em{font-size:11px}.player-profile-popover{bottom:66px;background:#fffffffa;box-shadow:0 12px 28px #6f506f29}.profile-info-grid{grid-template-columns:1fr 1fr;gap:8px;padding:12px}.profile-card-top{min-height:104px;padding:18px 16px 14px}.profile-avatar-large{width:56px;height:56px}.join-form{grid-template-columns:1fr}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:1ms!important}}
