:root{--color-primary: #e63e70;--color-primary-dark: #c22a58;--color-primary-light: #ff9dbb;--color-accent: #4c6ef5;--color-accent-dark: #3a56d4;--color-accent-light: #9db1ff;--color-love: #ff4d6d;--color-gold: #ffb020;--color-success: #22b573;--color-danger: #ff5c7a;--color-warning: #ffb020;--color-bg: #fff7fa;--color-surface: #ffffff;--color-text: #2b2138;--color-text-muted: #8b7490;--color-border: #f6d9e4;--radius-lg: 22px;--radius-md: 14px;--radius-sm: 10px;--shadow-soft: 0 10px 32px rgba(230, 62, 112, .18);--shadow-card: 0 3px 14px rgba(43, 33, 56, .08);--font-script: "Caveat", "Vazirmatn", cursive}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:Vazirmatn,Tahoma,sans-serif;background:radial-gradient(circle at 10% -10%,rgba(255,141,178,.38) 0%,transparent 45%),radial-gradient(circle at 105% 8%,rgba(140,166,255,.32) 0%,transparent 42%),radial-gradient(circle at 50% 115%,rgba(255,200,214,.28) 0%,transparent 55%),linear-gradient(180deg,#fffaf8,#fdf5fa 45%,#f4f7ff);background-attachment:fixed;color:var(--color-text);direction:ltr;-webkit-tap-highlight-color:transparent}button{font-family:inherit}.app-shell{min-height:100%;display:flex;flex-direction:column}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:var(--radius-md);padding:16px 28px;font-size:1.05rem;font-weight:700;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,opacity .12s ease;touch-action:manipulation}.btn:hover{transform:translateY(-1px)}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:linear-gradient(135deg,var(--color-primary),var(--color-love) 55%,#ff8fab);color:#fff;box-shadow:var(--shadow-soft)}.btn-primary:hover{box-shadow:0 14px 34px #e63e7042}.btn-secondary{background:var(--color-surface);color:var(--color-primary);border:2px solid var(--color-border)}.btn-accent{background:linear-gradient(135deg,var(--color-accent),#6f8bff);color:#fff;box-shadow:0 8px 24px #4c6ef547}.btn-block{width:100%}.btn-sm{padding:10px 16px;font-size:.9rem;border-radius:var(--radius-sm)}.btn-icon{padding:10px;width:46px;height:46px;border-radius:50%}.center-page{position:relative;min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:20px;overflow:hidden}.card{position:relative;z-index:1;background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft);padding:32px;width:100%;max-width:440px}.card:after{content:"💝";position:absolute;top:-16px;inset-inline-end:22px;font-size:2rem;transform:rotate(12deg);filter:drop-shadow(0 4px 8px rgba(230,62,112,.35));pointer-events:none}.stack{display:flex;flex-direction:column;gap:16px}.field-label{font-weight:600;font-size:.95rem;color:var(--color-text-muted)}.text-input{width:100%;padding:14px 16px;border-radius:var(--radius-sm);border:2px solid var(--color-border);font-size:1.05rem;font-family:inherit;background:#fffafc;color:var(--color-text);outline:none;transition:border-color .15s ease,box-shadow .15s ease}.text-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 4px #e63e701f}.logo-title{font-size:2rem;font-weight:800;text-align:center;margin:0 0 6px;background:linear-gradient(135deg,var(--color-primary),var(--color-accent));-webkit-background-clip:text;background-clip:text;color:transparent}.logo-emoji{font-size:3rem;text-align:center;display:block;margin-bottom:8px}.subtitle{text-align:center;color:var(--color-text-muted);margin:0 0 24px}.error-banner{background:#fff0f3;color:#b02a4c;border:1px solid #ffd0dc;border-radius:var(--radius-sm);padding:12px 16px;font-size:.92rem;text-align:center}.monogram{display:inline-flex;align-items:center;justify-content:center;gap:.28em;direction:ltr;font-family:var(--font-script);font-weight:600;line-height:1;color:#fff;background:linear-gradient(120deg,var(--color-primary),var(--color-accent));border-radius:999px;box-shadow:var(--shadow-card);white-space:nowrap}.monogram .heart{font-family:initial;display:inline-block;animation:heartbeat 1.8s ease-in-out infinite}.monogram-lg{font-size:1.7rem;padding:8px 24px;margin:0 auto 14px}.monogram-sm{font-size:1.05rem;padding:5px 14px}@keyframes heartbeat{0%,to{transform:scale(1)}25%{transform:scale(1.18)}40%{transform:scale(.96)}}.made-with-love{text-align:center;font-size:.82rem;color:var(--color-text-muted);margin-top:22px}.made-with-love .heart{color:var(--color-love)}.floating-hearts{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;z-index:0}.floating-hearts span{position:absolute;bottom:-10%;font-size:var(--size, 22px);opacity:0;animation:rise var(--duration, 12s) ease-in var(--delay, 0s) infinite;filter:drop-shadow(0 2px 4px rgba(230,62,112,.15))}@keyframes rise{0%{transform:translateY(0) translate(0) rotate(0);opacity:0}10%{opacity:.55}50%{transform:translateY(-48vh) translate(var(--drift, 20px)) rotate(12deg)}90%{opacity:.35}to{transform:translateY(-92vh) translate(calc(var(--drift, 20px) * -1)) rotate(-10deg);opacity:0}}@media (prefers-reduced-motion: reduce){.floating-hearts,.monogram .heart,.cat-tail,.cat-eyes-blink,.cat-bob-sit,.cat-bob-look,.cat-bob-walk,.cat-bob-nap{animation:none!important}.cat-mascot,.cat-flip{transition:none!important}}.waiting-players{display:flex;align-items:center;justify-content:center;gap:18px;margin:22px 0}.player-avatar{width:68px;height:68px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.6rem;font-weight:800;color:#fff;background:linear-gradient(135deg,var(--color-primary),var(--color-accent));box-shadow:var(--shadow-card)}.player-avatar.empty{background:#fbeef3;color:var(--color-text-muted);border:2px dashed var(--color-border)}.vs-divider{font-weight:800;color:var(--color-love);font-family:var(--font-script);font-size:1.4rem}.link-box{display:flex;align-items:center;gap:8px;background:#fff2f6;border:2px dashed var(--color-border);border-radius:var(--radius-sm);padding:12px 14px;direction:ltr}.link-box span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;color:var(--color-text-muted);font-family:monospace}.pulse-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--color-primary);animation:pulse 1.4s infinite}@keyframes pulse{0%{box-shadow:0 0 #e63e7080}70%{box-shadow:0 0 0 10px #e63e7000}to{box-shadow:0 0 #e63e7000}}.game-shell{position:relative;display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;padding:10px;gap:10px;max-width:900px;margin:0 auto;width:100%}.game-header{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--color-surface);border-radius:var(--radius-md);padding:12px 16px;box-shadow:var(--shadow-card);flex-shrink:0}.score-pill{display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;background:#eef1ff;font-weight:700;min-width:0}.score-pill.you{background:#fff0f5;outline:2px solid var(--color-primary)}.score-pill .nick{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:90px}.score-pill .dot{width:8px;height:8px;border-radius:50%;background:var(--color-success);flex-shrink:0}.score-pill .dot.off{background:#ccc}.round-badge{font-weight:700;color:var(--color-text-muted);font-size:.9rem;white-space:nowrap}.timer-ring{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;font-weight:800;font-size:1.2rem;background:conic-gradient(var(--color-primary) calc(var(--pct, 1) * 360deg),#f4e9ee 0deg);flex-shrink:0;position:relative}.timer-ring:before{content:"";position:absolute;top:5px;right:5px;bottom:5px;left:5px;background:var(--color-surface);border-radius:50%}.timer-ring span{z-index:1}.timer-ring.warning{background:conic-gradient(var(--color-danger) calc(var(--pct, 1) * 360deg),#f4e9ee 0deg);color:var(--color-danger)}.word-banner{text-align:center;background:linear-gradient(135deg,#fff3e0,#fff);border:2px solid var(--color-gold);border-radius:var(--radius-md);padding:10px;font-size:1.3rem;font-weight:800;letter-spacing:1px;flex-shrink:0}.role-banner{text-align:center;font-weight:700;color:var(--color-primary);font-size:1.1rem;flex-shrink:0}.word-banner-genre{font-size:.8rem;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--color-accent);margin-bottom:4px}.category-banner{text-align:center;background:linear-gradient(135deg,#eef1ff,#fff);border:2px solid var(--color-accent-light);border-radius:var(--radius-md);padding:10px;flex-shrink:0}.category-banner-label{font-size:.8rem;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--color-accent);margin-bottom:4px}.category-banner-value{font-size:1.15rem;font-weight:800;color:var(--color-text)}.mascot-strip{position:relative;height:34px;flex-shrink:0;overflow:hidden;pointer-events:none}.cat-mascot{position:absolute;bottom:0;transform:translate(-50%);transition-property:left;transition-timing-function:linear;pointer-events:none;-webkit-user-select:none;user-select:none}.cat-flip{transform:scaleX(1);transition:transform .25s ease}.cat-flip.flip{transform:scaleX(-1)}.cat-shadow{position:absolute;left:50%;bottom:-2px;transform:translate(-50%);width:32px;height:7px;background:#2b21382e;border-radius:50%;filter:blur(1px)}.cat-svg{display:block}.cat-bob-sit,.cat-bob-look{animation:cat-breathe 3.2s ease-in-out infinite}.cat-bob-walk{animation:cat-walk-bob .45s ease-in-out infinite}.cat-bob-nap{animation:cat-breathe-slow 4.6s ease-in-out infinite}.cat-tail{transform-origin:86px 66px;animation:cat-tail-sway 2.6s ease-in-out infinite}.cat-tail path{fill:none;stroke:#d9791f;stroke-width:11;stroke-linecap:round}.cat-body{fill:#f2984c;stroke:#d9791f;stroke-width:2}.cat-belly{fill:#fff3e2}.cat-paw{fill:#f2984c;stroke:#d9791f;stroke-width:1.5}.cat-head-base,.cat-ear{fill:#f2984c;stroke:#d9791f;stroke-width:2}.cat-ear-inner{fill:#ffc79a}.cat-muzzle{fill:#fff3e2}.cat-brow{fill:none;stroke:#c96b16;stroke-width:3;stroke-linecap:round;opacity:.55}.cat-eye{fill:#3a2b1a}.cat-eyes-blink{animation:cat-blink 4.6s ease-in-out infinite;transform-origin:60px 37px}.cat-nose{fill:#ff8fa8}.cat-mouth{fill:none;stroke:#8a5a26;stroke-width:1.6;stroke-linecap:round}.cat-whiskers line{stroke:#8a5a26;stroke-width:1.2;opacity:.6}@keyframes cat-tail-sway{0%,to{transform:rotate(-6deg)}50%{transform:rotate(10deg)}}@keyframes cat-blink{0%,90%,to{transform:scaleY(1)}95%{transform:scaleY(.15)}}@keyframes cat-breathe{0%,to{transform:translateY(0) scaleY(1)}50%{transform:translateY(-1px) scaleY(1.02)}}@keyframes cat-breathe-slow{0%,to{transform:translateY(0)}50%{transform:translateY(-.5px)}}@keyframes cat-walk-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}.genre-picker-title{font-size:1.4rem;font-weight:800;text-align:center;margin:0 0 20px;color:var(--color-text)}.genre-grid{display:flex;flex-direction:column;gap:14px}.genre-card{border:2px solid var(--color-border);background:var(--color-surface);border-radius:var(--radius-md);padding:18px 20px;font-size:1.1rem;font-weight:700;color:var(--color-text);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease,background .15s ease,color .15s ease}.genre-card:hover:not(:disabled){transform:translateY(-2px);border-color:var(--color-primary);box-shadow:var(--shadow-soft)}.genre-card:active:not(:disabled){transform:scale(.98)}.genre-card.picked{background:linear-gradient(135deg,var(--color-primary),var(--color-love) 55%,#ff8fab);border-color:transparent;color:#fff}.genre-card:disabled{cursor:not-allowed}.genre-card:disabled:not(.picked){opacity:.5}.canvas-wrap{position:relative;flex:1 1 auto;min-height:320px;background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);overflow:hidden;touch-action:none;overscroll-behavior:contain}.draw-canvas{width:100%;height:100%;display:block;touch-action:none;cursor:crosshair;background:#fff}.toolbar{display:flex;flex-direction:column;gap:8px;background:var(--color-surface);border-radius:var(--radius-md);padding:10px 12px;box-shadow:var(--shadow-card);flex-shrink:0}.toolbar-row{display:flex;align-items:center;gap:8px}.toolbar-tools{flex-wrap:wrap}.toolbar-divider{width:1px;height:28px;background:var(--color-border);flex-shrink:0}.toolbar-colors{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:2px}.toolbar-colors::-webkit-scrollbar{display:none}.btn-label{margin-inline-start:4px}.color-swatch{width:28px;height:28px;border-radius:50%;border:2px solid rgba(43,33,56,.15);cursor:pointer;flex-shrink:0;padding:0;position:relative;transition:transform .15s ease,box-shadow .15s ease}.color-swatch.active{transform:scale(1.18);box-shadow:0 0 0 2px var(--color-surface),0 0 0 4px var(--color-primary)}.size-dot-btn{width:38px;height:38px;border-radius:50%;border:2px solid var(--color-border);background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}.size-dot-btn.active{border-color:var(--color-primary);background:#fff0f5}.size-dot-btn .dot{border-radius:50%;background:var(--color-text)}.toolbar-spacer{flex:1}.guess-panel{background:var(--color-surface);border-radius:var(--radius-md);padding:12px 14px;box-shadow:var(--shadow-card);display:flex;flex-direction:column;gap:10px;flex-shrink:0}.guess-form{display:flex;gap:8px}.guess-feed{display:flex;flex-direction:column;gap:6px;max-height:140px;overflow-y:auto}.guess-item{padding:8px 12px;border-radius:var(--radius-sm);font-size:.92rem;background:#f7f5ff;display:flex;justify-content:space-between;gap:8px}.guess-item.correct{background:#e3faf0;color:#067a52;font-weight:700}.guess-item.wrong{background:#fdeef1;color:#b8365a}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#2b142299;display:flex;align-items:center;justify-content:center;z-index:40;padding:20px;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.overlay-card{position:relative;background:var(--color-surface);border-radius:var(--radius-lg);padding:36px 30px;text-align:center;max-width:420px;width:100%;box-shadow:var(--shadow-soft);animation:pop .25s ease}@keyframes pop{0%{transform:scale(.85);opacity:0}to{transform:scale(1);opacity:1}}.overlay-emoji{font-size:3.2rem;display:block;margin-bottom:8px}.overlay-title{font-size:1.6rem;font-weight:800;margin:0 0 6px}.overlay-word{font-size:1.4rem;font-weight:700;color:var(--color-primary);margin:10px 0}.overlay-points{font-size:1rem;color:var(--color-text-muted);margin-bottom:10px}.overlay-countdown{font-size:1rem;color:var(--color-text-muted);margin-top:14px}.final-scores{display:flex;flex-direction:column;gap:10px;margin:20px 0}.final-score-row{display:flex;justify-content:space-between;padding:12px 16px;border-radius:var(--radius-sm);background:#f7f5ff;font-weight:700}.final-score-row.winner{background:linear-gradient(135deg,#fff6da,#fff);border:2px solid var(--color-gold)}.badge-disconnect{position:fixed;top:12px;left:50%;transform:translate(-50%);background:#fff3cd;color:#8a5a00;border:1px solid #ffe08a;border-radius:999px;padding:8px 18px;font-weight:700;font-size:.9rem;z-index:50;box-shadow:var(--shadow-card)}@media (max-width: 480px){.card{padding:24px 20px}.monogram-lg{font-size:1.4rem}}@media (max-width: 768px){.game-shell{height:100vh;height:100dvh;min-height:0;overflow:hidden;padding:6px;gap:6px}.game-header{padding:8px 10px;gap:6px}.score-pill{padding:6px 10px;font-size:.85rem;gap:6px}.score-pill .nick{max-width:52px}.round-badge{font-size:.72rem}.timer-ring{width:42px;height:42px;font-size:1rem}.word-banner,.category-banner{padding:8px;font-size:1.05rem}.category-banner-value{font-size:1rem}.canvas-wrap{min-height:0;border-radius:var(--radius-md)}.toolbar{padding:8px;gap:6px}.btn-icon{width:42px;height:42px}.size-dot-btn{width:36px;height:36px}.color-swatch{width:30px;height:30px}.guess-panel{padding:8px 10px}.guess-feed{max-height:25vh}.guess-form .btn{padding:12px 18px}.mascot-strip{height:26px}.cat-mascot{transform:translate(-50%) scale(.76)}}@media (max-width: 360px){.score-pill .nick{max-width:34px}.round-badge,.btn-label{display:none}.toolbar .btn-sm{padding:10px}.overlay-card{padding:24px 18px}}@media (max-height: 480px) and (orientation: landscape){.game-shell{padding:4px;gap:4px}.game-header{padding:6px 10px}.word-banner,.category-banner,.role-banner{padding:6px;font-size:.95rem}.word-banner-genre,.category-banner-label{display:none}.toolbar{padding:6px 8px}.guess-feed{max-height:15vh}}
