:root{--sky:#6cb4e4;--sky-l:#e6f3fb;--sky-m:#bfe0f5;--navy:#0d2240;--navy-2:#1c3a63;--ok:#1e8e4e;--warn:#c77700;--bad:#c62828;--bg:#f5f9fc;--card:#fff;--muted:#5b6b80;--r:10px}
*{box-sizing:border-box}
body{margin:0;font:15px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--navy);background:var(--bg)}
a{color:var(--navy-2)}
header.top{background:linear-gradient(90deg,var(--navy) 0%,var(--navy-2) 60%,var(--sky) 140%);color:#fff;border-bottom:4px solid var(--sky)}
header.top .inner{max-width:1200px;margin:0 auto;display:flex;align-items:center;gap:14px;padding:10px 18px;flex-wrap:wrap}
header.top img{width:52px;height:52px;border-radius:50%;background:#fff;padding:2px}
header.top .title{font-weight:700;font-size:18px;line-height:1.15}
header.top .title small{display:block;font-weight:400;font-size:13px;color:var(--sky-m)}
header.top .who{margin-left:auto;font-size:13px;color:var(--sky-m)}
header.top .who a{color:#fff}
nav.main{background:var(--navy);}
nav.main .inner{max-width:1200px;margin:0 auto;display:flex;gap:2px;padding:0 12px;flex-wrap:wrap}
nav.main a{color:#dbeefa;text-decoration:none;padding:9px 13px;font-size:14px;border-bottom:3px solid transparent}
nav.main a.on,nav.main a:hover{color:#fff;border-bottom-color:var(--sky)}
main{max-width:1200px;margin:0 auto;padding:18px}
h1{font-size:24px;margin:4px 0 14px}
h2{font-size:18px;margin:22px 0 10px;color:var(--navy-2)}
.card{background:var(--card);border-radius:var(--r);box-shadow:0 1px 3px rgba(13,34,64,.12);padding:16px;margin-bottom:16px}
.grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.stat{background:#fff;border-radius:var(--r);padding:14px 16px;box-shadow:0 1px 3px rgba(13,34,64,.12);border-top:4px solid var(--sky)}
.stat .big{font-size:26px;font-weight:700}
.stat .sub{color:var(--muted);font-size:13px}
.bar{height:10px;background:var(--sky-l);border-radius:6px;overflow:hidden;margin:8px 0 2px}
.bar>span{display:block;height:100%;background:linear-gradient(90deg,var(--sky),var(--navy-2))}
table{width:100%;border-collapse:collapse;background:#fff}
th,td{padding:7px 9px;border-bottom:1px solid #e3ebf2;text-align:left;vertical-align:top}
th{background:var(--sky-l);font-size:13px;text-transform:uppercase;letter-spacing:.03em;color:var(--navy-2)}
tr.wave td{background:var(--navy);color:#fff;font-weight:700}
tr.free td{color:var(--muted)}
.tbl{overflow-x:auto;border-radius:var(--r);box-shadow:0 1px 3px rgba(13,34,64,.12)}
.pill{display:inline-block;padding:1px 9px;border-radius:20px;font-size:12px;font-weight:600;white-space:nowrap}
.pill.paid{background:#dff3e6;color:var(--ok)}.pill.part{background:#fff1d6;color:var(--warn)}.pill.unpaid{background:#fde3e3;color:var(--bad)}
.pill.business{background:var(--navy);color:#fff}.pill.standard{background:var(--sky-m);color:var(--navy)}
.pill.ex{background:#fff3b0;color:#7a5d00;border:1px dashed #c9a400}
.pill.web{background:var(--sky-l)}.pill.bot{background:#e9defc;color:#4b2a91}.pill.api{background:#e9defc;color:#4b2a91}.pill.system{background:#eee}
form.inline{display:inline}
label{display:block;font-size:13px;font-weight:600;margin:8px 0 3px}
input,select,textarea{font:inherit;padding:7px 9px;border:1px solid #b8c9d8;border-radius:7px;width:100%;background:#fff;color:var(--navy)}
textarea{min-height:70px}
.row{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
button,.btn{display:inline-block;font:inherit;font-weight:600;background:var(--navy);color:#fff;border:0;border-radius:7px;padding:8px 14px;cursor:pointer;text-decoration:none}
button.sec,.btn.sec{background:var(--sky-l);color:var(--navy);border:1px solid var(--sky-m)}
button.danger{background:var(--bad)}
button.small,.btn.small{padding:4px 9px;font-size:13px}
.flash{padding:10px 14px;border-radius:8px;margin-bottom:14px}
.flash.err{background:#fde3e3;color:var(--bad);border:1px solid #f3b4b4}
.flash.ok{background:#dff3e6;color:var(--ok);border:1px solid #b6e2c6}
.flash.warn{background:#fff1d6;color:#7a4b00;border:1px solid #f0cf8d}
.muted{color:var(--muted)}.small{font-size:13px}.right{text-align:right}.nowrap{white-space:nowrap}
.players{margin:0;padding-left:18px;font-size:13px}
code,pre{background:#eef4f9;border-radius:5px;padding:1px 5px;font-size:13px}
pre{padding:10px;overflow-x:auto;white-space:pre-wrap}
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 30% 20%,var(--sky) 0%,var(--navy-2) 55%,var(--navy) 100%)}
.login{background:#fff;border-radius:16px;padding:28px 30px;width:min(380px,92vw);text-align:center;box-shadow:0 10px 40px rgba(0,0,0,.3)}
.login img{width:120px;height:120px;border-radius:50%;border:4px solid var(--sky)}
.login h1{font-size:20px;margin:12px 0 2px}.login form{text-align:left}
.holes{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.hole{background:#fff;border:1px solid var(--sky-m);border-radius:8px;padding:8px;font-size:13px}
.hole b{font-size:15px}.hole.reserved{background:var(--navy);color:#fff}
.hole .act{color:var(--navy-2);font-style:italic}.hole.reserved .act{color:var(--sky-m)}
.botbox{display:flex;gap:8px}.botbox input{flex:1}
@media print{header.top,nav.main,.noprint{display:none!important}body{background:#fff}main{padding:0;max-width:none}.tbl,.card{box-shadow:none}th{background:#ddd!important;-webkit-print-color-adjust:exact}tr.wave td{background:#333!important;color:#fff!important;-webkit-print-color-adjust:exact}.printhead{display:flex!important}}
.printhead{display:none;align-items:center;gap:12px;margin-bottom:8px}.printhead img{width:60px}
.avail-head .big{font-size:24px;font-weight:700;color:var(--navy)}
.slots{display:flex;flex-wrap:wrap;gap:8px}
.slot{display:inline-flex;flex-direction:column;align-items:center;min-width:86px;padding:9px 10px;border-radius:9px;background:var(--sky-l);border:1px solid var(--sky-m);font-weight:700;font-size:16px;color:var(--navy);text-decoration:none}
a.slot:hover{background:var(--sky);color:#fff}
.slot span{font-size:11px;font-weight:600;color:var(--navy-2);text-transform:uppercase;letter-spacing:.05em}
a.slot:hover span{color:#fff}
.email-preview .hdr{width:auto;margin-bottom:10px}.email-preview .hdr th{background:none;text-transform:none;letter-spacing:0;font-size:14px;color:var(--muted);padding:3px 12px 3px 0}
.email-preview .hdr td{border:0;padding:3px 0}
pre.mailbody{background:#fbfdff;border:1px solid var(--sky-m);border-left:4px solid var(--sky);font:14px/1.55 system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;padding:16px 18px;color:var(--navy)}
/* booking requests */
header.top .inner { position: relative; }
.btn.adminlogin { margin-left: auto; background: #fff; color: var(--navy, #0b2a4a); border: 1px solid rgba(255,255,255,.6); padding: 6px 14px; border-radius: 8px; font-weight: 600; text-decoration: none; white-space: nowrap; }
.badge { display: inline-block; min-width: 1.4em; padding: 0 6px; border-radius: 999px; background: #e0463a; color: #fff; font-size: .8em; font-weight: 700; text-align: center; line-height: 1.5; }
.slot.req span { font-size: .72em; }
.reqform .grid2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 10px 18px; }
.reqform input, .reqform select, .reqform textarea { width: 100%; box-sizing: border-box; }
.reqform table.plain td { padding: 3px 6px 3px 0; } .reqform table.plain td:first-child { white-space: nowrap; color: #567; }
.reqform label.check { display: flex; gap: 8px; align-items: flex-start; margin: 14px 0 6px; font-weight: 500; } .reqform label.check input { width: auto; margin-top: 3px; }
.hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.thanks { max-width: 640px; margin: 20px auto; text-align: center; }
.req-pending { border-left: 5px solid #f0a020; } .req-accepted { border-left: 5px solid #2e9d58; opacity: .85; } .req-declined { border-left: 5px solid #aaa; opacity: .7; }
.card .row { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.card form.inline input { width: auto; min-width: 240px; } button[disabled] { opacity: .45; cursor: not-allowed; }
tr.blocked td { background: #f1f1f1; color: #888; } .pill.blocked { background: #999; color: #fff; }
/* sign artwork */
.signart { min-width: 300px; } .signart-row { display: flex; gap: 10px; align-items: flex-start; }
.logo-thumb { width: 64px; height: 64px; object-fit: contain; background: #fff repeating-conic-gradient(#eee 0 25%, #fff 0 50%) 0 0/12px 12px; border: 1px solid #d5dde6; border-radius: 6px; }
.file-icon { display: inline-flex; width: 64px; height: 64px; border: 1px solid #b9c7d6; border-radius: 6px; background: #eef5fb; align-items: center; justify-content: center; text-decoration: none; font-weight: 800; color: #0b2a4a; position: relative; }
.file-icon::before { content: ''; position: absolute; top: 0; right: 0; border-width: 0 14px 14px 0; border-style: solid; border-color: #fff #fff #b9c7d6 #b9c7d6; }
.file-icon.none { color: #aab; background: #f6f6f6; font-weight: 500; font-size: .8em; }
.signart form.upl { display: flex; gap: 4px; margin-top: 4px; } .signart form.upl input[type=file] { font-size: .8em; max-width: 210px; }
.signform { display: flex; gap: 4px; flex-wrap: wrap; margin-top: 6px; } .signform input { font-size: .85em; flex: 1; min-width: 120px; } .signform select { width: auto; font-size: .85em; }
.pill.logo-missing { background: #fde2e0; color: #a33; } .pill.logo-received { background: #fff1d6; color: #8a5a00; } .pill.logo-approved { background: #dcf3e4; color: #1d6b3a; }
/* tee-sign box on public form */
.signbox { border: 2px solid #87ceeb; background: #f0f8fe; border-radius: 10px; padding: 12px 14px 6px; margin: 14px 0; }
.signbox legend { font-weight: 800; color: #0b2a4a; padding: 0 6px; font-size: 1.05em; }
.signbox .bizonly { display: inline-block; margin-left: 6px; font-size: .75em; font-weight: 700; background: #0b2a4a; color: #fff; border-radius: 999px; padding: 1px 8px; vertical-align: middle; }
.js .signbox .bizonly { background: #2e9d58; }
.signbox[hidden] { display: none; }
.signbox input.bigfile { padding: 10px; border: 2px dashed #5aa9d6; background: #fff; border-radius: 8px; font-size: 1em; }
@media (max-width: 600px) { .signbox { padding: 10px; } .reqform .grid2 { grid-template-columns: 1fr; } }
.full-badge { color: #a33; font-weight: 700; }
/* scoring + leaderboard */
.lb table { width: 100%; } .lb td, .lb th { padding: 8px 6px; } .lb .c, .lb .pts { text-align: center; } .lb .pts { font-weight: 800; font-size: 1.1em; color: #0b2a4a; }
.lb .pos { font-weight: 700; width: 2.5em; } .lb tr.top3 td { background: #eef7fd; } .lb .cb { font-size: .65em; background: #fff1d6; color: #8a5a00; border-radius: 6px; padding: 0 4px; vertical-align: middle; }
.lbcall { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.scoregrid { border-collapse: collapse; } .scoregrid th, .scoregrid td { padding: 3px 4px; text-align: center; border-bottom: 1px solid #e3e9ef; }
.scoregrid th small, .scoregrid td small { display: block; font-size: .68em; font-weight: 400; color: #567; }
.scoregrid th.hn { text-align: left; white-space: nowrap; } .scoregrid th.pl { font-size: .85em; max-width: 90px; }
.scoregrid input.sc { width: 3em; height: 2.4em; text-align: center; font-size: 1.1em; padding: 2px; }
.scoregrid tr.tot td, .scoregrid tr.tot th { background: #f3f7fa; font-size: .9em; }
.stickybar { position: sticky; bottom: 0; background: #fff; padding: 10px 0; border-top: 1px solid #dde5ec; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
@media (max-width: 600px) { .scoregrid input.sc { width: 2.6em; } .lb td, .lb th { padding: 6px 3px; font-size: .92em; } }
.tabs { display: flex; gap: 4px; border-bottom: 2px solid #d5dde6; margin: 6px 0 14px; } .tabs a { padding: 8px 14px; text-decoration: none; border-radius: 8px 8px 0 0; color: #0b2a4a; background: #eef3f7; } .tabs a.on { background: #0b2a4a; color: #fff; font-weight: 700; }
.compgrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px; } .card.comp h3 { margin: 0 0 6px; font-size: 1.05em; }
.compres { margin: 0; padding-left: 1.4em; } .compres li { margin: 4px 0; }
/* public score submission */
input.sc.prefill { background: #fff6c8; border: 2px solid #e0a800; }
.pubgrid th.hn small { max-width: 110px; white-space: normal; } .pubgrid td.pt { font-weight: 700; color: #0b2a4a; min-width: 1.6em; }
dialog#dlg { border: 0; border-radius: 12px; padding: 18px; max-width: 340px; box-shadow: 0 10px 40px rgba(0,0,0,.35); } dialog#dlg::backdrop { background: rgba(0,20,40,.55); }
/* didn't score (NR) chip */
.scin { white-space: nowrap; } .chip.nr { margin-left: 6px; padding: 7px 9px; border-radius: 999px; border: 1.5px solid #b9c7d6; background: #fff; color: #345; font-size: .78em; font-weight: 700; cursor: pointer; vertical-align: middle; }
.chip.nr.on { background: #7a2e2e; border-color: #7a2e2e; color: #fff; } .chip.nr.mini { display: block; margin: 3px auto 0; padding: 2px 8px; font-size: .68em; }
input.sc.nrv { background: #f6e9e9; color: #7a2e2e; font-weight: 700; font-size: .95em; } sup.ndb { color: #8a5a00; font-weight: 700; margin-left: 1px; }
