:root{--paper:#f6efe0;--paper-2:#efe4cc;--card:#fffaf0;--ink:#2b2118;--ink-2:#5b4a3a;--muted:#8a7766;--line:#d9c9a8;--accent:#2f6b4f;--accent-ink:#fff;--danger:#a3352a;--warn:#9a6a00;--ok:#2f6b4f;--forest:#4f8a4a;--desert:#e3bf62;--mountain:#8d8a86;--water:#4f9cc4;--wild:conic-gradient(var(--forest) 0 25%, var(--desert) 0 50%, var(--mountain) 0 75%, var(--water) 0);--sea:#cfe3e8;--radius:10px;color:var(--ink);background:var(--paper);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body{background:var(--paper);min-height:100vh;margin:0}h1{margin:.4em 0;font-family:inherit;font-size:1.8rem}h3{margin:1.2em 0 .3em;font-size:1rem}button,input,select,textarea{font:inherit;color:inherit}button{border:1px solid var(--line);background:var(--card);cursor:pointer;white-space:nowrap;border-radius:8px;padding:.4em .85em}button:hover:not(:disabled){border-color:var(--ink-2)}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}button.danger{background:var(--danger);border-color:var(--danger);color:#fff}button.ghost{background:0 0}button.small{padding:.2em .6em;font-size:.85em}.icon-button{color:var(--muted);background:0 0;border:none;padding:0 .35em;font-size:1.1em}input,select,textarea{border:1px solid var(--line);background:#fff;border-radius:6px;padding:.35em .5em}input:focus,select:focus,textarea:focus,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.muted{color:var(--muted)}.hint{color:var(--muted);margin:.2em 0 0;font-size:.85em}.error-text{color:var(--danger)}.warn-text{color:var(--warn)}.narrow{max-width:60ch}.center{place-items:center;min-height:60vh;padding:1rem;display:grid}.row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.space-between{justify-content:space-between}.spacer{flex:1}.topbar{border-bottom:1px solid var(--line);background:var(--paper-2);flex-wrap:wrap;align-items:center;gap:1.5rem;padding:.6rem 1rem;display:flex}.brand{font-family:inherit;font-size:1.15rem;font-weight:700}.topbar nav{gap:1rem;display:flex}.topbar nav a{color:var(--ink-2);border-bottom:2px solid #0000;padding:.2em 0;text-decoration:none}.topbar nav a.active{color:var(--ink);border-color:var(--accent)}.user{align-items:center;gap:.6rem;min-width:0;margin-left:auto;display:flex}.user img{border-radius:50%;width:28px;height:28px}.user .muted{text-overflow:ellipsis;overflow:hidden}.count-badge{background:var(--danger);color:#fff;border-radius:999px;place-items:center;min-width:1.2rem;height:1.2rem;margin-left:.3rem;padding:0 .3rem;font-size:.75rem;font-weight:700;display:inline-grid}.friends{max-width:560px}.friends h2{margin:1.4rem 0 .5rem;font-size:1.05rem}.friends .card{gap:.3rem}.nickname{font-size:1.15rem}.nickname-form{width:100%}.nickname-form input{flex:1;min-width:0}.nickname-form p{margin:.35rem 0 0}.grow{flex:1;min-width:0}.ok-text{color:var(--accent)}.people{margin:0;padding:0;list-style:none}.people li{border-bottom:1px dashed var(--line);flex-wrap:wrap;align-items:center;gap:.5rem;padding:.5rem 0;display:flex}.avatar{border-radius:50%;width:32px;height:32px}.avatar.empty{background:var(--paper-2);border:1px solid var(--line);display:inline-block}.page{max-width:1100px;margin:0 auto;padding:1rem clamp(1rem,3vw,2.5rem) 3rem}.tabs{border-bottom:1px solid var(--line);gap:.25rem;margin-bottom:1rem;display:flex;overflow-x:auto}.tabs button{color:var(--ink-2);background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;padding:.5em .9em}.tabs button.active{border-color:var(--accent);color:var(--ink);font-weight:600}.tabs.small button{padding:.45em .6em;font-size:.9em}.card-list{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.8rem;padding:0;list-style:none;display:grid}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;gap:.5rem;padding:.9rem 1rem;display:flex}.badge{background:var(--paper-2);color:var(--ink-2);border-radius:999px;padding:.15em .55em;font-size:.75rem}.badge.published{color:var(--accent);background:#d8ecdf}.table-wrap{margin-top:1rem;overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--line);padding:.4rem .6rem}table.compact td{padding:.3rem .4rem}.login{background:radial-gradient(circle at 50% 30%, var(--paper) 0, var(--paper-2) 70%);align-content:center;place-items:center;gap:1rem;min-height:100vh;padding:1rem;display:grid}.login-card{background:var(--card);border:1px solid var(--line);text-align:center;border-radius:16px;flex-direction:column;align-items:center;gap:.6rem;width:min(420px,100%);padding:2rem;display:flex}.login-footer{text-align:center;max-width:420px;color:var(--muted);font-size:.8rem}.login-footer a{color:var(--accent)}.login-footer p{margin:.3rem 0}.google-button{min-height:44px}.notice{background:var(--paper-2);border-radius:8px;padding:.6rem .8rem}.dev-login{border-top:1px dashed var(--line);text-align:left;flex-direction:column;gap:.5rem;width:100%;margin-top:1rem;padding-top:1rem;font-size:.9em;display:flex}.dev-login label{color:var(--muted);flex-direction:column;gap:.3rem;display:flex}.editor{flex-direction:column;height:100vh;display:flex}.editor-bar{background:var(--paper-2);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:.5rem;padding:.5rem 1rem;display:flex}.editor-bar .back{color:var(--ink-2);margin-right:.5rem;text-decoration:none}.editor-title{text-overflow:ellipsis;white-space:nowrap;max-width:30ch;font-family:inherit;font-size:1.1rem;overflow:hidden}.save-state{text-align:right;min-width:8ch;font-size:.85em}.banner{background:#f8e1dc;padding:.4rem 1rem}.editor-main{flex:1;grid-template-columns:1fr minmax(320px,400px);min-height:0;display:grid}.board-area{flex-direction:column;min-width:0;min-height:0;display:flex}.toolbar{border-bottom:1px solid var(--line);flex-direction:column;gap:.5rem;padding:.6rem 1rem;display:flex}.segmented{flex-wrap:wrap;gap:.25rem;display:flex}.segmented button.active,.swatch-button.active{background:var(--ink);border-color:var(--ink);color:var(--paper)}.tool-options{flex-wrap:wrap;align-items:center;gap:.35rem;min-height:2.1em;display:flex}.swatch-button{align-items:center;gap:.4em;display:inline-flex}.swatch{vertical-align:-.15em;border:1px solid #00000040;border-radius:3px;width:1em;height:1em;display:inline-block}.swatch.terrain-forest{background:var(--forest)}.swatch.terrain-desert{background:var(--desert)}.swatch.terrain-mountain{background:var(--mountain)}.swatch.terrain-water{background:var(--water)}.swatch.terrain-wild{background:var(--wild)}.icon{vertical-align:middle;flex:none}.board-wrap{background:var(--sea);flex:1;min-height:300px;position:relative}.hex-board{touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;inset:0}.zoom-controls{gap:.3rem;display:flex;position:absolute;bottom:.8rem;right:.8rem}.zoom-controls button{min-width:2.2em;box-shadow:0 1px 3px #00000026}.hex{stroke:#3a2e22;stroke-width:1.5px;stroke-linejoin:round}.hex.terrain-forest{fill:var(--forest)}.hex.terrain-desert{fill:var(--desert)}.hex.terrain-mountain{fill:var(--mountain)}.hex.terrain-water{fill:var(--water)}.hex.hover{stroke:#fff;stroke-width:3px}.hex.pending{stroke:#ff5a36;stroke-width:4px}.add-hex{cursor:copy}.add-preview{opacity:0;stroke:var(--ink);stroke-width:1.5px;stroke-dasharray:4 3;pointer-events:none;transition:opacity .1s}.add-preview.terrain-forest{fill:var(--forest)}.add-preview.terrain-desert{fill:var(--desert)}.add-preview.terrain-mountain{fill:var(--mountain)}.add-preview.terrain-water{fill:var(--water)}.add-hex:hover .add-preview{opacity:.75}.add-hit{fill:#0000}.add-badge{fill:#fffaf0;stroke:#b8741a;stroke-width:1.5px}.add-plus{stroke:#b8741a;stroke-width:2px;stroke-linecap:round}.add-hex:hover .add-badge{fill:#b8741a}.add-hex:hover .add-plus{stroke:#fff}.hex-feature{pointer-events:none}.village{fill:#fffaf0;stroke:var(--ink);stroke-width:2px}.village-label{text-anchor:middle;dominant-baseline:central;fill:var(--ink);font:700 16px system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.monument-bg{fill:#fffaf0d9;stroke:var(--ink);stroke-width:1px}.ferry{pointer-events:none}.ferry.removable .ferry-hit{pointer-events:stroke;cursor:pointer}.ferry-line{stroke:#1d3f66;stroke-width:3px;stroke-dasharray:8 5;stroke-linecap:round}.ferry-hit{stroke:#0000;stroke-width:14px}.ferry.removable:hover .ferry-line{stroke:var(--danger)}.ferry-end{fill:#1d3f66;stroke:#fff;stroke-width:1.5px}.side-panel{border-left:1px solid var(--line);background:var(--card);min-height:0;overflow-y:auto}.side-panel .tabs{background:var(--card);z-index:1;margin-bottom:0;position:sticky;top:0}.panel-body{padding:.8rem 1rem 2rem}.panel-body>.muted:first-child{margin-top:0}.field{color:var(--ink-2);flex-direction:column;gap:.25rem;margin-bottom:.8rem;font-size:.9em;display:flex}.field.inline{flex-direction:row;justify-content:space-between;align-items:center;gap:.8rem}.check{align-items:center;gap:.3em;font-size:.9em;display:inline-flex}.score-block{border:1px solid var(--line);border-radius:8px;flex-direction:column;gap:.4rem;margin-bottom:.5rem;padding:.55rem .7rem;display:flex}.step-label{min-width:7.5em;font-size:.9em}.int-list{flex-wrap:wrap;align-items:center;gap:.3rem;display:flex}.int-chip{align-items:center;gap:.2rem;font-size:.9em;display:inline-flex}.setup-card{border:1px solid var(--line);border-radius:8px;margin-bottom:.6rem;padding:.55rem .7rem}.setup-card.invalid{border-color:var(--danger)}.slots{grid-template-columns:repeat(auto-fill,minmax(3.6em,1fr));gap:.3rem;margin-top:.4rem;display:grid}.slot{flex-direction:column;align-items:center;font-size:.8em;display:flex}.issues{padding-left:1.2em}.issues li{margin-bottom:.35em}@media (width<=860px){.editor{height:auto;min-height:100vh}.editor-main{grid-template-columns:1fr}.board-wrap{min-height:60vh}.side-panel{border-left:none;border-top:1px solid var(--line)}}.village.fixed{fill:#2b2118}.village.fixed+.village-label{fill:#fffaf0}.ferry.used .ferry-line{stroke:#5a2d12;stroke-dasharray:none}.letter-input{text-align:center;text-transform:uppercase;width:2.4em;font-weight:700}.ferry-boat{pointer-events:none}.notifications{gap:.4rem;margin-bottom:1rem}.matches{margin-bottom:1.5rem}.matches h2{margin:0;font-size:1.15rem}.matches .card-list{margin-top:.6rem}.match-card{cursor:pointer}.match-card:hover{border-color:var(--ink-2)}.badge.turn{background:var(--accent);color:var(--accent-ink)}.badge.invite{background:var(--danger);color:#fff}.badge.p-joined{color:var(--accent);background:#d8ecdf}.badge.p-declined,.badge.p-left,.badge.p-kicked{text-decoration:line-through}.invite-popup{left:50%;bottom:calc(1rem + env(safe-area-inset-bottom,0px));z-index:50;background:var(--card);border:1px solid var(--line);border-radius:14px;width:min(420px,100% - 2rem);padding:.9rem 1rem;animation:.25s ease-out invite-in;position:fixed;transform:translate(-50%);box-shadow:0 10px 40px #00000040}.invite-popup p{margin:0 0 .7rem}@keyframes invite-in{0%{opacity:0;transform:translate(-50%,20px)}}.new-match{flex-direction:column;gap:.6rem;display:flex}.new-match h3{margin:.4rem 0 0;font-size:.95rem}.new-match>label{flex-direction:column;gap:.25rem;display:flex}.new-match label.check,.people.pick label{cursor:pointer;flex-direction:row;align-items:center;gap:.5rem;display:flex}.people.pick{max-height:40vh;overflow-y:auto}.people.pick li{padding:.3rem 0}.lobby{max-width:560px}.lobby-actions{margin-top:1.2rem}.topbar .back{color:var(--ink);font-size:1.3rem;text-decoration:none}.players-panel{padding:.6rem 1rem 0}.players-panel h3{margin:.3rem 0;font-size:.9rem}.people.compact li{gap:.4rem;padding:.25rem 0}.people.compact li.current strong{color:var(--accent)}button.link{text-align:left;background:0 0;border:none;padding:0}button.link:not(:disabled) strong{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}button.link:disabled{opacity:1}.results{margin:0 0 1rem;padding:0;list-style:none}.results li{border-bottom:1px dashed var(--line);align-items:center;gap:.6rem;padding:.4rem 0;font-size:1.05rem;display:flex}.results .place{text-align:center;width:1.6rem}.island-name{font-family:inherit;font-size:1.1rem}.island-desc{margin:0}.small-text{font-size:.85em}.tiny{font-size:.7em}.button-link{border:1px solid var(--line);color:inherit;background:var(--card);border-radius:8px;padding:.4em .85em;text-decoration:none;display:inline-block}.game{overscroll-behavior:none;flex-direction:column;display:flex;position:fixed;inset:0;overflow:hidden}.game-bar{padding:calc(.45rem + env(safe-area-inset-top,0px)) .8rem .45rem;background:var(--paper-2);border-bottom:1px solid var(--line);white-space:nowrap;align-items:center;gap:.6rem;display:flex}.game-bar .back{color:var(--ink);padding:0 .3rem;font-size:1.3rem;text-decoration:none}.game-title{text-overflow:ellipsis;min-width:0;font-family:inherit;overflow:hidden}.score-pill{background:var(--card);border:1px solid var(--line);border-radius:999px;padding:.15em .7em}.game-main{flex:1;grid-template-columns:1fr minmax(280px,340px);min-height:0;display:grid;position:relative}.play-area{flex-direction:column;min-width:0;min-height:0;display:flex}.card-strip{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:center;align-items:center;gap:.6rem;min-height:3.6rem;padding:.5rem .8rem;display:flex}.terrain-card{border:2px solid var(--ink);border-radius:8px;width:3.6rem;height:2.6rem;display:inline-block;box-shadow:0 2px #0003}.terrain-card.terrain-forest{background:var(--forest)}.terrain-card.terrain-desert{background:var(--desert)}.terrain-card.terrain-mountain{background:var(--mountain)}.terrain-card.terrain-water{background:var(--water)}.terrain-card.terrain-wild{background:var(--wild)}.current-cards{align-items:center;gap:.5rem;display:inline-flex}.deck-counts{border-left:1px solid var(--line);gap:.25rem;padding-left:.6rem;display:inline-flex}.mini-card{border:1.5px solid var(--ink);border-radius:5px;place-items:center;width:1.75rem;height:2.35rem;display:inline-grid}.mini-card.terrain-forest{background:var(--forest)}.mini-card.terrain-desert{background:var(--desert)}.mini-card.terrain-mountain{background:var(--mountain)}.mini-card.terrain-water{background:var(--water)}.mini-card.terrain-wild{background:var(--wild)}.mini-card.empty{opacity:.35}.mini-count{min-width:1.25rem;height:1.25rem;color:var(--ink);font-variant-numeric:tabular-nums;background:#fff;border-radius:999px;place-items:center;padding:0 .15rem;font-size:.75rem;font-weight:700;display:inline-grid}.round-info{text-overflow:ellipsis;overflow:hidden}.free-banner{color:#8a5a00;text-align:center;font-weight:600}.game-board{touch-action:none;-webkit-user-select:none;user-select:none;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.game-board.panning{cursor:grabbing}.game-board .hex{stroke:#2b211840;stroke-width:1px}.trail{stroke:#5a2d12;stroke-width:6px;stroke-linecap:round;pointer-events:none}.drafts{pointer-events:none}.draft{stroke:#fff;stroke-width:2px;stroke-linecap:round}.draft-halo{stroke:#3ee6ff;stroke-linecap:round}.draft-halo.outer{stroke-width:9px;opacity:.22}.draft-halo.inner{stroke-width:5px;opacity:.55}.drafts.free .draft-halo{stroke:#ffc93e}.draft-selected{stroke:#7a1fd6;stroke-width:6.5px;stroke-linecap:round;pointer-events:none}.draft-selected-casing{stroke:#fffaf0;stroke-width:9.5px;stroke-linecap:round;pointer-events:none}.monument-bg.unconnected{fill:#fff;stroke:#2b21188c;stroke-width:1.2px}.action-bar{padding:.55rem .8rem calc(.55rem + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line);background:var(--paper-2);justify-content:flex-end;align-items:center;gap:.7rem;display:flex}button.wide{min-width:10rem;padding:.65em 1.2em;font-size:1rem}.toasts{pointer-events:none;flex-direction:column;align-items:center;gap:.35rem;width:min(90%,420px);display:flex;position:absolute;top:.6rem;left:50%;transform:translate(-50%)}.toast{color:#fffaf0;text-align:center;background:#2b2118e6;border-radius:999px;padding:.45em .9em;font-size:.9rem;animation:.2s ease-out toast-in}@keyframes toast-in{0%{opacity:0;transform:translateY(-6px)}}.sheet-panel{border-left:1px solid var(--line);background:var(--card);min-height:0;overflow-y:auto}.sheet-toggle{display:none}.action-bar{flex-wrap:wrap}.new-game-ask{text-align:center;flex-basis:100%;order:-1}.score-sheet{padding:.2rem 1rem 1rem}.score-sheet h3{margin:.7em 0 .25em;font-size:.9rem}.score-sheet .compact td{padding:.2rem .3rem}.sheet-table td{border-bottom:1px dashed var(--line)}.sheet-name{white-space:nowrap;align-items:center;gap:.35em;display:inline-flex}.num{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}.steps{gap:.2rem;display:inline-flex}.step-chip{border:1px solid var(--line);color:var(--muted);border-radius:999px;align-items:center;gap:.1em;padding:0 .45em;font-size:.85em;display:inline-flex}.step-chip.reached{background:var(--ink);border-color:var(--ink);color:var(--paper)}.trail-mark{color:#b8741a;font-weight:700}.rounds-row{gap:.4rem;margin-top:.4rem;display:flex}.round-cell{border:1px solid var(--line);border-radius:8px;flex:1;justify-content:space-between;align-items:baseline;gap:.3rem;padding:.15rem .55rem;line-height:1.3;display:flex}.round-cell.current{border:2px solid var(--accent);background:#2f6b4f12;padding:calc(.15rem - 1px) calc(.55rem - 1px)}.pair-list{margin:0;padding:0;list-style:none}.pair-list li{border-bottom:1px dashed var(--line);align-items:center;gap:.5rem;padding:.22rem 0;display:flex}.pairs-grid{grid-template-columns:1fr 1fr;grid-auto-flow:column;column-gap:.9rem;display:grid}.pairs-grid li{gap:.35rem;min-width:0}.pairs-grid .pair-badges{min-width:0}.pair-list li.done .letter{background:var(--accent);border-color:var(--accent);color:#fff}.pair-list li.red.done .sheet-name{color:var(--accent);font-weight:600}.pair-badges{align-items:center;gap:.2rem;min-width:4.5em;display:inline-flex}.letter{border:1.5px solid var(--ink);width:1.5em;height:1.5em;color:var(--ink);background:#fffaf0;border-radius:50%;place-items:center;font-family:inherit;font-size:.85em;font-weight:700;display:inline-grid}.bonus{color:#2f5b9a;font-size:.8em}.sheet-total{border-top:2px solid var(--ink);justify-content:space-between;align-items:baseline;margin-top:.6rem;padding-top:.4rem;font-size:1.1rem;display:flex}.sheet-total strong{font-size:1.5rem}.modal-backdrop{z-index:10;background:#2b211873;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.modal{background:var(--card);border-radius:16px;width:min(440px,100%);max-height:90dvh;padding:1.4rem 1.5rem;overflow-y:auto;box-shadow:0 10px 40px #00000040}.modal h2{margin:0 0 .6rem;font-family:inherit}.final-score{flex-direction:column;align-items:center;margin:.5rem 0;display:flex}.final-score strong{font-family:inherit;font-size:3rem;line-height:1.1}.history{margin:0 0 1rem;padding:0;list-style:none}.history li{border-bottom:1px dashed var(--line);justify-content:space-between;padding:.25rem 0;display:flex}.show-narrow{display:none}@media (width<=860px){.game-main{grid-template-columns:1fr}.sheet-panel{visibility:hidden;z-index:5;border-left:none;transition:transform .2s ease-out,visibility 0s .2s;position:absolute;inset:0;transform:translateY(100%)}.sheet-panel.open{visibility:visible;transition:transform .2s ease-out;transform:none}.sheet-toggle{min-width:6.5rem;margin-right:auto;padding:.65em 1em;font-size:1rem;display:inline-block}.new-game-ask{display:block!important}.hide-narrow{display:none}.show-narrow{display:inline}.action-bar button.wide{flex:1}.action-bar .small-text{display:none}}
