/* ==========================================================================
   Corio SES Cheat Sheet: new version styles.

   index.html enables this file only when Settings > "Use new version" is on,
   and disables app.css + field-workflow.css at the same time, so nothing here
   can change the original look.

   Crews use the app on iPhones and iPads, so it follows iOS conventions:
   system colours, grouped lists, hairline separators, a tab bar, sheets and
   alerts. SES orange is kept for the one action that matters on each screen.
   ========================================================================== */

:root {
    --font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    --font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
    --radius: 10px;
    --radius-group: 12px;
    --tap: 44px;
    --tabbar-h: 54px;
    --dock-h: 104px;
    --content-w: 760px;
    --safe-b: env(safe-area-inset-bottom, 0px);
}

:root,
html.light {
    color-scheme: light;
    --bg: #f2f2f7;
    --group: #ffffff;
    --elevated: #ffffff;
    --fill: rgba(118, 118, 128, 0.12);
    --fill-2: rgba(118, 118, 128, 0.22);
    --sep: rgba(60, 60, 67, 0.24);
    --label: #000000;
    --label-2: #6c6c70;
    --label-3: #a1a1a6;
    --accent: #ff671f;
    --accent-press: #ea5a14;
    --on-accent: #1c0b00;
    --tint: #c2410c;
    --green: #248a3d;
    --red: #d70015;
    --switch-on: #34c759;
    --bar: rgba(249, 249, 249, 0.94);
    --scrim: rgba(0, 0, 0, 0.35);
    --toast: rgba(30, 30, 32, 0.94);
    --check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c2410c' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
    --select-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23a1a1a6' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m7 15 5 5 5-5M7 9l5-5 5 5'/%3E%3C/svg%3E");
}

html.dark {
    color-scheme: dark;
    --bg: #000000;
    --group: #1c1c1e;
    --elevated: #2c2c2e;
    --fill: rgba(118, 118, 128, 0.24);
    --fill-2: rgba(118, 118, 128, 0.36);
    --sep: rgba(84, 84, 88, 0.65);
    --label: #ffffff;
    --label-2: #98989f;
    --label-3: #636366;
    --accent-press: #ff7d40;
    --tint: #ff8a4c;
    --green: #30d158;
    --red: #ff453a;
    --switch-on: #30d158;
    --bar: rgba(22, 22, 23, 0.94);
    --scrim: rgba(0, 0, 0, 0.55);
    --toast: rgba(58, 58, 60, 0.96);
    --check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ff8a4c' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
    --select-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23636366' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m7 15 5 5 5-5M7 9l5-5 5 5'/%3E%3C/svg%3E");
}

/* Shared pages still reference a few original variables in inline styles. */
:root,
html.light,
html.dark {
    --ses-orange: var(--accent);
    --app-bg: var(--group);
    --text-main: var(--label);
    --text-heading: var(--label);
    --text-muted: var(--label-2);
    --text-sub: var(--label-2);
    --border-color: var(--sep);
    --card-border: var(--sep);
    --fieldset-bg: var(--fill);
    --nav-link-active: var(--fill);
    --input-bg: var(--fill);
    --input-border: var(--sep);
    --apple-ink: var(--label);
    --link-color: var(--tint);
    --bs-body-bg: var(--bg);
    --bs-body-color: var(--label);
    --bs-border-color: var(--sep);
    --bs-secondary-color: var(--label-2);
}

/* ---------- Base --------------------------------------------------------- */

*,
*::before,
*::after {
    box-sizing: border-box;
}

html {
    background: var(--bg);
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
    /* No accidental pull-to-refresh while the truck is moving. */
    overscroll-behavior-y: none;
}

html,
body {
    margin: 0;
    padding: 0;
    overflow-x: clip;
}

body {
    min-height: 100dvh;
    font-family: var(--font);
    font-size: 16px;
    line-height: 1.4;
    color: var(--label);
    background: var(--bg);
    -webkit-font-smoothing: antialiased;
    transition: none;
}

/* index.html centres the loading card with place-items; browsers that align block
   children would otherwise shrink-wrap and centre the whole app. */
#app {
    display: block;
    min-height: 100dvh;
    place-items: normal;
}

.app-shell {
    width: 100%;
}

h1, h2, h3, h4 {
    margin: 0 0 8px;
    color: var(--label);
    font-family: var(--font);
}

h1 {
    margin: 8px 0 16px;
    font-size: 34px;
    font-weight: 700;
    line-height: 1.12;
}

h1:focus {
    outline: none;
}

h2 { font-size: 20px; font-weight: 600; }
h3 { font-size: 17px; font-weight: 600; }

p { margin: 0 0 12px; }

a {
    color: var(--tint);
    text-decoration: none;
}

b, strong { font-weight: 600; }

small {
    font-size: 13px;
    color: var(--label-2) !important; /* shared pages set greys inline */
}

hr {
    margin: 24px 0;
    border: 0;
    border-top: 0.5px solid var(--sep);
    opacity: 1;
}

code {
    font-family: var(--font-mono);
    font-size: 0.875em;
    color: var(--label);
}

ul { padding-left: 1.25rem; }

label {
    color: var(--label-2);
    font-size: 13px;
    font-weight: 400;
}

.ses-ico { display: none; }

.ui-visually-hidden {
    position: absolute !important;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.ui-icon {
    display: block;
    flex: none;
}

:focus-visible {
    outline: 2px solid var(--tint);
    outline-offset: 2px;
}

.is-good { color: var(--green) !important; }
.is-destructive { color: var(--red) !important; }

/* ---------- Buttons ------------------------------------------------------ */

/* Default: iOS "gray" button, tinted text on a light fill. */
button,
.btn,
.ses-btn,
.vehicle-back,
input[type="button"],
input[type="submit"],
input[type="reset"] {
    -webkit-appearance: none;
    appearance: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    min-height: var(--tap);
    margin: 0;
    padding: 0 16px;
    font: 500 16px/1.2 var(--font);
    text-align: center;
    text-decoration: none;
    color: var(--tint);
    background: var(--fill);
    border: 0;
    border-radius: var(--radius);
    box-shadow: none;
    filter: none;
    transform: none;
    cursor: pointer;
    user-select: none;
    -webkit-user-select: none;
    -webkit-touch-callout: none;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
    transition: background-color 0.1s ease, opacity 0.1s ease;
}

button:active:not(:disabled),
.btn:active:not(:disabled),
.ses-btn:active:not(:disabled),
.vehicle-back:active {
    background: var(--fill-2);
}

button:disabled,
.btn:disabled,
.btn.disabled,
.ses-btn:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}

