.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
/* Workspace layout. Existing controls and technical views remain in ourgrove.css. */
:root { --overview-positive: #e7ecd9; --overview-positive-text: #40532b; }
[data-theme="dark"] { --overview-positive: #2a3523; --overview-positive-text: #cfe1b5; }
.eyebrow { font-size: .65rem; font-weight: 600; letter-spacing: .16em; margin-bottom: .65rem; }
.masthead::after { position: absolute; content: ''; bottom: -3px; left: 0; right: 0; height: 4px; background: linear-gradient(90deg, var(--avocado-500) 0 33%, var(--harvest-500) 33% 66%, var(--persimmon-600) 66%); }
.masthead .logo { font-size: 1.75rem; }
.masthead .nav-links a { border-radius: 999px; min-height: 44px; }
.masthead .nav-icon { display: none; }
.masthead .logo-icon { width: 2rem; height: 2rem; }
[data-theme="dark"] .masthead { background: var(--moss-900); }
button, input, select, textarea { font-family: var(--font-primary); }
.btn-secondary, .btn-danger, .btn-update { min-height: 44px; border-radius: 999px; }
.link-button { min-height: 44px; color: var(--text-primary); text-decoration: underline; text-underline-offset: 4px; }
.login-box .btn-primary { width: 100%; }
.view-header { gap: 1rem; }
.view-header > .btn-primary { flex-shrink: 0; }
.section-heading { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.section-heading h3 { font-size: 1.5rem; }
.section-heading > .muted { font-size: .75rem; }
.workspace-disclosure { margin-top: 1rem; border-top: 1px solid var(--border-color); }
.workspace-disclosure > summary, .installed-app-details > summary, .backup-row-details > summary { min-height: 48px; padding: .75rem 0; cursor: pointer; color: var(--text-primary); font-size: .85rem; font-weight: 600; }
.workspace-disclosure > summary span, .installed-app-details > summary span, .backup-row-details > summary span { float: right; margin-left: 1rem; color: var(--text-secondary); font-size: .75rem; font-weight: 400; }
summary:focus-visible { outline: 2px solid var(--accent-color); outline-offset: 4px; }
.workspace-disclosure[open] > summary { margin-bottom: .75rem; }
.overview-host { display: flex; flex-direction: column; align-items: flex-end; min-width: 0; font-size: .8rem; overflow-wrap: anywhere; }
.overview-host .timestamp { font-size: .7rem; }
.overview-health { display: flex; align-items: center; gap: 1.1rem; padding: 1.2rem 1.5rem; background: var(--overview-positive); border-radius: var(--radius); margin-bottom: 1.5rem; color: var(--overview-positive-text); }
.overview-health h3 { font-size: 1.6rem; line-height: 1.3; }
.overview-health p { margin-top: .3rem; font-size: .85rem; }
.overview-health > .link-button { margin-left: auto; white-space: nowrap; color: inherit; }
.overview-health-symbol { width: 42px; height: 42px; flex-shrink: 0; display: grid; place-items: center; border: 1px solid currentColor; border-radius: 50%; font-size: 1.5rem; }
.overview-health[data-state="unknown"] { background: var(--card-bg); color: var(--text-secondary); border: 1px solid var(--border-color); }
.overview-health[data-state="error"] { background: color-mix(in srgb, var(--error-color) 12%, var(--card-bg)); color: var(--error-color); }
.overview-health[data-state="warning"] { background: color-mix(in srgb, var(--warning-color) 12%, var(--card-bg)); color: var(--text-primary); }
.overview-issues:empty { display: none; }
.overview-issues { margin-bottom: 1.5rem; }
.overview-issue, .overview-setup { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 1.25rem; border-left: 3px solid var(--warning-color); border-radius: 8px; background: var(--card-bg); margin-bottom: .6rem; }
.overview-issue[data-state="error"] { border-color: var(--error-color); }
.overview-issue[data-state="unknown"] { border-color: var(--text-muted); }
.overview-issue p, .overview-setup p { font-size: .8rem; color: var(--text-secondary); }
.overview-issue button, .overview-setup button { flex-shrink: 0; }
.overview-setup { border-color: var(--success-color); margin-bottom: 1.5rem; }
.overview-setup h3 { font-size: 1.1rem; }
.overview-columns { display: grid; grid-template-columns: minmax(0, 1fr) 292px; gap: 2.25rem; }
.overview-main, .overview-side { min-width: 0; }
.overview-count { font-family: var(--font-primary); font-size: .75rem; color: var(--text-secondary); vertical-align: middle; margin-left: .4rem; }
.overview-app-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem; }
.overview-app { position: relative; min-height: 124px; min-width: 0; padding: 1rem; border: 1px solid var(--border-color); border-radius: var(--radius); background: var(--card-bg); color: var(--text-primary); display: flex; flex-direction: column; align-items: flex-start; text-align: left; text-decoration: none; cursor: pointer; }
.overview-app:hover { border-color: var(--success-color); background: color-mix(in srgb, var(--overview-positive) 45%, var(--card-bg)); }
.overview-app .app-logo, .overview-app .app-logo-badge { width: 32px; height: 32px; margin-bottom: .65rem; }
.overview-app .app-logo { object-fit: contain; background: var(--cream-50); border-radius: 5px; padding: 2px; }
.overview-app strong { font-size: .95rem; overflow-wrap: anywhere; }
.overview-app small { font-size: .7rem; color: var(--text-secondary); }
.overview-app-status::before { content: ''; display: inline-block; width: 6px; height: 6px; border-radius: 50%; margin-right: 5px; background: var(--text-muted); }
.overview-app-status[data-state="running"]::before, .overview-app-status[data-state="completed"]::before { background: var(--success-color); }
.overview-app-status[data-state="unhealthy"]::before, .overview-app-status[data-state="stopped"]::before, .overview-app-status[data-state="partial"]::before, .overview-app-status[data-state="missing"]::before { background: var(--error-color); }
.overview-app-arrow { position: absolute; top: .7rem; right: 1rem; color: var(--text-secondary); font-size: .75rem; }
.overview-empty { grid-column: 1 / -1; padding: 1rem 0; color: var(--text-secondary); }
.overview-resources { margin-top: 1.5rem; }
.overview-resource-strip { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); padding: 1rem 0; border-top: 1px solid var(--border-color); border-bottom: 1px solid var(--border-color); }
.overview-resource-strip > div { min-width: 0; padding: 0 1rem; border-left: 1px solid var(--border-color); }
.overview-resource-strip > div:first-child { padding-left: 0; border: 0; }
.overview-resource-strip > div:last-child { padding-right: 0; }
.overview-resource-strip span { font-size: .75rem; color: var(--text-secondary); }
.overview-resource-strip strong { display: block; font-size: clamp(1rem, 2vw, 1.6rem); white-space: nowrap; }
.overview-resource-strip small { font-size: .65rem; color: var(--text-secondary); overflow-wrap: anywhere; }
.overview-meter { height: 4px; background: var(--border-color); margin: .5rem 0; border-radius: 5px; overflow: hidden; }
.overview-meter i { height: 100%; width: 0; display: block; background: var(--success-color); }
#resource-history { margin-top: 0; border-top: 0; }
#resource-history .resource-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 1rem; }
#resource-history .metric-card h3 { font-family: var(--font-primary); font-size: .9rem; }
#resource-history .panel-header { flex-wrap: wrap; }
#resource-history .metric-label { font-size: .75rem; }
#resource-history .dashboard-refresh-controls { flex-wrap: wrap; }
.overview-backup { background: var(--overview-positive); border-radius: var(--radius); padding: 1.5rem; }
.overview-backup h3 { font-size: 1.65rem; line-height: 1.3; color: var(--overview-positive-text); margin-bottom: 1.5rem; }
.overview-backup > strong { font-size: 1rem; }
.overview-backup > p:not(.eyebrow), #overview-backup-facts { font-size: .75rem; color: var(--text-secondary); margin-top: .4rem; }
#overview-backup-facts { margin: 1rem 0; }
#overview-backup-facts p + p { margin-top: .4rem; }
.overview-backup .btn-secondary { width: 100%; background: transparent; border-color: color-mix(in srgb, var(--overview-positive-text) 35%, transparent); font-size: .8rem; }
.overview-activity { margin-top: 1.5rem; }
.overview-activity h3 { font: 600 .95rem var(--font-primary); }
.overview-activity > .muted { font-size: .7rem; margin: .4rem 0 .8rem; }
.overview-activity-events { display: grid; gap: .6rem; }
.overview-activity .activity-event { padding: .4rem 0; background: transparent; border: 0; width: 100%; text-align: left; cursor: pointer; min-height: 44px; }
.overview-activity .activity-event-message { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
#advanced-diagnostics { margin-top: 2rem; }
/* Rich catalog cards explain the choice; setup details stay available. */
.catalog-intro { max-width: 780px; margin: 0 0 1.5rem; color: var(--text-secondary); }
#app-catalog { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.25rem; }
#app-catalog .app-card { padding: 1.5rem; background: var(--card-bg); box-shadow: none; min-width: 0; }
#app-catalog .app-card-header { align-items: flex-start; flex-wrap: wrap; }
#app-catalog .app-logo { background: var(--cream-50); padding: 3px; border-radius: 6px; }
#app-catalog .app-card h3 { font-size: 1.4rem; }
#app-catalog .catalog-description { font-size: .9rem; line-height: 1.65; margin-bottom: 1rem; }
.catalog-use-case { padding: .8rem 1rem; background: var(--bg-secondary); border-radius: 8px; margin-bottom: 1rem; }
.catalog-use-case > strong { font-size: .7rem; color: var(--text-secondary); }
#app-catalog .catalog-use-case p { font-size: .8rem; margin: .4rem 0 0; }
.catalog-category { font-size: .75rem; color: var(--text-secondary); margin-bottom: .65rem; }
.catalog-details { margin: 0 0 1rem; }
.catalog-details summary { cursor: pointer; font-size: .8rem; min-height: 44px; padding: .6rem 0; }
.catalog-details .app-meta { display: flex; flex-wrap: wrap; }
#apps-view .apps-tab-nav { position: static; border: 0; box-shadow: none; padding: 0; background: transparent; margin-bottom: 1.5rem; }
#apps-view .apps-tab-nav button { border-radius: 0; border-bottom: 2px solid transparent; min-height: 44px; }
#apps-view .apps-tab-nav button.active { background: transparent; border-bottom-color: var(--text-primary); color: var(--text-primary); }
/* Installed app controls keep all existing handlers behind one disclosure. */
.installed-apps-panel { border: 0; background: transparent; }
.installed-apps-panel > .panel-content { padding: 0; }
.installed-apps-toolbar { justify-content: space-between; margin-bottom: 1rem; }
.installed-search input { max-width: 100%; padding: .7rem 1rem; border: 1px solid var(--border-color); border-radius: 999px; background: var(--card-bg); color: var(--text-primary); }
.app-tools { margin: 0; border: 0; }
.app-tools-actions { display: flex; flex-wrap: wrap; gap: .5rem; }
.installed-apps-list { display: grid; grid-template-columns: minmax(0, 1fr); }
.installed-app-item { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0 1rem; padding: 1.2rem; background: var(--card-bg); box-shadow: none; }
.installed-app-item .installed-app-card-header { padding: 0; background: transparent; border: 0; box-shadow: none; position: static; }
.installed-app-stack-name { font-size: .75rem; }
.installed-app-primary-action { align-self: center; }
.installed-app-details { grid-column: 1 / -1; margin-top: .65rem; border-top: 1px solid var(--border-color); }
.installed-app-details .installed-app-card-body { padding: 1rem 0; }
.installed-app-details .installed-app-actions { padding: 1rem 0 0; background: transparent; flex-wrap: wrap; }
.installed-app-details .installed-app-actions button { white-space: normal; }
/* Settings use one readable content column beside local navigation. */
#settings-view { display: grid; grid-template-columns: 225px minmax(0, 1fr); gap: 0 2rem; align-items: start; }
#settings-view > .view-header { grid-column: 1 / -1; }
#settings-view > .settings-nav { grid-column: 1; grid-row: 2 / span 4; display: flex; flex-direction: column; align-items: stretch; width: 100%; position: sticky; top: 6rem; margin: 0; padding: 0; border: 0; box-shadow: none; background: transparent; overflow: visible; }
#settings-view > .settings-nav button { text-align: left; white-space: normal; min-height: 44px; font-size: .8rem; }
#settings-view > .settings-nav button.active { background: var(--overview-positive); color: var(--overview-positive-text); }
#settings-view > .settings-grid, #settings-view > .settings-viewer-notice, #settings-view > .reboot-detected-banner { grid-column: 2; }
#settings-view .settings-grid { columns: auto; min-width: 0; }
#settings-view .settings-section { box-shadow: none; padding: 1.5rem; border: 0; border-bottom: 1px solid var(--border-color); border-radius: 0; background: transparent; }
#settings-view .settings-section h3 { font-size: 1.4rem; }
.settings-category-picker { display: none; }
/* Recovery points precede configuration; existing restore safeguards remain. */
.backup-plan { margin-top: 2rem; }
.backup-recovery-panel { background: transparent; border: 0; }
.backup-recovery-panel > .panel-header, .backup-recovery-panel > .panel-content { padding-left: 0; padding-right: 0; }
.backup-health-panel { background: var(--overview-positive); box-shadow: none; }
.backup-item { display: grid; grid-template-columns: minmax(0, 1fr); padding: 1rem 1.25rem; background: var(--card-bg); }
.backup-info code { display: none; }
.backup-row-details > summary { font-size: .8rem; }
.backup-actions { display: flex; flex-wrap: wrap; }
.backup-roadmap { background: transparent; border: 0; box-shadow: none; }
#install-modal .install-grid { grid-template-columns: minmax(0, 1fr); }
#install-modal .install-grid > div:first-child { order: 2; }
#install-modal .install-grid > div:last-child { order: 1; }
@media (max-width: 1000px) {
    .overview-columns { grid-template-columns: minmax(0, 1fr) 260px; gap: 1.5rem; }
    .overview-app-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .overview-resource-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem 0; }
    .overview-resource-strip > div:nth-child(3) { border: 0; padding-left: 0; }
    #app-catalog { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
    main { padding: 1.5rem 1rem; }
    .masthead { padding: .75rem 1rem; }
    .masthead nav { gap: .75rem; flex-wrap: wrap; }
    .masthead .logo { font-size: 1.5rem; }
    .masthead .nav-links { position: static; width: 100%; order: 3; display: flex; justify-content: space-between; border: 0; background: transparent; padding: 0; box-shadow: none; }
    .masthead .nav-links.hidden { display: none; }
    .masthead .nav-links a { font-size: .8rem; padding: .5rem .85rem; }
    .masthead .user-menu { margin-left: auto; }
    .overview-host { max-width: 48%; font-size: .65rem; }
    .overview-health { padding: 1rem; flex-wrap: wrap; gap: .75rem; }
    .overview-health > div { flex: 1; min-width: 0; }
    .overview-health h3 { font-size: 1.25rem; }
    .overview-health-symbol { width: 32px; height: 32px; font-size: 1.2rem; }
    .overview-health > .link-button { margin-left: 44px; }
    .overview-issue, .overview-setup { align-items: flex-start; flex-direction: column; }
    .overview-columns { grid-template-columns: minmax(0, 1fr); }
    .overview-resource-strip strong { font-size: 1.5rem; }
    .section-heading h3 { font-size: 1.3rem; }
    .workspace-disclosure > summary span, .installed-app-details > summary span, .backup-row-details > summary span { float: none; display: block; margin-left: 1rem; }
    #resource-history .resource-grid { grid-template-columns: minmax(0, 1fr); }
    #app-catalog { grid-template-columns: minmax(0, 1fr); }
    #apps-view > .view-header { flex-wrap: wrap; }
    .installed-app-item { padding: 1rem; grid-template-columns: minmax(0, 1fr); }
    .installed-app-primary-action { margin-top: .75rem; }
    .installed-apps-toolbar { flex-wrap: wrap; }
    .installed-app-identity, .installed-app-card-header { flex-wrap: wrap; }
    .installed-app-access-grid { grid-template-columns: minmax(0, 1fr); }
    #settings-view { grid-template-columns: minmax(0, 1fr); }
    #settings-view > .settings-nav { display: none; }
    #settings-view > .settings-grid, #settings-view > .settings-viewer-notice, #settings-view > .reboot-detected-banner { grid-column: 1; }
    .settings-category-picker { display: grid; gap: .4rem; font-size: .8rem; margin-bottom: 1rem; }
    .settings-category-picker select { min-height: 44px; width: 100%; background: var(--card-bg); color: var(--text-primary); border: 1px solid var(--border-color); padding: .6rem; border-radius: 8px; }
    #settings-view .settings-section { padding: 1rem 0; }
}
@media (prefers-reduced-motion: reduce) { .overview-app, .overview-meter i { transition: none; } }
