:root{color-scheme:light;--ink:#182d2a;--muted:#6b746d;--paper:#f5f3eb;--line:#dcded1;--red:#ad473b;--red-bg:#f4e3dc;--blue:#376b86;--blue-bg:#dfeaf0;--gold:#e8b874;--white:#fffef9;font-family:Segoe UI,Arial,sans-serif;font-size:15px;color:var(--ink);background:var(--paper)}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #b67c26;outline-offset:4px}h1,h2,h3,p{margin-top:0}h1,h2,h3{line-height:1.14}h2{font-size:1.3rem}h3{font-size:1.08rem}p{line-height:1.65}small{font-size:.78rem}.topbar{height:94px;max-width:1320px;margin:auto;padding:0 48px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:13px;text-decoration:none;font-size:1.25rem;font-weight:750;letter-spacing:-.5px}.brand-mark{display:block;flex-shrink:0;height:43px;width:43px;border-radius:12px}.connection{font-size:.78rem;color:#4f7255}.connection.offline{color:#a44432}main{max-width:1320px;padding:0 48px 52px;margin:auto;min-height:calc(100vh - 185px)}footer{max-width:1224px;margin:auto;padding:25px 0 30px;border-top:1px solid var(--line);font-size:.77rem;color:var(--muted);display:flex;justify-content:space-between}.hero{display:grid;grid-template-columns:1.1fr 1fr;gap:55px;align-items:center;padding:78px 0 66px}.eyebrow{font-size:.68rem;font-weight:750;letter-spacing:2.1px;margin-bottom:20px}.hero h1{white-space:pre-line;font-family:Georgia,'Times New Roman',serif;font-weight:500;font-size:clamp(3rem,4.9vw,4.9rem);letter-spacing:-3px;line-height:1.02;margin-bottom:25px}.lead{max-width:520px;font-size:1.03rem;color:var(--muted);line-height:1.8;margin-bottom:28px}.hero-detail{font-size:.72rem;letter-spacing:.3px;margin:18px 0 0;color:var(--muted)}.button{border:1px solid #cfd4c5;border-radius:8px;background:transparent;color:var(--ink);padding:12px 19px;font-size:.86rem;font-weight:650;line-height:1.3;transition:background .15s,transform .15s;min-height:43px}.button:hover:enabled{background:#e8e9df}.button:active:enabled{transform:translateY(1px)}.button.primary{background:var(--ink);border-color:var(--ink);color:var(--white);padding:14px 22px}.button.primary:hover:enabled{background:#2d4841}.button.subtle{background:transparent;border-color:transparent;color:var(--muted);padding-left:12px;padding-right:12px}.button.selected{background:#e1eadc;border-color:#b4c6a8;color:#36562d}.button:disabled{opacity:.45}.word-art{height:340px;position:relative;max-width:450px;width:100%;margin:auto}.word-art:before{content:'';position:absolute;inset:30px 3px 0;background:#e8e8db;border-radius:50%;transform:rotate(-10deg)}.art-card{position:absolute;width:205px;height:140px;border-radius:12px;padding:16px 18px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:0 12px 18px #182d2a12;border:1px solid #182d2a12}.art-card span:first-child{font-size:.64rem;opacity:.65}.art-card strong{font:500 2rem Georgia,serif;letter-spacing:1px;align-self:center}.art-card span:last-child{font-size:.45rem;letter-spacing:2px;opacity:.6;text-align:center}.art-cream{background:#e8d9bc;left:12px;top:21px;transform:rotate(-12deg)}.art-red{background:#ae4c3f;color:#fff4df;right:5px;top:60px;transform:rotate(9deg)}.art-blue{background:#49768b;color:#f2f6ef;left:18px;bottom:21px;transform:rotate(5deg)}.art-dark{background:#233a35;color:#e7bc7b;right:15px;bottom:2px;transform:rotate(-9deg)}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:15px}.section-heading h2{margin:0;font-size:1.25rem}.muted{color:var(--muted)}.room-list>.section-heading{padding-bottom:22px}.room-list .muted{font-size:.8rem}.empty-state{border:1px dashed #c9cebf;border-radius:14px;text-align:center;padding:38px 20px;background:#efefe4}.empty-icon{font-size:2.2rem;display:block;margin-bottom:14px;color:#8d9e7b}.empty-state h3{margin-bottom:8px}.empty-state p{margin:0}.quick-rules{display:grid;grid-template-columns:repeat(3,1fr);gap:48px;margin-top:55px;padding-top:30px;border-top:1px solid var(--line)}.quick-rules h3{font-family:Georgia,serif;font-size:1.45rem;font-weight:500;margin:12px 0}.quick-rules p{font-size:.86rem;margin:0}.quick-rules .eyebrow{color:#8b956f}.room-row{display:flex;align-items:center;gap:22px;padding:24px 20px;border-top:1px solid var(--line)}.room-row:last-child{border-bottom:1px solid var(--line)}.room-row h3{margin-bottom:5px}.room-row p{margin:0}.room-row>div{flex:1;min-width:0;overflow-wrap:anywhere}.room-symbol{font-size:1.8rem;background:#e8e9dc;width:48px;height:48px;text-align:center;border-radius:10px;padding:5px}.occupancy{font-size:1.1rem;font-weight:600;min-width:40px}.panel{padding:25px;background:var(--white);border:1px solid var(--line);border-radius:12px;margin-bottom:20px}.entry-panel{border-color:#bfcbb6}.entry-form{display:flex;align-items:end;gap:15px;flex-wrap:wrap}.field{display:flex;flex-direction:column;gap:8px;font-size:.8rem;font-weight:600;flex:1;min-width:160px}input,select{background:#fffef9;color:var(--ink);border:1px solid #c8cebe;border-radius:7px;padding:12px;min-height:44px;width:100%}input:disabled{opacity:.65}.notice,.error{padding:17px 22px;border:1px solid #d9c18b;background:#fbf0d8;border-radius:9px;margin:20px 0;line-height:1.5}.error{border-color:#d3a99b;background:#f9e9e3;color:#8e3024;position:sticky;bottom:15px;box-shadow:0 5px 15px #182d2a10;z-index:10}.room-utility{display:flex;align-items:center;justify-content:space-between;padding:22px 0;font-size:.78rem}.page-title{font:500 clamp(2.2rem,5vw,3.6rem) Georgia,serif;letter-spacing:-1px;margin-bottom:12px;overflow-wrap:anywhere}.small-lead{max-width:780px;font-size:.95rem}.call-note{padding:15px 20px;background:#e8ebdf;border-radius:8px;font-size:.83rem;margin:25px 0}.teams-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.team-panel{border-top:4px solid var(--line)}.team-panel.red{border-top-color:var(--red)}.team-panel.blue{border-top-color:var(--blue)}.team-panel.red h2{color:var(--red)}.team-panel.blue h2{color:var(--blue)}.team-score{font-family:Georgia,serif;font-size:1.65rem}.players{list-style:none;margin:18px 0;padding:0}.player-row{display:flex;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid #e9ebdf}.player-row:last-child{border:0}.avatar{width:32px;height:32px;background:#eaece1;display:grid;place-items:center;border-radius:50%;flex-shrink:0;font-weight:600;font-size:.75rem}.player-info{flex:1;min-width:0}.player-info strong{font-size:.88rem;display:block;overflow-wrap:anywhere}.player-info small{display:block;color:var(--muted);margin-top:4px;font-size:.7rem}.player-status{font-size:.67rem;color:var(--muted);white-space:nowrap}.ready{color:#50713e}.role-choices{display:flex;gap:10px;flex-wrap:wrap}.role-choices .button{flex:1;font-size:.76rem}.empty-team{padding:15px 0;font-size:.85rem}.lobby-controls{display:flex;align-items:center;gap:15px;flex-wrap:wrap}.lobby-controls>h2{width:100%;margin-bottom:8px}.duration-field{flex:0 0 210px}.lobby-status{width:100%;border-top:1px solid var(--line);padding-top:18px;margin-top:10px}.lobby-status p{margin-bottom:8px;font-size:.9rem}.requirements{font-size:.8rem;color:var(--muted);line-height:1.8;padding-left:20px;margin:0}.game-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:8px 0 26px}.game-heading .eyebrow{margin-bottom:12px}.game-title{font:500 clamp(1.8rem,3vw,2.8rem) Georgia,serif;margin:0;letter-spacing:-.7px}.role-badge{display:flex;flex-direction:column;gap:5px;padding:12px 22px;border-radius:9px;font-size:.7rem;flex-shrink:0}.role-badge strong{font-size:1rem}.role-badge.red{background:var(--red-bg);color:var(--red)}.role-badge.blue{background:var(--blue-bg);color:var(--blue)}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:26px}.game-primary{min-width:0}.game-aside .panel{padding:18px}.game-aside .player-row{flex-wrap:wrap}.game-aside .player-status{margin-left:42px;margin-top:-4px}.game-aside .team-score{font-size:2rem}.game-aside .team-panel .players{margin:10px 0 0}.active-team{box-shadow:0 0 0 2px #d2d9c8}.turn-panel{display:flex;align-items:center;gap:20px;flex-wrap:wrap;padding:22px 24px;min-height:110px}.turn-panel.red{background:var(--red-bg);border-color:#e0c6ba}.turn-panel.blue{background:var(--blue-bg);border-color:#bfcfd8}.turn-info{flex:1}.turn-info .eyebrow{display:block;margin-bottom:10px;letter-spacing:1px}.turn-info h2{font-size:1.1rem;margin:0;font-weight:550}.clue-word{display:flex;align-items:center;gap:14px;margin-bottom:8px}.clue-word strong{font:500 2.2rem Georgia,serif;overflow-wrap:anywhere}.clue-count{border:1px solid currentColor;border-radius:50%;font-weight:600;width:30px;height:30px;display:grid;place-items:center}.turn-info>.muted{font-size:.78rem}.timer{font:500 2.4rem Georgia,serif;min-width:83px;text-align:right;font-variant-numeric:tabular-nums}.timer.urgent{color:#a52e20}.clue-form{display:flex;align-items:end;gap:12px;width:100%}.clue-form .field:nth-child(2){flex:0 0 80px;min-width:60px}.clue-form .button{white-space:nowrap}.board-help{font-size:.78rem;color:var(--muted);margin:0 0 13px}.board{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.card{padding:10px 10px 8px;height:108px;border:1px solid #d2c9b4;background:#e9dfc9;border-radius:9px;display:flex;flex-direction:column;align-items:stretch;justify-content:space-between;color:var(--ink);min-width:0;box-shadow:0 3px 0 #cfc6b0;transition:transform .12s,border .12s}.card:enabled:hover{transform:translateY(-3px);border-color:#8c774f}.card:disabled{cursor:default}.card-index{font-size:.54rem;text-align:left;opacity:.7}.card-word{font-size:clamp(.65rem,1.2vw,.97rem);font-weight:700;letter-spacing:.3px;text-transform:uppercase;overflow-wrap:anywhere}.card-type{font-size:.52rem;letter-spacing:.1px;opacity:.85}.card.red{background:#b4594a;color:#fff8eb;border-color:#934537;box-shadow:0 3px 0 #8e4035}.card.blue{background:#4a7b92;color:#fffef5;border-color:#386579;box-shadow:0 3px 0 #2e566a}.card.neutral{background:#d8c9ac;color:#4e4837;border-color:#bfb090}.card.assassin{background:#233730;color:#e6bd7c;border-color:#13261f;box-shadow:0 3px 0 #10241d}.card.revealed{opacity:.68;box-shadow:none;transform:translateY(2px);border-style:dashed}.card.proposed{outline:3px solid #c3913f;outline-offset:1px;transform:translateY(-3px)}.voting{margin-top:24px;background:#edeede}.voting h2{font-size:1.15rem;margin-bottom:8px}.voting p{font-size:.85rem}.votes{display:flex;gap:9px;flex-wrap:wrap;margin:15px 0 20px}.vote{padding:6px 10px;background:#fffef5;border-radius:6px;font-size:.75rem}.vote.approved{background:#d6e4c9;color:#3c612f}.voting .button{margin-right:8px;margin-top:5px}.history{max-height:530px;overflow:auto}.history h2{font-size:1.1rem}.history ol{list-style:none;margin:0;padding:0}.history li{border-left:2px solid var(--line);padding:2px 0 2px 12px;margin:16px 0;font-size:.8rem;line-height:1.5}.history li.red{border-color:var(--red)}.history li.blue{border-color:var(--blue)}.history li small{display:block;color:var(--muted);font-size:.62rem;margin-bottom:4px}.result{padding:32px;border:1px solid var(--line);border-radius:14px;margin-bottom:26px;background:#e7ecdc}.result h1{font:500 2.3rem Georgia,serif}.result p{margin-bottom:16px}.result.red{background:var(--red-bg)}.result.blue{background:var(--blue-bg)}
@media(min-width:1450px){.hero{padding-top:90px;padding-bottom:85px}}
@media(max-width:1000px){.topbar{padding:0 28px}main{padding-left:28px;padding-right:28px}footer{margin:0 28px}.hero{gap:25px}.hero h1{font-size:3.5rem}.word-art{transform:scale(.85);transform-origin:center}.game-layout{grid-template-columns:1fr}.game-aside{display:grid;grid-template-columns:1fr 1fr;gap:20px}.game-aside .history{grid-column:1/-1;max-height:320px}.card-word{font-size:1rem}.game-aside .player-row{flex-wrap:nowrap}.game-aside .player-status{margin:0}.game-aside .panel{margin-bottom:0}}
@media(max-width:700px){.topbar{height:78px;padding:0 20px}.brand{font-size:1.1rem}.brand-mark{width:36px;height:36px}.connection{font-size:.65rem;max-width:135px;text-align:right}main{padding:0 20px 35px}.hero{grid-template-columns:1fr;padding:46px 0 36px;gap:10px}.hero h1{font-size:3.3rem;letter-spacing:-2px}.hero .eyebrow{font-size:.58rem}.lead{font-size:.94rem}.word-art{height:290px;max-width:390px;transform:scale(.9);margin-top:10px}.art-card{width:185px;height:125px}.art-card strong{font-size:1.8rem}.quick-rules{gap:24px;grid-template-columns:1fr;margin-top:36px}.quick-rules>div{display:grid;grid-template-columns:34px 1fr;column-gap:15px}.quick-rules .eyebrow{grid-row:1/3;margin-top:17px}.quick-rules h3{margin-bottom:8px}.quick-rules p{grid-column:2}.room-list>.section-heading{align-items:baseline}.section-heading h2{font-size:1.1rem}.room-row{gap:12px;padding:20px 0;flex-wrap:wrap}.room-symbol{display:none}.room-row .button{padding:10px 14px;font-size:.78rem}.room-row h3{font-size:.95rem}.occupancy{font-size:.9rem;min-width:26px}.entry-form{display:grid;grid-template-columns:1fr}.entry-panel{padding:20px}.teams-grid{grid-template-columns:1fr;gap:0}.panel{padding:20px}.role-choices{flex-wrap:nowrap}.player-status{font-size:.65rem}.page-title{font-size:2.6rem}.room-utility{padding:18px 0;gap:10px}.room-utility>.button{font-size:.72rem}.lobby-controls .duration-field{flex-basis:100%}.lobby-controls .button{flex:1;white-space:nowrap}.game-heading{align-items:start;gap:10px}.game-title{font-size:1.8rem}.role-badge{padding:9px 12px;font-size:.58rem}.role-badge strong{font-size:.8rem}.game-heading .eyebrow{font-size:.58rem;overflow-wrap:anywhere}.game-layout{gap:22px}.board{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.card{height:98px}.card-word{font-size:.88rem}.card-type{font-size:.5rem}.turn-panel{padding:18px}.clue-form{flex-wrap:wrap}.clue-form .field:first-child{min-width:140px}.clue-form .button{width:100%}.game-aside{grid-template-columns:1fr;gap:16px}.game-aside .history{grid-column:auto}.timer{font-size:2rem;min-width:70px}.clue-word strong{font-size:1.85rem}.voting .button{width:100%;margin-right:0}.result{padding:24px}.result h1{font-size:1.9rem}footer{margin:0 20px;gap:15px;flex-direction:column;font-size:.68rem}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