.btn:hover,
.btn:focus,
.btn:focus-visible,
.btn:active:focus {
    color: var(--tint);
    background: var(--fill);
    box-shadow: none;
}

.btn {
    --bs-btn-disabled-color: var(--tint);
    --bs-btn-disabled-bg: var(--fill);
    --bs-btn-disabled-border-color: transparent;
    --bs-btn-disabled-opacity: 0.4;
}

/* Filled: the main action on a screen. */
.field-primary,
.ui-btn-primary,
.btn-primary,
.ses-btn-primary,
.btn-primary:hover,
.btn-primary:focus {
    color: var(--on-accent);
    background: var(--accent);
    font-weight: 600;
}

.field-primary:active:not(:disabled),
.ui-btn-primary:active:not(:disabled),
.btn-primary:active:not(:disabled),
.ses-btn-primary:active:not(:disabled) {
    background: var(--accent-press);
}

.btn-primary {
    --bs-btn-disabled-color: var(--on-accent);
    --bs-btn-disabled-bg: var(--accent);
}

/* Neutral: dismiss / secondary choice in a sheet. */
.field-secondary {
    color: var(--label);
    background: var(--fill);
}

.ui-btn-sm {
    position: relative;
    min-height: 38px;
    padding: 0 12px;
    font-size: 15px;
    border-radius: 8px;
}

/* Invisible hit area so compact buttons are still easy to hit in a moving vehicle.
   Neighbouring small buttons are 8px apart, so these just meet without overlapping. */
.ui-btn-sm::after {
    content: "";
    position: absolute;
    inset: -4px;
}

.ui-btn-plain,
.field-quiet {
    color: var(--tint);
    background: transparent;
}

.ui-btn-plain:active:not(:disabled),
.field-quiet:active:not(:disabled) {
    background: var(--fill);
}

.ui-btn-icon {
    width: var(--tap);
    min-width: var(--tap);
    padding: 0;
}

.ui-btn-danger-soft,
.btn-danger,
.btn-outline-danger,
.btn-danger:hover,
.btn-outline-danger:hover {
    color: var(--red);
    background: var(--fill);
}

.btn-danger,
.btn-outline-danger {
    --bs-btn-disabled-color: var(--red);
}

/* A full-width text row inside a group, like "Add field" in iOS. */
.ui-row-button {
    display: flex;
    justify-content: flex-start;
    width: 100%;
    min-height: 48px;
    padding: 0 16px;
    color: var(--tint);
    background: transparent;
    border-radius: 0;
    font-size: 17px;
    font-weight: 400;
    text-align: left;
}

.ui-row-button:active:not(:disabled) {
    background: var(--fill);
}

/* Segmented control. */
.ui-segmented {
    display: inline-flex;
    padding: 2px;
    background: var(--fill);
    border-radius: 9px;
}

.ui-segmented > button {
    min-width: 46px;
    min-height: 40px;
    padding: 0 14px;
    color: var(--label);
    background: transparent;
    border-radius: 7px;
    font-size: 15px;
    font-weight: 500;
}

.ui-segmented > button[aria-pressed="true"] {
    background: var(--group);
    box-shadow: 0 3px 8px rgba(0, 0, 0, 0.12), 0 0 1px rgba(0, 0, 0, 0.1);
    font-weight: 600;
}

html.dark .ui-segmented > button[aria-pressed="true"] {
    background: #636366;
}

.ui-segmented-sm > button {
    min-height: 32px;
    font-size: 13px;
}

/* ---------- Form controls ----------------------------------------------- */

/* Standalone fields: filled, borderless. :where() keeps specificity at element level. */
input:where(:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="range"]):not([type="color"]):not([type="button"]):not([type="submit"]):not([type="reset"])),
select,
textarea,
.form-control,
.form-select {
    -webkit-appearance: none;
    appearance: none;
    display: block;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    min-height: var(--tap);
    margin: 0;
    padding: 11px 12px;
    font: 400 17px/1.3 var(--font);
    color: var(--label);
    background-color: var(--fill);
    border: 0;
    border-radius: var(--radius);
    box-shadow: none;
    outline: none;
}

input:focus,
select:focus,
textarea:focus,
.form-control:focus,
.form-select:focus {
    color: var(--label);
    background-color: var(--fill);
    box-shadow: 0 0 0 2px var(--accent);
    outline: none;
}

input::placeholder,
textarea::placeholder {
    color: var(--label-3);
    opacity: 1;
}

textarea {
    line-height: 1.4;
    resize: vertical;
}

/* Desktop and Android browsers draw the open list from the option colours, and the
   fields themselves are (semi-)transparent, so give options solid theme colours or
   dark mode shows white text on a white list. iOS uses its own picker. */
select option,
select optgroup {
    color: var(--label);
    background-color: var(--elevated);
}

select option:disabled {
    color: var(--label-3);
}

select,
.form-select {
    padding-right: 34px;
    background-image: var(--select-chevron);
    background-repeat: no-repeat;
    background-position: right 10px center;
    background-size: 16px;
    text-overflow: ellipsis;
    cursor: pointer;
}

input[type="date"],
input[type="time"],
input[type="number"] {
    font-variant-numeric: tabular-nums;
}

input::-webkit-date-and-time-value {
    min-height: 1.3em;
    text-align: left;
}

input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

input[type="number"] {
    -moz-appearance: textfield;
}

input[type="checkbox"],
input[type="radio"] {
    flex: none;
    width: 22px;
    height: 22px;
    margin: 0;
    accent-color: var(--accent);
    cursor: pointer;
}

/* iOS switch. */
input[type="checkbox"][role="switch"] {
    -webkit-appearance: none;
    appearance: none;
    position: relative;
    width: 51px;
    height: 31px;
    border-radius: 999px;
    background: var(--fill-2);
    transition: background-color 0.2s ease;
}

input[type="checkbox"][role="switch"]::before {
    content: "";
    position: absolute;
    top: 2px;
    left: 2px;
    width: 27px;
    height: 27px;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15), 0 1px 1px rgba(0, 0, 0, 0.16);
    transition: transform 0.2s ease;
}

input[type="checkbox"][role="switch"]:checked {
    background: var(--switch-on);
}

input[type="checkbox"][role="switch"]:checked::before {
    transform: translateX(20px);
}

