:root{--ground:#f4f6f7;--card:#fff;--ink:#1a2026;--sub:#66707a;--faint:#9aa3ac;--line:#e7eaed;--grid:#eef1f3;--hover:#f0f3f5;--accent:#0c7489;--on-accent:#fff;--accent-soft:#e3f0f2;--ramp0:#d3dbe0;--success:#2e9e5b;--success-soft:#e4f3ea;--warning:#b87412;--warning-soft:#fbf1dd;--danger:#c23e33;--danger-soft:#fbe7e5;--tip-bg:#1a2026;--tip-ink:#f4f6f7;--num:"Barlow Condensed", "DIN Alternate", "Roboto Condensed", "Arial Narrow", sans-serif;--text:"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", system-ui, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--ground:#0f1418;--card:#161c21;--ink:#e6eaed;--sub:#98a2ac;--faint:#6a737c;--line:#2a3138;--grid:#1f262c;--hover:#1c2328;--accent:#4fb3c6;--on-accent:#00252d;--accent-soft:#12333b;--ramp0:#45505a;--success:#6fce96;--success-soft:#12331f;--warning:#e8b25e;--warning-soft:#3a2d12;--danger:#e8837a;--danger-soft:#3a1714;--tip-bg:#e6eaed;--tip-ink:#0f1418;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--ground:#0f1418;--card:#161c21;--ink:#e6eaed;--sub:#98a2ac;--faint:#6a737c;--line:#2a3138;--grid:#1f262c;--hover:#1c2328;--accent:#4fb3c6;--on-accent:#00252d;--accent-soft:#12333b;--ramp0:#45505a;--success:#6fce96;--success-soft:#12331f;--warning:#e8b25e;--warning-soft:#3a2d12;--danger:#e8837a;--danger-soft:#3a1714;--tip-bg:#e6eaed;--tip-ink:#0f1418;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}[hidden]{display:none!important}html,body{height:100%}body{background:var(--ground);color:var(--ink);font:14px/1.5 var(--text);margin:0}button,input,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.num{font-family:var(--num);font-variant-numeric:tabular-nums;font-weight:600}.svgnum{font-family:var(--num);font-weight:600}.eyebrow{letter-spacing:1px;color:var(--faint);font-size:12px;font-weight:600}.dash{color:var(--faint)}.pill{background:var(--accent-soft);color:var(--accent);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:1px 8px;font-size:12px;font-weight:600;display:inline-flex}.pill.neutral{background:var(--ground);color:var(--sub);box-shadow:inset 0 0 0 1px var(--line)}.pill.ok{background:var(--success-soft);color:var(--success)}.pill.warn{background:var(--warning-soft);color:var(--warning)}.pill.bad{background:var(--danger-soft);color:var(--danger)}.seg{background:var(--ground);border:1px solid var(--line);border-radius:9px;flex-wrap:wrap;gap:2px;padding:2px;display:inline-flex}.seg button{cursor:pointer;color:var(--sub);white-space:nowrap;background:0 0;border:0;border-radius:7px;padding:3px 9px;font-size:13px}.seg button:hover{color:var(--ink)}.seg button[aria-pressed=true]{background:var(--card);color:var(--accent);box-shadow:0 0 0 1px var(--line);font-weight:600}.iconbtn{border:1px solid var(--line);background:var(--card);cursor:pointer;width:30px;height:30px;color:var(--sub);border-radius:8px;flex:none;place-items:center;display:grid}.iconbtn:hover{color:var(--ink);background:var(--hover)}input[type=search],input[type=date],select{background:var(--card);border:1px solid var(--line);border-radius:8px;min-width:0;padding:4px 8px}.app{grid-template-rows:auto 1fr;height:100%;display:grid}.topbar{background:var(--card);border-bottom:1px solid var(--line);align-items:center;gap:14px;min-width:0;padding:8px 16px;display:flex}.brand{flex:none;align-items:center;gap:8px;display:flex}.brand b{font-size:16px;font-weight:700}.brand svg{width:22px;height:22px}.crumb{min-width:0;color:var(--sub);white-space:nowrap;align-items:center;gap:6px;font-size:13px;display:flex;overflow:hidden}.crumb b{color:var(--ink);text-overflow:ellipsis;font-weight:600;overflow:hidden}.crumb .sep{color:var(--faint)}.topbar .spacer{flex:1}.account{color:var(--sub);flex:none;align-items:center;gap:8px;font-size:13px;display:flex}.avatar{background:var(--accent);width:26px;height:26px;color:var(--on-accent);border-radius:50%;place-items:center;font-size:12px;font-weight:700;display:grid}.body{grid-template-columns:minmax(0,16fr) minmax(0,84fr);min-height:0;display:grid}.app.collapsed .body{grid-template-columns:0 minmax(0,1fr)}.app.collapsed .side{visibility:hidden}.side{background:var(--card);border-right:1px solid var(--line);grid-template-rows:auto 1fr auto;min-height:0;display:grid;overflow:hidden}.side-head{gap:8px;padding:12px 12px 8px;display:grid}.side-head input{width:100%;padding:6px 10px}.side-list{min-height:0;padding:0 8px 12px;overflow-y:auto}.group{margin-top:6px}.group>summary{cursor:pointer;justify-content:space-between;align-items:center;padding:6px;list-style:none;display:flex}.group>summary::-webkit-details-marker{display:none}.group>summary:after{content:"▾";color:var(--faint);font-size:11px}.group:not([open])>summary:after{content:"▸"}.proj{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;grid-template-columns:1fr auto;gap:2px 8px;width:100%;padding:7px 8px;display:grid}.proj:hover{background:var(--hover)}.proj .n{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.proj .c{color:var(--faint);font-size:12px}.proj .d{color:var(--sub);grid-column:1/-1;align-items:center;gap:6px;font-size:12px;display:flex}.proj[aria-current=true]{background:var(--accent-soft)}.proj[aria-current=true] .n{color:var(--accent);font-weight:600}.holes-mini{border-left:1px solid var(--line);gap:1px;margin:2px 0 6px 10px;padding:0 0 0 8px;list-style:none;display:grid}.holes-mini button{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:7px;justify-content:space-between;align-items:center;gap:8px;width:100%;padding:4px 8px;display:flex}.holes-mini button:hover{background:var(--hover)}.holes-mini button[aria-current=true]{background:var(--accent-soft);color:var(--accent);font-weight:600}.holes-mini .num{font-size:15px}.dot{background:var(--line);border-radius:50%;flex:none;width:7px;height:7px}.dot.warn{background:var(--warning)}.dot.ok{background:var(--success)}.side-foot{border-top:1px solid var(--line);color:var(--faint);padding:8px 14px;font-size:12px}.hit{background:color-mix(in srgb, var(--warning) 25%, transparent);color:inherit;border-radius:3px}.main{grid-template-rows:auto minmax(0,1fr);gap:12px;min-width:0;min-height:0;padding:12px 14px;display:grid;overflow:hidden}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;min-width:0}.card-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 14px;padding:12px 16px 8px;display:flex}.card-head h2{text-wrap:balance;margin:0;font-size:17px;font-weight:700}.card-head .meta{color:var(--sub);flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;display:flex}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%}th{text-align:left;color:var(--faint);border-bottom:1px solid var(--line);white-space:nowrap;background:var(--card);z-index:1;padding:6px 12px;font-size:12px;font-weight:600;position:sticky;top:0}td{border-bottom:1px solid var(--line);white-space:nowrap;padding:7px 12px}td.r,th.r{text-align:right}.holebar{flex-wrap:wrap;align-items:center;gap:1.2vh 2.4%;padding:1.2vh 1.2%;display:flex}.hb-title{flex-direction:column;min-width:0;margin-right:1%;display:flex}.hb-title .hole-name{font-family:var(--num);font-size:26px;font-weight:700;line-height:1.05}.hb-title .sub{color:var(--sub);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.kv{gap:1px;min-width:0;display:grid}.kv .k{color:var(--faint);white-space:nowrap;font-size:12px}.kv .v{white-space:nowrap}.kv .v .num{font-size:20px}.kv .unit{color:var(--faint);margin-left:2px;font-size:12px}.kv .at{color:var(--sub);margin-left:4px;font-size:12px}.hb-sep{background:var(--line);align-self:stretch;width:1px}.hb-actions{flex-wrap:wrap;gap:8px;margin-left:auto;display:flex}.hole-name{font-family:var(--num);font-size:16px;font-weight:700}.chips{flex-wrap:wrap;gap:4px;display:flex}.work{grid-template:"periods chart detail"minmax(0,1fr)/minmax(0,22fr) minmax(0,50fr) minmax(0,28fr);gap:12px;min-height:0;display:grid}.periods{grid-area:periods;grid-template-rows:auto auto minmax(0,1fr) auto;min-height:0;display:grid}.chart-card{grid-area:chart;grid-template-rows:auto auto auto minmax(0,1fr) auto;min-height:0;display:grid}.detail{grid-area:detail;grid-template-rows:auto minmax(0,1fr);min-height:0;display:grid}#detailBody{grid-template-rows:auto minmax(0,1fr);min-height:0;display:grid}@media (width<=1279px){.main{grid-template-rows:auto auto;overflow-y:auto}.work{grid-template:"periods chart"72vh"detail detail"62vh/minmax(0,32fr) minmax(0,68fr)}}@media (width<=860px){.work{grid-template:"chart"60vh"periods"55vh"detail"62vh/minmax(0,1fr)}}.pfilter{gap:8px;padding:0 14px 8px;display:grid}.pfilter .row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.pfilter input[type=date]{width:100%;min-width:0;padding:3px 6px;font-size:13px}.pfilter .row.dates{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);display:grid}.pfilter .lbl{color:var(--faint);min-width:30px;font-size:12px}.plist{border-top:1px solid var(--line);margin:0;padding:0 6px 6px;list-style:none;overflow-y:auto}.month{background:var(--card);letter-spacing:1px;color:var(--faint);z-index:1;justify-content:space-between;padding:6px 8px 3px;font-size:12px;font-weight:600;display:flex;position:sticky;top:0}.prow{border-radius:8px;grid-template-columns:22px 1fr auto;align-items:center;gap:6px;display:grid}.prow:hover{background:var(--hover)}.prow[aria-current=true]{background:var(--accent-soft)}.prow input{appearance:none;border:1.5px solid var(--faint);cursor:pointer;border-radius:4px;place-items:center;width:15px;height:15px;margin:0 0 0 6px;display:grid}.prow input:checked{border-color:var(--c,var(--accent));background:var(--c,var(--accent))}.prow input:checked:after{content:"";border-left:2px solid var(--card);border-bottom:2px solid var(--card);width:7px;height:4px;transform:rotate(-45deg)translate(1px,-1px)}.prow input:disabled{opacity:.35;cursor:not-allowed}.prow .open{text-align:left;cursor:pointer;background:0 0;border:0;align-items:baseline;gap:8px;min-width:0;padding:5px 0;display:flex}.prow .ord{min-width:46px;font-weight:600}.prow .date{color:var(--sub);font-size:15px}.prow .tags{gap:3px;display:flex}.prow .tags .pill{padding:0 5px;font-size:11px}.prow .val{text-align:right;padding-right:8px;font-size:15px}.pfoot{border-top:1px solid var(--line);color:var(--sub);flex-wrap:wrap;justify-content:space-between;gap:8px;padding:8px 14px;font-size:12px;display:flex}.tabs{border-bottom:1px solid var(--line);scrollbar-width:none;gap:2px;padding:0 10px;display:flex;overflow:auto hidden}.tabs button{cursor:pointer;color:var(--sub);white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 12px 8px;font-size:15px}.tabs button[aria-selected=true]{color:var(--ink);border-bottom-color:var(--accent);font-weight:700}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;padding:8px 14px 4px;display:flex}.toolbar .grp{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.legend{color:var(--sub);flex-wrap:wrap;align-items:center;gap:4px 14px;min-height:22px;padding:2px 14px 0;font-size:12px;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.legend i{border-radius:2px;width:16px;height:3px;display:inline-block}.legend i.dashed{background:repeating-linear-gradient(90deg, var(--faint) 0 4px, transparent 4px 7px)}.legend .ramp{border-radius:3px;width:8vw;height:6px}.chart-wrap{min-height:0;position:relative;overflow:hidden}#chart{position:absolute;inset:2px 6px 0}#chart .empty{height:100%;min-height:0}.chart-wrap svg{touch-action:none;width:100%;height:auto;display:block}.chart-foot{color:var(--faint);flex-wrap:wrap;justify-content:space-between;gap:10px;padding:4px 14px 10px;font-size:12px;display:flex}.empty{min-height:30vh;color:var(--faint);text-align:center;place-items:center;padding:20px;display:grid}.tip{pointer-events:none;background:var(--tip-bg);color:var(--tip-ink);z-index:3;border-radius:9px;min-width:170px;padding:7px 10px;font-size:12px;position:absolute;box-shadow:0 6px 20px #0000002e}.tip .h{margin-bottom:3px;font-weight:700}.tip .row{grid-template-columns:10px 1fr auto;align-items:center;gap:8px;display:grid}.tip .row i{border-radius:2px;width:10px;height:3px}.tip .row .num{font-size:14px}.tip .more{opacity:.7;margin-top:2px}.stats{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.stat{border-right:1px solid var(--line);gap:1px;padding:9px 14px;display:grid}.stat .k{letter-spacing:.5px;color:var(--faint);font-size:12px;font-weight:600}.stat .vline{flex-wrap:wrap;align-items:baseline;gap:6px;display:flex}.stat .vline .num{font-size:22px;line-height:1.15}.stat .note{color:var(--sub);font-size:12px}.detail .table-scroll{min-height:0}.detail td{padding:5px 10px}.detail th{padding:6px 10px}.detail td.num{font-size:15px}.detail tr.fail td{background:var(--warning-soft)}.flag-fail{color:var(--danger);font-weight:600}.flag-out{color:var(--warning);font-weight:600}.flag-ok{color:var(--success)}.viewnav{gap:2px;margin-left:1%;display:flex}.viewnav button{cursor:pointer;color:var(--sub);white-space:nowrap;background:0 0;border:0;border-radius:8px;padding:5px 12px;font-size:14px}.viewnav button:hover{color:var(--ink);background:var(--hover)}.viewnav button[aria-current=true]{background:var(--accent-soft);color:var(--accent);font-weight:600}.manage{grid-template-columns:minmax(0,38fr) minmax(0,62fr);gap:12px;min-height:0;padding:12px 14px;display:grid;overflow:hidden}.manage>.card{grid-template-rows:auto auto minmax(0,1fr) auto;min-height:0;display:grid}@media (width<=1279px){.manage{grid-template-columns:minmax(0,1fr);overflow-y:auto}.manage>.card{min-height:50vh}}.manage td,.manage th{padding:8px 12px}.manage .table-scroll{min-height:0}.manage tbody tr.pick{cursor:pointer}.manage tbody tr.pick:hover td{background:var(--hover)}.manage tbody tr[aria-selected=true] td{background:var(--accent-soft)}.manage tbody tr[aria-selected=true] td:first-child{box-shadow:inset 3px 0 0 var(--accent)}.mbar{flex-wrap:wrap;align-items:center;gap:8px;padding:0 16px 10px;display:flex}.mbar input[type=search],.mbar input[type=text]{flex:40%;min-width:0;padding:5px 10px}.mnote{border-top:1px solid var(--line);color:var(--faint);padding:8px 16px;font-size:12px;line-height:1.6}.btn{border:1px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer;white-space:nowrap;border-radius:8px;padding:4px 12px;font-size:13px}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.btn.primary:hover{filter:brightness(1.08);color:var(--on-accent)}.btn.danger{color:var(--danger)}.btn.danger:hover{border-color:var(--danger);color:var(--danger);background:var(--danger-soft)}.btn:disabled{opacity:.45;cursor:not-allowed;filter:none}.code{font-family:var(--num);letter-spacing:.14em;color:var(--ink);font-size:34px;font-weight:700;line-height:1.1}.infogrid{border-top:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.infogrid>div{border-bottom:1px solid var(--line);gap:2px;padding:12px 16px;display:grid}.infogrid>div:nth-child(odd){border-right:1px solid var(--line)}.infogrid .k{color:var(--faint);letter-spacing:.5px;font-size:12px;font-weight:600}.infogrid .v .num{font-size:24px}.perm{flex-wrap:wrap;gap:10px;display:flex}.perm label{white-space:nowrap;cursor:pointer;align-items:center;gap:5px;font-size:13px;display:inline-flex}.perm label.off{color:var(--faint);cursor:not-allowed}.ck{appearance:none;border:1.5px solid var(--faint);cursor:pointer;border-radius:4px;place-items:center;width:15px;height:15px;margin:0;display:grid}.ck:checked{border-color:var(--accent);background:var(--accent)}.ck:checked:after{content:"";border-left:2px solid var(--card);border-bottom:2px solid var(--card);width:7px;height:4px;transform:rotate(-45deg)translate(1px,-1px)}.ck:disabled{opacity:.5;cursor:not-allowed}.scrim{z-index:30;background:#0f141861;place-items:center;padding:4vh 4vw;display:grid;position:fixed;inset:0}.dialog{background:var(--card);border:1px solid var(--line);border-radius:14px;gap:14px;width:min(92vw,34vw + 220px);max-height:90vh;padding:2.2vh 1.6vw;display:grid;overflow:auto;box-shadow:0 20px 60px #00000040}.dialog h3{margin:0;font-size:18px}.field{gap:5px;display:grid}.field>span{font-size:13px;font-weight:600}.field input{border:1px solid var(--line);background:var(--card);border-radius:8px;padding:7px 10px}.field .help{color:var(--faint);font-size:12px}.field .err{color:var(--danger);font-size:12px}.cands{border:1px solid var(--line);border-radius:8px;gap:2px;max-height:26vh;padding:4px;display:grid;overflow:auto}.cands button{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:space-between;gap:8px;padding:6px 8px;display:flex}.cands button:hover:not(:disabled){background:var(--hover)}.cands button:disabled{color:var(--faint);cursor:not-allowed}.dialog .actions{justify-content:flex-end;gap:8px;display:flex}.dl{border:1px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer;white-space:nowrap;border-radius:8px;align-items:center;gap:6px;padding:3px 10px;font-size:13px;display:inline-flex}.dl:hover{border-color:var(--accent);color:var(--accent)}.dl svg{width:14px;height:14px}.toast{left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));background:var(--tip-bg);color:var(--tip-ink);z-index:20;border-radius:10px;max-width:min(560px,92vw);padding:9px 16px;font-size:13px;position:fixed;transform:translate(-50%);box-shadow:0 8px 24px #0003}.scope{border:1px solid var(--line);background:var(--ground);border-radius:10px;gap:6px;padding:10px;display:grid}.scope .who{color:var(--sub);justify-content:space-between;align-items:center;gap:8px;font-size:12px;display:flex}.scope select{width:100%}.scope .hint{color:var(--faint);font-size:12px;line-height:1.5}.owner{color:var(--sub);background:var(--ground);box-shadow:inset 0 0 0 1px var(--line);white-space:nowrap;border-radius:999px;padding:0 6px;font-size:11px}@media (width<=760px){.body{grid-template-columns:minmax(0,1fr)}.side{z-index:5;width:82vw;position:fixed;inset:49px auto 0 0;box-shadow:4px 0 20px #00000026}.app.collapsed .body{grid-template-columns:minmax(0,1fr)}.crumb{display:none}}#app{height:100%}.chart-host{position:absolute;inset:2px 6px 0}.chart-canvas{position:absolute;inset:0}.crossline{border-top:1px dashed var(--sub);pointer-events:none;height:0;position:absolute;left:48px;right:24px}.chart-wrap .empty{min-height:0;position:absolute;inset:0}.loading-veil{color:var(--faint);background:var(--card);box-shadow:0 0 0 1px var(--line);border-radius:6px;padding:2px 8px;font-size:12px;position:absolute;top:8px;right:12px}.nav-search{width:100%;margin:2px 0 4px;padding:6px 10px}.side-error{color:var(--danger);justify-items:start;gap:8px;padding:8px;font-size:13px;display:grid}.prow{box-shadow:inset 3px 0 0 var(--bar,transparent)}
