:root { color-scheme: light; --ink:#112f46; --muted:#596b75; --cream:#fffdf9; --paper:#f4f0e7; --red:#b72e3d; --line:#d9dfda; --member-avatar-icon-background:#f7fbfc; --member-avatar-icon-color:#17364a; --text-min:.88rem; --text-compact:var(--text-min); --text-secondary:var(--text-min); --text-body:1rem; --text-section:1.125rem; }
.member-feedback-fields,.member-feedback-results{display:grid;gap:var(--pane-padding,14px);min-width:0;}
.member-feedback-fields,.member-feedback-result{padding:var(--pane-padding,14px);border-radius:var(--surface-radius,10px);box-shadow:var(--surface-inset-borderless);background:var(--cream);}
.member-feedback-fields label{display:grid;gap:8px;min-width:0;}
.member-feedback-fields :is(textarea,select){width:100%;min-width:0;max-width:100%;box-sizing:border-box;font:inherit;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:10px;}
.member-feedback-fields textarea{resize:vertical;min-height:5em;}
.member-feedback-count,.member-feedback-result small{color:var(--muted);}
.member-feedback-result p{white-space:pre-wrap;overflow-wrap:anywhere;}
.member-feedback-dialog .rating-dialog-heading-row h2{margin:0;padding:0;min-width:0;font-size:1.25rem;line-height:1.25;}
.member-feedback-launch>.edit-stops{width:100%;}
body.is-night { --member-avatar-icon-background:#071521; --member-avatar-icon-color:#f7fbfc; }
/* Natural artwork uses pale material colours; retain its dark backing in Day lists. */
body:not(.is-night) :is(.member-roster-avatar-button,.rating-member-avatar)[data-avatar-colour="natural"]:not(:has(img)) {background:#17364a;}
* { box-sizing:border-box; } html,body { overscroll-behavior-y:none; } body { margin:0; background:var(--paper); color:var(--ink); font-family:Inter, ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; } button { font:inherit; }
.map-stage { min-height:max(620px,100svh); position:relative; overflow:hidden; background:#dce8e3; }.map { position:absolute; inset:0; }.map canvas { transform:translateZ(0); }.masthead { position:absolute; z-index:2; top:22px; left:clamp(18px,3vw,46px); right:clamp(18px,3vw,46px); display:flex; justify-content:space-between; align-items:center; gap:16px; pointer-events:none; }.brand,.planner-button,.stop-card,.route-summary { box-shadow:0px 38px 25px #09203326; }.brand { pointer-events:auto; display:inline-flex; align-items:center; gap:7px; background:var(--ink); color:white; text-decoration:none; text-transform:uppercase; letter-spacing:.08em; font-size:max(var(--text-min),.8rem); font-weight:800; padding:12px 15px; border-radius:9px; }.brand svg { width:16px; height:16px; }.brand span { color:#b7d6cd; }.planner-button { pointer-events:auto; border:0; border-radius:9px; background:white; color:var(--ink); font-weight:800; padding:10px 13px; cursor:not-allowed; }.planner-button svg { width:16px; height:16px; vertical-align:-3px; margin-right:4px; }.planner-button small { display:block; color:var(--muted); font-size:max(var(--text-min),.68rem); font-weight:700; margin-top:2px; }.map-status { position:absolute; z-index:2; top:78px; right:24px; background:#fffdf9e6; border-radius:8px; color:var(--muted); max-width:320px; padding:8px 11px; font-size:max(var(--text-min),.82rem); }.map-status:empty { display:none; }
.map-stage.is-screen-shaking { animation:screen-shake .5s linear; }@keyframes screen-shake { 0%,100% { translate:0 0; } 20% { translate:-5px 2px; } 40% { translate:5px -2px; } 60% { translate:-4px -1px; } 80% { translate:4px 1px; } }
.member-map-marker { position:relative; display:grid; place-items:center; width:49.4px; height:49.4px; padding:0; border:2px solid white; border-radius:50%; background:#17364a; color:white; box-shadow:0px 15px 10px #09203380; cursor:pointer; transform-origin:50% 50%; animation:member-trot var(--member-sway-duration, 1.8s) ease-in-out var(--member-sway-delay, 0s) infinite var(--member-sway-direction, normal); }.member-map-marker:focus-visible { outline:3px solid #ffd166; outline-offset:3px; }.member-map-marker.is-selected { outline:4px solid #f4b942; transform:scale(1.13); }.member-map-marker.is-stale { animation:none; }.member-map-marker.is-stagger { animation:member-stagger var(--member-sway-duration, 2.4s) ease-in-out var(--member-sway-delay, 0s) infinite var(--member-sway-direction, normal); }.member-map-marker.is-flickering { animation:member-flicker 1.2s steps(2,end) infinite; }.member-map-marker.is-title-flocking { animation:member-title-flock .55s ease-out both; }.member-map-avatar { width:100%; height:100%; border-radius:50%; object-fit:cover; pointer-events:none; }.member-map-label { position:absolute; bottom:calc(100% + 7px); left:50%; translate:-50% 0; max-width:150px; padding:3px 7px; border-radius:6px; background:#112f46e8; color:white; font-size:max(var(--text-min),.72rem); font-weight:800; white-space:nowrap; pointer-events:none; }.member-map-selfie { position:absolute; bottom:calc(100% + 36px); left:50%; translate:-50% 0; width:min(145.6px,calc(100vw - 20px),calc(100dvh - 20px)); height:min(145.6px,calc(100vw - 20px),calc(100dvh - 20px)); object-fit:cover; border:2px solid white; border-radius:10px; box-shadow:0px 24px 16px #09203399; pointer-events:none; transition:opacity 1s ease; }.member-map-selfie.is-fading { opacity:0; }.member-pace-pint { display:grid; place-items:center; width:32px; height:32px; border:2px solid white; border-radius:50%; background:#f4b942; color:#112f46; box-shadow:0px 14px 9px #09203366; animation:pace-pint-wander 2.2s ease-in-out infinite; pointer-events:none; }.member-pace-pint svg { width:19px; height:19px; }@keyframes member-trot { 50% { rotate:calc(-3deg * var(--member-sway-sign, 1)); scale:calc(1 + .02 * var(--member-sway-x, 1)) calc(1 + .02 * var(--member-sway-y, 1)); } }@keyframes member-stagger { 25% { rotate:calc(5deg * var(--member-sway-sign, 1)); scale:calc(1 + .02 * var(--member-sway-x, 1)) calc(1 + .02 * var(--member-sway-y, 1)); } 50% { rotate:calc(-8deg * var(--member-sway-sign, 1)); scale:calc(1 - .02 * var(--member-sway-x, 1)) calc(1 - .02 * var(--member-sway-y, 1)); } 72% { rotate:calc(12deg * var(--member-sway-sign, 1)); scale:calc(1 + .01 * var(--member-sway-x, 1)) calc(1 + .01 * var(--member-sway-y, 1)); } }@keyframes member-flicker { 50% { opacity:.45; } }@keyframes member-title-flock { to { translate:0 -42px; opacity:.2; } }@keyframes pace-pint-wander { 33% { translate:3px -3px; } 66% { translate:-3px -1px; } }@media (prefers-reduced-motion: reduce) { .member-map-marker,.member-map-marker.is-flickering,.member-map-marker.is-stagger,.member-pace-pint { animation:none; } .member-map-selfie { transition:none; } }
.masthead-effect { position:absolute; z-index:3; left:var(--effect-x); top:var(--effect-y); width:16px; height:16px; border-radius:50%; pointer-events:none; animation:masthead-effect 1.4s cubic-bezier(.16,.8,.28,1) forwards; }.masthead-effect--bubble { border:2px solid #fff9e9; background:#a8d9d0aa; box-shadow:0 0 0 3px #ffffff55; }.masthead-effect--confetti { width:9px; height:16px; border-radius:2px; background:#f4b942; transform:rotate(22deg); }.masthead-effect--route-dash { width:24px; height:6px; border-radius:4px; background:var(--red); transform:rotate(-18deg); }.masthead-effect--foam { width:20px; height:20px; background:#fff7ed; box-shadow:11px 2px 0 -2px #fff7ed,-7px 8px 0 -3px #fff7ed; }.brand svg.is-effect-cooling { animation:beer-cooldown 3s cubic-bezier(.12,.72,.2,1); }@keyframes masthead-effect { 0% { opacity:1; scale:1; } 70% { opacity:1; } 100% { opacity:0; scale:.7; translate:var(--effect-travel-x) var(--effect-travel-y); } }@keyframes beer-cooldown { 0% { transform:rotate(0); } 38% { transform:rotate(1080deg); } 100% { transform:rotate(1260deg); } }
.stop-card { position:absolute; z-index:2; left:clamp(18px,4vw,58px); bottom:84px; width:min(390px,calc(100vw - 36px)); background:#fffdf9; border-radius:15px; padding:20px; }.eyebrow { color:var(--red); font-size:max(var(--text-min),.7rem); font-weight:850; letter-spacing:.12em; text-transform:uppercase; margin:0 0 6px; }.stop-card h2 { margin:0; letter-spacing:-.04em; font-size:clamp(1.5rem,2.5vw,2rem); }.address { display:flex; align-items:center; gap:8px; margin:8px 0 9px; color:var(--muted); font-size:.9rem; }.address svg { flex:0 0 auto; width:24px; height:24px; margin:0; }.timing { display:grid; grid-template-columns:1fr 1fr; gap:12px; border-top:1px solid var(--line); padding-top:12px; margin:0; }.timing dt { display:flex; align-items:center; gap:5px; color:var(--muted); font-size:max(var(--text-min),.75rem); }.timing dd { margin:2px 0 0; font-size:max(var(--text-min),.84rem); font-weight:750; }.card-navigation { display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:8px; margin:15px -20px -20px; padding:11px 12px; border-top:1px solid var(--line); color:var(--muted); font-size:max(var(--text-min),.78rem); font-weight:800; text-align:center; }.card-navigation button { display:flex; align-items:center; gap:4px; border:0; background:transparent; color:var(--ink); cursor:pointer; font-weight:850; padding:7px 8px; border-radius:6px; }.card-navigation button svg { width:18px; height:18px; }.card-navigation button:last-child { justify-content:flex-end; }.card-navigation button:first-child { justify-content:flex-start; }.route-summary { position:absolute; z-index:2; right:clamp(18px,4vw,58px); bottom:84px; display:flex; gap:11px; align-items:center; border-radius:10px; padding:12px 14px; background:var(--ink); color:white; font-size:max(var(--text-min),.79rem); }.route-summary span { display:inline-flex; align-items:center; gap:5px; }.route-summary svg { width:18px; height:18px; }.route-summary b { font-size:.96rem; }.route-summary span+span { border-left:1px solid #ffffff55; padding-left:11px; }
.map-marker,.rating-dialog .map-marker { display:grid; place-items:center; width:31px; height:31px; min-height:31px; border:3px solid white; border-radius:50%; padding:0; background:var(--red); color:white; font-size:max(var(--text-min),.7rem); font-weight:850; cursor:pointer; box-shadow:0px 12px 8px #102b3d75; }.map-marker.is-selected { outline:4px solid #f4b942; transform:scale(1.13); }.map-marker:focus-visible,.crawl-plan button:focus-visible { outline:3px solid #f4b942; outline-offset:3px; }.maplibregl-ctrl-attrib { font-size:max(var(--text-min),10px); }
.icon-button { display:grid; place-items:center; width:38px; height:38px; border:1px solid var(--line); border-radius:50%; background:white; color:var(--ink); cursor:pointer; }.icon-button[hidden] { display:none; }.icon-button svg { width:18px; }
.crawl-plan { position:fixed; z-index:4; left:0; right:0; bottom:0; max-height:calc(100vh - 24px); display:grid; grid-template-rows:54px minmax(0,1fr); background:#fffdf9; border-radius:20px 20px 0 0; box-shadow:0px 54px 36px #09203330; contain:paint; transform:translateY(calc(100% - 54px)); transition:transform var(--panel-snap-duration) var(--panel-snap-easing); }.crawl-plan.is-open { transform:translateY(0); }.crawl-plan-peek { display:grid; grid-template-columns:32px 1fr auto; align-items:center; gap:7px; width:100%; border:0; border-bottom:1px solid var(--line); border-radius:20px 20px 0 0; padding:8px clamp(18px,4vw,58px); background:#fffdf9; color:var(--ink); text-align:left; cursor:pointer; font-weight:850; }.crawl-plan-peek>svg { width:20px; height:13px; color:var(--red); transform:scaleX(1.65); transform-origin:center; transition:transform var(--panel-snap-duration) var(--panel-snap-easing); }.crawl-plan.is-open .crawl-plan-peek>svg { transform:scaleX(1.65) rotate(180deg); }.crawl-plan-peek small { color:var(--muted); font-size:max(var(--text-min),.73rem); }.crawl-plan-content { overflow:auto; scrollbar-width:none; padding:22px clamp(18px,8vw,130px) 30px; }.crawl-plan-content::-webkit-scrollbar { width:0; height:0; }.crawl-plan-header { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; max-width:1050px; margin:0 auto 20px; }.crawl-plan-header h1 { margin:0; font-size:clamp(1.65rem,4vw,3.1rem); line-height:.98; letter-spacing:-.055em; }.crawl-plan-header p:not(.eyebrow) { max-width:560px; margin:8px 0 0; color:var(--muted); line-height:1.45; }.crawl-plan-list { max-width:1050px; margin:0 auto; padding:0; list-style:none; border-top:1px solid var(--line); }.crawl-plan-list li { border-bottom:1px solid var(--line); transition:background .15s; }.crawl-plan-list li.is-selected { background:#fff6e9; box-shadow:inset 4px 0 var(--red); }.crawl-plan-row { display:grid; grid-template-columns:38px minmax(0,1fr) auto; gap:12px; align-items:center; padding:12px 8px; }.stop-number { width:31px; height:31px; display:grid; place-items:center; border-radius:50%; background:#e5ece8; color:var(--ink); font-size:max(var(--text-min),.72rem); font-weight:850; }.crawl-plan-stop { min-width:0; }.crawl-plan-stop b,.crawl-plan-stop small { display:block; }.crawl-plan-stop b { font-size:.93rem; }.crawl-plan-stop small { display:flex; align-items:center; gap:4px; margin-top:3px; color:var(--muted); font-size:max(var(--text-min),.76rem); }.crawl-plan-actions { display:flex; gap:7px; }.crawl-plan-action { display:grid; place-items:center; width:36px; height:36px; border:1px solid var(--line); border-radius:8px; background:white; color:var(--ink); cursor:pointer; }.crawl-plan-action svg { width:17px; }.map-jump-glyph { position:relative; display:grid; place-items:center; width:19px; height:22px; }.map-jump-glyph svg:last-child { width:18px; height:18px; margin-top:8px; }.map-jump-glyph svg:first-child { position:absolute; top:-3px; width:13px; height:8px; color:var(--red); transform:scaleX(1.55); }.photo-empty { display:flex; align-items:center; gap:8px; margin:0 8px 13px 58px; padding:10px 12px; border-radius:8px; background:#eef4f0; color:var(--muted); font-size:max(var(--text-min),.8rem); }.photo-empty svg { width:16px; flex:0 0 auto; }
@media (max-width:720px) { .map-stage { min-height:100svh; }.masthead { top:16px; }.brand { font-size:max(var(--text-min),.7rem); }.route-summary { left:18px; right:18px; bottom:54px; justify-content:space-between; }.stop-card { bottom:111px; padding:16px; }.map-status { left:18px; right:auto; top:72px; }.timing { grid-template-columns:1fr; gap:8px; }.crawl-plan-content { padding:20px 18px 28px; }.crawl-plan-header { margin-bottom:15px; }.crawl-plan-row { grid-template-columns:35px minmax(0,1fr) auto; gap:8px; }.crawl-plan-actions { gap:5px; }.photo-empty { margin-left:51px; } }
@media (max-height:500px) and (orientation:landscape) { .stop-card { display:none; } }
@media (prefers-reduced-motion: reduce) { .crawl-plan,.crawl-plan-peek>svg { transition:none; }.crawl-plan-list li { transition:none; }.masthead-effect,.brand svg.is-effect-cooling { animation:none; } }
.editor-status { max-width:1050px; min-height:1.2em; margin:0 auto 8px; color:var(--muted); font-size:max(var(--text-min),.78rem); }#editor-controls { max-width:1050px; display:flex; align-items:end; flex-wrap:wrap; gap:10px 12px; margin:0 auto 11px; }#editor-controls:empty { display:none; }.editor-actions { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }.edit-stops { display:inline-flex; align-items:center; gap:6px; margin:0; min-height:36px; border:1px solid var(--ink); border-radius:8px; padding:8px 11px; background:var(--ink); color:white; cursor:pointer; font-weight:800; }.edit-stops svg { width:15px; height:15px; }.crawl-plan-list li[draggable="true"] { cursor:grab; }.crawl-plan-list li.is-drop-before { box-shadow:inset 0 3px var(--red); }.crawl-plan-list li.is-drop-after { box-shadow:inset 0 -3px var(--red); }.drag-handle { width:16px; color:var(--muted); }.crawl-plan-row:has(.drag-handle) { grid-template-columns:18px 38px minmax(0,1fr) auto; }.editor-moves { display:flex; border-left:1px solid var(--line); margin-left:2px; }.editor-moves button { display:grid; place-items:center; width:25px; height:34px; border:0; background:transparent; color:var(--ink); cursor:pointer; }.editor-moves svg { width:14px; height:14px; }
.crawl-drop-top { height:0; border:0 !important; }.crawl-drop-top.is-drop-before { height:3px; background:var(--red); }
.crawl-plan-list.is-reordering { --drag-gap:#e4efea; }.crawl-plan-list li.is-sort-dragging .crawl-plan-row { position:relative; z-index:2; background:var(--cream); box-shadow:0px 27px 18px #09203333; transform:translateY(var(--sort-drag-y)); transition:none; }.crawl-plan-list li.is-sort-shift-up .crawl-plan-row,.crawl-plan-list li.is-sort-shift-down .crawl-plan-row { position:relative; z-index:1; background:var(--cream); transition:transform .18s cubic-bezier(.16,.8,.28,1); }.crawl-plan-list li.is-sort-shift-up .crawl-plan-row { transform:translateY(calc(-1 * var(--sort-gap-y))); }.crawl-plan-list li.is-sort-shift-down .crawl-plan-row { transform:translateY(var(--sort-gap-y)); }.crawl-plan-list li.is-sort-gap,.crawl-plan-list li.is-sort-origin { position:relative; background:var(--drag-gap); }.crawl-plan-list li.is-sort-origin::before { position:absolute; z-index:3; top:0; left:0; right:0; height:3px; background:var(--red); content:""; }
.crawl-plan-list.is-reordering { user-select:none; }.crawl-plan-list.is-editing { user-select:none; -webkit-user-select:none; }.crawl-plan-content:has(.crawl-plan-list.is-editing) { overflow-anchor:none; }
.crawl-plan-list.is-editing li { touch-action:pan-y; }.crawl-plan-list.is-editing .drag-handle { touch-action:none; }.stop-number--saving svg { width:70%; height:70%; animation:stop-number-saving-spin .8s linear infinite; }@keyframes stop-number-saving-spin { to { transform:rotate(360deg); } }
.crawl-plan-list.is-reordering .crawl-leg { display:none; }
.crawl-plan-list li.is-sort-dragging .crawl-plan-row { z-index:4; }
.timing-controls { display:flex; align-items:end; gap:8px; margin:0; }.timing-controls label { display:grid; gap:4px; color:var(--muted); font-size:max(var(--text-min),.84rem); font-weight:800; }.timing-controls input { width:108px; min-width:0; box-sizing:border-box; min-height:44px; border:1px solid var(--line); border-radius:7px; padding:8px 10px; background:var(--cream); color:var(--ink); font:inherit; font-weight:400; }.crawl-plan-description-editor { margin:8px 0 0; }.crawl-plan-description-editor .timing-controls { align-items:end; }.crawl-plan-description-editor .timing-controls label { font-size:max(var(--text-min),.84rem); }@media (max-width:480px) { #editor-controls { align-items:stretch; }.edit-stops { width:100%; justify-content:center; }.timing-controls { width:100%; }.timing-controls label { flex:1; }.timing-controls input { width:100%; } }
.number-input { display:flex; align-items:center; gap:7px; }.number-input input { width:78px; }.number-input span { color:var(--muted); font-size:max(var(--text-min),.8rem); font-weight:850; }.take-photo { display:flex; align-items:center; gap:6px; margin-top:9px; border:0; padding:0; background:transparent; color:var(--ink); cursor:pointer; font:inherit; font-weight:850; }.take-photo svg { width:17px; height:17px; }
.member-map-marker.is-reacting-confetti { animation:member-confetti-hit .16s ease-out; }.member-map-marker.is-fleeing { animation:member-flee .5s ease-out; }.member-map-marker.is-diving { animation:member-dive .85s ease-out; }.member-map-marker.is-hunkering { animation:member-hunker .7s ease-in-out; }.member-map-marker.is-balloon-jab { animation:member-jab .35s ease-out; }.member-map-umbrella { position:absolute; z-index:2; bottom:calc(100% + 10px); left:50%; color:#4cc9f0; rotate:-10deg; pointer-events:none; }.member-map-umbrella svg { width:25px; height:25px; }.member-map-score { position:absolute; left:calc(100% + 7px); bottom:calc(100% + 7px); color:#ffd166; font-size:max(var(--text-min),.8rem); font-weight:900; white-space:nowrap; animation:member-score .9s ease-out both; pointer-events:none; }@keyframes member-confetti-hit { 50% { translate:var(--reaction-x) var(--reaction-y); rotate:var(--reaction-angle); } }@keyframes member-flee { to { translate:var(--reaction-x) var(--reaction-y); rotate:var(--reaction-angle); } }@keyframes member-dive { 25% { translate:calc(var(--reaction-x) * .65) calc(var(--reaction-y) - 30px); rotate:calc(var(--reaction-angle) * .18); scale:1.12 .8; } 65% { translate:var(--reaction-x) var(--reaction-y); rotate:var(--reaction-angle); scale:.85 1.1; } 85% { translate:calc(var(--reaction-x) * .7) calc(var(--reaction-y) * .7); rotate:var(--reaction-angle); } 100% { translate:0 0; rotate:var(--reaction-angle); scale:1; } }@keyframes member-hunker { 50% { scale:1 .72; translate:0 6px; } }@keyframes member-jab { 50% { translate:var(--reaction-x) var(--reaction-y); } }@keyframes member-score { from { opacity:0; translate:-4px 3px; } 20%,75% { opacity:1; } to { opacity:0; translate:12px -4px; } }
.route-summary button { display:inline-flex; align-items:center; gap:5px; border:0; padding:0; background:transparent; color:inherit; cursor:pointer; font:inherit; }.route-summary button b,.route-summary span b { font-size:.96rem; }.route-summary button+button,.route-summary button+span { border-left:1px solid #ffffff55; padding-left:11px; }
.timing > div,.timing > button,.timing > a { position:relative; min-height:42px; padding-left:32px; }.timing > button { border:0; background:transparent; color:var(--ink); text-align:left; cursor:pointer; font:inherit; }.next-directions { color:var(--ink); text-decoration:none; }.next-directions:hover { text-decoration:underline; text-underline-offset:3px; }.timing dt svg { position:absolute; left:0; top:50%; width:24px; height:24px; margin:0; transform:translateY(-50%); }.timing dd { line-height:1.25; }.route-summary svg,.crawl-plan-action svg,.card-navigation svg { width:18px; height:18px; }
.crawl-leg { min-height:32px; margin:0 8px; padding:5px 0 5px 51px; border-bottom:0 !important; }.crawl-leg button { display:flex; align-items:center; gap:8px; border:0; padding:0; background:transparent; color:var(--muted); cursor:pointer; font:inherit; font-size:.88rem; font-weight:800; text-align:left; }.crawl-leg svg { width:18px; height:18px; color:var(--red); }.timing button.is-route-selected,.is-map-selection-highlight { animation:route-next-highlight 1.2s ease-out; border-radius:8px; }@keyframes route-next-highlight { 0%,35% { background:#ffd166; box-shadow:0 0 0 4px #ffd16688; } 100% { background:transparent; box-shadow:none; } }body.is-night .timing button.is-route-selected,body.is-night .is-map-selection-highlight { animation-name:route-next-highlight-night; }@keyframes route-next-highlight-night { 0%,35% { background:#32627f; box-shadow:0 0 0 4px #ffd166aa; } 100% { background:transparent; box-shadow:none; } }
.press-hold-help { position:fixed; z-index:12; max-width:min(260px,calc(100vw - 16px)); max-height:calc(100vh - 96px); overflow:auto; padding:7px 9px; border:1px solid var(--line); border-radius:7px; background:var(--cream); color:var(--ink); box-shadow:0px 24px 16px #09203335; font-size:max(var(--text-min),.75rem); font-weight:750; line-height:1.25; pointer-events:none; }
.masthead-effect { position:fixed; z-index:10; }
.masthead-effect { background:var(--effect-colour); animation-duration:1s; }.brand svg.is-effect-cooling { animation-duration:1s; }
.masthead-effect--balloons { display:flex; gap:8px; width:auto; height:auto; background:transparent; animation:balloons-rise 2s ease-in forwards; }.masthead-effect--balloons svg { width:28px; height:28px; color:var(--effect-colour); }.masthead-effect--balloons svg:nth-child(2) { animation-delay:.15s; color:#ff4d6d; }.masthead-effect--balloons svg:nth-child(3) { animation-delay:.3s; color:#ffd166; }@keyframes balloons-rise { to { opacity:0; translate:50px -70vh; rotate:12deg; } }.masthead-effect--rocket { width:34px; height:34px; background:transparent; color:#ff7b00; animation:rocket-launch 1.2s ease-in forwards; }.masthead-effect--rocket svg { width:32px; height:32px; }.masthead-effect--rocket b { position:absolute; color:#ffd166; font-size:42px; opacity:0; animation:impact .45s .8s ease-out forwards; }@keyframes rocket-launch { 75% { translate:var(--effect-travel-x) var(--effect-travel-y); } 100% { opacity:0; translate:var(--effect-travel-x) var(--effect-travel-y); } }@keyframes impact { to { opacity:1; scale:2; } }.masthead-effect--storm { width:58px; height:70px; background:transparent; animation:storm-drift 2s ease-out forwards; }@keyframes storm-drift { 0% { opacity:0; } 20%,80% { opacity:1; } 100% { opacity:0; } }@keyframes lightning { 50% { opacity:1; } }
.masthead-effect { animation-duration:2s; }.masthead-effect--rocket { animation-duration:2s; }
.brand svg { width:22px; height:22px; }.masthead-effect--rocket svg { transform:rotate(var(--rocket-angle)); transform-origin:center; }@keyframes beer-cooldown { 0% { transform:rotate(0); } 40% { transform:rotate(1080deg); } 100% { transform:rotate(1440deg); } }
.masthead-effect--balloons { width:42px; height:42px; animation:balloon-rise var(--balloon-duration) ease-in forwards; }.masthead-effect--balloons svg:first-child { width:42px; height:42px; }.balloon-pop { position:absolute; inset:0; width:42px; height:42px; opacity:0; animation:balloon-pop var(--balloon-duration) steps(2) forwards; }@keyframes balloon-rise { to { opacity:0; translate:var(--balloon-wave) -75vh; } }@keyframes balloon-pop { 96% { opacity:0; } 100% { opacity:1; } }.masthead-effect--rocket svg { animation:rocket-vanish 1.5s steps(1) forwards; }.masthead-effect--rocket b { left:26px; top:-8px; animation:impact-flash .5s 1.5s steps(2) forwards; }@keyframes rocket-vanish { to { opacity:0; } }@keyframes impact-flash { 50% { opacity:1; scale:2.5; } 100% { opacity:0; scale:3; } }
.masthead-effect--rocket { animation:rocket-flight 2s linear forwards; }.masthead-effect--rocket b { left:26px; top:-12px; color:initial; font-size:54px; line-height:1; filter:drop-shadow(0 0 8px #ffd166); animation:impact-flash .5s 1.5s steps(2, end) forwards; }@keyframes rocket-flight { 0% { opacity:1; translate:0 0; } 75%,100% { opacity:1; translate:var(--effect-travel-x) var(--effect-travel-y); } }@keyframes impact-flash { 0% { opacity:0; scale:.3; } 16%,54% { opacity:1; scale:1.9; } 100% { opacity:0; scale:2.5; } }
.masthead-effect--rocket b { left:var(--rocket-tip-x); top:var(--rocket-tip-y); translate:-50% -50%; }.theme-toggle { pointer-events:auto; display:grid; place-items:center; width:42px; height:42px; margin-left:auto; border:0; border-radius:50%; background:#fffdf9; color:var(--ink); box-shadow:0px 38px 25px #09203326; cursor:pointer; }.theme-toggle svg { width:20px; height:20px; }body.is-night { color-scheme:dark; --ink:#e8f3f4; --muted:#b6c7cf; --cream:#14283a; --paper:#0c1b2a; --line:#385268; }body.is-night .brand,body.is-night .route-summary { background:#071521; }body.is-night .stop-card,body.is-night .crawl-plan,body.is-night .crawl-plan-peek,body.is-night .theme-toggle,body.is-night .icon-button,body.is-night .crawl-plan-action { background:#14283a; }body.is-night .map-stage::after { position:absolute; z-index:1; inset:0; background:#06132188; content:""; pointer-events:none; }body.is-night .map-status { background:#14283ae6; }
.masthead-effect--balloons svg:first-child { fill:var(--effect-colour); }.masthead-effect--storm svg { fill:currentColor; }
.masthead-effect--rocket svg { fill:#ff7b00; }
.crawl-plan-peek>svg { fill:currentColor; }.map-jump-glyph svg:first-child { fill:currentColor; }.map-jump-glyph svg:last-child { margin-top:4px; }body.is-night { --red:#ffd166; }body.is-night .stop-number { color:#112f46; }body.is-night .map-stage::after { display:none; }
body.is-night .map-marker,body.is-night .rating-dialog .map-marker { background:#b72e3d; }.crawl-plan-list.is-reordering { --drag-gap:#214559; }.card-navigation button { font-size:1rem; }.card-navigation button svg { width:22px; height:22px; }.card-count { display:inline-flex; align-items:center; gap:3px; font-size:1rem; }.card-count button { min-width:auto; padding:7px 4px; font-size:1rem; text-decoration:underline; text-underline-offset:3px; }.photo-empty { gap:14px; }.photo-empty svg { width:34px; height:34px; flex:0 0 34px; }body.is-night .photo-empty { border:1px solid #385268; background:#1c3448; color:#dbe8eb; }body.is-night .photo-empty>svg { color:#ffd166; }
.masthead-effect--balloons { width:58px; height:58px; cursor:pointer; pointer-events:auto; }.masthead-effect--balloons svg:first-child,.balloon-pop { width:58px; height:58px; }.masthead-effect--balloons.is-popped { animation:balloon-pop-effect .22s ease-out forwards; }.masthead-effect--balloons.is-popped svg:first-child { opacity:0; }.masthead-effect--balloons.is-popped .balloon-pop { opacity:1; animation:balloon-pop-effect .22s ease-out forwards; }@keyframes balloon-rise { to { translate:var(--balloon-wave) -75vh; } }@keyframes balloon-pop-effect { to { opacity:0; scale:1.35; } }.balloon-score { position:fixed; z-index:11; color:#ffd166; font-size:1.35rem; font-weight:900; line-height:1; pointer-events:none; translate:-50% -100%; text-shadow:0 2px 4px #09203399; animation:balloon-score-rise 1s ease-out forwards; }@keyframes balloon-score-rise { to { opacity:0; translate:-50% calc(-100% - 38px); } }.photo-empty { display:grid; grid-template-columns:48px minmax(0,1fr); column-gap:14px; row-gap:10px; }.photo-empty-icon { display:grid; place-items:center; width:48px; height:48px; border:1px solid currentColor; border-radius:8px; }.photo-empty-icon svg { width:34px; height:34px; }.photo-empty-copy { align-self:center; }.take-photo { grid-column:1 / -1; justify-self:center; display:inline-flex; align-items:center; gap:6px; margin:0; border:1px solid var(--line); border-radius:7px; padding:7px 11px; background:transparent; color:var(--ink); cursor:pointer; font:inherit; font-weight:850; }.take-photo svg { width:17px; height:17px; flex:0 0 auto; }
.card-header { display:block; width:100%; border:0; padding:0; background:transparent; color:inherit; text-align:left; cursor:pointer; }.masthead-effect--rocket,.masthead-effect--storm { pointer-events:auto; cursor:pointer; touch-action:none; }.masthead-effect--rocket.is-deflected { animation:rocket-deflect .85s linear forwards; }.masthead-effect--rocket.is-deflected svg { animation:rocket-deflect-spin .85s linear forwards; }.masthead-effect--rocket.is-deflected b { animation:impact-flash .35s .5s steps(2, end) forwards; }@keyframes rocket-deflect { 0% { opacity:1; translate:0 0; rotate:0deg; } 25% { translate:12px -18px; rotate:140deg; } 55% { translate:-14px 7px; rotate:330deg; } 100% { opacity:1; translate:var(--effect-travel-x) var(--effect-travel-y); rotate:720deg; } }@keyframes rocket-deflect-spin { to { rotate:1080deg; } }.balloon-score { display:grid; place-items:center; width:36px; height:36px; border-radius:50%; background:#000; animation:balloon-score-rise 1s linear forwards; }.balloon-score { text-shadow:0 2px 4px #000; }@keyframes balloon-score-rise { 0% { opacity:1; translate:-50% -100%; } 25% { opacity:.9; } 50% { opacity:.73; } 75% { opacity:.45; } 100% { opacity:0; translate:-50% calc(-100% - 38px); } }
.masthead-effect--confetti { transform:rotate(var(--confetti-rotate)); }.masthead-effect--rocket.is-deflected { animation:rocket-deflect-path 1.2s linear forwards; }.masthead-effect--rocket.is-deflected svg { animation:rocket-deflect-spiral .85s linear forwards; }.masthead-effect--rocket.is-deflected b { animation:rocket-deflect-impact .35s .85s steps(2, end) forwards; }@keyframes rocket-deflect-path { 0% { opacity:1; translate:0 0; rotate:0deg; } 25% { translate:12px -18px; rotate:140deg; } 55% { translate:-14px 7px; rotate:330deg; } 70%,100% { opacity:1; translate:var(--effect-travel-x) var(--effect-travel-y); rotate:720deg; } }@keyframes rocket-deflect-spiral { 0%,99% { opacity:1; rotate:0deg; } 100% { opacity:0; rotate:1080deg; } }@keyframes rocket-deflect-impact { 0% { opacity:0; scale:.3; } 16%,54% { opacity:1; scale:1.9; } 100% { opacity:0; scale:2.5; } }body.is-night .masthead-effect--storm { color:#40505b; }body.is-night .crawl-plan-list li.is-selected { background:#243d50; box-shadow:inset 4px 0 #ffd166; }
body.is-night .edit-stops { border-color:#6fa8c9; background:#254861; color:#f7fbfc; }body.is-night .edit-stops:where(:not(.is-secondary,.is-destructive,[data-destructive="true"])):active { background:#19384d; }body.is-night .card-navigation button:active { background:#315d77; }
.map-marker--cluster,body.is-night .map-marker--cluster { display:grid; place-items:center; background:#ffd166; color:#112f46; box-shadow:0px 15px 10px #102b3d88; }.map-marker--cluster svg { width:17px; height:17px; }
:root { --selected-row:#fff6e9; --selected-row-edge:var(--red); }body.is-night { --selected-row:#243d50; --selected-row-edge:#ffd166; }.crawl-plan-list li.is-selected,body.is-night .crawl-plan-list li.is-selected { background:var(--selected-row); box-shadow:inset 4px 0 var(--selected-row-edge); }
.route-summary.is-edit-drawer-summary { position:fixed; bottom:var(--route-summary-bottom); transition:bottom .22s cubic-bezier(.16,.8,.28,1); }.route-summary.is-drawer-dragging { transition:none; }
.crawl-plan { height:calc(100svh - 24px); }.crawl-plan-peek,.crawl-plan-header { touch-action:none; user-select:none; }.crawl-plan-peek { grid-template-columns:32px minmax(0,1fr); padding-top:5px; padding-bottom:5px; }.drawer-peek-toggle { display:flex; align-items:center; justify-content:space-between; gap:7px; min-height:44px; border:0; padding:0; background:transparent; color:inherit; font:inherit; font-weight:850; text-align:left; cursor:pointer; }.crawl-plan.is-dragging { transition:none; will-change:transform; }.crawl-plan[data-latch="top"],.crawl-plan[data-latch="middle"] { transform:translateY(var(--drawer-latch-offset)); }.drawer-latch-controls { display:flex; flex-direction:column; align-items:center; gap:4px; }.drawer-latch-controls button { display:grid; place-items:center; width:32px; height:20px; border:0; padding:0; border-radius:4px; background:transparent; color:var(--red); cursor:pointer; }.drawer-latch-controls button[hidden] { display:none; }.drawer-latch-controls svg { width:20px; height:11px; fill:currentColor; }.drawer-latch-controls button:last-child svg { transform:rotate(180deg); }
.crawl-plan-peek { grid-template-columns:44px minmax(0,1fr); gap:10px; }.drawer-peek-toggle { font-size:1.08rem; }.crawl-plan-peek small { font-size:max(var(--text-min),.83rem); }.crawl-plan-row { grid-template-columns:46px minmax(0,1fr) auto; gap:15px; padding:15px 8px; }.stop-number { width:38px; height:38px; font-size:.88rem; }.crawl-plan-stop b { font-size:1.08rem; }.crawl-plan-stop small { gap:7px; margin-top:5px; font-size:.9rem; }.crawl-plan-stop small svg { width:19px; height:19px; }.drawer-latch-controls { gap:1px; }.drawer-latch-controls button { width:42px; height:24px; color:var(--muted); opacity:.72; transition:color .16s ease, background .16s ease, box-shadow .16s ease, opacity .16s ease; }.drawer-latch-controls svg { width:29px; height:16px; }.drawer-latch-controls button:hover,.drawer-latch-controls button.is-moving {  opacity:1;  box-shadow:inset 0 0 7px #ffd16688; }.drawer-latch-controls button:active { box-shadow:inset 0 0 10px #ffd166bb; }
.masthead-actions { display:flex; gap:8px; pointer-events:none; }.crawl-plan-header h1 { display:flex; align-items:center; gap:10px; }.crawl-plan-header .icon-button { width:34px; height:34px; flex:0 0 auto; }.crawl-name-input { min-width:0; width:min(520px,70vw); font:inherit; letter-spacing:inherit; color:inherit; border:1px solid var(--line); border-radius:7px; background:var(--cream); padding:4px 8px; }.drawer-tabs { display:flex; gap:8px; max-width:1050px; margin:0 auto 14px; }.drawer-tabs button { min-height:42px; padding:8px 12px; border:1px solid var(--line); border-radius:8px; background:transparent; color:var(--ink); font:inherit; font-weight:800; cursor:pointer; }.drawer-tabs button[aria-selected="true"] { background:var(--ink); color:var(--paper); }#stops-pane,#members-pane { max-width:1050px; margin:0 auto; }
.is-title-effect-active .stop-card,.is-title-effect-active .route-summary,.is-title-effect-active .crawl-plan { opacity:0; pointer-events:none; transition:opacity .3s; }.is-title-effect-active .map { pointer-events:none; }
.organiser-pane { max-width:1050px; margin:18px auto 14px; padding:14px; border:1px solid #b7d6cd; border-radius:10px; background:var(--organiser-tools-background); }.organiser-pane h2 { margin:0 0 10px; font-size:1.25rem; line-height:1.2; }
.organiser-event-details { display:grid; gap:8px; margin:0; padding:0; }.organiser-event-details p { margin:0; }.organiser-event-details label { display:grid; gap:4px; max-width:32rem; }.organiser-event-details input { min-width:0; width:100%; box-sizing:border-box; padding:8px; border:1px solid var(--line); border-radius:6px; background:var(--cream); color:var(--ink); font:inherit; }

/* Shared photos and member controls inherit the guide's light/night palette. */
.photo-panel { display:grid; gap:10px; padding:14px; margin:10px 0; border:1px solid var(--line); border-radius:10px; background:var(--cream); color:var(--ink); }
.photo-panel.photo-empty { grid-template-columns:48px minmax(0,1fr); }
.photo-actions { grid-column:1 / -1; display:flex; justify-content:center; align-items:center; flex-wrap:wrap; gap:8px; }
.photo-actions .choose-best-photo { min-width:42px; min-height:42px; }
.photo-actions svg,.photo-actions .take-photo svg { width:18px; height:18px; flex:0 0 18px; }
.photo-text-button,.photo-panel>button,.photo-gallery button,.member-controls button,.member-invites button,.join-panel button { min-height:40px; padding:8px 12px; border:1px solid var(--line); border-radius:7px; background:transparent; color:var(--ink); font:inherit; font-weight:800; cursor:pointer; }
.photo-panel button:disabled,.photo-gallery button:disabled { opacity:.55; cursor:not-allowed; }.photo-upload-actions { display:grid; grid-column:1 / -1; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }.photo-upload-actions button { width:100%; display:inline-flex; align-items:center; justify-content:center; gap:6px; }.photo-actions .photo-text-button { display:inline-flex; align-items:center; gap:6px; }.photo-actions .choose-best-photo { min-width:0; }.crawl-plan-action:disabled { opacity:.45; cursor:not-allowed; }
.photo-actions .photo-text-button:where(:not(.is-destructive,[data-destructive="true"])),.photo-upload-actions button:where(:not(.is-destructive,[data-destructive="true"])) { border-color:var(--ink); background:var(--ink); color:white; }
body.is-night .photo-actions .photo-text-button:where(:not(.is-destructive,[data-destructive="true"])),body.is-night .photo-upload-actions button:where(:not(.is-destructive,[data-destructive="true"])) { border-color:#6fa8c9; background:#254861; color:#f7fbfc; }
.group-photo-image,.photo-upload-preview { display:block; width:100%; max-height:300px; object-fit:contain; border-radius:7px; grid-column:1 / -1; background:var(--paper); }
.photo-caption,.photo-note,.photo-status { grid-column:1 / -1; margin:0; color:var(--muted); font-size:max(var(--text-min),.8rem); line-height:1.5; text-align:center; }
.photo-empty-copy,.photo-status { font-size:.95rem; }
.photo-gallery { width:min(760px,calc(100vw - 24px)); max-height:85svh; overflow:auto; border:1px solid var(--line); border-radius:15px; padding:20px; color:var(--ink); background:var(--cream); }
.confirmation-dialog { width:min(360px,calc(100vw - 24px)); border:1px solid var(--line); border-radius:15px; padding:20px; color:var(--ink); background:var(--cream); }.confirmation-dialog::backdrop { background:#061321b3; }.confirmation-dialog p { margin:0 0 16px; font-weight:500; line-height:1.5; }.confirmation-dialog button { min-height:40px; margin-right:8px; padding:8px 16px; border:1px solid var(--line); border-radius:7px; background:transparent; color:var(--ink); font:inherit; font-weight:800; cursor:pointer; }
.confirmation-dialog h2 { margin:0 0 8px; font-size:1.15rem; }.confirmation-dialog-actions { display:flex; justify-content:flex-end; flex-wrap:wrap; gap:8px; margin-top:18px; }.confirmation-dialog-actions button { margin:0; }.confirmation-dialog-actions .is-destructive { border-color:var(--red); background:var(--red); color:white; }
.confirmation-dialog button,.photo-dialog-close,.join-panel button { display:inline-flex; align-items:center; gap:6px; font-size:1rem; }.confirmation-dialog button svg,.photo-dialog-close svg,.join-panel button svg { width:18px; height:18px; flex:0 0 auto; }body.is-night .confirmation-dialog,body.is-night .photo-gallery { background:var(--cream); color:var(--ink); }.join-panel button { background:#254861; border-color:#6fa8c9; color:#f7fbfc; }
body.is-night .confirmation-dialog-actions .is-destructive { background:#b72e3d; border-color:#e05d67; color:#f7fbfc; }
.photo-gallery::backdrop { background:#061321b3; }
.photo-gallery h2 { margin:0 0 12px; font-size:1.25rem; }.photo-gallery-venue { display:block; margin-top:3px; color:var(--muted); font-size:max(var(--text-min),.9em); }

.photo-gallery-list { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr)); gap:16px; }
.photo-gallery-note { grid-column:1 / -1; margin:0; }
.photo-gallery-item { position:relative; border:1px solid var(--line); border-radius:10px; padding:10px; display:grid; gap:8px; }.photo-gallery-favourite { position:absolute; z-index:1; top:17px; left:17px; width:38px; height:38px; padding:8px; border-radius:50%; background:#fffdf9e6; color:#d99b16; fill:#d99b16; filter:drop-shadow(0 2px 3px #09203388); }
.photo-gallery-item img { width:100%; height:210px; object-fit:contain; background:var(--paper); border-radius:6px; }
.photo-gallery-item p { margin:0; font-size:max(var(--text-min),.85rem); }
.photo-gallery-item button { display:inline-flex; align-items:center; gap:6px; }.photo-gallery-item button svg { width:17px; height:17px; }.photo-gallery button[aria-pressed="true"] { background:var(--ink); color:var(--paper); }
.photo-gallery button:focus-visible,.member-controls button:focus-visible,.member-invites button:focus-visible,.member-controls input:focus-visible,.join-panel :focus-visible { outline:3px solid #f4b942; outline-offset:3px; }
.member-controls { max-width:1050px; margin:0 auto; }
.crawl-plan .edit-stops { display:inline-flex; align-items:center; gap:7px; width:auto; }
.member-controls:empty { display:none; }
.member-settings,#settings-pane { max-width:1050px; margin:0 auto; }.member-settings { border:1px solid var(--line); border-radius:10px; padding:14px; }.member-settings h2 { margin:0 0 8px; }.member-settings p { color:var(--muted); line-height:1.45; }.member-settings-summary { display:flex; align-items:center; justify-content:space-between; gap:12px; }.member-settings-summary p { margin:0; }.member-settings-info { width:38px; height:38px; flex:0 0 38px; }.member-settings-dialog { width:min(480px,calc(100vw - 32px)); border:1px solid var(--line); border-radius:12px; background:var(--cream); color:var(--ink); }.member-settings-dialog::backdrop { background:#09203388; }.member-settings-dialog button { min-height:40px; padding:8px 12px; border:1px solid var(--line); border-radius:7px; background:transparent; color:var(--ink); cursor:pointer; }.member-settings-toggle,.member-avatar-settings,.end-event { min-height:40px; border:1px solid var(--line); border-radius:7px; padding:8px 12px; background:transparent; color:var(--ink); font:inherit; font-weight:750; cursor:pointer; }.member-avatar-settings { margin-left:8px; }.end-event { width:100%; border-color:var(--red); background:var(--red); color:white; font-weight:850; }.end-event:disabled,.member-settings-toggle:disabled { opacity:.6; cursor:not-allowed; }.avatar-picker { width:min(420px,calc(100vw - 32px)); border:1px solid var(--line); border-radius:12px; background:var(--cream); color:var(--ink); }.avatar-picker::backdrop { background:#09203388; }.avatar-picker-icons { display:grid; grid-template-columns:repeat(5,1fr); gap:8px; }.avatar-picker button { min-height:40px; border:1px solid var(--line); border-radius:7px; background:transparent; color:var(--ink); cursor:pointer; }.avatar-picker-icons button[aria-pressed="true"] { border-color:var(--red); background:#ffd16633; }.avatar-picker-actions { display:flex; flex-wrap:wrap; gap:8px; margin:12px 0; }.avatar-picker-actions button { padding:8px 12px; }
body.is-night .member-settings-dialog { border-color:var(--line); background:var(--cream); color:var(--ink); }
.is-settings-cued { animation:settings-cue .42s ease-in-out 3; }.is-location-cued { animation:location-cue .7s ease-out 1; }@keyframes settings-cue { 50% { box-shadow:0 0 0 5px #ffd166aa; } }@keyframes location-cue { 50% { box-shadow:0 0 0 5px #ffd16688; } }
.member-profile,.member-invites { border:1px solid var(--line); padding:12px; border-radius:10px; margin-bottom:14px; }.member-invites { display:grid; gap:8px; }
.member-profile { display:flex; align-items:end; flex-wrap:wrap; gap:8px; }
.member-profile label,.member-invite-result label,.join-panel label { display:grid; gap:6px; font-size:max(var(--text-min),.85rem); font-weight:750; }
.member-controls input,.join-panel input { min-width:0; min-height:40px; max-width:100%; border:1px solid var(--line); border-radius:7px; padding:8px; font:inherit; background:var(--cream); color:var(--ink); }
.member-profile p { flex-basis:100%; margin:0; color:var(--muted); }
.member-invites summary { cursor:pointer; font-weight:750; }.member-invites summary>svg:first-child { transition:transform .16s ease; }.member-invites[open]>summary>svg:first-child,.invite-path[open]>summary>svg:first-child { transform:rotate(90deg); }
.member-invite-result,.member-invite-list { display:grid; gap:8px; margin-top:10px; }
.member-invite-result input { width:100%; }
.member-invite-row { display:flex; align-items:center; gap:7px; flex-wrap:wrap; border-top:1px solid var(--line); padding-top:9px; }
.member-invite-row span { flex:1 1 130px; overflow-wrap:anywhere; }
.member-roster { max-width:1050px; margin:0 auto 14px; }.member-roster table { width:100%; border-collapse:collapse; border-top:1px solid var(--line); }.member-roster th { padding:8px; color:var(--muted); font-size:max(var(--text-min),.72rem); text-align:left; }.member-roster th.member-roster-location-heading,.member-roster td.member-roster-location { width:54px; text-align:center; }.member-roster th.member-roster-location-heading { text-align:center; }.member-roster-location-heading svg { display:block; margin:0 auto; }.member-roster-row td { padding:9px 8px; border-bottom:1px solid var(--line); }.member-roster-avatar { width:46px; }.member-roster-avatar-button { display:grid; place-items:center; width:32px; height:32px; padding:0; border:0; border-radius:50%; background:var(--member-avatar-icon-background); color:var(--member-avatar-icon-color); }.member-roster-avatar button { cursor:pointer; }.member-roster-avatar img { width:100%; height:100%; border-radius:50%; object-fit:cover; }.member-roster-avatar svg { width:20px; height:20px; }.member-roster-identity { min-width:0; }.member-roster-identity h3,.member-roster-identity small { display:block; margin:0; }.member-roster-identity h3 { font-size:.93rem; }.member-roster-identity small { margin-top:3px; color:var(--muted); font-size:max(var(--text-min),.76rem); }.member-roster-location { font-size:max(var(--text-min),.8rem); font-weight:850; }.member-roster-location .is-stale { opacity:.55; }.member-roster-actions { display:flex; gap:7px; min-width:36px; min-height:36px; }.member-roster p { margin:10px 0 0; color:var(--muted); font-size:max(var(--text-min),.85rem); }
.card-header-row { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:10px; align-items:start; }.card-rating { display:grid; gap:1px; min-width:86px; border:1px solid var(--line); border-radius:8px; padding:6px 7px; background:transparent; color:var(--ink); cursor:pointer; text-align:center; }.card-rating-stars { color:#d99b16; letter-spacing:-2px; white-space:nowrap; }.card-rating-value { color:var(--muted); font-size:max(var(--text-min),.72rem); font-weight:800; }.rating-dialog { width:min(560px,calc(100vw - 24px)); max-height:88svh; overflow:auto; border:1px solid var(--line); border-radius:15px; padding:20px; color:var(--ink); background:var(--cream); }.rating-dialog::backdrop { background:#061321b3; }.rating-dialog h2 { margin:0 0 8px; font-size:1.25rem; }.rating-summary { margin:0 0 14px; color:var(--muted); font-weight:800; }.rating-tabs { display:flex; gap:8px; margin-bottom:14px; }.rating-tabs button,.rating-dialog button { min-height:40px; border:1px solid var(--line); border-radius:7px; padding:8px 12px; background:transparent; color:var(--ink); cursor:pointer; font:inherit; font-weight:750; }.rating-tabs button[aria-selected="true"] { background:var(--ink); color:var(--paper); }.rating-fieldset { margin:0 0 14px; border:0; padding:0; }.rating-fieldset legend { margin-bottom:5px; color:var(--muted); font-size:max(var(--text-min),.85rem); font-weight:800; }.rating-input { display:flex; gap:2px; }.rating-half { min-width:29px; padding:4px !important; border:0 !important; color:#c7c7c7 !important; font-size:1.5rem !important; line-height:1; }.rating-half--half { opacity:.6; }.rating-status { min-height:1.2em; color:var(--muted); font-size:max(var(--text-min),.85rem); }.rating-dialog-close { float:right; }.rating-dialog form button[type="submit"] { background:var(--ink); color:var(--paper); }.rating-dialog .rating-pane[hidden] { display:none; }body.is-night .rating-dialog { background:var(--cream); color:var(--ink); }body.is-night .rating-tabs button[aria-selected="true"],body.is-night .rating-dialog form button[type="submit"] { background:#254861; color:#f7fbfc; }
.rating-member-list { border-top:1px solid var(--line); margin-top:16px; padding-top:12px; }.rating-member-list h3 { margin:0 0 8px; font-size:1rem; }.rating-member-row { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:4px 10px; padding:8px 0; border-bottom:1px solid var(--line); }.rating-member-row small { grid-column:1 / -1; color:var(--muted); font-size:max(var(--text-min),.78rem); }.rating-member-identity { display:inline-flex; align-items:center; gap:7px; }.rating-member-identity img { width:26px; height:26px; border-radius:50%; object-fit:cover; }
.rating-input-status { margin-left:8px; color:var(--muted); font-size:max(var(--text-min),.78rem); font-weight:750; }
.rating-dialog { position:fixed; top:8vh; margin:0 auto; }
.rating-input { width:160px; }.rating-star-slot { position:relative; display:block; width:29px; height:32px; flex:0 0 29px; font-size:1.7rem; line-height:1; }.rating-star-outline,.rating-star-fill { position:absolute; inset:0; display:block; text-align:center; pointer-events:none; }.rating-star-outline { color:#c7c7c7; }.rating-star-fill { width:0; overflow:hidden; color:#d99b16; white-space:nowrap; }.rating-half-hit { position:absolute; z-index:2; top:0; bottom:0; width:50%; min-height:32px; padding:0 !important; border:0 !important; background:transparent !important; color:transparent !important; cursor:pointer; }.rating-half-hit--half { left:0; }.rating-half-hit--whole { right:0; }
.card-rating { display:flex; align-items:center; justify-content:center; gap:5px; width:42px; height:42px; min-width:42px; padding:0; border-radius:9px; }.card-rating-icon { color:#d99b16; font-size:29px; line-height:1; }.card-rating-value { font-size:max(var(--text-min),.78rem); }.card-rating[aria-label] { font-size:0; }
.card-header-row { display:flex; align-items:flex-start; gap:10px; }.card-header { min-width:0; flex:1; }.card-check-in { display:grid; place-items:center; align-self:center; flex:0 0 auto; width:42px; height:42px; border:1px solid var(--line); border-radius:9px; background:white; color:var(--ink); cursor:pointer; font-size:0; }.card-check-in svg { width:30px; height:30px; }.card-check-in:disabled { cursor:default; opacity:.65; }body.is-night .card-check-in { background:#14283a; color:#e8f3f4; border-color:#385268; }.stop-card.is-check-in-shaking { animation:card-check-in-shake .42s linear; }.card-check-in-effect { position:absolute; z-index:1; left:50%; top:24px; width:8px; height:13px; border-radius:2px; background:#f4b942; pointer-events:none; animation:card-check-in-effect .72s ease-out forwards; }@keyframes card-check-in-shake { 20% { translate:-4px 1px; } 40% { translate:4px -2px; } 60% { translate:-3px 1px; } 80% { translate:3px -1px; } }@keyframes card-check-in-effect { to { opacity:0; translate:var(--check-in-effect-x) var(--check-in-effect-y); rotate:34deg; } }
.drawer-tabs { gap:0; border-bottom:1px solid var(--line); width:100%; overflow-x:auto; overflow-y:hidden; overscroll-behavior-x:contain; scrollbar-width:none; }.drawer-tabs::-webkit-scrollbar { display:none; }.drawer-tabs button { flex:0 0 auto; }.crawl-plan-content { overflow-x:hidden; }#stops-pane,#members-pane,#admin-pane,#settings-pane { max-width:100%; min-width:0; }
.drawer-tabs button { display:inline-flex; align-items:center; gap:7px; padding:8px 14px; border:1px solid transparent; border-bottom:0; border-radius:10px 10px 0 0; color:var(--muted); }
.drawer-tabs button svg { width:18px; height:18px; }.drawer-tabs button[aria-selected="true"] { position:relative; z-index:1; margin-bottom:-1px; border-color:var(--line); background:var(--cream); color:var(--ink); }
#members-pane { max-height:min(680px,calc(100svh - 260px)); overflow-y:auto; overscroll-behavior:contain; padding-right:6px; }
#editor-controls { justify-content:space-between; }
.brand svg { width:28px; height:28px; }.theme-toggle { width:52px; height:52px; }.theme-toggle svg { width:26px; height:26px; }.compass-north-icon { transform-origin:center; transition:transform .18s ease-out; }@media (prefers-reduced-motion: reduce) { .compass-north-icon { transition:none; } }
.crawl-plan-content { min-height:0; }.crawl-plan-content,#members-pane { overscroll-behavior:contain; }#members-pane { max-height:none; overflow:visible; padding-right:0; }
.masthead { align-items:flex-start; }.masthead-actions { align-items:flex-start; }.masthead-drawer-actions,.masthead-map-actions { display:grid; gap:8px; }.masthead-drawer-actions { pointer-events:none; }.masthead-actions .theme-toggle { margin-left:0; }#profile-toggle { display:none; }.theme-toggle svg { width:30px; height:30px; }
.member-controls button,.member-invites button,.member-invites summary { display:inline-flex; align-items:center; gap:6px; }.member-controls button svg,.member-invites button svg,.member-invites summary svg { width:17px; height:17px; flex:0 0 auto; }.member-invite-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }.member-invite-actions button { justify-content:center; }.is-invite-highlight { animation:invite-highlight .9s ease-out; }@keyframes invite-highlight { 0%,38% { background:#ffd166; box-shadow:0 0 0 4px #ffd16688; } 100% { background:transparent; box-shadow:none; } }.organiser-controls button { flex-basis:100%; width:max-content; display:inline-flex; align-items:center; gap:7px; }.organiser-controls button svg { margin:2px; flex:0 0 auto; }.organiser-controls p strong,.member-invite-row strong { font-weight:850; }.organiser-controls a { color:inherit; font-weight:800; }.organiser-pane .member-invites { margin:12px 0 0; padding-top:12px; border-top:1px solid #b7d6cd; }.organiser-pane .member-invites summary { display:flex; }
body.is-night .organiser-pane { border-color:#4d7083; background:var(--organiser-tools-background); }body.is-night .organiser-pane .member-invites { border-color:#4d7083; }body.is-night .organiser-controls button,body.is-night .organiser-controls a { background:#10293a; }
.balloon-pop-loader { position:fixed; z-index:11; display:grid; place-items:center; width:58px; height:58px; color:#d9dfda; translate:-50% -50%; pointer-events:none; }.balloon-pop-loader svg { width:32px; height:32px; }
.masthead-effect--storm .storm-flash { position:absolute; inset:0 auto auto 0; z-index:0; width:58px; height:58px; color:#fff; fill:#fff; opacity:0; translate:var(--cloud-flash-x) 10%; animation:lightning .22s .45s steps(2) 3; }.masthead-effect--storm .storm-cloud { position:relative; z-index:1; width:58px; height:58px; color:#40505b; fill:currentColor; opacity:1; animation:none; }.masthead-effect--storm .storm-bolt { position:absolute; z-index:2; top:52px; color:#ffd166; opacity:0; animation:lightning .22s .45s steps(2) 3; }.masthead-effect--storm .storm-bolt-one { left:var(--bolt-one); }.masthead-effect--storm .storm-bolt-two { left:var(--bolt-two); animation-delay:.65s; }.masthead-effect--storm .storm-bolt-three { left:var(--bolt-three); animation-delay:.85s; }
.join-page { display:grid; place-items:center; min-height:100svh; padding:16px; }
.join-panel { display:grid; gap:20px; width:min(440px,100%); padding:24px; border:1px solid var(--line); border-radius:15px; background:var(--cream); line-height:1.5; }
.join-heading p,.join-panel form>p,.join-panel .join-organiser-name { margin:0; }
.join-heading { display:grid; gap:8px; }
.join-panel h1 { margin:0; font-size:clamp(1.6rem,6vw,2rem); line-height:1.2; }
.join-details,#event-schedule,#organiser-contact { display:grid; gap:8px; min-width:0; }
.join-details { gap:16px; }
.join-detail-row,.join-secondary { display:flex; align-items:flex-start; gap:10px; min-width:0; }
.join-detail-row svg,.join-secondary svg,.join-panel label svg { width:20px; height:20px; flex:0 0 20px; margin-top:2px; }
.join-detail-row span { min-width:0; overflow-wrap:anywhere; }
.join-organiser-name { font-weight:var(--font-emphasis); }
.join-organiser-pane { padding:14px; border:1px solid var(--line); border-radius:12px; }
.join-organiser-pane h2 { margin:0; }
.join-organiser-contacts { display:grid; gap:8px; padding-left:30px; min-width:0; }
.member-roster-actions button.is-destructive { background:var(--danger-action-base); border-color:var(--danger-action-base); color:#fff; }
.join-panel form { display:grid; gap:8px; }
.join-panel label { display:flex; align-items:center; gap:8px; }
.join-panel input { width:100%; min-height:44px; padding:10px 12px; }
.join-panel #join-action { margin-top:8px; }
.join-panel #join-action button { width:100%; justify-content:center; min-height:44px; }
.join-panel #join-status:empty,.join-panel #join-retry:has(button[hidden]) { display:none; }
.join-panel :is(#join-status,#organiser-login-status):has(.action-message[hidden]) { display:none; }
.join-privacy { display:flex; align-items:center; justify-content:space-between; gap:12px; font-size:var(--text-secondary); color:var(--muted); }
.join-panel .action-info-button { background:transparent; color:var(--ink); border-color:var(--line); margin-left:auto; }
.join-secondary { align-items:center; width:fit-content; text-underline-offset:3px; }
.join-panel button[hidden] { display:none; }
.join-panel button:disabled { opacity:.55; cursor:not-allowed; }
.join-panel .edit-stops,body.is-night .join-panel .edit-stops { border-color:var(--filled-action-border); background:var(--filled-action-base); color:var(--filled-action-text); }
.join-panel a { color:var(--ink); }

.organiser-controls { max-width:1050px; margin:0 auto 12px; padding:10px 0; display:flex; align-items:center; flex-wrap:wrap; gap:8px 14px; }
.organiser-controls p { margin:0; flex-basis:100%; }
.organiser-controls button,.organiser-controls a { min-height:40px; padding:8px 12px; border:1px solid var(--line); border-radius:7px; background:var(--paper); color:var(--ink); font:inherit; cursor:pointer; }
.organiser-logout-row { flex-basis:100%; }.organiser-controls .edit-stops { flex:0 0 auto; width:max-content; min-height:36px; padding:8px 11px; border:1px solid var(--ink); border-radius:8px; background:var(--ink); color:white; font-weight:800; }.organiser-help { display:flex; align-items:flex-start; gap:10px; flex-basis:100%; }.organiser-help>svg { width:22px; height:22px; flex:0 0 22px; margin-top:2px; }.organiser-help p+p { margin-top:8px; }.organiser-help a { border:0; padding:0; background:transparent; text-decoration:underline; }body.is-night .organiser-controls .edit-stops { border-color:#6fa8c9; background:#254861; color:#f7fbfc; }body.is-night .organiser-controls .edit-stops:where(:not(.is-secondary,.is-destructive,[data-destructive="true"])):active { background:#19384d; }body.is-night .organiser-help a { background:transparent; }
.member-invite-row>span,.member-invite-row>strong { flex:1 1 130px; min-width:0; overflow-wrap:anywhere; }.member-invite-row-actions { display:flex; flex:0 0 auto; gap:7px; margin-left:auto; }.member-invite-row-actions button { min-width:max-content; border-color:var(--ink); background:var(--ink); color:white; }.member-invite-row-result { flex:1 0 100%; }.member-invites button svg { width:22px; height:22px; }body.is-night .member-invite-row-actions button { border-color:#6fa8c9; background:#254861; color:#f7fbfc; }
.member-invite-identity { display:inline-flex; align-items:center; gap:7px; flex:1 1 130px; min-width:0; overflow-wrap:anywhere; }.member-invite-identity svg { width:22px; height:22px; flex:0 0 auto; }.member-invite-actions button,.member-invites>button { border-color:var(--ink); background:var(--ink); color:white; font-weight:800; }.member-invite-actions.is-invite-expiring { animation:invite-actions-fade 3s linear forwards; }@keyframes invite-actions-fade { to { opacity:0; } }.member-invite-result label { display:flex; align-items:center; gap:8px; }.member-invite-result label svg { width:22px; height:22px; flex:0 0 auto; }.edit-stops svg,.organiser-controls .edit-stops svg { width:22px; height:22px; }body.is-night .member-invite-actions button,body.is-night .member-invites>button { border-color:#6fa8c9; background:#254861; color:#f7fbfc; }
.member-invites .edit-stops { border-color:var(--filled-action-border); background:var(--filled-action-base); color:var(--filled-action-text); }
.is-invite-highlight { color:#112f46 !important; }.info-pane { position:relative; display:flex; align-items:flex-start; gap:10px; margin:12px 0; padding:12px; border:1px solid var(--line); border-radius:8px; background:white; }.info-pane p { margin:0; }.organiser-help { flex-basis:100%; }.organiser-help>div { width:100%; }.organiser-help p+p { margin-top:8px; }body.is-night .info-pane { background:#10293a; border-color:#4d7083; }.member-invites>.info-pane { margin-top:4px; }
.event-link-controls { min-width:0; }
.event-link-controls p { margin:0; }
.event-link-controls label { display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-weight:750; }
.event-link-controls label input[type=number] { width:5rem; padding:6px; font:inherit; }
.event-link-controls .member-invite-result { min-width:0; }
.organiser-login-button { text-decoration:none; }
.crawl-plan-list li.is-manipulating { background:#e3f0f8; box-shadow:inset 3px 0 0 var(--red); }body.is-night .crawl-plan-list li.is-manipulating { background:#1f4359; }
.brand,.masthead-effect { user-select:none; -webkit-user-select:none; }
.map-status { opacity:1; transition:opacity 1s; }
.map-status.is-fading { opacity:0; }
.member-settings-toggle,.member-avatar-settings,.member-settings-dialog-close,.end-event,.avatar-picker-actions button,.avatar-picker>button { display:inline-flex; align-items:center; justify-content:center; gap:7px; }
.member-settings-toggle svg,.member-avatar-settings svg,.member-settings-dialog-close svg,.end-event svg,.avatar-picker-actions svg,.avatar-picker>button svg { width:18px; height:18px; }
.member-settings-toggle,.member-avatar-settings,.member-settings-dialog-close,.end-event,.avatar-picker-actions button,.avatar-picker>button { font:inherit; font-size:1rem; font-weight:800; }.member-settings-toggle svg,.member-avatar-settings svg,.member-settings-dialog-close svg,.end-event svg,.avatar-picker-actions svg,.avatar-picker>button svg { width:20px; height:20px; flex:0 0 20px; }body.is-night .end-event { color:#092033; }
.member-roster-identity:is(button) { padding:0; border:0; background:transparent; color:var(--ink); text-align:left; cursor:pointer; font:inherit; }.member-roster-identity:is(button):focus-visible { outline:2px solid var(--red); outline-offset:3px; border-radius:3px; }
.card-check-in-effect { position:absolute; left:calc(var(--check-in-effect-position) * 100%); top:0; width:9px; height:16px; margin-left:-4.5px; background:var(--effect-colour); animation:masthead-effect 2s cubic-bezier(.16,.8,.28,1) forwards; }
.card-check-in { align-self:flex-start; }
.photo-actions .photo-text-button,.photo-upload-actions .photo-text-button { min-height:48px; padding:11px 15px; font-size:1rem; }
.photo-actions .photo-text-button svg,.photo-upload-actions .photo-text-button svg { width:22px; height:22px; flex-basis:22px; }
.photo-gallery-favourite { width:114px; height:114px; box-sizing:border-box; padding:7px; background:#000; color:#ffd166; fill:#ffd166; }
.photo-status { opacity:1; transition:opacity 1s; }.photo-status.is-fading { opacity:0; }
.map-stage::after { content:none !important; }
.member-map-marker { background:#f7fbfc; color:#17364a; border-color:#17364a; box-shadow:0px 15px 10px #09203380; }
.member-map-label { background:#17364ae8; color:#f7fbfc; }.member-map-selfie { border-color:#f7fbfc; }
body.is-night .member-map-marker { background:#071521; color:#f7fbfc; border-color:#b6c7cf; box-shadow:0px 18px 12px #000b; }
body.is-night .member-map-label { background:#071521f2; color:#f7fbfc; }.member-roster-avatar-button { border:1px solid #17364a; background:var(--member-avatar-icon-background); color:var(--member-avatar-icon-color); }
body.is-night .member-roster-avatar-button { border-color:#b6c7cf; }
.drag-handle { width:40px; align-self:stretch; display:grid; place-items:center; margin:-12px 0; padding:12px 0; color:var(--muted); cursor:grab; touch-action:none; }.drag-handle-icon { width:70%; height:70%; }.crawl-plan-row:has(.drag-handle) { grid-template-columns:40px 38px minmax(0,1fr) auto; }
.drawer-tabs button[aria-selected="true"] { border-color:var(--ink); background:var(--ink); color:var(--cream); }.drawer-tabs-shell { position:relative; max-width:1050px; margin:0 auto 14px; }.drawer-tabs-shell::before,.drawer-tabs-shell::after { position:absolute; z-index:2; top:0; bottom:1px; width:32px; opacity:0; pointer-events:none; content:""; transition:opacity .12s; }.drawer-tabs-shell::before { left:0; background:linear-gradient(90deg,var(--cream),transparent); }.drawer-tabs-shell::after { right:0; background:linear-gradient(-90deg,var(--cream),transparent); }.drawer-tabs-shell.has-tab-overflow-start::before,.drawer-tabs-shell.has-tab-overflow-end::after { opacity:1; }.drawer-tab-scroll { display:none; }.drawer-tabs-shell .drawer-tabs { max-width:none; margin:0; }
@media (hover:hover) and (pointer:fine) { .drawer-tab-scroll { position:absolute; z-index:3; top:4px; display:grid; place-items:center; width:32px; height:34px; border:0; border-radius:6px; padding:0; background:var(--cream); color:var(--ink); opacity:0; pointer-events:none; cursor:pointer; transition:opacity .12s; }.drawer-tab-scroll svg { width:24px; height:24px; }.drawer-tab-scroll--start { left:0; }.drawer-tab-scroll--end { right:0; }.drawer-tabs-shell:hover.has-tab-overflow-start .drawer-tab-scroll--start,.drawer-tabs-shell:hover.has-tab-overflow-end .drawer-tab-scroll--end,.drawer-tab-scroll:focus-visible { opacity:1; pointer-events:auto; }.drawer-tab-scroll:focus-visible { outline:2px solid var(--red); outline-offset:2px; } }
.member-map-anchor { width:max-content; height:max-content; }.member-map-crowd { animation:none; }.member-map-crowd.is-stagger { animation:member-stagger var(--member-sway-duration, 2.4s) ease-in-out var(--member-sway-delay, 0s) infinite var(--member-sway-direction, normal); }.member-map-crowd-icon { width:58%; height:58%; }.member-map-crowd-count { position:absolute; right:-2px; bottom:-2px; display:grid; place-items:center; min-width:16px; height:16px; padding:0 3px; border:2px solid currentColor; border-radius:999px; background:var(--cream); font-size:max(var(--text-min),.65rem); font-weight:900; line-height:1; }
.rating-dialog-stop-name { display:block; }
.stop-card-title-scrollport,.stop-card-address-scrollport { display:block; overflow-x:auto; white-space:nowrap; scrollbar-width:none; touch-action:pan-x; }
.stop-card-title-scrollport::-webkit-scrollbar,.stop-card-address-scrollport::-webkit-scrollbar { display:none; }
.card-header-row { position:relative; }
.rating-dialog h2 .rating-dialog-stop-name { font-size:1.25rem; }
.rating-tabs { gap:0; overflow-x:auto; }
.rating-tabs button { border-radius:0; }
.rating-tabs button:first-child { border-radius:7px 0 0 7px; }
.rating-tabs button:last-child { border-radius:0 7px 7px 0; }
.rating-input { align-items:center; gap:8px; }
.rating-input-value { width:3.2rem; color:var(--muted); font-size:1rem; font-weight:800; text-align:right; }
.rating-input-value { order:-1; }
.rating-dialog, .rating-dialog * { user-select:none; -webkit-user-select:none; }
.rating-input { touch-action:none; }
.rating-row-label { display:flex; align-items:center; gap:8px; }
.rating-row-icon { display:inline-grid; place-items:center; width:28px; height:28px; font-size:1.35rem; color:var(--ink); }
.rating-divider { border:0; border-top:1px solid var(--line); margin:18px 0 14px; }
.rating-dialog-stop-name { font-size:1rem; }
.rating-dialog h2 .rating-dialog-stop-name { font-size:clamp(1.5rem,2.5vw,2rem); letter-spacing:-.04em; }
.rating-dialog { top:50%; transform:translateY(-50%); }
.rating-dialog { width:min(470px,calc(100vw - 24px)); }
.rating-dialog-heading-row { display:flex; align-items:baseline; justify-content:space-between; gap:16px; }
.rating-dialog-heading-row h2 { min-width:0; }
.rating-dialog-average { display:inline-flex; align-items:center; gap:5px; flex:0 0 auto; color:var(--muted); font-size:.9rem; font-weight:800; white-space:nowrap; }
.rating-dialog-average-icon { color:#d99b16; font-size:1.8rem; line-height:1; }
.rating-dialog .rating-pane { display:grid; grid-template-columns:minmax(0,1fr); }
.rating-dialog .rating-fieldset { display:grid; grid-template-columns:42px minmax(0,1fr); grid-template-rows:auto auto; column-gap:10px; align-items:center; margin-bottom:14px; }
.rating-dialog .rating-row-content { grid-column:2; grid-row:1 / span 2; min-width:0; }
.rating-dialog .rating-row-label { display:block; padding-left:0; }
.rating-dialog .rating-row-icon { grid-column:1; grid-row:1; align-self:stretch; height:100%; min-height:62px; display:grid; place-items:center; font-size:1.6rem; }
.rating-dialog .rating-input { min-width:0; }
.rating-dialog .rating-divider { grid-column:1 / -1; width:100%; }
.rating-dialog .rating-star-slot { flex-basis:31px; width:31px; }
.rating-dialog .rating-star-outline,.rating-dialog .rating-star-fill { font-size:1.85rem; }
.rating-dialog .rating-input-value { flex:0 0 3.2rem; white-space:nowrap; overflow:visible; transform:none; }
.rating-dialog .rating-star-slot { flex-basis:38px; width:38px; }
.rating-dialog .rating-star-outline,.rating-dialog .rating-star-fill { font-size:2.2rem; }
.rating-dialog .rating-input { gap:4px; }
.rating-dialog .rating-input { width:auto; }
.rating-dialog .rating-input { align-items:center; }
.rating-dialog .rating-star-slot { display:grid; place-items:center; line-height:1; }
.rating-dialog-heading-row { position:relative; display:block; }
.rating-dialog-heading-row h2 { padding-right:92px; }
.rating-dialog-average { position:absolute; right:0; bottom:8px; }
.rating-dialog-actions { display:flex; justify-content:flex-end; gap:10px; margin-top:12px; }
.rating-dialog-actions button { display:inline-flex; align-items:center; gap:7px; min-height:42px; padding:8px 12px; border:1px solid var(--line); border-radius:7px; background:transparent; color:var(--ink); font:inherit; font-weight:800; }
.rating-action-icon { width:19px; height:19px; }
.card-rating-icon { font-size:30px; line-height:1; }
.card-rating svg { width:30px; height:30px; }
.card-header { min-width:0; cursor:pointer; }
.card-text-shell { position:relative; display:block; min-width:0; }
.card-header h2,.card-header .address { padding-right:0; }
.stop-card-title-scrollport,.stop-card-address-scrollport { width:100%; padding:0 42px; box-sizing:border-box; }
.card-text-shell .card-overflow-group { position:absolute; z-index:2; top:50%; right:0; left:0; display:flex; justify-content:space-between; transform:translateY(-50%); pointer-events:none; }
.card-text-shell .card-overflow-group button { display:grid; place-items:center; width:36px; height:36px; min-width:36px; min-height:36px; padding:0; border:0; border-radius:6px; background:var(--cream); color:var(--ink); opacity:0; pointer-events:none; }
.card-text-shell:hover .card-overflow-group button:not(:disabled),.card-text-shell .card-overflow-group button:focus-visible { opacity:1; pointer-events:auto; }
.card-text-shell .card-overflow-group button svg { width:24px; height:24px; }
@media (hover:none) { .card-text-shell .card-overflow-group button:not(:disabled) { opacity:.8; pointer-events:auto; } }
.rating-member-identity { display:flex; align-items:center; gap:8px; min-width:0; }
.rating-member-avatar { display:grid; place-items:center; width:34px; height:34px; flex:0 0 34px; border-radius:50%; background:var(--member-avatar-icon-background); color:var(--member-avatar-icon-color); }
.rating-member-avatar img { width:100%; height:100%; border-radius:50%; object-fit:cover; }
.rating-member-avatar-icon { width:20px; height:20px; }
.rating-member-name b,.rating-member-name small { display:block; }
.rating-member-name small { margin-top:2px; color:var(--muted); font-size:max(var(--text-min),.72rem); }
.rating-member-overall { align-self:center; white-space:nowrap; font-weight:800; }
.rating-member-details { grid-column:2; display:flex; justify-content:flex-end; align-items:center; gap:5px; color:var(--muted); }
.rating-member-details .rating-member-score { margin-left:8px; font-size:max(var(--text-min),.75rem); font-weight:800; }
.rating-member-details svg { width:18px; height:18px; }
.card-rating { width:auto; min-width:0; }
.rating-dialog { top:50%; transform:translateY(-50%); width:min(340px,calc(100vw - 40px)); }
.rating-dialog .rating-row-content { display:grid; grid-template-rows:auto auto; align-content:center; }
.rating-dialog .rating-row-label { display:block; align-self:end; margin-bottom:2px; }
.rating-dialog .rating-row-icon { width:42px; min-height:72px; display:grid; place-items:center; font-size:2rem; }
.rating-dialog .rating-input-value { flex:0 0 2.6rem; text-align:left; }
.rating-dialog .rating-tabs { display:flex; gap:0; margin:0 0 14px; }
.rating-dialog .rating-tabs button { border-radius:0; }
.rating-dialog .rating-tabs button:first-child { border-radius:7px 0 0 7px; }
.rating-dialog .rating-tabs button:last-child { border-radius:0 7px 7px 0; }
.rating-dialog .rating-tabs button[aria-selected="true"] { background:var(--ink); color:var(--paper); }
.rating-dialog .rating-tab-pane[hidden] { display:none; }
.rating-dialog .rating-star-slot { display:grid; place-items:center; line-height:1; }
.card-rating-icon { display:grid; place-items:center; height:30px; translate:0 -1px; }
body.is-night .avatar-picker { border-color:var(--line); background:var(--cream); color:var(--ink); }
.rating-star-fill { width:100% !important; }
.rating-half-hit { min-height:32px !important; }
.stop-card-title-scrollport,.stop-card-address-scrollport { padding:0; }
.card-text-shell::before,.card-text-shell::after,.rating-title-shell::before,.rating-title-shell::after { position:absolute; z-index:1; top:0; bottom:0; width:32px; opacity:0; pointer-events:none; content:""; transition:opacity .12s; }
.card-text-shell::before,.rating-title-shell::before { left:0; background:linear-gradient(90deg,var(--cream),transparent); }
.card-text-shell::after,.rating-title-shell::after { right:0; background:linear-gradient(-90deg,var(--cream),transparent); }
.card-text-shell.has-overflow-start::before,.rating-title-shell.has-overflow-start::before,.card-text-shell.has-overflow-end::after,.rating-title-shell.has-overflow-end::after { opacity:1; }
.card-location-marker { display:grid; place-items:center; flex:0 0 24px; width:24px; height:24px; color:var(--muted); }
.rating-title-shell { position:relative; display:block; min-width:0; max-width:100%; }
.rating-dialog-stop-name { display:block; overflow-x:auto; white-space:nowrap; scrollbar-width:none; }
.rating-dialog-stop-name::-webkit-scrollbar { display:none; }
.rating-title-controls { position:absolute; z-index:2; inset:0; display:flex; align-items:center; justify-content:space-between; pointer-events:none; }
.rating-title-controls button { display:grid; place-items:center; width:32px; height:32px; border:0; border-radius:6px; padding:0; background:var(--cream); color:var(--ink); opacity:0; pointer-events:none; }
.rating-title-shell:hover .rating-title-controls button:not(:disabled),.rating-title-controls button:focus-visible { opacity:1; pointer-events:auto; }
.rating-title-controls button svg { width:22px; height:22px; }
.rating-dialog .rating-row-content { width:max-content; max-width:100%; }
.rating-dialog .rating-input-value { flex-basis:2.2rem; }
.rating-member-list { border-top:0; margin-top:0; padding-top:0; }
.rating-member-row { grid-template-columns:minmax(0,1fr) auto; gap:10px; margin-bottom:10px; padding:12px; border:1px solid var(--line); border-radius:10px; }
.rating-member-stars { font-size:max(var(--text-min),.78rem); letter-spacing:-1px; color:#d99b16; }
.rating-member-details { grid-column:1 / -1; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:6px; justify-content:stretch; }
.rating-member-details .rating-member-score { display:flex; justify-content:flex-end; align-items:center; gap:4px; margin:0; }
.rating-member-star-row { display:flex; align-items:center; gap:1px; color:#d99b16; }
.rating-member-star-value { margin-right:3px; color:var(--ink); font-size:max(var(--text-min),.85rem); font-weight:800; }
.rating-member-star-slot { position:relative; display:grid; flex:0 0 18px; width:18px; height:18px; place-items:center; font-size:18px; line-height:1; }
.rating-member-star-outline,.rating-member-star-fill { position:absolute; inset:0; display:grid; place-items:center; pointer-events:none; }
.rating-member-star-outline { color:var(--muted); }
.rating-member-star-fill { color:#d99b16; }
.rating-dialog-actions button[hidden] { display:none !important; }
@media (max-width:430px) { .rating-member-row { grid-template-columns:1fr; } .rating-member-overall { justify-self:center; } }
body { -webkit-user-select:none; user-select:none; }
input,textarea,[contenteditable="true"] { -webkit-user-select:none; user-select:none; }
.rating-fieldset.is-rating-disabled { opacity:.78; }
.rating-fieldset.is-rating-disabled .rating-input { cursor:default; }
.rating-dialog .rating-tabs button { display:inline-flex; align-items:center; justify-content:center; gap:7px; white-space:nowrap; }
.rating-dialog .rating-tabs button svg { width:20px; height:20px; flex:0 0 20px; }
.rating-dialog .rating-tabs { gap:0; width:100%; margin:0 0 14px; overflow-x:auto; overflow-y:hidden; border-bottom:1px solid var(--line); overscroll-behavior-x:contain; scrollbar-width:none; }
.rating-dialog .rating-tabs::-webkit-scrollbar { display:none; }
.rating-dialog .rating-tabs button { flex:0 0 auto; min-height:42px; border:1px solid transparent; border-bottom:0; border-radius:10px 10px 0 0; background:transparent; color:var(--muted); }
.rating-dialog .rating-tabs button[aria-selected="true"] { position:relative; z-index:1; margin-bottom:-1px; border-color:var(--ink); background:var(--ink); color:var(--cream); }
.rating-tabs-shell .rating-tab-scroll { display:grid; place-items:center; width:36px; height:36px; min-width:36px; min-height:36px; padding:0; border:0; border-radius:6px; background:var(--cream); color:var(--ink); }
.rating-tabs-shell .rating-tab-scroll svg { width:24px; height:24px; }
.rating-tabs-shell .rating-tab-scroll:focus-visible { outline:2px solid var(--red); outline-offset:2px; }
.card-rating { padding:0 8px; }
.card-check-in { padding:0; }
.rating-tabs-shell { position:relative; margin:0 0 14px; }
.rating-tabs-shell::before,.rating-tabs-shell::after { position:absolute; z-index:2; top:0; bottom:1px; width:32px; opacity:0; pointer-events:none; content:""; transition:opacity .12s; }
.rating-tabs-shell::before { left:0; background:linear-gradient(90deg,var(--cream),transparent); }
.rating-tabs-shell::after { right:0; background:linear-gradient(-90deg,var(--cream),transparent); }
.rating-tabs-shell.has-tab-overflow-start::before,.rating-tabs-shell.has-tab-overflow-end::after { opacity:1; }
.rating-tabs-shell .rating-tabs { margin:0; }
.rating-tab-scroll-controls { pointer-events:none; }
.rating-tab-scroll { display:none; }
.rating-tab-panes { display:grid; min-height:clamp(0px,calc(88svh - 250px),420px); }
.rating-tab-pane { grid-area:1 / 1; }
.rating-dialog .rating-tab-pane[hidden] { display:none; }
@media (hover:hover) and (pointer:fine) { .rating-tab-scroll { position:absolute; z-index:3; top:4px; display:grid; place-items:center; width:32px; height:34px; border:0; border-radius:6px; padding:0; background:var(--cream); color:var(--ink); opacity:0; pointer-events:none; cursor:pointer; transition:opacity .12s; }.rating-tab-scroll svg { width:24px; height:24px; }.rating-tab-scroll--start { left:0; }.rating-tab-scroll--end { right:0; }.rating-tabs-shell:hover.has-tab-overflow-start .rating-tab-scroll--start,.rating-tabs-shell:hover.has-tab-overflow-end .rating-tab-scroll--end,.rating-tab-scroll:focus-visible { opacity:1; pointer-events:auto; } }
.rating-tabs-shell .rating-tab-scroll { top:50%; transform:translateY(-50%); cursor:pointer; }
.rating-dialog-heading-row h2 { padding-right:60px; }

/* Keep the compact card's controls at their existing size while removing spare framing space. */
.stop-card.is-collapsed { padding-top:12px; padding-bottom:12px; }
.stop-card.is-collapsed .address { margin-bottom:9px; }
.stop-card.is-collapsed .card-navigation { margin:8px -12px -12px; padding:8px 12px; }

/* A rating dialog should fit its selected pane instead of reserving space for the longest one. */
.rating-tab-panes { min-height:0; }
.rating-dialog { padding:14px; }
.rating-dialog h2 { margin-bottom:4px; }
.rating-tabs-shell { margin-bottom:10px; }
.rating-dialog .rating-fieldset { margin-bottom:4.5px; }
.rating-dialog .rating-row-icon { grid-row:1 / span 2; align-self:center; height:auto; min-height:0; }
.rating-dialog .rating-star-slot { transform:translateY(-15.2px); margin-bottom:-15.2px; }
.rating-dialog .rating-divider { margin:0 0 4.5px; }
.rating-dialog .rating-status:empty { display:none; }
.rating-dialog .rating-pane > .rating-fieldset:last-child { margin-bottom:0; }
.rating-dialog-actions { margin-top:4.5px; }
.stop-card-title-scrollport,.stop-card-address-scrollport,.rating-dialog-stop-name { scroll-behavior:smooth; }
.eyebrow,.timing dt,.card-navigation,.route-summary,.crawl-plan-peek small,.crawl-plan-stop small,.member-roster th,.member-roster-identity small,.rating-member-name small { font-size:var(--text-compact); }
.address { font-size:var(--text-secondary); }
.timing dd,.photo-caption,.photo-note,.photo-status,.member-profile label,.member-invite-result label,.join-panel label,.rating-fieldset legend,.rating-status,.member-roster p { font-size:var(--text-secondary); }
.member-settings-toggle,.member-avatar-settings,.member-settings-dialog-close,.end-event,.avatar-picker-actions button,.avatar-picker>button { font-size:var(--text-body); }
.member-avatar-settings:disabled { opacity:.6; cursor:not-allowed; }
.member-avatar-status:empty { display:none; }
.avatar-picker-icon-name { display:none; }
.avatar-picker-icons.is-icon-fallback { grid-template-columns:repeat(2,minmax(0,1fr)); }
.avatar-picker-icons.is-icon-fallback .avatar-picker-icon-name { display:inline; font-size:var(--text-compact); }
.avatar-picker-icons.is-icon-fallback i { display:none; }
.member-settings { background:var(--cream); }
.member-settings h2,.rating-member-list h3 { font-size:var(--text-section); }.organiser-pane>h2 { font-size:1.25rem; }
@media (max-width:720px) { .rating-tab-scroll { display:none !important; } }
@media (hover:none), (pointer:coarse) { .card-text-shell .card-overflow-group button,.rating-title-controls button { display:none !important; } }

body.is-night .member-settings { border-color:var(--line); background:var(--cream); color:var(--ink); }

.rating-tabs button,.rating-dialog button { font-weight:800; }
.card-header-row:has(.card-check-in) { --card-title-row-height:calc(clamp(1.5rem,2.5vw,2rem) * 1.2); display:grid; grid-template-columns:42px minmax(0,1fr) max-content; gap:10px; align-items:start; }
.card-header-row:has(.card-check-in) .card-header,.card-header-row:not(:has(.card-check-in)) .card-header { --card-title-row-height:calc(clamp(1.5rem,2.5vw,2rem) * 1.2); }
.card-header-row:has(.card-check-in) .card-header h2,.card-header-row:not(:has(.card-check-in)) .card-header h2 { line-height:1.2; }
.card-header-row:has(.card-check-in) .card-check-in { grid-column:1; grid-row:1; align-self:start; margin-top:calc(var(--card-title-row-height) - 21px); }
.card-header-row:has(.card-check-in) .card-header { grid-column:2; grid-row:1 / span 2; }
.card-header-row:has(.card-check-in) .card-rating { grid-column:3; grid-row:1; align-self:start; min-width:max-content; margin-top:calc(var(--card-title-row-height) - 21px); }
.card-header-row:not(:has(.card-check-in)) { --card-title-row-height:calc(clamp(1.5rem,2.5vw,2rem) * 1.2); display:grid; grid-template-columns:minmax(0,1fr) max-content; gap:10px; align-items:start; }
.card-header-row:not(:has(.card-check-in)) .card-header { grid-column:1; grid-row:1 / span 2; }
.card-header-row:not(:has(.card-check-in)) .card-rating { grid-column:2; grid-row:1; align-self:start; min-width:max-content; margin-top:calc(var(--card-title-row-height) - 21px); }
.route-summary { gap:clamp(5px,2vw,11px); padding:clamp(7px,2vw,12px) clamp(8px,2.5vw,14px); font-size:max(var(--text-min),clamp(.6rem,2.4vw,.79rem)); white-space:nowrap; }
.route-summary span { gap:clamp(3px,1.2vw,5px); }
.route-summary svg { width:1.35em; height:1.35em; flex:0 0 auto; }
.route-summary button b,.route-summary span b { font-size:1.22em; }
.route-summary button+button,.route-summary button+span,.route-summary span+span { padding-left:clamp(5px,2.2vw,11px); }
.member-avatar-image { position:absolute; inset:0; display:block; width:100%; height:100%; border-radius:50%; object-fit:cover; clip-path:circle(50%); }
.member-map-selfie { object-fit:cover; }
.member-roster-avatar-button,.rating-member-avatar { position:relative; overflow:hidden; }
body.is-night .rating-dialog .rating-tabs button[aria-selected="true"] { border-color:var(--ink); background:var(--ink); color:var(--cream); }
/* Admin sections share one title/help/control/divider structure. */
.admin-section-heading { display:flex; align-items:center; gap:8px; width:100%; margin:0; font-size:var(--text-section); font-weight:850; line-height:1.25; }
.admin-section-heading:is(h3) { font-size:var(--text-section); }
.admin-section-heading:is(h4) { font-size:var(--text-body); }
.admin-section-heading .admin-section-title-text { min-width:0; }
.admin-section-toggle-heading { list-style:none; cursor:pointer; }
.admin-section-toggle-heading::-webkit-details-marker { display:none; }
.admin-section-toggle-heading>svg:nth-child(2) { width:22px; height:22px; }
.admin-section-toggle-heading>svg:first-child { transition:transform .16s ease; }
.member-invites[open]>.admin-section-toggle-heading>svg:first-child,.organiser-section[open]>.admin-section-toggle-heading>svg:first-child { transform:rotate(90deg); }
.admin-section-help { display:flex; align-items:center; gap:10px; width:100%; }
.member-account-logout { display:flex; flex-direction:column; align-items:flex-start; gap:12px; width:100%; max-width:1050px; margin:0 auto 14px; }
.member-account-logout>.edit-stops { align-self:flex-start; }
.member-account-logout:empty { display:none; }
.admin-section-help-messages { flex-direction:column; align-items:stretch; }
.admin-section-help-messages>.action-message { flex:none; width:100%; }
.admin-section-help>span { flex:1 1 auto; min-width:0; color:var(--muted); font-size:.9rem; line-height:1.45; }
.admin-section-help .action-info-dialog { position:fixed; }
.admin-section-help .action-info-button { margin-left:auto; }
.admin-section-divider { width:100%; height:0; margin:var(--section-divider-before) 0 var(--section-divider-after); border:0; border-top:1px solid var(--line); }
.organiser-section { padding:0; margin:0; }
.icon-button.action-info-button,.icon-button.member-settings-info { display:grid; place-items:center; width:38px; height:38px; min-width:38px; min-height:38px; flex:0 0 38px; padding:0; border-radius:50%; }
.organiser-controls .icon-button.action-info-button,.organiser-pane .icon-button.action-info-button { flex-basis:38px; width:38px; height:38px; min-height:38px; margin-left:auto; border-color:var(--ink); background:var(--ink); color:white; }
.organiser-event-date-row { display:flex; align-items:center; flex-wrap:wrap; gap:8px; width:100%; }
.organiser-event-date { width:min(15rem,100%); min-height:44px; padding:8px 10px; border:1px solid var(--line); border-radius:7px; background:var(--cream); color:var(--ink); font:inherit; }
.organiser-event-date-row .edit-stops { flex:0 0 auto; width:max-content; }
body.is-night .organiser-event-date { border-color:#4d7083; background:#10293a; color:#f7fbfc; }
.action-message { display:flex; align-items:center; gap:9px; width:100%; padding:10px 12px; border:1px solid var(--message-success-border); border-radius:8px; background:var(--message-success-background); color:var(--message-success-text); line-height:1.45; white-space:pre-line; }
.action-message[hidden] { display:none; }
.no-wrap-term { display:inline-block; white-space:nowrap; overflow-wrap:normal; word-break:normal; }
.stop-wifi-fields label[hidden] { display:none; }
.action-message>svg { width:19px; height:19px; flex:0 0 19px; }
.action-message>p { margin:0; min-width:0; }
.action-message-error { border-color:var(--message-error-border); background:var(--message-error-background); color:var(--message-error-text); }
.action-message-info { border-color:var(--message-info-border); background:var(--message-info-background); color:var(--message-info-text); }
.action-message-warning { border-color:var(--message-pending-border); background:var(--message-pending-background); color:var(--message-pending-text); }
.crawl-plan-peek { grid-template-columns:44px minmax(0,1fr) auto; }
.organiser-member-login { margin-bottom:16px; }
.organiser-member-login .action-message { min-width:0; }
.action-info-subject p>.edit-stops { display:flex; margin-top:12px; }
.join-privacy>.action-message { flex:1; min-width:0; }
.completion-guidance { display:flex; align-items:center; gap:9px; width:100%; box-sizing:border-box; padding:10px 12px; border:1px solid var(--message-pending-border); border-radius:8px; background:var(--message-pending-background); color:var(--message-pending-text); line-height:1.45; }
.completion-guidance.is-complete { border-color:var(--message-success-border); background:var(--message-success-background); color:var(--message-success-text); }
.completion-guidance>svg { width:19px; height:19px; flex:0 0 19px; }
.organiser-field-label { display:inline-flex; align-items:center; gap:7px; }
.organiser-field-label svg { width:17px; height:17px; color:inherit; }
.organiser-event-lifecycle,.organiser-event-details { display:block; }
.edit-stops:disabled,.confirmation-dialog button:disabled { opacity:.55; cursor:not-allowed; }
:root { --filled-action-base:#112f46; --filled-action-border:#112f46; --filled-action-text:#fff; --filled-action-hover:#254861; --secondary-action-hover:#eef4f0; --secondary-action-hover-text:#112f46; --danger-action-base:#b72e3d; --danger-action-hover:#cf4350; --danger-action-text:#b72e3d; }
body.is-night { --filled-action-base:#254861; --filled-action-border:#6fa8c9; --filled-action-text:#f7fbfc; --filled-action-hover:#32627f; --secondary-action-hover:#26465c; --secondary-action-hover-text:#f7fbfc; --danger-action-base:#b72e3d; --danger-action-hover:#d44a57; --danger-action-text:#ff8994; }
.edit-stops:focus-visible,.confirmation-dialog button:focus-visible,.action-info-button:focus-visible { outline:3px solid var(--red); outline-offset:3px; }
.action-info-dialog h2 { margin-bottom:12px; }
.confirmation-dialog .action-info-close { border-color:var(--ink); background:var(--ink); color:var(--paper); }
body.is-night .organiser-controls .icon-button.action-info-button,body.is-night .organiser-pane .icon-button.action-info-button { border-color:#6fa8c9; background:#254861; color:#f7fbfc; }
.member-access-guidance { max-width:1050px; margin:0 auto 18px; }
.member-access-guidance>p { margin:10px 0; color:var(--muted); font-size:var(--text-secondary); }
.member-access-guidance>.edit-stops { margin-top:12px; }
.map-member-guidance { position:absolute; z-index:2; top:88px; left:50%; transform:translateX(-50%); display:flex; align-items:center; gap:8px; width:max-content; max-width:min(420px,calc(100vw - 36px)); margin:0; padding:8px 11px; border:1px solid var(--line); border-radius:8px; background:var(--cream); color:var(--muted); font-size:var(--text-compact); box-shadow:0px 18px 12px #09203320; cursor:pointer; }
.map-member-guidance[hidden] { display:none; }
.map-member-guidance svg { width:18px; height:18px; flex:0 0 18px; }

/* Member stats reuse the rating dialog and shared action/info controls. */
.member-roster-stats-heading,.member-roster-stats { width:44px; text-align:center; }
.member-roster-stats-heading svg { width:18px; height:18px; }
.member-stats-dialog .member-stats-name { margin:0 0 14px; font-size:1.1rem; font-weight:750; overflow-wrap:anywhere; }
.member-stats-header { display:flex; gap:12px; align-items:center; justify-content:space-between; margin-bottom:14px; }
.member-stats-dialog .member-stats-header h2 { margin:0; }
.member-stats-dialog .action-info-button { border-radius:50%; padding:0; min-height:38px; }
.member-stats-values { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.4fr); gap:16px 12px; margin:20px 0; padding:18px 0; border-block:1px solid var(--line); }
.member-stats-values dt { display:flex; align-items:center; gap:8px; font-weight:750; }
.member-stats-values dt svg { width:20px; height:20px; flex:0 0 20px; color:var(--muted); }
.member-stats-values dd { margin:0; text-align:right; align-self:center; font-weight:400; overflow-wrap:anywhere; }

/* Native phone tap rectangles obscure the app's own pressed state. Keyboard focus stays visible. */
a,button,input,select,textarea,[role="button"],[role="tab"] { -webkit-tap-highlight-color:transparent; }
:focus-visible { outline:3px solid var(--red); outline-offset:3px; }
.press-hold-available { position:fixed; z-index:11; display:block; box-sizing:border-box; border:2px solid var(--red); border-radius:50%; background:color-mix(in srgb,var(--red) 14%,transparent); pointer-events:none; }
body.is-night .press-hold-available { border-color:#f4b942; background:color-mix(in srgb,#f4b942 15%,transparent); }
.action-message.is-fading { opacity:0; transition:opacity 1s ease; }
@media (prefers-reduced-motion:reduce) { .action-message.is-fading { transition:none; } }
.member-settings-section + .member-settings-section,.appearance-settings + #member-settings { margin-top:18px; padding-top:18px; border-top:1px solid var(--line); }
.member-settings-section>p { margin:0 0 12px; }
.member-settings-section--danger .member-settings-delete { display:inline-flex; align-items:center; justify-content:center; gap:7px; min-height:40px; padding:8px 12px; border:1px solid var(--danger-action-text); border-radius:7px; background:transparent; color:var(--danger-action-text); font:inherit; font-weight:800; cursor:pointer; }
.member-settings-delete svg { width:20px; height:20px; flex:0 0 20px; }
.member-settings-delete:disabled { opacity:.6; cursor:not-allowed; }
.member-avatar-settings { margin-left:0; }
.crawl-plan-header .crawl-start-description,.crawl-plan-header .event-schedule-display { display:flex; align-items:center; gap:8px; color:var(--muted); font-size:var(--text-body); font-weight:400; line-height:1.45; }
.crawl-start-description>svg,.event-schedule-display>svg { width:20px; height:20px; flex:0 0 20px; color:inherit; }
.member-roster-stats-heading svg { display:block; margin-inline:auto; }
.member-stats-last-check-in { display:grid; grid-template-columns:31px minmax(0,1fr); align-items:center; gap:8px; }
.member-stats-last-check-in .map-marker { flex:0 0 31px; }
.action-info-dialog { width:min(500px,calc(100vw - 24px)); max-height:88svh; overflow:auto; }
.action-info-subject { display:grid; grid-template-columns:22px minmax(0,1fr); gap:10px; align-items:start; margin:0 0 14px; }
.action-info-subject svg { width:20px; height:20px; color:var(--muted); }
.action-info-dialog .action-info-subject p { margin:0; font-weight:400; line-height:1.5; }
.confirmation-dialog p,.member-settings-dialog p { font-weight:400; }
.external-action-icon { position:relative; display:inline-grid; place-items:center; width:20px; height:20px; flex:0 0 20px; vertical-align:middle; }
.external-action-icon>svg:first-child { width:18px; height:18px; }
.external-action-icon>svg:last-child { position:absolute; top:-4px; right:-5px; width:10px; height:10px; background:var(--cream); border-radius:2px; }
.press-hold-help { overflow-wrap:anywhere; white-space:normal; }
.map-member-guidance>span { min-width:0; overflow-wrap:anywhere; }
/* Narrow dialogs keep icon and label together. Native touch scrolling moves the row;
   directional fades only appear when an action is outside the visible area. */
@media (max-width:600px) and (pointer:coarse) {
  .dialog-action-scrollport:is(.confirmation-dialog-actions,.rating-dialog-actions) { justify-content:flex-start; flex-wrap:nowrap; max-width:100%; overflow-x:auto; overflow-y:hidden; overscroll-behavior-x:contain; scrollbar-width:none; touch-action:pan-x; }
  .dialog-action-scrollport::-webkit-scrollbar { display:none; }
  .dialog-action-scrollport>button { flex:0 0 auto; white-space:nowrap; }
  .dialog-action-scrollport.has-overflow-start.has-overflow-end { mask-image:linear-gradient(90deg,transparent,black 16px,black calc(100% - 16px),transparent); }
  .dialog-action-scrollport.has-overflow-start:not(.has-overflow-end) { mask-image:linear-gradient(90deg,transparent,black 16px); }
  .dialog-action-scrollport.has-overflow-end:not(.has-overflow-start) { mask-image:linear-gradient(90deg,black calc(100% - 16px),transparent); }
}
/* Shared fine-pointer affordance for unfilled controls. Filled and destructive
   actions, map markers, overflow arrows and star choices have role-specific cues. */
@media (hover:hover) and (pointer:fine) {
  .member-roster-avatar-button[data-member-avatar]:hover { scale:1.05; }
}
/* The title remains an effect button; its help label is a separate overlay. */
.brand { border:0; cursor:pointer; -webkit-tap-highlight-color:transparent; }
:root { --help-highlight:var(--red); --help-text:var(--cream); }
body.is-night { --help-highlight:#f4b942; --help-text:var(--paper); }
.press-hold-title,.press-hold-help { position:fixed; z-index:12; left:50%; transform:translateX(-50%); box-sizing:border-box; border:1px solid var(--help-highlight); border-radius:8px; padding:8px 11px; background:var(--help-highlight); color:var(--help-text); box-shadow:0px 24px 16px #09203335; pointer-events:none; text-align:center; }
.press-hold-title { display:inline-flex; align-items:center; gap:7px; font-size:max(var(--text-min),.8rem); font-weight:850; letter-spacing:.08em; }
.press-hold-title svg { width:20px; height:20px; }
.press-hold-help { max-width:min(260px,calc(100vw - 16px)); max-height:calc(100vh - 96px); overflow:auto; font-size:max(var(--text-min),.75rem); font-weight:750; line-height:1.3; overflow-wrap:anywhere; white-space:normal; }
/* A constrained one-line title follows the card/rating scrollport pattern. */
.crawl-plan-header>div { min-width:0; width:100%; }
#crawl-plan-title { min-width:0; width:100%; }
.crawl-title-shell { position:relative; display:block; min-width:0; flex:0 1 auto; max-width:100%; }
.crawl-title-scrollport { display:block; overflow-x:auto; white-space:nowrap; scrollbar-width:none; touch-action:pan-x; scroll-behavior:smooth; padding-bottom:5.5px; }
.crawl-plan-header p:not(.eyebrow) { margin-top:2.5px; }
.crawl-title-scrollport::-webkit-scrollbar { display:none; }
.crawl-title-shell::before,.crawl-title-shell::after { position:absolute; z-index:1; top:0; bottom:0; width:32px; opacity:0; pointer-events:none; content:""; transition:opacity .12s; }
.crawl-title-shell::before { left:0; background:linear-gradient(90deg,var(--cream),transparent); }
.crawl-title-shell::after { right:0; background:linear-gradient(-90deg,var(--cream),transparent); }
.crawl-title-shell.has-overflow-start::before,.crawl-title-shell.has-overflow-end::after { opacity:1; }
.crawl-title-controls { position:absolute; z-index:2; inset:0; display:flex; align-items:center; justify-content:space-between; pointer-events:none; }
.crawl-title-controls button { display:none; place-items:center; width:32px; height:32px; border:0; border-radius:6px; padding:0; background:var(--cream); color:var(--ink); opacity:0; pointer-events:none; cursor:pointer; }
.crawl-title-controls button svg { width:22px; height:22px; }
@media (hover:hover) and (pointer:fine) {
  .crawl-title-controls button { display:grid; }
  .crawl-title-shell:hover .crawl-title-controls button:not(:disabled),.crawl-title-controls button:focus-visible { opacity:1; pointer-events:auto; }
}
/* Reserve the left glyph column for the complete external icon. */
.timing dt>.external-action-icon { position:absolute; left:0; top:50%; transform:translateY(-50%); }
.timing dt .external-action-icon>svg:first-child { position:static; width:22px; height:22px; transform:none; }
.timing dt .external-action-icon>svg:last-child { position:absolute; top:-4px; right:-5px; left:auto; width:12px; height:12px; transform:none; }
.external-action-icon { width:24px; height:24px; flex-basis:24px; color:inherit; }
.external-action-icon>svg:first-child { width:21px; height:21px; }
.external-action-icon>svg:last-child { width:12px; height:12px; color:var(--red); }
body.is-night .external-action-icon>svg:last-child { color:#f4b942; }
/* Join can use the same saved day/night preference as the guide. */
.join-panel { position:relative; }
.join-heading { padding-right:64px; }
.join-panel .join-theme-toggle { position:absolute; top:16px; right:16px; display:grid; place-items:center; width:52px; height:52px; min-height:52px; margin:0; padding:0; border:0; border-radius:50%; background:#fffdf9; color:var(--ink); box-shadow:0px 38px 25px #09203326; }
.join-panel .join-theme-toggle svg { width:30px; height:30px; }
body.is-night .join-panel .join-theme-toggle { background:var(--cream); color:var(--ink); }
.masthead-effect--rocket,.masthead-effect--storm { -webkit-tap-highlight-color:transparent; }
.crawl-plan-header { touch-action:auto; }
#admin-access-status { max-width:1050px; margin:0 auto 14px; }
.organiser-access-summary { display:grid; gap:8px; margin:0; }
.admin-access-guidance { display:flex; align-items:center; gap:12px; }
.admin-access-guidance>.action-message,.admin-section-help>.action-message { flex:1; min-width:0; margin:0; }
.organiser-access-summary p { margin:0; }
.organiser-access-summary .organiser-logout-row { width:max-content; max-width:100%; }
.organiser-access-summary .edit-stops { width:max-content; max-width:100%; }
.organiser-access-summary small { color:var(--muted); }
.organiser-access-summary a:not(.edit-stops) { color:inherit; text-decoration:underline; }
.organiser-pane>h2 { margin-bottom:16px; }
.organiser-controls { display:grid; align-items:stretch; gap:16px; margin:0 auto 16px; padding:0; }
.organiser-controls .organiser-section { box-sizing:border-box; width:100%; margin:0; padding:16px; border:1px solid var(--line); border-radius:10px; }
.organiser-controls .organiser-section>summary { display:flex; align-items:center; }
.organiser-section-body { display:grid; gap:12px; margin-top:16px; }
.organiser-section-body>.admin-section-help { margin-top:-4px; }
.action-message { box-sizing:border-box; }
.organiser-pane .member-invites { gap:16px; margin:0; padding:16px; border:1px solid var(--line); }
.invite-path { box-sizing:border-box; display:block; min-width:0; padding:14px; border:1px solid var(--line); border-radius:9px; }
.member-invites>.admin-section-help { margin-bottom:16px; }
.organiser-section,.invite-path-body,.member-invite-row,.member-invite-row-result,.member-invite-result,.member-invite-actions { min-width:0; }
.member-invite-actions button { min-width:0; overflow-wrap:anywhere; }
.member-invite-actions button span { min-width:0; white-space:normal; }
.invite-path button:not(.action-info-button) { max-width:100%; min-width:0; box-sizing:border-box; }
.member-invite-row button>span { flex:0 1 auto; min-width:0; white-space:normal; }
.member-invite-row-actions { max-width:100%; flex-wrap:wrap; }
@media (max-width:420px) { .invite-path { padding:10px; } .member-invite-actions { grid-template-columns:minmax(0,1fr); } .member-invite-row-actions { display:grid; grid-template-columns:minmax(0,1fr); width:100%; } }
.invite-path + .invite-path { margin-top:16px; }
.invite-path>summary.admin-section-heading { display:flex; align-items:center; border-radius:8px; font-size:var(--text-body); }
.invite-path>summary.admin-section-heading>svg:first-child { width:22px; height:22px; flex:0 0 22px; }
.invite-path-body { display:grid; gap:12px; margin-top:12px; }
.invite-path>.admin-section-heading>svg { width:22px; height:22px; flex:0 0 22px; }
.invite-path .member-invite-result { min-width:0; margin-top:0; }
.invite-path .member-invite-result label { display:grid; gap:8px; min-width:0; }
.invite-path .member-invite-result input { box-sizing:border-box; width:100%; min-width:0; min-height:42px; border:1px solid var(--line); border-radius:7px; padding:8px 10px; background:var(--cream); color:var(--ink); font:inherit; font-weight:500; }
.invite-path .member-invite-actions { width:100%; }
.invite-path .member-invite-list { margin-top:0; }
.invite-path .member-invite-row:first-child { border-top:1px solid var(--line); }
.timing>.next-directions { box-sizing:border-box; display:block; width:100%; border:0; border-radius:8px; padding:6px 8px 6px 32px; background:transparent; color:var(--ink); text-align:left; text-decoration:none; cursor:pointer; }
@media (hover:hover) and (pointer:fine) {
  .timing>.next-directions:hover {   text-decoration:none; }
}
.member-invite-link-action { display:grid; align-content:start; gap:6px; min-width:0; }
.member-invite-link-action button { width:100%; }
.member-invite-link-action .action-message { box-sizing:border-box; min-width:0; margin:0; }
.member-invite-row-actions { align-items:start; }
.action-info-subject { align-items:center; }
.action-info-subject svg { display:block; margin-inline:auto; }
.timing>.next-directions:hover { text-decoration:none; }
.crawl-reset-choices { display:grid; gap:10px; margin-top:12px; }
.crawl-reset-choice { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:8px; }
.crawl-reset-choice>.edit-stops { justify-content:center; min-width:0; margin:0; }
.confirmation-dialog .crawl-reset-choice>.action-info-button { display:grid; place-items:center; width:40px; height:40px; min-height:40px; margin:0; padding:0; border-radius:50%; }
.confirmation-dialog .crawl-reset-choice>.action-info-button svg { width:20px; height:20px; }
.confirmation-dialog .crawl-reset-choice>.edit-stops:first-of-type:where(:not(.is-destructive,[data-destructive="true"])) { border-color:var(--ink); background:var(--ink); color:var(--paper); }
body.is-night .confirmation-dialog .crawl-reset-choice>.edit-stops:first-of-type:where(:not(.is-destructive,[data-destructive="true"])) { border-color:#6fa8c9; background:#254861; color:#f7fbfc; }
.organiser-section>summary.admin-section-heading,.member-invites>summary.admin-section-heading { font-size:var(--text-section); font-weight:850; line-height:1.25; }
.organiser-section>summary.admin-section-heading>svg:first-child,.member-invites>summary.admin-section-heading>svg:first-child { width:22px; height:22px; flex:0 0 22px; }
:is(.organiser-section,.member-invites)>summary { border-radius:8px; }
.member-invites .edit-stops.is-destructive,.photo-panel .photo-text-button.is-destructive,.photo-gallery button.is-destructive { border-color:var(--danger-action-base); background:var(--danger-action-base); color:#fff; }
@media (hover:hover) and (pointer:fine) {
  .member-roster-identity:is(button):hover { text-decoration:underline; text-underline-offset:3px; }
  :is(.map-marker,.member-map-marker):hover { filter:brightness(1.08); }
}

/* Context messages deliberately keep the approved night palette in both themes. */
:root { --message-success-border:#476d5a; --message-success-background:#183a2b; --message-success-text:#d7f0df; --message-error-border:#80545b; --message-error-background:#3e2730; --message-error-text:#ffdce0; --message-info-border:#4d7083; --message-info-background:#10293a; --message-info-text:#d5e7ef; --message-pending-border:#927444; --message-pending-background:#3b321f; --message-pending-text:#ffdeaa; }
:is(.info-pane,.map-member-guidance),body.is-night .info-pane { border-color:var(--message-info-border); background:var(--message-info-background); color:var(--message-info-text); }
.info-pane p { color:inherit; }
.map-status,body.is-night .map-status { background:var(--message-info-background); color:var(--message-info-text); }

/* Secondary dialog actions are explicit roles, independent of their row position. */
:is(.confirmation-dialog,.rating-dialog) .edit-stops.is-secondary,body.is-night :is(.confirmation-dialog,.rating-dialog) .edit-stops.is-secondary { border-color:var(--line); background:transparent; color:var(--ink); }

.photo-empty { border:1px solid #385268; background:#1c3448; color:#dbe8eb; }
.photo-empty>svg { color:#ffd166; }

/* Dedicated day message palette: stronger pastels, dark readable text. */
body:not(.is-night) { --message-success-border:#9bbea7; --message-success-background:#d8ebde; --message-success-text:#173d2b; --message-error-border:#d69a9f; --message-error-background:#f4dadd; --message-error-text:#7d2028; --message-info-border:#aac3d0; --message-info-background:#ddeaf0; --message-info-text:#112f46; --message-pending-border:#c8ab66; --message-pending-background:#f2e4bf; --message-pending-text:#5e4215; }
body:not(.is-night) .photo-empty { border-color:#b8cec2; background:#dce9e1; color:#334f44; }
body:not(.is-night) .photo-empty>svg { color:#112f46; }
/* Preserve the existing shared drawer/rating selection treatment. */
.drawer-tabs button[aria-selected="true"],.rating-dialog .rating-tabs button[aria-selected="true"],body.is-night .rating-dialog .rating-tabs button[aria-selected="true"] { border-color:var(--ink); background:var(--ink); color:var(--cream); }
.rating-dialog .rating-dialog-done,.photo-gallery button[aria-pressed="true"],body.is-night .photo-gallery button[aria-pressed="true"] { background:var(--filled-action-base); color:var(--filled-action-text); border-color:var(--filled-action-border); }
.member-settings-toggle,.member-avatar-settings,.rating-dialog-cancel { background:var(--filled-action-base); color:var(--filled-action-text); border-color:var(--filled-action-border); }
.confirmation-dialog .edit-stops.is-secondary,body.is-night .confirmation-dialog .edit-stops.is-secondary { background:var(--filled-action-base); color:var(--filled-action-text); border-color:var(--filled-action-border); }
.member-settings-section--danger .member-settings-delete { background:var(--danger-action-base); color:#fff; border-color:var(--danger-action-base); }
.member-roster-identity:is(button):hover { text-decoration:none; border-radius:7px; }
.is-rating-pending { animation:rating-pending-cue .8s ease 2; }
@keyframes rating-pending-cue { 50% { box-shadow:inset 0 0 0 3px var(--attention-colour,var(--red)); } }
@media (prefers-reduced-motion:reduce) { .is-rating-pending { animation:none; box-shadow:inset 0 0 0 3px var(--attention-colour,var(--red)); } }


:is(.organiser-controls,.organiser-pane) .icon-button.action-info-button,body.is-night :is(.organiser-controls,.organiser-pane) .icon-button.action-info-button { background:var(--cream); color:var(--ink); border-color:var(--line); }
:is(.confirmation-dialog,.rating-dialog) .edit-stops.is-secondary,body.is-night :is(.confirmation-dialog,.rating-dialog) .edit-stops.is-secondary { background:var(--filled-action-base); color:var(--filled-action-text); border-color:var(--filled-action-border); }

.confirmation-dialog .confirmation-dialog-actions .edit-stops:not(.is-destructive),body.is-night .confirmation-dialog .confirmation-dialog-actions .edit-stops:not(.is-destructive) { background:var(--filled-action-base); color:var(--filled-action-text); border-color:var(--filled-action-border); }

.storm-chain { position:absolute; inset:0; z-index:2; width:100%; height:100%; overflow:visible; pointer-events:none; }
.storm-chain path { fill:none; stroke:#ffd166; stroke-width:3; stroke-linecap:round; stroke-linejoin:round; filter:drop-shadow(0 0 3px #fff3b0); }

/* Field captions share one role; entered text remains ordinary weight. */
:root { --font-field-label:800; }
label,.organiser-field-label,.member-invite-result label,.event-link-controls label,.rating-fieldset legend { font-family:inherit; font-weight:var(--font-field-label); }
.member-invite-result label,.event-link-controls label { font-size:var(--text-secondary); }
label input:not([type="number"]),label textarea,label select { font-weight:400; }
/* Basic dialog prose is main text, not muted supporting copy. */
.confirmation-dialog p,.member-settings-dialog p,.action-info-dialog .action-info-subject p { color:var(--ink); font-weight:400; }
.action-info-subject svg { color:var(--ink); }
.photo-actions .photo-text-button.take-photo { color:var(--filled-action-text); }

/* Explicit primary roles share the established palette regardless of context. */
:is(button,a).edit-stops:not(.is-secondary,.is-destructive,[data-destructive="true"]),button.is-primary:not(.is-secondary,.is-destructive,[data-destructive="true"]),
body.is-night :is(button,a).edit-stops:not(.is-secondary,.is-destructive,[data-destructive="true"]),body.is-night button.is-primary:not(.is-secondary,.is-destructive,[data-destructive="true"]) { background:var(--filled-action-base); color:var(--filled-action-text); border-color:var(--filled-action-border); }
.avatar-picker-icons button:not([aria-pressed="true"]),body.is-night .avatar-picker-icons button:not([aria-pressed="true"]) { background:transparent; color:var(--ink); border-color:var(--line); }
/* Basic dialogs share one emphasis weight, even inside organiser controls. */
.confirmation-dialog strong,.action-info-dialog .action-info-subject strong,.member-settings-dialog strong { font-family:inherit; font-weight:var(--font-emphasis); }
:is(label,.organiser-field-label,.admin-section-heading,.action-info-subject,.member-stats-values dt,.join-detail-row,.join-secondary,.join-privacy) svg,
:is(button,a).edit-stops>svg,button.is-primary>svg,.avatar-picker-icons button>svg { color:inherit; }

/* Settings guidance and feedback use the shared contextual message role. */
.member-settings .action-message { margin:12px 0; font-size:var(--text-body); font-weight:400; }
.member-access-guidance { display:grid; gap:12px; }
.member-event-contact { display:grid; gap:8px; min-width:0; overflow-wrap:anywhere; }
.member-event-contact:empty { display:none; }
.organiser-event-visibility select { margin-top:6px; width:100%; padding:8px; border:1px solid var(--line); border-radius:6px; font:inherit; background:var(--cream); color:var(--ink); }
.organiser-controls .edit-stops { max-width:100%; white-space:normal; }
#event-details-control { margin-left:auto; flex:0 0 auto; }
.member-access-guidance>.admin-section-help { margin:0; }
.member-access-guidance .action-message { margin:0; flex:1; min-width:0; }
.member-settings-summary>.action-message { flex:1; min-width:0; }
.action-message { font-size:var(--text-body); font-weight:400; text-align:left; }
.photo-panel .action-message,.photo-gallery-list>.action-message { grid-column:1 / -1; }
.photo-panel .action-message { margin-top:10px; }
.rating-dialog .action-message { font-size:var(--text-body); }

:root { --font-emphasis:700; }
.photo-caption { font-size:var(--text-secondary); font-weight:400; color:var(--muted); line-height:1.5; }
.photo-gallery .photo-caption { text-align:center; }
.photo-gallery-venue { font-size:var(--text-secondary); font-weight:400; }

/* Disabled Overall stars pass the attempted press to their field's Clear cue. */
.is-rating-disabled .rating-half-hit { pointer-events:none; }
.rating-dialog .rating-dialog-cancel.is-destructive,body.is-night .rating-dialog .rating-dialog-cancel.is-destructive { background:var(--danger-action-base); color:#fff; border-color:var(--danger-action-base); }

/* Preservation commits new data or explicitly keeps existing data. */
:root { --preservation-action-base:#236144; --preservation-action-border:#236144; --preservation-action-text:#fff; --preservation-action-hover:#2e7653; }
body.is-night { --preservation-action-base:#285f46; --preservation-action-border:#6ba98a; --preservation-action-text:#f7fbfc; --preservation-action-hover:#357653; }
.is-preservation { --filled-action-base:var(--preservation-action-base); --filled-action-border:var(--preservation-action-border); --filled-action-text:var(--preservation-action-text); --filled-action-hover:var(--preservation-action-hover); }
:is(.member-access-controls,.join-panel,.organiser-controls,.organiser-pane,.editor-actions,.confirmation-dialog .confirmation-dialog-actions,.rating-dialog,.photo-panel,.avatar-picker) button:is(.edit-stops,.photo-text-button,.is-primary).is-preservation,
body.is-night :is(.member-access-controls,.join-panel,.organiser-controls,.organiser-pane,.editor-actions,.confirmation-dialog .confirmation-dialog-actions,.rating-dialog,.photo-panel,.avatar-picker) button:is(.edit-stops,.photo-text-button,.is-primary).is-preservation { background:var(--preservation-action-base); border-color:var(--preservation-action-border); color:var(--preservation-action-text); }
.end-event,body.is-night .end-event { background:var(--danger-action-base); border-color:var(--danger-action-base); color:#fff; }
/* Stable proportions accommodate both Close and Discard; touch overflow remains a fallback. */
.rating-dialog .rating-status.action-message { margin:14px 0; }
.rating-dialog>.rating-dialog-actions { margin:16px 0 8px; gap:clamp(6px,2vw,10px); }
.rating-dialog>.rating-dialog-actions>button { flex:1 1 0; min-width:max-content; justify-content:center; gap:.35em; padding:.45em .5em; font-size:max(var(--text-min),clamp(.75rem,3.6vw,.95rem)); min-height:40px; white-space:nowrap; }
.rating-dialog>.rating-dialog-actions>button svg,.rating-dialog>.rating-dialog-actions>button i { width:1.2em; height:1.2em; flex:0 0 1.2em; }
/* Action contents stay centred when their container stretches the button. */
.edit-stops,.photo-actions .photo-text-button,.photo-gallery-item button,.confirmation-dialog-actions button,.photo-dialog-close { justify-content:center; }
.member-stats-dialog .member-stats-name { display:flex; align-items:center; gap:16px; }
.member-stats-name .member-roster-avatar-button { flex:0 0 32px; }
.member-stats-name .member-roster-avatar-button svg { width:20px; height:20px; }

/* One flow stack: hidden/empty notices reserve no space, wrapped messages push
   following notices down, and HELP always precedes its held explanation. */
.map-notice-stack { position:absolute; top:88px; left:0; right:0; margin-inline:auto; width:min(420px,calc(100vw - 36px)); display:flex; flex-direction:column; gap:8px; align-items:center; pointer-events:none; }
.map-notice-stack>* { position:static; inset:auto; transform:none; box-sizing:border-box; width:fit-content; max-width:100%; margin:0; flex:0 0 auto; text-align:center; justify-content:center; overflow-wrap:anywhere; order:2; }
.map-notice-stack>.press-hold-title { position:relative; z-index:12; order:0; }
.map-notice-stack>.press-hold-help { position:relative; z-index:12; order:1; }
.map-notice-stack>.map-status { position:relative; z-index:3; order:2; }
.map-notice-stack>.map-member-guidance { position:relative; z-index:3; order:3; }
:where(.member-stats-dialog) .member-roster-identity:is(button) { min-height:0; padding:0; border:0; border-radius:7px; background:transparent; color:var(--ink); text-align:left; font:inherit; }
.member-stats-name .member-roster-identity h3 { font-size:1.1rem; font-weight:750; }

/* User Guidance directs the next action; Info describes, Warning flags an issue. */
:root { --message-guidance-background:#302344; --message-guidance-border:#80649f; --message-guidance-text:#efddff; }
body:not(.is-night) { --message-guidance-background:#eee1fa; --message-guidance-border:#b99ad5; --message-guidance-text:#502673; }
.action-message-guidance,.map-member-guidance { background:var(--message-guidance-background); border-color:var(--message-guidance-border); color:var(--message-guidance-text); }
/* One shared responsive footer rule. Multiple-button rows retain their scrollport. */
dialog .dialog-action-scrollport { display:flex; justify-content:flex-end; gap:8px; margin-top:18px; }
dialog .dialog-action-scrollport>button:only-child { flex:0 0 auto; width:auto; margin-left:auto; justify-content:center; min-height:42px; }
@media (max-width:600px) { dialog .dialog-action-scrollport>button:only-child { flex:1 1 auto; width:100%; margin-left:0; } }
/* Animate the reserved space as well as the button; no idle right-hand gap. */
.crawl-plan-peek { column-gap:0; position:relative; }
.drawer-peek-toggle { margin-left:10px; }
.drawer-scroll-top-slot { width:0; opacity:0; visibility:hidden; transition:width .2s ease,opacity .2s ease,visibility 0s .2s; }
.drawer-scroll-top-slot.is-visible { width:46px; opacity:1; visibility:visible; transition:width .2s ease,opacity .2s ease,visibility 0s; }
#drawer-scroll-top { position:absolute; right:clamp(18px,4vw,58px); bottom:0; margin:0; border-radius:8px 8px 0 0; border-bottom-color:transparent; translate:0 5px; transition:translate .2s ease; }
.drawer-scroll-top-slot.is-visible #drawer-scroll-top { translate:0 0; }
@media (prefers-reduced-motion:reduce) { .drawer-scroll-top-slot,.drawer-scroll-top-slot.is-visible,#drawer-scroll-top { transition:none; } }
.editor-status:has(.action-message[hidden]) { display:none; }
.photo-gallery .photo-caption,.photo-panel .photo-caption { font-size:var(--text-body); line-height:1.45; font-weight:400; }
/* Text actions share a wrapping row: a solitary action fills its available row.
   Icon controls, avatar tiles and dialog scrollports retain their own geometry. */
:is(.photo-actions,.photo-upload-actions,.avatar-picker-actions) { display:flex; flex-wrap:wrap; gap:8px; }
:is(.photo-actions,.photo-upload-actions,.avatar-picker-actions)>button { flex:1 1 12rem; min-width:0; justify-content:center; }
/* Standalone text actions share Settings' breakpoint. Packed editor/avatar,
   dialog, navigation and icon-only rows keep their intentional layouts. */
.canonical-action-row { display:flex; flex-wrap:wrap; gap:8px; min-width:0; }
.canonical-action-row>.edit-stops { min-width:0; max-width:100%; justify-content:center; }
@media (max-width:600px) {
  .canonical-action-row>.edit-stops,
  .member-settings-section>.member-settings-toggle,.member-settings-section>.member-avatar-settings,.member-settings-section>.member-settings-delete,
  .organiser-section-body>.edit-stops,.organiser-event-date-row>.edit-stops,.organiser-logout-row>.edit-stops {
    width:100%; justify-content:center; margin-left:0;
  }
}
.map-member-guidance.is-fading { opacity:0; transition:opacity 1s ease; }
@media (prefers-reduced-motion:reduce) { .map-member-guidance.is-fading { transition:none; } }
.event-contact-pane { max-width:1050px; margin:0 auto 16px; }
.event-contact-pane h2 { margin:0 0 12px; font-size:var(--text-section); }
.event-contact-pane .event-contact-subject { margin:0; }
.event-contact-subject { row-gap:8px; }
.event-contact-subject>p { margin:0; }
.event-contact-lines { grid-column:2; display:grid; gap:8px; min-width:0; }
.event-contact-lines .join-detail-row { margin:0; }
/* Basic dialogs use body typography even inside supporting-text containers. */
.confirmation-dialog { font-family:inherit; font-size:var(--text-body); }

/* Opt-in wrapping for long confirmation actions; rating and other touch rows retain their scrollport. */
@media (max-width:600px) {
  dialog .dialog-action-scrollport.dialog-actions-wrap { flex-wrap:wrap; overflow:visible; mask-image:none; touch-action:auto; }
  dialog .dialog-actions-wrap>button { flex:1 1 180px; min-width:0; max-width:100%; white-space:normal; }
}
/* The pane/footer stay solid. Only the dedicated content scrollport is masked. */
dialog[open].dialog-scroll-layout { display:flex; flex-direction:column; overflow:hidden; }
.dialog-scroll-layout>.dialog-scroll-body { flex:1 1 auto; min-height:0; min-width:0; overflow-y:auto; overscroll-behavior-y:contain; }
.dialog-scroll-layout>:is(.confirmation-dialog-actions,.rating-dialog-actions) { flex-shrink:0; }
.dialog-scroll-fade { --dialog-fade-top:0px; --dialog-fade-bottom:0px; }
.dialog-fade-top { --dialog-fade-top:14px; }
.dialog-fade-bottom { --dialog-fade-bottom:14px; }
.dialog-scroll-fade:is(.dialog-fade-top,.dialog-fade-bottom) { mask-image:linear-gradient(to bottom,transparent,black var(--dialog-fade-top),black calc(100% - var(--dialog-fade-bottom)),transparent); }

/* Editing reserves row width for the drag handle, stop number and stop details. */
.crawl-plan-list.is-editing .crawl-plan-actions { display:none; }
.crawl-plan-list.is-editing .crawl-plan-row:has(.drag-handle) { grid-template-columns:18px 38px minmax(0,1fr); }

/* Visible action widths are fitted to at most two label lines before row wrapping. */
.avatar-picker-actions,.editor-actions { flex-wrap:wrap; }
.avatar-picker-actions>button,.editor-actions>button { box-sizing:border-box; flex:0 0 auto; width:max-content; min-width:0; max-width:100%; white-space:normal; justify-content:center; padding-inline:6px; margin:0; }
.avatar-picker-actions>button[hidden] { display:none; }
.avatar-picker-actions>button>span,.editor-actions>button>span { min-width:0; overflow-wrap:normal; }
.avatar-picker-actions>button { min-width:0; }
.avatar-picker-actions>button>span { overflow-wrap:normal; }
.editor-actions>button.action-label-single-word { flex-shrink:0; }
.avatar-picker-actions>button>svg,.editor-actions>button>svg { flex:0 0 22px; }
@media (max-width:360px) {
  .avatar-picker-actions,.editor-actions { gap:4px; }
  .avatar-picker-actions>button,.editor-actions>button { padding-inline:6px; gap:4px; }
}
.avatar-picker h2 { font:inherit; font-size:var(--text-section); font-weight:var(--font-field-label); }
:root { --contrast-on-dark:#ffd166; }
button:is(.is-primary,.is-preservation,.is-destructive,.edit-stops,.photo-text-button) { --attention-colour:var(--contrast-on-dark); }
.press-hold-available.press-hold-edge { border-radius:8px; background:transparent; }
/* Effects sit above the map and below the control surfaces. */
.masthead-effect--storm,.masthead-effect--confetti,.storm-chain { z-index:1; }
.crawl-plan-peek { position:relative; }
.editor-status.is-stop-feedback { margin:0 8px 8px; min-height:0; }
.crawl-plan-peek::before,.card-grab-handle::before { position:absolute; content:""; left:50%; top:8px; width:44px; height:5px; translate:-50% 0; border-radius:99px; background:var(--filled-action-base); pointer-events:none; }
.crawl-plan-peek::before,.card-grab-handle::before { background:color-mix(in srgb,var(--red) calc(var(--middle-latch-proximity,0)*100%),var(--filled-action-base)); box-shadow:0 0 10px 3px color-mix(in srgb,var(--red) calc(var(--middle-latch-proximity,0)*100%),transparent); }
.crawl-plan.is-middle-latch-feedback .crawl-plan-peek::before,.stop-card.is-middle-latch-feedback .card-grab-handle::before { animation:middle-latch-handle .1s ease-out forwards; }
@keyframes middle-latch-handle { from { background:var(--red);box-shadow:0 0 10px 3px var(--red); } to { background:var(--filled-action-base);box-shadow:0 0 10px 3px transparent; } }
@media(prefers-reduced-motion:reduce) { .crawl-plan.is-middle-latch-feedback .crawl-plan-peek::before,.stop-card.is-middle-latch-feedback .card-grab-handle::before {animation:none;background:var(--red);box-shadow:0 0 10px 3px var(--red);} }
/* Fit the selected rating pane before introducing vertical scrolling. */
.rating-dialog { width:min(470px,calc(100vw - 16px)); max-width:calc(100vw - 16px); box-sizing:border-box; }
.dialog-scroll-layout>.dialog-scroll-body { overflow-x:hidden; }
.rating-dialog .rating-fieldset { min-width:0; }
.rating-dialog .rating-row-content { width:100%; }
.rating-dialog .rating-input { display:grid; grid-template-columns:2.2rem repeat(5,minmax(0,1fr)); gap:3px; width:100%; }
.rating-dialog .rating-input-value { grid-column:1; grid-row:1; }
.rating-dialog .rating-star-slot { width:100%; min-width:0; height:40px; transform:none; margin-bottom:0; }
.rating-dialog .rating-star-outline,.rating-dialog .rating-star-fill { font-size:clamp(1.65rem,7vw,2rem); }
.rating-dialog>.rating-dialog-actions { flex-wrap:nowrap; overflow:visible; mask-image:none; }
.rating-dialog>.rating-dialog-actions>button { min-width:0; white-space:normal; }
@media (max-width:360px) {
  .rating-dialog .rating-fieldset { grid-template-columns:32px minmax(0,1fr); column-gap:6px; }
  .rating-dialog .rating-row-icon { width:32px; }
}
@media (max-width:480px) {
  .route-summary { font-size:clamp(.7rem,2.9vw,.88rem); gap:4px; padding:6px; }
  .route-summary button,.route-summary span { min-width:0; gap:3px; }
  .route-summary button { min-height:42px; }
  .route-summary button+button,.route-summary button+span,.route-summary span+span { padding-left:4px; }
  .route-summary button b,.route-summary span b { font-size:1.08em; }
}
/* Semantic danger takes precedence over an action's ordinary primary role. */
:is(.member-access-controls,.join-panel,.organiser-controls,.organiser-pane,.editor-actions,.confirmation-dialog,.photo-panel,.avatar-picker) button.is-destructive,
body.is-night :is(.member-access-controls,.join-panel,.organiser-controls,.organiser-pane,.editor-actions,.confirmation-dialog,.photo-panel,.avatar-picker) button.is-destructive { background:var(--danger-action-base); border-color:var(--danger-action-base); color:#fff; }

/* End Event uses a separate cosmetic sequence; controls remain available. */
.is-end-celebrating #stop-card { visibility:hidden; pointer-events:none; }
.celebration-rocket { z-index:1; pointer-events:none; animation-duration:1s; }
.celebration-rocket svg { animation-duration:.75s; fill:var(--effect-colour); color:var(--effect-colour); }
.celebration-explosion,.celebration-explosion-spark { position:absolute; z-index:1; pointer-events:none; left:var(--effect-x); top:var(--effect-y); background:var(--effect-colour); }
.celebration-explosion { width:30px; height:30px; margin:-15px; border-radius:50%; box-shadow:0 0 24px 10px var(--effect-colour); animation:celebration-impact .5s ease-out forwards; }
.celebration-explosion-spark { width:28px; height:4px; margin:-2px 0 0 -14px; border-radius:2px; box-shadow:0 0 8px var(--effect-colour); animation:celebration-spark .5s ease-out forwards; }
@keyframes celebration-impact { from { opacity:1; transform:scale(.3); } to { opacity:0; transform:scale(2.5); } }
@keyframes celebration-spark { from { opacity:1; transform:rotate(var(--spark-angle)) translateX(8px) scaleX(.4); } to { opacity:0; transform:rotate(var(--spark-angle)) translateX(var(--spark-reach)) scaleX(.8); } }

/* Mobile frees map space; editing retains its itinerary totals. */
@media(max-width:640px) { .route-summary:not(.is-list-editing) { display:none; } }
.appearance-settings { margin-bottom:14px; }
.appearance-settings .member-settings-toggle { display:inline-flex; align-items:center; gap:7px; }

/* Stop controls belong to the collapsible child, inset five percent. */
.card-header h2 { display:flex; align-items:center; gap:7px; }
.card-middle { width:95%; margin-inline:auto; }
.card-middle .timing { margin-inline:0; }
.stop-controls { display:flex; gap:8px; padding:6px 8px; }
.stop-controls>button { display:grid; place-items:center; width:42px; min-height:42px; padding:0; border:0; border-radius:8px; background:transparent; color:var(--ink); cursor:pointer; }
.stop-controls>button svg { width:24px; height:24px; }
.stop-controls>button:disabled { opacity:.5; cursor:default; }
.card-header-row:not(:has(.card-check-in)) .card-rating { margin-top:0; }
.card-rating { flex-direction:column; height:auto; min-height:42px; gap:0; padding:3px 6px; }


/* Top and navigation are full panes; the expanded middle is a narrower pane. */
.stop-card,body.is-night .stop-card,.stop-card.is-collapsed { padding:0; background:transparent; box-shadow:none; }
.card-header-row { padding:16px; background:var(--cream); border-radius:15px 15px 0 0; }
.card-middle { box-sizing:border-box; width:95%; padding:0 8px 10px; background:var(--cream); }
.stop-card .card-navigation,.stop-card.is-collapsed .card-navigation { margin:0; padding:8px 12px; background:var(--cream); border-radius:0 0 15px 15px; }
.stop-controls { flex-wrap:nowrap; }
.stop-controls>button { display:flex; flex:1 1 0; flex-direction:column; min-width:0; align-items:center; justify-content:center; gap:6px; width:auto; max-width:100%; padding:6px; font:inherit; font-weight:var(--font-field-label); }
.stop-controls>button svg { flex:0 0 24px; }
.stop-controls>button span { font-size:var(--text-compact); line-height:1.2; text-align:center; }
@media(max-width:640px) { .map-stage:has(.route-summary:not(.is-list-editing)) .stop-card { bottom:calc(var(--closed-drawer-peek-height,54px) + 8px); } }
/* Scale the star artwork with its track instead of spacing fixed glyphs apart. */
.rating-dialog .rating-row-content { position:relative; grid-template-columns:4rem minmax(0,1fr); column-gap:6px; min-height:42px; }
.rating-dialog .rating-row-label { grid-column:1; grid-row:1; align-self:start; margin:0; }
.rating-dialog .rating-input { grid-column:2; grid-row:1 / span 2; grid-template-columns:repeat(5,minmax(0,1fr)); gap:0; }
.rating-dialog .rating-input-value { position:absolute; left:0; bottom:0; width:auto; }
.rating-dialog .rating-star-slot { aspect-ratio:1; height:auto; min-height:32px; }
.rating-dialog .rating-star-outline svg,.rating-dialog .rating-star-fill svg { display:block; width:100%; height:100%; }
.rating-dialog .rating-star-fill svg { fill:currentColor; }

/* A stable available width prevents fitted buttons shrinking their own input. */
.editor-actions { flex:1 1 100%; width:100%; min-width:0; max-width:100%; }
.avatar-picker-actions { width:100%; min-width:0; }
.editor-actions>button,.avatar-picker-actions>button { transition-property:background-color,color,border-color,opacity; }

.card-header-row { border-bottom:1px solid var(--line); }
.card-middle { position:relative; }
.card-middle::before { content:""; position:absolute; inset:0 8px; border-inline:1px solid var(--line); pointer-events:none; }
.card-middle .timing { padding-inline:8px; }
.stop-controls>button,body.is-night .stop-controls>button { height:auto; align-self:stretch; background:transparent; color:var(--ink); }
.stop-controls>button svg { width:30px; height:30px; flex-basis:30px; }
.stop-controls { padding-block:2px; }
.stop-controls>button { padding-block:2px; }
.card-middle .timing { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.card-middle .timing>button,.card-middle .timing>a { box-sizing:border-box; width:100%; min-width:0; min-height:56px; margin:0; padding:8px 8px 8px 44px; border:1px solid var(--line); border-radius:8px; background:transparent; color:var(--ink); text-align:left; text-decoration:none; overflow-wrap:anywhere; }
.card-middle .timing dt { margin:0; }
.card-middle .timing dd { margin:2px 0 0; }
.card-middle .timing>button svg,.card-middle .timing dt>.external-action-icon { left:8px; }
.stop-card { opacity:var(--drawer-card-opacity,1); }
.event-details-timing-group { margin-bottom:14px; }
.event-details-timing-group .action-info-subject { margin-bottom:2px; }

:root { --organiser-tools-background:var(--cream); }
body.is-night { --organiser-tools-background:var(--cream); }
#admin-tab-toggle[hidden] { display:none; }
.card-header-row { padding-bottom:2px; }
@media(min-width:721px) {
  .stop-card,.route-summary { bottom:calc(var(--closed-drawer-peek-height,54px) + 8px); }
  .map-stage.is-stacked-summary .route-summary:not(.is-edit-drawer-summary) { left:clamp(18px,4vw,58px); right:auto; width:max-content; max-width:calc(100% - clamp(36px,8vw,116px)); }
  .map-stage.is-stacked-summary .stop-card { bottom:calc(var(--closed-drawer-peek-height,54px) + 16px + var(--route-summary-height,54px)); }
}

/* The card shares the drawer's handle and endpoint snap language. */
.card-grab-handle { position:absolute; z-index:1; top:0; left:50%; translate:-50% 0; width:60px; height:24px; padding:0; border:0; background:transparent; color:var(--filled-action-base); cursor:grab; }
.card-header-row { touch-action:pan-x; user-select:none; }
.card-middle { overflow:hidden; padding:0; transition:height var(--panel-snap-duration) var(--panel-snap-easing); }
.card-rating { touch-action:none; }
.card-middle-content { padding:0 8px 10px; }
.stop-card.is-card-dragging .card-middle { transition:none; }
.stop-card.is-card-dragging .card-grab-handle { cursor:grabbing; }
@media(prefers-reduced-motion:reduce) { .card-middle { transition:none; } }

:root { --panel-snap-duration:.22s; --panel-snap-easing:cubic-bezier(.16,.8,.28,1); }
.card-grab-handle:focus-visible { outline:2px solid var(--red); outline-offset:0; border-radius:8px; }

/* Member access follows canonical Admin section rhythm; messages precede their actions. */
.member-access-controls:not([hidden]) { display:grid; gap:12px; margin-bottom:16px; }
.member-access-controls>.admin-section-heading,.member-access-controls>.admin-section-help,.member-access-controls>.action-message { margin:0; }

.member-entry-flow:not([hidden]) { display:grid; gap:12px; }
.member-entry-flow>h2,.member-entry-flow>.action-message { margin:0; }

/* Canonical message interaction: semantic help palettes and truthful copy feedback. */
[data-message-kind="guidance"] { --help-highlight:var(--message-guidance-border); --help-surface:var(--message-guidance-background); --help-text:var(--message-guidance-text); }
[data-message-kind="info"] { --help-highlight:var(--message-info-border); --help-surface:var(--message-info-background); --help-text:var(--message-info-text); }
[data-message-kind="warning"] { --help-highlight:var(--message-pending-border); --help-surface:var(--message-pending-background); --help-text:var(--message-pending-text); }
[data-message-kind="error"] { --help-highlight:var(--message-error-border); --help-surface:var(--message-error-background); --help-text:var(--message-error-text); }
[data-message-kind="success"] { --help-highlight:var(--message-success-border); --help-surface:var(--message-success-background); --help-text:var(--message-success-text); }
.press-hold-available[data-message-kind],body.is-night .press-hold-available[data-message-kind] { border-color:var(--help-highlight); background:color-mix(in srgb,var(--help-highlight) 15%,transparent); }
:is(.press-hold-title,.press-hold-help)[data-message-kind] { background:var(--help-surface); }
:is(.action-message,.completion-guidance) { -webkit-touch-callout:none; -webkit-user-select:none; user-select:none; }
.message-copy-feedback,body.is-night .message-copy-feedback,.black-glass-feedback {position:fixed;inset:auto;margin:0;box-sizing:border-box;width:max-content;max-width:calc(100vw - 16px);padding:8px;border:0;border-radius:12px;background:#000c;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:inset 0 0 0 1px #ffffff26,0px 24px 16px #0005;pointer-events:none;z-index:10000;}
.message-copy-feedback::backdrop {background:transparent;pointer-events:none;}
.message-copy-feedback>.action-message,.black-glass-feedback>.action-message {box-sizing:border-box;width:auto;margin:0;}
:is(.action-message,.completion-guidance,.map-member-guidance,.map-status)>button.message-copy-icon { position:relative; display:grid; place-items:center; flex:0 0 24px; width:24px; min-width:24px; height:28px; min-height:28px; padding:0; margin:0; border:0; border-radius:4px; background:transparent; color:inherit; cursor:pointer; }
.message-copy-icon :is(svg,i) { grid-area:1/1; width:19px; height:19px; margin:0; color:inherit; }
.message-copy-icon>b { grid-area:1/1; display:grid; place-items:center; width:19px; height:19px; }
.message-copy-icon .message-copy-glyph { visibility:hidden; }
.message-copy-icon:focus-visible { outline:2px solid currentColor; outline-offset:2px; }
.map-status:has(.message-copy-icon) { display:flex; align-items:center; gap:8px; }
@media(hover:hover) and (pointer:fine) {
  .message-copy-icon:hover .message-type-glyph { visibility:hidden; }
  .message-copy-icon:hover .message-copy-glyph { visibility:visible; }
}
:is(.action-message,.completion-guidance,.map-member-guidance,.map-status).is-copy-flashing { animation:message-copy-flash .65s ease-out; }
@keyframes message-copy-flash { 0%,35% { color:var(--message-copy-feedback); } }
@media (prefers-reduced-motion:reduce) { :is(.action-message,.completion-guidance,.map-member-guidance,.map-status).is-copy-flashing { animation-duration:.15s; } }

.access-section { padding:16px; border:1px solid var(--line); border-radius:10px; }
.access-section>.admin-section-heading,.organiser-pane>.admin-section-heading { margin:0; font-size:var(--text-section); }
.access-section>.organiser-section-body { gap:12px; }
.access-section .action-message,.access-section .admin-section-help { margin:0; }
.organiser-pane>.admin-section-heading { margin-bottom:16px; }
.organiser-pane:not([open])>.admin-section-heading { margin-bottom:0; }
.join-panel input[readonly],.member-entry-flow input[readonly] { background:var(--paper); color:var(--muted); border-color:var(--line); cursor:default; }
.member-entry-identity { display:grid; gap:8px; }

.press-hold-help[data-message-kind] { display:flex; align-items:center; gap:7px; }
.press-hold-help[data-message-kind]>svg { width:20px; height:20px; flex:0 0 20px; }
.member-entry-identity>label { margin:0; }

/* Match the outer access pane rhythm without doubled organiser title padding. */
.organiser-pane { padding:16px; }
.organiser-pane>.admin-section-heading { margin:0; }
.organiser-pane[open]>.organiser-controls { margin-top:16px; }
.recovery-link-dialog { display:none; }
.recovery-link-dialog[open] { display:grid; gap:12px; }
.recovery-link-dialog>:is(h2,.action-message,label,.confirmation-dialog-actions) { margin:0; }
.dialog-field { display:grid; gap:4px; padding-block:8px; min-width:0; }
.dialog-field-label { font-weight:800; }
.dialog-field :is(input,select) { width:100%; min-width:0; box-sizing:border-box; min-height:44px; padding:8px 12px; border:1px solid var(--line); border-radius:7px; background:var(--paper); color:var(--ink); font:inherit; }
.recovery-link-dialog input { width:100%; min-width:0; box-sizing:border-box; }

/* Icon-only avatar choices must not inherit left-aligned generic dialog actions. */
.avatar-picker .avatar-picker-icons { justify-items:center; grid-template-columns:repeat(auto-fit,minmax(54px,1fr)); max-width:302px; margin-inline:auto; }
.avatar-picker .avatar-picker-icons.is-icon-fallback { grid-template-columns:repeat(2,minmax(0,1fr)); }
.avatar-picker .avatar-picker-icons>button { justify-content:center; margin:0; min-width:0; width:54px; max-width:100%; aspect-ratio:1; min-height:0; padding:8px; border-radius:50%; }
.avatar-picker .avatar-picker-icons>button>svg { width:34px; height:34px; flex:0 0 auto; max-width:100%; }

/* Login groups use canonical section rhythm and keep feedback with its action. */
.member-login-section { display:grid; gap:12px; min-width:0; padding-top:16px; border-top:1px solid var(--line); }
.member-login-section>.admin-section-heading,.member-login-section>.action-message { margin:0; }
.member-access-overview .action-message>span { white-space:pre-line; }
/* Preserve deterministic fitting, then share each packed row's remaining width. */
.avatar-picker-actions { width:100%; box-sizing:border-box; }
.avatar-picker-actions>button { flex-grow:1; }

.edit-stops[aria-disabled="true"] { opacity:.55; cursor:not-allowed; }
.editor-locked-feedback { flex-basis:100%; display:grid; gap:12px; }
.editor-locked-feedback:not(:has(.action-message:not([hidden]))) { display:none; }

/* Static markup shows the pint before app modules and remote icon scripts load. */
.app-loading { position:fixed; inset:0; z-index:1000; display:grid; place-items:center; pointer-events:none; }
.app-loading-pint { width:min(56vw,56vh,320px); height:min(56vw,56vh,320px); color:var(--ink); filter:drop-shadow(0 4px 12px var(--cream)); animation:app-loading-spin 1.2s linear infinite; }
@keyframes app-loading-spin { to { transform:rotate(360deg); } }
@media (prefers-reduced-motion:reduce) { .app-loading-pint { animation:none; } }

/* One content-sized glass backdrop keeps the held title and explanation together. */
.map-notice-stack>.press-hold-panel { position:relative; z-index:12; order:0; display:flex; flex-direction:column; align-items:center; gap:8px; width:max-content; max-width:min(286px,100%); padding:12px; border:1px solid #ffffff26; border-radius:12px; background:#000c; backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px); box-shadow:0px 24px 16px #0005; }
.press-hold-panel>:is(.press-hold-title,.press-hold-help) { position:static; inset:auto; transform:none; flex:0 0 auto; width:fit-content; max-width:100%; margin:0; }
.press-hold-panel>.press-hold-help { max-width:min(260px,100%); }

/* Copy is explicit; held help must never start text-selection auto-scrolling. */
body,body * { -webkit-user-select:none; user-select:none; }
/* Nested glyphs inherit the semantic pane colour rather than container icon rules. */
:is(.action-message,.completion-guidance,.map-member-guidance,.map-status)>button.message-copy-icon,
:is(.action-message,.completion-guidance,.map-member-guidance,.map-status)>button.message-copy-icon>b,
:is(.action-message,.completion-guidance,.map-member-guidance,.map-status)>button.message-copy-icon>b>:is(svg,i) { color:inherit; }

.admin-section-heading>.action-info-button { margin-left:auto; flex:0 0 38px; }

/* Loading hides unfinished surfaces while the already-parsed masthead stays clear. */
.app-loading { --loading-pint-size:min(52vw,40svh,320px); background:#f4f0e799; backdrop-filter:blur(18px); -webkit-backdrop-filter:blur(18px); pointer-events:auto; }
body.is-night .app-loading { background:#07152199; }
body:has(#app-loading) .masthead { z-index:1001; }
.app-loading-pint { position:absolute; left:50%; top:var(--loading-pint-center,50%); translate:-50% -50%; width:var(--loading-pint-size); height:var(--loading-pint-size); }
.app-loading {--pq-brand-ink:#112f46;--pq-brand-disc:#112f46;--pq-brand-gold:#f4b942;}
body.is-night .app-loading {--pq-brand-ink:#fffdf9;--pq-brand-disc:#162c3b;}
.app-loading-brand {position:absolute;left:50%;top:var(--loading-pint-center,50%);translate:-50% -50%;display:flex;align-items:center;justify-content:center;gap:12px;width:min(640px,92vw);}
.app-loading-brand .app-loading-pint {position:static;translate:none;flex:0 0 var(--loading-pint-size);animation:none;filter:none;}
.app-loading-wordmark {width:min(290px,45vw);height:auto;flex:1;min-width:0;}
.app-loading .pq-pint {transform-box:view-box;transform-origin:172px 178px;animation:pq-pint-turn 1s linear infinite;}
.app-loading .pq-point {fill:var(--pq-brand-ink);}
.app-loading[data-heading="0"] [data-point="0"],.app-loading[data-heading="1"] [data-point="1"],.app-loading[data-heading="2"] [data-point="2"],.app-loading[data-heading="3"] [data-point="3"] {fill:var(--pq-brand-gold);}
@keyframes pq-pint-turn {to{transform:rotate(360deg);}}
@media(max-width:600px){.app-loading-wordmark{display:none;}}
@media(prefers-reduced-motion:reduce){.app-loading .pq-pint{animation:none;}}
.app-loading-facts { position:absolute; top:calc(var(--loading-masthead-bottom,78px) + 3svh); bottom:auto; left:12px; right:12px; display:grid; place-items:center; padding:12px; }
.app-loading-fact { max-width:850px; margin:0; color:var(--ink); text-align:center; font-size:clamp(1.15rem,min(4vw,4.5svh),3.1rem); font-weight:800; line-height:1.12; letter-spacing:-.035em; text-wrap:balance; }
@media(max-height:500px) { .app-loading { --loading-pint-size:min(40vw,24svh,120px); } .app-loading-facts { padding:4px 12px; } .app-loading-fact { font-size:clamp(.9rem,3.5svh,1.4rem); } }

body:has(#app-loading) :is(.masthead-drawer-actions,.masthead-actions) { visibility:hidden; }

/* Source-linked facts keep their heading, number and external action together. */
.app-loading-facts { padding:0; }
.app-loading-fact-pane { position:relative; display:grid; gap:8px; width:min(850px,100%); box-sizing:border-box; padding:16px 56px 16px 16px; border:1px solid var(--line); border-radius:12px; background:var(--cream); color:var(--ink); text-decoration:none; }
.app-loading-fact-title { margin:0; font-size:clamp(1rem,2.5vw,1.5rem); font-weight:800; }
.app-loading-fact-external { position:absolute; top:12px; right:12px; width:32px; height:32px; }
.app-loading-fact-pane:focus-visible { outline:3px solid var(--ink); outline-offset:3px; }
.app-loading-fact { text-align:left; font-size:clamp(1.15rem,min(4vw,4svh),2.8rem); }
@media (max-height:500px) {
 .app-loading { --loading-pint-size:min(32vw,18svh,100px); }
 .app-loading-facts { top:calc(var(--loading-masthead-bottom,64px) + 3svh); bottom:auto; }
 .app-loading-fact-pane { gap:4px; padding:8px 44px 8px 12px; }
 .app-loading-fact-title { font-size:.9rem; }
 .app-loading-fact-external { width:26px; height:26px; top:8px; right:8px; }
 .app-loading-fact { font-size:clamp(.85rem,3.2svh,1.25rem); }
}

/* Help-dialog prose can be selected; surrounding controls keep gesture protection. */
.action-info-dialog :is(h2,p,p *, .dialog-field-label) { -webkit-user-select:text; user-select:text; }

/* The one-row stop-card latch uses the same row pitch as the existing tile grid. */
.card-middle-content .stop-controls { box-sizing:border-box; height:var(--stop-card-row-height,auto); min-height:56px; margin:0 0 8px; padding-block:0; }
.card-middle-content .timing { border-top:0; padding-top:0; grid-auto-rows:var(--stop-card-row-height,auto); }
.stop-card.is-card-compact .card-middle-scrollport { overflow-y:auto; overflow-x:hidden; scroll-snap-type:y mandatory; overscroll-behavior:contain; scrollbar-width:none; }
.stop-card.is-card-compact .card-middle-scrollport::-webkit-scrollbar { display:none; }
.stop-card.is-card-compact .card-middle-content { padding-bottom:0; }
.stop-card.is-card-compact :is(.stop-controls,.timing>:nth-child(2n+1)) { scroll-snap-align:start; scroll-snap-stop:always; }

.card-middle-content .stop-controls>button { flex-direction:row; gap:4px; padding:2px; }
.card-middle-content .stop-controls>button span { min-width:0; overflow-wrap:anywhere; }
@media (max-width:350px) { .card-middle-content .stop-controls>button { flex-direction:column; gap:2px; } }

/* Masthead controls spring into a corner stack when the expanded card meets them. */
.masthead-stack-group { position:relative; pointer-events:none; }
.masthead-stack-group>button:not(.masthead-stack-toggle) {pointer-events:auto;}
.masthead-stack-group>button:not(.masthead-stack-toggle) { transition:transform .48s cubic-bezier(.22,1.35,.38,1),opacity .18s ease; }
.masthead-stack-group.is-masthead-stacked>button:not(.masthead-stack-toggle):not([hidden]) { transform:translateY(var(--masthead-stack-shift)) rotate(var(--masthead-stack-turn)) scale(.85); opacity:0; pointer-events:none; }
.masthead-stack-toggle { position:absolute; top:0; left:0; opacity:0; transform:rotate(-12deg) scale(.5); pointer-events:none; transition:transform .48s cubic-bezier(.22,1.35,.38,1),opacity .18s ease; }
.is-masthead-stacked>.masthead-stack-toggle { opacity:1; transform:rotate(0) scale(1); pointer-events:auto; box-shadow:0px 38px 25px #09203326,3px 3px 0 var(--line),6px 6px 0 var(--cream); }
@media(prefers-reduced-motion:reduce) { .masthead-stack-group>button { transition:none!important; } }

.masthead:has(.is-masthead-stacked) { z-index:3; }

.crawl-plan-content>[role='tabpanel'] { min-height:var(--drawer-tab-min-height,0px); }

/* Dialogs follow the drawer: scrolling remains available without a scrollbar. */
dialog,.dialog-scroll-body,.dialog-scroll-fade { scrollbar-width:none; }
dialog::-webkit-scrollbar,.dialog-scroll-body::-webkit-scrollbar,.dialog-scroll-fade::-webkit-scrollbar { display:none; }

/* The fleeing HELP glass never captures the held pointer or touch. */
.map-notice-stack>.press-hold-panel,.press-hold-panel * { pointer-events:none; }
.map-notice-stack>.press-hold-panel { will-change:transform; }

/* Wrapped inline labels begin at the same icon gap as Check In. */
.card-middle-content .stop-controls>button span { text-align:left; }
@media(max-width:350px) { .card-middle-content .stop-controls>button span { text-align:center; } }
/* Message-copy icons are not full-width Join actions. Hide glyph subtrees explicitly. */
.join-panel #join-action button.message-copy-icon { display:grid; width:24px; min-width:24px; min-height:28px; height:28px; padding:0; background:transparent; border:0; color:inherit; }
.message-copy-icon>.message-copy-glyph { display:none; }
@media(hover:hover) and (pointer:fine) {
 .message-copy-icon:hover>.message-type-glyph { display:none; }
 .message-copy-icon:hover>.message-copy-glyph { display:grid; }
}
.map-notice-stack>.press-hold-panel { overflow:hidden; }

/* Equal breathing room around guest tiles and member controls, including the row latch. */
.card-middle-content,.stop-card.is-card-compact .card-middle-content { padding-block:8px; }
.stop-card.is-card-compact .card-middle-scrollport { scroll-padding-block:8px; }
.card-middle-content .stop-controls>button { border:1px solid var(--line); justify-content:center; align-items:center; border-radius:8px; }
.card-middle-content .stop-controls>button span { text-align:center; }

/* Inline stop controls share the tiles' protected icon inset and text start. */
@media(min-width:351px) {
 .card-middle-content .stop-controls>button { position:relative; padding:8px 8px 8px 44px; }
 .card-middle-content .stop-controls>button>svg { position:absolute; left:8px; top:50%; transform:translateY(-50%); width:30px; height:30px; }
}

/* When three protected icon slots leave too little text room, keep whole labels above/below. */
.card-middle-content .stop-controls { container-type:inline-size; }
@media(max-width:350px) { .card-middle-content .stop-controls>button { padding:8px; } }
@container(max-width:330px) {
 .card-middle-content .stop-controls:has(>button:nth-child(3))>button { flex-direction:column; gap:2px; padding:8px; }
 .card-middle-content .stop-controls:has(>button:nth-child(3))>button>svg { position:static; transform:none; }
}

.card-navigation { position:relative; }
.stop-card.is-card-emerging .card-navigation::before { content:""; position:absolute; inset:auto 0 100%; height:var(--card-emergence-height,4px); opacity:var(--card-emergence-opacity,1); background:linear-gradient(to top,color-mix(in srgb,var(--red) 75%,transparent),transparent); pointer-events:none; }

.member-invite-url-row {display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end;}
.member-invite-url-row>label {min-width:0;}
.invite-qr-button {width:42px;height:42px;min-width:42px;border-radius:8px;padding:6px;}
.invite-qr-button svg {width:30px;height:30px;}
.invite-qr-image {display:block;width:min(100%,400px);height:auto;margin:14px auto;background:white;}
.event-link-controls [hidden] {display:none !important;}

/* Equal-height timing tiles centre their two-line text group in the available row. */
.card-middle .timing>button,.card-middle .timing>a { display:flex; flex-direction:column; justify-content:center; }
@media(prefers-reduced-motion:reduce) { .is-map-selection-highlight { animation:none; box-shadow:inset 0 0 0 3px var(--red); } }

/* Keep control labels whole; small font fitting precedes the crowded vertical fallback. */
.card-middle-content .stop-controls>button span { overflow-wrap:normal; word-break:normal; hyphens:none; }
.card-middle-content .stop-controls.is-word-crowded>button { flex-direction:column; gap:2px; padding:8px; }
.card-middle-content .stop-controls.is-word-crowded>button>svg { position:static; transform:none; }

/* Separate animated clipping from scrolling: avoids Edge scroll-layer corruption over WebGL. */
.card-middle {overflow:clip;}
.card-middle-scrollport {height:100%;overflow:clip;}
.canonical-action-row button span,.editor-actions button span,.avatar-picker-actions button span {overflow-wrap:normal;word-break:normal;hyphens:none;}
/* Header feedback preserves the solid pane and its matching overflow fades. */
:is(.card-header-row,.crawl-plan-peek).is-map-selection-highlight,body.is-night :is(.card-header-row,.crawl-plan-peek).is-map-selection-highlight {animation:card-header-outline 1.2s ease-out;border-radius:15px 15px 0 0;}
@keyframes card-header-outline {0%,35% {box-shadow:inset 0 0 0 3px var(--red);}100% {box-shadow:inset 0 0 0 3px transparent;}}
@media(prefers-reduced-motion:reduce) {:is(.card-header-row,.crawl-plan-peek).is-map-selection-highlight,body.is-night :is(.card-header-row,.crawl-plan-peek).is-map-selection-highlight {animation:none;box-shadow:inset 0 0 0 3px var(--red);}}
/* Roster sections share canonical headings; stats start close below their title. */
.member-roster>.access-section+.access-section {margin-top:14px;}
.party-stats>.organiser-section-body {margin-top:8px;}
:is(.party-stats,.members-awards) .member-stats-values {margin:0;padding-top:8px;}

.drawer-emergence-glow {position:fixed;z-index:5;inset:auto 0 0;height:4px;background:linear-gradient(to top,color-mix(in srgb,var(--red) 75%,transparent),transparent);pointer-events:none;}
/* Help dialogs own their type scale rather than inheriting roster/form compact text. */
dialog.action-info-dialog,dialog.member-settings-dialog {font-size:var(--text-body);line-height:1.5;}
dialog.action-info-dialog p,dialog.member-settings-dialog p {font-size:var(--text-body);line-height:1.5;font-weight:400;}
dialog.action-info-dialog h2,dialog.member-settings-dialog h2 {font-size:var(--text-section);line-height:1.25;margin:0 0 14px;}
dialog.action-info-dialog .action-info-subject,dialog.member-settings-dialog .action-info-subject {margin:0 0 14px;}dialog.action-info-dialog .event-details-timing-group .action-info-subject {margin-bottom:2px;}dialog.action-info-dialog .event-details-lifecycle .action-info-subject {margin-bottom:0;}

:root {--section-heading-gap:8px;--section-gap:14px;--section-divider-before:20px;--section-divider-after:18px;}
.has-heading-icon>.heading-icon {display:inline-block;width:1.1em;height:1.1em;margin-right:8px;vertical-align:-.15em;flex:0 0 auto;}
.admin-section-heading,.member-settings-section>h2 {margin-block:0 var(--section-heading-gap);}
.organiser-section>summary.admin-section-heading,.access-section>summary.admin-section-heading {margin:0;}
.organiser-section-body,.party-stats>.organiser-section-body {margin-top:var(--section-heading-gap);}
.member-login-section {gap:var(--section-heading-gap);}
.member-roster>.access-section+.access-section {margin-top:var(--section-gap);}
#member-access-guidance:has(>.admin-section-help>.action-message[hidden]),#member-access-guidance:has(>.admin-section-help>.action-message[hidden])>.admin-section-help {margin:0;padding:0;gap:0;}
#member-access-guidance:has(>.admin-section-help>.action-message[hidden])+ #member-roster {margin-top:0;}/* Dialog section titles share the same heading gap as drawer sections. */
dialog.action-info-dialog h2,dialog.member-settings-dialog h2,.member-stats-header,.avatar-picker>h2,.photo-gallery>h2,.rating-dialog-heading-row {margin-bottom:var(--section-heading-gap);}
/* Section bodies own spacing, so message margins cannot multiply the heading gap. */
.member-settings-section>.admin-section-heading {margin:0;}
.settings-section-body {display:grid;gap:12px;margin-top:var(--section-heading-gap);min-width:0;}
.settings-section-body>:is(.action-message,.admin-section-help,button) {margin:0;}
.settings-section-body>.member-settings-summary>.action-message {margin:0;}
.settings-section-body>.member-avatar-settings {margin-left:0;}
.organiser-field-label>.heading-icon {width:17px;height:17px;flex:0 0 17px;margin:0;vertical-align:initial;}
.member-invite-result label {display:grid;gap:8px;min-width:0;}
.member-invite-result label .organiser-field-label {gap:7px;}
.member-invite-result label .organiser-field-label>.heading-icon {width:17px;height:17px;flex-basis:17px;}
.member-roster th svg,.member-roster th>.heading-icon {width:18px;height:18px;}
.member-invite-actions>.action-message {grid-column:1/-1;width:100%;margin:0;}
/* Contextual message glyphs must not inherit enclosing action-button palettes. */
body :is(.action-message,.completion-guidance,.map-member-guidance,.map-status)>button.message-copy-icon {background:transparent;color:inherit;border:0;width:24px;min-width:24px;padding:0;--button-press-feedback:0;box-shadow:none;clip-path:none;translate:none;}
@media(max-width:600px) {
 .settings-section-body>:is(.member-settings-toggle,.member-avatar-settings,.member-settings-delete) {width:100%;justify-content:center;margin-left:0;}
}
/* Settings owns one enclosing pane; section renderers retain their shared content styles. */
.settings-surface {box-shadow:var(--surface-raised-soft);box-sizing:border-box;border:1px solid var(--line);border-radius:10px;padding:14px;}
.settings-surface>.appearance-settings,.settings-surface>#member-settings>.member-settings {border:0;border-radius:0;padding:0;}

/* Shared field typography and message glyph geometry override compact enclosing forms. */
:is(.organiser-field-label,.member-profile label,.member-invite-result label,.event-link-controls label,.join-panel label,.timing-controls label) {font-size:var(--text-body);line-height:1.45;}
body :is(.action-message,.completion-guidance,.map-member-guidance,.map-status)>button.message-copy-icon {display:grid;gap:0;margin:0;line-height:1;}
body :is(.action-message,.completion-guidance,.map-member-guidance,.map-status)>button.message-copy-icon>b>:is(svg,i) {width:19px;height:19px;margin:0;padding:0;}
/* Canonical prose may be a status span or a confirmation paragraph. Keep it
   independent of the enclosing dialog's ordinary paragraph typography. */
.action-message>:is(span,p) {min-width:0;margin:0;padding:0;color:inherit;font:inherit;line-height:inherit;}
.member-roster th.member-roster-member-heading {text-align:left;}

.organiser-pane {display:grid;gap:var(--section-gap);}
.organiser-pane[hidden] {display:none;}
.organiser-pane>.organiser-controls {margin:0;}
.organiser-pane>#member-controls>.member-invites {margin:0;}
/* Reusable dialog stack: hidden feedback contributes neither a row nor a gap. */
.dialog-content-stack.dialog-scroll-layout {--dialog-content-gap:12px;gap:var(--dialog-content-gap);}
.dialog-content-stack>.dialog-scroll-body {display:grid;align-content:start;gap:var(--dialog-content-gap);}
dialog.dialog-content-stack>.dialog-scroll-body>* {margin:0;}
.dialog-content-stack>.dialog-scroll-body>.dialog-field {padding:0;}
.dialog-content-stack>.dialog-scroll-body>[hidden] {display:none;}
/* Members List is the canonical heading geometry, including room for Info. */
:root {--section-summary-height:38px;--section-summary-icon:22px;}
summary.admin-section-heading {box-sizing:border-box;display:flex;align-items:center;gap:10px;min-height:var(--section-summary-height);padding:0;font-size:var(--text-section);line-height:1.25;}
summary.admin-section-heading>:is(svg,i) {width:var(--section-summary-icon);height:var(--section-summary-icon);flex:0 0 var(--section-summary-icon);}
summary.admin-section-heading>.action-info-button {flex:0 0 var(--section-summary-height);width:var(--section-summary-height);height:var(--section-summary-height);}
.organiser-pane :is(.organiser-section,.member-invites,.invite-path) {border:0;border-radius:0;padding:0;background:transparent;}
.organiser-pane>.organiser-controls {gap:0;}
.organiser-pane .member-invites>.admin-section-help {margin:8px 0 12px;}
.organiser-pane .member-invites:not([open])>.admin-section-help {display:none;}
.organiser-access-summary {display:grid;gap:12px;}
.member-invite-actions {align-items:stretch;}
.member-invite-link-action {display:flex;align-items:stretch;}
.member-invite-link-action>button {flex:1 1 auto;width:100%;}
:is(.canonical-action-row,.member-invite-row-actions,.dialog-actions-wrap) {align-items:stretch;}
:is(.canonical-action-row,.member-invite-row-actions,.dialog-actions-wrap)>button {align-self:stretch;}
.is-guidance-flash.is-guidance-static {position:relative;}
.is-guidance-flash {isolation:isolate;animation:none;box-shadow:none;}
.is-guidance-flash::after {content:'';position:absolute;inset:var(--guidance-outline-top,-4px) var(--guidance-outline-right,-4px) var(--guidance-outline-bottom,-4px) var(--guidance-outline-left,-4px);z-index:20;outline:3px solid var(--attention-colour,var(--red));border-radius:10px;pointer-events:none;opacity:0;animation:guidance-outline .8s ease 1 both;}
.is-guidance-pane-flash::after {outline:none;border-radius:inherit;box-shadow:inset 0 0 0 3px var(--attention-colour,var(--red));}
@keyframes guidance-outline {0%,100%{opacity:0;}50%{opacity:1;}}
@media(prefers-reduced-motion:reduce){.is-guidance-flash::after{animation:none;opacity:1;}}
:is(.organiser-section,.member-invites,.invite-path,.access-section)>summary.admin-section-heading {min-height:var(--section-summary-height);font-size:var(--text-section);gap:10px;}
#organiser-tools-heading>.admin-section-heading {margin:0;}
.organiser-pane .member-invites {display:block;}
.organiser-pane .member-invites>.organiser-section-body {margin-top:var(--section-heading-gap);gap:12px;}
.unverified-check-in-icon {color:var(--red);animation:unverified-check-in-flash .4s ease-out;}
@keyframes unverified-check-in-flash {50%{filter:drop-shadow(0 0 5px var(--red));}}
@media(prefers-reduced-motion:reduce){.unverified-check-in-icon{animation:none;}}


.avatar-picker .dialog-scroll-body>.avatar-picker-actions {margin:0;}
.help-top-layer {position:fixed;inset:0;margin:0;width:100%;height:100%;padding:0;border:0;background:transparent;overflow:visible;pointer-events:none;}
.help-top-layer::backdrop {background:transparent;pointer-events:none;}
.compound-icon {position:relative;display:inline-block;width:24px;height:24px;flex:0 0 24px;}
.compound-icon>svg {position:absolute;inset:0;width:100%;height:100%;}
.compound-icon>svg:first-child {transform:scale(.65);transform-origin:center;}
.compound-icon>svg:last-child {opacity:.9;}
.inline-award {display:inline-flex;align-items:center;gap:4px;white-space:nowrap;}
.inline-award>svg {width:1em;height:1em;}

.member-map-umbrella {bottom:calc(100% - 15px);left:50%;translate:-50% 0;rotate:0deg;animation:umbrella-open .18s ease-out,umbrella-bob .45s ease-in-out .18s infinite alternate;}
.member-map-umbrella svg {width:48px;height:48px;fill:currentColor;}
.member-map-marker.is-cloud-running {animation:cloud-run .22s ease-in-out infinite alternate;}
.member-map-marker.is-cloud-returning {transition:translate .4s ease-out;}
.member-map-umbrella.is-discarded {animation:umbrella-discard .6s ease-out forwards;}
@keyframes umbrella-open {from{scale:0;rotate:-80deg;}to{scale:1;rotate:0deg;}}
@keyframes umbrella-bob {to{translate:-50% -3px;rotate:8deg;}}
@keyframes cloud-run {from{rotate:-5deg;}to{rotate:5deg;}}
@keyframes umbrella-discard {0%{translate:-50% 0;rotate:0deg;opacity:1;}45%{translate:calc(-50% + var(--umbrella-discard-x,-110px) * .68) 40px;rotate:calc(var(--umbrella-discard-spin,-380deg) * .5);opacity:1;}65%{translate:calc(-50% + var(--umbrella-discard-x,-110px) * .82) 18px;rotate:calc(var(--umbrella-discard-spin,-380deg) * .7);opacity:.8;}100%{translate:calc(-50% + var(--umbrella-discard-x,-110px)) 55px;rotate:var(--umbrella-discard-spin,-380deg);opacity:0;}}
@media(prefers-reduced-motion:reduce){.member-map-umbrella,.member-map-umbrella.is-discarded,.member-map-marker.is-cloud-running {animation:none;}.member-map-umbrella.is-discarded {opacity:0;}.member-map-marker.is-cloud-returning {transition:none;}}

.member-roster .member-actions-heading {width:104px;min-width:104px;max-width:104px;}
.member-roster .member-actions-column {width:104px;max-width:104px;padding:0;vertical-align:top;border-bottom:0;}
.member-actions-scrollport {width:104px;max-width:104px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;touch-action:pan-x pan-y;}
.member-actions-scrollport::-webkit-scrollbar {display:none;}
.member-actions-body {width:max-content;min-width:100%;}
.member-actions-body-row {display:flex;align-items:center;padding:9px 8px;box-sizing:border-box;border-bottom:1px solid var(--line);}
.member-actions-body-row .member-roster-actions {flex-wrap:nowrap;}
.member-actions-body-row button {flex:0 0 36px;}

.party-stats .members-awards {border:0;padding:0;background:transparent;}
.members-awards>.admin-section-heading {font-size:var(--text-section);min-height:var(--section-summary-height);gap:10px;margin-bottom:var(--section-heading-gap);}

/* Native table widths must not push the action viewport past the enclosing pane. */
.member-roster table {table-layout:fixed;}
.member-avatar-column-definition {width:40px;}.member-location-column-definition,.member-stats-column-definition {width:36px;}.member-actions-column-definition {width:104px;}
.member-roster :is(th.member-roster-location-heading,td.member-roster-location,th.member-roster-stats-heading,td.member-roster-stats,td.member-roster-avatar) {width:auto;padding-inline:2px;}
.member-roster-name {min-width:0;overflow-wrap:anywhere;}
.member-roster-name .member-roster-identity {max-width:100%;}
.member-roster-name small {overflow-wrap:anywhere;}
.member-actions-shell {position:relative;width:104px;overflow:hidden;isolation:isolate;contain:paint;}
.member-actions-scrollport {position:relative;width:72px;max-width:72px;margin-inline:16px;clip-path:inset(0);}
.member-actions-body-row {padding-inline:0;}
.member-action-chevron-column {position:absolute;inset-block:0;width:16px;display:flex;flex-direction:column;z-index:2;opacity:0;pointer-events:none;}
.member-action-chevron-column--left {left:0;}.member-action-chevron-column--right {right:0;}
.has-overflow-start>.member-action-chevron-column--left,.has-overflow-end>.member-action-chevron-column--right {opacity:1;pointer-events:auto;}
.member-action-chevron {display:grid;place-items:center;box-sizing:border-box;flex:0 0 auto;width:100%;padding:0;border:0;border-radius:4px;background:transparent;color:var(--muted);cursor:pointer;}
.member-action-chevron svg {width:14px;height:14px;}
.member-action-chevron-column:focus-within {background:var(--secondary-action-hover);color:var(--secondary-action-hover-text);border-radius:4px;}
.member-action-chevron-column:focus-within>button {color:inherit;}
.member-actions-shell::before,.member-actions-shell::after {content:'';position:absolute;inset-block:0;width:12px;z-index:1;pointer-events:none;opacity:0;}
.member-actions-shell::before {left:16px;background:linear-gradient(to right,var(--cream),transparent);}
.member-actions-shell::after {right:16px;background:linear-gradient(to left,var(--cream),transparent);}
.member-actions-shell.has-overflow-start::before,.member-actions-shell.has-overflow-end::after {opacity:1;}
.party-stats .member-stats-values {border-block:0;}

/* Shared primary glyph geometry; compound secondary marks retain their proportions. */
:root {--control-icon-size:24px;}
body button>:is(svg,i),body button>.compound-icon {width:var(--control-icon-size)!important;height:var(--control-icon-size)!important;flex:0 0 var(--control-icon-size)!important;}
body .action-info-subject {grid-template-columns:var(--control-icon-size) minmax(0,1fr);}
body .action-info-subject>:is(svg,i,.compound-icon) {width:var(--control-icon-size);height:var(--control-icon-size);}
body button>.compound-icon {display:inline-flex;vertical-align:middle;align-self:center;}
/* Compact navigation glyphs remain constrained to their canonical hit regions. */
body .drawer-latch-controls button>svg {height:16px!important;}
.member-identity-row {display:flex;align-items:center;gap:4px;min-width:0;}
.member-name-shell {position:relative;min-width:0;flex:1;overflow:hidden;}
.member-name-shell .member-roster-identity {display:block;width:100%;max-width:100%;box-sizing:border-box;}
.member-roster-name .member-roster-identity small {display:block;max-width:100%;white-space:nowrap;overflow-wrap:normal;word-break:normal;}

/* Local subgame props stay attached to member avatars, beneath app controls. */
.member-stuck-confetti {position:absolute;inset:0;pointer-events:none;z-index:2;}
.member-stuck-confetti b {position:absolute;width:3px;height:13px;background:#ff4d6d;left:20%;top:5%;rotate:-25deg;border-radius:1px;}
.member-stuck-confetti b:nth-child(2) {left:65%;top:10%;rotate:35deg;background:#ffd166;}
.member-stuck-confetti b:nth-child(3) {left:35%;top:55%;rotate:65deg;background:#06d6a0;}
.member-return-popper {position:absolute;left:calc(50% + var(--popper-x));top:calc(50% + var(--popper-y));translate:-50% -50%;pointer-events:none;color:var(--red);rotate:var(--popper-angle);z-index:2;}
.member-return-popper svg {width:32px;height:32px;}
.member-return-popper.is-firing {animation:member-popper-flash .16s steps(2,end) 2;}
@keyframes member-popper-flash {50% {filter:brightness(3) drop-shadow(0 0 7px #ffd166);scale:1.25;}}
.member-map-marker.is-rocket-running {animation:cloud-run .22s ease-in-out infinite alternate;}
@media (prefers-reduced-motion:reduce) {.member-return-popper,.member-map-marker.is-rocket-running {animation:none;}}

/* Impacts briefly take precedence over the continuous cloud/rocket run loop. */
.member-map-marker.is-reacting-confetti {animation:member-confetti-hit .16s ease-out;}
.member-map-marker.is-balloon-jab {animation:member-jab .35s ease-out;}
.member-map-marker.is-diving {animation:member-dive .85s ease-out;}

/* Large established controls retain their own semantic size token. */
body :is(.masthead button,.stop-controls>button,.card-rating) {--control-icon-size:30px;}
body .card-rating-icon :is(svg,i) {width:30px!important;height:30px!important;}
body button .compound-icon {width:var(--control-icon-size)!important;height:var(--control-icon-size)!important;flex:0 0 var(--control-icon-size);align-self:center;vertical-align:middle;}
body button .compound-icon>svg {width:100%!important;height:100%!important;}
body .rating-dialog button>:is(svg,i) {flex:0 0 var(--control-icon-size)!important;}
.rating-dialog {--rating-category-icon-size:42px;}
.rating-dialog .rating-input {grid-template-columns:repeat(5,minmax(0,var(--rating-category-icon-size)));justify-content:start;}
.rating-dialog .rating-star-slot {max-width:var(--rating-category-icon-size);max-height:var(--rating-category-icon-size);}
@media(max-width:360px){.rating-dialog {--rating-category-icon-size:32px;}}
.member-roster-actions>a {display:grid;place-items:center;box-sizing:border-box;text-decoration:none;flex:0 0 auto;}
.member-roster-actions>a>svg {width:24px;height:24px;}

.member-map-label {overflow:hidden;text-overflow:ellipsis;max-width:min(150px,calc(100vw - 48px));}

.member-roster-actions>.is-low-battery {color:var(--message-pending-text);background:var(--message-pending-background);opacity:1;}

.card-rating-icon {font-size:34px;height:34px;}

.member-map-umbrella svg>path {fill:none;}
.member-map-umbrella svg {fill:none;}
.member-map-umbrella svg>path:is([d$="Z"],[d$="z"]) {fill:currentColor;}
/* Title/address determine header height; a numeric rating consumes spare space below its star. */
.card-header-row:not(:has(.card-check-in)) .card-header,.card-header-row:has(.card-check-in) .card-header {grid-row:1;}
.card-header-row:not(:has(.card-check-in)) .card-rating,.card-header-row:has(.card-check-in) .card-rating {box-sizing:border-box;width:48px;min-width:48px;align-self:start;height:auto;min-height:42px;padding-block:3px 8px;justify-content:flex-start;}
.card-header-row .card-rating-icon {flex-shrink:0;}
.card-header-row .card-rating-value {line-height:1;}
.rating-dialog {--rating-category-icon-size:50.4px;box-sizing:content-box;width:min(calc(42px + 10px + 4rem + 6px + 252px),calc(100vw - 46px));}
.rating-dialog .rating-star-slot {max-width:50.4px;max-height:50.4px;}
@media(max-width:360px){.rating-dialog {--rating-category-icon-size:38.4px;width:min(calc(32px + 6px + 4rem + 6px + 192px),calc(100vw - 46px));}.rating-dialog .rating-star-slot {max-width:38.4px;max-height:38.4px;}}
#member-details:not([hidden]) {max-width:1050px;margin:0 auto 14px;}

#member-details .organiser-section-body {display:grid;gap:12px;}
#member-details .organiser-section-body>:is(.action-message,.dialog-field,.canonical-action-row) {margin:0;}

dialog .dialog-actions-wrap {display:flex;flex-wrap:wrap;width:100%;max-width:100%;overflow:visible;mask-image:none;touch-action:auto;align-items:stretch;}
dialog .dialog-actions-wrap>button {align-self:stretch;max-width:100%;white-space:normal;}

#member-avatar-account {max-width:1050px;margin:0 auto 14px;}

/* Equivalent section headings use the same type and glyph scale, regardless of heading tag. */
:is(h2,h3,summary).admin-section-heading {font-size:var(--text-section);font-weight:850;line-height:1.25;gap:10px;}
:is(h2,h3,summary).admin-section-heading>:is(svg,i) {width:var(--section-summary-icon);height:var(--section-summary-icon);flex:0 0 var(--section-summary-icon);}
#member-avatar-account.member-settings {padding:0;border:0;background:transparent;}
.member-actions-body-row .crawl-plan-action>svg {flex-shrink:0;}

/* Shared dialog footers: centre content and let every packed row fill its width. */
dialog .dialog-actions-wrap>button {justify-content:center;flex-grow:1;margin:0;}
.avatar-picker .avatar-picker-icons {max-width:none;}
.avatar-settings-row {display:flex;align-items:center;gap:12px;min-width:0;}
.avatar-settings-row>.member-avatar-settings {flex:1;min-width:0;margin:0;justify-content:center;}
.avatar-preview {position:relative;flex:0 0 116px;width:116px;height:92px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#dfe6df url('assets/avatar-map-sample.png') center/cover;}
.avatar-preview-anchor {position:absolute;left:calc(50% - 19px);top:calc(50% - 19px);}
.avatar-preview .member-map-marker {margin:0;}
.avatar-preview .member-map-marker>svg {width:34px!important;height:34px!important;}
.avatar-preview-credit {position:absolute;bottom:0;right:0;font:8px/1.4 sans-serif;color:#112f46;background:#ffffffd9;padding:0 2px;}
@media(prefers-reduced-motion:reduce){.avatar-preview .member-map-marker {animation:none;}}

.avatar-preview::before {content:"";position:absolute;inset:0;background:#061321;opacity:0;pointer-events:none;}
body.is-night .avatar-preview::before {opacity:.48;}
.avatar-preview-credit {z-index:1;}
.route-summary button {min-height:0;}
.member-battery-percent {position:absolute;bottom:1px;left:0;right:0;text-align:center;font-size:9px;line-height:1;background:inherit;color:inherit;pointer-events:none;}
.member-roster-actions>[data-member-battery] {position:relative;}

.member-roster-actions>[data-battery-state="full"] {color:var(--message-success-text);background:var(--message-success-background);}
.member-roster-actions>[data-battery-state="medium"] {color:var(--message-pending-text);background:var(--message-pending-background);}
.member-roster-actions>[data-battery-state="low"] {color:var(--message-error-text);background:var(--message-error-background);}


/* Preserve two action widths for the static member identity. */
.member-name-shell {min-width:72px;}
.member-name-content {display:block;width:100%;}
.member-roster-name .member-roster-identity small {width:72px;max-width:72px;}
@media(hover:none) and (pointer:coarse) {
 .member-actions-shell .member-action-chevron-column {display:none;pointer-events:none;}
 .member-actions-scrollport {width:100%;max-width:100%;margin-inline:0;}
 .member-actions-shell::before {left:0;}
 .member-actions-shell::after {right:0;}
}

/* Desktop controls remain available even on hybrid touch/mouse devices. */
@media(any-pointer:fine) {
 .member-actions-shell .member-action-chevron-column {display:flex;}
 .member-actions-scrollport {width:calc(var(--member-tools-width,104px) - 32px);max-width:none;margin-inline:16px;}
 .member-actions-shell::before {left:16px;}.member-actions-shell::after {right:16px;}
}
.member-roster :is(.member-actions-heading,.member-actions-column) {width:var(--member-tools-width,104px);min-width:0;max-width:none;}
.member-actions-column-definition,.member-actions-shell {width:var(--member-tools-width,104px);}
.crawl-plan-content {padding-inline:8px;}
.crawl-plan-header {padding-inline:10px;box-sizing:border-box;}


.member-name-shell {position:relative;overflow:visible;min-width:72px;}
.member-name-text {overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}
/* The roster disclosure owns its sole ellipsis; map/award labels keep native truncation. */
.member-name-shell .member-name-text {text-overflow:clip;}
.member-name-ellipsis {position:absolute;right:0;top:0;display:grid;place-items:center;width:1.1em;height:1.2em;min-height:0;padding:0;border:0;background:var(--cream);color:var(--ink);font-size:.93rem;font-weight:700;cursor:pointer;}
.member-name-ellipsis[hidden] {display:none;}
.member-list-name-tag {position:fixed;inset:auto;margin:0;translate:none;bottom:auto;padding:3px 7px;border:0;max-width:none;white-space:normal;overflow-wrap:anywhere;pointer-events:auto;z-index:10000;box-shadow:0px 15px 10px #09203380;}
.member-actions-shell {width:100%;}
.member-actions-scrollport {width:calc(100% - 32px);max-width:none;}
@media(hover:none) and (pointer:coarse) { .member-actions-scrollport {width:100%;margin-inline:0;} }
@media(any-pointer:fine) { .member-actions-scrollport {width:calc(100% - 32px);margin-inline:16px;} }

body .member-action-chevron>svg {width:14px!important;height:14px!important;}

.member-actions-shell.is-middle-scrolling,.member-actions-shell.is-middle-scrolling * {cursor:ew-resize!important;}
/* 16px section padding minus 13px extension leaves 3px + the 1px pane border. */
.members-list>.organiser-section-body {margin-right:-13px;}

.member-award-winners {display:grid;gap:6px;min-width:0;}
.member-award-member {display:flex;align-items:center;gap:8px;min-width:0;width:100%;padding:0;border:0;background:transparent;color:var(--ink);text-align:left;font:inherit;cursor:pointer;}
.member-award-member .member-roster-avatar-button {flex:0 0 32px;overflow:hidden;position:relative;}
.member-award-member .member-roster-identity {flex:1;min-width:0;}
.member-award-member .member-roster-identity small {white-space:nowrap;}

.member-award-score {color:var(--muted);}

a[href] {-webkit-touch-callout:none;}
.member-roster-name .member-roster-identity small {font-size:.65rem;}
.member-name-ellipsis {width:2.2em;height:2.4em;translate:0 -.6em;}
.member-award-member {max-width:72px;gap:4px;}
.member-award-title {font-weight:700;}
.member-award-title>svg {width:20px;height:20px;vertical-align:middle;margin-right:6px;}
.member-award-score>svg {width:16px;height:16px;vertical-align:middle;margin-right:3px;}
.member-award-member .member-roster-avatar-button {flex-basis:24px;width:24px;height:24px;}
.member-roster-location>.map-marker {position:static;width:31px;height:31px;margin:auto;}


.member-award-title-content {display:grid;grid-template-columns:20px minmax(0,1fr);align-items:center;gap:6px;}
.member-award-title-content>svg {width:20px;height:20px;}
.member-award-title-content>span {overflow-wrap:anywhere;}
.member-name-ellipsis {width:1.1em;height:1lh;translate:none;display:block;text-align:center;line-height:inherit;}
.member-name-ellipsis::before {content:'';position:absolute;inset:-.6em -.55em;}
.member-reference-group {display:flex;width:100%;align-items:center;gap:8px;padding:0;border:0;background:transparent;color:var(--ink);font:inherit;text-align:left;min-width:0;}
.member-reference-group> .member-roster-avatar-button {flex:0 0 32px;}
.member-reference-group> .member-roster-identity {flex:1;min-width:0;}

img,a[href] {-webkit-user-drag:none;}

.member-awards-grid {display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:8px;}
.member-awards-grid>.member-award-entry {display:grid;grid-column:auto;grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--cream);min-width:0;}
.member-awards-grid .member-award-title {grid-column:1/-1;}
.member-awards-grid .member-award-winners {display:grid;width:auto;max-width:none;min-width:0;gap:6px;}
.member-awards-grid .member-award-member {max-width:none;}
.member-awards-grid .member-award-score {align-self:center;max-width:130px;text-align:right;}
.dialog-icon-stack {display:flex;flex-direction:column;gap:6px;width:var(--control-icon-size);}
.dialog-icon-stack> :is(svg,i) {width:var(--control-icon-size);height:var(--control-icon-size);flex-shrink:0;}

.member-awards-grid>.member-award-entry {grid-template-columns:48px minmax(0,1fr) auto;}
.member-awards-grid .member-award-icon {grid-column:1;grid-row:1/3;display:grid;place-items:center;align-self:stretch;}
.member-award-icon>:is(svg,i) {width:48px;height:48px;}
.member-awards-grid .member-award-title {grid-column:2/-1;}
.member-awards-grid .member-award-title-content {display:block;}
.member-awards-grid .member-award-winners {grid-column:2;}
.member-awards-grid .member-award-score {grid-column:3;max-width:110px;}
.member-awards-grid .member-award-score.is-empty {grid-column:2/-1;text-align:left;}
.dialog-icon-stack {gap:3px;}

.member-stats-values .member-rating-value,.member-award-score.member-rating-value { display:inline-flex; align-items:center; justify-content:flex-end; white-space:pre; }
.member-rating-value>svg { width:16px; height:16px; flex:0 0 16px; margin:0; }

.map-notice-stack>.ended-event-warning { position:relative; z-index:1; }

/* Keep the only visible drawer root open, retaining help controls. */
details.is-only-root-section>summary {cursor:default;}
details.is-only-root-section>summary>[data-lucide="chevron-right"],details.is-only-root-section>summary>svg:first-child {opacity:.3;}

#member-privacy-account {max-width:1050px;margin:0 auto 14px;}
.member-tracking-actions {display:flex;flex-wrap:wrap;gap:12px;}
.member-tracking-actions>.edit-stops {flex:1 1 220px;max-width:600px;}
.member-tracking-actions>[hidden] {display:none;}

.member-tracking-heading {align-items:center;}
.member-tracking-heading>.action-info-button {align-self:center;margin-block:0;}

/* Shared message copy balances wrapped lines; authored line breaks remain. */
.action-message>:is(span,p),.admin-section-help,.press-hold-help {text-wrap:balance;}
/* Tracking uses the same heading/content rhythm as the other privacy controls. */
.member-tracking-section,.access-section>.member-tracking-section {display:grid;gap:var(--section-heading-gap);}
.member-tracking-section>.settings-section-body {margin-top:0;}

.member-tracking-heading,.member-settings-section>h3.admin-section-heading {margin-bottom:0;}

.rocket-fling-trail {position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none;overflow:hidden;}
.rocket-fling-trail polyline {fill:none;stroke:#ffd166;stroke-width:3;stroke-linecap:round;stroke-dasharray:1 8;filter:drop-shadow(0 1px 1px #112f46);}
.rocket-fling-distance {position:absolute;z-index:3;padding:5px 9px;border-radius:8px;background:var(--filled-action-base);color:#ffd166;font-weight:800;font-size:var(--text-body);white-space:nowrap;pointer-events:none;}
.rocket-fling-distance.is-landed {animation:fling-result 1s ease-out;}
.member-map-marker.is-rocket-flung {animation:none;transition:none;}
.member-map-marker.is-rocket-respawning {animation:fling-respawn .35s ease-in-out both;}
@keyframes fling-respawn {0%,40%,80% {opacity:.12;}20%,60% {opacity:.5;}100% {opacity:0;}}
@keyframes fling-result {0%,25%,50%,75% {color:white;box-shadow:0 0 12px #ffd166;}100% {box-shadow:none;}}
@media(prefers-reduced-motion:reduce){.member-map-marker.is-rocket-respawning,.rocket-fling-distance.is-landed {animation:none;}}

.member-map-marker.is-lightning-hit {animation:member-lightning-hit .35s ease-out;outline:3px solid #fff3b0;filter:brightness(1.6) drop-shadow(0 0 8px #ffd166);}
.member-map-marker.is-lightning-hit::after {content:'\26A1';position:absolute;bottom:100%;left:35%;font-size:30px;color:#ffd166;}
@keyframes member-lightning-hit {20%,60% {rotate:-9deg;}40%,80% {rotate:9deg;}100% {rotate:0deg;}}
@media(prefers-reduced-motion:reduce){.member-map-marker.is-lightning-hit {animation:none;}}

/* Pointer-only shared treatment; keyboard focus remains available on touch. */
@media(hover:hover) and (pointer:fine) {
 .member-action-chevron-column:hover {border-radius:4px;}
 :is(.member-award-member,button.member-reference-group):not(:disabled):hover {border-radius:6px;}
}
:is(.member-award-member,button.member-reference-group):focus-visible {outline:3px solid var(--red);outline-offset:3px;border-radius:6px;}

/* A parent heading followed immediately by its first child heading needs a rule. */
.organiser-section[open]>.organiser-section-body:has(>.admin-section-heading:first-child),
.organiser-section[open]>.organiser-section-body:has(>:first-child>.admin-section-heading:first-child) {border-top:1px solid var(--line);padding-top:var(--section-divider-after);}
.crawlbook-mention {font-weight:700;display:inline-flex;align-items:baseline;gap:.25em;white-space:nowrap;}
.crawlbook-mention>:is(i,svg) {display:inline-block;width:1em;height:1em;flex:0 0 1em;align-self:center;vertical-align:-.125em;}

/* Canonical divider gaps include the containing grid's existing row gap. */
.organiser-section-body>.admin-section-divider {margin-block:calc(var(--section-divider-before) - 12px) calc(var(--section-divider-after) - 12px);}
.member-tracking-section>.admin-section-divider {margin-block:calc(var(--section-divider-before) - var(--section-heading-gap)) calc(var(--section-divider-after) - var(--section-heading-gap));}
/* The first tracking divider also follows its outer section grid's 12px gap. */
.organiser-section-body>section>section>.member-tracking-section>.admin-section-divider:first-child {margin-top:calc(var(--section-divider-before) - 12px);}
.member-settings-section + .member-settings-section {margin-top:calc(var(--section-divider-before) - 12px);padding-top:var(--section-divider-after);}

/* Contact names and links share one indented content block below the heading. */
.event-contact-section>.organiser-section-body>.event-contact-subject {margin-inline-start:var(--section-summary-icon,24px);}

/* Summary Controls Section: persistent compact rows with one accessible control. */
.summary-state-pill {display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;min-width:84px;padding:6px 10px;border:1px solid var(--line);border-radius:8px;margin-left:auto;flex:0 0 auto;font:inherit;font-weight:800;cursor:pointer;}
.summary-state-pill[data-state="on"] {background:var(--message-success-background);color:var(--message-success-text);}
.summary-state-pill[data-state="off"] {background:var(--message-error-background);color:var(--message-error-text);}
.summary-state-pill[data-state="disabled"] {background:var(--cream);color:var(--muted);cursor:default;}
.summary-state-pill[data-variant="appearance"][data-state="off"] {background:#fff;color:#102b3a;}
.summary-state-pill[data-variant="appearance"][data-state="on"] {background:#101820;color:#fff;}
.summary-state-pill[data-variant="visibility"][data-state="off"] {background:var(--cream);color:var(--ink);}
.summary-state-pill>:is(i,svg) {width:20px;height:20px;flex:0 0 20px;}
.summary-controls-section>summary {flex-wrap:wrap;}
.summary-controls-preview {display:grid;gap:2px;flex:0 0 100%;padding-left:var(--section-summary-icon,24px);}
.summary-controls-preview>.admin-section-heading {margin:0;font-size:var(--text-body);}
.summary-controls-preview .action-info-button {display:none;}
.summary-controls-section.is-background-mode .summary-controls-preview {display:none;}
.summary-controls-section.is-background-mode:not([open])>.organiser-section-body {display:none;}
.background-tracking-exception .member-tracking-heading,.background-tracking-exception .settings-section-body>:not(.member-tracking-actions),.background-tracking-exception .admin-section-divider {display:none;}
.background-tracking-exception .member-tracking-actions {margin:0;}
.member-account-actions>.edit-stops {flex:1 1 180px;}
.member-account-logout {display:grid;gap:var(--section-heading-gap);}

.background-tracking-exception .member-tracking-actions>button {min-height:44px;}

.member-tracking-actions:not(:has(>button:not([hidden]))) {display:none;}

/* Canonical info buttons occupy the right edge of their flex/grid row. */
.icon-button.action-info-button {margin-inline-start:auto;justify-self:end;}
.member-other-logins-table {width:100%;border-collapse:collapse;table-layout:fixed;}
.member-other-logins-table th {color:var(--muted);text-align:left;font-size:var(--text-min);}
.member-other-logins-table th,.member-other-logins-table td {padding:9px 8px;border-bottom:1px solid var(--line);overflow-wrap:anywhere;vertical-align:middle;}
.member-other-logins-table th:last-child,.member-other-logins-table td:last-child {width:54px;text-align:right;}
.member-other-logins-table .login-revoke {width:44px;min-height:44px;padding:0;display:inline-grid;place-items:center;}
.member-other-logins-table .login-revoke span {display:none;}
.member-other-logins-table .login-mode {display:block;color:var(--muted);font-size:var(--text-min);}

.member-other-logins-table .login-revoke.is-destructive {background:var(--danger-action-base);border-color:var(--danger-action-base);color:#fff;}
.member-other-logins-table th:last-child svg {width:20px;height:20px;vertical-align:middle;}

/* Held help owns its gesture: suspend native page/drawer/tool scrolling too. */
.held-help-scroll-lock {overflow:hidden!important;overscroll-behavior:none!important;scroll-behavior:auto!important;}

/* Background keeps the one privacy control that can withdraw tracking consent. */
.summary-controls-section.is-background-mode .summary-controls-preview {display:grid;}
.summary-controls-section.is-background-mode .summary-controls-preview>.admin-section-heading:not(.background-tracking-heading) {display:none;}
.background-tracking-exception .member-tracking-heading {display:flex;}

/* Compact Admin summary controls must override the legacy full-row button basis. */
.organiser-controls .summary-state-pill {flex:0 0 auto;width:auto;box-sizing:border-box;}
.organiser-event-visibility>.admin-section-heading {flex-wrap:wrap;}
.organiser-event-visibility>.admin-section-heading>.admin-section-title-text {flex:1 1 110px;}

/* Rocket flight hides only the stop card; map pan/zoom remains available. */
.is-rocket-effect-active .stop-card {opacity:0;pointer-events:none;transition:opacity .3s;}
/* Moving balloon targets own their gestures, not browser tap/pan highlighting. */
.masthead-effect--balloons {-webkit-tap-highlight-color:transparent;touch-action:none;}

.rocket-fling-record {position:absolute;z-index:4;color:#ffd166;font-size:var(--text-body);font-weight:900;white-space:nowrap;pointer-events:none;text-shadow:0 1px 3px #112f46;animation:fling-record 1s ease-out both;}
@keyframes fling-record {0% {opacity:0;translate:0 8px;}15%,65% {opacity:1;}100% {opacity:0;translate:0 -35px;}}
@media(prefers-reduced-motion:reduce){.rocket-fling-record {animation:none;}}

.rocket-fling-shadow {fill:#07131d;opacity:.3;filter:blur(1px);pointer-events:none;}

.event-schedule-display {flex-wrap:wrap;margin:8px 0 0;}
.event-schedule-display>.action-message {flex-basis:100%;}
.organiser-event-visibility>.admin-section-heading {margin:0;}

.event-date-retry[hidden] {display:none;}

/* Edit Crawl date, start and stay share the canonical labelled input treatment. */
.crawl-date-controls {width:min(15rem,100%);}
.crawl-date-controls label,.crawl-date-controls .crawl-date-input {width:100%;}
.timing-controls .organiser-field-label svg {width:20px;height:20px;flex:0 0 20px;}

.timing-controls label,.crawl-plan-description-editor .timing-controls label {font-size:var(--text-body);}
.timing-controls{flex-wrap:wrap;}
.timing-controls .number-input{flex-wrap:nowrap;}
.timing-controls .number-input input{width:4.5rem;flex:1 1 4.5rem;appearance:textfield;}
.timing-controls .number-input input::-webkit-inner-spin-button,.timing-controls .number-input input::-webkit-outer-spin-button{appearance:none;margin:0;}
.timing-controls .stay-step-button{display:grid;place-items:center;flex:0 0 44px;width:44px;height:44px;min-height:44px;padding:0;}
.timing-controls .stay-step-button svg{width:22px;height:22px;}
.crawl-plan-stop small{flex-wrap:wrap;}
.stop-stay-edit,.stop-stay-fixed{display:inline-flex;align-items:center;gap:6px;min-height:0;border:0;border-radius:7px;padding:0;background:transparent;color:inherit;font:inherit;}
button.stop-stay-fixed,button.stop-stay-edit{cursor:pointer;}
.stop-stay-fixed svg{width:18px;height:18px;}
.stop-stay-edit{min-height:44px;padding:5px 8px;}
button.stop-stay-fixed{min-height:44px;}
.crawl-plan-description-editor .timing-controls>label{flex:0 0 auto;min-width:0;}
.crawl-plan-description-editor #crawl-start-time{width:9.5rem;min-width:9.5rem;flex-shrink:0;}
.crawl-plan-description-editor .number-input{width:max-content;max-width:100%;}
.stop-stay-dialog{box-sizing:border-box;max-height:calc(100dvh - 16px);overflow:auto;overscroll-behavior:contain;}
.stop-stay-dialog.has-reduced-viewport{position:fixed;top:calc(var(--dialog-viewport-top) + var(--dialog-viewport-height) / 2);bottom:auto;margin:0 auto;height:auto;max-height:calc(var(--dialog-viewport-height) - 16px);transform:translateY(-50%);}
body:has(.stop-stay-dialog[open]){overflow:hidden;}
.stop-stay-dialog .dialog-scroll-body:focus-within{mask-image:none;}

/* Authored guidance stays inline, including inside legacy Admin control panes. */
body :is(.action-message,.completion-guidance,.action-info-subject,.map-member-guidance) a.guidance-link,
body.is-night :is(.action-message,.completion-guidance,.action-info-subject,.map-member-guidance) a.guidance-link {display:inline;min-height:0;padding:0;border:0;border-radius:0;background:transparent;color:inherit;font:inherit;text-decoration:underline;text-underline-offset:.15em;cursor:pointer;}

.masthead-effect--rocket {touch-action:none;}
.rocket-aim-crosshair {position:absolute;z-index:8;display:grid;place-items:center;width:42px;height:42px;translate:-50% -50%;border:2px solid var(--gold,#ffd166);border-radius:50%;color:#ffd166;background:#07152188;pointer-events:none;box-shadow:0 0 0 3px #07152188;}
.rocket-aim-crosshair svg {width:32px;height:32px;}
.rocket-aim-crosshair::after {content:'';position:absolute;inset:-6px;border:3px solid transparent;border-top-color:#ffd166;border-right-color:#ffd166;border-radius:50%;animation:rocket-aim-countdown 1s linear forwards;}
@keyframes rocket-aim-countdown {to {rotate:360deg;opacity:.2;}}

html,body {touch-action:pan-x pan-y;}

/* Canonical button surface: owner-selected Emboss + Shadow. Keep map/drag targets flat. */
:root {--button-surface-rest:inset 0 1px 2px #ffffff55,0 5px 4px -2px #00000044;--button-surface-down:inset 0 2px 5px #00000066,inset 0 -1px 1px #ffffff25,0 3px 2px -1px #00000044;}
body:is(.is-night,:not(.is-night)) :is(a.crawl-plan-action,button.brand,.photo-gallery-item>button,a.this-directions,a.next-directions,button.button-surface,button.crawl-plan-action,button.end-event,button.photo-text-button,button.photo-dialog-close,button.card-rating,.timing>button,.card-overflow-group>button,button.member-action-chevron,button.rating-tab-scroll,button.drawer-tab-scroll,.stop-controls>button,.photo-actions>button,.photo-upload-actions>button,.rating-dialog-actions>button,.rating-tabs>button,button.edit-stops,a.edit-stops,button.icon-button,button.theme-toggle,button.summary-state-pill,button.card-check-in,.drawer-tabs>button,.card-controls>button,.card-navigation>button,.avatar-picker button,.member-actions-body-row button):not(.message-copy-icon):not(:disabled):not([aria-disabled="true"]) {--button-press-feedback:1;clip-path:inset(0 -2px -2px round var(--button-shadow-rounding,11px));box-shadow:var(--button-surface-rest);transition:box-shadow .12s ease,translate .12s ease,background-color .12s ease,color .12s ease;}
body:is(.is-night,:not(.is-night)) :is(a.crawl-plan-action,button.brand,.photo-gallery-item>button,a.this-directions,a.next-directions,button.button-surface,button.crawl-plan-action,button.end-event,button.photo-text-button,button.photo-dialog-close,button.card-rating,.timing>button,.card-overflow-group>button,button.member-action-chevron,button.rating-tab-scroll,button.drawer-tab-scroll,.stop-controls>button,.photo-actions>button,.photo-upload-actions>button,.rating-dialog-actions>button,.rating-tabs>button,button.edit-stops,a.edit-stops,button.icon-button,button.theme-toggle,button.summary-state-pill,button.card-check-in,.drawer-tabs>button,.card-controls>button,.card-navigation>button,.avatar-picker button,.member-actions-body-row button):not(.message-copy-icon):not(:disabled):not([aria-disabled="true"]):is(:active,.is-button-pressed) {box-shadow:var(--button-surface-down);translate:0 2px;transition:none;}
@media(prefers-reduced-motion:reduce){
 body:is(.is-night,:not(.is-night)) :is(a.crawl-plan-action,button.brand,.photo-gallery-item>button,a.this-directions,a.next-directions,button.button-surface,button.crawl-plan-action,button.end-event,button.photo-text-button,button.photo-dialog-close,button.card-rating,.timing>button,.card-overflow-group>button,button.member-action-chevron,button.rating-tab-scroll,button.drawer-tab-scroll,.stop-controls>button,.photo-actions>button,.photo-upload-actions>button,.rating-dialog-actions>button,.rating-tabs>button,button.edit-stops,a.edit-stops,button.icon-button,button.theme-toggle,button.summary-state-pill,button.card-check-in,.drawer-tabs>button,.card-controls>button,.card-navigation>button,.avatar-picker button,.member-actions-body-row button):not(.message-copy-icon):not(:disabled):not([aria-disabled="true"]) {transition:none;}
 body:is(.is-night,:not(.is-night)) :is(a.crawl-plan-action,button.brand,.photo-gallery-item>button,a.this-directions,a.next-directions,button.button-surface,button.crawl-plan-action,button.end-event,button.photo-text-button,button.photo-dialog-close,button.card-rating,.timing>button,.card-overflow-group>button,button.member-action-chevron,button.rating-tab-scroll,button.drawer-tab-scroll,.stop-controls>button,.photo-actions>button,.photo-upload-actions>button,.rating-dialog-actions>button,.rating-tabs>button,button.edit-stops,a.edit-stops,button.icon-button,button.theme-toggle,button.summary-state-pill,button.card-check-in,.drawer-tabs>button,.card-controls>button,.card-navigation>button,.avatar-picker button,.member-actions-body-row button):not(.message-copy-icon):is(:active,.is-button-pressed) {translate:none;}
}

#drawer-scroll-top:not(:disabled):is(:active,.is-button-pressed) {box-shadow:var(--button-surface-down);}

/* Static raised panels retain their existing drag and navigation behaviour. */
body:is(.is-night,:not(.is-night)) :is(.card-header-row,.card-navigation,.crawl-plan-peek){box-shadow:var(--button-surface-rest);}
.dialog-description-icons{display:flex;align-items:center;justify-content:flex-start;gap:10px;margin:0;}.dialog-description-icons svg,.dialog-description-icons i{margin:0;width:24px;height:24px;flex:0 0 24px;}

/* Identity actions reserve their own column, even for a long member name. */
.member-stats-dialog .member-stats-name{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:12px;}
.member-stats-name .member-roster-identity{min-width:0;}
.member-stats-name .member-ratings-button{justify-self:end;white-space:nowrap;}
.member-stats-dialog .member-stats-values{border:0;margin:16px 0;padding:0;}
.member-stats-dialog .section-divider{margin-block:18px;}
button.rating-member-row{display:grid;width:100%;color:var(--ink);background:var(--cream);font:inherit;text-align:left;cursor:pointer;}
button.rating-member-row:focus-visible{outline:2px solid var(--red);outline-offset:2px;}
.member-rating-stop{padding:14px 0;border-bottom:1px solid var(--line);}
.member-rating-stop:last-child{border-bottom:0;}
.member-rating-stop-title{display:flex;align-items:center;gap:12px;}
.member-rating-stop-title h3{margin:0;font-size:1.15rem;overflow-wrap:anywhere;}
.member-rating-stop-title .map-marker{position:static;transform:none;flex:0 0 auto;}
.member-rating-scores{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 16px;margin:14px 0 0;}
.member-rating-scores dt{display:flex;align-items:center;gap:10px;}
.member-rating-scores dt svg{width:22px;height:22px;flex:0 0 22px;}
.member-rating-scores dd{margin:0;text-align:right;}
/* Adjacent tab surfaces keep their shadow inside their own footprint. */
body:is(.is-night,:not(.is-night)) :is(.drawer-tabs,.rating-tabs)>button:not(:disabled):not([aria-disabled="true"]){clip-path:inset(0 round 10px 10px 0 0);}
/* Gapped controls retain a small outer shadow within their available gutter. */
:is(.confirmation-dialog-actions,.rating-dialog-actions,.stop-controls,.photo-actions,.photo-upload-actions,.card-controls,.card-navigation,.avatar-picker,.member-actions-body-row)>button{clip-path:inset(0 -2px -2px round var(--button-shadow-rounding,11px));}

/* Hover gently shades the resting palette; it never changes an action's colour family. */
@media(hover:hover) and (pointer:fine){
 body:not(.is-night) :is(button,a.crawl-plan-action,a.this-directions,a.next-directions):not(:disabled):not([aria-disabled="true"]):hover{filter:brightness(.94);}
 body.is-night :is(button,a.crawl-plan-action,a.this-directions,a.next-directions):not(:disabled):not([aria-disabled="true"]):hover{filter:brightness(1.10);}
 .summary-controls-section>summary:hover:not(:has(.summary-state-pill:hover)){filter:brightness(1.05);}
}
summary{-webkit-tap-highlight-color:transparent;}
.summary-controls-section>summary:has(.summary-state-pill:is(:hover,:active,.is-button-pressed)){filter:none;}
:root{--message-copy-feedback:#000;}
body.is-night{--message-copy-feedback:#fff;}
/* Header shadow falls onto the middle; the opaque footer paints above it. */
.stop-card .card-header-row{position:relative;z-index:2;}
.stop-card .card-middle{position:relative;z-index:1;}
.stop-card .card-navigation{position:relative;z-index:3;}
body:is(.is-night,:not(.is-night)) .stop-card .card-header-row{box-shadow:inset 0 1px 2px #ffffff55,0 5px 5px -3px #00000044;clip-path:inset(0 0 -8px);}

/* Keep the established in-motion latch cue distinct from a resting-button hover. */
.drawer-latch-controls button.is-moving{color:var(--red);background:#ffd16624;}

/* Static embossed content surfaces; help messages retain their flat semantic colours. */
:root {--pane-emboss:inset 0 2px 2px #ffffff55,inset 0 -2px 2px #00000055;--pane-padding:10px;}
body:is(.is-night,:not(.is-night)) :is(.action-message,.info-pane){box-shadow:none;}
body:is(.is-night,:not(.is-night)) :where(.embossed-pane,.party-stats>.organiser-section-body>.member-stats-values,.member-award-entry,.photo-panel){box-shadow:var(--pane-emboss);border:1px solid var(--line);border-radius:10px;background:var(--cream);color:var(--ink);}
.embossed-pane,.party-stats>.organiser-section-body>.member-stats-values {padding:var(--pane-padding);}
body:is(.is-night,:not(.is-night)) .photo-panel {padding:var(--pane-padding);margin-inline:0;}
.action-info-subject.has-description-icons>p>strong:first-child,.dialog-description-section>strong:first-child {display:inline;}
.dialog-description-section {display:block;margin-top:8px;}
.action-info-subject.has-description-icons {align-items:center;}
.action-info-subject.has-description-icons .dialog-description-icons {display:inline-flex;gap:3px;margin:0 0 0 6px;vertical-align:middle;}
.action-info-dialog.dialog-content-stack>.dialog-scroll-body>.action-info-subject {margin:0;}
.action-info-dialog.dialog-content-stack {--dialog-content-gap:8px;}
.action-info-dialog.dialog-content-stack>h2,.action-info-dialog.dialog-content-stack>.confirmation-dialog-actions {margin:0;}
.rating-dialog.dialog-scroll-layout>.rating-tabs-shell {margin-bottom:0;flex-shrink:0;}
.rating-dialog>.dialog-scroll-body.embossed-pane {border-top-left-radius:0;border-top-right-radius:0;}
.rating-dialog>.rating-tabs-shell .rating-tabs {border-bottom:0;}
.rating-dialog>.rating-tabs-shell .rating-tabs>button[aria-selected="true"] {border-bottom-left-radius:0;border-bottom-right-radius:0;box-shadow:inset 0 1px 2px #ffffff40;translate:none;}
.is-summary-guidance{cursor:pointer;}
.is-summary-guidance .summary-state-pill{cursor:pointer;}

/* Separate owner trial: one static pane for each visible expanded section body. */
body:is(.is-night,:not(.is-night)) :is(.organiser-section-body,.settings-section-body,.accordion-body) {
  box-shadow:var(--pane-emboss);border:1px solid var(--line);border-radius:10px;
  background:var(--cream);color:var(--ink);padding:8px;min-width:0;box-sizing:border-box;
}
.members-list>.organiser-section-body {margin-right:0;}
.organiser-section[open]>.organiser-section-body:has(>.admin-section-heading:first-child),
.organiser-section[open]>.organiser-section-body:has(>:first-child>.admin-section-heading:first-child) {padding-top:var(--section-divider-after);}

/* Top-lit physical surfaces: no shadow above its source or across neighbouring controls. */
body:is(.is-night,:not(.is-night)) .organiser-section {box-shadow:var(--button-surface-rest);border-radius:10px;clip-path:inset(0 -2px -2px round 10px);}
.settings-section-body:not(:has(>:not([hidden]):not(dialog))),.organiser-section-body:not(:has(>:not([hidden]):not(dialog))) {display:none;}
.member-roster table {border-top:0;}
.member-roster thead th {border-bottom:1px solid var(--line);}
.drawer-tabs>button[aria-selected="false"] {border:1px solid color-mix(in srgb,var(--ink) 40%,var(--cream));border-bottom:0;}
/* Tools mirror row heights without contributing height back to the rowspan cell. */
.member-roster .member-actions-column {position:relative;}
.member-actions-column>.member-actions-shell {position:absolute;inset:0;}
.member-roster-row>td:not(.member-actions-column) {height:56px;box-sizing:border-box;}
/* Owner-selected self-row treatment: 60% ink, with other columns unchanged. */
.member-roster-row.is-current-member>.member-roster-name {box-shadow:inset 2px 0 color-mix(in srgb,var(--ink) 60%,transparent);}
.member-roster-row.is-current-member .member-identity-row {padding-inline-start:12px;}
.member-roster-row.is-current-member .member-roster-avatar-button {outline:2px solid color-mix(in srgb,var(--ink) 60%,transparent);outline-offset:2px;}
.member-roster-row.is-current-member .member-name-content {display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 7px;}
.member-roster-row.is-current-member .member-name-text {min-width:0;max-width:100%;}
.member-roster-you {font-size:var(--text-compact);font-weight:650;color:var(--muted);white-space:nowrap;}
:root {--nested-heading-inset:22px;}

/* Owner-selected surface roles: parent/award B, child/photo/rating F, help E. */
:root {
  --surface-radius:10px;
  --surface-raised-soft:inset 0 1px 2px #ffffff66,inset 0 -1px 2px #00000022,0 5px 4px -2px #00000044;
  --surface-inset-borderless:inset 0 2px 6px #00000044,inset 0 -2px 2px #ffffff66;
  --surface-inset-crisp:inset 0 1px 1px #00000088,inset 0 -1px 1px #ffffffaa;
  --pane-emboss:var(--surface-inset-borderless);
}
body:is(.is-night,:not(.is-night)) :is(.organiser-section-body,.settings-section-body,.accordion-body,.photo-panel,.party-stats>.organiser-section-body>.member-stats-values) {box-shadow:var(--surface-inset-borderless);border-color:transparent;background:var(--cream);color:var(--ink);}
body:is(.is-night,:not(.is-night)) :is(.organiser-section,.member-award-entry) {box-shadow:var(--surface-raised-soft);}
/* One raised tool group; nested headings are flat and content ports stay inset. */
body:is(.is-night,:not(.is-night)) .organiser-pane {box-shadow:var(--surface-raised-soft);}
body:is(.is-night,:not(.is-night)) .organiser-pane .organiser-section {box-shadow:none;}
.member-award-content {grid-column:2/-1;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px;padding:2px;min-width:0;border-radius:8px;box-shadow:var(--surface-inset-borderless);}
.member-awards-grid .member-award-content>.member-award-winners {grid-column:1;}
.member-awards-grid .member-award-content>.member-award-score {grid-column:2;}
.member-awards-grid .member-award-content>.member-award-score.is-empty {grid-column:1/-1;}
body:is(.is-night,:not(.is-night)) .member-award-entry {clip-path:inset(0 -2px -2px round var(--surface-radius));}
body:is(.is-night,:not(.is-night)) :is(.action-info-dialog,.member-settings-dialog)>.dialog-scroll-body {box-shadow:var(--surface-inset-crisp);border:1px solid var(--line);border-radius:var(--surface-radius);}
body:is(.is-night,:not(.is-night)) .rating-dialog>.dialog-scroll-body.embossed-pane {box-shadow:var(--surface-inset-borderless);border-color:transparent;border-radius:var(--surface-radius);}
.rating-dialog.dialog-scroll-layout>.rating-tabs-shell {margin-inline:var(--surface-radius);}
.action-info-subject.has-description-icons>p>strong:first-child,.dialog-description-section>strong:first-child {display:inline-block;line-height:1;vertical-align:bottom;}
.action-info-subject.has-description-icons .dialog-description-icons {vertical-align:bottom;line-height:1;}
/* Semantic heading dividers remain visible within borderless child surfaces. */
.organiser-section[open]>.organiser-section-body:has(>.admin-section-heading:first-child),
.organiser-section[open]>.organiser-section-body:has(>:first-child>.admin-section-heading:first-child) {border-top-color:var(--line);}

/* Fixed avatar action rows sit outside the inset text/grid port. */
.avatar-picker>.avatar-picker-actions {flex-shrink:0;margin:0;}
.avatar-picker .dialog-scroll-body {min-width:0;box-sizing:border-box;grid-auto-rows:max-content;}
/* A closed card has no middle content: its footer has no separate top bevel. */
body:is(.is-night,:not(.is-night)) .stop-card.is-collapsed:not(.is-card-dragging) .card-navigation {box-shadow:0 5px 4px -2px #00000044;}
/* The background exception retains the heading's Off action, without an empty body. */
.background-tracking-exception .settings-section-body:not(:has(.member-tracking-actions>button:not([hidden]))) {display:none;}
/* Compact semantic dividers between explanatory sections. */
:is(.action-info-dialog,.member-settings-dialog) .dialog-scroll-body>.action-info-subject+.action-info-subject {position:relative;border-top:0;border-image:none;padding-top:10px;}
:is(.action-info-dialog,.member-settings-dialog) .dialog-scroll-body>.action-info-subject+.action-info-subject::before {content:"";position:absolute;inset:0 0 auto;height:2px;background:linear-gradient(to bottom,#00000066,#ffffff77);pointer-events:none;}

:root {--radar-ring-colour:#55b6d5;--radar-ring-width:2px;}
.check-in-radar {position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none;overflow:hidden;}
.check-in-radar polyline {fill:#55b6d514;stroke:var(--radar-ring-colour);stroke-width:var(--radar-ring-width);vector-effect:non-scaling-stroke;}
.radar-check-in-cue {position:absolute;bottom:calc(100% + 6px);left:50%;translate:-50% 0;padding:3px 6px;border:var(--radar-ring-width) solid var(--radar-ring-colour);border-radius:6px;background:var(--cream);color:var(--ink);font-size:var(--text-compact);white-space:nowrap;pointer-events:none;}
.map-marker.is-radar-stop:not(.is-selected) {outline:2px solid #55b6d5;outline-offset:2px;}
.map-marker.is-radar-next:not(.is-selected) {outline-color:#d99b16;}
.card-check-in.is-radar-check-in {animation:radar-check-in-hint 1.4s ease-out;}
 :root {--radar-hit-colour:#08768e;}
body.is-night {--radar-hit-colour:#6cdefc;}
@keyframes radar-check-in-hint {0%,65%{box-shadow:inset 0 0 0 4px var(--radar-hit-colour),inset 0 0 0 100px #55b6d53b;}100%{box-shadow:var(--button-surface-rest);}}
@media(prefers-reduced-motion:reduce){body:is(.is-night,:not(.is-night)) .stop-card .card-check-in.is-radar-check-in{animation:none;box-shadow:inset 0 0 0 3px var(--radar-hit-colour);}}

/* Avatars sit over their geographic centre, with a close ground shadow. */
body:is(.is-night,:not(.is-night)) :is(.map-marker,.map-marker--cluster,.member-map-marker) {box-shadow:0 7px 7px #09203380;}
body.is-night :is(.map-marker,.map-marker--cluster,.member-map-marker) {box-shadow:0 7px 7px #000b;}

/* The closed handle repeats the same distance-triggered Radar hit as Check In. */
.stop-card.is-collapsed.is-radar-hit:not(.is-card-dragging) .card-grab-handle::before {background:#55b6d5;box-shadow:0 0 10px 3px #55b6d5b3;animation:radar-handle-hit 1.4s ease-out;}
@keyframes radar-handle-hit {0%,65%{background:#55b6d5;box-shadow:0 0 10px 3px #55b6d5b3;}100%{background:var(--filled-action-base);box-shadow:0 0 0 0 transparent;}}
@media(prefers-reduced-motion:reduce){.stop-card.is-collapsed.is-radar-hit .card-grab-handle::before{animation:none;}}

/* Keep the established inline tool row; spacing belongs to its following copy. */
.dialog-description-copy {display:block;margin-top:4px;}
/* Shared press surfaces must not replace the masthead's stack/unstack motion. */
body:is(.is-night,:not(.is-night)) .masthead-stack-group>button:not(:disabled):not([aria-disabled="true"]) {transition:transform .48s cubic-bezier(.22,1.35,.38,1),opacity .18s ease,box-shadow .12s ease,translate .12s ease,background-color .12s ease,color .12s ease;}
body:is(.is-night,:not(.is-night)) .masthead-stack-group>button:not(:disabled):not([aria-disabled="true"]):is(:active,.is-button-pressed) {transition:transform .48s cubic-bezier(.22,1.35,.38,1),opacity .18s ease;}

/* Hidden capability headings must stay hidden even in flex-based summaries. */
.summary-controls-preview>.admin-section-heading[hidden] {display:none!important;}
/* Route attention lives within its tile, clear of adjacent controls and clipping. */
:root {--route-tile-flash:#ffd166;}
body.is-night {--route-tile-flash:#32627f;}
body:is(.is-night,:not(.is-night)) .stop-card .timing button.is-route-selected {animation:route-tile-highlight 1.2s ease-out;}
@keyframes route-tile-highlight {0%,35%{background:var(--route-tile-flash);box-shadow:inset 0 0 0 3px #ffd166;}100%{background:transparent;box-shadow:var(--button-surface-rest);}}
@media(prefers-reduced-motion:reduce){body:is(.is-night,:not(.is-night)) .stop-card .timing button.is-route-selected{animation:none;box-shadow:inset 0 0 0 3px #ffd166;}}

/* Shared accordion geometry: summary, content port and compact preview are distinct roles. */
:root {--accordion-header-height:64px;--accordion-header-inset:8px;--accordion-body-gap:12px;}
.accordion-section>summary.accordion-heading {box-sizing:border-box;min-height:var(--accordion-header-height);padding:8px var(--accordion-header-inset);margin:0;align-items:center;}
/* Non-disclosing peers reserve the same chevron gutter and row height. */
.section-header[data-heading-role="peer"] {box-sizing:border-box;min-height:var(--accordion-header-height);padding-block:8px;padding-inline:calc(var(--accordion-header-inset) + var(--section-summary-icon) + 10px) var(--accordion-header-inset);margin:0;align-items:center;}
.accordion-heading>.admin-section-title-text {flex:1 1 auto;min-width:0;overflow-wrap:anywhere;}
.accordion-heading>.action-info-button {margin-inline-start:auto;flex-shrink:0;}
.accordion-section>.accordion-body {display:grid;gap:var(--accordion-body-gap);min-width:0;margin-block-start:var(--section-heading-gap);}
.accordion-section>.accordion-body:not(:has(>:not([hidden]):not(dialog):not(:is(div,section):empty))) {display:none;}
/* Only a content port's own headings receive an inset. Never accumulate it through descendants. */
.section-content>.section-header:not(summary):not([data-heading-role="peer"]),
.section-content>section>.section-header:not(summary):not([data-heading-role="peer"]),
.section-header[data-heading-role="content"] {padding-inline-start:var(--nested-heading-inset);box-sizing:border-box;}
.summary-controls-preview>.section-header {padding:0;margin:0;min-height:0;}
/* A nested invitation already owns its chevron gutter; its body owns the content inset. */
.organiser-pane .accordion-section[data-accordion-role="nested"] {padding:0;margin:0;border:0;border-radius:var(--surface-radius);background:transparent;}
body:is(.is-night,:not(.is-night)) .accordion-section[data-accordion-role="nested"] {padding:0;margin:0;border:0;background:transparent;box-shadow:none;}
.accordion-section[data-accordion-role="nested"]>.accordion-heading {padding-inline:0;}
.accordion-section[data-accordion-role="nested"]>.accordion-body {padding:8px;margin-top:0;}
.accordion-body>.admin-section-help {margin:0;}
.accordion-body>.organiser-controls {display:grid;gap:var(--accordion-body-gap);margin:0;min-width:0;}
.accordion-body>.organiser-controls>.organiser-section {margin:0;padding:0;}
.accordion-body>label>.organiser-field-label {padding-inline-start:var(--accordion-header-inset);}

/* A vertical content stack must shrink to its port, even with an intrinsic-width action. */
.accordion-body,.section-content-stack {grid-template-columns:minmax(0,1fr);}
.section-content-stack {min-width:0;}
.section-content-stack>* {min-width:0;}
.section-content-stack>.action-message {overflow-wrap:anywhere;}

/* Member Access uses the same heading/content nesting as Battery Sharing. */
.member-login-section.settings-section {gap:0;}
.member-other-logins-table .login-last-seen {font-size:var(--text-secondary);line-height:1.35;}
.member-map-marker.is-balloon-headbutt { animation:member-balloon-headbutt .35s ease-out; }
@keyframes member-balloon-headbutt {
  0%,100% { translate:0 0; rotate:0deg; scale:1; }
  18% { translate:calc(var(--reaction-x) * -.22) calc(var(--reaction-y) * -.22); rotate:calc(var(--reaction-angle) * -.35); scale:.96 1.04; }
  46% { translate:var(--reaction-x) var(--reaction-y); rotate:var(--reaction-angle); scale:1.07 .94; }
  75% { translate:calc(var(--reaction-x) * .2) calc(var(--reaction-y) * .2); rotate:calc(var(--reaction-angle) * .15); scale:1; }
}
@media(prefers-reduced-motion:reduce){.member-map-marker.is-balloon-headbutt {animation:none;}}
/* Wrap authored headings inside their row while keeping icons and actions usable. */
.admin-section-heading.section-header {min-width:0;max-width:100%;box-sizing:border-box;}
.admin-section-heading.section-header>.admin-section-title-text {flex:1 1 0;min-width:0;white-space:normal;overflow-wrap:anywhere;}
.crawl-start-copy {min-width:0;}
.crawl-start-copy>span {display:inline-block;max-width:100%;vertical-align:top;}
.crawl-start-copy>.crawl-start-clause {white-space:nowrap;}
.crawl-start-copy>.crawl-custom-stay-clause{white-space:nowrap;}
.organiser-event-visibility>.section-header>.admin-section-title-text {flex-basis:8ch;min-width:min(8ch,100%);}
/* Info owns the heading's right edge; secondary controls yield before it does. */
.section-header:has(>.action-info-button) {flex-wrap:nowrap;}
.section-header>.action-info-button {margin-inline-start:auto;flex-shrink:0;}
/* Compensate shallower headings while preserving each pane's original inset. */
.admin-section-heading.section-header.has-info-alignment {padding-inline-end:calc(var(--section-info-base-inset,0px) + var(--section-info-offset,0px));}
.organiser-section:has(>.section-header>.summary-state-pill):has(>.section-header>.action-info-button) {container:header-controls/inline-size;}
.section-header[data-heading-role="peer"]:has(>.summary-state-pill):has(>.action-info-button) {display:grid;grid-template-columns:var(--section-summary-icon) minmax(0,1fr) auto var(--section-summary-height);column-gap:10px;}
.section-header[data-heading-role="peer"]:has(>.summary-state-pill)>.admin-section-title-text {grid-column:2;grid-row:1;min-width:0;}
.section-header[data-heading-role="peer"]:has(>.summary-state-pill)>.summary-state-pill {grid-column:3;grid-row:1;justify-self:start;margin:0;}
.section-header[data-heading-role="peer"]:has(>.summary-state-pill)>.action-info-button {grid-column:4;grid-row:1;}
@container header-controls (max-width:440px) {
 .section-header[data-heading-role="peer"]:has(>.summary-state-pill):has(>.action-info-button) {grid-template-columns:var(--section-summary-icon) minmax(0,1fr) var(--section-summary-height);}
 .section-header[data-heading-role="peer"]:has(>.summary-state-pill)>.summary-state-pill {grid-column:2;grid-row:2;}
 .section-header[data-heading-role="peer"]:has(>.summary-state-pill)>.action-info-button {grid-column:3;grid-row:1;}
}
.map-member-guidance {pointer-events:auto;}
.map-member-guidance .guidance-link {pointer-events:auto;}
.map-member-guidance.is-fading .guidance-link {pointer-events:none;}

.map-notice-stack>.app-back-notice {position:relative;inset:auto;z-index:3;pointer-events:none;}
.edit-mode-guidance {display:grid;gap:12px;margin-top:var(--section-heading-gap);}
.edit-mode-guidance[hidden] {display:none;}
.edit-mode-guidance>.action-message {min-width:0;margin:0;}
#edit-crawl-guidance:not([hidden])+#crawl-plan-description {margin-top:12px;}
#edit-stops-guidance {margin-block:0 var(--section-gap);}
/* Mood photo management uses the canonical inset content surfaces and button roles. */
.avatar-picker.has-mood-photos {max-width:calc(100vw - 32px);}
.avatar-mood-controls {display:grid;gap:var(--section-gap);min-width:0;}
.avatar-mood-controls>.action-info-button {justify-self:end;}
.avatar-mood-group {display:grid;gap:var(--section-heading-gap);min-width:0;}
.avatar-mood-group h3 {margin:0;overflow-wrap:anywhere;}
.avatar-mood-group label {display:flex;align-items:center;flex-wrap:wrap;gap:8px;}
.avatar-mood-photo-list,.avatar-built-in-pane {display:grid;gap:12px;padding:8px;min-width:0;box-shadow:var(--surface-inset-borderless);border-radius:var(--surface-radius);}
.avatar-mood-photo {display:grid;grid-template-columns:64px minmax(0,1fr);align-items:center;gap:8px;min-width:0;}
.avatar-mood-photo img {width:64px;height:64px;object-fit:cover;border-radius:50%;}
.avatar-mood-photo-actions {display:flex;align-items:center;min-width:0;gap:8px;flex-wrap:wrap;}
.avatar-mood-photo-actions>button,.avatar-mood-photo-list>button {max-width:100%;min-width:0;white-space:normal;}
.avatar-mood-photo-actions>button {flex:1 1 auto;margin:0;justify-content:center;}
.avatar-crop-dialog canvas {width:min(256px,100%);aspect-ratio:1;object-fit:contain;border-radius:50%;justify-self:center;}
.avatar-crop-dialog .dialog-scroll-body>div {display:grid;gap:12px;min-width:0;}
.avatar-crop-dialog label {display:grid;gap:6px;}
.avatar-crop-dialog input[type=range] {width:100%;min-width:0;}
.avatar-picker.has-mood-photos .avatar-picker-actions {display:none;}
.member-mood-face {display:grid;place-items:center;overflow:hidden;border-radius:50%;}
.member-mood-face>img,.member-mood-face>svg {width:100%;height:100%;object-fit:cover;}

/* Sort indicators preserve the narrow stop column and the tools' initial inset. */
.member-roster-sort {position:relative;display:inline-flex;align-items:center;gap:2px;padding:0;border:0;background:transparent;color:inherit;font:inherit;font-weight:inherit;box-shadow:none;cursor:pointer;min-width:0;}
.member-sort-title {display:inline-flex;align-items:center;gap:4px;}
.member-roster-sort :is(svg,i) {width:20px;height:20px;flex:none;}
.member-roster-location-heading .member-sort-indicator {position:absolute;right:calc(50% + var(--control-icon-size)/2 + 2px);top:50%;transform:translateY(-50%);}




.member-roster th.member-actions-heading {padding-inline:0;}

/* Header glyphs share the sort size; the stop glyph alone owns the column centre. */
.member-roster th .member-roster-sort :is(svg,i) {width:var(--control-icon-size);height:var(--control-icon-size);flex:0 0 var(--control-icon-size);display:block;margin:0;vertical-align:initial;}
.member-roster th.member-roster-location-heading .member-roster-sort {display:flex;width:100%;justify-content:center;}

/* Center avatar choices within the dialog's grid content port. */
.avatar-picker .avatar-picker-icons {justify-self:center;}
.avatar-picker .avatar-picker-icons>button>:is(svg,i) {width:42px!important;height:42px!important;flex:none;max-width:100%;}
.avatar-picker .avatar-picker-icons>button {--control-icon-size:42px;padding:5px;}
.avatar-mood-photo-face {display:grid;justify-items:center;gap:4px;flex:none;}
.avatar-mood-photo-caption {font-size:var(--text-secondary);font-weight:700;}
.avatar-mood-group>.section-header {min-height:0;padding:0;}
/* Built-in map symbols fill the enlarged member circle. */
.member-map-marker>.member-map-avatar:is(svg,i) {width:100%!important;height:100%!important;}

.avatar-picker .avatar-mood-thumbnail {display:block;width:64px;height:64px;min-height:0;min-width:0;padding:0;border:0;border-radius:50%;overflow:hidden;line-height:0;}
.avatar-mood-thumbnail img {display:block;}
.avatar-mood-selfie {position:fixed;inset:auto;margin:0;padding:0;translate:none;box-sizing:border-box;z-index:5;}

.avatar-identity-selected {align-self:center;}

/* Approved organiser/avatar follow-up: shared surfaces and accessible overflow. */
.personal-invite-sort-heading {display:flex;margin-block:8px;}
.personal-invite-sort-heading .member-roster-sort {display:flex;align-items:center;gap:4px;}
.personal-invite-sort-heading svg {width:20px;height:20px;}
.member-invite-row-actions.section-content {display:flex;flex-wrap:wrap;gap:8px;padding:8px;min-width:0;}
.member-invite-row-actions>.member-invite-row-result {flex:1 0 100%;min-width:0;}

.crawl-clause-punctuation {white-space:pre;}
.overflow-guidance {display:flex;align-items:center;gap:8px;min-width:0;margin-bottom:12px;}
.overflow-guidance[hidden] {display:none;}
.overflow-guidance>.action-message {flex:1;min-width:0;margin:0;}
.overflow-guidance>button {flex:none;width:32px;height:32px;min-height:32px;padding:5px;}
.message-dismiss>span,.avatar-page-chevron>span {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
.avatar-picker .avatar-picker-icons {display:block;width:100%;min-width:0;}
.avatar-icon-carousel {display:flex;gap:4px;align-items:center;min-width:0;}
.avatar-icon-pages {display:flex;flex:1;min-width:0;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;}
.avatar-icon-page {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;flex:0 0 100%;align-content:start;scroll-snap-align:start;scroll-snap-stop:always;box-sizing:border-box;padding:3px;}
.avatar-picker .avatar-icon-page>button {width:100%;border-radius:50%;min-width:0;aspect-ratio:1;min-height:0;padding:5px;display:grid;place-items:center;}
.avatar-picker .avatar-icon-page>button>:is(svg,i) {width:min(42px,100%)!important;height:auto!important;aspect-ratio:1;max-height:100%;}
.avatar-picker .avatar-page-chevron {flex:0 0 28px;width:28px;min-width:0;height:48px;padding:3px;display:grid;place-items:center;}
.avatar-page-label {text-align:center;color:var(--muted);font-size:var(--text-secondary);margin-top:8px;}
.batch-invite-controls {display:grid;gap:12px;margin-block:12px;}
.batch-invite-controls[hidden] {display:none;}
.member-invite-actions>button[hidden],.personal-invite-controls .member-invite-result[hidden] {display:none;}
.batch-invite-controls>.action-message {margin:0;}
.batch-invite-choice,.batch-invite-select-all {display:flex;align-items:center;gap:10px;min-width:0;}
.batch-invite-choice {margin:0;}
.batch-invite-choice .member-invite-identity {min-width:0;overflow-wrap:anywhere;}
.batch-invite-choice input,.batch-invite-select-all input {appearance:auto;accent-color:var(--ink);width:20px;height:20px;min-width:20px;margin:0;flex:none;}
.batch-invite-choice input[hidden] {display:none;}
.batch-invite-count {align-self:center;color:var(--muted);font-size:var(--text-secondary);}
.member-invite-row.is-batch-selecting {grid-template-columns:minmax(0,1fr);}
.member-invite-row.is-batch-selecting>.member-invite-row-actions {display:none;}
.avatar-picker .is-icon-fallback .avatar-icon-page>button {aspect-ratio:auto;min-height:54px;overflow-wrap:anywhere;}
@media(hover:none) and (pointer:coarse){.avatar-picker .avatar-page-chevron {display:none;}}

.avatar-crop-dialog canvas {touch-action:pan-y;cursor:pointer;user-select:none;}
.avatar-crop-dialog canvas.is-unlocked {touch-action:none;cursor:grab;}
.avatar-crop-dialog canvas.is-panning {cursor:grabbing;}

/* Crop tool uses the visible screen; its title/footer remain outside the scrollport. */
.avatar-crop-dialog {box-sizing:border-box;height:calc(var(--dialog-viewport-height,100dvh) - 16px);max-height:calc(var(--dialog-viewport-height,100dvh) - 16px);}
.avatar-crop-dialog.has-reduced-viewport {position:fixed;top:calc(var(--dialog-viewport-top) + var(--dialog-viewport-height) / 2);bottom:auto;margin:0 auto;transform:translateY(-50%);}
.avatar-crop-dialog>h2 {flex:none;min-height:0;margin:0;}
.avatar-crop-dialog .avatar-crop-preview {position:relative;display:block;width:min(256px,100%);justify-self:center;}
.avatar-crop-preview canvas {display:block;width:100%;}
.avatar-crop-dialog .avatar-crop-lock {position:absolute;top:0;right:0;width:40px;height:40px;min-width:40px;margin:0;padding:0;justify-content:center;border-radius:50%;}
.avatar-crop-field-caption {display:flex;justify-content:space-between;gap:8px;}
.avatar-crop-field-caption output {font-variant-numeric:tabular-nums;font-weight:600;}

/* Consistent glyph size across round masthead controls. */
body .masthead .theme-toggle {--control-icon-size:34px;}

.avatar-mood-preview-section {display:grid;gap:var(--section-heading-gap);min-width:0;}
.avatar-mood-preview-section[hidden] {display:none;}
.avatar-mood-preview-section>.section-header {margin:0;}
.avatar-mood-preview-section>.action-message {margin:0;}
.avatar-mood-preview-grid {display:grid;grid-template-columns:repeat(auto-fit,minmax(min(120px,100%),1fr));gap:var(--section-heading-gap);min-width:0;}
.avatar-mood-grid-card {padding:8px;min-width:0;border-radius:var(--surface-radius);box-shadow:var(--surface-inset-borderless);}
body .avatar-mood-grid-card a.guidance-link {display:grid;gap:8px;padding:4px;border-radius:6px;background:transparent;color:var(--ink);font:inherit;text-decoration:underline;text-underline-offset:.15em;}
.avatar-mood-grid-faces {display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-width:0;}
.avatar-mood-grid-face {display:grid;justify-items:center;gap:2px;}
.avatar-mood-grid-face img {width:48px;height:48px;object-fit:cover;border-radius:50%;}
.avatar-mood-grid-faces>:is(svg,i) {width:48px;height:48px;}
.avatar-mood-grid-faces small {font-size:var(--text-compact);text-decoration:none;}

.avatar-mood-grid-card[data-preview-group="drunk"] {grid-column:1 / -1;}

.avatar-photo-source-preview {display:block;justify-self:center;width:min(145.6px,100%);height:auto;aspect-ratio:1;object-fit:cover;border-radius:50%;}
.avatar-photo-source-actions {display:grid;grid-template-columns:minmax(0,1fr);gap:8px;}
.avatar-photo-source-actions>button {justify-content:center;margin:0;}

.avatar-picker>h2 {flex:none;min-height:0;margin:0;}
.avatar-picker .avatar-built-in-heading {min-height:0;padding:0;margin:0;}
.avatar-mood-group .dialog-field {display:grid;gap:6px;min-width:0;}
.avatar-mood-photo-actions>button>span {min-width:0;overflow-wrap:anywhere;}

/* Native sticky feedback floats within the list, then settles below its table. */
.member-roster-feedback.black-glass-feedback {position:sticky;bottom:8px;inset-inline:auto;width:100%;max-width:100%;margin:0;z-index:5;pointer-events:auto;}
.member-roster-feedback[hidden] {display:none;}
.member-roster-feedback>.action-message {width:100%;}

.avatar-picker :is(h2,h3).section-header {padding-block:4px;}

/* Canonical refinements: owner19October. Labels capitalize at display time;
   member names and free-form message/help copy retain their authored casing. */
body button {text-transform:capitalize;}
body :is(.member-roster-identity,.member-rename,.member-roster-avatar-button,.avatar-mood-thumbnail,.action-message button.message-copy-icon) {text-transform:none;}
body #member-account-logout:not(:empty) {padding:12px;border-radius:var(--surface-radius);box-shadow:var(--surface-inset-borderless);}
.avatar-built-in-grid-pane {flex:1;min-width:0;padding:8px;border-radius:var(--surface-radius);box-shadow:var(--surface-inset-borderless);}
.avatar-icon-pages {width:100%;}
.personal-invite-list-pane {padding:8px;border-radius:var(--surface-radius);box-shadow:var(--surface-inset-borderless);}
.personal-invite-list-pane .member-invite-row {padding:2px;}
.personal-invite-sort-heading {margin:0 0 8px;}
/* Icon and label remain one centered group, including when the label wraps. */
body button.edit-stops {display:inline-flex;align-items:center;justify-content:center;gap:6px;}
body button.edit-stops>span {flex:0 1 auto;min-width:0;white-space:normal;}
body button.edit-stops>:is(svg,i) {flex:none;}
body .action-message>.message-dismiss {flex:none;width:32px;height:32px;min-width:32px;min-height:32px;padding:5px;margin:0;align-self:center;border-radius:6px;}
body .action-message>.message-dismiss>:is(svg,i) {width:22px;height:22px;}
@media(hover:hover) {
 body.is-night .avatar-picker :is(.avatar-icon-page>button,.avatar-page-chevron):not(:disabled):hover {color:#fff;}
}

/* Match the tools viewport's initial button edge, excluding glyph-only insets. */
.member-roster .member-actions-heading>span {display:block;margin-inline-start:16px;}
@media(hover:none) and (pointer:coarse) {.member-roster .member-actions-heading>span {margin-inline-start:0;}}
@media(any-pointer:fine) {.member-roster .member-actions-heading>span {margin-inline-start:16px;}}

/* All ordinary top-of-map messages share one flow and shared message typography. */
.map-notice-stack>:is(.action-message,.map-status,.map-member-guidance) {font-size:var(--text-body);line-height:1.45;}

.map-notice-stack .press-hold-help {font-size:var(--text-body);line-height:1.45;}

/* Personal Invites has one compact list surface and explicit batch states. */
body :is(button,a.edit-stops) {text-transform:capitalize;}
body button[hidden],.personal-invite-controls [hidden] {display:none!important;}
body:is(.is-night,:not(.is-night)) .avatar-picker :is(.avatar-icon-page>button,.avatar-page-chevron):not([aria-pressed="true"]) {background:var(--cream);color:var(--ink);}
@media(hover:hover) and (pointer:fine){body.is-night .avatar-picker :is(.avatar-icon-page>button,.avatar-page-chevron):not(:disabled):hover {color:#fff;}}
.personal-invite-sort-heading {display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0;min-width:0;}
.personal-invite-sort-heading>button.edit-stops {width:auto;margin:0;}
.personal-invite-sort-heading>.member-roster-sort {flex:none;}
.personal-invite-sort-heading>button:not(.member-roster-sort) {min-width:0;max-width:calc(100% - 80px);}
.personal-invite-sort-heading .is-sort-active {color:var(--help-highlight);}
.personal-invite-list-pane {display:grid;gap:8px;padding:8px;}
.personal-invite-controls .member-invite-list {display:grid;gap:0;margin:0;}
.personal-invite-list-pane .member-invite-row {display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:4px 8px;padding:2px;}
.personal-invite-list-pane .member-invite-row-actions.section-content {padding:2px;gap:0;margin:0;flex-wrap:nowrap;width:auto;display:flex;}
.personal-invite-list-pane .member-invite-row-actions>button {white-space:nowrap;min-height:44px;}
.personal-invite-list-pane .member-invite-row-actions>button>span {white-space:nowrap;}
.personal-invite-list-pane .member-invite-identity {display:flex;align-items:center;gap:6px;min-width:0;}
.personal-invite-list-pane .member-invite-identity>:is(svg,i) {flex:none;}
.personal-invite-list-pane .member-invite-identity>strong {min-width:0;overflow-wrap:anywhere;}
.personal-invite-list-pane .member-invite-row-result {grid-column:1/-1;padding:8px;margin:0;}
.personal-invite-list-pane .member-invite-row-result:empty {display:none;}
.personal-invite-list-pane .member-invite-row.is-batch-selecting {grid-template-columns:minmax(0,1fr);}
.personal-invite-list-pane .is-batch-selecting>:is(.member-invite-row-actions,.member-invite-row-result) {display:none;}
.personal-invite-list-pane .member-invite-row-actions>button.is-icon-only {width:44px;min-width:44px;height:44px;padding:8px;justify-content:center;}
.member-invite-row-actions>button.is-icon-only>span {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
.batch-invite-controls {display:grid;gap:8px;margin:0;}
.batch-invite-selection {display:flex;align-items:center;justify-content:space-between;gap:8px;}
.batch-invite-footer {display:grid;gap:8px;}
.batch-invite-footer[hidden] {display:none;}
.batch-invite-footer .member-invite-actions {display:flex;}
.batch-invite-footer .member-invite-actions>button {flex:1;}
.batch-invite-footer>.action-message {margin:0;}

/* Update actions remain readable and interactive inside the passive notice stack. */
.map-notice-stack>.version-update-notice {position:relative;z-index:3;pointer-events:auto;flex-wrap:wrap;text-align:left;}
.version-update-notice>span {flex:1 1 170px;text-wrap:pretty;}
.version-update-notice>button {flex:0 0 auto;min-width:max-content;white-space:nowrap;overflow-wrap:normal;margin-left:auto;}
/* Built-in choices use the same circle footprint as map avatars. */
.avatar-picker .avatar-icon-page {justify-items:center;}
.avatar-picker .avatar-icon-page>button {width:min(100%,49.4px);height:auto;max-width:49.4px;max-height:49.4px;}

/* Avatar chooser consumes the rating dialog's fixed tabs and inset scroll port. */
.avatar-picker .avatar-tabs-shell {padding:0;min-width:0;width:auto;align-self:stretch;overflow:hidden;}
.avatar-picker .avatar-tabs {margin:0;gap:0;min-width:0;max-width:100%;touch-action:pan-x;}
.avatar-tabs-shell .rating-tab-scroll>span {display:none;}
.avatar-picker .avatar-tabs-shell .rating-tab-scroll {display:grid!important;position:absolute;z-index:3;top:50%;transform:translateY(-50%);opacity:0;pointer-events:none;}
.avatar-tabs-shell .rating-tab-scroll--start {left:0;}
.avatar-tabs-shell .rating-tab-scroll--end {right:0;}
.avatar-picker .avatar-tabs-shell.has-tab-overflow-start .rating-tab-scroll--start,.avatar-picker .avatar-tabs-shell.has-tab-overflow-end .rating-tab-scroll--end {opacity:1;pointer-events:auto;}
.avatar-picker .avatar-tabs>button {display:inline-flex;align-items:center;justify-content:center;gap:8px;flex:1 0 auto;white-space:nowrap;}
.avatar-tabs>button>:is(svg,i) {width:24px;height:24px;flex:0 0 24px;}
.avatar-picker .rating-dialog-heading-row h2 {font-size:1.25rem;line-height:1.25;padding:0;margin:0;}
.avatar-tab-content {padding:0;box-shadow:none;min-height:0;}
.avatar-tab-content>[hidden] {display:none!important;}
.avatar-tab-content .avatar-built-in-pane {box-shadow:none;padding:0;}
.avatar-tab-content .avatar-built-in-heading {display:none;}
.avatar-icon-carousel {display:grid;grid-template-columns:28px minmax(0,1fr) 28px;gap:8px;align-items:center;}
.avatar-picker .avatar-page-chevron {margin:0;width:28px;padding:3px;}
.avatar-picker .avatar-page-chevron>:is(svg,i) {width:20px;height:20px;}
@media(hover:none) and (pointer:coarse){.avatar-icon-carousel {grid-template-columns:minmax(0,1fr);}}
body:is(.is-night,:not(.is-night)) .avatar-picker .avatar-icon-page>button[aria-pressed="true"] {background:var(--cream);outline:2px solid var(--help-highlight);outline-offset:2px;border-color:var(--help-highlight);clip-path:none!important;}
.avatar-picker .avatar-icon-page {padding:6px;}
.avatar-picker .avatar-icon-page>button[aria-pressed="true"]::after {background:none;opacity:0;}
.avatar-settings-row {display:grid;grid-template-columns:clamp(76px,25vw,116px) minmax(0,1fr);align-items:center;}
.avatar-settings-row>.avatar-preview {width:100%;min-width:0;}
.avatar-settings-actions {display:grid;grid-template-columns:minmax(0,1fr);gap:8px;min-width:0;}
.avatar-settings-actions>:is(.action-message,button) {min-width:0;max-width:100%;overflow-wrap:anywhere;}
.avatar-settings-actions>.member-avatar-settings {margin:0;width:100%;justify-content:center;}
.avatar-mood-preview-section {padding-block-start:var(--section-heading-gap,14px);}

/* Shared avatar colour listbox: fixed label, natural-width value, colour dots. */
.avatar-colour-chooser {display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0;margin-block:8px;}
.avatar-colour-label {display:inline-flex;align-items:center;gap:8px;white-space:nowrap;}
.avatar-colour-label>:is(svg,i) {width:24px;height:24px;flex-shrink:0;}
.avatar-colour-control {position:relative;min-width:0;}
.avatar-colour-value {display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:6px 10px;}
.avatar-colour-value>:is(svg,i) {width:18px;height:18px;}
.avatar-colour-dot {display:inline-block;width:16px;height:16px;border:1px solid #17364a;border-radius:50%;flex:0 0 16px;}
.avatar-colour-options {position:absolute;inset:100% auto auto 0;z-index:5;display:grid;gap:4px;padding:8px;min-width:150px;max-height:min(320px,45dvh);overflow:auto;background:var(--cream);border:1px solid var(--line);border-radius:8px;}
.avatar-colour-options[hidden] {display:none;}
.avatar-colour-options>button {display:flex;align-items:center;gap:8px;min-height:44px;padding:8px;text-align:start;}
.avatar-colour-options>button[aria-selected=true] {outline:2px solid var(--help-highlight);outline-offset:-2px;}
.avatar-colour-status {flex-basis:100%;}

/* White keeps canonical Night hover brightening; named/Natural colours retain their hues. */
body.is-night button:hover {--avatar-white-ink:#fff;}

/* Owner-selected V2 lockup: 80px raised compass and flat 160×55px backdrop, overlapping5px. */
body:is(.is-night,:not(.is-night)) .masthead>button.brand {--pq-brand-ink:#112f46;--pq-brand-disc:#112f46;--pq-brand-gold:#f4b942;display:flex;align-items:center;justify-content:center;flex:0 1 235px;width:235px;max-width:calc(100% - 128px);min-width:0;min-height:44px;aspect-ratio:235/80;padding:0;gap:0;border:0;border-radius:0;background:transparent;box-shadow:none!important;letter-spacing:normal;text-transform:none;}
body.is-night .masthead>button.brand {--pq-brand-ink:#fffdf9;--pq-brand-disc:#162c3b;}
.brand .brand-compass {position:relative;z-index:1;display:block;box-sizing:border-box;flex:0 0 34.042553%;width:34.042553%;aspect-ratio:1;padding:2.12766%;border-radius:50%;background:var(--cream);box-shadow:var(--surface-raised-soft);}
.brand .brand-wordmark {position:relative;isolation:isolate;display:grid;place-items:center;flex:0 0 68.085106%;width:68.085106%;box-sizing:border-box;aspect-ratio:160/55;margin-inline-start:-2.12766%;padding-inline:3.404255%;border-radius:9.375% / 27.272727%;background:transparent;box-shadow:none;}
.brand .brand-wordmark::before {content:"";position:absolute;z-index:-1;inset:0 0 0 -18.75%;border-radius:7.894737% / 27.272727%;background:var(--cream);}
.brand .brand-compass>svg,.brand .brand-wordmark>svg {display:block;width:100%;height:100%;}
.brand:is(:hover,.is-button-pressed) .brand-compass {box-shadow:var(--button-surface-hover);}
.brand:focus-visible {outline:3px solid var(--pq-brand-gold);outline-offset:4px;border-radius:40px;}

/* Attached tabs meet their content surface; retain the heading/footer gaps. */
.avatar-picker.dialog-content-stack>.avatar-tabs-shell+.dialog-scroll-body {margin-top:calc(0px - var(--dialog-content-gap));}

/* Drawer tab geometry is canonical, including inactive first/last dialog tabs. */
.drawer-tabs>button,.rating-dialog .rating-tabs>button,.rating-dialog .rating-tabs>button:is(:first-child,:last-child) {border-radius:10px 10px 0 0;--button-shadow-rounding:10px 10px 0 0;}
/* Separate each selfie and its controls with Member Access's inset section line. */
.avatar-mood-photo+.avatar-mood-photo {border-top:1px solid var(--line);padding-top:16px;}

/* Tab labels size intrinsically; shared action-button width/margins do not apply. */
.rating-dialog .rating-tabs>button {width:auto;margin-inline:0;}


.member-reference-layout>.member-reference-group {flex:1;min-width:0;}
.member-stats-dialog .member-stats-name {grid-template-columns:49.4px minmax(0,1fr) auto;}
.member-stats-name>.member-roster-avatar-button {width:49.4px;height:49.4px;}
.member-stats-name>.member-roster-avatar-button>svg {width:34px;height:34px;}

/* Measurement symbols preserve their source casing inside Title Case controls. */
body :is(button,a.edit-stops) .measurement,body button.measurement {text-transform:none;}
body:is(.is-night,:not(.is-night)) .crawl-plan-list>li>.photo-panel {margin-inline:4px;}

.avatar-throw-item{position:absolute;z-index:3;left:50%;top:50%;width:48px;height:48px;margin:-24px;pointer-events:none;}
.avatar-throw-item svg{width:100%;height:100%;filter:drop-shadow(0 2px 2px #0005);}
.avatar-throw-status{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);}

/* Owner-selected Movement + Symbols for the local avatar toy. */
.avatar-throw-effect{position:absolute;top:5px;right:5px;z-index:4;pointer-events:none}
.avatar-throw-effect:empty{display:none}.avatar-throw-effect svg{width:26px;height:26px;filter:drop-shadow(0 1px 2px #14283a)}
.avatar-preview-marker.is-avatar-flinch{animation:avatar-game-flinch .65s ease-out}
.avatar-preview-marker.is-avatar-catch{animation:avatar-game-catch .7s ease-out}
.avatar-preview-marker.is-avatar-eat{animation:avatar-game-eat .8s ease-in-out}
.avatar-preview-marker.is-avatar-toast{animation:avatar-game-toast .85s ease-in-out}
.avatar-preview-marker.is-avatar-return{animation:avatar-game-return .65s ease-in-out}
@keyframes avatar-game-flinch{20%{transform:translate(8px,6px) rotate(12deg) scale(.92)}50%{transform:translate(-4px,0) rotate(-6deg)}100%{transform:none}}
@keyframes avatar-game-catch{30%{transform:translateY(-6px) scale(1.08)}65%{transform:translateY(3px) scale(.98)}}
@keyframes avatar-game-eat{20%,60%{transform:scale(1.08,.94) rotate(-4deg)}40%,80%{transform:scale(.96,1.05) rotate(4deg)}}
@keyframes avatar-game-toast{25%{transform:translateY(-5px) rotate(-14deg)}70%{transform:rotate(9deg)}}
@keyframes avatar-game-return{35%{transform:translate(8px,3px) rotate(18deg)}65%{transform:translate(-8px,-4px) rotate(-15deg)}}
@media(prefers-reduced-motion:reduce){.avatar-preview-marker:is(.is-avatar-flinch,.is-avatar-catch,.is-avatar-eat,.is-avatar-toast,.is-avatar-return){animation:none}}

/* Account help/data are independent raised sections; their contents use shared inset ports. */
.account-standalone-pane{margin:0}
.account-standalone-pane+.account-standalone-pane{margin-top:var(--section-divider-before)}
.account-standalone-pane>.organiser-section-body{display:grid;gap:var(--section-heading-gap)}
.account-standalone-pane>.organiser-section-body>.action-message{margin:0}
[data-help-tip="avatar-throw"]{box-sizing:border-box;width:100%;margin:0}
.map-notice-stack>[data-help-tip="help-welcome"]{position:relative;z-index:3;pointer-events:auto;text-align:left;order:4}

/* A group arranges panes; it does not add another embossed surface. */
.member-settings.section-group{padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}
body .action-message>.message-dismiss{margin-inline-start:auto}
.message-type-explanation{min-width:0;display:grid;gap:var(--section-heading-gap)}
.message-type-explanation>p{margin:0}
.message-type-examples{display:grid;gap:8px;padding:8px;border-radius:var(--surface-radius);background:var(--cream);box-shadow:var(--surface-inset-borderless);min-width:0}
.message-type-examples>.action-message{margin:0;min-width:0;text-wrap:initial}

.action-info-subject:has(>.message-type-explanation){align-items:start}
.action-info-subject:has(>.message-type-explanation)>svg{margin-top:2px}
.message-type-examples .action-message svg{color:inherit}

/* The visible Crawl Plan grip owns its help target; header dragging remains shared. */
.drawer-grab-handle {position:absolute;z-index:1;top:0;left:50%;translate:-50% 0;width:60px;height:24px;padding:0;border:0;border-radius:0;background:transparent;color:inherit;box-shadow:none;cursor:grab;touch-action:none;}

/* Optional tour uses canonical dialog surfaces while allowing Show Me navigation. */
.app-tour-launch{display:flex;align-items:center;gap:12px}.app-tour-launch>button:first-child{flex:1;min-width:0}.app-tour-launch>.action-info-button{flex:0 0 38px;margin-left:auto}
.app-features-tour{position:fixed;inset:auto 12px 12px auto;margin:0;transform:none;translate:none;z-index:30;width:min(360px,calc(100vw - 24px));max-height:calc(100dvh - 24px)}
.app-features-tour .dialog-scroll-body{gap:10px}.app-features-tour h3{margin:0}.app-tour-progress{margin:0;color:var(--muted);font-weight:750}
.map-notice-stack>[data-help-tip="help-welcome-info"]{position:relative;z-index:3;pointer-events:auto;order:4;text-align:left}
.map-notice-stack>[data-help-tip="help-welcome"]{order:5}

.app-features-tour .confirmation-dialog-actions{display:grid;gap:8px}.app-tour-controls{width:100%}

.app-features-tour .app-tour-controls>button{flex:1 1 0;min-width:0}

/* Tour surround reuses the canonical 8px black glass, without a modal scrim. */
.app-tour-glass{pointer-events:auto;width:calc(100vw - 24px);max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);padding:8px;border-radius:15px;transition:opacity 1s ease;}
.app-tour-glass[hidden]{display:none}.app-tour-glass.is-tour-revealing{opacity:0;pointer-events:none;transition-duration:.2s}
.app-tour-glass>.app-features-tour{position:static;inset:auto;margin:0;transform:none;translate:none;width:100%;max-width:none;max-height:calc(100dvh - 40px);box-sizing:border-box}
.app-tour-heading{display:flex;align-items:center;gap:12px}.app-tour-heading>span{flex:1;min-width:0}
button.app-tour-grip{display:grid;place-items:center;flex:0 0 44px;width:44px;height:36px;padding:4px;border:0;background:transparent;color:inherit;box-shadow:none;touch-action:none;cursor:grab}
button.app-tour-grip>span{display:none}.app-tour-grip:is(:active,.is-dragging){cursor:grabbing}.app-tour-grip svg{width:28px;height:28px}
.app-tour-glass .app-tour-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%}
.app-tour-glass .app-tour-controls>button{width:100%;min-width:0;margin:0}
@media(max-width:600px){.app-tour-glass .app-tour-controls{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(prefers-reduced-motion:reduce){.app-tour-glass{transition:none}}

.brand-compass.is-guidance-flash::after{inset:4px;border-radius:50%}
.app-tour-demo{--panel-snap-duration:.7s}
.app-tour-demo :is(.drawer-grab-handle,.card-grab-handle)::after{content:"";position:absolute;inset:3px 10px;border:3px solid var(--attention-colour,var(--red));border-radius:12px;pointer-events:none}

.crawl-plan-peek.is-map-selection-highlight{border-radius:20px 20px 0 0}

/* Stop Wi-Fi uses canonical dialog surfaces and wraps on narrow phones. */
.stop-wifi-dialog { width:min(100% - 24px,520px); }
.stop-wifi-fields { display:grid; gap:12px; min-width:0; padding:12px; }
.stop-wifi-fields label { display:grid; gap:6px; min-width:0; }
.stop-wifi-fields input,.stop-wifi-fields select,.stop-wifi-fields textarea { width:100%; min-width:0; max-width:100%; box-sizing:border-box; min-height:44px; font:inherit; color:var(--ink); background:var(--paper); border:1px solid var(--line); border-radius:8px; padding:10px; }
.stop-wifi-fields p { overflow-wrap:anywhere; margin:0; }
.stop-wifi-details { display:grid; gap:12px; margin:0; min-width:0; }
.stop-wifi-details>div { min-width:0; }
.stop-wifi-details dt { margin:0; }
.stop-wifi-details dd { margin:4px 0 0 24px; overflow-wrap:anywhere; }
.stop-wifi-note { white-space:pre-wrap; }
.stop-wifi-contributor { font-weight:600; }
/* Respect widths measured by the shared responsive action-row binder. */
dialog .dialog-actions-wrap.canonical-action-row>button { flex-basis:auto; }


/* Shared responsive actions: a wrapped label has its own text column. Single
   lines retain the compact centered icon/text group. The existing fitter owns
   the class; no additional observers or text probes are required. */
body button.action-label-wrapped {display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;}
body button.action-label-wrapped>:is(svg,i,.compound-icon) {grid-column:1;grid-row:1;justify-self:start;}
body button.action-label-wrapped>span {grid-column:2;grid-row:1;justify-self:center;text-align:center;}

/* Member-only cosmetic Smite: independent of location sharing and game scores.
   Ordinary page stacking keeps the non-interactive cue behind modal dialogs. */
.member-smite-cue[hidden]{display:none;}
.member-smite-strike{animation:smite-cue 650ms ease-out;}
.member-smite-strike .press-hold-help>p{margin:0;}
.member-smite-strike .press-hold-help>p+p{margin-top:8px;}
@keyframes smite-cue{0%{transform:translateY(-8px)}45%{transform:translateY(2px)}100%{transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.member-smite-strike{animation:none;}}

/* Ordinary page stacking keeps Smite behind native modal dialogs. */
:root{--smite-colour:#f4b942;--smite-text:#0c1b2a;}
.member-smite-cue{z-index:12;--help-highlight:var(--smite-colour);--help-text:var(--smite-text);}
.member-smite-action[data-smite-active="true"] :is(svg,i){fill:var(--smite-colour);}

/* Reuse the member-overall star row where the actual stop panel has room.
   The em allowance grows with text size; narrow/older browsers keep decimals. */
.member-rating-stop{container-type:inline-size;container-name:member-rating-stop;}
.member-rating-scores .rating-member-star-row{display:none;}
@container member-rating-stop (min-width:calc(138px + 7em)){
 .member-rating-scores .rating-member-star-row{display:flex;}
 .member-rating-scores .member-rating-decimal{display:none;}
}

.member-smite-cue{opacity:1;transition:opacity 1s ease;}
.member-smite-cue.is-fading{opacity:0;}
@media(prefers-reduced-motion:reduce){.member-smite-cue{transition:none;}}

/* Stop access must not depend on presence refresh / DOM insertion order. */
.maplibregl-marker.member-map-anchor {z-index:0;}
.maplibregl-marker.map-marker {z-index:1;}