label:has(> input[role="switch"]) {
    flex-direction: row-reverse;
    justify-content: space-between;
    color: var(--label);
    font-size: 17px;
    cursor: pointer;
}

/* Labels wrapping a radio or checkbox become selection rows with a checkmark. */
label:has(> input[type="radio"]),
label:has(> input[type="checkbox"]:not([role="switch"])) {
    position: relative;
    display: flex;
    flex-direction: row-reverse;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    min-height: 48px;
    margin: 0;
    padding: 11px 16px;
    color: var(--label);
    font-size: 17px;
    line-height: 1.3;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
}

label:has(> input[type="radio"]):active,
label:has(> input[type="checkbox"]:not([role="switch"])):active {
    background: var(--fill);
}

label:has(> input[type="radio"]) > input,
label:has(> input[type="checkbox"]:not([role="switch"])) > input {
    -webkit-appearance: none;
    appearance: none;
    width: 20px;
    height: 20px;
    background: transparent no-repeat center / contain;
}

label:has(> input[type="radio"]) > input:checked,
label:has(> input[type="checkbox"]:not([role="switch"])) > input:checked {
    background-image: var(--check);
}

label:has(> input:focus-visible) {
    outline: 2px solid var(--tint);
    outline-offset: -2px;
}

label:has(> input[type="radio"]) + label:has(> input[type="radio"])::before,
label:has(> input[type="checkbox"]) + label:has(> input[type="checkbox"])::before {
    content: "";
    position: absolute;
    top: 0;
    left: 16px;
    right: 0;
    border-top: 0.5px solid var(--sep);
}

input[type="file"] {
    max-width: 100%;
    color: var(--label-2);
    font: 400 15px var(--font);
}

input[type="file"]::file-selector-button {
    min-height: var(--tap);
    margin-right: 12px;
    padding: 0 16px;
    font: 500 16px var(--font);
    color: var(--tint);
    background: var(--fill);
    border: 0;
    border-radius: var(--radius);
    cursor: pointer;
}

/* Search field. */
.ui-search {
    position: relative;
    margin: 0 0 10px;
}

.ui-search > input {
    padding-left: 36px;
    padding-right: 40px;
}

.ui-search-glyph {
    position: absolute;
    top: 13.5px;
    left: 11px;
    z-index: 1;
    color: var(--label-2);
    pointer-events: none;
}

.ui-input-clear {
    position: absolute;
    top: 2px;
    right: 2px;
    width: 40px;
    min-width: 40px;
    min-height: 40px;
    padding: 0;
    color: var(--label-2);
    background: transparent;
}

/* ---------- Grouped lists ----------------------------------------------- */

.ui-page-head h1 {
    margin-bottom: 2px;
}

.ui-page-head p {
    margin: 0 0 16px;
    color: var(--label-2);
    font-size: 15px;
}

.ui-section {
    margin: 28px 0 0;
}

.ui-section-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    padding: 0 16px 6px;
}

.ui-section-head h2 {
    margin: 0;
    color: var(--label-2);
    font-size: 13px;
    font-weight: 400;
    line-height: 18px;
    letter-spacing: 0.01em;
    text-transform: uppercase;
}

.ui-section-note {
    color: var(--label-2);
    font-size: 13px;
}

.ui-section-foot {
    display: block;
    margin: 0;
    padding: 6px 16px 0;
    color: var(--label-2);
    font-size: 13px;
    line-height: 1.35;
}

.ui-section-foot:empty {
    display: none;
}

.ui-group {
    position: relative;
    background: var(--group);
    border-radius: var(--radius-group);
}

.ui-group > *,
.field-observations-body > * {
    position: relative;
}

/* Hairline between rows, inset from the leading edge as in iOS. */
.ui-group > * + *::before,
.field-observations-body > * + *::before {
    content: "";
    position: absolute;
    top: 0;
    left: 16px;
    right: 0;
    border-top: 0.5px solid var(--sep);
    pointer-events: none;
}

.ui-group > :first-child {
    border-top-left-radius: var(--radius-group);
    border-top-right-radius: var(--radius-group);
}

.ui-group > :last-child {
    border-bottom-left-radius: var(--radius-group);
    border-bottom-right-radius: var(--radius-group);
}

.ui-field {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-content: center;
    row-gap: 1px;
    min-height: 52px;
    padding: 9px 16px;
    margin: 0;
}

.ui-field.has-trailing {
    grid-template-columns: minmax(0, 1fr) auto;
    column-gap: 12px;
}

.ui-field.has-trailing > :not(.ui-trailing) {
    grid-column: 1;
}

.ui-trailing {
    display: flex;
    align-items: center;
    gap: 6px;
    grid-column: 2;
    grid-row: 1 / span 2;
    align-self: center;
}

.ui-field > label,
label.ui-field {
    margin: 0;
    color: var(--label-2);
    font-size: 13px;
    line-height: 18px;
}

.ui-field:focus-within > label,
label.ui-field:focus-within {
    color: var(--tint);
}

/* Inside a group the row is the field: no fill, no focus ring. */
.ui-group :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]), select, textarea) {
    min-height: 32px;
    padding: 3px 0;
    background-color: transparent;
    border-radius: 0;
    box-shadow: none;
}

.ui-group select {
    padding-right: 26px;
    background-position: right 0 center;
}

.ui-group textarea {
    resize: none;
}

.ui-input-strong {
    font-weight: 600 !important;
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.01em;
}

.ui-input-unit {
    position: relative;
    display: flex;
}

.ui-input-unit > input {
    padding-right: 36px;
}

.ui-input-unit > span {
    position: absolute;
    top: 50%;
    right: 0;
    color: var(--label-2);
    transform: translateY(-50%);
    pointer-events: none;
}

.ui-help {
    display: flex;
    flex-wrap: wrap;
    gap: 2px 8px;
    color: var(--label-2);
    font-size: 13px;
}

.ui-help:empty,
.ui-error-text:empty {
    display: none;
}

.ui-error-text {
    color: var(--red) !important;
    font-size: 13px;
}

.ui-empty-row {
    padding: 14px 16px;
    color: var(--label-2);
    font-size: 17px;
}

.ui-row-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 6px;
}

.ui-suggest {
    position: relative;
}

.ui-loading {
    position: absolute;
    top: 6px;
    right: 0;
    color: var(--label-2);
    font-size: 13px;
    pointer-events: none;
}

