/* /Components/Pages/AccessDenied.razor.rz.scp.css */
.access-denied[b-1eajc70lv4] {
    max-width: 560px;
    margin: 48px auto;
    padding: 0 16px;
}

.access-denied h1[b-1eajc70lv4] {
    font-size: 1.4rem;
    color: var(--text-heading);
    margin: 0 0 12px;
}

.access-denied p[b-1eajc70lv4] {
    margin: 0 0 20px;
}

.access-denied .btn-submit[b-1eajc70lv4] {
    display: inline-block;
    padding: 10px 18px;
    text-decoration: none;
}
/* /Components/Pages/Activity.razor.rz.scp.css */
/* Contribution-graph day cells are real <button>s so they are keyboard- and screen-reader-reachable.
   Their size, radius, cursor and intensity colour come from the global .grid-cell rules; this only
   strips the user-agent button chrome so a button cell stays the same 11px square as the old <div>. */
button.grid-cell[b-gfz9w1jl4u] {
    padding: 0;
    border: none;
    font: inherit;
    appearance: none;
    -webkit-appearance: none;
}
/* /Components/Pages/Walls/GpuRunnerRow.razor.rz.scp.css */
.gpu-runner-row[b-1xgpion7xs] { padding: 0.6rem 0; border-bottom: 1px solid var(--border-color, #333); display: flex; flex-direction: column; gap: 0.25rem; }
.gpu-runner-row.revoked[b-1xgpion7xs] { opacity: 0.55; }
.gpu-runner-title[b-1xgpion7xs] { display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem; }
.gpu-runner-dot[b-1xgpion7xs] { width: 0.6rem; height: 0.6rem; border-radius: 50%; display: inline-block; background: #777; }
.gpu-runner-dot.online[b-1xgpion7xs] { background: #3fb950; box-shadow: 0 0 0 3px rgba(63, 185, 80, 0.2); }
.gpu-runner-job[b-1xgpion7xs] { font-size: 0.85rem; }
.gpu-runner-controls[b-1xgpion7xs] { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; margin-top: 0.25rem; }
.gpu-runner-toggle[b-1xgpion7xs] { display: inline-flex; gap: 0.35rem; align-items: center; font-size: 0.85rem; }
.gpu-runner-walls[b-1xgpion7xs] { display: flex; flex-direction: column; gap: 0.2rem; padding-left: 1rem; }
/* /Components/Pages/Walls/Wall3D.razor.rz.scp.css */
/* The 3D stage takes the whole content area under the top bar, above the tab bar. The overlay
   inside the stage is styled by wwwroot/css/wall3d.css, which wall3d.js injects. */
.wall3d-page[b-fb49ybkqyq] {
    display: flex;
    flex-direction: column;
    height: calc(100dvh - var(--topbar-h, 56px) - var(--bottomnav-h, 0px));
    min-height: 360px;
}

.wall3d-head[b-fb49ybkqyq] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 12px;
    padding: 8px 12px;
}

.wall3d-boulder[b-fb49ybkqyq] {
    font-family: var(--font-display);
    font-weight: 700;
    color: var(--text-heading);
}

.wall3d-legend[b-fb49ybkqyq] { display: inline-flex; flex-wrap: wrap; gap: 4px 10px; font-size: 0.8rem; color: var(--text-secondary); }
.wall3d-legend span[b-fb49ybkqyq] { display: inline-flex; align-items: center; gap: 4px; }
.wall3d-legend i[b-fb49ybkqyq] { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }

.wall3d-note[b-fb49ybkqyq] { font-size: 0.8rem; color: var(--text-secondary); }

/* Phone landscape: the page is shorter than the 360px floor, which pushed the stage (and the preset
   buttons pinned to its bottom) under the tab bar. Let the stage shrink to what is left instead. */
@media (max-height: 520px) {
    .wall3d-page[b-fb49ybkqyq] { min-height: 0; }
}

/* Phone: the head line (back link, hold counts) took two lines and ~100px above the stage. */
@media (max-width: 560px) {
    .wall3d-head[b-fb49ybkqyq] { gap: 0 10px; padding: 2px 12px; }
    .wall3d-head .back-link[b-fb49ybkqyq] { display: inline-flex; align-items: center; min-height: 40px; }
    .wall3d-note[b-fb49ybkqyq] { font-size: 0.75rem; }
}

.wall3d-stage[b-fb49ybkqyq] {
    flex: 1;
    min-height: 0;
    border-top: 1px solid var(--border);
    display: flex;
    flex-direction: column;
}

.wall3d-message[b-fb49ybkqyq] { padding: 16px; }
.wall3d-message .empty-state p[b-fb49ybkqyq] { margin: 0 0 12px; }

.wall3d-links[b-fb49ybkqyq] { padding: 0 12px; }
.wall3d-links:empty[b-fb49ybkqyq] { display: none; }
.wall3d-links .wall3d-note[b-fb49ybkqyq] { margin: 4px 0 0; }
/* /Components/Pages/Walls/WallDetail.razor.rz.scp.css */
/* The clickable stat tiles (Boulders / Members / Invite) are real <button>s for keyboard and AT
   access. Their box, hover and typography come from the global .stat / .stat.clickable rules; these
   only strip the user-agent button chrome so a button tile is pixel-identical to the old <div>. */
button.stat[b-glp1ualwoy] {
    margin: 0;
    font: inherit;
    color: inherit;
    text-align: center;
    appearance: none;
    -webkit-appearance: none;
}

/* Delete Wall lives in its own bordered block at the very bottom of Wall Settings, away from the routine controls. */
.danger-zone[b-glp1ualwoy] {
    margin-top: 32px; padding: 14px; display: flex; flex-direction: column; gap: 8px;
    border: 1px solid var(--danger-text); border-radius: var(--r-md);
}
.danger-zone h3[b-glp1ualwoy] { margin: 0; font-size: 1rem; color: var(--danger-text); }
.danger-zone .hint[b-glp1ualwoy] { margin: 0; }
/* /Components/Pages/Walls/WallGpuRunnersPanel.razor.rz.scp.css */
.gpu-runner-heading[b-q5z9x2ycf0] { font-size: 0.95rem; margin: 1rem 0 0.4rem; }
.gpu-runner-cmd[b-q5z9x2ycf0] { font-size: 0.75rem; white-space: pre-wrap; word-break: break-all; }
.gpu-job-row[b-q5z9x2ycf0] { display: flex; flex-direction: column; gap: 0.1rem; padding: 0.4rem 0; border-bottom: 1px solid var(--border-color, #333); }
.gpu-runner-create[b-q5z9x2ycf0] { margin-top: 1rem; }
.gpu-runner-optin[b-q5z9x2ycf0] { margin-top: 1rem; }
/* /Components/Pages/Walls/WallLookOver.razor.rz.scp.css */
/* The look-over page. Phone first. In the card view the page is exactly one screen between the top bar and the tab
   bar and never scrolls: header, chips, then the deck, which takes what is left. The list view is an ordinary page
   that scrolls: groups as full-width rows that open in place, cards as on the confirm screen of "Update panels + 3D"
   (same class names, so the two read alike). Colours come from the shared tokens. */
.lookover-page[b-no96bhe2xi] {
    max-width: 1280px; margin: 0 auto; padding: 6px 12px 8px; display: flex; flex-direction: column; gap: 8px;
    height: calc(100dvh - var(--topbar-h, 0px) - var(--bottomnav-h, 0px)); min-height: 420px;
}
.lookover-page.is-list[b-no96bhe2xi] { height: auto; min-height: 0; padding-bottom: calc(48px + var(--bottomnav-h, 0px)); }
.lookover-page > p[b-no96bhe2xi] { margin: 0; }
.lookover-header[b-no96bhe2xi] { position: relative; flex: none; }
.lookover-page.is-list .lookover-header[b-no96bhe2xi] { position: sticky; top: var(--topbar-h, 0px); z-index: 6; margin: -6px -12px 0; padding: 6px 12px; background: var(--bg); }
.lookover-page[b-no96bhe2xi]  .lookover-tool {
    flex: none; width: auto; min-width: 36px; min-height: 36px; margin: 0; padding: 4px 9px; border: 1px solid var(--border-light); border-radius: 999px;
    background: var(--bg-surface); color: var(--text); font: inherit; font-size: 0.82rem; font-weight: 600; cursor: pointer;
}
.lookover-page[b-no96bhe2xi]  .lookover-tool.is-on { border-color: var(--accent); background: var(--accent); color: var(--on-accent); }
.lookover-page[b-no96bhe2xi]  .lookover-finish-now { flex: none; width: auto; min-height: 36px; margin: 0; padding: 4px 14px; font-size: 0.9rem; }
.lookover-details[b-no96bhe2xi] {
    position: absolute; top: 100%; left: 0; right: 0; z-index: 8; max-height: 70dvh; overflow-y: auto; margin-top: 4px; padding: 12px;
    border: 1px solid var(--border-light); border-radius: var(--r-md); background: var(--bg-surface); box-shadow: 0 12px 32px -12px var(--shadow-sm, rgba(0, 0, 0, 0.3));
}
.lookover-details > p[b-no96bhe2xi] { margin: 0 0 8px; }
.lookover-keys[b-no96bhe2xi] { display: none; }
.lookover-status[b-no96bhe2xi] { font-weight: 600; }
.deck-chips[b-no96bhe2xi] { flex: none; display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; margin: 0 -12px; padding: 0 12px 2px; }
.deck-chips[b-no96bhe2xi]::-webkit-scrollbar { display: none; }
.deck-chips button[b-no96bhe2xi] {
    flex: none; width: auto; min-height: 36px; margin: 0; padding: 4px 12px; border: 1px solid var(--border-light); border-radius: 999px;
    background: var(--bg-surface); color: var(--text); font: inherit; font-size: 0.85rem; white-space: nowrap; cursor: pointer;
}
.deck-chips button > span[b-no96bhe2xi] { margin-left: 4px; font-weight: 700; }
.lookover-page[b-no96bhe2xi]  .deck-bulk { flex: none; }
.lookover-page[b-no96bhe2xi]  .deck-bulk button { width: auto; min-height: 36px; margin: 0; padding: 4px 12px; font-size: 0.85rem; }
.lookover-page[b-no96bhe2xi]  .deck-bulk-note { flex: none; margin: 0; }
.deck-chips button.is-on[b-no96bhe2xi] { border-color: var(--accent); background: var(--accent); color: var(--on-accent); font-weight: 600; }
.lookover-page[b-no96bhe2xi]  .lookover-rows { list-style: none; margin: 0; padding: 0 12px 8px; display: grid; gap: 6px; }
.lookover-page[b-no96bhe2xi]  .lookover-rows li { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 6px 0; border-top: 1px solid var(--border-light); }
.lookover-page[b-no96bhe2xi]  .lookover-rows li > span { min-width: 0; display: grid; }
.lookover-page[b-no96bhe2xi]  .lookover-rows small { color: var(--text-secondary); }
.lookover-page[b-no96bhe2xi]  .lookover-rows button { flex: none; width: auto; margin: 0; min-height: 36px; padding: 4px 14px; }
.lookover-page[b-no96bhe2xi]  .lookover-answered-toggle { display: block; width: auto; margin: 0 12px 8px; min-height: 36px; padding: 4px 0; }
@media (hover: hover) and (pointer: fine) {
    .lookover-keys[b-no96bhe2xi] { display: block; }
}
.lookover-page[b-no96bhe2xi]  .lookover-group { margin: 12px 0; border: 1px solid var(--border-light); border-radius: var(--r-md); background: var(--bg-surface); }
.lookover-page[b-no96bhe2xi]  .lookover-group-head {
    display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%; min-height: 48px; margin: 0;
    padding: 10px 12px; border: 0; border-radius: var(--r-md); background: none; color: var(--text-heading, var(--text));
    font: inherit; font-weight: 600; text-align: left; cursor: pointer;
}
.lookover-page[b-no96bhe2xi]  .lookover-group-head.is-static { cursor: default; }
.lookover-page[b-no96bhe2xi]  .lookover-group-head:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.lookover-page[b-no96bhe2xi]  .lookover-group-title { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.lookover-page[b-no96bhe2xi]  .lookover-group-sub { font-size: 0.8rem; font-weight: 400; color: var(--text-secondary); }
.lookover-page[b-no96bhe2xi]  .lookover-views { display: flex; gap: 6px; margin: 12px 0 4px; }
.lookover-page[b-no96bhe2xi]  .lookover-views button {
    flex: 1 1 0; min-height: 40px; margin: 0; padding: 6px 10px; border: 1px solid var(--border-light); border-radius: 999px;
    background: var(--bg-surface); color: var(--text); font: inherit; font-size: 0.9rem; cursor: pointer;
}
.lookover-page[b-no96bhe2xi]  .lookover-views button.is-on { border-color: var(--accent); background: var(--accent); color: var(--on-accent); font-weight: 600; }
.lookover-page[b-no96bhe2xi]  .lookover-chip {
    display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px 12px; margin: 12px 0 4px; padding: 8px 12px;
    border-radius: var(--r-md); background: var(--info-bg); color: var(--info-text); font-size: 0.9rem;
}
.lookover-page[b-no96bhe2xi]  .lookover-chip a { color: inherit; font-weight: 600; }
.lookover-page[b-no96bhe2xi]  .lookover-group-count {
    flex: none; white-space: nowrap; font-size: 0.8rem; font-weight: 600; padding: 2px 10px; border-radius: 999px;
    color: var(--warning-text); background: var(--warning-bg);
}
.lookover-page[b-no96bhe2xi]  .lookover-group-count.is-done { color: var(--success-text); background: var(--success-bg); }
.lookover-page[b-no96bhe2xi]  .lookover-bulk { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; padding: 0 12px 4px; }
.lookover-page[b-no96bhe2xi]  .lookover-bulk > button { white-space: normal; text-align: left; }
.lookover-page[b-no96bhe2xi]  .lookover-bulk > .confirm-action { align-self: stretch; }
.lookover-page[b-no96bhe2xi]  .lookover-more { width: auto; margin: 0 12px 12px; }
.lookover-finish[b-no96bhe2xi] { margin-top: 8px; padding-top: 10px; border-top: 1px solid var(--border-light); }
.lookover-finish > button[b-no96bhe2xi],
.lookover-page[b-no96bhe2xi]  .lookover-finish > button,
.lookover-page[b-no96bhe2xi]  .lookover-bulk > button { width: auto; }

.lookover-page[b-no96bhe2xi]  .refresh-check-list { list-style: none; padding: 0 12px; margin: 4px 0 12px; display: grid; gap: 12px; }
.lookover-page[b-no96bhe2xi]  .refresh-check { padding: 10px; border: 1px solid var(--border-light); border-radius: var(--r-md); background: var(--bg-surface-alt); min-width: 0; }
.lookover-page[b-no96bhe2xi]  .refresh-check:focus { outline: none; }
.lookover-page[b-no96bhe2xi]  .refresh-check.is-answered { background: var(--bg-surface); }
.lookover-page[b-no96bhe2xi]  .refresh-check.is-answered .refresh-check-title,
.lookover-page[b-no96bhe2xi]  .refresh-check.is-answered .refresh-check-crops,
.lookover-page[b-no96bhe2xi]  .refresh-check.is-answered .lookover-boulders { opacity: 0.6; }
.lookover-page[b-no96bhe2xi]  .lookover-crop { display: block; width: 100%; margin: 0; padding: 0; border: 0; background: none; cursor: zoom-in; border-radius: var(--r-md); }
.lookover-page[b-no96bhe2xi]  .lookover-crop:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.lookover-page[b-no96bhe2xi]  .refresh-check-actions > .lookover-undo { width: auto; margin: 0 0 0 auto; min-height: 40px; padding: 4px 10px; }
.lookover-page[b-no96bhe2xi]  .lookover-zoom { width: min(100%, 720px); }
.lookover-page[b-no96bhe2xi]  .lookover-zoom-pictures { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); gap: 10px; margin: 8px 0 12px; }
.lookover-page[b-no96bhe2xi]  .lookover-zoom > .lookover-zoom-close { width: auto; margin: 0 0 4px; }
.lookover-page[b-no96bhe2xi]  .refresh-check-title { margin: 0 0 8px; overflow-wrap: anywhere; }
.lookover-page[b-no96bhe2xi]  .refresh-check-crops { display: grid; grid-template-columns: repeat(3, minmax(0, 220px)); gap: 8px; }
.lookover-page[b-no96bhe2xi]  .refresh-check-crops figure { margin: 0; min-width: 0; max-width: 220px; }
.lookover-page[b-no96bhe2xi]  .refresh-check-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 8px; }
.lookover-page[b-no96bhe2xi]  .refresh-check-actions > button { width: auto; margin: 0; min-height: 40px; }
.lookover-page[b-no96bhe2xi]  .refresh-check-actions > .confirm-action { flex: 1 1 100%; }
.lookover-page[b-no96bhe2xi]  .refresh-badge { white-space: nowrap; font-size: 0.75rem; padding: 2px 8px; border-radius: 999px; color: var(--info-text); background: var(--info-bg); }
.lookover-page[b-no96bhe2xi]  .lookover-boulders { display: flex; flex-wrap: wrap; gap: 4px 10px; margin: 8px 0 0; font-size: 0.9rem; }
.lookover-page[b-no96bhe2xi]  .lookover-boulders span { color: var(--text-secondary); }
.lookover-page[b-no96bhe2xi]  .lookover-boulders a { color: var(--accent); font-weight: 600; text-decoration: none; }
.lookover-page[b-no96bhe2xi]  .lookover-boulders a:hover { text-decoration: underline; }
.lookover-page[b-no96bhe2xi]  .refresh-check > .hint { margin: 8px 0 0; }
/* /Components/Pages/Walls/WallRefresh.razor.rz.scp.css */
/* The update page. Phone first: the update's header, one status line, then the step's screen. The photos step is a
   short page; the check step (.is-one-screen) is exactly the screen between the top bar and the tab bar and does not
   scroll: numbers, the card deck, Apply at the bottom. Its list view scrolls like any page. */
.refresh-page[b-bc4aalypqp] { max-width: 1280px; margin: 0 auto; padding: 6px 12px 48px; display: flex; flex-direction: column; gap: 8px; }
.refresh-page.is-one-screen[b-bc4aalypqp] { height: calc(100dvh - var(--topbar-h, 0px) - var(--bottomnav-h, 0px)); min-height: 440px; padding-bottom: 8px; }
.refresh-page > p[b-bc4aalypqp] { margin: 0; }
.refresh-header[b-bc4aalypqp] { position: relative; flex: none; }
.refresh-page[b-bc4aalypqp]  .refresh-tool {
    flex: none; width: auto; min-width: 36px; min-height: 36px; margin: 0; padding: 4px 10px; border: 1px solid var(--border-light); border-radius: 999px;
    background: var(--bg-surface); color: var(--text); font: inherit; font-size: 0.82rem; font-weight: 600; cursor: pointer;
}
.refresh-page[b-bc4aalypqp]  .refresh-tool.is-on { border-color: var(--accent); background: var(--accent); color: var(--on-accent); }
.refresh-details[b-bc4aalypqp] {
    position: absolute; top: 100%; left: 0; right: 0; z-index: 8; max-height: 70dvh; overflow-y: auto; margin-top: 4px; padding: 4px 12px 12px;
    border: 1px solid var(--border-light); border-radius: var(--r-md); background: var(--bg-surface); box-shadow: 0 12px 32px -12px var(--shadow-sm, rgba(0, 0, 0, 0.3));
}
.refresh-page[b-bc4aalypqp]  .refresh-status { display: flex; align-items: center; gap: 8px; margin: 0; padding: 6px 10px; border-radius: var(--r-md); background: var(--info-bg); color: var(--info-text); font-size: 0.9rem; }
.refresh-status-mark[b-bc4aalypqp] { flex: none; width: 14px; height: 14px; border: 2px solid currentColor; border-top-color: transparent; border-radius: 50%; animation: refresh-spin-b-bc4aalypqp 0.9s linear infinite; }
.refresh-working[b-bc4aalypqp] { display: grid; justify-items: start; gap: 10px; padding: 12px 0; }
.refresh-working > p[b-bc4aalypqp] { margin: 0; }
.refresh-working > a[b-bc4aalypqp], .refresh-working > button[b-bc4aalypqp] { width: auto; margin: 0; text-decoration: none; }
.refresh-page[b-bc4aalypqp]  .refresh-drop { display: grid; gap: 8px; max-width: 720px; }
.refresh-page[b-bc4aalypqp]  .refresh-drop > button { justify-self: start; width: auto; }
.refresh-page[b-bc4aalypqp]  .refresh-drop > p, .refresh-page[b-bc4aalypqp]  .refresh-drop > details { margin: 0; }
.refresh-page[b-bc4aalypqp]  .refresh-files > summary, .refresh-page[b-bc4aalypqp]  .refresh-problems > summary { cursor: pointer; padding: 4px 0; font-weight: 600; }
.refresh-page[b-bc4aalypqp]  .refresh-files ul { max-height: 30dvh; overflow-y: auto; margin: 4px 0; padding-left: 1.25rem; font-size: 0.85rem; color: var(--text-secondary); }

/* The photo per panel: one row each, the choice behind "Change". */
.refresh-page[b-bc4aalypqp]  .refresh-sort { display: grid; gap: 10px; }
.refresh-page[b-bc4aalypqp]  .refresh-sort-intro { margin: 0; }
.refresh-page[b-bc4aalypqp]  .refresh-picks { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr)); gap: 8px; }
.refresh-page[b-bc4aalypqp]  .refresh-pick {
    display: grid; grid-template-columns: 76px minmax(0, 1fr) auto; align-items: center; gap: 4px 10px; padding: 8px; min-width: 0;
    border: 1px solid var(--border-light); border-radius: var(--r-md); background: var(--bg-surface);
}
.refresh-page[b-bc4aalypqp]  .refresh-pick-thumb > img, .refresh-page[b-bc4aalypqp]  .refresh-pick-thumb > .refresh-keep { display: flex; width: 76px; aspect-ratio: 4 / 3; font-size: 0.7rem; text-align: center; }
.refresh-page[b-bc4aalypqp]  .refresh-pick-text { min-width: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 2px 8px; }
.refresh-page[b-bc4aalypqp]  .refresh-pick-text > .hint { flex: 1 1 100%; margin: 0; font-size: 0.8rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.refresh-page[b-bc4aalypqp]  .refresh-pick-change { width: auto; min-height: 40px; margin: 0; padding: 4px 12px; }
.refresh-page[b-bc4aalypqp]  .refresh-pick-edit { grid-column: 1 / -1; padding-top: 6px; }
/* The two ways to start, as two cards. */
.refresh-page[b-bc4aalypqp]  .refresh-starts { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr)); gap: 10px; align-items: start; }
.refresh-page[b-bc4aalypqp]  .refresh-start { padding: 12px; border: 1px solid var(--border-light); border-radius: var(--r-md); background: var(--bg-surface); }
.refresh-page[b-bc4aalypqp]  .refresh-start h2 { margin: 0 0 4px; font-size: 1.05rem; }
.refresh-page[b-bc4aalypqp]  .refresh-start > .hint { margin: 0 0 8px; }
.refresh-page[b-bc4aalypqp]  .refresh-start .refresh-actions { margin-top: 0; }
.refresh-page[b-bc4aalypqp]  .refresh-start-more { margin-top: 8px; font-size: 0.9rem; }
.refresh-page[b-bc4aalypqp]  .refresh-start-more > summary { cursor: pointer; color: var(--text-secondary); }

/* The check step: numbers, the deck (or the lists), Apply. */
.refresh-page[b-bc4aalypqp]  .refresh-confirm { flex: 1 1 0; min-height: 0; display: flex; flex-direction: column; gap: 8px; }
.refresh-page[b-bc4aalypqp]  .refresh-confirm.is-list { flex: none; }
.refresh-page[b-bc4aalypqp]  .refresh-numbers { flex: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(60px, 1fr)); gap: 6px; margin: 0; }
.refresh-page[b-bc4aalypqp]  .refresh-numbers > div { display: flex; flex-direction: column-reverse; align-items: center; padding: 4px 2px; border-radius: var(--r-md); background: var(--bg-surface); border: 1px solid var(--border-light); min-width: 0; }
.refresh-page[b-bc4aalypqp]  .refresh-numbers dd { margin: 0; font-size: 1.15rem; font-weight: 700; line-height: 1.2; }
.refresh-page[b-bc4aalypqp]  .refresh-numbers dt { font-size: 0.68rem; line-height: 1.2; text-align: center; color: var(--text-secondary); }
.refresh-page[b-bc4aalypqp]  .refresh-numbers .is-attention dd { color: var(--attention-text); }
.refresh-page[b-bc4aalypqp]  .refresh-apply {
    flex: none; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px 12px; padding-top: 8px; border-top: 1px solid var(--border-light);
}
.refresh-page[b-bc4aalypqp]  .refresh-confirm.is-list .refresh-apply { position: sticky; bottom: var(--bottomnav-h, 0px); z-index: 5; padding: 8px 0; background: var(--bg); }
.refresh-page[b-bc4aalypqp]  .refresh-apply-note { flex: 1 1 140px; font-size: 0.82rem; color: var(--text-secondary); }
.refresh-page[b-bc4aalypqp]  .refresh-apply > button { flex: none; width: auto; margin: 0; min-height: 44px; padding: 8px 16px; font-size: 0.95rem; }
.refresh-page[b-bc4aalypqp]  .refresh-apply > .confirm-action { flex: 1 1 100%; margin: 0; }
.refresh-page[b-bc4aalypqp]  .deck-pictures figure, .refresh-page[b-bc4aalypqp]  .lookover-zoom-pictures figure { margin: 0; }
.refresh-page[b-bc4aalypqp]  .deck-pictures img, .refresh-page[b-bc4aalypqp]  .lookover-zoom-pictures img { display: block; width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: var(--r-md); background: var(--bg-surface-alt); }
@media (prefers-reduced-motion: reduce) {
    .refresh-status-mark[b-bc4aalypqp] { animation: none; }
}
.refresh-page[b-bc4aalypqp]  .refresh-drop-zone {
    display: flex; flex-direction: column; gap: 6px; padding: 18px 16px; text-align: center; cursor: pointer;
    border: 2px dashed var(--border-light); border-radius: var(--r-md); background: var(--bg-surface-alt);
}
.refresh-page[b-bc4aalypqp]  .refresh-drop-zone.is-busy { opacity: 0.6; cursor: progress; }
.refresh-page[b-bc4aalypqp]  .refresh-drop-zone input { margin: 8px auto 0; max-width: 100%; }
.refresh-page[b-bc4aalypqp]  .refresh-progress { width: 100%; height: 8px; margin: 8px 0 4px; accent-color: var(--top-hold, currentColor); }
.refresh-page[b-bc4aalypqp]  .refresh-photo-select { width: 100%; min-width: 0; max-width: 100%; text-overflow: ellipsis; }
.refresh-page[b-bc4aalypqp]  .refresh-panel-photos { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin-bottom: 8px; }
.refresh-page[b-bc4aalypqp]  .refresh-panel-photos figure { margin: 0; }
.refresh-page[b-bc4aalypqp]  .refresh-panel-photos img,
.refresh-page[b-bc4aalypqp]  .refresh-keep { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--r-md); background: var(--bg-surface); }
.refresh-page[b-bc4aalypqp]  .refresh-keep { display: flex; align-items: center; justify-content: center; font-size: 0.8rem; color: var(--text-secondary); }
.refresh-page[b-bc4aalypqp]  figcaption { font-size: 0.75rem; color: var(--text-secondary); text-align: center; }
.refresh-page[b-bc4aalypqp]  .refresh-badge { flex-shrink: 0; white-space: nowrap; font-size: 0.75rem; padding: 2px 8px; border-radius: 999px; background: var(--bg-surface); }
.refresh-page[b-bc4aalypqp]  .refresh-badge.is-high { color: var(--success-text); background: var(--success-bg); }
.refresh-page[b-bc4aalypqp]  .refresh-badge.is-medium { color: var(--warning-text); background: var(--warning-bg); }
.refresh-page[b-bc4aalypqp]  .refresh-badge.is-none { color: var(--text); background: var(--bg-surface); }
.refresh-page[b-bc4aalypqp]  .refresh-badge.is-user { color: var(--info-text); background: var(--info-bg); }
.refresh-page[b-bc4aalypqp]  .refresh-summary { padding-left: 1.25rem; }
.refresh-page[b-bc4aalypqp]  .refresh-summary li { margin: 4px 0; }
.refresh-page[b-bc4aalypqp]  .refresh-summary li.is-attention { color: var(--attention-text); }
.refresh-page[b-bc4aalypqp]  .refresh-timeline { list-style: none; padding: 0; margin: 8px 0; }
.refresh-page[b-bc4aalypqp]  .refresh-step { display: flex; gap: 10px; padding: 6px 0; }
/* Step marks: pending = empty ring, running = spinning ring, done = filled check, failed = filled "!",
   waiting for you = blue ring "?", skipped = dashed ring. */
