:root{--bg:#0f1a14;--panel:#16241c;--line:#2a3d31;--txt:#e8f0ea;--mut:#9fb3a6;--acc:#5fd38d;--p3:#f2c14e;--p4:#5fd38d;--p5:#5aa9e6}
*{box-sizing:border-box}body{margin:0;font:15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--txt)}
a{color:var(--acc)}header.top{display:flex;align-items:center;gap:1rem;padding:.8rem 1.2rem;border-bottom:1px solid var(--line);background:#0b140f}
header.top .brand{font-weight:800;font-size:1.15rem;color:var(--txt);text-decoration:none}header.top .brand span{color:var(--acc)}
header.top nav a{margin-left:1rem;color:var(--mut);text-decoration:none}header.top nav a:hover{color:var(--txt)}
main{max-width:1150px;margin:0 auto;padding:1.2rem}h1{margin:.2rem 0 .3rem}h2{margin:0 0 .6rem;font-size:1.1rem}
.mut{color:var(--mut)}.small{font-size:.85rem}
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:1rem;margin-bottom:1rem}
.grid{display:grid;gap:1rem}.g2{grid-template-columns:1fr 1fr}@media(max-width:800px){.g2{grid-template-columns:1fr}}
.hero{padding:2.5rem 0 1.5rem}.hero h1{font-size:2.2rem}.btn{display:inline-block;background:var(--acc);color:#06210f;padding:.6rem 1rem;border-radius:8px;font-weight:700;text-decoration:none}
.feat{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem}.feat .card h3{margin:.1rem 0 .3rem;font-size:1rem}
.tag{display:inline-block;font-size:.72rem;padding:.1rem .45rem;border-radius:99px;border:1px solid var(--line);color:var(--mut)}.tag.live{color:var(--acc);border-color:var(--acc)}
#map{height:520px;border-radius:10px}
.stats{display:flex;flex-wrap:wrap;gap:.6rem}.stat{background:#0e1812;border:1px solid var(--line);border-radius:10px;padding:.5rem .8rem;min-width:110px}.stat b{display:block;font-size:1.25rem}
.tablewrap{overflow-x:auto}table.sc{border-collapse:collapse;width:100%;font-size:.85rem;text-align:center}
table.sc th,table.sc td{border:1px solid var(--line);padding:.3rem .35rem}table.sc th{background:#0e1812}table.sc td.lbl{text-align:left;font-weight:600;white-space:nowrap}
table.sc tr.par td{font-weight:700}table.sc td.sum{background:#0e1812;font-weight:700}table.sc tbody tr:hover{background:#1c2e23}
table.sc td.hole{cursor:pointer}
select{background:#0e1812;color:var(--txt);border:1px solid var(--line);border-radius:6px;padding:.3rem}
svg text{fill:var(--mut);font-size:11px}.legend span{margin-right:1rem}.sw{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px}
.courselist .card{display:flex;justify-content:space-between;align-items:center;gap:1rem}
footer{border-top:1px solid var(--line);color:var(--mut);font-size:.8rem;padding:1rem 1.2rem;text-align:center}
.leaflet-container{background:#0b140f}.hlabel{background:#fff;color:#000;border-radius:50%;width:22px;height:22px;line-height:22px;text-align:center;font-weight:800;font-size:11px;border:2px solid #222}
/* 2D planner */
body.planner{height:100vh;display:flex;flex-direction:column}body.planner footer{display:none}
.pl-wrap{flex:1;display:grid;grid-template-columns:330px 1fr;min-height:0}
.pl-side{overflow:auto;padding:1rem;border-right:1px solid var(--line);background:var(--panel)}.pl-side h2{font-size:.95rem;margin:1rem 0 .4rem}
.pl-map{height:100%!important;border-radius:0!important}
.pl-row{display:flex;gap:.4rem;align-items:center;margin:.4rem 0;flex-wrap:wrap}.pl-row select{flex:1}
button{background:#0e1812;color:var(--txt);border:1px solid var(--line);border-radius:6px;padding:.35rem .6rem;cursor:pointer;font:inherit;font-size:.85rem}button:hover{border-color:var(--acc)}
button.tog.on{background:var(--acc);color:#06210f;font-weight:700}
.pl-chk{display:block;font-size:.85rem;margin:.25rem 0}
.pl-side .stat{min-width:0;flex:1;padding:.35rem .5rem}.pl-side .stat b{font-size:1rem}
.pm{font-weight:800;text-align:center;line-height:20px;border-radius:50%;border:2px solid #111;font-size:11px}
.pm.tee{background:#fff;color:#000}.pm.tgt{background:#ffeb3b;color:#000;border-radius:3px;transform:rotate(45deg)}.pm.tgt span{display:inline-block;transform:rotate(-45deg)}
.pm.pin{background:#ff5252;color:#fff}
.seglbl{background:rgba(0,0,0,.75);color:#fff;border:0;border-radius:4px;padding:1px 5px;font-weight:700;font-size:12px;white-space:nowrap}
.ringlbl{color:#fff;font-size:10px;font-weight:700;text-shadow:0 0 3px #000;white-space:nowrap}
@media(max-width:800px){.pl-wrap{grid-template-columns:1fr;grid-template-rows:auto 60vh}.pl-side{border-right:0;max-height:none}body.planner{height:auto}}
/* punch list: sub-nav, tips, skeletons, contrast */
.subnav{display:flex;gap:4px;flex-wrap:wrap;margin:.2rem 0 .8rem;border-bottom:1px solid var(--line)}
.subnav a{padding:.55rem .85rem;min-height:44px;display:inline-flex;align-items:center;color:#c9d8ce;text-decoration:none;font-weight:600;border-bottom:3px solid transparent}
.subnav a:hover{color:#fff}.subnav a.on{color:#fff;border-bottom-color:var(--acc)}
.pl-side .subnav{margin:0 -1rem .6rem;padding:0 .4rem}.pl-side .subnav a{padding:.45rem .55rem;font-size:.92rem}
.tip{display:inline-flex;align-items:center;justify-content:center;width:1.25em;height:1.25em;border-radius:50%;border:1px solid currentColor;font-size:.8em;font-weight:800;cursor:help;position:relative;vertical-align:middle;margin-left:.2em;font-style:normal}
.tip:hover::after,.tip:focus::after{content:attr(data-tip);position:absolute;z-index:2000;left:50%;top:1.6em;transform:translateX(-50%);width:260px;background:#000;color:#fff;border:1px solid var(--acc);border-radius:8px;padding:.5rem .6rem;font:400 .82rem/1.4 system-ui,sans-serif;text-align:left;white-space:normal}
.sk{background:linear-gradient(90deg,#1a2b21 25%,#24392c 50%,#1a2b21 75%);background-size:200% 100%;animation:sk 1.2s infinite;border-radius:8px;color:transparent!important}
@keyframes sk{to{background-position:-200% 0}}.sk-line{height:1em;margin:.3rem 0}
@media (prefers-reduced-motion:reduce){.sk{animation:none}}
/* planner panel: bigger type, higher contrast */
.pl-side{font-size:1rem;color:#f2f7f3}.pl-side .mut{color:#c3d3c8}.pl-side h2{font-size:1.02rem;color:#fff;text-transform:uppercase;letter-spacing:.04em}
.pl-side .stat{background:#0a130e;border-color:#3b5645}.pl-side .stat b{font-size:1.35rem;color:#fff}.pl-side .stat span{color:#c3d3c8!important;font-size:.8rem}
.pl-side table.sc{font-size:.98rem}.pl-side table.sc th{color:#fff;background:#0a130e}.pl-side table.sc td{border-color:#3b5645}
.pl-side .small{font-size:.9rem}.pl-side button{font-size:.95rem;min-height:36px}.pl-chk{font-size:.95rem}
.pl-side .fmb3{display:flex;gap:6px;margin:.3rem 0}.pl-side .fmb3 div{flex:1;text-align:center;border:1px solid #3b5645;border-radius:8px;padding:.3rem 0;background:#0a130e}.pl-side .fmb3 b{display:block;font-size:1.3rem;color:#fff}.pl-side .fmb3 span{font-size:.75rem;color:#c3d3c8;text-transform:uppercase}
/* scorecard: bigger, higher contrast, sticky label column on phones */
table.sc{font-size:.95rem;color:#f2f7f3}table.sc th{color:#fff;background:#0a130e}table.sc th,table.sc td{border-color:#3b5645}
table.sc td.sum{background:#0a130e;color:#fff}table.sc tr.par td{color:#fff}
.sc-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
table.sc td.lbl,table.sc thead th:first-child{position:sticky;left:0;z-index:1;background:#0a130e}
.sc-toggle{display:none;gap:4px;margin:.2rem 0 .5rem}.sc-toggle button{min-height:44px;min-width:64px;font-weight:700}.sc-toggle button.on{background:var(--acc);color:#06210f}
@media(max-width:700px){.sc-toggle{display:flex}table.sc.show-out .c-in,table.sc.show-in .c-out{display:none}}
.ringlbl{font-size:12px}
.yscale{background:rgba(0,0,0,.7);color:#fff;font:700 12px system-ui;padding:2px 6px 4px;border-radius:4px}.yscale i{display:block;height:4px;background:#fff;margin-top:2px;border-radius:2px}
.thumb{width:120px;height:80px;border-radius:8px;object-fit:cover;flex:none;background:#0a130e}
.pl-side .tip:hover::after,.pl-side .tip:focus::after{left:auto;right:-8px;transform:none;width:230px}
.lead{font-size:1.12rem;color:#d6e3da}.btn-lg{font-size:1.08rem;padding:.8rem 1.3rem;min-height:44px}
h2.sec{font-size:1.15rem;display:flex;align-items:center;gap:.6rem}.feat.soon .card{opacity:.75;border-style:dashed}
.pl-side .subnav{margin:-.4rem 0 .6rem;padding:0;gap:0;flex-wrap:nowrap;overflow-x:auto}.pl-side .subnav a{padding:.4rem .5rem;font-size:.86rem;white-space:nowrap}
.pl-side #hinfo .stat{min-width:64px}
.subnav{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.subnav a{white-space:nowrap}@media(max-width:480px){.subnav a{padding-left:.55rem;padding-right:.55rem;font-size:.92rem}}
.pl-side{overflow-x:hidden}
.cv-legend{background:rgba(8,14,10,.88);color:#f2f7f3;border:1px solid #2c4434;border-radius:8px;padding:.35rem .55rem;font:600 .8rem/1.5 system-ui,sans-serif;display:flex;flex-wrap:wrap;gap:.1rem .8rem;max-width:min(560px,calc(100vw - 90px))}
.cv-legend span{display:inline-flex;align-items:center;gap:.35rem;white-space:nowrap}.cv-legend i{width:12px;height:12px;border-radius:3px;display:inline-block;border:1px solid rgba(255,255,255,.5)}
.pl-err,.cv-err{background:#3a1212;border:1px solid #ff6b6b;color:#fff;border-radius:8px;padding:.6rem .7rem;margin:.6rem 0;font-size:.92rem}
/* course sub-nav: prominent tab bar under the title */
main>.subnav{position:sticky;top:0;z-index:1001;background:var(--panel,#111c15);border:1px solid var(--line);border-radius:10px;padding:0 .3rem;margin:.6rem 0 1rem}
main>.subnav a{font-size:1rem}
.pl-wrap{grid-template-columns:360px 1fr}
@media(max-width:800px){.pl-wrap{grid-template-columns:1fr}}
.pl-side .subnav{flex-wrap:wrap}.pl-side .subnav a{padding:.4rem .55rem;font-size:.9rem}
select.sk{opacity:.85}
.pl-side .subnav{gap:0}.pl-side .subnav a{padding:.4rem .42rem;font-size:.88rem}

/* phase 6: five course tabs must fit one line in the 360px planner sidebar */
.pl-side .subnav{flex-wrap:nowrap;gap:0}.pl-side .subnav a{padding:.4rem .36rem;font-size:.85rem;flex:0 0 auto}
/* v7: card vs plan, hazard notes */
.pl-side .cmp{display:flex;gap:6px;align-items:stretch}.pl-side .cmp>div{flex:1;text-align:center;border:1px solid #3b5645;border-radius:8px;padding:.3rem .2rem;background:#0a130e}
.pl-side .cmp b{display:block;font-size:1.45rem;color:#fff;line-height:1.1}.pl-side .cmp span{display:block;font-size:.78rem;font-weight:700;color:#e6f0e9;text-transform:uppercase;letter-spacing:.04em}
.pl-side .cmp em{display:block;font-style:normal;font-size:.7rem;color:#a9bdb0}.pl-side .cmp .cmp-d{flex:.7;display:flex;flex-direction:column;justify-content:center;font-weight:800;font-size:1.05rem;color:#ffcc80;background:transparent;border-style:dashed}
.pl-side .cmp .cmp-d.ok{color:#9be7a6}.pl-side .cmp .cmp-d span{text-transform:none;font-weight:500;color:#c3d3c8;font-size:.7rem;letter-spacing:0}
.pl-side .cmp-p{border-color:#7cfc9a!important}
#hz tr.hznote td{border-top:0;padding-top:0;line-height:1.3}

/* v7: course name in header */
header.top .hcourse{margin-right:auto;margin-left:.6rem;padding:.15rem .55rem;border-left:1px solid #ffffff33;color:#cfe;font-weight:600;font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:42vw;text-decoration:none}
header.top .hcourse:hover{color:#fff}

.toollist{list-style:none;padding:0;margin:.4rem 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:.35rem 1.2rem}.toollist li{color:var(--mut,#9fb3a6)}.toollist b{color:inherit;color:#e8f0ea}
.btn-alt{background:transparent;border:1px solid var(--acc,#5fd38b);color:inherit}.earthcta{margin:1.2rem 0;border-color:#3f6b4c;background:linear-gradient(135deg,#16261c,#1d3326)}
/* provisional map-line + coarse-terrain chips */
.prov{display:block;width:100%;box-sizing:border-box;background:#3a2c08;color:#ffe9b3;border:1px solid #f2c14e;border-radius:8px;padding:.45rem .6rem;margin:.3rem 0;font-size:.85rem;line-height:1.35}
.prov b{color:#ffd166}.prov-dot{display:inline-block;margin-left:2px;color:#f2c14e;font-weight:800}
.coarse-chip{display:block;background:#1d2a3a;color:#cfe3ff;border:1px solid #5aa9e6;border-radius:8px;padding:.45rem .6rem;margin:.4rem 0;font-size:.85rem}
@media print{.prov{background:#fff4d6;color:#000;border-color:#c89100}.prov b{color:#000}}
