/* ============================================================
   Divot Docket — bright golf palette, mobile-first, app-like
   ============================================================ */
:root{
  --fairway:#1f9d52;        /* primary green */
  --fairway-dark:#157a3e;
  --lime:#7ed957;           /* bright accent */
  --sky:#36b7f0;            /* sky blue */
  --sun:#ffd23f;            /* sunshine yellow */
  --flag:#ff4d4d;           /* flag red */
  --sand:#f6e7c1;           /* bunker */
  --ink:#0f2417;            /* deep green-black text */
  --muted:#5e7466;
  --paper:#ffffff;
  --bg:#eef7ef;             /* soft green-tinted background */
  --card:#ffffff;
  --line:#e3eee6;
  --shadow:0 6px 20px rgba(16,74,42,.10);
  --radius:18px;
  --safe-top:env(safe-area-inset-top,0px);
  --safe-bottom:env(safe-area-inset-bottom,0px);
}

/* ---------- Dark mode ---------- */
body.dark{
  --ink:#e9f3ec; --muted:#93a89b; --bg:#0f1e17; --card:#18271f; --paper:#18271f;
  --line:#2a3c32; --sand:#3a3320;
}
body.dark .sheet,
body.dark .rd-hero,
body.dark .rd-section{background:var(--card);color:var(--ink)}
body.dark .help-card{background:#13231b;border-color:var(--line)}
body.dark .field input,body.dark .field select,body.dark .field textarea,
body.dark .score-input,body.dark .chat-input input,
body.dark .slot-pick button,body.dark .date-chips button,
body.dark .filterbar .flt-q,body.dark .filterbar .flt-date{background:#11201a;color:var(--ink);border-color:var(--line)}
/* iOS renders the date field's mm/dd/yyyy via native pseudo-elements that
   ignore `color` — color-scheme + text-fill make them visible in dark mode.
   iOS (mobile Safari) uses ::-webkit-date-and-time-value; desktop WebKit uses
   the ::-webkit-datetime-edit-* family. We cover both. */
body.dark .filterbar .flt-date{color-scheme:dark;color:var(--ink);-webkit-text-fill-color:var(--ink)}
body.dark .filterbar .flt-date::-webkit-date-and-time-value{color:var(--ink);-webkit-text-fill-color:var(--ink)}
body.dark .filterbar .flt-date::-webkit-datetime-edit,
body.dark .filterbar .flt-date::-webkit-datetime-edit-fields-wrapper,
body.dark .filterbar .flt-date::-webkit-datetime-edit-text,
body.dark .filterbar .flt-date::-webkit-datetime-edit-month-field,
body.dark .filterbar .flt-date::-webkit-datetime-edit-day-field,
body.dark .filterbar .flt-date::-webkit-datetime-edit-year-field{color:var(--ink);-webkit-text-fill-color:var(--ink)}
body.dark .slot-pick button.active,body.dark .date-chips button.active,body.dark .filterbar .flt-chip.active{background:var(--fairway);color:#fff;border-color:var(--fairway)}
body.dark .segment{background:#13231b}
body.dark .segment button{color:var(--muted)}
body.dark .segment button.active{background:var(--card);color:#cdeed7}
body.dark .chat-bubble{background:#26392f;color:var(--ink)}
body.dark .chip{background:#1c2e24;color:#cdeed7}
body.dark .pip.open{background:#16271e}
body.dark .btn-ghost{background:#26392f;color:var(--muted)}
body.dark .badge-full{background:#2a3c32;color:var(--muted)}
body.dark .lb-row.mine{background:#16271e}
body.dark .addrow{background:#16271e;color:#cdeed7}
body.dark .switch{background:#33433a}
body.dark .switch.on{background:var(--fairway)}
body.dark .filterbar .flt-clear{background:#26392f;color:var(--muted)}
body.dark .ib-add{background:#0f1e17}
body.dark .login .card{background:var(--card);color:var(--ink)}
body.dark .cal-cell{background:#18271f;border-color:#2a3c32;color:var(--ink)}
body.dark .cal-cell.muted{background:transparent;border-color:transparent;color:#46594e}
body.dark .cal-cell.sel{background:var(--fairway);color:#fff}
body.dark .cal-cell .cnt{color:var(--lime)}
body.dark .cal-nav .icon-btn{background:#26392f !important;color:#cdeed7 !important}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  font-family:"Segoe UI",system-ui,-apple-system,Roboto,Helvetica,Arial,sans-serif;
  color:var(--ink);
  background:var(--bg);
  -webkit-font-smoothing:antialiased;
  overscroll-behavior-y:none;
}
button{font-family:inherit;cursor:pointer;border:none;background:none}
input,select,textarea{font-family:inherit;font-size:16px} /* 16px stops iOS zoom */

.app{max-width:560px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column;background:var(--bg)}
.hidden{display:none !important}

/* ---------- Top bar ---------- */
.topbar{
  position:sticky;top:0;z-index:30;
  padding:calc(var(--safe-top) + 14px) 18px 14px;
  background:linear-gradient(135deg,var(--fairway),var(--fairway-dark));
  color:#fff;display:flex;align-items:center;justify-content:space-between;
  box-shadow:0 4px 14px rgba(16,74,42,.18);
}
.brand{display:flex;align-items:center;gap:9px;font-weight:800;font-size:1.32rem;letter-spacing:.2px}
.brand .ball{font-size:1.3rem}
.brand .hi{color:var(--sun)}
.icon-btn{
  width:42px;height:42px;border-radius:50%;display:grid;place-items:center;
  background:rgba(255,255,255,.16);color:#fff;font-size:1.15rem;line-height:1;text-align:center;padding:0;
}
.icon-btn:active{transform:scale(.94)}
.icon-btn{position:relative}
/* topbar buttons carry a tiny label so the icons are self-explanatory */
.topbar .icon-btn{width:auto;min-width:46px;height:46px;border-radius:13px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:4px 7px 3px;font-size:1.05rem}
.topbar .icon-btn .nav-lab{font-size:.52rem;font-weight:700;letter-spacing:.2px;opacity:.85;line-height:1}
/* sheet close X (top-right of every bottom sheet) */
.sheet{position:relative}
.sheet-x{position:absolute;top:10px;right:12px;width:32px;height:32px;border-radius:50%;background:rgba(0,0,0,.07);color:var(--muted);font-size:.95rem;line-height:1;display:grid;place-items:center;padding:0;z-index:3}
body.dark .sheet-x{background:rgba(255,255,255,.1);color:#cdeed7}
.nav-badge{position:absolute;top:-3px;right:-3px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;background:var(--flag);color:#fff;font-size:.68rem;font-weight:800;display:grid;place-items:center;border:2px solid var(--fairway-dark)}

/* ---------- Group chip / switcher ---------- */
.group-chip{display:block;margin:10px auto 0;padding:6px 16px;border-radius:999px;background:#e9f5ec;color:var(--fairway-dark);font-weight:800;font-size:.9rem}
.group-chip .grp-caret{color:var(--muted)}
body.dark .group-chip{background:#1c2e24;color:#cdeed7}
.grp-list{display:flex;flex-direction:column;gap:8px}
.grp-row{text-align:left;padding:13px 15px;border-radius:12px;background:#eef7ef;font-weight:700;color:var(--fairway-dark);display:flex;align-items:center;gap:8px}
.grp-row.cur{background:var(--fairway);color:#fff}
body.dark .grp-row{background:#16271e;color:#cdeed7}
body.dark .grp-row.cur{background:var(--fairway);color:#fff}
.grp-own{font-size:.66rem;font-weight:800;padding:2px 7px;border-radius:999px;background:var(--sun);color:#5a4500}

/* ---------- Install banner ---------- */
.install-banner{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:12px 18px 0;padding:10px 12px;background:linear-gradient(135deg,var(--sky),#1f9ad6);color:#fff;border-radius:13px;box-shadow:var(--shadow)}
.install-banner .ib-text{font-size:.86rem;font-weight:700;line-height:1.25}
.install-banner .ib-actions{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.install-banner .ib-add{background:#fff;color:#1f7aad;font-weight:800;padding:7px 14px;border-radius:10px;font-size:.85rem}
.install-banner .ib-x{width:30px;height:30px;border-radius:8px;background:rgba(255,255,255,.2);color:#fff;font-size:1.1rem;line-height:1}

/* ---------- Segmented view toggle ---------- */
.segment{
  display:flex;gap:4px;margin:14px 18px 4px;padding:4px;
  background:#dcefe0;border-radius:14px;
}
.segment button{
  flex:1;padding:10px;border-radius:11px;font-weight:700;color:var(--muted);font-size:.95rem;
}
.segment button.active{background:#fff;color:var(--fairway-dark);box-shadow:var(--shadow)}

/* ---------- Scroll area ---------- */
.scroll{flex:1;overflow-y:auto;padding:8px 18px calc(110px + var(--safe-bottom));-webkit-overflow-scrolling:touch}

/* ---------- Day section ---------- */
.day-group{margin-top:18px}
.day-head{display:flex;align-items:baseline;gap:9px;margin:0 4px 10px}
.day-head .d{font-weight:800;font-size:1.05rem}
.day-head .sub{color:var(--muted);font-size:.85rem}

/* ---------- Tee-time card ---------- */
.tee-card{
  background:var(--card);border-radius:var(--radius);padding:16px;margin-bottom:13px;
  box-shadow:var(--shadow);border:1px solid var(--line);
  display:flex;flex-direction:column;gap:12px;position:relative;overflow:hidden;
}
.tee-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:6px;background:var(--lime)}
.tee-card.full::before{background:var(--muted)}
.tee-card.mine::before{background:var(--sky)}

.tee-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.tee-time{font-size:1.5rem;font-weight:800;line-height:1;display:flex;align-items:baseline;gap:6px}
.tee-time .ampm{font-size:.9rem;font-weight:700;color:var(--muted)}
.tee-course{display:inline-flex;align-items:center;gap:3px;margin-top:5px;font-weight:600;color:var(--fairway-dark);text-decoration:none}
.tee-course:active{opacity:.7}
.tee-course .map-ico{font-size:.78rem;color:var(--sky);font-weight:700}

/* ---------- Filter bar ---------- */
.filterbar{display:flex;gap:7px;align-items:center;padding:8px 18px 2px;position:relative}
.filterbar .flt-q{flex:1;min-width:0;padding:10px 12px;border:1.5px solid var(--line);border-radius:11px;background:#fff;font-size:.92rem}
.filterbar .flt-date{padding:9px 8px;border:1.5px solid var(--line);border-radius:11px;background:#fff;font-size:.82rem;color:var(--muted);max-width:140px}
.filterbar .flt-q:focus,.filterbar .flt-date:focus{outline:none;border-color:var(--fairway)}
.filterbar .flt-chip{padding:10px 12px;border-radius:11px;font-weight:700;font-size:.82rem;background:#e9f5ec;color:var(--fairway-dark);white-space:nowrap;border:1.5px solid transparent}
.filterbar .flt-chip.active{background:var(--fairway);color:#fff}
.filterbar .flt-clear{width:38px;height:38px;border-radius:11px;background:#eef2ef;color:var(--muted);font-weight:800;flex:0 0 auto}
.filterbar .flt-more{flex:0 0 auto;display:inline-flex;align-items:center;gap:5px}
.filterbar .flt-more::after{content:"▾";font-size:.7rem;opacity:.7}
.flt-badge{display:inline-grid;place-items:center;min-width:18px;height:18px;border-radius:9px;background:var(--fairway);color:#fff;font-size:.68rem;font-weight:800;padding:0 5px}
.flt-more.active .flt-badge{background:#fff;color:var(--fairway-dark)}
.flt-menu{position:absolute;right:18px;top:50px;z-index:40;min-width:188px;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:6px}
.flt-menu-date{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px;border-bottom:1px solid var(--line);margin-bottom:4px}
.flt-menu-date label{font-weight:700;font-size:.9rem;color:var(--ink)}
.flt-menu-date input[type=date]{flex:0 0 auto;padding:8px 10px;border:1.5px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink);font-size:.85rem}
body.dark .flt-menu-date input[type=date]{color-scheme:dark;color:var(--ink);-webkit-text-fill-color:var(--ink)}
body.dark .flt-menu-date input[type=date]::-webkit-date-and-time-value{color:var(--ink);-webkit-text-fill-color:var(--ink)}
.flt-menu-item{display:block;width:100%;text-align:left;padding:12px 13px;border-radius:10px;background:transparent;color:var(--ink);font-weight:600;font-size:.92rem}
.flt-menu-item.on{background:#e9f5ec;color:var(--fairway-dark)}
.flt-menu-item.on::after{content:"✓";float:right;font-weight:800}
.flt-menu-clear{color:var(--flag);margin-top:4px;border-top:1px solid var(--line);border-radius:0}
body.dark .flt-menu-item{color:var(--ink)}
body.dark .flt-menu-item.on{background:#1c3326;color:var(--lime)}
.tee-meta{color:var(--muted);font-size:.84rem;margin-top:3px}
.wx{white-space:nowrap;font-weight:600}

.slots{display:flex;gap:5px;align-items:center;flex-wrap:wrap;justify-content:flex-end;max-width:48%}
.pip{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:.78rem;font-weight:800}
.pip.filled{background:var(--fairway);color:#fff}
.pip.filled.host{box-shadow:0 0 0 2px var(--sun)}
.pip.has-img{overflow:hidden}
.pip.has-img img{width:100%;height:100%;object-fit:cover;display:block}
.pip.open{background:#e9f5ec;color:var(--fairway);border:2px dashed var(--lime)}
.tee-tr{display:flex;flex-direction:column;align-items:flex-end;gap:7px;flex:0 0 auto}
.tee-tr .slots{max-width:none}
.chat-flag{display:inline-flex;align-items:center;gap:3px;position:relative;background:#eef2ef;color:var(--muted);border-radius:999px;padding:3px 9px;font-size:.74rem;font-weight:800;white-space:nowrap}
.chat-flag.new{background:var(--sun);color:#5a4500}
.chat-dot{position:absolute;top:-3px;right:-3px;width:9px;height:9px;border-radius:50%;background:var(--flag);box-shadow:0 0 0 2px var(--card)}
body.dark .chat-flag{background:#26392f;color:#bcd1c4}
body.dark .chat-flag.new{background:var(--sun);color:#5a4500}
.today-flag{display:inline-block;vertical-align:middle;margin-left:8px;font-size:.66rem;font-weight:800;border-radius:999px;padding:2px 9px;background:#e9f5ec;color:var(--fairway-dark);letter-spacing:.02em}
.today-flag.soon{background:var(--sun);color:#5a4500}
.tee-card.today{border-color:var(--lime)}
body.dark .today-flag{background:#1c3326;color:var(--lime)}
body.dark .today-flag.soon{background:var(--sun);color:#5a4500}
.int-flag{display:inline-flex;align-items:center;gap:3px;background:#e7eef7;color:#3a567a;border-radius:999px;padding:3px 9px;font-size:.74rem;font-weight:800;white-space:nowrap}
body.dark .int-flag{background:#26323f;color:#9fc0e6}
.ride-tag{display:inline-block;font-size:.72rem;font-weight:700;border-radius:999px;padding:1px 8px;margin-left:6px;white-space:nowrap}
.ride-tag.drive{background:#e9f5ec;color:var(--fairway-dark)}
.ride-tag.need{background:#fff2cc;color:#7a5a00}
body.dark .ride-tag.drive{background:#1c3326;color:#7ed957}
body.dark .ride-tag.need{background:#3a3320;color:#ffd23f}
.rd-av.has-img{padding:0;overflow:hidden}
.rd-av.has-img img{width:100%;height:100%;object-fit:cover;display:block}
.chat-av{display:inline-block;width:18px;height:18px;border-radius:50%;overflow:hidden;vertical-align:middle;margin-right:5px}
.chat-av img{width:100%;height:100%;object-fit:cover;display:block}
.avatar-edit{display:flex;align-items:center;gap:14px}
.avatar-preview{width:64px;height:64px;border-radius:50%;background:var(--fairway);color:#fff;display:grid;place-items:center;font-size:1.6rem;font-weight:800;overflow:hidden;flex:0 0 auto}
.avatar-preview img{width:100%;height:100%;object-fit:cover}
.act-row{display:flex;gap:12px;align-items:flex-start;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin:0 16px 9px}
.act-ico{font-size:1.2rem;flex:0 0 auto;line-height:1.4}
.act-body{min-width:0}
.act-text{font-weight:600;font-size:.92rem}
.act-time{color:var(--muted);font-size:.76rem;margin-top:2px}
.ride-pick{display:flex;gap:7px}
.ride-pick button{flex:1;padding:11px 8px;border-radius:11px;background:#eef2ef;font-weight:700;font-size:.84rem;border:1.5px solid transparent}
.ride-pick button.active{background:var(--fairway);color:#fff;border-color:var(--fairway)}
body.dark .ride-pick button{background:#11201a;color:var(--ink);border-color:var(--line)}
body.dark .ride-pick button.active{background:var(--fairway);color:#fff;border-color:var(--fairway)}

.tee-players{display:flex;flex-wrap:wrap;gap:6px}
.chip{background:#eef7ef;border-radius:999px;padding:5px 11px;font-size:.8rem;font-weight:600;color:var(--fairway-dark);display:flex;align-items:center;gap:5px}
.chip.host{background:var(--sun);color:#5a4500}

.tee-actions{display:flex;gap:9px}
.btn{flex:1;padding:14px;border-radius:13px;font-weight:800;font-size:1.03rem;text-align:center;transition:transform .05s}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--fairway);color:#fff}
.btn-accent{background:var(--lime);color:#123a1f}
.btn-ghost{background:#eef2ef;color:var(--muted)}
.btn-danger{background:#ffe9e9;color:var(--flag)}
.btn-sun{background:var(--sun);color:#5a4500}
.badge-open{background:var(--lime);color:#123a1f;border-radius:999px;padding:4px 10px;font-size:.74rem;font-weight:800}
.badge-full{background:#e6ece8;color:var(--muted);border-radius:999px;padding:4px 10px;font-size:.74rem;font-weight:800}

/* ---------- Empty state ---------- */
.empty{text-align:center;padding:56px 24px;color:var(--muted)}
.empty .em{font-size:3rem}
.empty h3{margin:14px 0 6px;color:var(--ink)}

/* ---------- Floating post button ---------- */
.fab{
  position:fixed;left:50%;transform:translateX(-50%);
  bottom:calc(22px + var(--safe-bottom));z-index:40;
  background:linear-gradient(135deg,var(--lime),var(--fairway));
  color:#0f2417;font-weight:800;font-size:1rem;
  padding:15px 26px;border-radius:999px;box-shadow:0 10px 26px rgba(31,157,82,.42);
  display:flex;align-items:center;gap:9px;
}
.fab:active{transform:translateX(-50%) scale(.96)}

/* ---------- Calendar grid ---------- */
.cal{padding:6px 4px}
.cal-head{display:flex;align-items:center;justify-content:space-between;margin:6px 0 12px}
.cal-head .mname{font-weight:800;font-size:1.1rem}
.cal-nav{display:flex;gap:8px}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.cal-dow{text-align:center;font-size:.72rem;font-weight:700;color:var(--muted);padding:4px 0}
.cal-cell{min-height:62px;border-radius:11px;background:#fff;border:1px solid var(--line);padding:4px 5px;display:flex;flex-direction:column;gap:1px;font-size:.82rem;position:relative;overflow:hidden}
.cal-cell.muted{background:transparent;border-color:transparent;color:#b9c9bd;min-height:0}
.cal-cell.today{border-color:var(--sky);border-width:2px}
.cal-cell.has{cursor:pointer}
.cal-d{font-weight:600;line-height:1}
.cal-ev{display:block;font-size:.6rem;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--fairway-dark)}
.cal-ev b{font-weight:800}
.cal-ev-c{color:var(--muted);font-weight:600}
.cal-more{font-size:.56rem;color:var(--muted);font-weight:700}
.cal-cell.sel{background:var(--fairway);color:#fff}
.cal-cell.sel .cal-ev,.cal-cell.sel .cal-ev-c,.cal-cell.sel .cal-more{color:#eafff0}
body.dark .cal-ev{color:var(--lime)}
body.dark .cal-ev-c,body.dark .cal-more{color:var(--muted)}

/* ---------- Modal / sheet ---------- */
.sheet-backdrop{position:fixed;inset:0;background:rgba(10,30,18,.45);z-index:50;display:flex;align-items:flex-end;justify-content:center}
.sheet{
  background:#fff;width:100%;max-width:560px;border-radius:24px 24px 0 0;
  padding:22px 20px calc(26px + var(--safe-bottom));box-shadow:0 -10px 40px rgba(0,0,0,.2);
  max-height:92vh;overflow-y:auto;animation:slideup .22s ease;
}
@keyframes slideup{from{transform:translateY(100%)}to{transform:translateY(0)}}
.sheet h2{margin:0 0 4px;font-size:1.3rem}
.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.sheet-x{flex:0 0 auto;background:#eef2ef;color:var(--muted);width:36px;height:36px}
body.dark .sheet-x{background:#26392f;color:var(--muted)}
.sheet .grab{width:42px;height:5px;border-radius:3px;background:#dbe7de;margin:0 auto 10px;padding:9px 26px;background-clip:content-box;box-sizing:content-box;cursor:pointer}
.sheet .grab:active{background:#c2d4c8;background-clip:content-box}
body.dark .sheet .grab{background:#3a4a40;background-clip:content-box}
/* site-admin: all groups */
.sa-group{border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-bottom:12px}
.sa-ghead{font-weight:700;font-size:1.02rem;margin-bottom:8px}
.sa-mem{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-top:1px solid var(--line);font-size:.86rem}
.sa-mem:nth-child(2){border-top:none}
.sa-mname{font-weight:600;min-width:0}
.sa-memail{color:var(--muted);word-break:break-all;text-align:right}
.sa-rm{flex:0 0 auto;align-self:center;width:24px;height:24px;border-radius:50%;border:none;
  background:var(--line,#e2e8e2);color:var(--muted);font-size:.72rem;line-height:1;cursor:pointer}
.sa-rm:hover{background:#ffd9d9;color:#c0392b}
body.dark .sa-rm{background:#2a3340;color:#9db8d8}
.field{margin-bottom:15px}
.field label{display:block;font-weight:700;font-size:.88rem;margin-bottom:6px;color:var(--ink)}
.field input,.field select,.field textarea{
  width:100%;padding:13px 14px;border:1.5px solid var(--line);border-radius:13px;background:#fbfdfb;color:var(--ink);
}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--fairway)}
.field textarea{min-height:74px;resize:vertical}
.slot-pick{display:flex;gap:8px}
.slot-pick button{flex:1;padding:13px;border-radius:13px;border:1.5px solid var(--line);font-weight:800;color:var(--muted);background:#fbfdfb}
.slot-pick button.active{background:var(--fairway);color:#fff;border-color:var(--fairway)}
.slot-pick button:disabled{cursor:not-allowed}
.grp-pick{display:flex;flex-wrap:wrap;gap:8px}
.grp-pick button{padding:9px 14px;border-radius:999px;border:1.5px solid var(--line);font-weight:700;font-size:.88rem;color:var(--muted);background:#fbfdfb}
.grp-pick button.active{background:var(--fairway);color:#fff;border-color:var(--fairway)}
.grp-pick button.locked{opacity:.95;cursor:default}
body.dark .grp-pick button{background:var(--card);color:var(--muted);border-color:var(--line)}
body.dark .grp-pick button.active{background:var(--fairway);color:#fff;border-color:var(--fairway)}
.tee-share{margin-top:3px}
.share-flag{display:inline-block;font-size:.72rem;font-weight:700;color:#5a4500;background:var(--sun);border:none;border-radius:999px;padding:3px 10px;cursor:pointer}
.share-flag:active{filter:brightness(.95)}
body.dark .share-flag{color:var(--lime);background:rgba(126,217,87,.14)}
/* context line */
.ctx-line{font-size:.82rem;color:var(--muted);padding:2px 2px 10px}
.ctx-switch{color:var(--fairway-dark);font-weight:700;cursor:pointer}
body.dark .ctx-switch{color:var(--lime)}
/* next-up banner */
.nextup{display:flex;align-items:center;gap:11px;width:100%;text-align:left;border:none;cursor:pointer;
  background:linear-gradient(135deg,#1f9d52,#0c4d28);color:#fff;border-radius:14px;padding:12px 14px;margin:0 0 12px;box-shadow:var(--shadow)}
.nu-ico{font-size:1.4rem;flex:0 0 auto}
.nu-body{flex:1;min-width:0;display:flex;flex-direction:column}
.nu-title{font-weight:800;font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nu-sub{font-size:.78rem;opacity:.92}
.nu-go{flex:0 0 auto;font-size:1.4rem;font-weight:800;opacity:.9}
/* empty-state actions */
.empty-acts{display:flex;flex-direction:column;gap:9px;margin-top:14px;max-width:280px;margin-left:auto;margin-right:auto}
/* shared-roster sheet */
.sr-grp{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:9px}
.sr-name{font-weight:800;margin-bottom:4px}
.sr-mem{font-size:.9rem;margin-top:2px}
/* scorecard tabs + per-player Enter */
.sc-tabs{display:flex;gap:8px;margin:0 0 12px}
.sc-tabb{flex:1;padding:10px;border-radius:11px;border:1.5px solid var(--line);background:#fbfdfb;font-weight:800;color:var(--muted);cursor:pointer}
.sc-tabb.active{background:var(--fairway);color:#fff;border-color:var(--fairway)}
body.dark .sc-tabb{background:var(--card);border-color:var(--line);color:var(--muted)}
body.dark .sc-tabb.active{background:var(--fairway);color:#fff}
.sc-nine{display:flex;align-items:center;gap:10px;margin:0 0 12px}
.sc-nine .slot-pick{flex:1}
.sc-nine .slot-pick button:disabled{opacity:.55;cursor:default}
.se-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.se-hl{color:var(--muted);font-size:.9rem}
.se-only{font-weight:800}
#sc-player{flex:1;padding:9px 11px;border:1.5px solid var(--line);border-radius:11px;background:#fbfdfb;font-weight:700;font-size:1rem}
.se-list{display:flex;flex-direction:column;gap:7px}
.se-hole{border:1px solid var(--line);border-radius:12px;padding:8px 10px;background:var(--bg)}
.se-top{display:flex;align-items:center;gap:10px}
.se-meta{flex:1;min-width:0;display:flex;align-items:baseline;gap:7px;flex-wrap:wrap}
.se-num{font-weight:800;font-size:1.05rem;min-width:1.4em;text-align:center}
.se-sub{font-size:.72rem;color:var(--muted)}
.se-dots{color:var(--fairway-dark);letter-spacing:1px}
body.dark .se-dots{color:var(--lime)}
.se-step{display:flex;align-items:center;gap:6px}
.se-mn,.se-pl{width:40px;height:40px;border-radius:11px;border:1.5px solid var(--line);background:#fff;font-size:1.3rem;font-weight:800;color:var(--fairway-dark);cursor:pointer;line-height:1}
body.dark .se-mn,body.dark .se-pl{background:var(--card);color:var(--lime);border-color:var(--line)}
.se-mn:active,.se-pl:active{filter:brightness(.94)}
.se-val{min-width:1.7em;text-align:center;font-weight:800;font-size:1.25rem}
.se-exp{width:40px;height:40px;border-radius:11px;border:1.5px dashed var(--line);background:transparent;font-weight:800;color:var(--muted);cursor:pointer}
.se-exp.has{border-style:solid;color:var(--fairway-dark)}
body.dark .se-exp.has{color:var(--lime)}
.se-details{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line);display:flex;flex-direction:column;gap:8px}
.se-mini{display:flex;align-items:center;justify-content:space-between;gap:8px}
.se-dl{font-size:.85rem;color:var(--muted);font-weight:700}
.se-ministep{display:flex;align-items:center;gap:6px}
.se-ministep .se-mn,.se-ministep .se-pl{width:34px;height:34px;font-size:1.1rem}
.se-mval{min-width:1.6em;text-align:center;font-weight:800}
.se-arrows{display:flex;gap:5px}
.se-arrow{min-width:38px;height:34px;padding:0 8px;border-radius:9px;border:1.5px solid var(--line);background:#fff;font-weight:800;cursor:pointer}
body.dark .se-arrow{background:var(--card);border-color:var(--line)}
.se-arrow.on{background:var(--fairway);color:#fff;border-color:var(--fairway)}
.se-yn{display:flex;gap:5px}
.se-yn-btn{min-width:46px;height:34px;padding:0 12px;border-radius:9px;border:1.5px solid var(--line);background:#fff;font-weight:800;cursor:pointer}
body.dark .se-yn-btn{background:var(--card);border-color:var(--line)}
.se-yn-btn.yes.on{background:var(--fairway);color:#fff;border-color:var(--fairway)}
.se-yn-btn.no.on{background:var(--flag);color:#fff;border-color:var(--flag)}
.se-totals{margin-top:12px;padding:11px;border-radius:11px;background:var(--card);font-weight:800;text-align:center}
.date-chips{display:flex;gap:7px;margin:0 0 14px}
.date-chips button{flex:1;padding:9px 4px;border-radius:11px;border:1.5px solid var(--line);background:#fbfdfb;font-weight:700;font-size:.85rem;color:var(--muted)}
.date-chips button.active{background:var(--fairway);color:#fff;border-color:var(--fairway)}
.row2{display:flex;gap:10px}
.row2 .field{flex:1}

/* ---------- Login ---------- */
.login{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:40px 28px;
  background:linear-gradient(160deg,var(--fairway),var(--fairway-dark) 70%,#0c4d28);color:#fff;min-height:100vh}
.login .logo{font-size:3.4rem;font-weight:900;letter-spacing:.5px}
.login .logo .hi{color:var(--sun)}
.login .tag{opacity:.92;margin:6px 0 34px;font-size:1.05rem}
.login .card{background:#fff;color:var(--ink);border-radius:22px;padding:24px;width:100%;max-width:380px;box-shadow:0 18px 50px rgba(0,0,0,.25);text-align:left}
.login .card h2{margin:0 0 4px;font-size:1.2rem}
.login .card p{margin:0 0 16px;color:var(--muted);font-size:.9rem}
.login input{width:100%;padding:14px;border:1.5px solid var(--line);border-radius:13px;margin-bottom:12px}
.login .btn-primary{width:100%}
.login .note{margin-top:14px;font-size:.8rem;color:var(--muted);text-align:center}

/* ---------- Round detail view ---------- */
.round-view{position:fixed;inset:0;z-index:45;background:var(--bg);display:flex;flex-direction:column;max-width:560px;margin:0 auto}
.round-top{position:sticky;top:0;z-index:5;padding:calc(var(--safe-top) + 14px) 14px 14px;background:linear-gradient(135deg,var(--fairway),var(--fairway-dark));color:#fff;display:flex;align-items:center;justify-content:space-between;box-shadow:0 4px 14px rgba(16,74,42,.18)}
.round-top .icon-btn{background:rgba(255,255,255,.18);font-size:1.2rem}
.cal-nav .icon-btn{font-size:1rem}
.round-title{font-weight:800;font-size:1.05rem;flex:1;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 8px}
.round-body{flex:1;overflow-y:auto}
.rd-hero{background:#fff;border-radius:0 0 22px 22px;padding:20px 20px 22px;box-shadow:var(--shadow);border-bottom:4px solid var(--lime)}
.rd-time{font-size:2.1rem;font-weight:800;line-height:1;display:flex;align-items:baseline;gap:8px}
.rd-time .ampm{font-size:1rem;font-weight:700;color:var(--muted)}
.rd-date{color:var(--muted);font-weight:600;margin-top:4px}
.rd-course{display:inline-flex;align-items:center;gap:4px;margin-top:12px;font-size:1.1rem;font-weight:700;color:var(--fairway-dark);text-decoration:none}
.rd-course .map-ico{font-size:.85rem;color:var(--sky)}
.rd-section{background:#fff;border-radius:var(--radius);padding:16px;margin:14px 0;box-shadow:var(--shadow);border:1px solid var(--line)}
.rd-section h3{margin:0 0 12px;font-size:1rem}
.rd-roster{display:flex;flex-direction:column;gap:9px}
.rd-player{display:flex;align-items:center;gap:10px}
.rd-av{width:34px;height:34px;border-radius:50%;background:var(--fairway);color:#fff;display:grid;place-items:center;font-weight:800;font-size:.9rem;flex:0 0 auto}
.rd-av.host{background:var(--sun);color:#5a4500}
.rd-av.rd-open{background:#e9f5ec;color:var(--fairway);border:2px dashed var(--lime)}
.rd-pname{font-weight:600}
.rd-remove{margin-left:auto;width:30px;height:30px;border-radius:50%;background:#ffe9e9;color:var(--flag);font-size:1.2rem;line-height:1;flex:0 0 auto}
.rd-remove:active{transform:scale(.9)}
.addlist{display:flex;flex-direction:column;gap:8px;max-height:50vh;overflow-y:auto}
.addrow{text-align:left;padding:14px 16px;border-radius:12px;background:#eef7ef;font-weight:600;color:var(--fairway-dark)}
.addrow:active{background:#dcefe0}
.addrow:disabled{opacity:.5}
.rd-actions{margin:16px 18px}
.rd-actions .btn{width:100%;margin-bottom:9px}
.rd-mini{display:flex;gap:9px}
.rd-mini .btn{margin-bottom:0}
.score-row{display:flex;align-items:center;gap:8px;margin-top:12px;flex-wrap:wrap}
.score-row label{font-weight:700;color:var(--muted);font-size:.9rem;flex:0 0 auto}
.score-row .score-input,.score-row .tee-select,.score-row .score-save{height:46px;box-sizing:border-box}
.score-input{flex:0 0 60px;width:60px;padding:0 8px;border:1.5px solid var(--line);border-radius:11px;background:#fbfdfb;font-size:1rem;font-weight:700;text-align:center}
.score-input:focus{outline:none;border-color:var(--fairway)}
.score-save{flex:0 0 auto;padding:0 16px;display:inline-flex;align-items:center;justify-content:center}
/* leaderboard */
.lb-card{padding:10px 4px;border-bottom:1px solid var(--line)}
.lb-card.mine{background:#eef7ef;border-radius:10px;padding:10px;border-bottom:none}
body.dark .lb-card.mine{background:#16271e}
.lb-top{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.lb-name{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lb-rounds{flex:0 0 auto;color:var(--muted);font-size:.82rem;font-weight:600}
.lb-line{font-size:.85rem;color:var(--ink);margin-top:4px}
.lb-line b{font-weight:800}
.lb-tag{display:inline-block;font-size:.66rem;font-weight:800;padding:2px 7px;border-radius:999px;background:var(--fairway);color:#fff;margin-right:5px}
.lb-tag.nine{background:var(--sky)}
/* chat */
/* hole map / GPS */
.hm-nav{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.hm-arrow{width:50px;height:46px;border-radius:12px;border:1.5px solid var(--line);background:#fbfdfb;font-size:1.2rem;font-weight:800;color:var(--fairway-dark);cursor:pointer}
.hm-arrow:disabled{opacity:.4;cursor:default}
body.dark .hm-arrow{background:var(--card);color:var(--lime);border-color:var(--line)}
.hm-hd{text-align:center}.hm-no{font-weight:800;font-size:1.1rem}.hm-meta{color:var(--muted);font-size:.82rem}
.hm-dist{display:flex;align-items:flex-end;justify-content:center;gap:20px;margin:4px 0 10px}
.hm-dist .dd{text-align:center}
.hm-dist .dv{font-size:1.5rem;font-weight:800;color:var(--fairway-dark);line-height:1}
.hm-dist .dd.big .dv{font-size:2.6rem}
body.dark .hm-dist .dv{color:var(--lime)}
.hm-dist .dl{font-size:.7rem;color:var(--muted);margin-top:3px;text-transform:uppercase;letter-spacing:.05em}
.hm-viewtoggle{display:flex;gap:8px;margin:0 0 8px}
.hm-viewtoggle button{flex:1;padding:9px;border-radius:11px;border:1.5px solid var(--line);background:#fbfdfb;font-weight:800;color:var(--muted);cursor:pointer}
.hm-viewtoggle button.on{background:var(--fairway);color:#fff;border-color:var(--fairway)}
body.dark .hm-viewtoggle button{background:var(--card);color:var(--muted);border-color:var(--line)}
body.dark .hm-viewtoggle button.on{background:var(--fairway);color:#fff}
.hm-svg{border-radius:14px;overflow:hidden;border:1px solid var(--line);background:#41734d;line-height:0}
.hm-svg svg{display:block;width:100%;height:auto;max-height:46vh}
.hm-haz{margin-top:12px}
/* brand logo badge (login hero + topbar) */
.logo-badge{width:148px;height:148px;border-radius:30px;display:block;margin:0 auto;
  box-shadow:0 8px 22px -8px rgba(0,0,0,.4)}
/* landscape hero logo (login/welcome screens) — carries the wordmark + tagline */
.logo-hero{width:min(340px,86%);height:auto;display:block;margin:0 auto;border-radius:16px;
  box-shadow:0 8px 22px -8px rgba(0,0,0,.4)}
.brand-badge{width:30px;height:30px;border-radius:50%;vertical-align:middle;margin-right:7px;flex:0 0 auto}
.brand{display:flex;align-items:center}
/* trademark mark on the wordmark + copyright footer */
.tm{font-size:.42em;font-weight:700;vertical-align:super;opacity:.7;margin-left:1px}
.legal-foot{margin-top:18px;text-align:center;font-size:.72rem;line-height:1.5;color:var(--muted);opacity:.85}
/* compact copyright footer at the bottom of in-app scroll views */
.app-foot{margin-top:26px;padding-bottom:calc(10px + env(safe-area-inset-bottom));opacity:.7}
/* "remove this round" ✕ on My Rounds cards (e.g. a scramble — don't count it) */
.rd-del{position:absolute;top:8px;right:8px;width:26px;height:26px;border-radius:50%;border:none;
  background:var(--line,#e2e8e2);color:var(--muted);font-size:.8rem;line-height:1;cursor:pointer;z-index:2}
.rd-del:hover{background:#ffd9d9;color:#c0392b}
body.dark .rd-del{background:#2a3340;color:#9db8d8}
.settings-foot{margin-top:22px;padding-top:14px;border-top:1px solid var(--line);
  text-align:center;font-size:.72rem;line-height:1.5;color:var(--muted)}
/* guest players (claimed by a member for a non-member) */
.rd-av.guest{background:#e7eef7;color:#3a567a}
body.dark .rd-av.guest{background:#2a3340;color:#9db8d8}
.guest-tag{font-size:.72rem;font-weight:700;color:var(--muted);background:var(--chip,#eef2f0);
  padding:1px 7px;border-radius:999px;margin-left:4px;white-space:nowrap}
/* "make it a tee time" interested-people banner in the post sheet */
.lfg-fill-note{background:#eef7ef;border:1px solid var(--line);border-left:4px solid var(--fairway);
  border-radius:10px;padding:10px 12px;margin:0 0 12px;font-size:.9rem;line-height:1.5}
body.dark .lfg-fill-note{background:rgba(126,217,87,.08)}
/* offline pill (top of screen while disconnected) */
.offline-pill{position:fixed;top:8px;left:50%;transform:translateX(-50%);z-index:90;background:#3a3f45;color:#fff;
  font-size:.78rem;font-weight:700;padding:8px 14px;border-radius:999px;box-shadow:0 4px 14px rgba(0,0,0,.3);max-width:92%;text-align:center}
/* smaller quick-row variant (putts) */
.hs-small .hs-q{width:44px;height:44px;font-size:1.05rem}
/* one-tap score row in the hole score sheet (par−1 … par+3) */
.hs-quick{display:flex;gap:8px;justify-content:center;margin:10px 0 2px}
.hs-q{width:52px;height:52px;border-radius:14px;border:1.5px solid var(--line);background:#fbfdfb;
  font-size:1.25rem;font-weight:800;color:var(--ink);cursor:pointer}
.hs-q.on{background:var(--fairway);border-color:var(--fairway);color:#fff}
body.dark .hs-q{background:var(--card);color:#e7f3ea;border-color:var(--line)}
body.dark .hs-q.on{background:var(--fairway);color:#fff}
/* score/finish bar pinned to the bottom of the map screen — the score button is the
   most-tapped control of a round, so it lives in the thumb zone, always visible */
.hm-actions{position:sticky;bottom:0;display:flex;gap:8px;margin-top:14px;
  padding:10px 2px calc(10px + env(safe-area-inset-bottom));background:var(--bg);
  box-shadow:0 -10px 18px -12px rgba(0,0,0,.35)}
.hm-actions .btn{padding:15px 16px;font-size:1rem}
.hz-h{font-weight:800;font-size:.85rem;margin-bottom:4px}
.hz-row{display:flex;justify-content:space-between;font-size:.95rem;color:var(--ink);padding:5px 0;border-bottom:1px dashed var(--line)}
.hz-row span:last-child{font-weight:800}
body.dark .hz-row{color:var(--text)}
.hz-hint{text-align:center;color:var(--muted);font-size:.9rem;padding:10px 4px}
.tgt-clear{margin-left:8px;font-size:.78rem;font-weight:700;border:1px solid var(--line);background:transparent;color:var(--muted);border-radius:8px;padding:2px 9px;cursor:pointer}
.chat-head{display:flex;align-items:center;justify-content:space-between}
.chat-mute{background:transparent;border:none;font-size:1.2rem;cursor:pointer;padding:2px 6px;border-radius:9px}
.chat-mute.muted{opacity:.7}
.chat-list{max-height:300px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding:4px 0 10px}
.chat-msg{max-width:82%;align-self:flex-start}
.chat-msg.mine{align-self:flex-end}
.chat-name{font-size:.72rem;font-weight:700;color:var(--muted);margin:0 0 2px 4px}
.chat-bubble{background:#eef2ef;color:var(--ink);padding:9px 13px;border-radius:14px;font-size:.92rem;line-height:1.35;word-break:break-word}
.chat-msg.mine .chat-bubble{background:var(--fairway);color:#fff}
.chat-input{display:flex;gap:8px;margin-top:6px}
.chat-input input{flex:1;min-width:0;padding:11px 13px;border:1.5px solid var(--line);border-radius:12px;background:#fbfdfb}
.chat-input input:focus{outline:none;border-color:var(--fairway)}
.chat-input .btn{flex:0 0 auto;padding:11px 18px}

/* ---------- Toast ---------- */
.toast-wrap{position:fixed;left:0;right:0;bottom:calc(96px + var(--safe-bottom));z-index:60;display:flex;justify-content:center;pointer-events:none}
.toast{background:var(--ink);color:#fff;padding:12px 18px;border-radius:13px;font-weight:600;font-size:.9rem;box-shadow:var(--shadow);animation:pop .2s ease;max-width:90%}
.toast.good{background:var(--fairway)}
.toast.bad{background:var(--flag)}
.toast{pointer-events:auto;display:inline-flex;align-items:center;gap:12px}
.toast-act{background:rgba(255,255,255,.22);color:#fff;border:none;border-radius:9px;padding:6px 12px;font-weight:800;font-size:.82rem;cursor:pointer}
.toast-act:active{background:rgba(255,255,255,.34)}
@keyframes pop{from{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}

/* ---------- Settings list ---------- */
.set-list{display:flex;flex-direction:column;gap:2px}
.set-row{display:flex;justify-content:space-between;align-items:center;padding:15px 4px;border-bottom:1px solid var(--line)}
.set-row .lab{font-weight:600}
.set-row .desc{font-size:.8rem;color:var(--muted)}
.switch{width:50px;height:30px;border-radius:999px;background:#d6e3d9;position:relative;transition:background .15s}
.switch.on{background:var(--fairway)}
.switch .knob{position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;transition:left .15s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.switch.on .knob{left:23px}

/* ---------- Onboarding / welcome overlay ---------- */
#onboard{position:fixed;inset:0;z-index:55;overflow-y:auto;justify-content:flex-start;padding-top:30px}
#onboard .card{max-width:420px}
.hiw{display:flex;flex-direction:column;gap:12px;margin:6px 0 4px}
.hiw-row{display:flex;gap:11px;align-items:flex-start;font-size:.92rem;line-height:1.4}
.hiw-ico{font-size:1.3rem;flex:0 0 auto;width:26px;text-align:center}
.hiw-sub{color:var(--muted);font-size:.85rem}

/* ---------- Collapsible help (Settings) ---------- */
.help-details{margin-top:10px}
.help-details summary{list-style:none;cursor:pointer;font-weight:800;font-size:.92rem;padding:12px 14px;background:#f1f8f2;border:1px solid var(--line);border-radius:13px;display:flex;align-items:center;justify-content:space-between}
.help-details summary::-webkit-details-marker{display:none}
.help-details summary::after{content:"▸";color:var(--muted);font-weight:700}
.help-details[open] summary::after{content:"▾"}
body.dark .help-details summary{background:#13231b}

/* ---------- Help card (notification setup) ---------- */
.help-card{background:#f1f8f2;border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin-top:12px}
.help-title{font-weight:800;font-size:.95rem;margin-bottom:8px}
.help-note{border-radius:10px;padding:9px 11px;font-size:.85rem;font-weight:600;margin-bottom:10px}
.help-note.good{background:#e3f6e9;color:var(--fairway-dark)}
.help-note.warn{background:#fff5d6;color:#6b5300}
.help-os{margin-top:8px}
.help-os-h{font-weight:700;font-size:.88rem;margin-bottom:2px}
.help-os ol{margin:0;padding-left:20px}
.help-os li{font-size:.86rem;line-height:1.5;color:var(--ink);margin-bottom:2px}

/* ---------- Admin invite list ---------- */
.inv-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:12px 4px;border-bottom:1px solid var(--line)}
.lfg-wrap{padding:10px 0 2px}
.lfg-card{background:linear-gradient(135deg,#fff,#f0f8f2);border:1.5px solid var(--lime);border-radius:16px;padding:13px 15px;margin-top:10px}
body.dark .lfg-card{background:#13231b;border-color:#2f6b41}
.lfg-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.lfg-when{font-weight:800;font-size:1rem}
.lfg-people{font-size:.82rem;color:var(--muted);margin:7px 0 9px}
.lfg-person{margin-top:3px;color:var(--fairway-dark)}
.lfg-note{color:var(--muted);font-style:italic}
body.dark .lfg-person{color:var(--lime)}
.lfg-actions{display:flex;gap:8px;flex-wrap:wrap}
.lfg-actions .btn{flex:1;min-width:130px}
.rp-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.rp-thumb{position:relative;width:84px;height:84px;border-radius:12px;overflow:hidden;border:1px solid var(--line)}
.rp-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.rp-del{position:absolute;top:2px;right:2px;width:22px;height:22px;border-radius:50%;background:rgba(0,0,0,.55);color:#fff;font-weight:800;font-size:.9rem;line-height:1;display:grid;place-items:center}
.rp-add{display:grid;place-items:center;width:84px;height:84px;border-radius:12px;border:2px dashed var(--lime);color:var(--fairway);font-size:1.8rem;cursor:pointer;background:#f0f8f2}
body.dark .rp-add{background:#13231b}
.chat-react{display:flex;flex-wrap:wrap;align-items:center;gap:5px;margin:-3px 2px 9px}
.chat-react.mine{justify-content:flex-end}
.rx-chip{background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:2px 9px;font-size:.8rem;font-weight:600}
.rx-chip.on{background:#e9f5ec;border-color:var(--fairway)}
body.dark .rx-chip.on{background:#1c3326;border-color:var(--fairway)}
.rx-add{background:transparent;color:var(--muted);font-size:.9rem;padding:2px 7px;border-radius:999px}
.rx-palette{display:inline-flex;gap:4px;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:3px 7px}
.rx-opt{background:transparent;font-size:1.05rem;padding:0 3px;line-height:1.2}
.poll-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 13px;margin:8px 0;max-width:88%}
.poll-q{font-weight:700;font-size:.95rem;margin-bottom:9px}
.poll-by{color:var(--muted);font-weight:400;font-size:.8rem}
.poll-opt{position:relative;display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:var(--bg);border:1.5px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:7px;overflow:hidden;font-size:.9rem}
.poll-opt.mine{border-color:var(--fairway)}
.poll-bar{position:absolute;left:0;top:0;bottom:0;background:rgba(31,157,82,.16);z-index:0}
.poll-lab{position:relative;z-index:1;flex:1;font-weight:600}
.poll-cnt{position:relative;z-index:1;font-weight:800;color:var(--fairway-dark)}
.poll-voters{position:relative;z-index:1;display:inline-flex;gap:2px;margin-right:6px;flex-wrap:wrap}
.poll-voter{width:19px;height:19px;border-radius:50%;background:var(--fairway);color:#fff;font-size:.6rem;font-weight:800;display:inline-grid;place-items:center;overflow:hidden;box-shadow:0 0 0 1.5px var(--card)}
.poll-voter img{width:100%;height:100%;object-fit:cover}
.poll-total{color:var(--muted);font-size:.76rem;margin-top:2px}
body.dark .poll-opt{background:#11201a}
body.dark .poll-bar{background:rgba(126,217,87,.18)}
body.dark .poll-cnt{color:var(--lime)}
.sc-skins{margin-top:10px;background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.sk-title{font-weight:800;font-size:.9rem;margin-bottom:6px}
.sk-empty{color:var(--muted);font-size:.85rem;line-height:1.4}
.sk-line{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:5px 0;border-top:1px solid var(--line)}
.sk-line:first-child{border-top:none}
.sk-lab{font-weight:800;font-size:.82rem;flex:0 0 auto;min-width:96px}
.sk-carry{color:var(--muted);font-size:.76rem}
.sk-row{display:flex;flex-wrap:wrap;gap:7px;align-items:center}
.sk-chip{background:var(--card);border:1px solid var(--line);border-radius:999px;padding:3px 10px;font-size:.85rem}
.sk-chip b{color:var(--fairway-dark)}
body.dark .sk-chip b{color:var(--lime)}
.lb-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.lb-toggle{display:inline-flex;background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:2px}
.lb-toggle button{padding:5px 13px;border-radius:999px;font-weight:700;font-size:.82rem;background:transparent;color:var(--muted)}
.lb-toggle button.on{background:var(--fairway);color:#fff}
.lb-idx{font-size:.72rem;font-weight:700;color:var(--muted);background:var(--bg);border-radius:999px;padding:1px 7px;margin-left:4px}
.sc-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:12px}
.sc-table{border-collapse:collapse;width:100%;font-size:.9rem}
.sc-table th,.sc-table td{text-align:center;padding:6px 4px;border-bottom:1px solid var(--line)}
.sc-table .sc-h{width:58px;font-weight:800;color:var(--muted);position:sticky;left:0;background:var(--card);text-align:left;padding-left:10px}
.sc-parlab{display:block;font-size:.62rem;font-weight:600;color:var(--muted);opacity:.8}
.sc-hcplab{display:block;font-size:.6rem;font-weight:600;color:var(--sky);opacity:.85}
.sc-td{position:relative}
.sc-dot{position:absolute;top:1px;right:3px;font-size:.55rem;line-height:1;color:var(--flag);font-weight:800;pointer-events:none}
.sc-phh{display:block;font-size:.58rem;font-weight:700;color:var(--muted)}
.sc-netrow .sc-tot{color:var(--fairway-dark)}
body.dark .sc-netrow .sc-tot{color:var(--lime)}
/* score vs par coloring */
.sc-eagle{background:#ffe08a !important;color:#7a5a00 !important;border-radius:6px}
.sc-birdie{color:#c0392b !important;font-weight:800}
.sc-parv{color:var(--ink)}
.sc-bogey{color:#5e7466}
.sc-dbogey{color:#3a567a}
.sc-cell.sc-birdie{border-color:#e0918a}
.sc-cell.sc-eagle{border-color:#e0b94a}
body.dark .sc-eagle{background:#3a3320 !important;color:#ffd23f !important}
body.dark .sc-birdie{color:#ff8a7a !important}
.sc-table thead th{background:var(--card);font-weight:800}
.sc-ph{min-width:52px}
.sc-cell{width:42px;height:40px;text-align:center;border:1.5px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);font-size:.95rem;font-weight:700;-moz-appearance:textfield}
.sc-cell::-webkit-outer-spin-button,.sc-cell::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.sc-cell:focus{outline:none;border-color:var(--fairway)}
.sc-ro{display:inline-grid;place-items:center;width:34px;height:34px;border:1.5px solid transparent;border-radius:8px;color:var(--ink);font-weight:700}
/* standard scorecard notation, by GROSS vs par */
.sc-circle,.sc-cell.sc-circle{border-radius:50%;border:2px solid var(--flag)}
.sc-dcircle,.sc-cell.sc-dcircle{border-radius:50%;border:2px solid var(--flag);outline:2px solid var(--flag);outline-offset:1px}
.sc-square,.sc-cell.sc-square{border-radius:3px;border:2px solid #555}
.sc-dsquare,.sc-cell.sc-dsquare{border-radius:3px;border:2px solid #555;outline:2px solid #555;outline-offset:1px}
body.dark .sc-square,body.dark .sc-dsquare{border-color:#9aa}
body.dark .sc-dsquare{outline-color:#9aa}
.sc-pips{position:absolute;top:0;right:3px;font-size:.8rem;line-height:.7;letter-spacing:-1px;color:var(--flag);pointer-events:none;max-width:26px;overflow:hidden}
.sc-net{position:absolute;bottom:0;right:3px;font-size:.72rem;line-height:1;font-weight:800;color:var(--fairway-dark);pointer-events:none}
body.dark .sc-net{color:var(--lime)}
.sc-sub td{font-weight:800;background:var(--bg)}
.sc-sub .sc-h{background:var(--bg)}
.sc-tot{color:var(--fairway-dark)}
body.dark .sc-cell{background:#11201a;color:var(--ink);border-color:var(--line)}
body.dark .sc-tot{color:var(--lime)}
.up-row{display:flex;align-items:center;gap:11px;width:100%;text-align:left;background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:8px}
.up-when{flex:0 0 auto;width:70px}
.up-when .up-d{font-weight:800;font-size:.9rem}
.up-when .up-sub{color:var(--muted);font-size:.72rem}
.up-main{flex:1;min-width:0}
.up-course{font-weight:700;font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.up-meta{color:var(--muted);font-size:.76rem;margin-top:1px}
.up-grp{font-weight:700;color:var(--fairway-dark)}
.up-grp.other{background:var(--sun);color:#5a4500;border-radius:999px;padding:1px 8px}
.up-go{flex:0 0 auto;color:var(--muted);font-size:1.3rem;font-weight:800}
.up-more{display:block;width:100%;background:transparent;border:1px solid var(--line);border-radius:12px;padding:9px;color:var(--fairway-dark);font-weight:700;font-size:.85rem;cursor:pointer;margin-bottom:8px}
body.dark .up-grp,body.dark .up-more{color:var(--lime)}
.tee-select{flex:1 1 auto;min-width:0;padding:0 8px;border:1.5px solid var(--line);border-radius:11px;background:var(--paper);color:var(--ink);font-size:.85rem}
body.dark .tee-select{background:#11201a;color:var(--ink);border-color:var(--line);color-scheme:dark}
.recap .stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(78px,1fr));gap:9px;margin-top:4px}
.stat-tile{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:10px 8px;text-align:center}
.stat-val{font-size:1.35rem;font-weight:800;color:var(--fairway-dark);line-height:1.1}
.stat-lab{font-size:.7rem;color:var(--muted);margin-top:3px}
body.dark .stat-val{color:var(--lime)}
.recap-lines{margin-top:10px;font-size:.9rem;line-height:1.7}
.ds-summary{cursor:pointer;font-weight:800;color:var(--fairway-dark);padding:2px 0;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:8px}
.ds-summary::-webkit-details-marker{display:none}
.ds-summary::after{content:"▾";font-size:.9rem;opacity:.65;transition:transform .15s ease;flex:0 0 auto}
details[open] > .ds-summary::after{transform:rotate(180deg)}
body.dark .ds-summary{color:var(--lime)}
.dd-badge{display:inline-block;min-width:20px;text-align:center;margin-left:8px;padding:1px 7px;border-radius:999px;background:var(--fairway);color:#fff;font-size:.78rem;font-weight:800;vertical-align:middle}
.lfg-dd .lfg-body{margin-top:8px}
.lfg-dd .lfg-card:first-of-type{margin-top:12px}
#mr-detail[open] .ds-summary{margin-bottom:10px}
.ds-filters{display:flex;gap:8px;margin-bottom:6px}
.ds-filters select{flex:1;min-width:0;padding:9px 10px;border:1.5px solid var(--line);border-radius:11px;background:#fbfdfb;font-weight:600}
body.dark .ds-filters select{background:var(--card);color:var(--ink)}
/* help guide sections + scoring list */
.help-body{padding:4px 2px 10px;font-size:.92rem;line-height:1.5;color:var(--ink)}
.help-ul{margin:0;padding-left:18px}
.help-ul li{margin-bottom:7px;line-height:1.45}
/* quick-start tour */
.qs{text-align:center;padding:6px 2px}
.qs-emoji{font-size:3rem;line-height:1;margin:6px 0 10px}
.qs-dots{display:flex;justify-content:center;gap:7px;margin:10px 0 4px}
.qs-dot{width:8px;height:8px;border-radius:50%;background:var(--line)}
.qs-dot.on{background:var(--fairway)}
.wn-list{list-style:none;padding:0;margin:6px 0 16px}
.wn-list li{padding:8px 0;border-bottom:1px solid var(--line);font-size:.92rem;line-height:1.4}
.wn-list li:last-child{border-bottom:none}
.joinlink-row{display:flex;gap:8px;align-items:center}
.joinlink-row input{flex:1;min-width:0;padding:10px 12px;border:1.5px solid var(--line);border-radius:11px;background:var(--paper);color:var(--ink);font-size:.82rem}
.qr-box{display:flex;justify-content:center;padding:14px;margin-top:10px;background:#fff;border:1px solid var(--line);border-radius:14px}
.qr-box img{image-rendering:pixelated;border-radius:6px}
.mem-actions{display:flex;flex-direction:column;gap:5px;flex:0 0 auto}
.mem-actions .mini-btn{width:auto;padding:7px 11px;font-size:.78rem;white-space:nowrap}
.inv-row .st{font-size:.74rem;font-weight:800;padding:3px 9px;border-radius:999px}
.st-invited{background:var(--sun);color:#5a4500}
.st-joined{background:var(--lime);color:#123a1f}
.st-revoked{background:#eee;color:#999}