.refresh-page[b-bc4aalypqp]  .refresh-step-mark {
    flex: 0 0 22px; width: 22px; height: 22px; box-sizing: border-box; margin-top: 1px;
    display: inline-flex; align-items: center; justify-content: center;
    border: 2px solid var(--border-light); border-radius: 50%;
    font-size: 0.75rem; font-weight: 700; line-height: 1; color: var(--text-secondary);
}
.refresh-page[b-bc4aalypqp]  .refresh-step.is-pending > div { opacity: 0.55; }
.refresh-page[b-bc4aalypqp]  .refresh-step.is-running .refresh-step-mark {
    border-color: var(--accent); border-top-color: transparent; animation: refresh-spin-b-bc4aalypqp 0.9s linear infinite;
}
.refresh-page[b-bc4aalypqp]  .refresh-step.is-running strong { color: var(--accent); }
.refresh-page[b-bc4aalypqp]  .refresh-step.is-done .refresh-step-mark { background: var(--step-done); border-color: var(--step-done); color: var(--on-accent); }
.refresh-page[b-bc4aalypqp]  .refresh-step.is-failed .refresh-step-mark { background: var(--status-danger); border-color: var(--status-danger); color: #fff; }
.refresh-page[b-bc4aalypqp]  .refresh-step.is-waiting .refresh-step-mark { border-color: var(--status-info); color: var(--status-info); }
.refresh-page[b-bc4aalypqp]  .refresh-step.is-skipped .refresh-step-mark { border-style: dashed; }
@keyframes refresh-spin-b-bc4aalypqp { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
    .refresh-page[b-bc4aalypqp]  .refresh-step.is-running .refresh-step-mark { animation: none; border-top-color: var(--accent); background: radial-gradient(var(--accent) 35%, transparent 40%); }
}
.refresh-page[b-bc4aalypqp]  .refresh-step-state { font-size: 0.8rem; color: var(--text-secondary); }
.refresh-page[b-bc4aalypqp]  .refresh-actions,
.refresh-actions[b-bc4aalypqp] { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.refresh-page[b-bc4aalypqp]  .refresh-actions > *,
.refresh-actions > *[b-bc4aalypqp] { width: auto; }
.refresh-done[b-bc4aalypqp] { font-weight: 600; font-size: 1.1rem; }
.refresh-actions[b-bc4aalypqp] { align-items: center; }
.refresh-discard-question[b-bc4aalypqp] { flex: 1 1 100%; font-weight: 600; }
/* Room below the last row, so nothing ends under the tab bar or a bottom banner. */
.refresh-page:not(.is-one-screen)[b-bc4aalypqp] { padding-bottom: calc(48px + var(--bottomnav-h, 0px)); }
.refresh-actions > button[b-bc4aalypqp] { scroll-margin-bottom: calc(24px + var(--bottomnav-h, 0px)); }
.refresh-page[b-bc4aalypqp]  .refresh-3d-note { padding: 8px 12px; border-radius: var(--r-md); background: var(--info-bg); color: var(--info-text); }
.refresh-page[b-bc4aalypqp]  .refresh-moves-list { list-style: none; padding: 0; margin: 8px 0; display: grid; gap: 8px; }
.refresh-page[b-bc4aalypqp]  .refresh-moves-list li { padding: 10px; border: 1px solid var(--border-light); border-radius: var(--r-md); background: var(--bg-surface-alt); }
.refresh-page[b-bc4aalypqp]  .refresh-moves-list li.is-removed { border-color: var(--warning-fill); background: var(--warning-bg); color: var(--warning-text); }
.refresh-page[b-bc4aalypqp]  .refresh-moves-source, .refresh-page[b-bc4aalypqp]  .refresh-moves-boulders { font-size: 0.85rem; opacity: 0.85; }
.refresh-page[b-bc4aalypqp]  .refresh-check-list { list-style: none; padding: 0; margin: 8px 0; display: grid; gap: 12px; }
.refresh-page[b-bc4aalypqp]  .refresh-check { padding: 10px; border: 1px solid var(--border-light); border-radius: var(--r-md); background: var(--bg-surface-alt); }
.refresh-page[b-bc4aalypqp]  .refresh-check.is-answered { opacity: 0.75; }
.refresh-page[b-bc4aalypqp]  .refresh-check-title { margin: 0 0 8px; }
.refresh-page[b-bc4aalypqp]  .refresh-check-crops { display: grid; grid-template-columns: repeat(3, minmax(0, 220px)); gap: 8px; }
.refresh-page[b-bc4aalypqp]  .refresh-check-crops figure { margin: 0; min-width: 0; max-width: 220px; }
.refresh-page[b-bc4aalypqp]  .refresh-check-crops img { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: var(--r-md); background: var(--bg-surface); }
.refresh-page[b-bc4aalypqp]  .refresh-check-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 8px; }
.refresh-page[b-bc4aalypqp]  .refresh-revision { padding: 12px 14px; border: 1px solid var(--status-danger); border-radius: var(--r-md); background: var(--bg-surface-alt); }
.refresh-page[b-bc4aalypqp]  .refresh-lists > .refresh-revision { margin: 16px 0 8px; }
.refresh-page[b-bc4aalypqp]  .refresh-revision h2 { margin: 0 0 6px; font-size: 1.05rem; }
.refresh-page[b-bc4aalypqp]  .refresh-revision-blocked { font-weight: 600; }
.refresh-page[b-bc4aalypqp]  .refresh-revision-boulders { columns: 2 180px; padding-left: 1.25rem; margin: 6px 0; font-size: 0.9rem; }
.refresh-page[b-bc4aalypqp]  .refresh-summary-details { margin: 12px 0; }
.refresh-page[b-bc4aalypqp]  .refresh-summary-details > summary { cursor: pointer; font-weight: 600; padding: 4px 0; }
/* /Components/Shared/CaptureCoverageHeatmap.razor.rz.scp.css */
.coverage-heatmap[b-irx3lqexjz] { margin: 0; display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.coverage-heatmap svg[b-irx3lqexjz] {
    width: 100%; max-height: 160px; background: var(--bg-surface-alt);
    border: 1px solid var(--border-light); border-radius: var(--r-sm);
}
.coverage-heatmap figcaption[b-irx3lqexjz] { display: flex; flex-wrap: wrap; gap: 2px 8px; font-size: 0.8rem; }
.coverage-heatmap rect[b-irx3lqexjz] { shape-rendering: crispEdges; }
.cov-g[b-irx3lqexjz] { fill: var(--status-success, #3a9d5d); opacity: 0.45; }
.cov-hidden[b-irx3lqexjz] { fill: var(--text-secondary); opacity: 0.08; }
.cov-d[b-irx3lqexjz] { fill: var(--status-warning, #d9a400); opacity: 0.75; }
.cov-a[b-irx3lqexjz] { fill: var(--status-review, #d97a00); opacity: 0.8; }
.cov-r[b-irx3lqexjz] { fill: var(--status-info, #3a7bd5); opacity: 0.6; }
.cov-n[b-irx3lqexjz] { fill: var(--status-danger, #d0463b); opacity: 0.85; }
.cov-volume[b-irx3lqexjz] { stroke-width: 0.12; fill-opacity: 0.25; }
.cov-volume-g[b-irx3lqexjz] { stroke: var(--text-secondary); fill: var(--text-secondary); }
.cov-volume-d[b-irx3lqexjz] { stroke: var(--status-warning, #d9a400); fill: var(--status-warning, #d9a400); }
.cov-volume-a[b-irx3lqexjz] { stroke: var(--status-review, #d97a00); fill: var(--status-review, #d97a00); }
.cov-volume-r[b-irx3lqexjz] { stroke: var(--status-info, #3a7bd5); fill: var(--status-info, #3a7bd5); }
.cov-volume-n[b-irx3lqexjz] { stroke: var(--status-danger, #d0463b); fill: var(--status-danger, #d0463b); }
.cov-marker[b-irx3lqexjz] { fill: var(--text); }
.cov-marker-weak[b-irx3lqexjz] { fill: var(--status-danger, #d0463b); }
.cov-suggested[b-irx3lqexjz] { fill: none; stroke: var(--accent); stroke-width: 0.15; }
.cov-volume-label[b-irx3lqexjz] {
    font-size: 1.3px; font-weight: 700; fill: var(--text); text-anchor: middle; dominant-baseline: central;
    paint-order: stroke; stroke: var(--bg-surface-alt); stroke-width: 0.3px; stroke-linejoin: round; pointer-events: none;
}
/* /Components/Shared/CaptureMaintenance.razor.rz.scp.css */
.capture-maintenance[b-d53vk77ker] { list-style: none; margin: 10px 0 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.capture-maintenance li[b-d53vk77ker] { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; }
.capture-maintenance-desc[b-d53vk77ker] { font-size: 0.8rem; line-height: 1.4; color: var(--text-secondary); }
.texture-quality[b-d53vk77ker] { display: flex; flex-direction: column; gap: 10px; padding: 12px; width: 100%; box-sizing: border-box; border: 1px solid var(--border); border-radius: var(--r-md); }
.texture-quality-intro[b-d53vk77ker] { margin: 0; font-size: 0.85rem; line-height: 1.45; color: var(--text); }
.texture-quality-options[b-d53vk77ker] { border: 0; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.texture-quality-legend[b-d53vk77ker] { font-size: 0.85rem; font-weight: 600; padding: 0; margin-bottom: 4px; color: var(--text); }
.texture-quality-option[b-d53vk77ker] { display: flex; gap: 8px; align-items: flex-start; font-size: 0.9rem; color: var(--text); }
.texture-quality-option > input[b-d53vk77ker] { margin-top: 4px; }
.texture-quality-option > span[b-d53vk77ker] { display: flex; flex-direction: column; gap: 2px; }
.texture-quality-warning[b-d53vk77ker] { font-size: 0.8rem; line-height: 1.4; color: var(--danger-text); }
/* /Components/Shared/CardDeck.razor.rz.scp.css */
/* The card deck: one card at a time. A column that fills what the page gives it: the progress row, the card (the
   only part that may scroll, and only when a card is taller than the screen), the row about the last answer with
   Skip, and the answers at the bottom. The card, the answers, the note and the queue rows are rendered by whoever
   uses the deck, hence ::deep throughout. From 900px the queue is listed on the left. */
.card-deck[b-wab86ilma1] { flex: 1 1 0; min-height: 0; display: flex; gap: 16px; }
.card-deck[b-wab86ilma1]  .deck-queue { display: none; }
.card-deck[b-wab86ilma1]  .deck-main { flex: 1 1 auto; min-width: 0; min-height: 0; display: flex; flex-direction: column; gap: 8px; }
.card-deck[b-wab86ilma1]  .deck-head { flex: none; display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 0.9rem; }
.card-deck[b-wab86ilma1]  .deck-head > button { flex: none; width: 48px; min-height: 40px; margin: 0; padding: 0; font-size: 1.3rem; line-height: 1; }
.card-deck[b-wab86ilma1]  .deck-head > span { min-width: 0; text-align: center; }
.card-deck[b-wab86ilma1]  .deck-kind { margin-left: 4px; color: var(--text-secondary); }
.card-deck[b-wab86ilma1]  .deck-empty { flex: 1 1 auto; display: grid; place-content: center; justify-items: center; gap: 12px; text-align: center; padding: 16px; }
.card-deck[b-wab86ilma1]  .deck-empty p { margin: 0; }
.card-deck[b-wab86ilma1]  .deck-empty button { width: auto; margin: 0; }
.card-deck[b-wab86ilma1]  .deck-meta { order: 2; flex: none; display: flex; align-items: center; justify-content: flex-end; gap: 8px; min-height: 36px; }
.card-deck[b-wab86ilma1]  .deck-meta > .deck-skip { flex: none; width: auto; min-width: 56px; min-height: 36px; margin: 0; padding: 4px 8px; }
.card-deck[b-wab86ilma1]  .deck-undo {
    flex: 1 1 auto; min-width: 0; display: flex; align-items: center; gap: 4px 10px; margin: 0; padding: 2px 4px 2px 12px; border-radius: var(--r-md);
    background: var(--info-bg); color: var(--info-text); font-size: 0.85rem;
}
.card-deck[b-wab86ilma1]  .deck-undo > span { flex: 1 1 auto; min-width: 0; }
.card-deck[b-wab86ilma1]  .deck-undo > button { flex: none; width: auto; min-width: 40px; min-height: 36px; margin: 0; padding: 4px 8px; color: inherit; font-weight: 700; }
.card-deck[b-wab86ilma1]  .deck-undo > .deck-undo-close { font-size: 1.2rem; font-weight: 400; text-decoration: none; }

.card-deck[b-wab86ilma1]  .deck-body {
    order: 1; flex: 1 1 0; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 10px;
    border: 1px solid var(--border-light); border-radius: var(--r-md); background: var(--bg-surface);
}
.card-deck[b-wab86ilma1]  .deck-about { display: grid; gap: 2px; min-width: 0; }
.card-deck[b-wab86ilma1]  .deck-about > strong { overflow-wrap: anywhere; }
.card-deck[b-wab86ilma1]  .deck-used { font-size: 0.9rem; color: var(--text-secondary); }
.card-deck[b-wab86ilma1]  .deck-detail { margin: 8px 0 0; font-size: 0.9rem; line-height: 1.45; overflow-wrap: anywhere; }
.card-deck[b-wab86ilma1]  .deck-body > .hint { margin: 6px 0 0; }
/* Before and now, side by side and as wide as the card; never taller than two fifths of the screen each. */
.card-deck[b-wab86ilma1]  .deck-pictures { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; max-width: calc(80dvh + 8px); margin: 8px auto 0; }
.card-deck[b-wab86ilma1]  .deck-pictures.is-single { grid-template-columns: 1fr; max-width: 40dvh; }
.card-deck[b-wab86ilma1]  .lookover-crop { display: block; width: 100%; margin: 0; padding: 0; border: 0; background: none; cursor: zoom-in; border-radius: var(--r-md); }
.card-deck[b-wab86ilma1]  .lookover-crop:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.card-deck[b-wab86ilma1]  .deck-3d { display: block; width: auto; min-height: 36px; margin: 2px auto 0; padding: 4px 8px; }

.card-deck[b-wab86ilma1]  .deck-answers { order: 3; flex: none; display: flex; flex-wrap: wrap; align-items: stretch; gap: 8px; }
.card-deck[b-wab86ilma1]  .deck-answers > button { flex: 1 1 0; width: auto; min-width: min(100%, 120px); min-height: 48px; margin: 0; padding: 8px 10px; }
.card-deck[b-wab86ilma1]  .deck-answers > .confirm-action { order: -1; flex: 1 1 100%; max-height: 46dvh; overflow-y: auto; margin: 0; }
.card-deck[b-wab86ilma1]  .lookover-zoom { width: min(100%, 720px); }
.card-deck[b-wab86ilma1]  .lookover-zoom-pictures { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); gap: 10px; margin: 8px 0 12px; }
.card-deck[b-wab86ilma1]  .lookover-zoom > .lookover-zoom-close { width: auto; margin: 0 0 4px; }

@media (min-width: 900px) {
    .card-deck[b-wab86ilma1]  .deck-queue {
        display: block; flex: 0 0 280px; min-height: 0; overflow-y: auto; padding: 6px; border: 1px solid var(--border-light); border-radius: var(--r-md);
        background: var(--bg-surface);
    }
    .card-deck[b-wab86ilma1]  .deck-queue ol { margin: 0; padding: 0; list-style: none; display: grid; gap: 2px; }
    .card-deck[b-wab86ilma1]  .deck-queue button {
        display: grid; gap: 1px; width: 100%; margin: 0; padding: 6px 10px; border: 0; border-radius: var(--r-md); background: none; color: var(--text);
        font: inherit; font-size: 0.88rem; text-align: left; cursor: pointer;
    }
    .card-deck[b-wab86ilma1]  .deck-queue button:hover { background: var(--bg-surface-alt); }
    .card-deck[b-wab86ilma1]  .deck-queue button.is-current { background: var(--accent); color: var(--on-accent); font-weight: 600; }
    .card-deck[b-wab86ilma1]  .deck-queue small { font-size: 0.78rem; opacity: 0.8; }
    .card-deck[b-wab86ilma1]  .deck-queue-more { margin: 4px 10px; font-size: 0.78rem; color: var(--text-secondary); }
    .card-deck[b-wab86ilma1]  .deck-main { max-width: 900px; }
    .card-deck[b-wab86ilma1]  .deck-pictures { max-width: 64dvh; }
    .card-deck[b-wab86ilma1]  .deck-pictures.is-single { max-width: 32dvh; }
    .card-deck[b-wab86ilma1]  .deck-answers > button { flex: 0 1 auto; min-width: 140px; }
}
/* /Components/Shared/ConfirmAction.razor.rz.scp.css */
.confirm-action[b-4j3s2ky82r] {
    display: flex; flex-direction: column; gap: 8px; padding: 12px; margin: 6px 0;
    border: 1px solid var(--danger-text); border-radius: var(--r-md); background: var(--danger-bg);
    scroll-margin-bottom: calc(var(--bottomnav-h) + var(--bw-banner-h, 0px) + env(safe-area-inset-bottom));
}
.confirm-action.is-neutral[b-4j3s2ky82r] { border-color: var(--border-light); background: var(--bg-surface); }
.confirm-action-question[b-4j3s2ky82r] { margin: 0; font-size: 0.9rem; line-height: 1.45; color: var(--text); }
.confirm-action-label[b-4j3s2ky82r] { display: flex; flex-direction: column; gap: 4px; font-size: 0.85rem; color: var(--text); }
.confirm-action-buttons[b-4j3s2ky82r] { display: flex; flex-wrap: wrap; gap: 8px; }

/* Short landscape screens (a phone on its side): the stacked question, input and two full-width
   buttons are taller than the space between the top bar and the tab bar, so the input or Cancel
   always ended up under chrome. Pack it tighter and put the buttons side by side. */
@media (max-height: 520px) and (orientation: landscape) {
    .confirm-action[b-4j3s2ky82r] {
        gap: 6px; padding: 8px 12px; margin: 4px 0;
        scroll-margin-top: calc(var(--topbar-h, 48px) + 8px);
    }
    .confirm-action-question[b-4j3s2ky82r] { font-size: 0.82rem; line-height: 1.3; }
    .confirm-action-label[b-4j3s2ky82r] { gap: 2px; font-size: 0.78rem; }
    .confirm-action-buttons[b-4j3s2ky82r] { flex-wrap: nowrap; }
    .confirm-action-buttons > button[b-4j3s2ky82r] { flex: 1 1 0; min-width: 0; min-height: 36px; padding-top: 6px; padding-bottom: 6px; }
}
/* /Components/Shared/HoldActionPrompt.razor.rz.scp.css */
/* Same split as ConfirmAction: red for what removes or cannot be taken back, plain for the rest. */
.hold-action-confirm[b-0ycd5wycie] {
    display: flex; flex-direction: column; gap: 8px; padding: 12px; margin: 6px 0;
    border: 1px solid var(--danger-text); border-radius: var(--r-md); background: var(--danger-bg);
}
.hold-action-confirm.is-neutral[b-0ycd5wycie] { border-color: var(--border-light); background: var(--bg-surface); }
.hold-action-text[b-0ycd5wycie] { margin: 0; font-size: 0.9rem; line-height: 1.45; color: var(--text); }
.hold-action-holds[b-0ycd5wycie] { font-weight: 600; }
.hold-action-preview[b-0ycd5wycie] { opacity: 0.7; }
.hold-action-buttons[b-0ycd5wycie] { display: flex; flex-wrap: wrap; gap: 8px; }
.hold-action-done[b-0ycd5wycie] { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 6px 0; font-size: 0.9rem; color: var(--text); }

/* The wall editor's options row: a dark strip of fixed height. One line that wraps, a coloured edge
   instead of a box, and text light enough to read on the dark ground (the row's own hints are dim on
   purpose; an outcome is not a hint). */
.hold-action-confirm.is-compact[b-0ycd5wycie] {
    flex: 1 1 auto; flex-direction: row; align-items: center; gap: 10px; min-width: 0;
    margin: 0; padding: 2px 0 2px 8px; white-space: normal;
    border: 0; border-left: 3px solid #ff6b6b; border-radius: 0; background: none;
}
.hold-action-confirm.is-compact.is-neutral[b-0ycd5wycie] { border-left-color: rgba(255, 255, 255, 0.45); }
.hold-action-confirm.is-compact .hold-action-text[b-0ycd5wycie] {
    flex: 1 1 0; min-width: 0; font-size: 0.74rem; line-height: 1.25; color: rgba(255, 255, 255, 0.88);
}
/* The buttons stay in view while a long outcome scrolls inside the row (a phone on its side has a
   one-line row). */
.hold-action-confirm.is-compact .hold-action-buttons[b-0ycd5wycie] {
    flex: 0 0 auto; flex-wrap: nowrap; gap: 6px; align-self: flex-start; position: sticky; top: 4px;
}
.hold-action-done.is-compact[b-0ycd5wycie] { margin: 0; font-size: 0.74rem; color: rgba(255, 255, 255, 0.88); white-space: normal; }

/* A phone: the row wraps (see .bw-toolbar-row in components.css), so the buttons go under the text
   where a thumb reaches them and the text gets the full width. */
@media (max-width: 720px) {
    .hold-action-confirm.is-compact[b-0ycd5wycie] { flex-wrap: wrap; gap: 6px; }
    .hold-action-confirm.is-compact .hold-action-text[b-0ycd5wycie] { flex: 1 1 100%; }
    .hold-action-confirm.is-compact .hold-action-buttons[b-0ycd5wycie] {
        flex: 1 1 100%; top: auto; bottom: 0; padding: 2px 0; background: #22223a;
    }
}
/* /Components/Shared/HoldLinkSuggestionsHint.razor.rz.scp.css */
/* The cross-panel link hint: one quiet line; the list opens beneath it. Phone-first: a row wraps to thumbnails,
   then text, then buttons; from ~560px they sit side by side. Colours come from the shared tokens. */
.link-hint[b-mbl77isdvo] {
    margin: 8px 0;
    padding: 6px 10px;
    border-radius: var(--r-sm);
    border: 1px solid var(--border);
    background: var(--bg-surface);
    font-size: 0.9rem;
}

.link-hint-line[b-mbl77isdvo] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.link-hint-text[b-mbl77isdvo] {
    flex: 1 1 auto;
    min-width: 0;
    color: var(--text-secondary);
}

.link-hint-line .btn-link[b-mbl77isdvo] {
    width: auto;
    margin: 0;
    padding: 4px 6px;
}

.link-hint-close[b-mbl77isdvo] {
    border: 0;
    background: none;
    color: var(--text-secondary);
    font-size: 1.1rem;
    line-height: 1;
    padding: 4px 6px;
    cursor: pointer;
}

.link-hint-list[b-mbl77isdvo] {
    list-style: none;
    margin: 8px 0 2px;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.link-hint-row[b-mbl77isdvo] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 10px;
    padding: 6px 8px;
    border-radius: var(--r-sm);
    border: 1px solid var(--border);
}

.link-hint-pair[b-mbl77isdvo] {
    display: flex;
    align-items: center;
    gap: 6px;
}

.link-hint-thumb[b-mbl77isdvo] {
    position: relative;
    display: block;
    width: 72px;
    height: 72px;
    overflow: hidden;
    border-radius: var(--r-sm);
    background: var(--bg-surface-alt);
    flex: none;
}

.link-hint-thumb img[b-mbl77isdvo] {
    position: absolute;
    left: 50%;
    top: 50%;
    max-width: none;
    height: auto;
    pointer-events: none;
}

.link-hint-ring[b-mbl77isdvo] {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 36%;
    height: 36%;
    transform: translate(-50%, -50%);
    border-radius: 50%;
    border: 2px solid var(--ring, var(--status-info));
    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.45);
}

.link-hint-eq[b-mbl77isdvo] { color: var(--text-secondary); }

.link-hint-meta[b-mbl77isdvo] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    flex: 1 1 120px;
    min-width: 0;
    font-size: 0.85rem;
    color: var(--text-heading);
}

.link-hint-actions[b-mbl77isdvo] {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 6px;
    margin-left: auto;
}

.link-hint-actions .btn-primary[b-mbl77isdvo],
.link-hint-actions .btn-secondary[b-mbl77isdvo] {
    width: auto;
    margin-bottom: 0;
    padding: 6px 14px;
    font-size: 0.9rem;
    min-height: 36px;
}

/* On the 3D page the list must not push the stage away. */
.link-hint-list[b-mbl77isdvo] {
    max-height: 45vh;
    overflow-y: auto;
}
/* /Components/Shared/JobProgressList.razor.rz.scp.css */
.jobs-toolbar[b-hbo45er2el] { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.4rem 1rem; margin-bottom: 0.6rem; }
.jobs-toggle[b-hbo45er2el] { display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.9rem; }
.jobs-list[b-hbo45er2el] { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.5rem; }
.job[b-hbo45er2el] { padding: 0.6rem 0.75rem; border: 1px solid var(--border); border-radius: var(--r-md); background: var(--bg-surface); min-width: 0; }
.job-running[b-hbo45er2el] { border-left: 4px solid var(--status-info); }
.job-queued[b-hbo45er2el] { border-left: 4px solid var(--status-warning); }
.job-failed[b-hbo45er2el] { border-left: 4px solid var(--status-danger); }
.job-succeeded[b-hbo45er2el], .job-skipped[b-hbo45er2el], .job-cancelled[b-hbo45er2el] { opacity: 0.85; }
.job-head[b-hbo45er2el] { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.3rem 0.5rem; }
.job-kind[b-hbo45er2el] { font-weight: 600; color: var(--text-heading); }
.job-state[b-hbo45er2el], .job-stage[b-hbo45er2el], .job-wall[b-hbo45er2el] { font-size: 0.75rem; padding: 0.05rem 0.45rem; border-radius: var(--r-pill); background: var(--bg-surface-alt); border: 1px solid var(--border-light); }
.job-wall[b-hbo45er2el] { color: var(--text-secondary); }
.job-detail[b-hbo45er2el] { margin-top: 0.2rem; font-size: 0.9rem; overflow-wrap: anywhere; }
.job-progress[b-hbo45er2el] { width: 100%; height: 8px; margin: 6px 0 2px; accent-color: var(--accent); }
.job-meta[b-hbo45er2el] { font-size: 0.8rem; overflow-wrap: anywhere; }
.job-error[b-hbo45er2el] { margin-top: 0.3rem; font-size: 0.85rem; color: var(--danger-text); overflow-wrap: anywhere; }
.job-paused[b-hbo45er2el] { color: var(--warning-text); background: var(--warning-bg); }
/* /Components/Shared/LookOver/LookOverBoulders.razor.rz.scp.css */
/* "Used by 7 boulders": one line, the names behind a tap. */
.lookover-used[b-69lqcfkcv6] { font-size: 0.9rem; color: var(--text-secondary); }
.lookover-used a[b-69lqcfkcv6] { color: var(--accent); font-weight: 600; text-decoration: none; }
.lookover-used a:hover[b-69lqcfkcv6] { text-decoration: underline; }
.lookover-used-toggle[b-69lqcfkcv6] { width: auto; min-height: 32px; margin: 0; padding: 2px 0; font-size: inherit; }
.lookover-boulders[b-69lqcfkcv6] { display: flex; flex-wrap: wrap; gap: 4px 12px; margin: 2px 0 0; }
/* /Components/Shared/LookOver/LookOverMissing.razor.rz.scp.css */
/* The deck's card for a hold the update could not find: the old hold small at the top, as part of the card, and the
   wall as it is now in all the height that is left (the photo's box is capped to that height, so it never pushes the
   answers off the screen). */
.deck-missing[b-kb2hc4ni6q] { display: flex; flex-direction: column; gap: 8px; }
.deck-was[b-kb2hc4ni6q] { display: grid; grid-template-columns: 84px minmax(0, 1fr); gap: 10px; align-items: start; }
.deck-was[b-kb2hc4ni6q]  figcaption { display: none; }
.deck-was .deck-detail[b-kb2hc4ni6q] { margin: 2px 0 0; }
.deck-tap-hint[b-kb2hc4ni6q] { margin: 0; font-size: 0.8rem; }
.deck-wall[b-kb2hc4ni6q] { flex: 1 1 220px; min-height: 220px; container-type: size; }
.deck-wall[b-kb2hc4ni6q]  .panel-step-view { margin: 0; }
.deck-wall[b-kb2hc4ni6q]  .panel-step-viewport { --panel-step-max-h: calc(100cqh - 36px); }

.lookover-ask[b-kb2hc4ni6q] { display: grid; gap: 8px; flex: 1 1 100%; padding: 10px; border: 1px solid var(--accent); border-radius: var(--r-md); background: var(--bg-surface-alt); }
.lookover-ask > p[b-kb2hc4ni6q] { margin: 0; font-size: 0.85rem; line-height: 1.4; }
.lookover-ask-row[b-kb2hc4ni6q] { display: flex; align-items: flex-start; gap: 8px; }
.lookover-ask-row[b-kb2hc4ni6q]  .lookover-picture { flex: 0 0 76px; }
.lookover-ask-buttons[b-kb2hc4ni6q] { flex: 1 1 auto; display: grid; gap: 6px; min-width: 0; }
.lookover-ask-buttons > button[b-kb2hc4ni6q] { width: 100%; margin: 0; min-height: 40px; padding: 8px 10px; font-size: 0.95rem; }

/* Wide screens: the old hold and its words on the left, the wall beside them in the card's whole height. */
@media (min-width: 900px) {
    .deck-missing[b-kb2hc4ni6q] { display: grid; grid-template-columns: 260px minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr); gap: 8px 16px; }
    .deck-was[b-kb2hc4ni6q] { grid-column: 1; grid-template-columns: minmax(0, 1fr); }
    .deck-was[b-kb2hc4ni6q]  .lookover-picture { max-width: 160px; }
    .deck-tap-hint[b-kb2hc4ni6q] { grid-column: 1; }
    .deck-wall[b-kb2hc4ni6q] { grid-column: 2; grid-row: 1 / span 2; min-height: 0; }
    .lookover-ask-row[b-kb2hc4ni6q]  .lookover-picture { flex-basis: 110px; }
    .lookover-ask-buttons[b-kb2hc4ni6q] { display: flex; flex-wrap: wrap; align-items: center; }
    .lookover-ask-buttons > button[b-kb2hc4ni6q] { width: auto; }
}
/* /Components/Shared/LookOver/LookOverPictureView.razor.rz.scp.css */
/* One look-over picture: the outlines lie exactly over the square picture, whatever the tile's width. */
.lookover-picture[b-1zjcy80pwb] { margin: 0; min-width: 0; }
.lookover-picture-frame[b-1zjcy80pwb] { position: relative; overflow: hidden; aspect-ratio: 1; border-radius: var(--r-md); background: var(--bg-surface-alt); }
.lookover-picture-frame > img[b-1zjcy80pwb] { display: block; width: 100%; height: 100%; object-fit: cover; }
.lookover-outlines[b-1zjcy80pwb] { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
figcaption[b-1zjcy80pwb] { font-size: 0.75rem; color: var(--text-secondary); text-align: center; }
/* /Components/Shared/LookOver/LookOverSpotView.razor.rz.scp.css */
/* A spot of the panel photo, cut out by the browser: the photo is scaled inside the square frame and shifted by its
   own size so that the spot is in the middle. */
.lookover-picture[b-awchx2vnzi] { margin: 0; min-width: 0; }
.lookover-picture-frame[b-awchx2vnzi] { position: relative; overflow: hidden; aspect-ratio: 1; border-radius: var(--r-md); background: var(--bg-surface-alt); }
.lookover-spot-photo[b-awchx2vnzi] { position: absolute; left: 50%; top: 50%; }
.lookover-spot-photo > img[b-awchx2vnzi] { display: block; width: 100%; }
.lookover-outlines[b-awchx2vnzi] { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
figcaption[b-awchx2vnzi] { font-size: 0.75rem; color: var(--text-secondary); text-align: center; }
/* /Components/Shared/LookOver/WallLookOverBanner.razor.rz.scp.css */
/* The box, text and button come from the shared .panel-link-callout; the way in is a link, which must not look underlined. */
.lookover-banner[b-lmjib6mgi9] { margin: 0 0 12px; }
.lookover-banner a.btn-secondary[b-lmjib6mgi9] { text-decoration: none; }
/* /Components/Shared/Modal.razor.rz.scp.css */
/* The panel is programmatically focused (tabindex="-1") so the focus trap can land on it; suppress the
   container's focus ring while leaving the real controls inside it to show their own. Visual styling of
   the backdrop and panel comes from the global .bw-modal-backdrop / .bw-modal rules, so the migrated
   modals keep looking exactly as they did. */
.bw-modal:focus[b-yc4rxfh59b] {
    outline: none;
}
/* /Components/Shared/PanelCropTool.razor.rz.scp.css */
/* The photo sits centred and as large as the dialog allows; the stage hugs the image so the box's percentages
   are fractions of the photo itself. */
.panel-crop-body[b-himeoa1j0h] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
}

.panel-crop-footer[b-himeoa1j0h] {
    flex: 0 0 auto;
    margin-top: 0;
    flex-wrap: wrap;
    justify-content: flex-end;
}

.panel-crop-body > *[b-himeoa1j0h] {
    flex-shrink: 0;
}

.panel-crop-frame[b-himeoa1j0h] {
    display: flex;
    justify-content: center;
    background: var(--bg-surface-alt);
    border-radius: 10px;
    padding: 8px;
}

.panel-crop-stage[b-himeoa1j0h] {
    position: relative;
    display: inline-block;
    overflow: hidden;
    touch-action: none;
    user-select: none;
    -webkit-user-select: none;
    line-height: 0;
}

/* Sized against the dynamic viewport so title, hint, status and buttons always fit beside it. */
.panel-crop-stage img[b-himeoa1j0h] {
    display: block;
    max-width: 100%;
    max-height: max(96px, min(640px, calc(100dvh - 300px)));
    pointer-events: none;
}

/* While a confirmation is open the photo steps back so the question and its buttons fit without scrolling. */
.panel-crop-frame.confirming .panel-crop-stage img[b-himeoa1j0h] {
    max-height: max(72px, calc(100dvh - 520px));
}

.panel-crop-holds[b-himeoa1j0h] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
}

.panel-crop-holds circle[b-himeoa1j0h] {
    stroke-width: 0.35;
    vector-effect: non-scaling-stroke;
}

.panel-crop-holds circle.kept[b-himeoa1j0h] {
    fill: rgba(255, 255, 255, 0.15);
    stroke: rgba(255, 255, 255, 0.85);
}

.panel-crop-holds circle.cut[b-himeoa1j0h] {
    fill: rgba(229, 57, 53, 0.45);
    stroke: #ff5252;
    stroke-width: 2;
}

/* Everything outside the box is dimmed by the box's own giant shadow: the live preview of what remains. */
.panel-crop-box[b-himeoa1j0h] {
    position: absolute;
    box-sizing: border-box;
    border: 2px solid #fff;
    box-shadow: 0 0 0 9999px rgba(0, 0, 0, 0.55);
    outline: 1px solid rgba(0, 0, 0, 0.4);
}

.panel-crop-move[b-himeoa1j0h] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background: transparent;
    border: 0;
    cursor: move;
    padding: 0;
}

.panel-crop-handle[b-himeoa1j0h] {
    position: absolute;
    width: 28px;
    height: 28px;
    margin: -14px 0 0 -14px;
    padding: 0;
    border: 0;
    background: transparent;
    touch-action: none;
}

/* The visible knob is smaller than the touch target. */
.panel-crop-handle[b-himeoa1j0h]::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    width: 14px;
    height: 14px;
    transform: translate(-50%, -50%);
    background: #fff;
    border: 2px solid var(--accent);
    border-radius: 50%;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.5);
}

.panel-crop-handle:focus-visible[b-himeoa1j0h]::after,
.panel-crop-move:focus-visible[b-himeoa1j0h] {
    outline: 3px solid var(--accent);
    outline-offset: 2px;
}

.h-l[b-himeoa1j0h] { left: 0; top: 50%; cursor: ew-resize; }
.h-r[b-himeoa1j0h] { left: 100%; top: 50%; cursor: ew-resize; }
.h-t[b-himeoa1j0h] { left: 50%; top: 0; cursor: ns-resize; }
.h-b[b-himeoa1j0h] { left: 50%; top: 100%; cursor: ns-resize; }
.h-tl[b-himeoa1j0h] { left: 0; top: 0; cursor: nwse-resize; }
.h-br[b-himeoa1j0h] { left: 100%; top: 100%; cursor: nwse-resize; }
.h-tr[b-himeoa1j0h] { left: 100%; top: 0; cursor: nesw-resize; }
.h-bl[b-himeoa1j0h] { left: 0; top: 100%; cursor: nesw-resize; }

.panel-crop-hint[b-himeoa1j0h] {
    margin: 0;
    font-size: 0.85rem;
    color: var(--text-secondary);
}

.panel-crop-status[b-himeoa1j0h] {
    margin: 0;
    font-size: 0.85rem;
    font-variant-numeric: tabular-nums;
    color: var(--text);
}

.panel-crop-cut[b-himeoa1j0h],
.panel-crop-error[b-himeoa1j0h],
.panel-crop-warning[b-himeoa1j0h] {
    color: var(--danger-text);
    font-weight: 600;
}

.panel-crop-error[b-himeoa1j0h],
.panel-crop-warning[b-himeoa1j0h] {
    margin: 0;
}

.panel-crop-confirm[b-himeoa1j0h] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 12px;
    border-radius: 10px;
    background: var(--danger-bg);
}

.panel-crop-boulders[b-himeoa1j0h] {
    margin: 0;
    padding-left: 18px;
    max-height: 22dvh;
    overflow-y: auto;
    font-size: 0.9rem;
}

.panel-crop-tag[b-himeoa1j0h] {
    margin-left: 6px;
    font-size: 0.75rem;
    color: var(--text-secondary);
}


/* Landscape phone: the hint goes (the handles speak for themselves) so the photo gets the height that is left. */
@media (max-height: 500px) {
    .panel-crop-body > .panel-crop-hint:first-child[b-himeoa1j0h] {
        display: none;
    }

    .panel-crop-stage img[b-himeoa1j0h] {
        max-height: max(96px, calc(100dvh - 190px));
    }

    .panel-crop-frame.confirming .panel-crop-stage img[b-himeoa1j0h] {
        max-height: max(60px, calc(100dvh - 330px));
    }
}
/* /Components/Shared/Redetect/RedetectReview.razor.rz.scp.css */
/* The re-detect review fills its dialog: two short sentences, the bulk step and the chips on top, the card deck in
   the middle (the only part that may scroll), and the count with the two closing buttons at the bottom within reach
   of the thumb. The chosen answer is filled with the accent and carries a tick; the other one stays an outline. */
.redetect-review[b-czuf569sjg] { display: flex; flex-direction: column; gap: 8px; height: min(88dvh, 900px); min-height: 0; }
.redetect-intro[b-czuf569sjg] { flex: none; margin: 0; font-size: 0.95rem; line-height: 1.35; color: var(--text-heading); }
.redetect-left-out[b-czuf569sjg] { flex: none; font-size: 0.8rem; color: var(--text-secondary); }
.redetect-left-out > summary[b-czuf569sjg] { cursor: pointer; }
.redetect-left-out > p[b-czuf569sjg] { margin: 4px 0 0; }
.redetect-bulk[b-czuf569sjg] { flex: none; display: flex; flex-wrap: wrap; gap: 8px; }
.redetect-bulk > button[b-czuf569sjg] { flex: 1 1 200px; min-height: 44px; margin: 0; padding: 10px 14px; font-size: 0.95rem; }
.redetect-filters[b-czuf569sjg] { flex: none; display: flex; justify-content: flex-start; gap: 6px; overflow-x: auto; padding-bottom: 2px; scrollbar-width: thin; scroll-snap-type: x proximity; }
.redetect-chip[b-czuf569sjg] { flex: none; scroll-snap-align: start; min-height: 36px; padding: 4px 12px; border: 1.5px solid var(--border-light); border-radius: var(--r-pill); background: var(--bg-surface); color: var(--text-heading); font-size: 0.85rem; font-weight: 600; cursor: pointer; }
.redetect-chip > span[b-czuf569sjg] { margin-left: 4px; font-weight: 400; color: var(--text-secondary); }
.redetect-chip.is-on[b-czuf569sjg] { border-color: var(--accent); background: var(--accent); color: var(--on-accent); }
.redetect-chip.is-on > span[b-czuf569sjg] { color: var(--on-accent); }
.redetect-review[b-czuf569sjg]  .redetect-answer { justify-self: start; width: fit-content; padding: 2px 10px; border-radius: var(--r-pill); font-size: 0.8rem; font-weight: 700; white-space: nowrap; }
.redetect-review[b-czuf569sjg]  .redetect-answer.is-open { border: 1.5px dashed var(--border-light); color: var(--text-secondary); font-weight: 600; }
.redetect-review[b-czuf569sjg]  .redetect-answer.is-kept { background: var(--text-heading); color: var(--bg-surface); }
.redetect-review[b-czuf569sjg]  .redetect-answer.is-accepted { background: var(--accent); color: var(--on-accent); }
.redetect-review[b-czuf569sjg]  .redetect-unsure { margin: 0; padding: 8px 10px; border-left: 4px solid var(--status-warning); border-radius: var(--r-sm); background: var(--bg-surface-alt); color: var(--text-heading); font-size: 0.9rem; line-height: 1.35; }
.redetect-review[b-czuf569sjg]  .redetect-earlier { margin: 0; padding: 6px 10px; border-left: 4px solid var(--status-info, var(--border-light)); border-radius: var(--r-sm); background: var(--bg-surface-alt); color: var(--text-heading); font-size: 0.85rem; }
.redetect-review[b-czuf569sjg]  .redetect-choice { border-width: 2px; }
.redetect-review[b-czuf569sjg]  .redetect-choice.is-chosen { border-color: var(--accent); background: var(--accent); color: var(--on-accent); }
.redetect-review[b-czuf569sjg]  .redetect-choice.is-chosen::before { content: "\2713\00a0"; }
.redetect-review[b-czuf569sjg]  .redetect-picture { margin: 0; min-width: 0; }
.redetect-review[b-czuf569sjg]  .redetect-picture > svg { display: block; width: 100%; aspect-ratio: 1; border-radius: var(--r-md); background: var(--bg-surface-alt); }
.redetect-review[b-czuf569sjg]  .redetect-picture > figcaption { font-size: 0.75rem; color: var(--text-secondary); text-align: center; }
.redetect-finish[b-czuf569sjg] { flex: none; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.redetect-progress[b-czuf569sjg] { flex: 1 1 100%; display: flex; align-items: center; gap: 8px; font-size: 0.85rem; color: var(--text-heading); }
.redetect-progress > progress[b-czuf569sjg] { flex: 1 1 auto; height: 8px; accent-color: var(--accent); }
.redetect-finish > button[b-czuf569sjg] { flex: 1 1 0; min-height: 44px; margin: 0; }
.redetect-narrow[b-czuf569sjg] { display: none; }
/* On a phone the count and the closing buttons each take one line. */
@media (max-width: 520px) {
    .redetect-wide[b-czuf569sjg] { display: none; }
    .redetect-narrow[b-czuf569sjg] { display: inline; }
    .redetect-progress[b-czuf569sjg] { flex-wrap: nowrap; white-space: nowrap; }
}
/* /Components/Shared/Refresh/UpdateSteps.razor.rz.scp.css */
/* The update's header: back, the four steps, and the page's own buttons, in one row that fits a phone. */
.update-steps[b-e7notrw4pi] { display: flex; align-items: center; gap: 6px; min-height: 40px; }
.update-steps-back[b-e7notrw4pi] {
    flex: none; display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: var(--r-md);
    color: var(--text); text-decoration: none; font-size: 1.1rem;
}
.update-steps-back:focus-visible[b-e7notrw4pi] { outline: 2px solid var(--accent); outline-offset: 2px; }
ol[b-e7notrw4pi] { flex: 1 1 auto; min-width: 0; display: flex; align-items: center; gap: 4px; margin: 0; padding: 0; list-style: none; font-size: 0.78rem; white-space: nowrap; }
li[b-e7notrw4pi] { display: flex; align-items: center; gap: 4px; color: var(--text-secondary); }
li + li[b-e7notrw4pi]::before { content: "›"; opacity: 0.6; }
li > a[b-e7notrw4pi], li > span[b-e7notrw4pi] { padding: 4px 6px; border-radius: 999px; color: inherit; text-decoration: none; }
li > a:hover[b-e7notrw4pi] { text-decoration: underline; }
li.is-done > a[b-e7notrw4pi]::before, li.is-done > span[b-e7notrw4pi]::before { content: "✓ "; color: var(--step-done, var(--accent)); }
li.is-current > span[b-e7notrw4pi] { background: var(--accent); color: var(--on-accent); font-weight: 600; padding: 4px 10px; }

/* A phone has no room for the ticks: a step that is done is in the text colour, one to come is dimmed. */
@media (max-width: 480px) {
    .update-steps[b-e7notrw4pi] { gap: 4px; }
    .update-steps-back[b-e7notrw4pi] { width: 28px; }
    ol[b-e7notrw4pi] { font-size: 0.72rem; gap: 2px; }
    li[b-e7notrw4pi] { gap: 2px; opacity: 0.6; }
    li.is-done[b-e7notrw4pi], li.is-current[b-e7notrw4pi] { opacity: 1; }
    li.is-done[b-e7notrw4pi] { color: var(--text); }
    li.is-done > a[b-e7notrw4pi]::before, li.is-done > span[b-e7notrw4pi]::before { content: none; }
    li > a[b-e7notrw4pi], li > span[b-e7notrw4pi] { padding: 4px 2px; }
    li.is-current > span[b-e7notrw4pi] { padding: 4px 8px; }
    .is-compact li:not(.is-current)[b-e7notrw4pi] { display: none; }
    .is-compact li.is-current[b-e7notrw4pi]::before { content: none; }
}
/* /Components/Shared/RelocationSuggestions.razor.rz.scp.css */
/* "Possibly moved" list in the carryover review. Phone-first: each row wraps to thumbnails on one line,
   meta on the next, buttons on the last; from ~560px they sit side by side. Colours come from the shared
   status tokens so the list follows the theme like the attention banner above it. */
.relocate[b-srwvvr9fvo] {
    margin: 0 0 10px;
    padding: 10px 12px;
    border-radius: var(--r-sm);
    border: 1px solid var(--status-info);
    background: color-mix(in srgb, var(--status-info) 8%, var(--bg-surface));
}

.relocate-head[b-srwvvr9fvo] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-bottom: 8px;
    color: var(--text-heading);
}

.relocate-list[b-srwvvr9fvo] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.relocate-row[b-srwvvr9fvo] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 10px;
    padding: 6px 8px;
    border-radius: var(--r-sm);
    border: 1px solid var(--border);
    background: var(--bg-surface);
}

.relocate-row.accepted[b-srwvvr9fvo] { border-color: var(--attention-text); }
.relocate-row.accepted.same[b-srwvvr9fvo] { border-color: var(--status-success); }
.relocate-row.dismissed[b-srwvvr9fvo] { opacity: 0.6; }

.relocate-pair[b-srwvvr9fvo] {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 0;
    border: 0;
    background: none;
    cursor: pointer;
    color: inherit;
}

.relocate-num[b-srwvvr9fvo] {
    min-width: 1.4em;
    font-weight: 700;
    color: var(--text-secondary);
}

.relocate-thumb[b-srwvvr9fvo] {
    position: relative;
    display: block;
    width: 56px;
    height: 56px;
    overflow: hidden;
    border-radius: var(--r-sm);
    background: var(--bg-surface-alt);
    flex: none;
}

.relocate-thumb img[b-srwvvr9fvo] {
    position: absolute;
    left: 50%;
    top: 50%;
    max-width: none;
    height: auto;
    pointer-events: none;
}

.relocate-ring[b-srwvvr9fvo] {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 36%;
    height: 36%;
    transform: translate(-50%, -50%);
    border-radius: 50%;
    border: 2px solid var(--ring, var(--status-info));
    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.45);
}

.relocate-arrow[b-srwvvr9fvo] { color: var(--text-secondary); }

.relocate-meta[b-srwvvr9fvo] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    flex: 1 1 120px;
    min-width: 0;
    font-size: 0.85rem;
}

.relocate-label[b-srwvvr9fvo] { font-weight: 600; color: var(--text-heading); }
.relocate-score[b-srwvvr9fvo] { color: var(--text-secondary); }

.relocate-tag[b-srwvvr9fvo] {
    display: inline-block;
    margin-left: 4px;
    padding: 0 6px;
    border-radius: 999px;
    font-size: 0.75rem;
    border: 1px solid var(--border);
}

.relocate-tag.low[b-srwvvr9fvo] { border-color: var(--status-warning); color: var(--attention-text); }

.relocate-actions[b-srwvvr9fvo] {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    align-items: center;
    gap: 6px;
    margin-left: auto;
}

.relocate-actions .btn-primary[b-srwvvr9fvo],
.relocate-actions .btn-secondary[b-srwvvr9fvo] {
    width: auto;
    margin-bottom: 0;
    padding: 6px 14px;
    font-size: 0.9rem;
    min-height: 36px;
}

.relocate-state[b-srwvvr9fvo] { font-size: 0.8rem; font-weight: 600; color: var(--text-secondary); }
/* /Components/Shared/RunnerOverviewList.razor.rz.scp.css */
.runner-list[b-xgmehsk3cg] { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.5rem; }
.runner[b-xgmehsk3cg] { padding: 0.6rem 0.75rem; border: 1px solid var(--border); border-radius: var(--r-md); background: var(--bg-surface); min-width: 0; }
.runner-online[b-xgmehsk3cg] { border-left: 4px solid var(--status-success); }
.runner-paused[b-xgmehsk3cg] { border-left: 4px solid var(--status-warning); }
.runner-offline[b-xgmehsk3cg] { border-left: 4px solid var(--border); }
.runner-revoked[b-xgmehsk3cg] { border-left: 4px solid var(--status-danger); opacity: 0.75; }
.runner-head[b-xgmehsk3cg] { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.3rem 0.5rem; }
.runner-name[b-xgmehsk3cg] { font-weight: 600; color: var(--text-heading); overflow-wrap: anywhere; }
.runner-chip[b-xgmehsk3cg] { font-size: 0.75rem; padding: 0.05rem 0.45rem; border-radius: var(--r-pill); background: var(--bg-surface-alt); border: 1px solid var(--border-light); }
.runner-meta[b-xgmehsk3cg] { font-size: 0.8rem; overflow-wrap: anywhere; }
.runner-doing[b-xgmehsk3cg] { margin-top: 0.3rem; font-size: 0.9rem; overflow-wrap: anywhere; }
.runner-error[b-xgmehsk3cg] { margin-top: 0.3rem; font-size: 0.85rem; color: var(--danger-text); overflow-wrap: anywhere; }
.runner-actions[b-xgmehsk3cg] { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-top: 0.5rem; }
.job-progress[b-xgmehsk3cg] { width: 100%; height: 8px; margin: 6px 0 2px; accent-color: var(--accent); }
/* /Components/Shared/SignedAngleInput.razor.rz.scp.css */
.signed-angle-compact[b-61qm44tbdw] { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.signed-angle-dir[b-61qm44tbdw] { width: auto; min-width: 0; padding-right: 24px; }
.signed-angle-size[b-61qm44tbdw] { width: 5em; }
/* /Components/Shared/Wall3DCorrectionBar.razor.rz.scp.css */
.wall3d-correct[b-n3x9lknx91] { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; padding: 6px 12px; border-top: 1px solid var(--border); }
.wall3d-correct-prompt[b-n3x9lknx91] { font-weight: 600; }
.wall3d-correct-actions[b-n3x9lknx91] { display: flex; flex-wrap: wrap; gap: 6px 8px; }
.wall3d-correct-actions button[b-n3x9lknx91] { min-height: 44px; }
.wall3d-correct-message[b-n3x9lknx91] { flex: 1 1 100%; font-size: 0.85rem; color: var(--text-secondary); }
/* /Components/Shared/Wall3DInline.razor.rz.scp.css */
/* The inline 3D schematic takes the photo viewer's place: a tall box that still leaves the page
   scrollable around it (the canvas itself owns every gesture inside it). */
.wall3d-inline[b-3exl0jmp0y] {
    display: flex;
    flex-direction: column;
    border: 1px solid var(--border);
    border-radius: var(--r-md, 10px);
    overflow: hidden;
    background: var(--bg);
}

.wall3d-inline-stage[b-3exl0jmp0y] {
    display: flex;
    flex-direction: column;
    height: min(80dvh, 860px);
    min-height: 320px;
}

/* Phones in portrait: a wall is wider than it is tall, so the camera fits it to the width and a
   68dvh box left the lower half as empty floor. Keep the box a little taller than wide instead. */
@media (max-width: 600px) and (orientation: portrait) {
    .wall3d-inline-stage[b-3exl0jmp0y] { height: min(80dvh, 860px, max(320px, 115vw)); }
}

.wall3d-inline-message[b-3exl0jmp0y] {
    margin: 0;
    padding: 40px 16px;
    text-align: center;
    color: var(--text-secondary);
}

.wall3d-inline-foot[b-3exl0jmp0y] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 12px;
    padding: 8px 12px;
    border-top: 1px solid var(--border);
    font-size: 0.8rem;
    color: var(--text-secondary);
}

.wall3d-inline-legend[b-3exl0jmp0y] { display: inline-flex; flex-wrap: wrap; gap: 4px 10px; }
.wall3d-inline-legend span[b-3exl0jmp0y] { display: inline-flex; align-items: center; gap: 4px; }
.wall3d-inline-legend i[b-3exl0jmp0y] { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
/* /Components/Shared/Wall3DStage.razor.rz.scp.css */
/* Holds the host's place in the page while the host itself is portalled to <body> in full screen. */
.wall3d-stage-shell[b-liudagr1yn] {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    width: 100%;
    height: 100%;
    min-height: 0;
}

/* The positioning context for the full-screen button; fills the box the host page gives it. */
.wall3d-stage-host[b-liudagr1yn] {
    position: relative;
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    width: 100%;
    height: 100%;
    min-height: 0;
}

/* Full screen: the whole window, over the app chrome. */
.wall3d-stage-host.wall3d-fs[b-liudagr1yn] {
    position: fixed;
    inset: 0;
    z-index: 2147483000;
    width: 100vw;
    height: 100dvh;
    background: var(--bg, #fff);
}

/* The stage fills whatever box its host gives it (the full page, or the inline viewer). */
.wall3d-stage-el[b-liudagr1yn] {
    flex: 1 1 auto;
    width: 100%;
    height: 100%;
    min-height: 0;
}

.wall3d-stage-failed[b-liudagr1yn] {
    margin: 0;
    padding: 12px;
    font-size: 0.85rem;
    color: var(--text-secondary);
}

/* The round tools (the boulder focus lightbulb, the photo / 3D switch): a column on the right edge under
   the full-screen button (38px at the top right), above the camera presets and the hold card. */
.wall3d-stage-tools[b-liudagr1yn] {
    position: absolute;
    z-index: 3;
    top: 58px;
    right: 10px;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 8px;
}

/* In full screen, under the 56px close button. */
.wall3d-fs .wall3d-stage-tools[b-liudagr1yn] {
    top: calc(max(24px, env(safe-area-inset-top, 0px)) + 68px);
    right: max(24px, env(safe-area-inset-right, 0px));
}

.wall3d-stage-tools[b-liudagr1yn]  > .heat-tool { position: static; }
/* /Components/Shared/WallCaptureCoverage.razor.rz.scp.css */
.capture-coverage[b-cgczlbp0zh] { margin-top: 4px; }
.capture-coverage-prominent[b-cgczlbp0zh] {
    margin: 10px 0; padding: 8px 12px; border: 1px solid var(--border-light);
    border-radius: var(--r-md); background: var(--bg-surface-alt);
}
.capture-coverage-toggle[b-cgczlbp0zh] { min-height: 44px; font-weight: 600; text-align: left; }
.capture-coverage-advice[b-cgczlbp0zh] { margin: 4px 0 8px; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 6px; }
.capture-coverage-item[b-cgczlbp0zh] {
    padding: 10px 12px; min-height: 44px; display: flex; align-items: center;
    border: 1px solid var(--border-light); border-left-width: 4px; border-radius: var(--r-sm);
    background: var(--bg-surface); font-size: 0.9rem; line-height: 1.35;
}
.capture-coverage-volume[b-cgczlbp0zh] { border-left-color: var(--status-danger, #d0463b); }
.capture-coverage-surface[b-cgczlbp0zh] { border-left-color: var(--status-warning, #d9a400); }
.capture-coverage-markers[b-cgczlbp0zh] { border-left-color: var(--accent); }
.capture-coverage-video[b-cgczlbp0zh] { border-left-color: var(--status-info, #3a7bd5); }
.capture-coverage-maps[b-cgczlbp0zh] { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 10px; margin: 6px 0; }
.capture-coverage-legend[b-cgczlbp0zh] { display: flex; flex-wrap: wrap; gap: 4px 12px; font-size: 0.78rem; }
.capture-coverage-legend span[b-cgczlbp0zh] { display: inline-flex; align-items: center; gap: 4px; }
.cov-swatch[b-cgczlbp0zh] { display: inline-block; width: 10px; height: 10px; border-radius: 2px; }
.cov-swatch-n[b-cgczlbp0zh] { background: var(--status-danger, #d0463b); }
.cov-swatch-d[b-cgczlbp0zh] { background: var(--status-warning, #d9a400); }
.cov-swatch-a[b-cgczlbp0zh] { background: var(--status-review, #d97a00); }
.cov-swatch-r[b-cgczlbp0zh] { background: var(--status-info, #3a7bd5); }
.cov-swatch-g[b-cgczlbp0zh] { background: var(--status-success, #3a9d5d); opacity: 0.45; }
.cov-swatch-hidden[b-cgczlbp0zh] { background: var(--text-secondary); opacity: 0.15; border: 1px dashed var(--text-secondary); }
.cov-swatch-ring[b-cgczlbp0zh] { border: 2px solid var(--accent); border-radius: 50%; }

@media (max-width: 560px) {
    .capture-coverage-toggle[b-cgczlbp0zh] { width: 100%; }
    .capture-coverage-maps[b-cgczlbp0zh] { grid-template-columns: 1fr; }
    .capture-coverage-prominent[b-cgczlbp0zh] { padding: 6px 10px; }
}
/* /Components/Shared/WallCaptureDeclarationTable.razor.rz.scp.css */
.capture-decl-warning-row td[b-g3jcef1bv4] { padding-top: 0; border-top: none; }
.capture-decl-warning[b-g3jcef1bv4] {
    margin: 0; padding: 4px 8px; font-size: 0.8rem; border-radius: var(--r-sm, 4px);
    background: var(--warning-bg); color: var(--warning-text);
}
/* /Components/Shared/WallCaptureGuidance.razor.rz.scp.css */
.capture-guidance[b-w1dc105o9y] { margin: 8px 0; padding: 8px 12px; border-left: 3px solid var(--accent, var(--border)); background: var(--surface-muted, transparent); }
.capture-guidance-title[b-w1dc105o9y] { margin: 0 0 4px; font-weight: 600; }
.capture-guidance ul[b-w1dc105o9y] { margin: 0; padding-left: 1.2em; }
.capture-guidance li[b-w1dc105o9y] { margin: 2px 0; font-size: 0.9rem; }
/* /Components/Shared/WallCapturePanel.razor.rz.scp.css */
.capture-panel[b-pgjiweqe14] { margin-top: 12px; }
.capture-upload[b-pgjiweqe14] { display: flex; flex-direction: column; gap: 6px; }
[b-pgjiweqe14] .capture-warn { font-size: 0.78rem; color: var(--warning-text, var(--text-secondary)); }
[b-pgjiweqe14] .capture-photo-name { max-width: 14em; overflow-wrap: anywhere; }
[b-pgjiweqe14] .capture-declarations .checkbox-label { display: flex; gap: 6px; margin: 0; font-size: 0.85rem; }

/* Phone width: each marker segment becomes a small card (range, then the name full width, then angle
   and the vertical tick side by side) instead of a four-column table that scrolls sideways. */
@media (max-width: 560px) {
    [b-pgjiweqe14] .capture-declarations { min-width: 0; }
    [b-pgjiweqe14] .capture-declarations thead { display: none; }
    [b-pgjiweqe14] .capture-declarations tr {
        display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px;
        padding: 8px 0; border-bottom: 1px solid var(--border-light);
    }
    [b-pgjiweqe14] .capture-declarations td { display: block; padding: 0; border: 0; text-align: left; }
    [b-pgjiweqe14] .capture-declarations td.capture-decl-markers { flex: 1 1 100%; font-weight: 600; }
    [b-pgjiweqe14] .capture-declarations td.capture-decl-markers::before { content: "Markers "; font-weight: 400; color: var(--text-secondary); }
    [b-pgjiweqe14] .capture-declarations td.capture-decl-name { flex: 1 1 100%; }
    [b-pgjiweqe14] .capture-declarations td.capture-decl-name .form-input { width: 100%; }
    [b-pgjiweqe14] .capture-declarations td.capture-decl-angle { display: flex; align-items: center; gap: 6px; }
    [b-pgjiweqe14] .capture-declarations td.capture-decl-angle::before { content: "Angle (°)"; font-size: 0.85rem; color: var(--text-secondary); }
}
/* /Components/Shared/WallCapturePlacementCheck.razor.rz.scp.css */
.capture-placement[b-hrywsxi7am] { margin-top: 4px; }
.capture-placement-head[b-hrywsxi7am] { font-size: 0.85rem; font-weight: 600; color: var(--warning-text, var(--text)); }
.capture-placement-list[b-hrywsxi7am] { margin: 2px 0 0; padding-left: 1.2em; font-size: 0.8rem; }
/* /Components/Shared/WallCaptureStatusList.razor.rz.scp.css */
.capture-running[b-ke7lxueih4] {
    margin: 10px 0; padding: 10px 12px; border: 1px solid var(--border-light);
    border-radius: var(--r-md); background: var(--bg-surface-alt);
}
.capture-running-head[b-ke7lxueih4] { display: flex; justify-content: space-between; gap: 8px; font-size: 0.9rem; }
.capture-progress[b-ke7lxueih4] { width: 100%; height: 8px; margin: 6px 0 4px; accent-color: var(--top-hold, currentColor); }
.capture-error[b-ke7lxueih4] { font-size: 0.8rem; color: var(--danger-text, var(--text)); margin-top: 2px; }
.capture-failed[b-ke7lxueih4] { font-weight: 600; color: var(--danger-text, var(--text)); }
.capture-pending[b-ke7lxueih4] { font-weight: 600; color: var(--text-secondary); }
.capture-history[b-ke7lxueih4] { margin-top: 10px; }
.capture-photos-row td[b-ke7lxueih4] { background: var(--bg-surface-alt); }
.capture-follow-up[b-ke7lxueih4] { font-size: 0.85rem; margin-top: 2px; }
/* /Components/Shared/WallGeometryCorrections.razor.rz.scp.css */
.geometry-correction[b-h3ibtwru4j] { margin: 6px 0; }
.geometry-correction-toggle[b-h3ibtwru4j] { min-height: 44px; font-weight: 600; }
.geometry-surfaces[b-h3ibtwru4j] { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }

/* A card per surface: its name on one line, the actions below (wrapping on a phone). */
.geometry-surface[b-h3ibtwru4j] { display: flex; flex-direction: column; gap: 6px; padding: 8px 10px; border: 1px solid var(--border-light, var(--border)); border-radius: 8px; }
.geometry-surface-name[b-h3ibtwru4j] { font-weight: 600; }
.geometry-surface-actions[b-h3ibtwru4j] { display: flex; flex-wrap: wrap; gap: 6px 8px; }
.geometry-surface-actions button[b-h3ibtwru4j] { min-height: 44px; }
/* /Components/Shared/WallGeometryModelCheckList.razor.rz.scp.css */
.model-checks[b-63nk2o9nk4] { margin-top: 4px; }
.model-checks-head[b-63nk2o9nk4] { font-size: 0.85rem; font-weight: 600; }
.model-checks-count[b-63nk2o9nk4] { font-weight: 400; color: var(--warning-text, var(--text-secondary)); }
.model-checks-list[b-63nk2o9nk4] { margin: 2px 0 0; padding-left: 1.2em; font-size: 0.8rem; overflow-wrap: anywhere; }
.model-checks-list li[b-63nk2o9nk4] { margin: 1px 0; }
.model-check-info[b-63nk2o9nk4] { color: var(--text-secondary, var(--text)); }
.model-check-warning[b-63nk2o9nk4] { color: var(--warning-text, var(--text)); }
/* /Components/Shared/WallGeometrySources.razor.rz.scp.css */
.geometry-sources[b-y3w6tey87d] { margin: 8px 0 12px; padding: 8px 12px; border: 1px solid var(--border); border-radius: 8px; }
.geometry-source[b-y3w6tey87d] { margin: 2px 0; display: flex; flex-wrap: wrap; align-items: center; gap: 0 6px; }
.geometry-source-label[b-y3w6tey87d] { font-weight: 600; }
.geometry-source-action[b-y3w6tey87d] { min-height: 44px; padding: 0 4px; }
/* /Components/Shared/WallScaleTapPicker.razor.rz.scp.css */
.scale-tap[b-u4n2135hyy] { display: flex; flex-direction: column; gap: 8px; }
.scale-tap-frame[b-u4n2135hyy] { max-width: 100%; overflow: auto; border: 1px solid var(--border); border-radius: 6px; max-height: 70vh; }
.scale-tap-image[b-u4n2135hyy] { position: relative; width: 100%; cursor: crosshair; touch-action: manipulation; }
.scale-tap-zoomed .scale-tap-image[b-u4n2135hyy] { width: 300%; }
.scale-tap-image img[b-u4n2135hyy] { display: block; width: 100%; height: auto; user-select: none; -webkit-user-select: none; }
.scale-tap-image svg[b-u4n2135hyy] { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.scale-tap-image circle[b-u4n2135hyy] { fill: rgba(255, 196, 0, 0.35); stroke: #ffc400; }
.scale-tap-image line[b-u4n2135hyy] { stroke: #ffc400; }
.scale-tap-row[b-u4n2135hyy] { display: flex; flex-wrap: wrap; align-items: end; gap: 8px 12px; }
.scale-tap-row .btn-secondary[b-u4n2135hyy] { min-height: 44px; }
.scale-tap-mm[b-u4n2135hyy] { display: flex; flex-direction: column; gap: 4px; font-size: 0.85rem; }
.scale-tap-mm .form-input[b-u4n2135hyy] { min-height: 44px; width: 9em; }
.scale-tap .staged-actions button[b-u4n2135hyy] { min-height: 44px; }
