
:root{--bg:#f4efe3;--paper:#fffdf8;--paper2:#f9f6ed;--ink:#17130e;--muted:#6b6358;--green:#143f32;--green2:#0f3028;--rust:#8d4328;--line:rgba(23,19,14,.13);--soft:#eaf1dc;--shadow:0 22px 60px rgba(30,42,27,.10);--radius:12px}
*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;color:var(--ink);font-family:Inter,Arial,Helvetica,sans-serif;background:radial-gradient(circle at 12% 0%,rgba(255,252,235,.9),transparent 34rem),linear-gradient(180deg,#fffaf0 0,#f4efe3 420px,#ebe3d2 100%);-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}
header{position:sticky;top:0;z-index:10;min-height:70px;border-bottom:1px solid var(--line);background:rgba(250,246,236,.92);backdrop-filter:blur(18px)}.header-inner{max-width:1480px;margin:0 auto;min-height:70px;padding:10px clamp(16px,3vw,40px);display:flex;align-items:center;justify-content:space-between;gap:16px}
.brand{display:flex;align-items:center;gap:10px;font-size:22px;font-weight:950}.brand span{display:grid;place-items:center;width:40px;height:40px;border-radius:10px;background:var(--soft);color:var(--green);font-size:14px;box-shadow:inset 0 0 0 1px rgba(20,63,50,.08)}
nav{display:flex;gap:8px;align-items:center}nav a{min-height:38px;border:1px solid transparent;border-radius:8px;padding:8px 12px;font-weight:900;display:inline-flex;align-items:center}.nav-primary,.button.primary{background:var(--green);border-color:var(--green);color:white}
.button,button{min-height:44px;border:1px solid var(--line);border-radius:10px;background:white;padding:10px 14px;font-weight:900;display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;box-shadow:0 1px 0 rgba(0,0,0,.03);transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}.button:hover,button:hover{border-color:var(--green);box-shadow:0 10px 24px rgba(20,63,50,.10);transform:translateY(-1px)}.wide{width:100%}.danger{color:#9b1c1c}
button:disabled{opacity:.45;cursor:not-allowed}
.shell{max-width:1480px;margin:0 auto;padding:32px clamp(16px,3vw,40px) 64px}.shell.narrow{max-width:720px}.app-home{min-height:calc(100svh - 130px);display:grid;align-content:center}.home-join{margin-top:18px}.home-actions{display:grid;gap:12px;margin-top:18px}
h1{font-size:clamp(38px,6vw,70px);line-height:1.02;margin:10px 0 12px;letter-spacing:0}h2{font-size:24px;margin:0 0 10px}p{color:var(--muted);font-size:17px;line-height:1.5}.eyebrow{display:inline-flex;margin:0;color:var(--rust);font-size:12px;font-weight:900;letter-spacing:.14em;text-transform:uppercase}.topline{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-bottom:20px}.topline h1{font-size:clamp(34px,4vw,52px)}
.panel,.card,.route-row,.current-hole,.empty,.winner{border:1px solid var(--line);border-radius:var(--radius);background:rgba(255,253,248,.94);box-shadow:var(--shadow);padding:20px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}.card h2{margin-top:12px}.split{display:flex;align-items:center;justify-content:space-between;gap:10px}.status,.code,.join-code{border-radius:10px;background:var(--soft);color:var(--green);padding:7px 10px;font-weight:900}.join-code{font-size:42px;text-align:center;letter-spacing:.12em}
.actions{display:flex;flex-wrap:wrap;gap:9px}.actions form{margin:0}.stack{display:grid;gap:14px}.grid-main{display:grid;grid-template-columns:minmax(300px,360px) minmax(0,1fr);gap:20px;align-items:start}.game-layout{grid-template-columns:minmax(0,1fr) minmax(360px,420px);gap:24px}.game-layout>#score{position:sticky;top:88px}.stats{display:grid;grid-template-columns:1fr 1fr;gap:8px}.stats span,.feature,.info-grid>div,.mini-grid span{border-radius:8px;background:white;border:1px solid rgba(0,0,0,.08);padding:12px}.stats b,.feature b,.mini-grid b,.info-grid span{display:block;color:var(--green);font-size:12px;text-transform:uppercase;letter-spacing:.08em}.warnings,.shell-alert{border:1px solid #e2b061;background:#fff5dc;color:#5f3900;border-radius:8px;padding:10px 12px;font-weight:850}.warnings p{margin:4px 0;color:#5f3900;font-size:14px}.ok{border:1px solid rgba(23,63,50,.22);background:#eef6ea;color:var(--green);border-radius:8px;padding:10px 12px;font-weight:900}.shell-alert{max-width:1480px;margin:0 auto 14px}.sync-status{display:inline-flex;align-items:center;min-height:30px;margin:-8px 0 16px;border:1px solid rgba(20,63,50,.16);border-radius:999px;background:rgba(234,241,220,.72);padding:5px 10px;color:var(--green);font-size:12px;font-weight:900}.sync-status[data-kind="busy"]{background:#fff5dc;color:#5f3900}.sync-status[data-kind="warn"]{background:#fff0ea;color:#7a2c18}
.form{display:grid;gap:14px}.field{width:100%;min-height:48px;border:1px solid var(--line);border-radius:10px;background:white;padding:12px 13px;font:inherit;outline:none}.field:focus{border-color:var(--green);box-shadow:0 0 0 4px rgba(23,63,50,.13)}label{display:grid;gap:7px;font-weight:850}.check{display:flex;gap:10px;align-items:flex-start}.check input{width:20px;height:20px}fieldset{border:1px solid var(--line);border-radius:10px;display:grid;gap:10px;padding:14px;background:var(--paper2)}legend{font-weight:900}.two-cols{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.nav-controls{display:grid;grid-template-columns:1fr 1fr;gap:10px}.nav-controls form{margin:0}details{border-top:1px solid var(--line);padding-top:12px}summary{cursor:pointer;font-weight:900}.folded-section{margin-top:14px}.folded-section .cards,.folded-section .stack,.folded-section .form{margin-top:12px}.danger-zone summary{color:#9b1c1c}.compact-code{font-size:34px;letter-spacing:.1em}.jump-form{margin-top:12px}
.roster{display:flex;flex-wrap:wrap;gap:8px}.roster span{border-radius:999px;background:var(--soft);padding:7px 10px;font-weight:900;color:var(--green)}.route-row{display:grid;grid-template-columns:56px minmax(0,1fr) auto;gap:16px;align-items:start}.hole-num{display:grid;place-items:center;width:50px;height:50px;border-radius:12px;background:var(--green);color:white;font-size:20px;font-weight:950}.mini-grid,.info-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}.mini-grid span{font-size:14px}.current-hole{position:relative;overflow:hidden;background:var(--paper);color:var(--ink);border-top:6px solid var(--green)}.current-hole:before{content:"";position:absolute;inset:0 auto 0 0;width:6px;background:var(--green)}.hole-main{display:grid;grid-template-columns:minmax(280px,.92fr) minmax(330px,1.08fr);gap:18px;align-items:start}.hole-side{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:stretch}.hole-side .map-frame{grid-column:1/-1;order:-1}.hole-side .actions{display:grid;grid-template-columns:1fr;gap:10px}.hole-side .actions form,.hole-side .actions .button,.hole-side .actions button{width:100%}.hole-side .actions .button,.hole-side .actions button{min-height:54px;white-space:nowrap;text-align:center}.current-hole p{color:var(--muted)}.current-hole .eyebrow{color:var(--rust)}.current-hole h1{font-size:clamp(34px,3.5vw,52px);max-width:12ch;margin-bottom:10px}.current-hole .info-grid{grid-template-columns:1fr;gap:8px;margin-top:16px}.current-hole .info-grid>div{background:var(--paper2);border-color:var(--line);min-height:auto}.current-hole .info-grid span{color:var(--green)}.current-hole .button{background:white;color:var(--ink)}.current-hole .button.primary{background:var(--green);color:white}.arrival,.next-stop{border:1px solid var(--line);border-radius:12px;background:var(--paper2);padding:14px}.arrival b{font-size:28px;color:var(--green)}.arrival p{margin:4px 0 0;color:var(--muted);font-size:14px}.arrival span,.next-stop span{display:block;color:var(--green);font-size:12px;text-transform:uppercase;letter-spacing:.08em;font-weight:900}.next-stop{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;grid-column:1/-1}.next-stop span{grid-column:1/-1}.next-stop a{color:var(--green);text-decoration:underline;font-weight:900}
.map-frame{width:100%;height:360px;border:1px solid var(--line);border-radius:12px;background:white;overflow:hidden;display:grid;place-items:center;color:var(--muted);font-weight:900}.route-overview{height:480px}.current-hole .map-frame{height:340px;background:white}.route-marker{display:grid;place-items:center;width:30px!important;height:30px!important;border-radius:999px;background:var(--green);color:white;border:2px solid white;box-shadow:0 3px 10px rgba(0,0,0,.28);font-weight:900}.leaflet-container{font:inherit}.leaflet-popup-content{font-weight:900}
.scorer-help{max-width:36rem}.score-list{display:grid;gap:12px}.score-card{border:1px solid var(--line);border-radius:12px;background:white;padding:16px}.score-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}.score-head b{font-size:22px}.score-head small{display:block;margin-top:3px;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.08em;font-weight:900}.score-head span{display:grid;place-items:center;min-width:48px;height:42px;border-radius:12px;background:var(--soft);font-size:22px;font-weight:950;color:var(--green)}.score-head .par-pill{min-width:auto;padding:0 12px;font-size:15px}.score-stepper{display:grid;grid-template-columns:64px minmax(0,1fr) 64px;gap:10px;align-items:stretch}.score-round{border:0;border-radius:14px;background:var(--green);color:white;font-size:34px;font-weight:950;line-height:1;min-height:76px;padding:0}.score-total{display:grid;place-items:center;border:1px solid var(--line);border-radius:14px;background:var(--paper2);padding:10px;text-align:center;min-width:0}.score-total span{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--green);font-weight:950}.score-total strong{display:block;font-size:48px;line-height:.95}.score-total em{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-style:normal;font-size:13px;font-weight:800}.score-note{margin-top:10px}.score-note summary{cursor:pointer;color:var(--green);font-weight:950}.score-note .field{margin-top:8px}.autosave-status{border:1px solid var(--line);border-radius:999px;background:var(--paper2);padding:10px 12px;color:var(--muted);font-size:13px;font-weight:950;text-align:center}.autosave-status[data-kind="busy"]{background:#fff6df;color:#7b4a12;border-color:#ead39d}.autosave-status[data-kind="ok"]{background:var(--soft);color:var(--green)}.autosave-status[data-kind="warn"]{background:#fff0ea;color:#7a2c18;border-color:#d7a08d}
table{width:100%;border-collapse:collapse;background:white;border-radius:8px;overflow:hidden}th,td{padding:12px 10px;border-bottom:1px solid rgba(0,0,0,.09);text-align:left}th{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.scorecard-wrap{overflow-x:auto;border:1px solid rgba(0,0,0,.08);border-radius:8px}.scorecard{min-width:920px;border-radius:0}.scorecard th,.scorecard td{text-align:center;white-space:nowrap}.scorecard th span,.scorecard td span{display:block;margin-top:3px;font-size:11px;color:var(--muted);font-weight:800}.scorecard .sticky-col,.scorecard .player-col{position:sticky;background:white;z-index:2;text-align:left}.scorecard .sticky-col{left:0;min-width:46px}.scorecard .player-col{left:46px;min-width:150px;box-shadow:8px 0 12px rgba(0,0,0,.04)}.scorecard .pending{color:rgba(0,0,0,.32)}.cell-detail{border:0;padding:0}.cell-detail summary{list-style:none;cursor:pointer;font-weight:900}.cell-detail summary::-webkit-details-marker{display:none}.cell-detail[open]{min-width:150px}.cell-detail.has-note summary{color:var(--green)}.note-chip{display:inline-block!important;margin:4px 0 0!important;border-radius:999px;background:var(--soft);color:var(--green)!important;padding:2px 6px;font-size:10px!important;line-height:1.2}.table-note{margin:10px 0 0;font-size:13px}.recap-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-bottom:16px}.winner{margin-bottom:0;background:var(--soft)}.winner span{font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.12em;color:var(--rust)}.winner h2{font-size:36px;margin-top:6px}.score-notes{margin-bottom:16px}.score-note-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}.score-note-list p{margin:0;border:1px solid var(--line);border-radius:10px;background:var(--paper2);padding:10px}.score-note-list b,.score-note-list span{display:block}.score-note-list span{margin-top:4px;color:var(--muted)}.error{border:1px solid #d7a08d;background:#fff0ea;border-radius:8px;padding:12px;color:#7a2c18;font-weight:800}
@media(max-width:1100px){.game-layout{grid-template-columns:1fr}.game-layout>#score{position:static}.current-hole h1{max-width:none}}
@media(max-width:860px){header{min-height:62px}.brand{font-size:20px}.brand span{width:34px;height:34px}.shell{padding-top:20px;padding-bottom:86px}.grid-main,.recap-grid,.hole-main{grid-template-columns:1fr;min-height:auto}.scoring-layout>[data-main-slot]{display:contents}.scoring-layout>[data-score-slot]{order:1}.scoring-layout [data-host-controls-slot]{order:2}.scoring-layout [data-hole-slot]{order:3}h1{font-size:42px}.topline .button,.topline form,.actions .button,.actions form{width:100%}.mini-grid,.info-grid,.two-cols,.current-hole .info-grid,.hole-side{grid-template-columns:1fr}.route-row{grid-template-columns:44px 1fr}.route-row form{grid-column:1/-1}.hole-num{width:42px;height:42px}.stats{grid-template-columns:1fr 1fr}.button,button{min-height:46px}.current-hole{margin-left:-2px;margin-right:-2px}.current-hole h1{font-size:40px}.map-frame,.route-overview,.current-hole .map-frame{height:300px}.join-code{font-size:34px}.score-stepper{grid-template-columns:58px minmax(0,1fr) 58px}.score-round{min-height:70px}.score-total strong{font-size:44px}}
@media(max-width:420px){nav .button,nav a{padding:9px 10px}.brand b{font-size:18px}.shell{padding-left:12px;padding-right:12px}.stats{grid-template-columns:1fr}h1{font-size:38px}}
