/* Public reusable UI. Legacy class aliases keep existing page patterns consistent. */
.bg-field-label{display:block;font-weight:600}.bg-label-required{white-space:nowrap}.bg-required{font:inherit;color:var(--bg-error)}
.bg-upload{position:relative}.bg-upload .bg-file{transition:border-color var(--bg-motion-fast),background var(--bg-motion-fast);min-height:185px}.bg-upload.is-dragging .bg-file{border:2px dashed var(--bg-ink);background:var(--bg-soft)}.bg-upload .bg-file:focus-within{outline:3px solid var(--bg-focus);outline-offset:3px}.bg-file-native{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;clip-path:inset(50%)}.bg-file-list{list-style:none;padding:0;margin:16px 0 0}.bg-file-list li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--bg-border)}.bg-file-list li>span{display:flex;align-items:center;gap:10px;min-width:0}.bg-file-name{overflow-wrap:anywhere;min-width:0;font-size:13px}.bg-file-name small{display:block}.bg-file-list .bg-icon-button{flex-shrink:0}.bg-upload [data-file-status]{margin:12px 0 0;overflow-wrap:anywhere}.bg-range-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:18px}.bg-range-heading .bg-unit-input{width:130px;flex-shrink:0}.bg-range-heading input{font-size:18px;font-variant-numeric:tabular-nums}.bg-range-field .bg-range{margin:0 0 8px}.bg-range-field [data-range-help]{margin:14px 0 0}.bg-range-field input[aria-invalid=true]{color:var(--bg-error)}
.bg-bottom-nav{display:none}.preview-frame.mobile .bg-bottom-nav{display:grid;position:sticky;bottom:0;grid-template-columns:repeat(4,minmax(0,1fr));background:var(--bg-paper);border-top:1px solid var(--bg-border);padding:8px 8px max(8px,env(safe-area-inset-bottom,0px));z-index:5}
.bg-time-dialog{max-height:90vh;max-height:90dvh;overflow:auto}.bg-time-minutes{max-height:300px;overflow:auto;padding:3px}.bg-time-dialog::backdrop{background:#0007}
.bg-bottom-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:52px;border:0;background:transparent;color:var(--bg-secondary);font:inherit;font-size:11px;border-radius:var(--bg-radius-control);padding:5px 2px}.bg-bottom-nav button[aria-current=page]{color:var(--bg-ink);font-weight:700;background:var(--bg-canvas)}.bg-bottom-nav button:focus-visible{outline:3px solid var(--bg-focus);outline-offset:-3px}.bg-bottom-nav .bg-icon{font-size:19px;height:22px}
.bg-time-value{font-size:36px;line-height:1.3;font-weight:600;letter-spacing:-1px;font-variant-numeric:tabular-nums;padding:16px 0 24px}.bg-time-columns{display:grid;grid-template-columns:3fr 1fr;gap:20px}.bg-time-columns fieldset{border:0;padding:0;margin:0;min-width:0}.bg-time-columns legend{font-size:12px;color:var(--bg-secondary);padding:0;margin-bottom:12px}.bg-time-hours{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.bg-time-minutes{display:grid;gap:6px}.bg-time-option{min-height:42px;padding:8px 3px;border:1px solid var(--bg-border);border-radius:var(--bg-radius-control);background:var(--bg-paper);color:var(--bg-text);font:inherit;font-size:14px;font-variant-numeric:tabular-nums}.bg-time-option[aria-pressed=true]{background:var(--bg-ink);border-color:var(--bg-ink);color:var(--bg-paper)}.bg-time-option:disabled{opacity:.35;cursor:not-allowed}.bg-time-option:focus-visible{outline:3px solid var(--bg-focus);outline-offset:2px}.bg-date-wrap [data-bg-time]{cursor:pointer;caret-color:transparent}.bg-time-dialog h2{font-size:21px;margin:0}
.bg-dialog-backdrop{position:fixed;inset:0;background:#0007;z-index:9998}.bg-dialog-fallback[open]{display:block;position:fixed;inset:50% auto auto 50%;transform:translate(-50%,-50%);margin:0;z-index:9999;background:var(--bg-paper);max-height:90vh;overflow:auto}
@media(max-width:767px){.has-bottom-nav{padding-bottom:calc(76px + env(safe-area-inset-bottom,0px))}.preview-frame .bg-bottom-nav,.preview-frame.mobile .bg-bottom-nav{display:grid;position:fixed;bottom:0;left:0;right:0;width:auto;grid-template-columns:repeat(4,minmax(0,1fr));background:var(--bg-paper);border-top:1px solid var(--bg-border);padding:8px 12px max(8px,env(safe-area-inset-bottom,0px));z-index:20}.bg-time-option{min-height:44px}.bg-dialog-fallback.bg-calendar-dialog[open]{inset:auto 0 0 0;transform:none;width:100%;max-width:none;border-radius:var(--bg-radius-overlay) var(--bg-radius-overlay) var(--bg-radius-none) var(--bg-radius-none)}}
:where(.bg-button,.bg-input,.bg-field,.field,.check,.bg-switch,.bg-date-wrap,.bg-calendar-dialog,.bg-calendar-dialog *){box-sizing:border-box}
:where(.bg-button,.button,.bg-input,.field input,.field select,.field textarea,.check input,.bg-switch input,.bg-calendar-dialog button):focus-visible{outline:3px solid var(--bg-focus);outline-offset:3px}
.bg-button{cursor:pointer}.bg-button:disabled{cursor:not-allowed}.helper{font-size:12px;color:var(--bg-secondary);font-weight:400}.error{font-size:12px;color:var(--bg-error);font-weight:400}.bg-date-wrap+.helper{margin-top:8px}
table input[type=checkbox]{appearance:none;width:20px;height:20px;border:1.5px solid var(--bg-input);border-radius:var(--bg-radius-detail);background:white;display:grid;place-content:center}table input[type=checkbox]:checked{background:var(--bg-ink);border-color:var(--bg-ink)}table input[type=checkbox]:checked::before{content:'';width:10px;height:6px;border:solid white;border-width:0 0 2px 2px;transform:rotate(-45deg);margin-top:-3px}table input[type=checkbox]:focus-visible{outline:3px solid var(--bg-focus);outline-offset:3px}
body{font-family:var(--bg-font);-webkit-font-smoothing:antialiased}button,input,select,textarea{font-family:inherit}
.button,.bg-button{min-height:var(--bg-control-md);border-radius:var(--bg-radius-control);font-size:14px;letter-spacing:-.2px;padding:11px 20px;gap:9px;transition:background var(--bg-motion-fast),box-shadow var(--bg-motion-fast),transform var(--bg-motion-fast);border:1px solid var(--bg-border);background:var(--bg-paper);color:var(--bg-text);display:inline-flex;align-items:center;justify-content:center;font-weight:600;text-decoration:none}
.button:hover:not(:disabled),.bg-button:hover:not(:disabled){background:var(--bg-soft);border-color:var(--bg-input)}.button:active:not(:disabled),.bg-button:active:not(:disabled){transform:translateY(1px)}
.button.primary,.bg-button--primary{background:var(--bg-ink);border-color:var(--bg-ink);color:var(--bg-paper)}.button.primary:hover:not(:disabled),.bg-button--primary:hover:not(:disabled){background:#353530;color:white;border-color:#353530}
.button.sm,.bg-button--sm{min-height:var(--bg-control-sm);padding:8px 14px;font-size:13px}.button.lg,.bg-button--lg{min-height:var(--bg-control-lg);padding:15px 26px;font-size:16px}
.button.ghost{background:transparent;border-color:transparent}.button.danger{color:var(--bg-error);border-color:#e4beb8;background:#fff9f7}
.button:disabled,.bg-button:disabled{color:#77776f;background:var(--bg-soft);border-color:var(--bg-border);box-shadow:none}.bg-icon{width:18px;min-width:18px;display:inline-flex;justify-content:center;align-items:center;font-size:16px;line-height:1;vertical-align:middle}.bg-icon-button{width:var(--bg-control-md);padding:0;flex-shrink:0}.bg-button-group{display:flex;flex-wrap:wrap;gap:8px}
.field,.bg-field{display:grid;gap:8px;font-size:13px;font-weight:600}.field input,.field select,.field textarea,.bg-input{border-radius:var(--bg-radius-control);min-height:var(--bg-control-md);padding:12px 14px;border:1px solid var(--bg-input);background:var(--bg-paper);font-size:16px;line-height:1.4;color:var(--bg-text);width:100%;min-width:0;font-weight:400;transition:border-color var(--bg-motion-fast),box-shadow var(--bg-motion-fast)}
.field input:hover:not(:disabled),.field select:hover:not(:disabled),.field textarea:hover:not(:disabled),.bg-input:hover:not(:disabled){border-color:var(--bg-text)}
.field input:focus,.field select:focus,.field textarea:focus,.bg-input:focus{border-color:var(--bg-focus);box-shadow:0 0 0 3px #2457d612}
.field input::placeholder,.field textarea::placeholder,.bg-input::placeholder{color:#7b7b73}.field input:disabled,.bg-input:disabled{background:var(--bg-soft);color:var(--bg-secondary);border-color:var(--bg-border)}
.field input[aria-invalid=true],.bg-input[aria-invalid=true]{border-color:var(--bg-error);background:#fffaf9}.field select{appearance:none;padding-right:44px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='m4 6 4 4 4-4' fill='none' stroke='%2364645e' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 15px center}.field select[multiple]{background-image:none;padding-right:14px;min-height:140px}.field select option{padding:10px;background:white;color:var(--bg-text)}
@supports (appearance:base-select){.field select:not([multiple]),.field select:not([multiple])::picker(select){appearance:base-select}.field select:not([multiple]){background-image:none;padding-right:14px}.field select::picker-icon{color:var(--bg-secondary);transition:rotate var(--bg-motion-fast)}.field select:open::picker-icon{rotate:180deg}.field select::picker(select){border:1px solid var(--bg-border);border-radius:var(--bg-radius-surface);box-shadow:var(--bg-shadow-popover);padding:6px;margin-top:6px}.field select option{border-radius:var(--bg-radius-control);padding:10px 12px;min-height:44px}.field select option:hover,.field select option:checked{background:var(--bg-soft)}}
.bg-input-wrap{position:relative;display:flex;align-items:center}.bg-input-wrap>.bg-icon{position:absolute;left:15px;color:var(--bg-secondary);pointer-events:none}.bg-input-wrap>input{padding-left:44px}.bg-input-wrap>.bg-trailing{position:absolute;right:7px;min-height:34px;width:34px;padding:0;background:transparent;border:0;border-radius:var(--bg-radius-control);color:var(--bg-secondary)}.bg-input-wrap:has(.bg-trailing)>input{padding-right:46px}.bg-prefix,.bg-suffix{color:var(--bg-secondary);font-size:13px}.bg-unit-input{display:flex;align-items:center;border:1px solid var(--bg-input);border-radius:var(--bg-radius-control);padding:0 14px;gap:10px;background:white}.bg-unit-input:focus-within{outline:3px solid var(--bg-focus);outline-offset:3px}.bg-unit-input input{border:0!important;box-shadow:none!important;outline:none!important;padding-left:0;padding-right:0}
.check{gap:10px;align-items:flex-start;min-height:44px;padding:9px 0}.check input:not([role=switch]){appearance:none;width:20px;height:20px;min-width:20px;margin:2px 0 0;border:1.5px solid var(--bg-input);border-radius:var(--bg-radius-detail);background:white;display:grid;place-content:center;transition:background var(--bg-motion-fast),border-color var(--bg-motion-fast)}
.check input[type=checkbox]:not([role=switch])::before{content:'';width:10px;height:6px;border:solid white;border-width:0 0 2px 2px;transform:rotate(-45deg) scale(0);margin-top:-3px}.check input[type=radio]:not([role=switch]){border-radius:var(--bg-radius-circle)}.check input[type=radio]::before{content:'';width:8px;height:8px;border-radius:var(--bg-radius-circle);background:white;transform:scale(0)}.check input:checked{background:var(--bg-ink);border-color:var(--bg-ink)}.check input[type=checkbox]:checked::before{transform:rotate(-45deg) scale(1)}.check input[type=radio]:checked::before{transform:scale(1)}.check input:disabled{opacity:.42;cursor:not-allowed}
.bg-switch{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:56px;font-size:14px}.bg-switch input{appearance:none;position:relative;width:44px;height:26px;min-width:44px;border:1px solid var(--bg-input);border-radius:var(--bg-radius-pill);background:#deded7;margin:0;transition:background var(--bg-motion-fast)}.bg-switch input::before{content:'';display:block;position:absolute;top:3px;left:3px;width:18px;height:18px;background:white;border-radius:var(--bg-radius-circle);box-shadow:0 1px 3px #0002;transition:transform var(--bg-motion-normal) var(--bg-ease)}.bg-switch input:checked{background:var(--bg-ink);border-color:var(--bg-ink)}.bg-switch input:checked::before{transform:translateX(18px)}.bg-switch input:disabled{opacity:.4}
.bg-choice{border:1px solid var(--bg-border);padding:16px;border-radius:var(--bg-radius-surface);align-items:center;background:white}.bg-choice:has(input:checked){border-color:var(--bg-ink);box-shadow:0 0 0 1px var(--bg-ink);background:var(--bg-canvas)}.bg-choice span{display:grid;gap:3px}.bg-range{accent-color:var(--bg-ink);width:100%;min-height:28px}.bg-file{border:1px dashed var(--bg-input);border-radius:var(--bg-radius-surface);padding:24px;text-align:center;background:var(--bg-canvas);display:grid;gap:12px;justify-items:center;font-size:13px}.bg-file input{max-width:100%;font-size:12px}.bg-file input::file-selector-button{font-family:inherit;background:white;border:1px solid var(--bg-border);border-radius:var(--bg-radius-control);padding:9px 12px;margin-right:12px;color:var(--bg-text)}
.specimen,.activity,.summary-card,.account-card{border-radius:var(--bg-radius-surface)}.specimen{padding:28px}.badge{border-radius:var(--bg-radius-detail);gap:5px;padding:5px 9px;font-size:11px}.badge .bg-icon{font-size:10px;width:12px;min-width:12px}.pill{font-weight:500;min-height:42px}.notice{border-radius:var(--bg-radius-none) var(--bg-radius-surface) var(--bg-radius-surface) var(--bg-radius-none)}.eyebrow{letter-spacing:1.5px}.page-intro h1{font-size:clamp(32px,3.4vw,48px);font-weight:650;letter-spacing:-1.8px}.section-heading h2{font-weight:600}.sidebar{background:#171717}.wordmark{font-weight:750}.nav-item{border-radius:var(--bg-radius-control);min-height:44px}.nav-item>.bg-icon{font-size:14px;width:16px;min-width:16px}.bg-icon-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(105px,1fr));gap:12px}.bg-icon-tile{display:grid;justify-items:center;gap:12px;border:1px solid var(--bg-border);padding:22px 10px;border-radius:var(--bg-radius-surface);background:white;font-size:12px}.bg-icon-tile .bg-icon{font-size:20px;height:24px}.bg-icon-tile code{font-size:10px;overflow-wrap:anywhere;text-align:center}.bg-tag{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--bg-border);padding:5px 9px;border-radius:var(--bg-radius-detail);font-size:12px}.bg-tag button{border:0;background:transparent;min-width:28px;min-height:28px;border-radius:var(--bg-radius-detail)}.bg-segment{display:inline-flex;flex-wrap:wrap;padding:4px;border-radius:var(--bg-radius-surface);background:var(--bg-soft);gap:4px}.bg-segment button{border:0;background:transparent;border-radius:var(--bg-radius-control);min-height:40px;padding:8px 15px;font-size:13px}.bg-segment button[aria-pressed=true]{background:white;box-shadow:0 1px 5px #0001}.bg-skeleton{height:14px;background:linear-gradient(100deg,#eeeee8 25%,#f8f8f4 45%,#eeeee8 65%);background-size:200% 100%;border-radius:var(--bg-radius-detail);animation:bg-shimmer 1.8s infinite}.bg-skeleton.large{height:130px;border-radius:var(--bg-radius-surface)}.bg-skeleton.short{width:65%}@keyframes bg-shimmer{to{background-position:-200% 0}}
.bg-calendar-dialog{padding:22px;border:1px solid var(--bg-border);border-radius:var(--bg-radius-overlay);box-shadow:var(--bg-shadow-popover);width:min(370px,calc(100% - 24px));max-width:370px}.bg-calendar-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:16px}.bg-calendar-heading strong{font-size:16px}.bg-calendar-nav{background:transparent;border:1px solid var(--bg-border);border-radius:var(--bg-radius-control);width:40px;height:40px}.bg-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.bg-calendar-week{text-align:center;font-size:11px;color:var(--bg-secondary);padding:7px 0}.bg-day{border:0;border-radius:var(--bg-radius-control);background:transparent;min-width:0;min-height:40px;aspect-ratio:1;color:var(--bg-text);font-size:13px;padding:0}.bg-day:hover:not(:disabled){background:var(--bg-soft)}.bg-day[aria-pressed=true]{background:var(--bg-ink);color:white}.bg-day[data-today=true]{box-shadow:inset 0 0 0 1px var(--bg-input)}.bg-day:disabled{color:#aaa99f}.bg-calendar-actions{margin-top:18px;padding-top:16px;border-top:1px solid var(--bg-border);display:flex;justify-content:space-between;gap:10px}.bg-date-wrap{display:flex;gap:8px;align-items:center}.bg-date-wrap input{flex:1;min-width:0;font-variant-numeric:tabular-nums}.bg-date-wrap .bg-icon-button{border-color:var(--bg-input)}.bg-date-wrap input[type=date]{color-scheme:light}.bg-help-row{display:flex;justify-content:space-between;gap:12px}.bg-datepicker-inline{padding:20px;border:1px solid var(--bg-border);border-radius:var(--bg-radius-surface);max-width:360px;background:white}.bg-asset-map{display:grid;grid-template-columns:150px 1fr;gap:14px 20px;font-size:13px}.bg-asset-map dt{color:var(--bg-secondary)}.bg-asset-map dd{margin:0;overflow-wrap:anywhere}.bg-kbd{font-size:11px;border:1px solid var(--bg-border);border-bottom-width:2px;padding:2px 5px;border-radius:var(--bg-radius-detail);background:var(--bg-canvas)}
@media(pointer:coarse){.button.sm,.bg-button--sm,.bg-calendar-nav,.bg-day,.pill,.bg-segment button{min-height:44px}.bg-day{aspect-ratio:auto}.check{min-height:48px}}
@media(max-width:767px){.specimen{padding:22px}.bg-asset-map{grid-template-columns:1fr;gap:5px}.bg-asset-map dd{margin-bottom:12px}.bg-icon-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.bg-calendar-dialog{padding:18px}}
@media(prefers-reduced-motion:reduce){.bg-skeleton{animation:none}*{scroll-behavior:auto!important}}
@media(forced-colors:active){.check input,.bg-switch input{appearance:auto}.check input::before,.bg-switch input::before{display:none}.bg-day[aria-pressed=true]{outline:2px solid Highlight}}
.bg-date-wrap [data-bg-date]{cursor:pointer;caret-color:transparent;-webkit-tap-highlight-color:transparent;background:var(--bg-paper);font-size:16px}
.bg-date-wrap [data-bg-date]:disabled{cursor:not-allowed}
.field select:not([multiple]){height:var(--bg-control-md);padding-block:0;line-height:24px}
/* Keep the selected text and chevron on the same vertical center. */
@supports (appearance:base-select){
  .field select:not([multiple]){display:inline-flex;align-items:center}
  .field select:not([multiple])::picker-icon{align-self:center;margin-block:0}
}
/* Line chevron instead of the browser's filled select triangle. */
@supports (appearance:base-select){
  .field select:not([multiple])::picker-icon{
    content:'\f078';font-family:'Font Awesome 6 Free';font-weight:900;
    font-size:12px;line-height:1;flex-shrink:0;color:var(--bg-secondary);
    transform-origin:center;transition:rotate var(--bg-motion-fast) var(--bg-ease);
  }
  .field select:not([multiple]):open::picker-icon{rotate:180deg}
  .field select:disabled::picker-icon{opacity:.45}
}
@media(max-width:600px){
  .bg-calendar-dialog{margin:auto auto 0;width:100%;max-width:none;border-radius:var(--bg-radius-overlay) var(--bg-radius-overlay) var(--bg-radius-none) var(--bg-radius-none);padding:24px 20px calc(20px + env(safe-area-inset-bottom,0px));max-height:90dvh;overflow:auto}
  .bg-calendar-grid{gap:4px;max-width:420px;margin-inline:auto}
  .bg-calendar-heading,.bg-calendar-actions{max-width:420px;margin-inline:auto}
  .bg-calendar-heading{margin-bottom:20px}
  .bg-calendar-nav,.bg-day{min-height:44px}
  .bg-day{aspect-ratio:auto;height:46px;font-size:15px}
}

