@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Oswald:wght@500;600;700&display=swap');
:root{color-scheme:dark;--bg:#171b1b;--panel:#232a29;--line:#3f4944;--cream:#ece4d2;--muted:#a4b0a4;--gold:#dfae66}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--cream);font-family:'DM Sans',Arial,sans-serif;height:100dvh;display:flex;flex-direction:column;overflow:hidden}button,input,textarea,select{font:inherit}button{background:#303a33;color:var(--cream);border:1px solid #566150;padding:10px 14px;border-radius:4px;font-size:12px;cursor:pointer;font-weight:700}button:hover{background:#465042}button:disabled{opacity:.4;cursor:default}.primary{background:var(--gold);border-color:var(--gold);color:#221c14}header{height:58px;flex-shrink:0;border-bottom:1px solid var(--line);padding:0 3%;display:flex;align-items:center;justify-content:space-between}h1{font:600 25px Oswald,Impact;letter-spacing:2px;margin:0}h1 span{color:var(--gold)}header>div{display:flex;gap:8px;align-items:center}#chatstate{font-size:10px;margin-right:12px;color:var(--muted)}main{display:grid;grid-template-rows:minmax(160px,31vh) 68px minmax(0,1fr);gap:16px;padding:20px 3%;min-height:0;flex:1}.journey{position:relative;border:1px solid #687366;border-radius:6px;overflow:hidden;background:#576c6c}#scene{width:100%;height:calc(100% - 39px);display:block;image-rendering:pixelated}.location{position:absolute;top:17px;left:22px;text-shadow:0 2px 3px #0008;z-index:1}.location>span{font-size:10px;letter-spacing:1px}.location h2{font:600 30px Oswald;margin:3px 0}.route{display:flex;justify-content:space-between;height:39px;background:#242e28;padding:0 15px;align-items:center;gap:5px}.stop{font-size:9px;color:#929d8f;white-space:nowrap}.stop.reached{color:#e7c082}.stop.current{color:#fff}.stop::before{content:'●';padding-right:5px;font-size:7px}.stats{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}.stat{padding:12px 15px;background:var(--panel);border:1px solid var(--line);border-radius:5px}.stat small{display:block;color:var(--muted);font-size:9px;letter-spacing:1px;text-transform:uppercase}.stat b{display:block;margin-top:4px;font:600 21px Oswald}.stat.low b{color:#ef8879}.lower{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:22px;min-height:0}.partypanel,aside{min-height:0;display:flex;flex-direction:column}.panelhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;flex-shrink:0}.panelhead h2{font:500 21px Oswald;margin:0}.panelhead h2 span{color:var(--muted);margin-left:10px;font-size:15px}.panelhead>span{font-size:11px;color:var(--gold)}#party{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px;overflow:auto;align-content:start;min-height:0}.traveler{border:1px solid var(--line);border-radius:5px;padding:11px;background:var(--panel)}.traveler svg{width:42px;height:46px;image-rendering:pixelated;float:left;margin-right:9px}.traveler strong{display:block;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:7px}.traveler small{display:block;font-size:9px;color:var(--muted);margin-top:4px}.health{clear:both;height:4px;background:#111b17;margin-top:12px}.health i{display:block;height:100%;background:#84bd8b}.traveler.hurt .health i{background:#e8ad62}.traveler.dead{background:#312728;opacity:.65;border-color:#76504c}.traveler.dead svg{filter:grayscale(1)}.traveler.dead small{color:#ed8e80}#empty{margin:auto;text-align:center;color:var(--muted);font-size:12px;padding:20px}#empty h3{color:var(--cream);font-size:20px}aside{background:#232a29;border:1px solid var(--line);border-radius:6px;padding:20px;overflow:auto}#story{font-size:16px;line-height:1.6;margin:0 0 16px;color:#e8e2d5;flex-shrink:0}.choice{position:relative;display:block;width:100%;text-align:left;padding:12px;margin-bottom:8px;background:#2e3831}.choice strong{font-size:12px;display:block}.choice small{display:block;font-size:10px;color:#a6b5a5;margin-top:4px;padding-right:35px}.choice .votes{position:absolute;right:12px;top:12px;font:600 20px Oswald;color:var(--gold)}.choice .bar{position:absolute;left:0;bottom:0;height:2px;background:var(--gold)}#outcome{font-size:12px;line-height:1.6;color:#c7d5c5;margin-bottom:10px}#outcome .death{color:#fa9b89}.history{font-size:10px;color:#8b9b8c;margin-top:15px;overflow:auto;min-height:0}.history>div{padding:8px 0;border-top:1px solid var(--line)}#continue{width:100%;flex-shrink:0}dialog{background:#222b26;color:var(--cream);border:1px solid #697861;border-radius:7px;padding:26px;width:min(460px,94vw);max-height:90vh;overflow:auto}dialog::backdrop{background:#070d0be0}dialog h2{font:500 26px Oswald;margin:0}label{display:block;font-size:11px;margin:17px 0 10px}input:not([type=checkbox]),select,textarea{display:block;width:100%;padding:11px;background:#141d18;border:1px solid #53634e;border-radius:4px;color:var(--cream);margin-top:6px}textarea{height:70px}dialog p{font-size:11px;line-height:1.6;color:var(--muted)}.close{float:right;padding:5px 9px}#toast{display:none;position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--cream);color:#20261e;padding:12px 20px;border-radius:5px;font-size:12px;z-index:5}.obs header{height:46px}.obs header h1{font-size:21px}@media(max-width:900px){body{height:auto;min-height:100dvh;overflow:auto}main{grid-template-rows:210px auto auto;padding:12px;gap:12px}.lower{grid-template-columns:1fr}.stats{grid-template-columns:repeat(3,1fr)}#party{max-height:300px}.route{overflow:auto;justify-content:start;gap:15px}.stop{font-size:8px}header{padding:0 12px}header button{padding:8px}#chatstate{display:none}aside{max-height:none}.history{max-height:100px}}@media(min-width:901px) and (max-height:760px){main{grid-template-rows:180px 61px minmax(0,1fr);gap:12px;padding-top:12px;padding-bottom:12px}aside{padding:14px}#story{font-size:14px;margin-bottom:10px}.choice{padding:9px;margin-bottom:6px}.choice strong{font-size:11px}.choice small{font-size:9px}.stat{padding:9px 13px}}
/* One viewport; travelers use pages instead of scrolling. */
html,body{height:100%;overflow:hidden}body{height:100dvh;min-height:0}header{height:48px;flex:0 0 48px}main{width:100%;grid-template-rows:clamp(110px,24vh,220px) 60px minmax(0,1fr);padding:12px 2.5%;gap:12px;overflow:hidden}.lower{grid-template-columns:minmax(0,1fr) minmax(300px,32%);gap:16px;overflow:hidden}.stats{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}.stat{padding:9px 12px}.stat b{font-size:19px}.partypanel{overflow:hidden}.panelhead{margin-bottom:8px}.panelhead h2{font-size:19px}#party{flex:1;min-height:0;max-height:none;overflow:hidden;grid-auto-rows:74px;gap:8px}.traveler{padding:8px;min-width:0}.traveler svg{width:30px;height:35px;margin-right:7px}.traveler strong{font-size:10px;margin-top:4px}.traveler small{font-size:8px}.health{margin-top:8px;height:3px}.partypager{display:flex;justify-content:center;align-items:center;gap:14px;height:32px;flex-shrink:0;margin-top:7px}.partypager button{padding:3px 12px;font-size:13px}.partypager span{font-size:10px;color:var(--muted)}aside{max-height:none;overflow:hidden;padding:14px;gap:0}#story{font-size:14px;line-height:1.4;margin-bottom:10px}.choice{padding:10px;margin-bottom:7px}.choice strong{font-size:11px}.choice small{font-size:9px;margin-top:3px}.choice .votes{font-size:17px;top:8px}.history{display:none}#outcome{font-size:11px;line-height:1.4;min-height:0;flex:1;margin-bottom:8px;overflow:hidden}#continue{padding:10px}#empty{font-size:11px;padding:10px}#empty h3{margin:8px 0;font-size:18px}.route{overflow:hidden}.stop{font-size:8px}.location{top:12px;left:17px}.location h2{font-size:25px}.location>span{font-size:9px}
@media(max-width:900px){main{grid-template-rows:clamp(110px,22vh,180px) 59px minmax(0,1fr);padding:10px;gap:10px}.stats{grid-template-columns:repeat(6,minmax(0,1fr))}.lower{grid-template-columns:minmax(0,1fr) minmax(290px,40%)}header{padding:0 12px}.route .stop:nth-child(even){display:none}.route{justify-content:space-between;gap:4px}}
@media(max-height:650px) and (min-width:681px){header{height:42px;flex-basis:42px}main{grid-template-rows:110px 51px minmax(0,1fr);gap:8px;padding:8px 2%}.stat{padding:6px 10px}.stat b{font-size:17px}.stat small{font-size:8px}aside{padding:10px}#story{font-size:12px;line-height:1.3;margin-bottom:7px}.choice{padding:7px 9px;margin-bottom:5px}.choice strong{font-size:10px}.choice small{font-size:8px}.panelhead h2{font-size:17px}#continue{padding:8px}#outcome{font-size:10px}.partypager{height:25px;margin-top:4px}}
@media(max-width:680px){header{height:42px;flex-basis:42px}header h1{font-size:19px}header button{padding:5px 8px;font-size:10px}main{grid-template-rows:105px 47px minmax(0,1fr);padding:8px;gap:8px}.lower{grid-template-columns:1fr;grid-template-rows:minmax(90px,.6fr) minmax(245px,1.4fr);gap:8px}.stats{gap:4px}.stat{padding:5px}.stat small{font-size:7px;letter-spacing:0}.stat b{font-size:14px}.location h2{font-size:20px}.route{height:27px}#scene{height:calc(100% - 27px)}.route .stop{font-size:7px}.route .stop:nth-child(3),.route .stop:nth-child(7){display:none}aside{padding:10px}.panelhead{margin-bottom:5px}.panelhead h2{font-size:16px}#story{font-size:12px;margin-bottom:7px;line-height:1.3}.choice{padding:7px 9px;margin-bottom:5px}.choice strong{font-size:10px}.choice small{font-size:8px}#continue{padding:8px}#outcome{font-size:10px;margin-bottom:5px}.partypager{position:absolute;right:0;top:0;height:23px;margin:0;gap:7px}.partypanel{position:relative}.partypanel .panelhead{padding-right:120px}.partypanel #joinlabel{display:none}.partypager button{padding:1px 8px}}
/* Large broadcast choices: readable when the stream is viewed on a phone. */
.voteinstruction{display:none;font-size:13px;color:#ebd9ba;margin-bottom:12px;letter-spacing:.2px}.voting .voteinstruction{display:block}.voting .lower{grid-template-columns:minmax(0,1fr) minmax(460px,47%)}.voting main{grid-template-rows:clamp(100px,19vh,165px) 60px minmax(0,1fr)}.voting aside{padding:18px}.voting aside .panelhead h2{font-size:24px}.voting aside .panelhead>span{font-size:15px;font-weight:700;color:#ffe0a2}.voting #story{font-size:19px;line-height:1.4;margin-bottom:12px}.voting #outcome{display:none}.voting #choices{flex:1;min-height:0;display:grid;grid-template-rows:repeat(3,minmax(0,1fr));gap:9px;margin-bottom:12px}.choice{display:flex;align-items:center;gap:16px;border:2px solid #727c69;background:#303c32;position:relative;padding:13px 16px;margin:0;text-align:left;border-radius:6px;min-height:0}.choice:hover{border-color:#e8bd79;background:#44523e}.choice-number{display:grid;place-items:center;width:43px;height:47px;flex:0 0 43px;background:#edc18a;color:#2b2117;border-radius:4px;font:700 32px Oswald}.choice-copy{min-width:0;flex:1}.choice strong{font-size:20px;line-height:1.2;display:block}.choice small{font-size:14px;line-height:1.3;color:#dde5d7;padding:0;margin-top:5px}.choice .votes{position:static;flex:0 0 35px;text-align:center;font:600 23px Oswald;color:#efc896}.choice .votes small{font:11px 'DM Sans',Arial;color:#cad1c2;display:block;margin-top:0}.choice:disabled{opacity:.55}.voting #continue{font-size:13px;padding:9px 14px}.voting .panelhead{margin-bottom:8px}@media(min-width:901px) and (max-height:760px){.voting main{grid-template-rows:100px 51px minmax(0,1fr)}.voting aside{padding:13px}.voting #story{font-size:17px;margin-bottom:8px}.voteinstruction{font-size:12px;margin-bottom:8px}.choice{padding:10px 12px;gap:12px}.choice strong{font-size:18px}.choice small{font-size:12px}.choice-number{width:36px;height:40px;flex-basis:36px;font-size:28px}.voting #choices{gap:7px;margin-bottom:8px}}
@media(min-width:681px) and (max-width:900px){.voting .lower{grid-template-columns:minmax(0,1fr) minmax(370px,55%)}.voting main{grid-template-rows:105px 51px minmax(0,1fr)}.voting aside{padding:12px}.voting #story{font-size:17px}.choice strong{font-size:17px}.choice small{font-size:12px}.choice{padding:10px;gap:10px}.choice-number{width:34px;height:40px;flex-basis:34px;font-size:27px}}
@media(max-width:680px){.voting main{grid-template-rows:80px 43px minmax(0,1fr)}.voting .lower{grid-template-columns:1fr;grid-template-rows:74px minmax(0,1fr);gap:8px}.voting .partypanel>.panelhead{display:none}.voting aside{padding:10px}.voting aside .panelhead h2{font-size:20px}.voting aside .panelhead>span{font-size:12px}.voting #story{font-size:15px;margin-bottom:7px;line-height:1.3}.voteinstruction{font-size:11px;margin-bottom:7px}.voting #choices{gap:6px;margin-bottom:8px}.choice{padding:8px 10px;gap:10px}.choice strong{font-size:16px}.choice small{font-size:11px;margin-top:3px}.choice-number{width:32px;height:36px;flex-basis:32px;font-size:25px}.choice .votes{font-size:19px;flex-basis:29px}.choice .votes small{font-size:9px}.voting #continue{padding:8px;font-size:12px}}
/* Broadcast layout: viewers read a scaled video, not a desktop dashboard. */
@media(min-width:901px){
header{height:54px;flex-basis:54px}header h1{font-size:28px}main,.voting main{grid-template-rows:clamp(120px,20vh,210px) 82px minmax(0,1fr);gap:16px;padding:16px 2%}.lower,.voting .lower{grid-template-columns:minmax(280px,35%) minmax(0,1fr);gap:20px}.journey{border-radius:8px}.location{top:18px;left:24px}.location h2{font-size:34px}.location>span{font-size:15px;font-weight:700;letter-spacing:.5px}.route{height:33px;padding:0 20px}.stop{font-size:11px}.route .stop:nth-child(even){display:none}#scene{height:calc(100% - 33px)}.stats{gap:12px}.stat{padding:12px 18px;background:#28342c;border-color:#65715c}.stat small{font-size:14px;font-weight:700;letter-spacing:.3px;color:#d0d8c7}.stat b{font-size:29px;line-height:1.15;color:#f5e7cd}.stat.low b{color:#ffab91}.panelhead{margin-bottom:14px}.panelhead h2,.voting aside .panelhead h2{font-size:30px}.panelhead h2 span{font-size:21px;color:#d7decf}.panelhead>span,.voting aside .panelhead>span{font-size:18px;color:#efd4a5}.partypanel #joinlabel{font-size:15px}#party{grid-auto-rows:104px;gap:10px}.traveler{padding:12px;background:#29342d;border-color:#65725e;border-radius:6px}.traveler svg{width:45px;height:49px;margin-right:12px}.traveler strong{font-size:18px;font-weight:700;margin-top:5px;color:#fff3df}.traveler small{font-size:13px;color:#d4ddcc;margin-top:5px}.health{height:6px;margin-top:12px}.traveler.dead small{color:#ffb2a0}.partypager{height:35px;margin-top:10px;gap:20px}.partypager span{font-size:16px}.partypager button{padding:4px 17px}.partypanel #empty{font-size:18px}.partypanel #empty h3{font-size:26px}aside,.voting aside{padding:22px;border-color:#6c795f;background:#263129;box-shadow:inset 0 3px #dbb175}#story,.voting #story{font-size:27px;line-height:1.35;color:#fff2df;margin-bottom:18px;max-width:100%}.voteinstruction{font-size:18px;letter-spacing:0;margin-bottom:15px;color:#f3dfbd}.voteinstruction b{color:#fff0d4}#outcome{font-size:20px;line-height:1.45;color:#e4eddb;overflow:hidden}.voting #choices{gap:12px;margin-bottom:15px}.choice{background:#344432;border-color:#889575;border-radius:7px;gap:20px;padding:16px 20px}.choice strong{font-size:29px;line-height:1.2;color:#fff8e9}.choice small{font-size:19px;line-height:1.3;color:#e3edda;margin-top:6px}.choice-number{width:57px;height:61px;flex-basis:57px;font-size:42px;background:#efd09f}.choice .votes{font-size:30px;flex-basis:44px;color:#ffe0a3}.choice .votes small{font-size:14px;color:#e0e7d5}.choice:disabled{background:#282c28;border-color:#525c4d;opacity:.7}#continue,.voting #continue{font-size:17px;padding:12px}#votetime{font-variant-numeric:tabular-nums}header button{font-size:13px}#chatstate{font-size:12px}.obs header{height:48px;flex-basis:48px}
}
@media(min-width:901px) and (max-height:800px){
main,.voting main{grid-template-rows:120px 63px minmax(0,1fr);gap:11px;padding:11px 2%}.location h2{font-size:28px}.location>span{font-size:12px}.stat{padding:9px 14px}.stat small{font-size:11px}.stat b{font-size:24px}.lower,.voting .lower{gap:15px;grid-template-columns:minmax(250px,34%) minmax(0,1fr)}aside,.voting aside{padding:15px}.panelhead h2,.voting aside .panelhead h2{font-size:25px}.panelhead>span,.voting aside .panelhead>span{font-size:16px}#story,.voting #story{font-size:21px;margin-bottom:10px}.voteinstruction{font-size:15px;margin-bottom:9px}.choice{padding:11px 14px;gap:15px}.choice strong{font-size:23px}.choice small{font-size:15px}.choice-number{width:45px;height:49px;flex-basis:45px;font-size:34px}.choice .votes{font-size:26px}.voting #choices{gap:9px;margin-bottom:10px}#outcome{font-size:17px}#continue,.voting #continue{font-size:14px;padding:9px}.panelhead{margin-bottom:9px}}
