@import"https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Fraunces:opsz,wght@9..144,500;9..144,600;9..144,700&family=Inter:wght@400;500;600;700&display=swap";:root{font-family:Inter,ui-sans-serif,system-ui,sans-serif;color:#eee9dc;background:#19211e;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html,body,#root{width:100%;min-width:320px;min-height:100%;margin:0}body{min-height:100vh;background:#19211e}button,input,select,textarea{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid rgba(226,139,84,.55);outline-offset:2px}a{color:inherit}#root{width:100%;height:100%;margin:0;padding:0;text-align:initial}.home{min-height:100vh;display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,430px);align-items:center;gap:clamp(3rem,12vw,12rem);padding:clamp(2rem,7vw,7rem);background:radial-gradient(circle at 18% 22%,rgba(219,143,84,.14),transparent 28rem),radial-gradient(circle at 78% 70%,rgba(134,171,129,.13),transparent 25rem),#19211e}.homeIntro{max-width:680px}.homeKicker,.homeHint{margin:0;color:#b8c0aa;font:500 .72rem/1.4 DM Mono,monospace;letter-spacing:.09em;text-transform:uppercase}.project-title{margin:.55rem 0 1rem;color:#f5efe3;font:600 clamp(3.1rem,8vw,6.8rem)/.91 "Fraunces",Georgia,serif;letter-spacing:-.075em}.homeDescription{color:#d0d4c7;margin:0;font:400 clamp(1rem,1.7vw,1.25rem)/1.55 "Fraunces",Georgia,serif}.homeCard{width:100%;padding:.5rem;color:#27352e;background:#efe9dc;border:1px solid rgba(255,255,255,.54);border-radius:18px;box-shadow:0 30px 80px #030a074d}.homeMode{display:grid;grid-template-columns:1fr 1fr;padding:.15rem;border-radius:12px;background:#e2dbcb}.homeMode button{padding:.65rem .5rem;border:0;border-radius:9px;color:#637068;background:transparent;font-size:.82rem;font-weight:700}.homeMode button.homeModeActive{color:#24352e;background:#f8f4eb;box-shadow:0 2px 7px #2f3a301f}.homeFields{display:grid;gap:1rem;padding:1.8rem 1.35rem 1.2rem}.homeFields label{display:grid;gap:.42rem;color:#58655d;font-size:.75rem;font-weight:700}.homeFields input{width:100%;padding:.75rem 0;color:#1f3028;border:0;border-bottom:1px solid #bdc5b5;border-radius:0;outline:none;background:transparent;font-size:1rem}.homeFields input::placeholder{color:#9aa397}.homeFields input:focus{border-color:#bd6142}.roomCodeInput{font-family:DM Mono,monospace;letter-spacing:.09em;text-transform:uppercase}.homeSubmit{width:calc(100% - 2.7rem);display:flex;align-items:center;justify-content:space-between;margin:0 1.35rem;padding:.85rem 1rem;color:#fff9ee;background:#b55339;border:1px solid #a54631;border-radius:10px;font-weight:700;transition:transform .16s ease,background .16s ease}.homeSubmit:hover:not(:disabled){background:#9e432e;transform:translateY(-1px)}.homeSubmit span{font-size:1.2rem}.homeSubmit:disabled{opacity:.48;cursor:default}.homeHint{padding:1rem 1.35rem .75rem;color:#768078;font-size:.64rem;letter-spacing:.02em;text-transform:none}@media(max-width:760px){.home{grid-template-columns:1fr;gap:2.5rem;padding:2.25rem 1.25rem}.homeCard{max-width:430px}}.roomShell{--ink: #19211e;--forest: #29372f;--paper: #f1ede3;--paper-muted: #e4dfd1;--line: #d6d0c0;--text: #28332d;--muted: #70766c;--accent: #af5138;min-height:100vh;display:grid;grid-template-columns:minmax(205px,238px) minmax(460px,1fr) minmax(265px,295px);grid-template-rows:auto minmax(0,1fr);gap:12px 14px;padding:12px;color:var(--text);background:radial-gradient(circle at 50% -30%,#405648 0,#26382f 38%,#19211e)}.roomAppBar{grid-column:1 / -1;display:flex;justify-content:space-between;align-items:center;min-height:34px;color:#e5e3d7}.roomBrand{display:inline-flex;align-items:center;gap:.55rem;color:inherit;text-decoration:none;font:600 1.1rem/1 Fraunces,Georgia,serif;letter-spacing:-.03em}.roomBrandMark{display:grid;place-items:center;width:22px;height:22px;color:#f4dca0;border:1px solid rgba(244,220,160,.5);border-radius:50%;font:.7rem/1 DM Mono,monospace}.roomAppBarMessage{margin:0;color:#b9c2b4;font:.65rem/1 DM Mono,monospace;letter-spacing:.06em;text-transform:uppercase}.leftRail,.centerStage,.rightRail,.rightTop,.rightBottom{min-width:0;min-height:0}.rightRail{display:grid;grid-template-rows:auto minmax(180px,1fr);gap:14px}.panel{overflow:hidden;min-height:0;color:var(--text);background:var(--paper);border:1px solid rgba(255,255,255,.7);border-radius:14px;box-shadow:0 12px 28px #050d0933}.panelHeader{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:.85rem .95rem .72rem;border-bottom:1px solid var(--line)}.panelTitle,.roomTitle,.sectionTitle{color:#253229;font:600 1.08rem/1.1 Fraunces,Georgia,serif;letter-spacing:-.02em}.panelSubtitle,.muted,.label{color:var(--muted);font-size:.73rem}.panelBody{padding:.85rem .95rem}.centerPanel{height:100%;display:grid;grid-template-rows:auto minmax(0,1fr)}.centerHeader{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:1rem;border-bottom:1px solid var(--line)}.centerBody{min-height:0;padding:1rem;overflow:auto}.statusPill,.meBadge,.hostBadge,.testBadge,.codePill,.timerBox,.timerPill{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:.33rem .6rem;color:#8e402f;background:#f8e8d7;border:1px solid #e7c2a8;font:500 .68rem/1 DM Mono,monospace}.hostBadge{color:#725811;background:#f7edc6;border-color:#e5d78d}.meBadge{color:#32604a;background:#dce9d9;border-color:#bcd1b5}.testBadge{color:#5d4c82;background:#ece5f4;border-color:#d3c3e3}.field{display:grid;gap:.38rem;margin-bottom:.85rem}.label{font-weight:700}.divider{height:1px;width:100%;margin:.85rem 0;background:var(--line)}.primaryBtn,.secondaryBtn,.dangerBtn{width:100%;min-height:34px;padding:.5rem .65rem;border:1px solid transparent;border-radius:8px;font-size:.78rem;font-weight:700;line-height:1.15;transition:transform .15s ease,background .15s ease}.primaryBtn{color:#fffaf0;background:var(--accent);border-color:#9d422e}.primaryBtn:hover:not(:disabled){background:#97432f;transform:translateY(-1px)}.secondaryBtn{color:#435149;background:#f8f5ee;border-color:#cec8ba}.secondaryBtn:hover:not(:disabled){background:#e8e4db}.dangerBtn{color:#fff5ef;background:#9d483c;border-color:#873b32}.primaryBtn:disabled,.secondaryBtn:disabled,.dangerBtn:disabled{opacity:.43;cursor:not-allowed}.btnCol,.btnRow{display:flex;gap:.5rem}.btnCol{flex-direction:column}.selectInput,.chatInput,.roleInlinePicker select{width:100%;min-height:34px;padding:.48rem .55rem;color:var(--text);background:#fbf9f4;border:1px solid #c8c5b9;border-radius:7px}.playerList,.player-list,.chatList,.scriptList{list-style:none;padding:0;margin:0}.playerList,.player-list{display:grid;gap:.45rem}.playerRow,.player-list li{padding:.65rem .7rem;background:#faf8f2;border:1px solid #ded8ca;border-radius:9px;font-size:.84rem}.playerName{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.playerBadges{display:inline-flex;gap:.25rem}.lobbyTestControls{display:grid;gap:.65rem;margin-top:1rem;padding-top:.9rem;border-top:1px solid var(--line)}.lobbyTestRemove{padding:.24rem .42rem;color:#8d4336;background:#fff4ef;border:1px solid #e7c2b6;border-radius:999px;font:600 .64rem/1 DM Mono,monospace}.lobbyTestRemove:disabled{opacity:.5}.chat{height:100%;display:grid;grid-template-rows:auto minmax(0,1fr) auto}.chatBody{min-height:0;padding:.75rem .9rem;overflow:auto;font-size:.77rem;line-height:1.4}.chatList{display:grid;gap:.55rem}.chatMsg{padding:.45rem .55rem;border-left:2px solid transparent}.meMsg{border-left-color:#6e9876;background:#edf3e9}.serverMsg{padding:.2rem 0;color:#7a6454;font-style:italic}.chatAuthor{font-weight:700}.chatTime{color:#81867c;font:.62rem DM Mono,monospace}.chatInputRow{display:grid;grid-template-columns:1fr 70px;gap:.45rem;padding:.7rem .85rem;border-top:1px solid var(--line)}.mapPanel{height:100%;display:grid;grid-template-rows:auto minmax(0,1fr);background:#eef0e7}.mapPanel .panelHeader{background:#f5f4ec}.mapBody{display:flex;flex-direction:column;gap:.7rem;min-height:0;overflow:auto}.townSquareTile{padding:.55rem .7rem;color:#486253;background:#e0ecde;border:1px solid #bfd5bd;border-radius:8px;font-size:.78rem}.hostHomes,.hostNav{padding:.55rem;background:#f7f6ef;border:1px solid #d6d5c9;border-radius:8px}.hostHomes{display:grid;gap:.45rem}.hostHomesTitle{color:var(--muted);font-size:.7rem}.hostHomesGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem}.hostHomesGrid button,.hostNav button{padding:.42rem .5rem;color:#435149;background:#fbfaf6;border:1px solid #d5d0c3;border-radius:6px;font-size:.7rem;text-align:left}.hostHomesGrid button:disabled,.hostNav button:disabled{opacity:.45}.notesInput{width:100%;min-height:210px;padding:.65rem;color:#38443b;background:#fbf9f2;border:1px solid #cfc9ba;border-radius:8px;font-size:.79rem;line-height:1.45;resize:vertical}.roleModalContent{display:grid;grid-template-rows:minmax(0,1fr);max-height:65vh}.roleGridScroll{overflow:auto;padding:.2rem}.rolePicker{display:grid;gap:1rem}.roleGroupTitle{margin-bottom:.45rem;color:#657067;font-size:.74rem;font-weight:700;text-transform:uppercase}.roleListGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}.roleListItem{padding:.3rem 0}.roleHint{margin-top:.7rem;padding:.65rem;border:1px solid #d9d3c5;border-radius:8px;color:#61695f;background:#f7f5ee;font-size:.73rem}.roleHintRow{display:flex;gap:.5rem}.roleHint{flex:1}.roleHintTrash{margin-top:.7rem;padding:.5rem;border:1px solid #d9d3c5;border-radius:8px;background:#fffaf4}.trashIcon{width:18px;height:18px}.seatingList,.grimoireTable{display:grid;gap:.55rem}.grimoireTable{max-height:72vh;overflow:auto;padding-right:.2rem}.grimoireRow{display:grid;grid-template-columns:50px minmax(120px,1fr) minmax(170px,1fr) 86px minmax(180px,1fr) minmax(170px,1fr);gap:.65rem;align-items:center;padding:.6rem;background:#faf8f2;border:1px solid #ded8ca;border-radius:8px}.grimoireHeader{position:sticky;top:0;z-index:1;background:#ece7da;font-size:.7rem;font-weight:700}.grimoireSeat,.grimoirePlayer{font-weight:700}.grimoireRoleBadge{display:inline-flex;align-items:center;gap:.4rem;padding:.15rem .45rem .15rem .15rem;border:1px solid #d8d1c3;border-radius:8px;background:#fffdf8}.grimoireRoleBadge span{font-size:.72rem}.grimoireStatusToken{width:34px;height:34px;object-fit:contain}.grimoireReminderList{display:flex;flex-wrap:wrap;gap:.35rem}.grimoireReminderChip{padding:.25rem .45rem;border:1px solid #d4cdc0;border-radius:999px;color:#4d5b51;background:#f7f5ee;font-size:.68rem}.grimoireControls{display:grid;grid-template-columns:minmax(0,1fr) 64px;gap:.4rem}.grimoireControls .selectInput{margin:0}.scriptDropdown{margin-top:.5rem;padding:.45rem;background:#faf8f2;border:1px solid #d8d1c3;border-radius:8px}.scriptList{display:grid;gap:.25rem}.scriptItem{width:100%;padding:.45rem;color:#3e4b42;background:transparent;border:0;border-radius:6px;text-align:left}.scriptItem:hover{background:#e5ece1}.phaseRow{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.75rem}.phaseBtn{padding:.38rem .5rem;color:#46534a;background:#f7f5ee;border:1px solid #d5d0c3;border-radius:6px}.phaseBtn.active{color:#fff8ef;background:#af5138;border-color:#9d422e}.roomEntry{display:grid;place-items:center;min-height:100vh;padding:1.25rem;background:radial-gradient(circle at 20% 20%,rgba(219,143,84,.14),transparent 28rem),#19211e}.roomEntryCard{width:min(400px,100%);display:grid;gap:.8rem;padding:1.5rem;color:#2d3b32;background:#f0ece2;border-radius:14px;box-shadow:0 24px 60px #0000004d}.roomEntryCard h2{margin:0;font:600 1.8rem/1 Fraunces,Georgia,serif}.roomEntryCard p{margin:0;color:#69736a;font-size:.83rem;line-height:1.45}.roomEntryKicker{color:#a45039!important;font:500 .65rem DM Mono,monospace!important;letter-spacing:.08em;text-transform:uppercase}.roomEntryCard label{display:grid;gap:.38rem;margin-top:.3rem;color:#5d685f;font-size:.72rem;font-weight:700}.roomEntryCard input{width:100%;padding:.62rem .1rem;color:var(--text);background:transparent;border:0;border-bottom:1px solid #c8c5b9}.roomLoading{color:#eef0e6;text-align:center}.roomLoading span{color:#f4dca0}.roomLoading h2{margin:.5rem 0;font:600 1.8rem Fraunces,Georgia,serif}.roomLoading p{margin:0;color:#bdc7b8;font-size:.8rem}@media(max-width:1050px){.roomShell{grid-template-columns:minmax(190px,.38fr) minmax(0,1fr)}.rightRail{grid-column:1 / -1;grid-template-columns:minmax(250px,.9fr) minmax(280px,1.1fr);grid-template-rows:minmax(220px,auto)}.rightTop,.rightBottom{min-height:260px}}@media(max-width:700px){.roomShell{grid-template-columns:1fr;padding:.55rem}.roomAppBar{grid-column:1}.roomAppBarMessage{display:none}.leftRail,.rightRail{grid-column:1}.rightRail{grid-template-columns:1fr;grid-template-rows:auto auto}.centerStage{min-height:550px}.roleListGrid{grid-template-columns:1fr}}.modalOverlay{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:1rem;background:#0e1611a8;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.modal{width:min(720px,100%);max-height:min(85vh,900px);display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden;color:#2b382f;background:#f2eee4;border:1px solid rgba(255,255,255,.75);border-radius:14px;box-shadow:0 24px 64px #02080461}.modal--wide{width:min(1160px,100%);max-height:92vh}.modalHeader{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.9rem 1rem;border-bottom:1px solid #d6d0c0}.modalTitle{font:600 1.15rem/1.1 Fraunces,Georgia,serif}.modalClose{display:grid;place-items:center;width:30px;height:30px;padding:0;color:#5c675f;background:transparent;border:1px solid transparent;border-radius:50%;font-size:1rem}.modalClose:hover{background:#e2ddd1}.modalBody{min-height:0;padding:1rem;overflow:hidden}.modalFooter{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;border-top:1px solid #d6d0c0}.modalFooterStart{margin-right:auto}.modalFooterActions{display:flex;gap:.5rem}.modalFooter .primaryBtn,.modalFooter .secondaryBtn{width:auto;min-width:86px}.roleCard{display:grid;grid-template-columns:48px minmax(0,1fr);gap:.65rem;align-items:center;padding:.6rem;color:#354239;background:#fbfaf5;border:1px solid #d9d3c5;border-radius:9px;text-align:left}.roleCard--selectable{cursor:pointer}.roleCardIcon{width:48px;height:48px;border-radius:50%}.roleCardName{margin-bottom:.14rem;font-size:.8rem;font-weight:700}.roleCardDescription{color:#687269;font-size:.7rem;line-height:1.35}.roleCard--selectable:hover{border-color:#8ba287;background:#f3f7f0}.roleCard--selected{border-color:#699071;box-shadow:0 0 0 2px #6990713d}.roleCard--correct{border-color:#548c61}.roleCard--error{border-color:#b55542}.grimoireModalBody{padding:.8rem}.grimoireBoard{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(300px,.8fr);gap:.8rem;min-height:0;max-height:72vh}.grimoirePlayerList{min-height:0;overflow:auto;display:grid;align-content:start;gap:.35rem;padding-right:.2rem}.grimoireListHeader,.grimoirePlayerRow{display:grid;grid-template-columns:42px minmax(88px,1fr) minmax(130px,1.15fr) 78px minmax(110px,1.1fr) 16px;gap:.45rem;align-items:center}.grimoireListHeader{position:sticky;top:0;z-index:1;padding:.55rem .6rem;color:#59665d;background:#ece7da;border:1px solid #ded8ca;border-radius:8px;font-size:.66rem;font-weight:700;text-transform:uppercase}.grimoirePlayerRow{width:100%;min-height:64px;padding:.55rem .6rem;color:#2b382f;background:#faf8f2;border:1px solid #ded8ca;border-radius:9px;text-align:left;transition:border-color .15s ease,background .15s ease,transform .15s ease}.grimoirePlayerRow:hover{background:#f4f0e6;border-color:#c8baa4}.grimoirePlayerRow.is-selected{background:#fffaf0;border-color:#af8b52;box-shadow:inset 3px 0 #af5138}.grimoireSeat,.grimoireUser{font-weight:700}.grimoireUser{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.grimoireRoleBadge{display:inline-flex;align-items:center;gap:.4rem;max-width:100%;padding:.15rem .45rem .15rem .15rem;border:1px solid #d8d1c3;border-radius:8px;background:#fffdf8}.grimoireRoleBadge img{width:28px;height:28px;border-radius:6px}.grimoireRoleBadge span{overflow:hidden;font-size:.72rem;text-overflow:ellipsis;white-space:nowrap}.grimoireRoleCell{display:grid;gap:.18rem;min-width:0}.grimoirePerceivedRole{overflow:hidden;color:#816a46;font-size:.65rem;font-style:italic;text-overflow:ellipsis;white-space:nowrap}.grimoireListStatus,.grimoireStatusSummary{display:flex;align-items:center;gap:.4rem}.grimoireListStatus{color:#5d685f;font-size:.7rem}.grimoireStatusToken{width:31px;height:31px;flex:0 0 auto;object-fit:contain}.grimoireReminderSummary,.grimoireInspectorReminders{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem}.grimoireReminderChip,.grimoireReminderCount{padding:.24rem .45rem;border:1px solid #d4cdc0;border-radius:999px;color:#4d5b51;background:#f7f5ee;font-size:.66rem;line-height:1.15}button.grimoireReminderChip:hover:not(:disabled){background:#eee7d9}.grimoireReminderCount{color:#746a58;background:transparent}.grimoireRowChevron{color:#9e855c;font-size:1.2rem}.grimoireInspector{min-height:0;overflow:auto;padding:.9rem;background:linear-gradient(145deg,#f8f4ea,#ede7d9);border:1px solid #d7cfbd;border-radius:10px}.grimoireInspectorHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:.7rem;padding-bottom:.8rem;border-bottom:1px solid #d6cdbc}.grimoireInspectorHeader h3{margin:.12rem 0 0;color:#26342c;font:600 1.4rem/1 Fraunces,Georgia,serif}.grimoireInspectorKicker{color:#89633a;font:700 .63rem/1 DM Mono,monospace;letter-spacing:.08em;text-transform:uppercase}.grimoirePerceivedRoleDetail{display:flex;align-items:center;gap:.5rem;padding:.65rem 0 .1rem;color:#89633a;font-size:.7rem}.grimoireInspectorSection{display:grid;gap:.55rem;padding:.85rem 0;border-bottom:1px solid #dcd3c3}.grimoireInspectorSection:last-child{border-bottom:0;padding-bottom:0}.grimoireInspectorSection h4{margin:0;color:#657067;font-size:.68rem;letter-spacing:.06em;text-transform:uppercase}.grimoireStatusSummary strong,.grimoireStatusSummary span{display:block}.grimoireStatusSummary span,.grimoireLocationCurrent{margin-top:.12rem;color:#687168;font-size:.71rem}.grimoireActionRow,.grimoireSelectAction{display:flex;gap:.45rem}.grimoireActionRow .secondaryBtn,.grimoireSelectAction .secondaryBtn{width:auto;min-width:72px}.grimoireSelectAction .selectInput{margin:0}@media(max-width:850px){.grimoireBoard{grid-template-columns:1fr;max-height:none;overflow:auto}.grimoirePlayerList{max-height:45vh}}@media(max-width:620px){.grimoireListHeader{display:none}.grimoirePlayerRow{grid-template-columns:32px minmax(76px,1fr) minmax(90px,1fr) 31px 16px}.grimoirePlayerRow>:nth-child(5){display:none}.grimoireListStatus span{display:none}.grimoireActionRow,.grimoireSelectAction{flex-wrap:wrap}}