.ses-dropdown {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    right: 0;
    z-index: 950; /* above the action bar, below the tab bar */
    max-height: min(50vh, 340px);
    overflow: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    background: var(--elevated);
    border-radius: var(--radius-group);
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.2), 0 0 0 0.5px var(--sep);
}

.ses-dropdown-item {
    position: relative;
    display: flex;
    align-items: center;
    min-height: 48px;
    padding: 12px 16px;
    color: var(--label);
    font-size: 16px;
    line-height: 1.3;
    overflow-wrap: anywhere;
    cursor: pointer;
    user-select: none;
}

.ses-dropdown-item + .ses-dropdown-item::before {
    content: "";
    position: absolute;
    top: 0;
    left: 16px;
    right: 0;
    border-top: 0.5px solid var(--sep);
}

.ses-dropdown-item:active,
.ses-dropdown-item:hover {
    background: var(--fill);
}

/* Disclosure rows. */
details > summary {
    list-style: none;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
}

details > summary::-webkit-details-marker {
    display: none;
}

details > summary::marker {
    content: "";
}

.ui-chevron {
    color: var(--label-3);
    transition: transform 0.2s ease;
}

details[open] > summary .ui-chevron {
    transform: rotate(90deg);
}

details.ui-disclosure {
    background: var(--group);
    border-radius: var(--radius-group);
}

details.ui-disclosure > summary {
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 50px;
    padding: 12px 16px;
    border-radius: var(--radius-group);
    color: var(--label);
    font-size: 17px;
}

details.ui-disclosure > summary:active {
    background: var(--fill);
}

details.ui-disclosure[open] > summary {
    border-bottom: 0.5px solid var(--sep);
    border-radius: var(--radius-group) var(--radius-group) 0 0;
}

.ui-summary-title {
    flex: 1;
    min-width: 0;
}

.field-optional {
    color: var(--label-2);
    font-size: 15px;
}

.ui-alert,
.field-review {
    padding: 16px;
    background: var(--group);
    border-radius: var(--radius-group);
}

.ui-alert h1 {
    font-size: 20px;
}

p.field-warning {
    color: var(--red);
}

/* ---------- App shell --------------------------------------------------- */

.app-shell {
    min-height: 100dvh;
}

.app-main {
    min-width: 0;
}

.app-content {
    --gutter: 16px;
    max-width: calc(var(--content-w) + 2 * var(--gutter));
    margin: 0 auto;
    padding: 0 max(var(--gutter), env(safe-area-inset-right)) calc(var(--tabbar-h) + var(--safe-b) + 32px) max(var(--gutter), env(safe-area-inset-left));
}

.app-topbar {
    --gutter: 16px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    max-width: calc(var(--content-w) + 2 * var(--gutter));
    min-height: calc(52px + env(safe-area-inset-top));
    margin: 0 auto;
    padding: env(safe-area-inset-top) max(var(--gutter), env(safe-area-inset-right)) 0 max(var(--gutter), env(safe-area-inset-left));
}

.app-topbar .app-icon-btn {
    margin-right: -10px;
}

.app-brand {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    color: var(--label);
    font-size: 17px;
    font-weight: 600;
    -webkit-tap-highlight-color: transparent;
}

.app-logo {
    display: block;
    width: 30px;
    height: 30px;
    border-radius: 7px;
    background: #fff url("../sescheatsheetlogo.png") center 48% / 150% no-repeat;
    box-shadow: 0 0 0 0.5px var(--sep);
}

.app-icon-btn {
    width: var(--tap);
    min-width: var(--tap);
    padding: 0;
    color: var(--tint);
    background: transparent;
}

.app-icon-btn:active:not(:disabled) {
    background: var(--fill);
}

/* Tab bar. */
.app-nav {
    position: fixed;
    z-index: 1200;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 0 env(safe-area-inset-right) var(--safe-b) env(safe-area-inset-left);
    background: var(--bar);
    border-top: 0.5px solid var(--sep);
    -webkit-backdrop-filter: saturate(180%) blur(20px);
    backdrop-filter: saturate(180%) blur(20px);
}

.app-nav-links {
    display: flex;
    max-width: 560px;
    margin: 0 auto;
}

.app-nav-link {
    display: flex;
    flex: 1 1 0;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    height: var(--tabbar-h);
    color: var(--label-2);
    font-size: 11px;
    font-weight: 500;
    -webkit-tap-highlight-color: transparent;
    -webkit-touch-callout: none;
}

.app-nav-link.active {
    color: var(--tint);
}

.app-banner {
    display: flex;
    align-items: center;
    gap: 12px;
    max-width: var(--content-w);
    margin: 4px 16px 0;
    padding: 12px 8px 12px 16px;
    background: var(--group);
    border-radius: var(--radius-group);
}

.app-banner-text {
    display: flex;
    flex: 1;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
    color: var(--label-2);
    font-size: 13px;
}

.app-banner-text strong {
    color: var(--red);
    font-size: 15px;
}

.app-banner-action {
    flex: none;
    display: inline-flex;
    align-items: center;
    min-height: var(--tap);
    padding: 0 10px;
    color: var(--tint);
    font-size: 15px;
}

@media (min-width: 768px) {
    .app-content,
    .app-topbar {
        --gutter: 24px;
    }

    .app-nav-link {
        flex-direction: row;
        gap: 8px;
        font-size: 13px;
    }

    .app-banner {
        margin: 4px auto 0;
        width: calc(100% - 48px);
    }
}

/* ---------- Sheets, alerts, toasts -------------------------------------- */

.field-modal-backdrop,
.ses-modal-overlay {
    position: fixed;
    inset: 0;
    z-index: 5000;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    background: var(--scrim);
    animation: ui-fade-in 0.2s ease;
}

.field-modal {
    width: 100%;
    max-width: 540px;
    max-height: calc(100dvh - 40px);
    overflow: auto;
    overscroll-behavior: contain;
    padding: 20px 16px calc(16px + var(--safe-b));
    color: var(--label);
    background: var(--group);
    border-radius: 14px 14px 0 0;
    animation: ui-sheet-up 0.32s cubic-bezier(0.32, 0.72, 0, 1);
}

.field-modal-wide {
    max-width: 680px;
}

.field-modal h2 {
    margin: 0 0 4px;
    font-size: 20px;
    font-weight: 600;
}

.field-modal p {
    color: var(--label-2);
    font-size: 15px;
}

