:root{--night:#172122;--paper:#f1eddf;--sand:#d5c9ad;--clay:#cd6242;--gold:#e2ae54;--ink:#172122;--muted:#627071;--line:#b8b19e}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px Manrope,Arial,sans-serif}.topbar{height:72px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,5vw,80px);border-bottom:1px solid #c8c0aa}.topbar a{color:inherit;text-decoration:none}.topbar nav{display:flex;gap:20px;align-items:center}.user{font-size:.85rem;color:var(--muted)}.brand{display:flex;align-items:center;gap:10px;font:800 22px Fraunces,serif}.brand-mark{display:grid;place-items:center;width:36px;height:36px;color:var(--paper);background:var(--clay);font:700 12px 'DM Mono',monospace}.eyebrow{margin:0 0 14px;color:var(--gold);font:500 11px 'DM Mono',monospace;text-transform:uppercase;letter-spacing:.14em}.hero{min-height:510px;padding:100px clamp(24px,13vw,220px);background:radial-gradient(circle at 80% 35%,#d78d58 0,transparent 26%),linear-gradient(125deg,#213335 0%,#172122 68%);color:var(--paper)}.hero h1,.auth-card h1,.section-heading h1{max-width:750px;margin:0;font:800 clamp(48px,7vw,92px)/.95 Fraunces,serif;letter-spacing:-.06em}.hero h1 em{color:#e0a77b;font-weight:600}.hero-copy{max-width:500px;margin:28px 0;color:#d8d7cc;font-size:18px;line-height:1.7}.button{border:0;display:inline-flex;gap:26px;align-items:center;justify-content:center;padding:14px 20px;cursor:pointer;text-decoration:none;font:700 13px Manrope,sans-serif}.primary{background:var(--clay);color:white}.secondary{background:var(--night);color:#fff}.google{background:#fff;color:#222;border:1px solid #ddd}.google-g{font-weight:800;font-size:20px;color:#4285f4}.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);max-width:1120px;margin:-38px auto 70px;position:relative;box-shadow:0 20px 55px #26303321}.feature-grid article{background:#fbf8ec;padding:32px;border-right:1px solid var(--sand)}.feature-grid span{color:var(--clay);font:12px 'DM Mono',monospace}.feature-grid h2{font:700 25px Fraunces,serif;margin:24px 0 8px}.feature-grid p{color:var(--muted);line-height:1.6}.auth-card,.lobby{max-width:850px;margin:70px auto;padding:0 24px}.auth-card{max-width:500px;background:#fcfaf1;padding:42px;box-shadow:0 14px 40px #1a252520}.auth-card h1,.section-heading h1{font-size:48px}.auth-card>p:not(.eyebrow){line-height:1.7;color:var(--muted)}.notice{padding:12px;background:#f1e4c6;font-size:13px}.local-login{display:grid;gap:14px;margin-top:26px;border-top:1px solid var(--sand);padding-top:24px}.local-login label,label{display:grid;gap:7px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}input,select{padding:11px;border:1px solid var(--line);background:#fffdf5;color:var(--ink);font:15px Manrope}.setup-card{display:grid;grid-template-columns:1fr auto 1fr;gap:24px;margin-top:36px;padding:32px;background:#fcfaf1;box-shadow:0 14px 35px #1a252516}.player-setup{display:grid;gap:14px}.player-setup h2{margin:0 0 4px;font:700 27px Fraunces,serif}.versus{align-self:center;color:var(--clay);font:700 18px 'DM Mono',monospace}.seed-field{grid-column:1/3;max-width:200px}.setup-card .button{align-self:end}.error{color:#9f3425;font-weight:700}.loading{padding:100px;text-align:center;font:700 24px Fraunces,serif}.game-shell{max-width:1440px;margin:auto;padding:28px 24px 70px}.game-header{display:flex;justify-content:space-between;align-items:end;margin-bottom:22px}.game-header h1{margin:0;font:700 38px Fraunces,serif}.quiet,.control-row button,.card-actions button{border:1px solid var(--line);background:#f8f3e5;padding:8px 10px;cursor:pointer;font:600 12px Manrope}.controls{background:var(--night);color:#f4efdf;padding:24px;margin-bottom:20px}.controls h2{margin:0 0 7px;font:700 28px Fraunces,serif}.controls p:not(.eyebrow){color:#c5ccbd;max-width:720px}.control-row{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.control-row button{background:#31504d;color:#fff;border-color:#5f7771}.control-row button:disabled{opacity:.4}.end-turn{border:0;background:var(--gold);padding:11px 14px;font-weight:800;cursor:pointer}.board{display:grid;grid-template-columns:1fr 1fr;gap:16px}.player{background:#ded7c3;padding:16px;border-top:5px solid #9e9b8f}.active-player{background:#f8f3e5;border-color:var(--clay)}.player>header{display:flex;justify-content:space-between;align-items:start}.player h2{margin:2px 0;font:700 25px Fraunces,serif}.player header p,.pile-count{margin:0;color:var(--muted);font-size:12px}.life{display:flex;flex-direction:column;align-items:center;font:700 35px 'DM Mono',monospace;color:var(--clay)}.life small{font:11px Manrope;text-transform:uppercase}.zone{margin-top:18px}.zone h3,.buildings h3,.log h3{margin:0 0 7px;font:600 11px 'DM Mono',monospace;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.lanes{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.lane{min-height:104px;padding:5px;background:#c8c1af}.lane>span{display:block;color:#63706e;font:10px 'DM Mono',monospace;text-transform:uppercase}.unit{position:relative;margin-top:5px;padding:5px;background:#f7f3e7;cursor:pointer;display:flex;gap:6px;border:2px solid transparent}.unit.selected{border-color:var(--clay)}.unit img{width:42px;height:58px;object-fit:cover}.unit-info{display:grid;align-content:start;gap:3px;font-size:10px}.unit-info span,.unit-info small{color:var(--muted)}.attack-check{position:absolute;bottom:3px;right:3px;font-size:9px}.buildings{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}.buildings h3{width:100%}.building{min-width:126px;text-align:left;padding:9px;border:1px solid #aaa492;background:#e6dfcb;cursor:pointer}.building:disabled{cursor:default}.building b,.building span,.building small{display:block}.building span{color:var(--clay);font-weight:800}.building small{font-size:10px;color:var(--muted)}.hand-panel{margin-top:20px;padding:22px;background:#243337;color:#f7f2e3}.hand-panel h2{font:700 27px Fraunces,serif;margin:0 0 5px}.hand-panel>p{color:#c7cec1}.hand{display:flex;gap:10px;overflow-x:auto;padding:10px 0}.card{width:138px;flex:0 0 138px;display:grid;gap:4px;padding:7px;background:#e9e1cd;color:var(--ink);font-size:11px}.card img{height:172px;width:100%;object-fit:cover;background:#b9b19f}.card small{color:var(--muted)}.card-actions{display:flex;flex-wrap:wrap;gap:4px}.card-actions button{font-size:10px;padding:4px}.pending{position:relative;cursor:pointer}.pending input{position:absolute;z-index:2;top:10px;left:10px}.log{margin-top:20px;padding:16px;background:#e9e2cf}.log p{margin:6px 0;border-top:1px solid #cdc3aa;padding-top:6px;font-size:12px}.winner{background:var(--clay)}@media(max-width:850px){.feature-grid,.board,.setup-card{grid-template-columns:1fr}.feature-grid{margin:0}.versus{justify-self:center}.seed-field{grid-column:auto}.hero{padding:80px 25px}.board{gap:10px}.lanes{grid-template-columns:1fr}.lane{min-height:50px}.unit img{height:48px}.game-shell{padding:16px}.player{padding:10px}}