@import"https://fonts.googleapis.com/css2?family=Fredoka:wght@400;500;600;700&family=Inter:wght@400;500;600;700&display=swap";.heart-display{display:flex;gap:10px;justify-content:center}.heart-display--lg{gap:16px}.heart-display--lg .heart{font-size:3rem}.heart-display--sm .heart{font-size:1rem}.heart{transition:color .3s,transform .3s,opacity .3s}.heart--full{color:var(--yellow)}.heart--half{color:var(--yellow);opacity:.45}.heart--empty{color:#ffffff26}.card .heart--empty{color:#00000026}.card .heart--full,.card .heart--half{color:var(--black)}.card .heart--half{opacity:.4}.player-list{list-style:none}.player-list__item{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid rgba(255,255,255,.1);gap:12px}.card--dark .player-list__item{border-bottom-color:var(--border)}.player-list__item--out{opacity:.4}.player-list__info{display:flex;flex-direction:column;gap:6px;flex:1;min-width:0}.player-list__name{font-weight:600;font-size:.95rem;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-list__actions{display:flex;align-items:center;gap:10px;flex-shrink:0}.player-list__role-select{padding:8px 10px;background:#ffffff14;border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-sm);font-size:.8rem;margin-top:4px;color:var(--text);color-scheme:dark;min-height:40px}.card--dark .player-list__role-select{background:#ffffff0f;border-color:var(--border);color:var(--text)}.player-list__role-select option,.card--dark .player-list__role-select option{background:#14101f;color:#fff}.player-list .btn-danger{border-color:#ff6b9d66;color:var(--pink);font-size:.75rem;padding:8px 12px}.card--dark .player-list .btn-danger{border-color:#ff6b9d66;color:var(--pink)}.game-log{max-height:180px;overflow-y:auto;font-size:.8rem}.game-log__entry{display:flex;gap:10px;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.1)}.card--dark .game-log__entry{border-bottom-color:var(--border)}.game-log__time{color:var(--text-muted);flex-shrink:0;font-variant-numeric:tabular-nums;font-weight:600}.card--dark .game-log__time{color:var(--text-muted)}.game-log__message{flex:1;font-weight:500;color:var(--text)}.game-log--dark .game-log__entry{border-bottom-color:var(--border)}.game-log--dark .game-log__time{color:var(--text-muted)}.heart-crack-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#0009;z-index:200;pointer-events:none;animation:fadeIn .2s ease}.heart-crack-container{position:relative;width:120px;height:120px;display:flex;align-items:center;justify-content:center}.heart-crack-icon{font-size:5rem;color:var(--heart);animation:crackPulse .5s ease forwards}.heart-crack-line{position:absolute;width:2px;height:80px;background:var(--bg);transform:rotate(25deg);animation:crackLine .4s ease .2s forwards;opacity:0}.heart-crack-line--2{transform:rotate(-35deg);animation-delay:.3s}.heart-crack-pieces .piece{position:absolute;font-size:2.5rem;color:var(--heart);opacity:0}.piece--1{animation:flyLeft .6s ease .5s forwards}.piece--2{animation:flyRight .6s ease .5s forwards}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes crackPulse{0%{transform:scale(1)}50%{transform:scale(1.2)}to{transform:scale(0);opacity:0}}@keyframes crackLine{to{opacity:1}}@keyframes flyLeft{to{opacity:0;transform:translate(-60px,40px) rotate(-30deg)}}@keyframes flyRight{to{opacity:0;transform:translate(60px,40px) rotate(30deg)}}.role-reveal{display:flex;flex-direction:column;align-items:center;padding:8px 0}.role-card{width:100%;max-width:300px;aspect-ratio:.72;perspective:1000px;cursor:pointer;position:relative}.role-card--flipped{cursor:pointer}.role-card__face{position:absolute;top:0;right:0;bottom:0;left:0;backface-visibility:hidden;border-radius:var(--radius);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;text-align:center;transition:transform .6s ease}.role-card__back{background:var(--yellow);color:var(--black)}.role-card__front{transform:rotateY(180deg);background:var(--yellow);color:var(--black)}.role-card--flipped .role-card__back{transform:rotateY(180deg)}.role-card--flipped .role-card__front{transform:rotateY(0)}.role-card__tap-hint{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;opacity:.55;margin-bottom:16px}.role-card__icon{font-size:4rem}.role-card__desc{margin-top:16px;font-size:.9rem;opacity:.75;line-height:1.4}.role-card__action{margin-top:24px;padding-top:16px;border-top:2px solid rgba(0,0,0,.12);width:100%}.role-card .section-title{color:#000000bf}.role-card__action-text{font-size:1.35rem;font-weight:700;margin-top:8px;letter-spacing:-.02em}.role-card__tap-hint--front{margin-top:20px;margin-bottom:0}.role-card__front .badge{font-size:.85rem;padding:6px 14px}.role-peek-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;background:#0a0612b8;padding:16px;padding-bottom:calc(16px + var(--safe-bottom))}:root{--bg: #0a0612;--yellow: #c8ff3d;--yellow-hover: #d9ff6e;--text: #ffffff;--text-muted: rgba(255, 255, 255, .55);--black: #0a0612;--border: rgba(255, 255, 255, .1);--border-strong: rgba(255, 255, 255, .22);--radius: 24px;--radius-sm: 12px;--radius-pill: 999px;--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-top: env(safe-area-inset-top, 0px);--mafia: #ff6b9d;--clown: #b794f6;--civilian: #5eead4;--heart: #ff6b9d;--lime: #c8ff3d;--pink: #ff6b9d;--lavender: #b794f6;--gold: #ffd93d;--font-display: "Fredoka", "Inter", sans-serif;--font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font-body);background:var(--bg);color:var(--text);line-height:1.5;-webkit-font-smoothing:antialiased;overflow-x:hidden}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;background:radial-gradient(circle at 85% 8%,rgba(255,107,157,.28),transparent 32%),radial-gradient(circle at 8% 70%,rgba(183,148,246,.22),transparent 34%),radial-gradient(circle at 70% 92%,rgba(200,255,61,.16),transparent 30%)}button,input,select{font:inherit;color:inherit}button{cursor:pointer;border:none;background:none}a{color:var(--lime)}.app{min-height:100%;display:flex;flex-direction:column;padding:16px;padding-top:calc(16px + var(--safe-top));padding-bottom:calc(16px + var(--safe-bottom));max-width:440px;margin:0 auto;position:relative}.app-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:24px}.stacked-title{font-family:var(--font-display);font-weight:700;font-size:2rem;letter-spacing:-.02em;line-height:.95;text-transform:none}.stacked-title span{display:block}.stacked-title span:last-child{background:linear-gradient(90deg,var(--lime),var(--pink),var(--lavender));-webkit-background-clip:text;background-clip:text;color:transparent}.icon-btn{width:44px;height:44px;border:1px solid var(--border-strong);border-radius:var(--radius-pill);display:flex;align-items:center;justify-content:center;font-size:1rem;color:var(--text);background:#ffffff0f}.page-title{font-family:var(--font-display);font-size:2rem;font-weight:700;margin-bottom:4px;letter-spacing:-.02em}.page-subtitle{color:var(--text-muted);margin-bottom:28px;font-weight:400;font-size:.95rem}.hero-stat{text-align:center;margin-bottom:28px}.hero-stat__label{font-size:.72rem;font-weight:700;color:var(--pink);letter-spacing:.12em;text-transform:uppercase;margin-bottom:4px}.hero-stat__value{font-family:var(--font-display);font-size:3rem;font-weight:700;letter-spacing:-.03em;line-height:1}.card{background:#ffffff12;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:var(--text);border-radius:var(--radius);padding:24px;margin-bottom:16px;border:1px solid var(--border)}.card--dark{background:#00000059;color:var(--text);border:1px solid var(--border)}.card--highlight{border-color:#b794f673;box-shadow:0 0 0 1px #b794f640}.card__emoji{font-size:1.75rem;margin-bottom:12px}.card__headline{font-family:var(--font-display);font-size:1.5rem;font-weight:700;line-height:1.15;margin-bottom:8px}.card__body{font-size:.95rem;color:var(--text-muted)}.card-emphasis{font-family:var(--font-display);font-size:1.5rem;font-weight:700;letter-spacing:-.02em;color:var(--text)}.card .input,.card select{background:#ffffff14;border:1px solid rgba(255,255,255,.2);color:var(--text);-webkit-text-fill-color:var(--text);color-scheme:dark}.card .input::placeholder{color:var(--text-muted)}.card .input:focus,.card select:focus{outline:none;border-color:var(--lime);background:#ffffff1a;box-shadow:0 0 0 3px #c8ff3d26}.card .label,.card .section-title,.card .text-muted{color:var(--text-muted)}.card select option,select.input option,.player-list__role-select option{background:#14101f;color:#fff}.modal{color:var(--black)}.modal .input,.modal select{background:#0000001a;border:2px solid rgba(0,0,0,.35);color:var(--black);-webkit-text-fill-color:var(--black);color-scheme:light}.modal .input::placeholder{color:#0000008c;opacity:1}.modal .input:focus,.modal select:focus{outline:none;border-color:var(--black);background:#00000024}.modal .label,.modal .section-title{color:#000000bf}.modal .text-muted{color:#000000a6}.modal select option{background:#fff;color:#000}.card .btn-outline-dark:disabled,.modal .btn-outline-dark:disabled{opacity:1;color:#ffffff59;border-color:#ffffff40;background:#ffffff0a}.modal .btn-outline-dark:disabled{color:#00000061;border-color:#00000061;background:#0000000f}.card .btn-primary:disabled,.modal .btn-primary:disabled{opacity:.45}.card .btn-outline-dark.is-active,.modal .btn-outline-dark.is-active{background:#c8ff3d26;border-color:var(--lime)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:16px 24px;border-radius:var(--radius-pill);font-family:var(--font-display);font-weight:600;font-size:1rem;transition:transform .12s,background .12s,opacity .12s,box-shadow .12s;width:100%;min-height:48px}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.35;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg,var(--lime),#a8e635);color:var(--black);box-shadow:0 4px 24px #c8ff3d4d}.btn-primary:hover:not(:disabled){background:linear-gradient(135deg,var(--yellow-hover),var(--lime))}.btn-secondary{background:#ffffff14;color:var(--text);border:1px solid var(--border-strong)}.btn-outline-dark{background:#ffffff0f;color:var(--text);border:2px solid rgba(255,255,255,.25)}.btn-outline-dark:hover:not(:disabled){background:#ffffff1a;border-color:var(--lime)}.modal .btn-outline-dark{color:var(--black);border-color:var(--black);background:transparent}.btn-success{background:linear-gradient(135deg,var(--lime),#a8e635);color:var(--black)}.btn-danger{background:#ff6b9d26;color:var(--pink);border:1px solid rgba(255,107,157,.4)}.btn-sm{padding:10px 16px;font-size:.875rem;width:auto;min-height:40px}.input{width:100%;padding:16px;background:#ffffff0f;border:1px solid var(--border-strong);border-radius:var(--radius-sm);font-size:1rem;margin-bottom:12px;color:var(--text)}.input::placeholder{color:var(--text-muted)}.input:focus{outline:none;border-color:var(--yellow)}.label{display:block;font-size:.75rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px}.error-banner{background:#f871711f;border:1px solid rgba(248,113,113,.4);border-radius:var(--radius-sm);padding:12px 16px;margin-bottom:16px;color:#fca5a5;font-size:.875rem}.chip-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.chip{padding:8px 14px;background:#ffffff14;border:1px solid rgba(255,255,255,.15);border-radius:var(--radius-pill);font-size:.8rem;cursor:pointer;color:var(--text);transition:background .12s;min-height:36px}.chip:hover,.chip.active{background:#c8ff3d2e;border-color:var(--lime)}.badge{display:inline-block;padding:4px 10px;border-radius:var(--radius-pill);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;background:#c8ff3d33;color:var(--lime)}.badge-mafia{background:#ff6b9d33;color:var(--pink)}.badge-clown{background:#b794f633;color:var(--lavender)}.badge-civilian{background:#5eead433;color:var(--civilian)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0612d9;display:flex;align-items:center;justify-content:center;z-index:100;padding:16px;padding-bottom:calc(16px + var(--safe-bottom))}.modal{background:linear-gradient(145deg,#c8ff3df2,#c8ff3dcc);color:var(--black);border-radius:var(--radius);padding:28px 24px;width:100%;max-width:420px;max-height:85vh;overflow-y:auto;box-shadow:0 0 40px #c8ff3d40}.modal-title{font-family:var(--font-display);font-size:1.5rem;font-weight:700;margin-bottom:20px;letter-spacing:-.02em;color:var(--black)}.divider{height:1px;background:#ffffff1f;margin:20px 0}.card .divider,.modal .divider{background:#0000001f}.section-title{font-size:.7rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em;margin-bottom:12px}.card--dark .section-title{color:var(--text-muted)}.flex-row{display:flex;gap:10px}.flex-row .btn,.spacer{flex:1}.text-center{text-align:center}.text-muted,.card--dark .text-muted{color:var(--text-muted)}.tally-yes{color:var(--yellow);font-weight:600}.tally-no{color:var(--text);font-weight:600}.room-code{font-size:2.75rem;font-weight:700;letter-spacing:.25em;line-height:1}.join-url-row{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.join-url-row:last-child{margin-bottom:0}.join-url{font-size:.85rem;font-weight:600;word-break:break-all;color:var(--black);line-height:1.35}.player-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.player-tile{aspect-ratio:1;background:var(--yellow);color:var(--black);border-radius:var(--radius-sm);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px;text-align:center;gap:4px;min-width:0}.player-tile--you{box-shadow:0 0 0 2px var(--text)}.player-tile--out{background:transparent;border:1px solid var(--border);color:var(--text-muted);opacity:.45}.player-tile__emoji{font-size:1.75rem;line-height:1}.player-tile__name{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.mt-2{margin-top:8px}.mt-4{margin-top:16px}.mb-2{margin-bottom:8px}.mb-4{margin-bottom:16px}