.field-modal-head {
    display: flex;
    align-items: center;
    gap: 4px;
    margin: -8px -8px 12px;
}

.field-modal-head h2 {
    flex: 1;
    min-width: 0;
    margin: 0;
    font-size: 17px;
    text-align: center;
    overflow-wrap: anywhere;
}

.field-modal-head .ui-btn-plain {
    padding: 0 8px;
    font-size: 17px;
    font-weight: 400;
}

.field-modal-fields {
    display: grid;
    gap: 14px;
    margin: 12px 0 0;
}

.field-modal-fields > label {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.field-modal .field-inline-actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin-top: 20px;
}

.field-modal .field-inline-actions > button {
    min-height: 50px;
    font-size: 17px;
}

.field-modal .field-inline-actions > button:only-child,
.field-time-actions > .field-primary,
.field-time-actions > :nth-child(2):last-child {
    grid-column: 1 / -1;
}

.field-time-actions > .ui-btn-danger-soft {
    color: var(--red);
}

.field-preview {
    min-height: 240px;
    max-height: 50dvh;
    margin-top: 8px;
    font-family: var(--font-mono);
    font-size: 14px;
}

.field-paste {
    min-height: 150px;
    font-family: var(--font-mono);
    font-size: 15px;
}

.field-modal .ui-help {
    margin: 8px 0 0;
}

.field-paste-actions {
    display: grid;
    grid-template-columns: 1fr 2fr;
    gap: 10px;
    margin-top: 16px;
}

.field-paste-actions > button {
    min-height: 50px;
    font-size: 17px;
}

.field-preview-image {
    display: block;
    width: 100%;
    height: auto;
    border-radius: var(--radius);
}

@media (min-width: 640px) {
    .field-modal-backdrop,
    .ses-modal-overlay {
        align-items: center;
        padding: 24px;
    }

    .field-modal {
        max-height: calc(100dvh - 48px);
        padding: 24px;
        border-radius: 14px;
        animation: ui-pop 0.2s ease;
    }
}

/* Confirmations look like iOS alerts. */
.ses-modal-backdrop {
    position: fixed;
    inset: 0;
    z-index: 5000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    background: var(--scrim);
    animation: ui-fade-in 0.2s ease;
}

.ses-modal {
    position: relative;
    width: 100%;
    max-width: 290px;
    overflow: hidden;
    color: var(--label);
    background: var(--group);
    border-radius: 14px;
    text-align: center;
    animation: ui-pop 0.2s ease;
}

html.light .ses-modal,
:root:not(.dark) .ses-modal {
    background: rgba(242, 242, 242, 0.97);
}

html.dark .ses-modal {
    background: rgba(37, 37, 39, 0.98);
}

.ses-modal-header {
    padding: 20px 16px 2px;
}

.ses-modal-header h3 {
    margin: 0;
    color: var(--label);
    font-size: 17px;
    font-weight: 600;
}

.ses-modal-header button {
    position: absolute;
    top: 4px;
    right: 4px;
    width: 40px;
    min-width: 40px;
    min-height: 40px;
    padding: 0;
    color: var(--label-2);
    background: transparent;
    font-size: 22px;
    font-weight: 400;
}

.ses-modal-body {
    padding: 2px 16px 18px;
    color: var(--label);
    font-size: 13px;
    line-height: 1.35;
}

.ses-modal-body p {
    margin: 0;
}

.ses-modal-footer {
    display: grid;
    grid-template-columns: 1fr 1fr;
    border-top: 0.5px solid var(--sep);
}

.ses-modal-footer > button,
.ses-modal-footer > .ses-btn-primary {
    min-height: 46px;
    padding: 0 8px;
    color: var(--tint);
    background: transparent;
    border-radius: 0;
    font-size: 17px;
    font-weight: 400;
}

.ses-modal-footer > .ses-btn-primary {
    font-weight: 600;
}

.ses-modal-footer > button + button {
    border-left: 0.5px solid var(--sep);
}

.ses-modal-footer > button:active:not(:disabled) {
    background: var(--fill);
}

.ses-transfer-actions {
    display: grid;
    gap: 8px;
    padding-top: 10px;
}

.ses-transfer-actions > * {
    width: 100%;
}

html.ui-v2 body .ses-import-label {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: var(--tap);
    padding: 0 16px;
    color: var(--tint);
    background: var(--fill);
    border: 0;
    border-radius: var(--radius);
    font-size: 16px;
    font-weight: 500;
    cursor: pointer;
}

/* Toasts sit above the bottom bars and never block a tap. */
.ses-snackbar-container {
    position: fixed;
    left: 50%;
    bottom: calc(var(--tabbar-h) + var(--safe-b) + 14px);
    z-index: 6000;
    display: flex;
    justify-content: center;
    width: min(440px, calc(100vw - 32px));
    padding: 0;
    pointer-events: none;
    transform: translateX(-50%);
}

body:has(.field-dock) .ses-snackbar-container {
    bottom: calc(var(--tabbar-h) + var(--safe-b) + var(--dock-h) + 10px);
}

.ses-snackbar {
    padding: 12px 16px;
    color: #fff;
    background: var(--toast);
    border: 0;
    border-radius: 12px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
    font-size: 15px;
    font-weight: 500;
    text-align: center;
    pointer-events: none;
    animation: ui-fade-in 0.2s ease;
}

#blazor-error-ui {
    position: fixed;
    left: 12px;
    right: 12px;
    bottom: calc(var(--tabbar-h) + var(--safe-b) + 12px);
    z-index: 7000;
    display: none;
    max-width: 560px;
    margin: 0 auto;
    padding: 14px 48px 14px 16px;
    color: var(--label);
    background: var(--group);
    border: 0;
    border-radius: var(--radius-group);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
    font-size: 15px;
}

#blazor-error-ui .reload {
    margin-left: 6px;
    color: var(--tint);
    font-weight: 600;
}

#blazor-error-ui .dismiss {
    position: absolute;
    top: 50%;
    right: 8px;
    display: grid;
    place-items: center;
    width: 40px;
    height: 40px;
    transform: translateY(-50%);
    cursor: pointer;
}

/* ---------- Job screen -------------------------------------------------- */

.field-workflow {
    padding-bottom: calc(var(--dock-h) + 8px);
}

.field-workflow :is(input, textarea, select) {
    scroll-margin-top: 150px;
    scroll-margin-bottom: calc(var(--dock-h) + var(--tabbar-h) + 24px);
}

