@import"https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,700&family=Figtree:wght@400;500;600;700&display=swap";.landing{--pm-bg: #eeecf5;--pm-lilac: #e3dff9;--pm-violet: #e0d5fc;--pm-soft-blue: #b8c6dc;--pm-lavender: #cfc3ec;--pm-purple: #c5b5f6;--pm-coral: #f8a192;--pm-accent: #af9ee8;--pm-deep: #b39cfa;--pm-ink: #2a2540;--pm-ink-soft: rgba(42, 37, 64, .72);width:100%;height:100dvh;background:var(--pm-bg);color:var(--pm-ink);font-family:Figtree,sans-serif;overflow:hidden}.landing-hero{position:relative;height:100%;display:flex;align-items:center;justify-content:center;padding:clamp(1.5rem,4vw,3rem);overflow:hidden}.landing-hero-bg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;z-index:0;animation:landing-bg-drift 18s ease-in-out infinite alternate;transform:scale(1.06)}.landing-hero-veil{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background:linear-gradient(180deg,#eeecf526,#e3dff959 45%,#eeecf5e0)}.landing-orb{position:absolute;border-radius:50%;filter:blur(40px);z-index:1;pointer-events:none}.landing-orb-a{width:min(42vw,280px);height:min(42vw,280px);background:#f8a19259;top:12%;right:8%;animation:landing-orb-float 10s ease-in-out infinite}.landing-orb-b{width:min(50vw,340px);height:min(50vw,340px);background:#af9ee847;bottom:18%;left:-8%;animation:landing-orb-float 13s ease-in-out infinite reverse}.landing-hero-content{position:relative;z-index:2;width:min(100%,40rem);text-align:center;animation:landing-rise .9s ease-out both}.landing-brand{display:flex;flex-direction:column;align-items:center;gap:.85rem;margin-bottom:1.35rem}.landing-logo{width:clamp(64px,12vw,84px);height:clamp(64px,12vw,84px);object-fit:contain;border-radius:22%;animation:landing-logo-in 1s ease-out both}.landing-wordmark{font-family:Fraunces,Georgia,serif;font-weight:700;font-size:clamp(3.4rem,12vw,5.6rem);line-height:.95;letter-spacing:-.03em;color:var(--pm-ink)}.landing-headline{font-family:Fraunces,Georgia,serif;font-weight:500;font-size:clamp(1.35rem,3.6vw,1.85rem);line-height:1.25;color:var(--pm-ink);margin-bottom:.75rem}.landing-sub{font-size:clamp(1rem,2.4vw,1.125rem);line-height:1.5;color:var(--pm-ink-soft);max-width:28rem;margin:0 auto 1.75rem}.landing-cta{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;cursor:pointer;font-family:inherit;font-weight:700;font-size:1.05rem;letter-spacing:.01em;color:#fff;background:linear-gradient(135deg,var(--pm-accent),var(--pm-deep));padding:.95rem 2.1rem;border-radius:999px;box-shadow:0 12px 32px #af9ee859;transition:transform .2s ease,box-shadow .2s ease,filter .2s ease;animation:landing-cta-glow 3.2s ease-in-out infinite}.landing-cta:hover{transform:translateY(-2px);filter:brightness(1.05);box-shadow:0 16px 36px #b39cfa6b}.landing-cta:active{transform:translateY(0)}@keyframes landing-rise{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}@keyframes landing-logo-in{0%{opacity:0;transform:scale(.88)}to{opacity:1;transform:scale(1)}}@keyframes landing-bg-drift{0%{transform:scale(1.06) translateZ(0)}to{transform:scale(1.1) translate3d(-1.2%,1%,0)}}@keyframes landing-orb-float{0%,to{transform:translateZ(0)}50%{transform:translate3d(12px,-18px,0)}}@keyframes landing-cta-glow{0%,to{box-shadow:0 12px 32px #af9ee852}50%{box-shadow:0 14px 40px #f8a19247}}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--primary: #ff6b6b;--primary-dark: #e05555;--accent: #4ecdc4;--accent-dark: #3dbdb5;--bg: #0f0f1a;--bg-card: #1a1a2e;--bg-card-hover: #222240;--text: #ffffff;--text-muted: #8888aa;--border: #2a2a4a;--error: #ff4757;--success: #2ed573;--radius: 16px;--radius-sm: 10px}html{font-size:16px}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);min-height:100dvh;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}#root{min-height:100dvh;display:flex;align-items:center;justify-content:center}body.landing-active{background:#eeecf5}body.landing-active #root{display:block;align-items:stretch;justify-content:flex-start}.app{width:100%;max-width:420px;padding:1rem;margin:0 auto}.home-logo{width:56px;height:56px;object-fit:contain;border-radius:14px;margin-bottom:.75rem}.screen{width:100%;animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem}.home-screen{text-align:center}.logo-container{margin-bottom:2rem}.logo-heart{font-size:3rem;color:var(--primary);margin-bottom:.5rem}.app-title{font-size:1.8rem;font-weight:700;margin-bottom:.3rem;background:linear-gradient(135deg,var(--primary),var(--accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.app-subtitle{color:var(--text-muted);font-size:.95rem}.input-label{display:block;text-align:left;font-size:.85rem;color:var(--text-muted);margin-bottom:.4rem;font-weight:500}.phone-input,.room-input,.invite-input{width:100%;padding:.9rem 1rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:1rem;outline:none;transition:border-color .2s}.phone-input:focus,.room-input:focus,.invite-input:focus{border-color:var(--accent)}.phone-input::placeholder,.room-input::placeholder{color:var(--text-muted)}.error-text{color:var(--error);font-size:.85rem;margin-top:.5rem;text-align:left}.button-group{display:flex;flex-direction:column;gap:.75rem;margin-top:1.2rem}.btn{padding:.9rem 1.5rem;border:none;border-radius:var(--radius-sm);font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;width:100%}.btn:active{transform:scale(.98)}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark)}.btn-secondary{background:transparent;color:var(--text-muted);border:1px solid var(--border)}.btn-secondary:hover{background:var(--bg-card-hover);color:var(--text)}.btn-accent{background:var(--accent);color:#fff}.btn-accent:hover{background:var(--accent-dark)}.join-input-group{display:flex;gap:.5rem}.join-input-group .room-input{flex:1}.join-input-group .btn{width:auto;white-space:nowrap}.game-picker{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:.25rem}.game-picker-3{grid-template-columns:1fr 1fr}.game-picker-3 .game-picker-option:last-child{grid-column:1 / -1}.app-wide{max-width:560px}.game-picker-option{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--bg);color:var(--text-muted);border-radius:var(--radius-sm);padding:.75rem .5rem;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s}.game-picker-option.selected{background:#4ecdc426;border-color:var(--accent);color:var(--text)}.game-picker-option:disabled{opacity:.6;cursor:not-allowed}.game-type-label{text-align:center;color:var(--text-muted);font-size:.85rem;margin-bottom:.75rem;letter-spacing:.02em}.waiting-screen{text-align:center}.waiting-content{display:flex;flex-direction:column;align-items:center;gap:1rem}.spinner{width:48px;height:48px;border:4px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.invite-link-box{display:flex;gap:.5rem;width:100%}.invite-input{flex:1;font-size:.8rem;color:var(--accent)}.invite-link-box .btn{width:auto}.hint-text{color:var(--text-muted);font-size:.85rem}.game-screen{display:flex;flex-direction:column;align-items:center;gap:1.5rem}.game-header{display:flex;justify-content:space-between;align-items:center;width:100%;padding:0 .5rem}.player-indicator{display:flex;flex-direction:column;align-items:center;gap:.25rem}.symbol-badge{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:8px;font-weight:700;font-size:1.1rem}.symbol-badge[data-symbol=X]{background:#ff6b6b33;color:var(--primary)}.symbol-badge[data-symbol=O]{background:#4ecdc433;color:var(--accent)}.player-label{font-size:.75rem;color:var(--text-muted)}.turn-indicator{text-align:center}.your-turn{color:var(--accent);font-weight:600;font-size:.9rem}.their-turn{color:var(--text-muted);font-size:.9rem}.board{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;width:100%;max-width:320px;aspect-ratio:1}.connect4-board{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;width:100%;max-width:360px;padding:10px;background:#1e3a5f;border-radius:16px;border:1px solid #2a5080}.connect4-column{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;padding:0;display:flex;flex-direction:column;gap:4px;cursor:pointer;border-radius:10px;transition:background .15s}.connect4-column:hover:not(:disabled){background:#ffffff0f}.connect4-column:disabled{cursor:default}.connect4-slot{aspect-ratio:1;border-radius:50%;background:#0f0f1a;display:flex;align-items:center;justify-content:center;box-shadow:inset 0 2px 4px #00000059}.connect4-slot.winning{box-shadow:0 0 0 2px var(--accent),inset 0 2px 4px #00000059}.connect4-disc{width:78%;height:78%;border-radius:50%;display:block}.connect4-disc[data-symbol=X]{background:radial-gradient(circle at 30% 30%,#ff8a8a,#ff6b6b 55%,#e05555)}.connect4-disc[data-symbol=O]{background:radial-gradient(circle at 30% 30%,#ffe08a,#ffd93d 55%,#e6c200)}.final-board .connect4-board{max-width:280px;margin:0 auto}.draw-screen{display:flex;flex-direction:column;gap:.75rem;min-height:calc(100dvh - 2rem)}.draw-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.draw-header .game-type-label{margin-bottom:.15rem;text-align:left}.draw-partner{color:var(--text-muted);font-size:.9rem}.draw-leave{width:auto;padding:.55rem 1rem}.draw-toolbar{display:flex;flex-direction:column;gap:.55rem}.draw-tools,.draw-sizes,.draw-colors{display:flex;flex-wrap:wrap;gap:.4rem}.draw-tool,.draw-size{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--bg-card);color:var(--text-muted);border-radius:999px;padding:.4rem .85rem;font-size:.85rem;font-weight:600;cursor:pointer}.draw-tool.active,.draw-size.active{border-color:var(--accent);color:var(--text);background:#4ecdc426}.draw-tool.danger{border-color:#ff475773;color:#ff8a94}.draw-color{width:28px;height:28px;border-radius:50%;border:2px solid transparent;cursor:pointer;box-shadow:inset 0 0 0 1px #ffffff26}.draw-color.active{border-color:var(--accent);transform:scale(1.08)}.draw-canvas-wrap{flex:1;min-height:360px;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:#f7f4ef;touch-action:none}.draw-canvas{display:block;width:100%;height:100%;touch-action:none;cursor:crosshair}.cell{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:2.5rem;font-weight:700;transition:all .2s;aspect-ratio:1;position:relative;overflow:hidden}.cell:hover:not(:disabled){background:var(--bg-card-hover);border-color:var(--accent)}.cell:disabled{cursor:default}.cell.winning{background:#4ecdc426;border-color:var(--accent);animation:pulse .6s ease infinite alternate}@keyframes pulse{0%{box-shadow:0 0 #4ecdc466}to{box-shadow:0 0 15px 3px #4ecdc433}}.symbol{animation:popIn .25s cubic-bezier(.68,-.55,.265,1.55)}.symbol-x{color:var(--primary)}.symbol-o{color:var(--accent)}@keyframes popIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}.exit-btn{margin-top:.5rem}.result-screen{text-align:center}.result-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:2rem 1.5rem}.result-emoji{font-size:4rem;margin-bottom:.5rem}.result-text{font-size:1.6rem;font-weight:700;margin-bottom:1.5rem}.final-board{max-width:200px;margin:0 auto 1.5rem}.final-board .board{gap:5px}.final-board .cell{font-size:1.8rem;border-radius:8px}.result-actions{display:flex;flex-direction:column;gap:.75rem}@media (min-width: 480px){.app{padding:2rem}.board{max-width:340px}}@media (max-height: 700px){.logo-container{margin-bottom:1rem}.logo-heart{font-size:2rem}.app-title{font-size:1.4rem}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.input-label-spaced{margin-top:1rem}.invite-message{color:var(--accent);margin-bottom:1.25rem;font-weight:600}.btn:disabled{opacity:.65;cursor:not-allowed}.closed-message{color:var(--text-muted);margin:-.5rem 0 1.5rem}
