/* The online table retains the original olive, parchment and role palette. */
body{min-height:100dvh}.hidden{display:none!important}input{min-width:0}button{min-height:40px}button:disabled{pointer-events:none}.entry-screen{min-height:100dvh;display:grid;place-items:center;padding:36px 20px;position:relative;overflow:hidden}.entry-glow{position:absolute;width:min(820px,120vw);aspect-ratio:1;border-radius:50%;border:1px solid #b8c2a314;box-shadow:0 0 0 80px #b8c2a305,0 0 0 160px #b8c2a304;pointer-events:none}.entry-card{width:360px;max-width:100%;position:relative}.entry-mark{font-size:40px;color:var(--gold);margin-bottom:20px}.entry-card h1{font-size:64px;letter-spacing:8px;margin:8px 0 12px}.entry-lead{color:var(--muted);max-width:300px;font-size:13px}.auth-tabs{display:flex;border-bottom:1px solid var(--line);margin:34px 0 22px}.auth-tabs button{flex:1;border-bottom:2px solid transparent;padding:12px 0;color:var(--muted);font-size:13px}.auth-tabs .active{color:var(--gold);border-color:var(--gold)}form label{display:block;font-size:12px;color:#cbd2c7;margin:14px 0 7px}form input,.code-input{display:block;width:100%;padding:14px;border:1px solid #3b4d3c;background:#16211d;border-radius:10px;color:var(--text);font-size:16px}form .primary{width:100%;justify-content:space-between;margin-top:14px}.form-error{font-size:12px;color:var(--red);min-height:20px;margin-top:10px}.entry-foot{margin-top:28px;font-size:10px;color:#819185}.home-screen{min-height:100dvh;padding:0 6vw}.home-header{height:100px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.home-main{max-width:780px;margin:12vh auto 70px}.home-main h1{font-size:clamp(42px,6vw,76px);line-height:1.08;margin:20px 0 26px;letter-spacing:-2px}.home-main h1 em{font-weight:400;color:var(--gold)}.home-lead{max-width:430px;color:var(--muted);font-size:14px;line-height:1.8}.home-actions{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:40px}.home-action{display:flex;align-items:center;gap:16px;text-align:left;border:1px solid #465444;border-radius:16px;background:#1c2922;padding:25px 22px;min-height:106px}.home-action:hover{background:#26372b;border-color:var(--gold)}.home-action-icon{font-size:30px;font-weight:300;color:var(--gold)}.home-action b{display:block;font-size:16px;font-weight:500}.home-action small{display:block;color:var(--muted);font-size:11px;margin-top:6px}.home-action-arrow{margin-left:auto;color:var(--gold);font-size:22px}.home-note{font-size:11px;color:#829587;margin-top:24px}.room-nav{display:flex;align-items:center;gap:10px}.live-badge{font-size:10px;color:var(--muted);display:flex;align-items:center;gap:6px}.live-badge i{width:6px;height:6px;border-radius:50%;background:var(--green)}.live-badge.offline{color:var(--orange)}.live-badge.offline i{background:var(--orange)}.room-code{font-size:13px;letter-spacing:2px;color:var(--gold);background:#e9c7830b;border:1px solid #e9c78330;padding:8px 12px;border-radius:10px}.shell{max-width:1280px;padding:0 32px 160px}.hero{padding:24px 0 18px}.hero h1{font-size:34px}.hero-sub{font-size:12px}.layout,.in-game .layout{display:grid;grid-template-columns:minmax(0,1fr) 248px;gap:20px}.layout>section,.in-game .layout>section{max-width:none}.sidebar{margin:0;max-width:none}.sidebar .panel{padding:20px}.table-panel{overflow:visible;background:none;border:0;border-radius:0}.table-top,.in-game .table-top{padding:0 0 12px;flex-wrap:nowrap}.board{height:580px!important;border:1px solid var(--line);border-radius:22px;background:radial-gradient(circle at 50% 45%,#22372b 0,#192821 44%,#14201b 90%);overflow:hidden;--orbit-size:320px}.orbit{z-index:0;width:var(--orbit-size);height:var(--orbit-size);inset:auto;aspect-ratio:1}.orbit:before{inset:24px}.table-center,.in-game .table-center{z-index:2;width:190px;padding:0;background:none;pointer-events:none}.table-center h2,.in-game .table-center h2{font-size:29px;line-height:1.22;text-align:center;margin:10px 0;letter-spacing:-.7px;text-wrap:balance}.table-center .eyebrow{font-size:8px;letter-spacing:1.5px}.center-description{font-size:11px;max-width:180px}.table-center .center-icon{display:flex!important;margin-bottom:7px}.table-center .center-icon svg{width:28px;height:28px}.center-target{color:var(--orange);font-size:11px;margin-top:10px}.tracers{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none;overflow:visible}.trace{fill:none;stroke-width:1.6;stroke-dasharray:5 7;animation:traceFlow 1.4s linear infinite;opacity:.55}.vote-trace{stroke-width:1;opacity:.4;stroke-dasharray:3 6}.player,.in-game .player{z-index:3;width:150px;min-height:66px;gap:9px;padding:5px;cursor:pointer;transform:translate(-50%,-50%) scale(var(--player-scale,1))}.player .avatar{width:52px;height:52px;font-size:16px;border-width:1.5px;box-shadow:0 0 0 4px #18271f}.player-name{font-size:12px;max-width:95px}.player-meta,.player.chosen .player-meta,.player.old .player-meta{font-size:9px}.player-copy{gap:4px}.player.old .avatar{width:26px;height:26px;font-size:9px;box-shadow:none;animation:none}.player.old{animation:none!important;min-height:38px}.player.old .player-copy{opacity:.55}.player.old .player-meta{color:#8a958b}.player.chosen .avatar{color:#ffd4ac;border-color:var(--orange);background:#5d3d28}.player.chosen.girl-choice .avatar{color:var(--yellow);border-color:var(--yellow);background:#49442b}.player.chosen.doctor-choice .avatar{color:var(--green);border-color:var(--green);background:#254432}.player.awaiting{animation:cardPulse 1.8s ease-in-out infinite}.player.own .player-name:after{content:' · вы';color:var(--gold);font-size:9px}.player .vote-number{position:absolute;top:-13px;left:23px;min-width:25px;padding:3px 7px;background:var(--gold);color:#17221a;border-radius:20px;font-size:11px;font-weight:700;box-shadow:0 0 0 3px #18271f}.player .vote-number.reveal{animation:votePop .5s both;animation-delay:var(--delay,0ms)}.player .vote-check{position:absolute;bottom:0;left:36px;border:3px solid #18271f;background:var(--gold);color:#18271f;width:21px;height:21px;border-radius:50%;display:grid;place-items:center;font-size:10px}.board-under{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:12px 0;color:var(--muted);font-size:11px;min-height:20px}.board-under b{color:var(--gold);font-weight:500}.legend{justify-content:flex-start;padding:5px 0;font-size:10px}.zoom-controls{padding:0;border:0}.zoom-controls button{min-height:32px;height:32px;min-width:32px}.zoom-controls #zoomValue{width:52px;color:var(--gold)}.phase-list{display:flex;flex-direction:column;gap:13px}.phase-list div{display:flex;align-items:center;gap:9px;font-size:11px;color:var(--muted)}.phase-list .active{color:var(--gold)}.phase-list svg{width:16px;height:16px}.panel .eyebrow{margin-bottom:15px}.panel h3{font-family:Georgia,serif;font-size:21px;margin-bottom:14px}.panel p{font-size:12px;color:var(--muted);line-height:1.65}.config-count{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;font-size:12px}.config-count select{background:#101b16;color:var(--red);border:1px solid var(--line);padding:9px 15px;border-radius:9px}.role-toggle{padding:11px 0}.role-toggle span{color:var(--role)}.role-toggle input{width:20px;height:20px}.panel-note{margin-top:15px;border-top:1px solid var(--line);padding-top:12px;font-size:10px!important}.my-turn{border-color:#e9c78366;background:#243126}.my-turn h3{color:var(--gold)}.online-roster{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}.online-roster span{padding:4px 7px;border-radius:6px;background:#ffffff08;font-size:10px}.footer{padding:14px 32px max(14px,env(safe-area-inset-bottom));}.footer-inner{max-width:1216px}.footer .primary{min-width:230px;min-height:58px}.footer .primary small{font-size:10px;font-weight:400;opacity:.8;display:block;margin-top:3px}.footer .primary .button-copy{text-align:left;flex:1}.footer .primary svg{margin-left:auto}.stage-card{min-width:150px}.stage-card strong{font-size:12px}.spectator-footer{color:var(--muted);font-size:12px;flex:1}.spectator-footer strong{color:var(--text);font-weight:500}.modal-body .role-reveal{text-align:center;padding:24px 0 12px}.role-reveal svg{width:64px;height:64px;color:var(--role);stroke-width:1.2;margin-bottom:20px}.role-reveal h3{font-family:Georgia,serif;font-size:42px;color:var(--role);font-weight:400}.role-reveal p{color:var(--muted);font-size:13px;margin:16px auto;max-width:280px;line-height:1.6}.modal-body .summary-row{padding:16px 0;border-bottom:1px solid var(--line)}.summary-row small{display:block;color:var(--muted);font-size:11px}.summary-row strong{display:block;font-family:Georgia,serif;font-size:26px;margin:4px 0}.summary-row em{color:var(--green);font-style:normal;font-size:14px}.modal-body .modal-actions .primary{margin:0}.modal-body .modal-actions button{flex:1}.form-help{font-size:11px;color:var(--muted);margin-top:12px}.code-input{font-size:24px;letter-spacing:6px;text-transform:uppercase;text-align:center}.waiting-dots{display:flex;justify-content:center;gap:5px;margin-top:16px}.waiting-dots i{width:4px;height:4px;background:var(--gold);border-radius:50%;animation:dotFade 1.4s infinite}.waiting-dots i:nth-child(2){animation-delay:.2s}.waiting-dots i:nth-child(3){animation-delay:.4s}.vote-result-card{margin-top:14px;padding:13px;border:1px solid #e9c78333;border-radius:10px;color:var(--gold);font-size:12px}.revote-buttons{display:grid;gap:8px;margin-top:15px}.revote-buttons button{justify-content:center}.winner-list{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin:25px 0;max-width:650px}.winner-list span{border:1px solid var(--line);border-radius:10px;padding:10px 13px;font-size:12px;color:var(--role)}.boot-message{margin:40vh auto;text-align:center;color:var(--muted)}
.orbit{left:50%;top:50%}.in-game .sidebar{display:block}.player.awaiting .avatar{animation:none;box-shadow:0 0 0 3px #18271f}.tracers .trace{opacity:.55}.footer .primary.viewer-info{opacity:1;background:#233127;color:#d2ddcb;border:1px solid #3d4d3d;cursor:default}.footer .primary.viewer-info svg{display:none}.footer .primary.viewer-info small{color:var(--muted)}
@media(min-width:821px){.board{height:clamp(440px,calc(100svh - 450px),580px)!important}}
@keyframes votePop{from{opacity:0;transform:scale(.4) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes dotFade{50%{opacity:.2}}
@media(min-width:821px) and (max-height:850px){.topbar{height:68px}.hero{padding:18px 0}.table-center .center-icon{display:flex!important}}
@media(max-width:1000px){.layout,.in-game .layout{grid-template-columns:minmax(0,1fr) 210px}.shell{padding-left:22px;padding-right:22px}.player,.in-game .player{width:126px;gap:7px}.player .avatar{width:45px;height:45px;font-size:14px}.player-name{font-size:11px}.board{--orbit-size:260px}.table-center,.in-game .table-center{width:155px}.table-center h2,.in-game .table-center h2{font-size:24px}.sidebar .panel{padding:16px}.live-badge{display:none}}
@media(max-width:820px){.layout,.in-game .layout{display:flex;flex-direction:column;gap:16px}.sidebar{width:100%;display:block}.sidebar .panel{max-width:none;margin:0 0 14px}.board{height:570px!important;--orbit-size:300px}.table-center,.in-game .table-center{width:180px}.table-center h2,.in-game .table-center h2{font-size:28px}.player,.in-game .player{width:146px}.player .avatar{width:52px;height:52px}.player-name{font-size:12px}.player-meta{font-size:10px}.sidebar .phase-panel{display:none}.hero h1{font-size:29px}.count{padding:10px 12px;min-width:90px}.count strong{font-size:25px}.footer-inner{flex-wrap:wrap;gap:10px}.footer .primary{min-width:180px;flex:1}.footer-info{flex:1;gap:3px}.stage-card{min-width:100px;padding:0 10px}.stage-card strong{font-size:10px}.footer-arrow{display:none}.steps{display:none}.hero-sub{font-size:11px}.topbar{height:72px}.board-under{margin-bottom:0}.legend{margin-top:9px}}
@media(max-width:540px){.entry-card h1{font-size:52px}.entry-screen{padding:26px 24px}.entry-mark{margin-bottom:12px}.auth-tabs{margin-top:26px}.home-screen{padding:0 22px}.home-header{height:75px}.home-main{margin:9vh 0 40px}.home-main h1{font-size:43px;letter-spacing:-1.4px}.home-actions{grid-template-columns:1fr;gap:12px;margin-top:30px}.home-action{min-height:90px;padding:21px}.home-lead{font-size:13px}.shell,.in-game .shell{padding:0 12px 170px}.topbar,.in-game .topbar{height:66px;gap:6px}.brand-title{font-size:16px;letter-spacing:3px}.brand-sub{font-size:6px;letter-spacing:1.3px}.brand-mark{width:28px;height:32px}.room-nav{gap:5px}.room-code{font-size:10px;padding:6px 8px;letter-spacing:1px;min-height:34px}.room-nav .quiet{font-size:10px;padding:6px 8px;min-height:34px}.hero,.in-game .hero{padding:16px 2px 15px;gap:8px;flex-wrap:nowrap}.hero h1,.in-game .hero h1{font-size:25px;margin-top:5px}.hero .eyebrow{font-size:8px}.hero-sub{font-size:10px;margin-top:6px;max-width:205px}.counts{gap:6px}.count{padding:8px;min-width:0;gap:7px}.count strong{font-size:22px}.count span{font-size:9px}.count svg{display:none}.table-top,.in-game .table-top{padding:0 0 9px;gap:6px;flex-wrap:nowrap}.seat-count{font-size:10px}.zoom-controls{font-size:9px;gap:4px}.zoom-controls>span{display:none}.zoom-controls button{height:29px;min-height:29px;min-width:29px}.board{height:490px!important;--orbit-size:235px;border-radius:18px}.table-center,.in-game .table-center{width:137px}.table-center h2,.in-game .table-center h2{font-size:22px;line-height:1.23}.table-center .eyebrow{font-size:7px;letter-spacing:1px}.table-center .center-icon{display:flex!important;margin-bottom:2px}.table-center .center-icon svg{width:24px;height:24px}.center-description{font-size:9px;max-width:135px}.center-target{font-size:9px}.player,.in-game .player{width:109px;min-height:54px;gap:6px;padding:4px}.player .avatar{width:38px;height:38px;font-size:12px;box-shadow:0 0 0 3px #18271f}.player-name{font-size:10px}.player-meta,.player.chosen .player-meta,.player.old .player-meta{font-size:8px}.player.old .avatar{width:20px;height:20px;font-size:8px}.player-copy{gap:4px}.player .vote-number{left:16px;top:-12px;font-size:10px;min-width:22px;padding:2px 5px}.player .vote-check{left:28px;width:18px;height:18px;font-size:8px}.player.protected .player-copy:after{font-size:7px}.board-under{font-size:10px;gap:8px;margin-top:10px}.board-under .quiet{font-size:9px;padding:6px 8px;min-height:32px}.legend{gap:7px 12px;font-size:8px;line-height:1.5;margin-top:10px}.footer{padding:10px 12px max(10px,env(safe-area-inset-bottom))}.footer-inner{gap:9px;align-items:center}.footer .primary{min-height:54px;min-width:0;width:100%;flex-basis:100%;padding:9px 16px}.footer .primary .button-copy b{font-size:13px}.footer .primary small{font-size:9px}.footer-info{width:100%;flex-basis:100%;justify-content:space-between}.stage-card{flex:1;padding:0 8px;min-width:0}.stage-card small{font-size:7px;letter-spacing:1px;margin-bottom:2px}.stage-card strong{font-size:10px}.spectator-footer{font-size:11px}.sidebar .panel{padding:18px}.modal-head{padding:20px 20px 13px}.modal-body{padding:0 20px 22px}.modal-head h2{font-size:24px}.toast{bottom:150px}.role-reveal h3{font-size:36px!important}}
@media(max-width:370px){.brand-mark{display:none}.room-nav{gap:4px}.room-code{padding:6px}.room-nav .quiet{padding:6px}.hero h1,.in-game .hero h1{font-size:22px}.count{padding:7px 6px}.count strong{font-size:20px}.board{height:470px!important;--orbit-size:210px}.table-center,.in-game .table-center{width:125px}.table-center h2,.in-game .table-center h2{font-size:20px}.player,.in-game .player{width:100px;gap:5px}.player .avatar{width:35px;height:35px;font-size:11px}.player-name{font-size:9px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* Online rooms, private cards and administration. */
.entry-screen{width:100%;min-height:100svh;min-height:100dvh;padding:max(28px,env(safe-area-inset-top)) max(20px,env(safe-area-inset-right)) max(28px,env(safe-area-inset-bottom));isolation:isolate;overflow-x:clip}
.entry-card{width:min(360px,100%);margin:auto;text-align:center;min-width:0}.entry-glow{left:50%;top:50%;transform:translate(-50%,-50%);z-index:-1}.entry-card .entry-lead{margin-inline:auto}.entry-card h1{padding-left:8px}.entry-card form{text-align:left}.entry-card form .primary{justify-content:center}.entry-card .entry-foot{line-height:1.8}.entry-card input{height:49px}.entry-mark{margin-bottom:12px}.auth-tabs button{min-height:46px}
.menu-tools{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0}.room-directory{margin-top:45px}.directory-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.directory-heading h2{font-weight:400;font-size:28px}.directory-heading button{font-size:11px}.room-list-card{border:1px solid var(--line);background:#17231e;border-radius:16px;padding:22px;min-width:0}.room-list-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;gap:10px}.room-number{font-family:Georgia,serif;font-size:42px;color:var(--gold);line-height:1}.room-state{font-size:10px;color:var(--green);border:1px solid #86c5a02b;padding:5px 8px;border-radius:20px}.room-state.running{color:var(--muted)}.room-list-card h3{font-size:15px;font-weight:500;overflow-wrap:anywhere}.room-list-card p{font-size:12px;color:var(--muted);margin:8px 0}.room-roles{display:flex;align-items:center;gap:14px;margin:15px 0;flex-wrap:wrap}.room-roles span{display:flex;gap:4px;align-items:center;font-size:11px;color:var(--role)}.room-roles svg{width:17px;height:17px}.room-roles small{font-size:10px;color:var(--muted)}.room-list-card .room-names{min-height:36px;line-height:1.7;overflow-wrap:anywhere}.room-list-card>button{width:100%;justify-content:space-between;margin-top:12px}.room-empty{padding:30px;border:1px dashed var(--line);border-radius:16px;color:var(--muted);font-size:13px;text-align:center}#roomList{display:grid;grid-template-columns:1fr 1fr;gap:16px}.host{--role:var(--gold)}.player.host .avatar{border-color:var(--gold);color:var(--gold);background:#343325}.room-nav{flex-wrap:wrap}.room-code{letter-spacing:.5px;white-space:nowrap}.room-nav .quiet{white-space:nowrap}.tracers .vote-trace{stroke-dasharray:none;animation:none;opacity:.5}
.card-dialog{background:#121d18;max-width:430px;width:calc(100% - 24px);border-color:#b89c6155;overflow:auto}.card-dialog .modal-head h2{font:12px Arial,sans-serif;letter-spacing:3px;text-transform:uppercase;color:var(--muted)}.card-dialog .modal-body{padding:0 24px 26px}.reveal-stage{text-align:center}.reveal-card{display:block;width:100%;max-width:300px;height:390px;margin:0 auto;padding:0;perspective:1300px;background:none;border:0}.reveal-card:active:not(:disabled){transform:none}.card-inner{display:block;position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform 1s cubic-bezier(.23,.8,.24,1)}.flipped .card-inner{transform:rotateY(180deg)}.card-face{position:absolute;inset:0;border-radius:16px;backface-visibility:hidden;-webkit-backface-visibility:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:25px 22px;overflow:hidden}.card-back{background:repeating-linear-gradient(45deg,transparent,transparent 9px,#e9c78306 10px,#e9c78306 11px),radial-gradient(ellipse,#304333,#101d17);border:1px solid #a99158;box-shadow:inset 0 0 0 8px #13231c,inset 0 0 0 9px #a9915855,0 12px 35px #0005}.card-back:before{content:'';position:absolute;inset:38px 25px;border:1px solid #e9c78333;border-radius:45%}.card-corner{position:absolute;top:18px;left:21px;font:21px Georgia,serif;color:var(--gold)}.card-corner.bottom{top:auto;left:auto;right:21px;bottom:18px;transform:rotate(180deg)}.card-emblem{display:grid;place-items:center;width:100px;height:100px;border:1px solid #b7a16766;transform:rotate(45deg);margin-bottom:37px;box-shadow:0 0 0 9px #b7a1670a}.card-emblem svg{transform:rotate(-45deg);width:60px;height:60px;color:var(--gold);stroke-width:1}.card-brand{font:24px Georgia,serif;letter-spacing:7px;color:var(--gold);padding-left:7px}.card-caption{font-size:10px;letter-spacing:1px;color:#b6bc9f;margin-top:10px}.card-front{transform:rotateY(180deg);background:radial-gradient(ellipse at 50% 25%,#344034,#17221c 70%);border:1px solid var(--role);box-shadow:inset 0 0 0 8px #17221c,inset 0 0 0 9px #a9af8933}.card-front>.eyebrow{color:var(--role);font-size:9px;letter-spacing:3px}.card-front>svg{width:70px;height:70px;margin:25px 0 15px;color:var(--role);stroke-width:1}.card-front>strong{font:35px Georgia,serif;color:var(--role);line-height:1.1}.role-description{font-size:12px;color:#c0c9ba;line-height:1.7;margin-top:18px}.mafia-team{font-size:11px;line-height:1.7;margin-top:17px;padding-top:14px;border-top:1px solid #ed858244;color:var(--red)}.flip-prompt{font-size:11px;color:var(--gold);margin:20px 0;animation:promptFade 1.8s ease-in-out infinite}.flip-prompt.revealed{animation:none;color:var(--muted)}.reveal-stage .primary{width:100%}
.night-envelope{position:fixed;z-index:30;top:max(80px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);width:min(350px,calc(100% - 28px));filter:drop-shadow(0 12px 25px #0007);animation:envelopeEnter .5s ease-out}.night-flip{width:100%;height:145px;padding:0;perspective:900px;display:block}.night-flip:active:not(:disabled){transform:none}.night-inner{display:block;position:relative;width:100%;height:100%;transition:transform .8s cubic-bezier(.2,.8,.2,1);transform-style:preserve-3d}.night-flip.flipped .night-inner{transform:rotateX(180deg)}.night-back,.night-front{position:absolute;inset:0;border:1px solid #99804b;border-radius:12px;backface-visibility:hidden;-webkit-backface-visibility:hidden;background:linear-gradient(135deg,#2c3a2b,#17231c);display:flex;align-items:center;justify-content:center;gap:15px;padding:20px}.night-back:before{content:'';position:absolute;inset:7px;border:1px solid #e9c78322;border-radius:7px}.night-back>svg{width:31px;height:31px;color:var(--gold)}.night-back b{font:24px Georgia,serif;display:block;color:var(--gold)}.night-back small{font-size:10px;color:var(--muted);display:block;margin-top:5px;animation:promptFade 1.8s infinite}.seal{font-size:25px;color:var(--gold);margin-left:7px}.night-front{transform:rotateX(180deg);flex-direction:column;gap:12px}.night-front>span{display:flex;align-items:center;gap:10px;text-align:left;color:var(--role)}.night-front b{font-size:13px;font-weight:500;line-height:1.5}.night-front svg{width:25px;height:25px}.night-timer{display:block;height:2px;background:var(--gold);margin:0 10px;transform-origin:left;animation:nightCountdown var(--remaining) linear forwards}
.death-skull{display:none;position:absolute;left:5px;top:-20px;color:#dfbdb0;pointer-events:none}.dying .death-skull{display:block;animation:soulRise 1.9s ease-out both}.death-skull svg{width:42px;height:42px;filter:drop-shadow(0 0 12px #ed858280)}.player.dying .avatar{animation:deathFlash 1.9s ease-out!important}.player.dying .player-copy{animation:deathName 1.9s ease-out}.admin-dialog{width:min(690px,calc(100% - 24px));max-width:none}.admin-intro{font-size:12px;color:var(--muted);margin-bottom:20px}.admin-search{display:block;font-size:12px;color:var(--muted)}.admin-search input{display:block;width:100%;background:#101c16;border:1px solid var(--line);border-radius:10px;padding:12px;color:var(--text);font-size:16px;margin:8px 0 18px}.admin-users{display:grid;gap:12px}.admin-user{border:1px solid var(--line);border-radius:12px;padding:16px}.admin-user[hidden]{display:none}.admin-user-title{display:flex;justify-content:space-between;gap:12px;align-items:center;overflow-wrap:anywhere}.admin-user-title small{color:var(--gold);font-size:10px;text-align:right}.admin-ip{color:var(--muted);font-size:10px;margin:6px 0 12px;overflow-wrap:anywhere}.admin-user-actions{display:flex;flex-wrap:wrap;gap:7px}.admin-user-actions button{font-size:11px;padding:7px 10px}.admin-back{margin-top:18px}.password-value{font-family:monospace;font-size:20px;color:var(--gold);overflow-wrap:anywhere;margin:20px 0;padding:15px;background:#e9c78308;border-radius:10px}.ip-panel{margin-top:30px;border-top:1px solid var(--line);padding-top:22px}.ip-panel h3{font:23px Georgia,serif}.blocked-ips{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px;font-size:12px}.blocked-ips button{font-size:11px;overflow-wrap:anywhere}.ip-panel form>button{margin-top:12px}
@keyframes promptFade{50%{opacity:.4}}@keyframes nightCountdown{to{transform:scaleX(0)}}@keyframes envelopeEnter{from{opacity:0;translate:0 -20px}to{opacity:1;translate:0 0}}@keyframes soulRise{0%{opacity:0;transform:translateY(24px) scale(.5)}20%{opacity:1;transform:translateY(0) scale(1.1)}65%{opacity:1}100%{opacity:0;transform:translateY(-55px) scale(.8)}}@keyframes deathFlash{0%,25%{background:#653c35;color:#ffe8de;border-color:#ffb29f;filter:brightness(1.6)}100%{filter:brightness(.8)}}@keyframes deathName{0%{opacity:1}100%{opacity:.5}}
@media(max-width:540px){.home-main{margin:6vh 0 35px}.home-main h1{font-size:clamp(34px,10vw,43px)}#roomList{grid-template-columns:1fr}.room-list-card{padding:18px}.directory-heading h2{font-size:24px}.room-directory{margin-top:30px}.room-nav{max-width:72%;justify-content:flex-end;gap:4px}.room-nav .quiet{font-size:9px;padding:5px 7px}.room-code{font-size:9px;padding:5px 7px}.topbar,.in-game .topbar{height:auto;min-height:72px;padding:10px 0}.room-nav #leaveButton{font-size:9px}.room-nav .live-badge{display:none}.hero-sub{max-width:230px}.card-dialog .modal-body{padding:0 20px 22px}.reveal-card{height:min(390px,57svh);min-height:280px;max-width:285px}.card-front{padding:20px}.card-front>strong{font-size:30px}.card-front>svg{width:53px;height:53px;margin:18px 0 12px}.role-description{font-size:11px;margin-top:13px}.mafia-team{font-size:10px;padding-top:9px;margin-top:10px}.flip-prompt{font-size:10px;margin:17px 0}.entry-card h1{font-size:clamp(40px,14vw,52px);letter-spacing:6px;padding-left:6px}.entry-screen{padding-inline:24px}.entry-lead{font-size:12px;max-width:270px}.admin-user-title{align-items:flex-start}.admin-user-actions button{flex:1;justify-content:center;white-space:nowrap}.admin-dialog .modal-head h2{font-size:22px}.night-envelope{top:80px}}
@media(max-height:680px){.entry-screen{padding-top:20px;padding-bottom:20px}.entry-card h1{margin-block:4px;font-size:44px}.entry-mark{font-size:28px;margin-bottom:4px}.entry-card .auth-tabs{margin:18px 0 12px}.entry-foot{margin-top:18px}.card-dialog .modal-head{padding-top:12px;padding-bottom:10px}.card-back:before{inset:30px 23px}.card-emblem{width:72px;height:72px;margin-bottom:25px}.card-emblem svg{width:48px;height:48px}}
@media(prefers-reduced-motion:reduce){.card-inner,.night-inner{transition:none}.night-timer{animation:nightCountdown var(--remaining) linear forwards!important}.death-skull,.flip-prompt,.night-back small{animation:none}.dying .death-skull{opacity:1;transform:none}}
/* Pulse the visible content while keeping the tap target stationary. */
.player.awaiting{animation:none!important}
.player.awaiting:not(.old) .avatar,.player.awaiting:not(.old) .player-copy{animation:playerContentPulse 1.8s ease-in-out infinite}
@keyframes playerContentPulse{0%,100%{opacity:.58;transform:scale(.98)}50%{opacity:1;transform:scale(1.05)}}
@media(prefers-reduced-motion:reduce){.player.awaiting:not(.old) .avatar,.player.awaiting:not(.old) .player-copy{animation:none!important}}
.auto-sync{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:10px;letter-spacing:.04em}.auto-sync i{width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 10px #86c5a088;animation:autoSync 1.5s ease-in-out infinite}.night-marks{position:absolute;left:50%;bottom:-10px;display:flex;gap:3px;transform:translateX(-50%);z-index:4}.night-mark{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#142019;border:1px solid currentColor;box-shadow:0 3px 12px #0009}.night-mark svg{width:11px;height:11px}.night-mark.mafia{color:#ed8582}.night-mark.girl{color:#e8cd76}.night-mark.doctor{color:#86c5a0}.admin-rooms{margin:0 0 24px;padding:17px;border:1px solid var(--line);border-radius:14px;background:#111b17}.admin-rooms h3{font-family:Georgia,serif;font-weight:400;margin-bottom:10px}.admin-room{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-top:1px solid var(--line)}.admin-room span{display:flex;flex-direction:column;gap:4px;min-width:0}.admin-room small{color:var(--muted);font-size:10px}.admin-room .quiet{flex-shrink:0}.victory-effects{position:fixed;inset:0;overflow:hidden;pointer-events:none}.victory-effects i{position:absolute;left:calc((var(--i) * 5.7%));top:-10%;width:3px;height:28vh;background:linear-gradient(transparent,currentColor,transparent);opacity:.28;transform:rotate(calc(-18deg + var(--i) * 2deg));animation:victoryFall calc(2.6s + var(--i) * .09s) linear infinite;animation-delay:calc(var(--i) * -.17s)}.victory-screen.mafia-victory{background:radial-gradient(circle at 50% 38%,#561d20 0%,#241516 38%,#090c0b 82%)}.victory-screen.mafia-victory .victory-heading strong,.victory-screen.mafia-victory .victory-emblem{color:#ff5c58;text-shadow:0 0 38px #d31e2b88}.victory-screen.mafia-victory .victory-effects{color:#d6393f}.victory-screen.civilian-victory{background:radial-gradient(circle at 50% 35%,#425633 0%,#1c2a20 43%,#0a100d 84%)}.victory-screen.civilian-victory .victory-heading strong,.victory-screen.civilian-victory .victory-emblem{color:#ecd27d;text-shadow:0 0 42px #d5bd6870}.victory-screen.civilian-victory .victory-effects{color:#ead988}@keyframes autoSync{50%{opacity:.35;transform:scale(.72)}}@keyframes victoryFall{to{transform:translateY(130vh) rotate(calc(-18deg + var(--i) * 2deg))}}@media(max-width:540px){.auto-sync{font-size:8px}.admin-room{align-items:flex-start}.admin-room .quiet{padding:8px 9px;font-size:9px}.night-mark{width:17px;height:17px}.night-mark svg{width:9px;height:9px}}@media(prefers-reduced-motion:reduce){.auto-sync i,.victory-effects i{animation:none}}
/* Voting controls and host tools */
.game-extra{max-width:1396px;margin:0 auto 9px;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.game-extra:has(#hostControls.hidden):has(#abstainControl.hidden):has(#skipTally:empty){display:none}.game-extra #hostControls{display:flex;gap:8px}.game-extra label{display:flex;gap:9px;align-items:center;font-size:12px;color:#d6dccf;cursor:pointer}.game-extra input{width:18px;height:18px;accent-color:var(--gold)}.game-extra small{font-size:10px;color:var(--muted)}.game-extra .quiet{font-size:11px;padding:7px 10px}.game-extra .hidden{display:none!important}.result-role{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);color:var(--role)}.result-role svg{width:20px;height:20px}.result-role span{flex:1}.result-role strong{font-size:24px}.modal-body textarea{width:100%;resize:vertical;min-height:110px;border-radius:12px;padding:13px;background:#101b16;color:var(--text);border:1px solid #3b4d3c;font:inherit}.night-close{position:absolute;right:7px;top:2px;z-index:5;width:32px;height:32px;color:var(--gold);font-size:25px}.night-envelope .night-flip{padding-right:28px}#noticeText{white-space:pre-wrap;overflow-wrap:anywhere;font-size:18px;line-height:1.6}.vote-number.vote-dim,#skipTally.vote-dim{opacity:.28;filter:grayscale(1)}.vote-number.vote-leading,#skipTally.vote-leading{animation:voteLeader .5s ease-in-out 4;background:#efd28a;color:#17221b;box-shadow:0 0 22px #e9c78388}.vote-number.reveal{animation:none}.vote-trace{opacity:.62!important}.counts:empty{display:none}@keyframes voteLeader{50%{opacity:.38;transform:scale(1.2)}}@media(max-width:540px){.game-extra{gap:5px;margin-bottom:7px}.game-extra label{font-size:11px}.game-extra small{font-size:9px}.game-extra #hostControls{gap:5px}.footer{min-height:145px}.shell{padding-bottom:205px!important}.game-extra #skipTally{margin-left:auto}.game-extra .quiet{font-size:10px;padding:6px 9px}}@media(prefers-reduced-motion:reduce){.vote-number.vote-leading,#skipTally.vote-leading{animation:none}}