.field-header {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    justify-content: space-between;
    gap: 12px;
    margin: 8px 0 16px;
}

.field-header-text {
    flex: 1 1 260px;
    min-width: 0;
}

.field-header h1 {
    margin: 0;
    font-variant-numeric: tabular-nums;
    overflow-wrap: anywhere;
}

.field-header-meta {
    margin: 4px 0 0;
    color: var(--label-2);
    font-size: 15px;
}

.field-save {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px 8px;
    min-height: 20px;
    margin-top: 2px;
    color: var(--label-2);
    font-size: 13px;
}

.field-save.field-warning {
    color: var(--red);
}

.field-save button {
    min-height: 32px;
    padding: 0 10px;
    font-size: 13px;
}

.field-import {
    flex: none;
}

/* Vehicle times: stays at the top while scrolling. */
.field-sticky {
    position: sticky;
    top: 0;
    z-index: 40;
    margin: 0 calc(-1 * var(--gutter));
    padding: 8px var(--gutter);
    background: var(--bg);
}

.field-sticky:has(.field-modal-backdrop) {
    z-index: 5000;
}

.field-quick-times {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    padding: 4px;
    background: var(--group);
    border-radius: 14px;
}

.field-time {
    position: relative;
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.field-time + .field-time::before {
    content: "";
    position: absolute;
    top: 14px;
    bottom: 14px;
    left: 0;
    border-left: 0.5px solid var(--sep);
}

.field-time > .field-stamp,
.field-time > .field-recorded {
    position: relative;
    z-index: 1;
    flex-direction: column;
    gap: 1px;
    width: 100%;
    min-height: 62px;
    padding: 6px 2px;
    color: var(--label);
    background: transparent;
    border-radius: 10px;
}

.field-time-label {
    max-width: 100%;
    overflow: hidden;
    color: var(--label-2);
    font-size: 13px;
    font-weight: 400;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.field-time strong {
    font-size: 22px;
    font-weight: 600;
    line-height: 1.15;
    font-variant-numeric: tabular-nums;
}

/* The next stage to stamp is filled; later ones are plain. */
.field-time > .field-stamp {
    background: var(--accent);
}

.field-time > .field-stamp,
.field-time > .field-stamp .field-time-label {
    color: var(--on-accent);
}

.field-time > .field-stamp:active:not(:disabled) {
    background: var(--accent-press);
}

.field-time:not(.recorded) ~ .field-time:not(.recorded) > .field-stamp {
    background: transparent;
}

.field-time:not(.recorded) ~ .field-time:not(.recorded) > .field-stamp .field-time-label {
    color: var(--label-2);
}

.field-time:not(.recorded) ~ .field-time:not(.recorded) > .field-stamp strong {
    color: var(--tint);
}

.field-time:not(.recorded) ~ .field-time:not(.recorded) > .field-stamp:active:not(:disabled) {
    background: var(--fill);
}

.field-time.recorded .field-time-label::after {
    content: " \2713";
    color: var(--green);
    font-weight: 600;
}

.field-time > .field-recorded:active:not(:disabled) {
    background: var(--fill);
}

.field-time > .field-time-edit {
    min-height: 40px;
    padding: 0 2px;
    color: var(--tint);
    background: transparent;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 400;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.field-feedback {
    display: flex;
    align-items: center;
    gap: 8px;
    min-height: 46px;
    margin-top: 8px;
    padding: 2px 4px 2px 14px;
    background: var(--group);
    border-radius: var(--radius-group);
    font-size: 15px;
    animation: ui-fade-in 0.2s ease;
}

.field-feedback > span {
    flex: 1;
    min-width: 0;
}

.field-feedback > button {
    flex: none;
    color: var(--tint);
    background: transparent;
    font-size: 17px;
    font-weight: 600;
}

/* Travel from: a value row that expands. */
.field-travel > summary {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 48px;
    padding: 11px 16px;
    border-radius: inherit;
}

.field-travel > summary:active {
    background: var(--fill);
}

.field-travel-label {
    flex: none;
    color: var(--label);
    font-size: 17px;
}

.field-travel-value {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    color: var(--label-2);
    font-size: 17px;
    text-align: right;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.field-travel-body {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 0 16px 12px;
}

/* Crew. */
.ses-crew-picker {
    position: relative;
}

.field-crew-dropdown {
    max-height: min(56vh, 400px);
}

.field-crew-sort {
    position: sticky;
    top: 0;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 8px 8px 8px 16px;
    color: var(--label-2);
    background: var(--elevated);
    border-bottom: 0.5px solid var(--sep);
    font-size: 13px;
}

.field-crew-group {
    padding: 14px 16px 4px;
    color: var(--label-2);
    font-size: 13px;
    text-transform: uppercase;
}

.field-crew-option {
    position: relative;
    display: flex;
    align-items: center;
    gap: 14px;
    min-height: 48px;
    padding: 0 16px;
    cursor: pointer;
    user-select: none;
}

.field-crew-option + .field-crew-option::before {
    content: "";
    position: absolute;
    top: 0;
    left: 52px;
    right: 0;
    border-top: 0.5px solid var(--sep);
}

.field-crew-option:active {
    background: var(--fill);
}

.field-crew-option-name {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    color: var(--label);
    font-size: 17px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.field-crew-card {
    padding: 10px 16px 14px;
}

.field-crew-name {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
}

.field-crew-name strong {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    font-size: 17px;
    font-weight: 500;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.field-crew-name .ui-btn-plain {
    margin-right: -8px;
    padding: 0 8px;
    color: var(--red);
    font-size: 15px;
    font-weight: 400;
}

.field-roles {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
}

.field-roles > button {
    min-width: 0;
    padding: 4px 6px;
    color: var(--label);
    font-size: 14px;
    font-weight: 500;
    line-height: 1.15;
    white-space: normal;
}

.field-roles > button[aria-pressed="true"] {
    color: var(--on-accent);
    background: var(--accent);
    font-weight: 600;
}

.field-roles > button[aria-pressed="true"]::before {
    content: "";
    flex: none;
    width: 14px;
    height: 14px;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* Handover details and other disclosures. */
.field-observations-body > .ui-field {
    min-height: 0;
}

.field-original pre {
    margin: 0;
    padding: 12px 16px 16px;
    color: var(--label-2);
    font-size: 14px;
    line-height: 1.5;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

.field-original-body {
    padding: 12px 16px;
}

/* Photos. */
.field-photo-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
}

.field-photo-actions > .ui-btn-icon {
    min-height: 36px;
    width: 40px;
    min-width: 40px;
    border-radius: 8px;
}

.ui-file-button {
    position: relative;
    cursor: pointer;
}

.ui-file-button:focus-within {
    outline: 2px solid var(--tint);
    outline-offset: 2px;
}

.field-photo-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 12px;
    padding: 12px 16px 14px;
}

.field-photo {
    margin: 0;
    min-width: 0;
}

.field-photo-thumb {
    display: block;
    width: 100%;
    min-height: 0;
    padding: 0;
    overflow: hidden;
    background: var(--fill);
    border-radius: 8px;
}

.field-photo-thumb img {
    display: block;
    width: 100%;
    height: 110px;
    object-fit: cover;
}

.field-photo figcaption {
    display: flex;
    align-items: center;
    gap: 0;
    margin-top: 2px;
    color: var(--label-2);
    font-size: 12px;
}

.field-photo figcaption > span {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.field-photo figcaption > .ui-btn-icon {
    width: 40px;
    min-width: 40px;
    min-height: 40px;
    background: transparent;
}

/* Bottom action bar. */
.field-dock {
    position: fixed;
    z-index: 900;
    left: 0;
    right: 0;
    bottom: calc(var(--tabbar-h) + var(--safe-b));
    background: var(--bar);
    border-top: 0.5px solid var(--sep);
    -webkit-backdrop-filter: saturate(180%) blur(20px);
    backdrop-filter: saturate(180%) blur(20px);
}

.field-dock-inner {
    display: grid;
    gap: 6px;
    max-width: calc(var(--content-w) + 2 * var(--gutter));
    margin: 0 auto;
    padding: 8px max(var(--gutter), env(safe-area-inset-right)) 8px max(var(--gutter), env(safe-area-inset-left));
}

.field-copy-hint {
    min-width: 0;
    color: var(--label-2);
    font-size: 13px;
    line-height: 1.3;
}

.field-copy-hint strong {
    color: var(--tint);
}

.field-report-actions {
    display: grid;
    grid-template-columns: minmax(0, 1fr) repeat(3, 54px);
    gap: 4px;
    align-items: center;
}

.field-report-actions > .field-primary {
    min-height: 50px;
    padding: 0 12px;
    border-radius: 12px;
    font-size: 17px;
    white-space: nowrap;
}

.field-report-actions > .field-quiet {
    flex-direction: column;
    gap: 2px;
    min-width: 0;
    min-height: 50px;
    padding: 0;
    color: var(--tint);
    font-size: 11px;
    font-weight: 500;
}

@media (max-width: 599.98px) {
    .field-import {
        width: 100%;
    }

    .field-roles > button[aria-pressed="true"]::before {
        display: none;
    }

    .field-time-label {
        font-size: 12px;
    }

    .field-time strong {
        font-size: 20px;
    }

    .field-time > .field-time-edit {
        font-size: 12px;
    }
}

@media (max-width: 359.98px) {
    .field-report-actions {
        grid-template-columns: minmax(0, 1fr) repeat(3, 48px);
    }
}

@media (min-width: 768px) {
    :root {
        --dock-h: 72px;
    }

    .field-dock-inner {
        grid-template-columns: minmax(0, 1fr) auto;
        align-items: center;
        gap: 16px;
        padding-top: 10px;
        padding-bottom: 10px;
    }

    .field-copy-hint {
        font-size: 14px;
    }

    .field-report-actions {
        grid-template-columns: 220px repeat(3, 60px);
    }

    .field-time > .field-stamp,
    .field-time > .field-recorded {
        min-height: 70px;
    }

    .field-time strong {
        font-size: 26px;
    }
}

/* Short viewports (landscape phones, split view): give the content room. */
@media (max-height: 560px) {
    :root {
        --tabbar-h: 46px;
        --dock-h: 66px;
    }

    .field-sticky {
        position: static;
    }

    .field-copy-hint {
        display: none;
    }

    .app-nav-link {
        flex-direction: row;
        gap: 6px;
        font-size: 12px;
    }
}

/* ---------- Saved sheets ------------------------------------------------ */

.sheets-new {
    min-height: 50px;
    margin: 0 0 24px;
    padding: 0 20px;
    font-size: 17px;
}

.sheet-list,
.sheets-bulk {
    overflow: hidden;
}

.sheets-bulk {
    margin-top: 24px;
}

.sheet-row-main {
    display: flex;
    justify-content: flex-start;
    align-items: center;
    gap: 12px;
    width: 100%;
    min-height: 60px;
    padding: 12px 10px 2px 16px;
    color: var(--label);
    background: transparent;
    border-radius: 0;
    font-weight: 400;
    text-align: left;
}

.sheet-row-main:active:not(:disabled) {
    background: var(--fill);
}

.sheet-row-text {
    display: flex;
    flex: 1;
    flex-direction: column;
    gap: 1px;
    min-width: 0;
}

.sheet-row-title {
    font-size: 17px;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

.sheet-row-sub {
    overflow: hidden;
    color: var(--label-2);
    font-size: 15px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.sheet-row-meta {
    display: flex;
    flex: none;
    flex-direction: column;
    align-items: flex-end;
    gap: 1px;
    color: var(--label-2);
    font-size: 13px;
    font-variant-numeric: tabular-nums;
}

.sheet-row-actions {
    display: flex;
    flex-wrap: wrap;
    padding: 0 8px 4px;
}

.sheet-row-actions > .ui-btn-plain {
    padding: 0 8px;
    font-size: 15px;
    font-weight: 400;
}

@media (max-width: 599.98px) {
    .sheets-new {
        width: 100%;
    }
}

/* ---------- Settings and data pages ------------------------------------ */

.ses-main-container {
    max-width: none;
}

/* Fieldsets become grouped sections with the legend as the header above. */
fieldset {
    position: relative;
    min-width: 0;
    margin: 46px 0 0 !important;
    padding: 14px 16px !important;
    background: var(--group);
    border: 0;
    border-radius: var(--radius-group);
}

legend {
    position: absolute;
    top: -24px;
    left: 16px;
    right: 16px;
    float: none;
    width: auto;
    margin: 0;
    padding: 0;
    color: var(--label-2);
    font-size: 13px;
    font-weight: 400;
    line-height: 18px;
    letter-spacing: 0.01em;
    text-transform: uppercase;
}

/* Choice lists run edge to edge inside their group. */
fieldset > div:has(> label > input[type="radio"]) {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 0 !important;
    margin: -14px -16px !important;
}

fieldset label:has(> input[role="switch"]) {
    margin: -6px 0;
}

fieldset p {
    margin: 10px 0 0;
    color: var(--label-2);
    font-size: 15px;
    line-height: 1.35;
}

.ses-form-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 14px;
}

.ses-form-grid > * {
    min-width: 0;
}

.ses-form-grid label + br,
fieldset label + br {
    display: none;
}

.ses-form-grid label:not(:has(> input)) {
    display: block;
    margin-bottom: 6px;
}

@media (min-width: 768px) {
    .ses-form-grid {
        grid-template-columns: repeat(12, minmax(0, 1fr));
    }

    .ses-form-grid-full { grid-column: span 12; }
    .ses-form-grid-half { grid-column: span 6; }
    .ses-form-grid-third { grid-column: span 4; }
}

.ses-api-action-grid .btn,
.ses-api-primary-actions .btn {
    min-height: 48px;
}

.data-add-row,
.data-row {
    align-items: center !important;
}

.data-row {
    margin: 0 !important;
    padding: 8px 0;
    border-bottom: 0.5px solid var(--sep);
}

@media (max-width: 599.98px) {
    .data-add-row,
    .data-row.crew-row {
        grid-template-columns: 1fr 1fr !important;
    }

    .data-add-row > button,
    .data-row.crew-row > button {
        width: 100%;
    }

    .data-add-row > button {
        grid-column: 1 / -1;
    }
}

/* Vehicles. */
.vehicle-manager > p:first-child {
    color: var(--label-2);
    font-size: 15px;
}

.vehicle-options {
    display: flex;
    flex-direction: column;
    margin: 12px 0 24px;
    background: var(--group);
    border-radius: var(--radius-group);
    overflow: hidden;
}

.vehicle-manager > label:not(.vehicle-enabled) {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin: 0 0 16px;
}

.vehicle-manager > button {
    min-height: 48px;
}

.vehicle-back {
    min-height: var(--tap);
    padding: 0 12px 0 4px;
    background: transparent;
    font-size: 17px;
    font-weight: 400;
}

.vehicle-back::before {
    content: "";
    width: 22px;
    height: 22px;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m15 18-6-6 6-6'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m15 18-6-6 6-6'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* ---------- Pager ------------------------------------------------------- */

.pager-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

/* The pager page declares its own styles later, so these carry extra weight. */
html.ui-v2 body .pager-card {
    margin-bottom: 12px;
    padding: 14px 16px;
    background: var(--group);
    border: 0;
    border-radius: var(--radius-group);
    box-shadow: none;
}

html.ui-v2 body .pager-card.home-capcode {
    background: var(--group);
    box-shadow: inset 0 0 0 1.5px var(--accent);
}

html.ui-v2 body .pager-meta {
    margin-bottom: 6px;
    color: var(--label-2);
    font-size: 13px;
    font-variant-numeric: tabular-nums;
}

html.ui-v2 body .pager-type-badge {
    margin-right: 6px;
    padding: 0;
    color: var(--label-2);
    background: none;
    border-radius: 0;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.02em;
}

html.ui-v2 body .pager-type-badge.emergency { color: var(--red); }
html.ui-v2 body .pager-type-badge.non_emergency { color: var(--tint); }

html.ui-v2 body .pager-headline {
    margin-bottom: 4px;
    color: var(--label);
    font-size: 17px;
    font-weight: 600;
}

html.ui-v2 body .pager-address {
    margin-bottom: 2px;
    color: var(--label);
    font-size: 15px;
    opacity: 1;
}

html.ui-v2 body .pager-detail {
    color: var(--label-2);
    font-size: 15px;
    opacity: 1;
}

html.ui-v2 body .pager-map,
html.ui-v2 body .pager-map-placeholder {
    margin-top: 12px;
    border: 0;
    border-radius: var(--radius);
}

html.ui-v2 body .pager-map-placeholder {
    background: var(--fill);
}

html.ui-v2 body .pager-actions {
    gap: 8px;
    margin-top: 12px;
}

html.ui-v2 body .pager-actions > * {
    flex: 1 1 140px;
    min-height: 48px;
}

html.ui-v2 body .pager-raw-toggle {
    margin: 4px 0 0 -8px;
    padding: 0 8px;
    font-size: 15px;
    font-weight: 400;
    opacity: 1;
}

html.ui-v2 body .pager-raw {
    padding: 10px 12px;
    color: var(--label-2);
    background: var(--fill);
    border-radius: 8px;
    font-family: var(--font-mono);
    font-size: 13px;
    opacity: 1;
}

/* ---------- Loading screen ---------------------------------------------- */

html.ui-v2 #app:has(> .ses-loader) {
    display: grid;
    place-items: center;
}

html.ui-v2 .ses-loader {
    width: min(360px, calc(100vw - 48px));
    padding: 32px 24px 24px;
    color: var(--label);
    background: var(--group);
    border: 0;
    border-radius: 14px;
    box-shadow: none;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
}

html.ui-v2 .ses-checkered-loader {
    width: 72px;
    height: 72px;
    margin-bottom: 18px;
    border: 0;
    border-radius: 16px;
    background: #fff url("../sescheatsheetlogo.png") center 48% / 150% no-repeat;
    box-shadow: 0 0 0 0.5px var(--sep);
}

html.ui-v2 .ses-title strong {
    color: var(--label);
    font-size: 20px;
    font-weight: 600;
    letter-spacing: 0;
}

html.ui-v2 .ses-title span,
html.ui-v2 .ses-footer,
html.ui-v2 .ses-loading-sub {
    color: var(--label-2);
}

html.ui-v2 .ses-progress {
    width: 200px;
    height: 4px;
    background: var(--fill);
}

html.ui-v2 .ses-progress > div {
    background: var(--accent);
}

html.ui-v2 .ses-theme-toggle {
    width: 44px;
    height: 44px;
    min-height: 44px;
    padding: 0;
    background: transparent;
    border: 0;
}

/* ---------- Motion ------------------------------------------------------ */

@keyframes ui-fade-in {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes ui-sheet-up {
    from { transform: translateY(100%); }
    to { transform: none; }
}

@keyframes ui-pop {
    from { opacity: 0; transform: scale(1.08); }
    to { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        transition-duration: 0.01ms !important;
    }
}
