/* The Book. Kept out of trip-theme.css because the guides landing page and the
   three course readers inline their own styles and never link the theme sheet —
   they need these rules too, and they must not inherit the rest. */
/* ---------------------------------------------------------------------------
   The Book: three-putts and four-putts.
   Three states carry the meaning. Amber solid is a recorded three-putt, red
   solid is a signature, and an unwitnessed call is dashed and drained of colour
   because it is not in the book yet. Colour says which tier, fill says whether
   it counts.
   --------------------------------------------------------------------------- */
.site-nav{grid-template-columns:repeat(4,1fr)}
@media(max-width:420px){.site-nav a{font-size:11px;letter-spacing:.04em}}

/* The callout bar sits under the Today strip, never replacing it: the strip is
   how a player reaches the guide and the scorecard mid-round. */

/* The Book's own accent: fired clay, a red that belongs to the sand-and-clay
   family rather than sitting on top of it. Deeper and browner than the salmon
   the site already uses for a double bogey or a failed save, so the two read as
   relatives rather than the same thing, and far enough off Scarecrow's rust
   (dE 19) that a signature never blurs into a course rail beside it. */
:root{
  --book:#cc6a63;
  --book-ink:#1a0f0d;
  --book-13:rgba(204,106,99,.14);
  --book-16:rgba(204,106,99,.18);
  --book-42:rgba(204,106,99,.44);
  --book-50:rgba(204,106,99,.52);
}
html[data-theme=day]{
  --book:#96453a;
  --book-ink:#fff;
  --book-13:rgba(150,69,58,.10);
  --book-16:rgba(150,69,58,.13);
  --book-42:rgba(150,69,58,.36);
  --book-50:rgba(150,69,58,.44);
}
.putt-bar{align-items:center;background:rgba(28,28,25,.96);border:1px solid var(--line);border-left:4px solid var(--course,rgba(216,199,165,.3));border-radius:10px;display:flex;flex-wrap:wrap;gap:10px 18px;justify-content:space-between;margin:10px auto 0;max-width:820px;padding:13px 18px}
.putt-bar[hidden]{display:none}
.putt-text{display:flex;flex-direction:column;gap:3px;min-width:0}
.putt-label{font:700 11px/1.2 'Source Sans 3',sans-serif;letter-spacing:.1em;text-transform:uppercase}
.putt-line{color:var(--text);font:700 16px/1.25 'Source Sans 3',sans-serif}
.putt-sub{color:var(--muted);font:400 12px/1.4 'Source Sans 3',sans-serif}
.putt-actions{display:flex;flex-wrap:wrap;gap:8px}
.putt-bar.quiet{border-left-color:rgba(216,199,165,.3)}
.putt-bar.quiet .putt-label{color:rgba(216,199,165,.45)}
.putt-bar.three{border-left-color:#e0b35a}
.putt-bar.three .putt-label{color:#e0b35a}
.putt-who3{color:#e0b35a}
.putt-bar.owed{border-color:rgba(216,199,165,.3);border-left-style:dashed}
.putt-bar.owed .putt-label{color:rgba(216,199,165,.45)}
.putt-bar.owed .putt-line{color:var(--muted)}
.putt-bar.signed{background:linear-gradient(180deg,var(--book-13),rgba(28,28,25,.96) 62%);border-color:var(--book-50);border-left-color:var(--book)}
.putt-bar.signed .putt-label{color:var(--book)}
.putt-bar.signed .putt-line{font-size:18px}
.putt-who{color:var(--book)}
.putt-btn{align-items:center;background:rgba(19,20,17,.72);border:1px solid rgba(216,199,165,.45);border-radius:6px;color:var(--stone);cursor:pointer;display:inline-flex;font:600 12px/1.2 'Source Sans 3',sans-serif;justify-content:center;letter-spacing:.06em;min-height:40px;padding:0 14px;text-decoration:none;text-transform:uppercase;white-space:nowrap}
.putt-btn:hover,.putt-btn:focus-visible{border-color:var(--stone);color:var(--text);outline:2px solid var(--stone);outline-offset:2px}
.putt-btn.primary{background:rgba(217,199,165,.78);border-color:rgba(217,199,165,.78);color:#141512}
.putt-btn.alarm{background:var(--book);border-color:var(--book);color:var(--book-ink)}
.putt-btn.amber{background:#e0b35a;border-color:#e0b35a;color:#1a1408}
@media(max-width:680px){.putt-bar{padding:12px 14px}.putt-line{font-size:15px}.putt-actions{width:100%}.putt-btn{flex:1 1 0}}

/* The record sheet. */
.putt-sheet-backdrop{align-items:flex-end;background:rgba(8,9,7,.72);display:flex;inset:0;justify-content:center;padding:16px;position:fixed;z-index:40}
.putt-sheet{background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:0 24px 60px rgba(0,0,0,.5);display:flex;flex-direction:column;gap:14px;max-height:92vh;max-width:420px;overflow-y:auto;padding:18px 16px;width:100%}
@media(min-width:680px){.putt-sheet-backdrop{align-items:center}}
.putt-sheet-head{align-items:center;display:flex;justify-content:space-between}
.putt-sheet-head b{color:var(--text);font:700 16px/1.2 'Source Sans 3',sans-serif}
.putt-close{background:transparent;border:0;color:var(--stone);cursor:pointer;font-size:24px;line-height:1;min-height:44px;min-width:44px;padding:0}
.putt-field{display:flex;flex-direction:column;gap:8px}
.putt-field>span{color:var(--stone);font:700 10px/1.2 'Source Sans 3',sans-serif;letter-spacing:.11em;text-transform:uppercase}
.putt-chips{display:grid;gap:6px;grid-template-columns:repeat(auto-fit,minmax(66px,1fr))}
.putt-chip{background:rgba(19,20,17,.72);border:1px solid var(--line);border-radius:6px;color:var(--stone);cursor:pointer;font:600 12px/1.15 'Source Sans 3',sans-serif;min-height:46px;overflow:hidden;padding:6px 3px;text-overflow:ellipsis}
.putt-chip.on{background:var(--book-16);border-color:var(--book);color:var(--text)}
.putt-chip.self{border-style:dashed}
.putt-chip.self.on{border-style:solid}
.putt-seg{display:grid;gap:6px;grid-template-columns:1fr 1fr}
.putt-seg button{align-items:center;background:rgba(19,20,17,.72);border:1px solid var(--line);border-radius:6px;color:var(--stone);cursor:pointer;display:flex;flex-direction:column;font:700 14px/1 'Source Sans 3',sans-serif;gap:3px;justify-content:center;min-height:52px}
.putt-seg button small{color:rgba(216,199,165,.45);font-size:9px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.putt-seg button.on-amber{background:#e0b35a;border-color:#e0b35a;color:#1a1408}
.putt-seg button.on-amber small{color:rgba(26,20,8,.72)}
.putt-seg button.on-book{background:var(--book);border-color:var(--book);color:var(--book-ink)}
.putt-seg button.on-book small{color:rgba(26,15,13,.72)}
.putt-stepper{align-items:center;display:flex;gap:8px}
.putt-stepper button{background:rgba(19,20,17,.72);border:1px solid var(--line);border-radius:6px;color:var(--stone);cursor:pointer;font:600 18px/1 'Source Sans 3',sans-serif;height:46px;width:46px}
.putt-val{background:rgba(19,20,17,.9);border:1px solid var(--line);border-radius:6px;color:var(--text);flex:1;font:700 18px/46px 'Source Sans 3',sans-serif;height:46px;text-align:center}
.putt-hint{color:rgba(216,199,165,.45);font-size:11px;line-height:1.3;width:86px}
.putt-submit{background:rgba(217,199,165,.78);border:0;border-radius:6px;color:#141512;cursor:pointer;font:700 13px/1.2 'Source Sans 3',sans-serif;min-height:48px;padding:0 12px}
.putt-submit.alarm{background:var(--book);color:var(--book-ink)}
.putt-submit.amber{background:#e0b35a;color:#1a1408}
.putt-submit[disabled]{background:rgba(19,20,17,.72);border:1px solid var(--line);color:rgba(216,199,165,.45);cursor:default}
.putt-note{color:var(--muted);font:400 12px/1.45 'Source Sans 3',sans-serif;margin:0}

/* The book itself: a recessed plate, deliberately a different material from the
   raised strip above it, carrying the real title of the gag gift. */
.book-plate{background:#0e0f0b;border:1px solid var(--line);border-radius:10px;box-shadow:inset 0 2px 14px rgba(0,0,0,.6);display:flex;flex-direction:column;overflow:hidden}
.book-mast{align-items:flex-end;border-bottom:2px solid var(--line);display:flex;gap:12px;justify-content:space-between;padding:18px 16px 13px}
.book-wordmark{display:flex;flex-direction:column;gap:4px;min-width:0}
.book-wordmark span{color:rgba(216,199,165,.45);font:700 9px/1 'Source Sans 3',sans-serif;letter-spacing:.16em;text-transform:uppercase}
.book-wordmark b{color:var(--text);font:700 20px/1.12 'Source Sans 3',sans-serif;letter-spacing:-.01em;max-width:13ch}
.book-tally{color:rgba(216,199,165,.45);font:600 11px/1.4 'Source Sans 3',sans-serif;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.book-tally b{color:var(--book);font-size:15px;font-weight:700}
.book-body-pane{display:flex;flex-direction:column;gap:14px;padding:15px 14px}
.book-keeper{align-items:center;background:linear-gradient(180deg,var(--book-16),rgba(20,21,18,.6));border:1px solid var(--book-42);border-radius:8px;display:flex;gap:14px;padding:13px 14px}
.book-keeper-num{color:var(--book);font:700 38px/1 'Source Sans 3',sans-serif;font-variant-numeric:tabular-nums}
.book-keeper-txt{display:flex;flex-direction:column;gap:2px;min-width:0}
.book-keeper-txt span{color:var(--book);font:700 10px/1.2 'Source Sans 3',sans-serif;letter-spacing:.11em;text-transform:uppercase}
.book-keeper-txt b{color:var(--text);font:700 17px/1.15 'Source Sans 3',sans-serif}
.book-keeper-txt small{color:var(--muted);font-size:11px;line-height:1.4}
.book-table{border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums;width:100%}
.book-table th,.book-table td{border-bottom:1px solid rgba(216,199,165,.14);font:600 13px/1.2 'Source Sans 3',sans-serif;padding:10px 5px;text-align:center}
.book-table thead th{color:var(--text);font-size:10px;letter-spacing:.09em;text-transform:uppercase}
.book-table th:first-child,.book-table td:first-child{text-align:left;width:34%}
.book-table td.who{color:var(--text);font-weight:700}
.book-table td.signed{color:var(--book);font-weight:700}
.book-table td.three{color:#e0b35a}
.book-table td.none{color:rgba(216,199,165,.3)}
.book-table td.clean{color:var(--green);font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase}
.book-table td.owed{color:rgba(216,199,165,.45);font-size:10px;letter-spacing:.05em;text-transform:uppercase}
.book-table tbody tr:last-child td{border-bottom:0}
.book-record-head{align-items:center;display:flex;justify-content:space-between;padding:2px 2px 0}
.book-sect{color:var(--text);font:700 11px/1.2 'Source Sans 3',sans-serif;letter-spacing:.13em;text-transform:uppercase}
.book-hint{color:rgba(216,199,165,.3);font:600 10px/1 'Source Sans 3',sans-serif;letter-spacing:.06em;text-transform:uppercase}
/* Grouped by round with a full rule between them, so scrolling back through the
   trip has structure rather than being one long list. */
.book-scroll{background:rgba(8,9,7,.5);border:1px solid rgba(216,199,165,.14);border-radius:8px;display:flex;flex-direction:column;max-height:360px;overflow-y:auto;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch}
.book-group{display:flex;flex-direction:column}
.book-group+.book-group{border-top:1px solid var(--line)}
.book-round{align-items:center;background:rgba(20,21,18,.97);border-bottom:1px solid rgba(216,199,165,.14);border-left:4px solid var(--course,var(--line));display:flex;gap:8px;justify-content:space-between;padding:9px 11px;position:sticky;top:0;z-index:2}
.book-round-t{display:flex;flex-direction:column;gap:1px;min-width:0}
.book-round-t b{color:var(--text);font:700 12px/1.2 'Source Sans 3',sans-serif;letter-spacing:.04em;text-transform:uppercase}
.book-round-t span{color:rgba(216,199,165,.45);font:400 10px/1.2 'Source Sans 3',sans-serif}
.book-stat{border-radius:999px;flex:none;font:700 9px/1 'Source Sans 3',sans-serif;letter-spacing:.1em;padding:5px 8px;text-transform:uppercase}
.book-stat.live{background:var(--green);color:#0f1a0d}
.book-stat.final{border:1px solid rgba(216,199,165,.3);color:rgba(216,199,165,.45)}
.book-entry{border-bottom:1px solid rgba(216,199,165,.14);border-left:4px solid var(--course,var(--line));display:flex;gap:10px;padding:10px 11px}
.book-group .book-entry:last-child{border-bottom:0}
.book-tag{align-items:center;border-radius:6px;display:flex;flex:none;flex-direction:column;font:700 15px/1 'Source Sans 3',sans-serif;gap:2px;height:38px;justify-content:center;width:38px}
.book-tag small{font-size:7px;letter-spacing:.05em;text-transform:uppercase}
.book-entry.signed .book-tag{background:var(--book-16);border:1px solid var(--book-50);color:var(--book)}
.book-entry.three .book-tag{background:rgba(224,179,90,.14);border:1px solid rgba(224,179,90,.55);color:#e0b35a}
.book-entry.owed .book-tag{border:1px dashed rgba(216,199,165,.3);color:rgba(216,199,165,.45)}
.book-body{display:flex;flex-direction:column;gap:2px;min-width:0}
.book-body b{color:var(--text);font:700 13px/1.3 'Source Sans 3',sans-serif}
.book-entry.owed .book-body b{color:var(--muted)}
.book-body>span{color:var(--muted);font:400 11px/1.35 'Source Sans 3',sans-serif}
.book-body em{color:rgba(216,199,165,.3);font-size:10px;font-style:normal;letter-spacing:.03em}
.book-witness{align-self:flex-start;background:rgba(217,199,165,.78);border:0;border-radius:5px;color:#141512;cursor:pointer;font:700 10px/1 'Source Sans 3',sans-serif;letter-spacing:.08em;margin-top:6px;min-height:34px;padding:0 11px;text-transform:uppercase}
.book-witness[disabled]{opacity:.5}
.book-empty{align-items:center;border:1px dashed var(--line);border-radius:8px;display:flex;flex-direction:column;gap:6px;margin:0;padding:30px 18px;text-align:center}
.book-empty b{color:var(--stone);font:700 15px/1.2 'Source Sans 3',sans-serif}
.book-empty span{color:var(--muted);font-size:12px;line-height:1.45;max-width:34ch}
.book-key{margin:0}
@media(max-width:680px){.book-wordmark b{font-size:17px}.book-keeper-num{font-size:32px}.book-scroll{max-height:300px}}

/* Daylight: the plate keeps its recessed feel against the light ground. */
/* Recessed has to stay recessed in daylight: the plate sits a shade below the
   page rather than a shade above it, so it still reads as sunk into the panel
   the way it does at night. */
html[data-theme=day] .book-plate{background:rgba(232,224,208,.72);box-shadow:inset 0 2px 12px rgba(40,30,10,.14)}
html[data-theme=day] .book-scroll{background:rgba(226,217,199,.6)}
html[data-theme=day] .book-round{background:rgba(236,229,215,.97)}
html[data-theme=day] .putt-bar,html[data-theme=day] .putt-sheet{background:var(--panel);box-shadow:0 10px 30px rgba(40,30,10,.12)}
html[data-theme=day] .putt-btn,html[data-theme=day] .putt-chip,html[data-theme=day] .putt-seg button,html[data-theme=day] .putt-stepper button{background:var(--day-surface)}
html[data-theme=day] .putt-btn.primary,html[data-theme=day] .book-witness{background:var(--day-active);border-color:var(--day-active);color:#141512}
html[data-theme=day] .putt-bar.signed .putt-label,html[data-theme=day] .putt-who,html[data-theme=day] .book-tally b,html[data-theme=day] .book-keeper-txt span,html[data-theme=day] .book-keeper-num,html[data-theme=day] .book-table td.signed{color:var(--book)}
html[data-theme=day] .putt-bar.three .putt-label,html[data-theme=day] .putt-who3,html[data-theme=day] .book-table td.three{color:var(--day-amber)}

/* Entries the phone is still holding, or gave up on: amber, and ahead of
   everything else, because a player must know their entry has not landed. */
.putt-bar.waiting{border-left-color:#e0b35a;border-left-style:dashed}
.putt-bar.waiting .putt-label{color:#e0b35a}

/* Sortable standings: the header is the control, so it looks like one. */
.book-table th.book-sort{padding:0}
.book-table th.book-sort button{background:transparent;border:0;color:inherit;cursor:pointer;font:inherit;letter-spacing:inherit;min-height:38px;padding:10px 5px;text-transform:inherit;white-space:nowrap;width:100%}
.book-table th.book-sort i{color:rgba(216,199,165,.45);font-size:8px;font-style:normal;margin-left:4px}
.book-table th.book-sort.on button{color:var(--book)}
.book-table th.book-sort.on i{color:var(--book)}
.book-table th.book-sort button:focus-visible{outline:2px solid var(--stone);outline-offset:-2px}
html[data-theme=day] .book-table th.book-sort.on button,html[data-theme=day] .book-table th.book-sort.on i{color:var(--book)}
html[data-theme=day] .putt-bar.waiting .putt-label{color:var(--day-amber)}

/* The Book in the nav.
   Resting state stays in the shared stone language, because a nav that breaks
   its own system for one item reads as a bug rather than a joke. What changes
   is the active state — red, matching a signature — and a live dot when there
   is actually something to look at. Attention gets earned rather than painted
   on permanently. */
.site-nav a.nav-book[aria-current=page]{background:var(--book);border-color:var(--book);color:var(--book-ink)}
.site-nav a.nav-book{position:relative}
.site-nav a.nav-book.live::after{
  animation:nav-pulse 2.4s ease-in-out infinite;background:var(--book);border-radius:50%;
  content:"";height:6px;position:absolute;right:7px;top:7px;width:6px;
}
.site-nav a.nav-book.live[aria-current=page]::after{background:var(--book-ink)}
.site-nav a.nav-book.owed::after{background:#e0b35a}
@keyframes nav-pulse{0%,100%{opacity:1}50%{opacity:.25}}
@media(prefers-reduced-motion:reduce){.site-nav a.nav-book.live::after{animation:none}}
html[data-theme=day] .site-nav a.nav-book[aria-current=page]{background:var(--book);border-color:var(--book);color:#fff}
html[data-theme=day] .site-nav a.nav-book.live::after{background:var(--book)}
html[data-theme=day] .site-nav a.nav-book.owed::after{background:var(--day-amber)}
