@import"https://fonts.googleapis.com/css2?family=Cinzel:wght@400;600;700&family=Lora:ital,wght@0,400;0,600;1,400&family=Courier+Prime:wght@400;700&display=swap";:root{--bg-base: #0f0d0a;--surface: #1a1710;--surface-raised: #221e14;--border-subtle: #3a3220;--border-accent: #6b5a35;--text-primary: #e8dfc8;--text-muted: #8a7d60;--accent-gold: #c9973a;--accent-gold-dim: #7a5a1e;--danger: #8b2e1a;--success: #2e5c3a;--focus-ring: rgba(201, 151, 58, .4);color-scheme:dark;font-family:Lora,serif}body{margin:0;background:var(--bg-base);color:var(--text-primary);font-family:Lora,serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app{max-width:36rem;margin:4rem auto;padding:0 1.5rem}.seats{list-style:none;padding:0;margin:1.5rem 0}.seat{padding:.6rem .9rem;margin:.4rem 0;border:1px solid var(--border-subtle);border-radius:.3rem;background:var(--surface)}.seat--empty{color:var(--text-muted);font-style:italic}.seat--ready{border-color:var(--success)}.controls{display:flex;gap:.75rem}button{padding:.55rem 1.1rem;border:0;border-radius:.3rem;background:linear-gradient(to right,var(--accent-gold),var(--accent-gold-dim));color:var(--bg-base);font-size:1.1rem;font-family:Lora,serif;letter-spacing:.1em;cursor:pointer;transition:filter .15s}button:hover:not(:disabled){filter:brightness(1.1)}button:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.counter{font-size:3.3rem;font-weight:700;margin:0}.screen{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem 1.5rem;box-sizing:border-box}.btn{padding:.55rem 1.25rem;border:0;border-radius:.3rem;font-size:1.1rem;font-family:Lora,serif;cursor:pointer;transition:filter .15s,color .15s,border-color .15s}.btn:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.btn--primary{background:linear-gradient(to right,var(--accent-gold),var(--accent-gold-dim));color:var(--bg-base);letter-spacing:.1em}.btn--primary:hover:not(:disabled){filter:brightness(1.1)}.btn--ghost{background:transparent;color:var(--accent-gold);border:1px solid var(--border-accent)}.btn--ghost:hover:not(:disabled){color:var(--text-primary);border-color:var(--accent-gold)}.screen--landing{justify-content:space-between}.landing__content{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:1.25rem;max-width:36rem}.landing__title{font-size:2.75rem;font-weight:700;margin:0;color:var(--text-primary);font-family:Cinzel,serif;letter-spacing:.2em;text-transform:uppercase}.landing__tagline{font-size:1.265rem;color:var(--text-muted);margin:0}.landing__blurb{color:var(--text-muted);margin:0}.landing__actions{display:flex;flex-direction:column;gap:.75rem;width:100%;max-width:20rem}.landing__footer{padding:1rem 0;color:var(--text-muted);font-size:.88rem}.screen--auth{padding:3rem 1.5rem}.auth__card{width:100%;max-width:24rem;background:radial-gradient(ellipse at center,var(--surface-raised) 0%,var(--bg-base) 100%);border:1px solid var(--border-subtle);border-radius:.3rem;padding:2rem;display:flex;flex-direction:column;gap:1.25rem}.auth__title{font-size:1.54rem;font-weight:600;margin:0;color:var(--text-primary);font-family:Cinzel,serif;letter-spacing:.15em}.auth__form{display:flex;flex-direction:column;gap:1rem}.auth__field{display:flex;flex-direction:column;gap:.3rem}.auth__field label{font-size:.963rem;color:var(--text-muted)}.auth__field input[type=email],.auth__field input[type=text],.auth__field input[type=password]{padding:.5rem .75rem;background:var(--surface-raised);border:1px solid var(--border-subtle);border-radius:.3rem;color:var(--text-primary);font-size:1.1rem;font-family:Lora,serif;outline:none}.auth__field input[type=email]::placeholder,.auth__field input[type=text]::placeholder,.auth__field input[type=password]::placeholder{color:var(--text-muted)}.auth__field input:focus{border-color:var(--border-accent);box-shadow:0 0 0 2px var(--focus-ring)}.auth__field--checkbox{flex-direction:row;align-items:center}.auth__field--checkbox label{display:flex;align-items:center;gap:.5rem;cursor:pointer;color:var(--text-muted);font-size:.99rem}.auth__hint{font-size:.858rem;color:var(--text-muted)}.auth__field-error{font-size:.88rem;color:var(--danger)}.auth__error--global{background:#8b2e1a1f;border:1px solid rgba(139,46,26,.35);border-radius:.3rem;padding:.5rem .75rem;color:var(--danger);font-size:.963rem;margin:0}.auth__switch,.auth__back{display:flex;justify-content:center}.screen--lobby{align-items:center;justify-content:center}.lobby__card{width:100%;max-width:28rem;background:radial-gradient(ellipse at center,var(--surface-raised) 0%,var(--bg-base) 100%);border:1px solid var(--border-subtle);border-radius:.3rem;padding:2rem;display:flex;flex-direction:column;gap:1.25rem}.lobby__card--room{max-width:34rem}.lobby__title{font-size:2.2rem;font-weight:400;margin:0;color:var(--accent-gold);text-align:center;font-family:Cinzel,serif;letter-spacing:.2em;text-transform:uppercase;position:relative;padding-bottom:.75rem}.lobby__title:after{content:"";position:absolute;bottom:0;left:50%;transform:translate(-50%);width:60%;height:1px;background:#c9973a66}.lobby__error{background:#8b2e1a1f;border:1px solid rgba(139,46,26,.35);border-radius:.3rem;padding:.5rem .75rem;color:var(--danger);font-size:.963rem;margin:0}.lobby__actions{display:flex;flex-direction:column;gap:1rem}.lobby__divider{text-align:center;color:var(--text-muted);font-size:.935rem}.lobby__join-form{display:flex;gap:.5rem}.lobby__code-input{flex:1;padding:.5rem .75rem;background:var(--surface-raised);border:1px solid var(--border-subtle);border-radius:.3rem;color:var(--text-primary);font-size:1.1rem;font-family:Courier Prime,monospace;letter-spacing:.1em;text-transform:uppercase;outline:none}.lobby__code-input::placeholder{color:var(--text-muted)}.lobby__code-input:focus{border-color:var(--border-accent);box-shadow:0 0 0 2px var(--focus-ring)}.lobby__logout{display:flex;justify-content:center;margin-top:.25rem}.lobby__room-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding-bottom:.75rem;border-bottom:1px solid var(--border-subtle)}.lobby__room-code-block{display:flex;align-items:center;gap:.4rem}.lobby__room-code-label{font-size:.935rem;color:var(--text-muted)}.lobby__room-code{font-family:Courier Prime,monospace;font-size:1.21rem;letter-spacing:.15em;color:var(--text-primary)}.lobby__seats{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.lobby__seat{display:flex;align-items:center;gap:.6rem;padding:.55rem .85rem;border:1px solid var(--border-subtle);border-left:3px solid var(--border-subtle);border-radius:.3rem;background:radial-gradient(ellipse at center,var(--surface-raised) 0%,var(--bg-base) 100%);min-height:2.4rem}.lobby__seat--empty{opacity:.55}.lobby__seat--ready{border-left:3px solid var(--success)}.lobby__seat--disc{border-left:3px solid var(--danger)}.lobby__seat--me{border-left:3px solid var(--border-accent)}.lobby__seat--ready.lobby__seat--me{border-left:3px solid var(--success)}.lobby__seat-name{flex:1;font-size:1.045rem;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lobby__seat-name--empty{color:var(--text-muted);font-style:italic}.lobby__seat-badge{font-size:.77rem;font-weight:600;padding:.1em .4em;border-radius:.25em;vertical-align:middle}.lobby__seat-badge--host{background:#c9973a33;color:var(--accent-gold);border:1px solid rgba(201,151,58,.4)}.lobby__seat-badge--you{color:var(--text-muted);background:transparent;border:none;font-weight:400}.lobby__seat-status{font-size:.792rem;padding:.15em .5em;border-radius:.3em;flex-shrink:0}.lobby__seat-status--conn{color:var(--success);background:#2e5c3a33;border:1px solid rgba(46,92,58,.4)}.lobby__seat-status--disc{color:var(--danger);background:#8b2e1a33;border:1px solid rgba(139,46,26,.4)}.lobby__seat-ready{font-size:.792rem;padding:.15em .5em;border-radius:.3em;flex-shrink:0}.lobby__seat-ready--yes{color:var(--success);background:#2e5c3a33;border:1px solid rgba(46,92,58,.4)}.lobby__seat-ready--no{color:var(--text-muted);background:transparent;border:1px solid var(--border-subtle)}.lobby__controls{display:flex;gap:.75rem;flex-wrap:wrap}.btn--sm{padding:.3rem .7rem;font-size:.935rem}.lobby__notice{background:#c9973a14;border:1px solid rgba(107,90,53,.5);border-radius:.3rem;padding:.5rem .75rem;color:var(--text-primary);font-size:.963rem;margin:0}.card{display:inline-flex;flex-direction:column;align-items:center;border:1px solid var(--border-subtle);border-radius:.3rem;background:radial-gradient(ellipse at center,var(--surface-raised) 0%,var(--bg-base) 100%);overflow:hidden;padding:0}.card--clickable{cursor:pointer}.card--clickable:disabled{opacity:.55;cursor:not-allowed}.card--selected{border-color:var(--border-accent);box-shadow:0 0 0 2px var(--focus-ring)}.card--back{background:repeating-linear-gradient(45deg,var(--surface),var(--surface) 6px,var(--surface-raised) 6px,var(--surface-raised) 12px)}.card__art{display:block;width:100%;height:100%;object-fit:contain}.card--sm{width:3.5rem;height:4.9rem}.card--md{width:6rem;height:8.4rem}.card--lg{width:8rem;height:11.2rem}.card--council{width:5.5rem;height:7.7rem}.card--xl{width:10rem;height:14rem}.card__placeholder{font-size:.66rem;color:var(--text-muted);padding:.2rem;text-align:center;word-break:break-all}.card__kind{font-size:.66rem;color:var(--text-muted);background:var(--bg-base);width:100%;text-align:center;padding:.1rem 0}.screen--board{--card-h: 35vh;--card-w: calc(var(--card-h) * 2 / 3);--timer-h: 6vh;display:grid;grid-template-columns:var(--card-w) 1fr calc(var(--card-w) + 2vw);align-items:start;gap:.5rem;width:100vw;height:100vh;height:100dvh;overflow:hidden;padding:0;box-sizing:border-box}.screen--board .card{height:var(--card-h);width:auto;aspect-ratio:2 / 3;flex:0 0 auto}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.board__timer{position:fixed;top:0;right:0;height:var(--timer-h);display:flex;align-items:center;padding:0 .9rem;font-variant-numeric:tabular-nums;font-size:1.76rem;color:var(--text-primary);background:#1a1710d9;border-bottom-left-radius:.3rem;z-index:50}.board__timer--mine{color:#f0b232;font-weight:700}.board__notice{background:#c9973a1a;border:1px solid rgba(201,151,58,.4);color:var(--accent-gold);border-radius:.3rem;padding:.4rem .65rem;font-size:1.155rem}.board__zone-title{font-size:.99rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin:0 0 .25rem;flex-shrink:0}.board__rail{grid-column:1;height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2vh;padding:3vh .4rem;box-sizing:border-box}.opponent-box{width:calc(22vh * 2 / 3);height:22vh;aspect-ratio:2 / 3;flex:0 0 auto;box-sizing:border-box;display:flex;flex-direction:column;gap:.25rem;padding:.45rem;background:var(--surface);border:1px solid var(--border-subtle);border-radius:.3rem;color:var(--text-primary);text-align:left;cursor:pointer;font:inherit;overflow:hidden}.opponent-box--active{border-color:var(--border-accent)}.opponent-box--disc{opacity:.6}.opponent-box--president{border-color:var(--accent-gold);box-shadow:0 0 0 2px #c9973a73,0 0 12px #c9973a59}.opponent-box__name{font-weight:600;font-size:1.265rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.opponent-box__stats{display:flex;flex-direction:column;gap:.15rem;font-size:1.21rem;color:#f0b232}.board__opp-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#0f0d0ab3;display:flex;align-items:flex-start;padding:.5rem;box-sizing:border-box}.opponent-expanded{width:100%;height:40vh;display:flex;gap:.75rem;align-items:stretch;background:var(--surface);border:1px solid var(--border-subtle);border-radius:.3rem;padding:.5rem;box-sizing:border-box}.opponent-expanded__box{height:100%;width:auto;aspect-ratio:2 / 3}.opponent-expanded__hand{flex:1;min-width:0;display:flex;align-items:center;gap:.5rem;overflow-x:auto;overflow-y:hidden}.opponent-expanded__hand .card{height:100%;width:auto}.badge{font-size:.88rem;padding:.1em .4em;border-radius:.25em;background:var(--surface-raised);color:var(--text-muted)}.badge--pres{background:#c9973a33;color:var(--accent-gold)}.badge--disc{background:#8b2e1a33;color:var(--danger)}.council-box{flex:0 0 auto;height:40vh;width:100%;box-sizing:border-box;display:flex;justify-content:center;align-items:flex-start;gap:.6rem;padding:0 .5rem;overflow:hidden}.council-card{flex:0 0 auto;height:40vh;display:flex;flex-direction:column;align-items:center}.council-card--restricted{opacity:.6}.council-card--removed{opacity:.35}.council-card__art{position:relative;height:var(--card-h);flex:0 0 auto}.council-card__count{position:absolute;top:.2rem;right:.2rem;min-width:1.2rem;height:1.2rem;padding:0 .25rem;box-sizing:border-box;border-radius:.3rem;background:#c9973ae6;color:#fff;font-size:1.21rem;font-weight:700;display:flex;align-items:center;justify-content:center}.council-card__band{height:5vh;display:flex;align-items:center;justify-content:center;padding:.3rem;box-sizing:border-box}.prop__empty{color:var(--text-muted)}.board__decision{background:var(--surface);border:1px solid var(--border-accent);border-radius:.3rem;padding:.6rem;display:flex;flex-direction:column;gap:.45rem}.board__decision--wait{border-color:var(--border-subtle);color:var(--text-muted)}.board__decision-hint{margin:0;font-size:1.155rem;color:var(--text-muted)}.board__decision-options{display:flex;gap:.4rem;flex-wrap:wrap}.board__decision-card-target{display:flex;flex-direction:column;align-items:center;gap:.25rem;cursor:pointer}.board__decision-card-label{font-size:1.05rem;color:var(--text-muted);text-align:center}.board__decision-block{display:flex;flex-direction:column;gap:.3rem}.board__decision-label{font-size:1.155rem;color:var(--text-primary)}.resolution{--card-h: 35vh;--card-w: calc(var(--card-h) * 2 / 3);position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;gap:2vh;padding:2vh 2vw;background:var(--bg-base);overflow:auto}.resolution__head{width:100%;flex:0 0 auto;display:flex;align-items:center;justify-content:space-between}.resolution__title{margin:0;color:var(--text-primary);font-family:Cinzel,serif;letter-spacing:.15em}.resolution__row{width:100%;display:flex;flex-direction:row;justify-content:center;align-items:flex-start;gap:1.5vw}.resolution__card{flex:0 0 auto;width:var(--card-w);display:flex;flex-direction:column;align-items:center;gap:1vh}.resolution__art .card{height:var(--card-h);width:auto;aspect-ratio:2 / 3;flex:0 0 auto}.resolution__lines{width:var(--card-w);margin:0;padding:0;list-style:none;text-align:center;font-size:2.2vh;color:var(--text-primary)}.resolution__line{margin:.4vh 0;line-height:1.25;overflow-wrap:anywhere;word-break:break-word}.tutorial{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;box-sizing:border-box;display:flex;flex-direction:column;gap:2vh;padding:2vh 2vw;background:var(--bg-base);overflow:auto}.tutorial__header{display:flex;flex-direction:row;justify-content:space-between;font-family:Cinzel,serif}.tutorial__title{flex:1;margin:0;text-align:center;color:var(--text-primary);letter-spacing:.15em}.tutorial__content{flex:1;display:flex;flex-direction:column;align-items:center;gap:2vh}.tutorial__text{max-width:52rem;text-align:center;font-size:1.21rem;line-height:1.7;color:var(--text-primary)}.tutorial__footer{display:flex;flex-direction:row;justify-content:center;padding:1vh 0}.board__buildings{grid-column:3;width:100%;margin-top:var(--timer-h);height:calc(100dvh - var(--timer-h));box-sizing:border-box;display:flex;flex-direction:column;align-items:center;gap:.4rem;padding:.4rem 1vw;overflow-y:auto;overflow-x:hidden;background:var(--surface);border:1px solid var(--border-subtle);border-radius:.3rem}.building-card{flex:0 0 auto}.screen--board .card__placeholder,.screen--board .card__kind{font-size:.825rem}.board__center{grid-column:2;min-width:0;height:100dvh;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;gap:.6rem;padding:.5rem .5rem 0;overflow:hidden}.board__turn-row{flex:0 0 auto;display:flex;flex-direction:row;align-items:center;gap:.75rem;width:100%}.board__phase-banner{flex:1;height:var(--timer-h);display:inline-flex;align-items:center;justify-content:center;max-width:100%;padding:0 1.25rem;border-radius:.3rem;background:var(--surface);border:1px solid var(--border-subtle);color:var(--accent-gold);font-weight:600;font-size:1.32rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-hand{flex:0 0 auto;height:40vh;width:100%;box-sizing:border-box;display:flex;flex-direction:column;gap:.4rem;padding:.4rem .5rem;background:var(--surface);border:1px solid var(--border-subtle);border-radius:.3rem .3rem 0 0;overflow:hidden}.player-hand__header{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .9rem;font-size:1.155rem;color:var(--text-muted)}.player-hand__name{color:var(--text-primary);font-weight:600;font-size:1.32rem}[data-testid=hand-building-score],[data-testid=hand-mandate-score]{font-size:1.32rem;font-weight:700;color:#f0b232}.player-hand__body{flex:1;min-height:0;display:flex;flex-direction:row;gap:.5rem;overflow:hidden}.player-hand__playables{flex:1;min-width:0;min-height:0;display:flex;flex-wrap:wrap;align-content:flex-start;gap:.5rem;overflow-y:auto;overflow-x:hidden;padding-right:.25rem}.player-hand__card,.player-hand__character{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:.2rem}.board__overlays{position:fixed;left:50%;bottom:1rem;transform:translate(-50%);z-index:55;width:min(40rem,90vw);max-height:60vh;overflow-y:auto;display:flex;flex-direction:column;gap:.5rem;pointer-events:none}.board__overlays>*{pointer-events:auto}.screen--end{align-items:center;justify-content:flex-start;padding:2rem 1.5rem}.end__card{width:100%;max-width:60rem;display:flex;flex-direction:column;align-items:center;gap:1.25rem}.end__winner{font-size:2.2rem;margin:0;color:var(--accent-gold);font-family:Cinzel,serif;letter-spacing:.15em}.end__tiebreak{margin:0;color:var(--text-muted)}.end__reveal{display:flex;gap:1rem;flex-wrap:wrap;justify-content:center}.end__seat{background:var(--surface);border:1px solid var(--border-subtle);border-radius:.3rem;padding:.9rem;display:flex;flex-direction:column;align-items:center;gap:.5rem;width:10rem}.end__seat--winner{border-color:var(--accent-gold)}.end__seat-name{font-size:1.045rem}.end__scores{margin:0;width:100%;font-size:.902rem}.end__scores>div{display:flex;justify-content:space-between;color:var(--text-muted)}.end__scores dt,.end__scores dd{margin:0}.end__total{font-weight:700;color:var(--text-primary);border-top:1px solid var(--border-subtle);padding-top:.25rem;margin-top:.25rem}.end__actions{display:flex;gap:.75rem}
