:root {
    --bg: var(--pr-bg-app);
    --sidebar: var(--pr-bg-chrome);
    --surface: var(--pr-bg-card);
    --surface-raised: var(--pr-bg-control);
    --border: var(--pr-border);
    --text: var(--pr-text);
    --muted: var(--pr-text-muted);
    --green: var(--pr-success-text);
    --blue: var(--pr-accent);
    --red: var(--pr-danger-text);
    --amber: var(--pr-warning);
    --disabled: var(--pr-bg-badge);
    --orange: var(--pr-accent);
    --orange-hover: var(--pr-accent-hover);
}

html, body {
    height: 100%;
    margin: 0;
}

body {
    font-family: var(--pr-font-ui);
    background: var(--bg);
    color: var(--text);
    overflow: hidden;
}

button {
    font-family: inherit;
}

.app-shell {
    display: flex;
    flex-direction: column;
    height: 100vh;
    min-width: 0;
}

.pr-header {
    position: sticky;
    top: 0;
    z-index: 20;
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
    min-height: var(--pr-header-height);
    padding: 12px 18px;
    background: var(--pr-bg-chrome);
    border-bottom: 1px solid var(--pr-border);
    white-space: nowrap;
    box-sizing: border-box;
}

.pr-brand {
    display: flex;
    align-items: center;
    gap: 11px;
    flex: none;
    min-width: 0;
}

.pr-brand-mark {
    display: block;
    flex: none;
    width: 34px;
    height: 34px;
    border-radius: 9px;
    object-fit: cover;
    user-select: none;
}

.pr-brand-text {
    min-width: 0;
}

.brand {
    font-size: 15px;
    font-weight: 600;
    letter-spacing: var(--pr-ls-brand);
    color: var(--pr-brand-gold);
    line-height: 1.2;
}

.brand-sub {
    margin-top: 2px;
    font-size: var(--pr-fs-label);
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--pr-text-muted);
}

.pr-context-pill {
    display: flex;
    align-items: center;
    gap: var(--pr-space-3);
    flex: 0 1 auto;
    min-width: 0;
    max-width: 360px;
    padding: 6px 12px;
    background: var(--pr-bg-raised);
    border: 1px solid var(--pr-border);
    border-radius: var(--pr-radius-button);
    font-size: var(--pr-fs-body-sm);
    color: var(--pr-text-secondary);
    overflow: hidden;
}

.pr-context-pill[hidden],
.pr-context-workspace[hidden],
.pr-context-world[hidden] {
    display: none;
}

.pr-context-workspace {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

.pr-context-world {
    flex: 0 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-mono-sm);
    color: var(--pr-text-muted);
}

.pr-header-spacer {
    flex: 1 1 auto;
    min-width: 8px;
}

.pr-header-stats {
    display: flex;
    align-items: center;
    gap: 14px;
    flex: 0 1 auto;
    min-width: 0;
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: none;
}

.pr-header-stats::-webkit-scrollbar {
    display: none;
}

.pr-header-stats--session {
    padding-left: 4px;
}

.pr-header-stats .pr-metric-value.is-stale {
    color: var(--pr-text-muted);
    text-decoration: underline dotted;
    text-underline-offset: 3px;
}

.pr-header-stats .pr-metric-value {
    font-size: var(--pr-fs-body);
}

.pr-header-stats .pr-metric-value.is-unavailable {
    color: var(--pr-text-disabled);
}

.pr-header-stat--gold .pr-metric-value:not(.is-unavailable) {
    color: var(--pr-warning);
}

.pr-header-stats-sep {
    flex: none;
    width: 1px;
    height: 24px;
    background: rgba(255, 255, 255, 0.09);
}

.pr-body {
    flex: 1 1 auto;
    display: flex;
    min-height: 0;
    min-width: 0;
}

.sidebar {
    flex: 0 0 var(--pr-sidebar-width);
    width: var(--pr-sidebar-width);
    background: var(--pr-bg-chrome);
    border-right: 1px solid var(--pr-border);
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 16px 12px;
    box-sizing: border-box;
    overflow-y: auto;
}

.pr-nav-section {
    padding: 4px 10px 8px;
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-label);
    letter-spacing: var(--pr-ls-label);
    text-transform: uppercase;
    color: var(--pr-text-section);
}

.nav {
    display: flex;
    flex-direction: column;
    gap: 4px;
    flex: 1 0 auto;
}

.nav-item {
    display: flex;
    align-items: center;
    gap: 11px;
    width: 100%;
    text-align: left;
    background: transparent;
    color: var(--pr-text-secondary);
    border: none;
    border-radius: var(--pr-radius-nav);
    padding: 9px 11px;
    font-size: var(--pr-fs-nav);
    line-height: 1.25;
    cursor: pointer;
    box-sizing: border-box;
}

.nav-item::before {
    content: "";
    flex: none;
    width: 7px;
    height: 7px;
    border-radius: 2px;
    background: currentColor;
    opacity: 0.55;
}

.nav-item:hover {
    background: var(--pr-bg-hover-nav);
    color: var(--pr-text);
}

.nav-item.active {
    background: var(--pr-bg-control);
    color: var(--pr-text);
}

.nav-item:focus-visible {
    outline: var(--pr-focus-width) solid var(--pr-focus-color);
    outline-offset: -2px;
}

.sidebar-bottom {
    position: sticky;
    bottom: 0;
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    gap: 11px;
    margin-top: 12px;
    padding: 14px;
    box-shadow: 0 12px 0 0 var(--pr-bg-chrome), 0 -12px 0 0 var(--pr-bg-chrome);
    background: var(--pr-bg-raised);
    border: 1px solid var(--pr-border);
    border-radius: var(--pr-radius-panel);
}

.dev-mode-indicator {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 8px;
    padding: 6px 8px;
    border-radius: 9px;
    border: 1px solid var(--pr-warning);
    background: var(--pr-bg-inset);
}

.dev-mode-indicator[hidden] {
    display: none;
}

.dev-mode-badge {
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-label);
    font-weight: 600;
    letter-spacing: 0.08em;
    color: var(--pr-warning);
}

.dev-mode-text {
    font-size: var(--pr-fs-mono-sm);
    color: var(--pr-text-secondary);
}

.sidebar-release {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.release-identity-line {
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-label-lg);
    line-height: 1.4;
    color: var(--pr-text-muted);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.update-status-row {
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-label-lg);
    line-height: 1.35;
    color: var(--pr-text-muted);
}

.update-status-row[hidden],
.update-status-hint[hidden],
.update-action-button[hidden] {
    display: none;
}

.update-status-row[data-tone="info"] .update-status-text { color: var(--pr-text); }
.update-status-row[data-tone="success"] .update-status-text { color: var(--pr-success-text); }
.update-status-row[data-tone="warning"] .update-status-text { color: var(--pr-warning); }
.update-status-row[data-tone="error"] .update-status-text { color: var(--pr-danger-text); }

.update-status-hint {
    color: var(--pr-text-muted);
}

.update-action-button {
    width: 100%;
    margin-top: 2px;
    padding: 6px 10px;
    border-radius: var(--pr-radius-input);
    border: 1px solid var(--pr-border-control);
    background: var(--pr-bg-control);
    color: var(--pr-text);
    font-family: var(--pr-font-ui);
    font-size: var(--pr-fs-small);
    cursor: pointer;
}

.update-action-button:hover:not(:disabled) {
    background: var(--pr-bg-hover-control);
}

.update-action-button:disabled {
    cursor: not-allowed;
    opacity: 0.6;
}

.language-row {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.language-label,
.sidebar-lifecycle-label {
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-label);
    letter-spacing: var(--pr-ls-label);
    text-transform: uppercase;
    color: var(--pr-text-muted);
}

.language-select {
    width: 100%;
    background: var(--pr-bg-control);
    border: 1px solid rgba(255, 255, 255, 0.09);
    border-radius: var(--pr-radius-input);
    color: var(--pr-text);
    padding: 7px 8px;
    font-size: var(--pr-fs-body-sm);
    font-family: inherit;
    cursor: pointer;
}

.language-select:hover {
    border-color: var(--pr-border-open);
}

.sidebar-lifecycle-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.debug-cursor-row {
    cursor: pointer;
}

.debug-cursor-row[hidden] {
    display: none;
}

#primaryLifecycleButton {
    width: 100%;
    padding: 9px 0;
    border-radius: var(--pr-radius-button);
    border: 1px solid var(--pr-border-control);
    background: var(--pr-bg-control);
    color: var(--pr-text-secondary);
    font-size: var(--pr-fs-body);
    font-weight: 600;
    cursor: pointer;
    transition: background-color 120ms ease, border-color 120ms ease;
}

#primaryLifecycleButton.action-start {
    background: var(--pr-accent);
    border-color: var(--pr-accent);
    color: var(--pr-accent-contrast);
}

#primaryLifecycleButton.action-start:hover:not(:disabled) {
    background: var(--pr-accent-hover);
    border-color: var(--pr-accent-hover);
}

#primaryLifecycleButton.action-stop {
    background: transparent;
    border-color: var(--pr-danger-border);
    color: var(--pr-danger-text);
}

#primaryLifecycleButton.action-stop:hover:not(:disabled) {
    background: var(--pr-danger-tint);
}

#primaryLifecycleButton:disabled {
    cursor: not-allowed;
    opacity: 0.6;
}

.main {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    min-width: 0;
    min-height: 0;
}

.topbar {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px 16px;
    margin: 20px 22px 0;
    padding: 11px 16px;
    background: var(--pr-bg-chrome);
    border: 1px solid var(--pr-border);
    border-radius: var(--pr-radius-strip);
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-small);
    color: var(--pr-text-secondary);
    min-width: 0;
}

.topbar .topbar-item {
    min-width: 0;
    overflow-wrap: anywhere;
}

.topbar .topbar-item strong {
    color: var(--pr-text);
}

.topbar-sep {
    flex: none;
    width: 1px;
    height: 16px;
    background: rgba(255, 255, 255, 0.09);
}

.topbar-spacer {
    flex: 1 1 20px;
    min-width: 20px;
}

.topbar-activity {
    flex: 0 1 auto;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    font-family: var(--pr-font-ui);
    font-size: var(--pr-fs-body-sm);
    min-width: 0;
    margin: 0;
    padding: 2px 8px;
    border: 1px solid transparent;
    border-radius: var(--pr-radius-badge);
    background: none;
    color: var(--pr-text-secondary);
    text-align: left;
    cursor: pointer;
}

.topbar-activity:hover { color: var(--pr-text); }
.topbar-activity:focus-visible { outline: 2px solid var(--pr-accent); outline-offset: 1px; }
.topbar-activity.is-alert-warning { background: var(--pr-warning-tint); border-color: var(--pr-warning-border); color: var(--pr-warning); }
.topbar-activity.is-alert-error { background: var(--pr-danger-tint); border-color: var(--pr-danger-border); color: var(--pr-danger-text); }

.topbar-next-label {
    flex: none;
    font-size: var(--pr-fs-label);
    letter-spacing: 0.09em;
    text-transform: uppercase;
    color: var(--pr-text-muted);
}

.topbar-next {
    font-family: var(--pr-font-ui);
    font-size: var(--pr-fs-body-sm);
}

.topbar-activity.is-muted,
.topbar-next.is-muted { color: var(--pr-text-muted); }
.topbar-next.is-default { color: var(--pr-text); }

.topbar .error {
    font-family: var(--pr-font-ui);
    font-size: var(--pr-fs-body-sm);
    min-width: 0;
    overflow-wrap: anywhere;
}

.inspection-banner {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
    margin: 12px 22px 0;
    padding: 10px 16px;
    border: 1px solid var(--pr-warning-border);
    border-radius: var(--pr-radius-strip);
    background: var(--pr-warning-tint);
    font-size: var(--pr-fs-body-sm);
    color: var(--pr-warning);
}

.inspection-banner[hidden] {
    display: none;
}

.inspection-banner-badge {
    flex: none;
    padding: 3px 8px;
    border-radius: 6px;
    border: 1px solid var(--pr-warning-border);
    background: var(--pr-warning-tint);
    color: var(--pr-warning);
    font-family: var(--pr-font-mono);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.inspection-banner-text {
    min-width: 0;
    color: var(--pr-warning);
}

.page-cover-banner {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px 12px;
    margin: 12px 22px 0;
    padding: 10px 16px;
    border: 1px solid var(--pr-danger-border-strong);
    border-left: 4px solid var(--pr-danger);
    border-radius: var(--pr-radius-strip);
    background: var(--pr-danger-tint);
    font-size: var(--pr-fs-body-sm);
    color: var(--pr-danger-text);
    overflow-wrap: anywhere;
}

.page-cover-banner[hidden],
.page-cover-banner-details[hidden],
.page-cover-banner-telegram[hidden] {
    display: none;
}

.page-cover-banner-badge {
    flex: none;
    padding: 3px 8px;
    border-radius: 6px;
    border: 1px solid var(--pr-danger-border);
    background: var(--pr-danger);
    color: #fff;
    font-family: var(--pr-font-mono);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.page-cover-banner-text {
    min-width: 0;
    font-weight: 600;
    color: var(--pr-danger-text);
}

.page-cover-banner-details {
    min-width: 0;
    color: var(--pr-danger-text);
}

.page-cover-banner-telegram {
    flex: none;
    padding: 2px 8px;
    border-radius: 6px;
    border: 1px dashed var(--pr-danger-border-strong);
    font-weight: 600;
    color: var(--pr-danger-text);
}

.error {
    color: var(--red);
    font-size: 12px;
}

.main-content {
    flex: 1 1 auto;
    min-height: 0;
    min-width: 0;
    overflow-y: auto;
    overflow-x: auto;
    padding: 18px 22px 40px;
    box-sizing: border-box;
}

.view {
    display: none;
}

.view.active {
    display: block;
}

.view-header {
    font-size: var(--pr-fs-page-title);
    font-weight: 700;
    letter-spacing: var(--pr-ls-title);
    line-height: 1.2;
    color: var(--pr-text);
    margin: 0 0 18px;
}

.view-subheader {
    font-size: var(--pr-fs-body);
    color: var(--pr-text-secondary);
    margin: -12px 0 18px;
}

.badge {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    min-width: 0;
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-mono-sm);
    color: var(--pr-text-muted);
}

.badge::before {
    content: "";
    flex: none;
    width: var(--pr-dot-size);
    height: var(--pr-dot-size);
    border-radius: 50%;
    background: var(--pr-text-muted);
}

.badge-stopped { color: var(--pr-text-muted); }
.badge-starting,
.badge-stopping { color: var(--pr-warning); }
.badge-starting::before,
.badge-stopping::before { background: var(--pr-warning); }
.badge-running { color: var(--pr-success-text); }
.badge-running::before { background: var(--pr-success-dot); }
.badge-auth-failed,
.badge-error { color: var(--pr-danger-text); }
.badge-auth-failed::before,
.badge-error::before { background: var(--pr-danger-text); }
.badge-unknown { color: var(--pr-text-disabled); }
.badge-unknown::before { background: var(--pr-text-disabled); }

@media (max-width: 1280px) {
    .brand-sub {
        display: none;
    }

    .pr-context-pill {
        max-width: 260px;
    }
}

@media (max-width: 1160px) {
    .pr-village-trigger-label,
    .pr-village-trigger-meta {
        display: none;
    }

    .pr-village-trigger-name {
        max-width: 160px;
    }

    .pr-context-pill {
        max-width: 200px;
    }
}

@media (max-width: 1000px) {
    .pr-context-pill {
        display: none;
    }

    .pr-header-stats {
        gap: 10px;
    }
}

@media (max-width: 900px) {
    .pr-brand-text {
        display: none;
    }
}

@media (max-height: 760px) {
    .sidebar .nav-item {
        padding-top: 7px;
        padding-bottom: 7px;
    }
}

.mode-badge {
    display: inline-block;
    padding: 1px 7px;
    border-radius: 3px;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.mode-live { background: var(--red); color: #2a0708; }
.mode-observer { background: var(--blue); color: #06122a; }
.mode-amber { background: var(--amber); color: #2a1c02; }
.mode-neutral { background: var(--disabled); color: var(--muted); }

.countdown-pill {
    display: inline-block;
    min-width: 42px;
    padding: 1px 7px;
    border-radius: 3px;
    font-size: 11px;
    font-weight: 700;
    font-family: ui-monospace, Menlo, monospace;
    text-align: center;
    background: var(--amber);
    color: #2a1c02;
}

.countdown-pill.countdown-unavailable {
    background: var(--disabled);
    color: var(--muted);
    font-weight: 600;
}

.dashboard-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 14px;
}

.module-card {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 4px;
    padding: 14px;
}

.module-title {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--muted);
    margin: 0 0 8px;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--border);
}

.module-meta {
    font-size: 12px;
    color: var(--muted);
    margin-top: 8px;
    line-height: 1.6;
}

.readonly-status {
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.03em;
}

.readonly-status.state-active { color: var(--green); }
.readonly-status.state-inactive { color: var(--muted); }
.readonly-status.state-warning { color: var(--amber); }
.readonly-status.state-danger { color: var(--red); }

.status-list {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-top: 10px;
}

.status-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    font-size: 12px;
    color: var(--muted);
}

.status-row .status-value {
    color: var(--text);
    font-weight: 600;
    text-align: right;
}

.status-row.upgrade-all-wrap-row {
    display: block;
    overflow-wrap: anywhere;
}

.status-row.upgrade-all-finding-row {
    color: var(--amber);
}

.upgrade-all-diagnostics-toggle {
    align-self: flex-start;
    margin-top: 2px;
    padding: 4px 10px;
    font-size: 11px;
    border-radius: 4px;
    border: 1px solid var(--border);
    background: var(--surface-raised);
    color: var(--muted);
    cursor: pointer;
}

.upgrade-all-diagnostics-list {
    margin-top: 2px;
}

.feature-toggle {
    display: block;
    width: 100%;
    box-sizing: border-box;
    padding: 12px 14px;
    font-size: 14px;
    font-weight: 700;
    letter-spacing: 0.02em;
    border-radius: 4px;
    border: 1px solid var(--border);
    cursor: pointer;
    text-align: left;
}

.feature-toggle.feature-on {
    background: var(--green);
    color: #06210f;
    border-color: var(--green);
}

.feature-toggle.feature-off {
    background: var(--surface-raised);
    color: var(--text);
}

.feature-toggle.feature-pending {
    background: var(--disabled);
    color: var(--muted);
    cursor: not-allowed;
}

.feature-toggle:disabled {
    cursor: not-allowed;
    opacity: 0.7;
}

.strategy-row {
    display: flex;
    gap: 8px;
    margin: 12px 0;
}

.strategy-button {
    padding: 6px 14px;
    font-size: 12px;
    border-radius: 4px;
    border: 1px solid var(--border);
    background: var(--surface-raised);
    color: var(--text);
    cursor: pointer;
}

.strategy-button.strategy-selected {
    background: var(--amber);
    border-color: var(--amber);
    color: #2a1c02;
    font-weight: 700;
}

.strategy-button:disabled {
    cursor: not-allowed;
    opacity: 0.6;
}

.page-card {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 4px;
    padding: 16px;
    max-width: 560px;
}

.page-card .feature-toggle {
    margin-bottom: 4px;
}

.page-card-spaced {
    margin-top: 14px;
}

.checkbox-row {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 10px 0;
    font-size: 13px;
    color: var(--text);
    cursor: pointer;
}

.checkbox-row input[type="checkbox"] {
    width: 15px;
    height: 15px;
    cursor: pointer;
}

.settings-card {
    max-width: 560px;
}

.settings-card-title {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--muted);
    margin: 0 0 12px;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--border);
}

.settings-field {
    margin-bottom: 16px;
}

.settings-label {
    display: block;
    font-size: 12px;
    color: var(--muted);
    margin-bottom: 6px;
}

.settings-row {
    display: flex;
    align-items: center;
    gap: 8px;
}

.settings-row-sep {
    color: var(--muted);
}

.settings-unit {
    font-size: 12px;
    color: var(--muted);
}

.settings-input {
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: 4px;
    color: var(--text);
    padding: 7px 9px;
    font-size: 13px;
    font-family: inherit;
}

.settings-input-small {
    width: 72px;
}

.settings-input:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

.settings-input-invalid {
    border-color: var(--red);
}

.pr-input.settings-input-invalid {
    border-color: var(--pr-danger-border-strong);
}

.pr-farm-layout {
    display: grid;
    grid-template-columns: 340px minmax(0, 1fr);
    gap: 14px;
    align-items: start;
}

.pr-farm-control {
    gap: 12px;
}

.pr-farm-settings {
    gap: 0;
    padding: 14px 18px;
}

.pr-farm-settings > .pr-card-header {
    padding-bottom: 10px;
}

.pr-farm-settings .settings-shared-banner,
.pr-farm-settings .settings-error:not(:empty),
.pr-farm-settings .settings-success:not(:empty) {
    margin: 0 0 12px;
}

.pr-farm-settings .settings-error:empty,
.pr-farm-settings .settings-success:empty {
    display: none;
}

@media (max-width: 960px) {
    .pr-farm-layout {
        grid-template-columns: minmax(0, 1fr);
    }
}

.settings-help {
    font-size: 11px;
    color: var(--muted);
    margin-top: 4px;
    line-height: 1.4;
}

.settings-hidden {
    display: none;
}

.yellow-sword-list {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 8px;
}

.yellow-sword-list:empty {
    display: none;
}

.yellow-sword-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: var(--surface-raised);
    border: 1px solid var(--border);
    border-radius: 999px;
    padding: 4px 6px 4px 12px;
    font-size: 12px;
}

.yellow-sword-chip-remove {
    background: transparent;
    border: none;
    color: var(--muted);
    font-size: 13px;
    line-height: 1;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    cursor: pointer;
}

.yellow-sword-chip-remove:hover {
    background: var(--disabled);
    color: var(--text);
}

.yellow-sword-add-row {
    display: flex;
    gap: 8px;
}

.yellow-sword-add-row .settings-input {
    flex: 1 1 auto;
}

.yellow-sword-add-row button {
    padding: 7px 12px;
    font-size: 12px;
    border-radius: 4px;
    border: 1px solid var(--border);
    background: var(--surface-raised);
    color: var(--text);
    cursor: pointer;
    white-space: nowrap;
}

.settings-error {
    color: var(--red);
    font-size: 12px;
    min-height: 16px;
    margin-bottom: 8px;
}

.settings-shared-banner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    padding: 8px 10px;
    margin-bottom: 8px;
    border: 1px solid var(--amber);
    border-radius: 6px;
    color: var(--amber);
    font-size: 12px;
}

.settings-shared-banner.settings-hidden {
    display: none;
}

.settings-success {
    color: var(--green);
    font-size: 12px;
    min-height: 16px;
    margin-bottom: 8px;
}

.settings-actions {
    display: flex;
    gap: 8px;
}

.settings-actions button {
    padding: 8px 16px;
    font-size: 13px;
    font-weight: 600;
    border-radius: 4px;
    border: 1px solid var(--border);
    background: var(--blue);
    color: #06122a;
    cursor: pointer;
}

.settings-actions button.settings-secondary-button {
    background: var(--surface-raised);
    color: var(--text);
    font-weight: 500;
}

.settings-actions button:disabled {
    cursor: not-allowed;
    opacity: 0.6;
}


.badge-pill {
    display: inline-block;
    padding: 1px 7px;
    border-radius: 3px;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    white-space: nowrap;
}

.badge-pill.state-danger { background: var(--red); color: #2a0708; }
.badge-pill.state-warning { background: var(--amber); color: #2a1c02; }
.badge-pill.state-active { background: var(--green); color: #06210f; }
.badge-pill.state-inactive { background: var(--disabled); color: var(--muted); }

.badge-pill.queue-status-planned,
.badge-pill.queue-status-skipped,
.badge-pill.queue-status-unknown { background: var(--disabled); color: var(--muted); }
.badge-pill.queue-status-waiting { background: var(--amber); color: #2a1c02; }
.badge-pill.queue-status-ready { background: var(--blue); color: #04122e; }
.badge-pill.queue-status-running,
.badge-pill.queue-status-completed { background: var(--green); color: #06210f; }
.badge-pill.queue-status-blocked,
.badge-pill.queue-status-failed { background: var(--red); color: #2a0708; }
.badge-pill.queue-status-held { background: transparent; color: var(--amber); border: 1px solid var(--amber); }

.queue-bot-row { cursor: pointer; }
.queue-bot-row:hover { background: var(--surface-raised); }

.queue-summary-card {
    margin-top: 10px;
    padding: 10px 12px;
    border-radius: 8px;
    background: var(--surface-raised);
}

.queue-order-mode {
    margin-top: 10px;
}

.queue-order-mode .readonly-status {
    margin-top: 6px;
}

.queue-group-cards {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-top: 10px;
}

.queue-group-card {
    padding: 10px 12px;
    border-radius: 8px;
    background: var(--surface-raised);
}

.queue-group-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.queue-group-title {
    font-size: 13px;
    font-weight: 700;
    color: var(--text);
}

.queue-delete-button {
    padding: 2px 8px;
    font-size: 11px;
    border-radius: 4px;
    border: 1px solid var(--border);
    background: transparent;
    color: var(--muted);
    cursor: pointer;
}

.queue-force-delete-button {
    padding: 6px 14px;
    font-size: 12px;
    border-radius: 4px;
    border: 1px solid var(--red, #b4453c);
    background: transparent;
    color: var(--red, #b4453c);
    cursor: pointer;
}

.queue-resume-button {
    margin-left: auto;
    padding: 2px 8px;
    font-size: 11px;
    border-radius: 4px;
    border: 1px solid var(--amber);
    background: transparent;
    color: var(--amber);
    cursor: pointer;
}

.queue-resume-button:hover {
    color: var(--text);
    background: var(--surface);
}

.queue-resume-button:disabled,
.queue-held-card .queue-delete-button:disabled {
    opacity: 0.5;
    cursor: default;
}

.queue-held-card {
    border: 1px solid var(--amber);
}

.queue-held-reason {
    margin-top: 4px;
    font-size: 12px;
    font-weight: 600;
    color: var(--amber);
}

.queue-delete-button:hover {
    color: var(--text);
    background: var(--surface);
}

.queue-group-levels {
    margin-top: 2px;
}

.queue-step-row { cursor: pointer; margin-top: 8px; }
.queue-step-row:hover { background: var(--surface); }

.queue-step-right {
    display: flex;
    align-items: center;
    gap: 8px;
}

.queue-step-time {
    font-variant-numeric: tabular-nums;
    font-family: monospace;
    color: var(--text);
    font-weight: 600;
}

.queue-step-cost {
    margin-top: 2px;
    margin-bottom: 4px;
    font-variant-numeric: tabular-nums;
}

















.attack-target-row {
    display: flex;
    align-items: center;
    gap: 8px;
    background: var(--surface-raised);
    border: 1px solid var(--border);
    border-radius: 4px;
    padding: 6px 10px;
    font-size: 12px;
}

.attack-target-row-label {
    flex: 1 1 auto;
}



.village-row {
    display: block;
    width: 100%;
    text-align: left;
    background: transparent;
    border: none;
    border-bottom: 1px solid var(--border);
    color: var(--text);
    padding: 10px 12px;
    font-size: 12px;
    cursor: pointer;
}

.village-row:hover {
    background: var(--surface-raised);
}

.village-row.village-selected {
    background: var(--surface-raised);
    box-shadow: inset 3px 0 0 var(--blue);
}



.modal-overlay {
    position: fixed;
    inset: 0;
    background: var(--pr-overlay);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 300;
}

.modal-overlay.modal-hidden {
    display: none;
}

.modal {
    width: 100%;
    max-width: 440px;
    margin: 0 20px;
    background: var(--pr-bg-card);
    border: 1px solid var(--pr-border-control-strong);
    border-radius: var(--pr-radius-modal);
    padding: 22px 24px;
    box-shadow: var(--pr-shadow-dropdown);
    box-sizing: border-box;
}

.modal-title {
    font-size: var(--pr-fs-modal-title);
    font-weight: 700;
    margin-bottom: 10px;
}

.modal-body {
    font-size: 13.5px;
    color: var(--pr-text-secondary);
    line-height: 1.6;
    margin-bottom: 20px;
}

.modal-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
}

.modal-actions button {
    padding: 9px 18px;
    font-size: var(--pr-fs-body);
    font-weight: 600;
    border-radius: var(--pr-radius-button);
    border: 1px solid var(--pr-border-control-strong);
    background: transparent;
    color: var(--pr-text-secondary);
    cursor: pointer;
}

.modal-actions button:hover:not(:disabled) {
    background: var(--pr-bg-hover);
    color: var(--pr-text);
}

.modal-confirm-button,
.modal-actions .modal-confirm-button {
    background: var(--pr-accent);
    border-color: var(--pr-accent);
    color: var(--pr-accent-contrast);
}

.modal-actions .modal-confirm-button:hover:not(:disabled) {
    background: var(--pr-accent-hover);
    border-color: var(--pr-accent-hover);
    color: var(--pr-accent-contrast);
}

#logPanel {
    height: 100%;
    display: flex;
    flex-direction: column;
    border: 1px solid var(--border);
    border-radius: 4px;
    overflow: hidden;
}

#logContainer {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 10px;
    font-family: ui-monospace, Menlo, monospace;
    font-size: 12px;
    background: #0a0c0f;
    color: #c7ccd1;
}

.log-line {
    white-space: pre-wrap;
    word-break: break-word;
    padding: 1px 0;
}

.log-line.log-warn {
    color: var(--amber);
}

.log-line.log-error {
    color: var(--red);
}

.view[data-view="logs"] {
    height: 100%;
    box-sizing: border-box;
    display: none;
    flex-direction: column;
}

.view[data-view="logs"].active {
    display: flex;
}

.view[data-view="logs"] .view-header {
    flex: 0 0 auto;
}

.view[data-view="logs"] #logPanel {
    flex: 1 1 auto;
    min-height: 0;
}

.view[data-view="logs"] .logs-tabs {
    flex: 0 0 auto;
}

#logPanel[hidden],
.events-journal[hidden] {
    display: none;
}

.events-journal {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.events-journal-filters {
    flex: 0 0 auto;
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}

.events-journal-filter {
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--pr-text-secondary);
    font-size: var(--pr-fs-small);
}

.events-journal-new {
    flex: 0 0 auto;
    align-self: center;
    padding: 4px 12px;
    border: 1px solid var(--pr-accent-border);
    border-radius: var(--pr-radius-chip);
    background: var(--pr-accent-tint);
    color: var(--pr-text);
    font-size: var(--pr-fs-small);
    cursor: pointer;
}

.events-journal-new[hidden] {
    display: none;
}

.events-journal-list {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    border: 1px solid var(--pr-border);
    border-radius: var(--pr-radius-panel);
    background: var(--pr-bg-card);
}

.events-row {
    border-bottom: 1px solid var(--pr-border-divider);
}

.events-row-toggle {
    display: flex;
    align-items: baseline;
    gap: 10px;
    width: 100%;
    padding: 6px 12px;
    border: none;
    background: transparent;
    color: var(--pr-text);
    font-size: var(--pr-fs-body-sm);
    text-align: left;
    cursor: pointer;
}

.events-row-toggle:hover {
    background: var(--pr-bg-hover);
}

.events-row-time {
    flex: 0 0 auto;
    color: var(--pr-text-muted);
    font-size: var(--pr-fs-mono-sm);
}

.events-row-module {
    flex: 0 0 130px;
    font-weight: 600;
    font-size: var(--pr-fs-small);
}

.events-row-text {
    flex: 1 1 auto;
    min-width: 0;
    word-break: break-word;
}

.events-row-village {
    flex: 0 0 auto;
    color: var(--pr-text-muted);
    font-size: var(--pr-fs-small);
}

.events-severity--success { color: var(--pr-success-text); }
.events-severity--warning { color: var(--pr-warning); }
.events-severity--error { color: var(--pr-danger-text); }

.events-module--farm { color: oklch(0.78 0.12 130); }
.events-module--military { color: oklch(0.72 0.14 30); }
.events-module--build { color: oklch(0.78 0.11 75); }
.events-module--npc { color: oklch(0.80 0.10 95); }
.events-module--market { color: oklch(0.74 0.11 200); }
.events-module--hero { color: oklch(0.74 0.12 300); }
.events-module--attackDetection { color: oklch(0.68 0.17 20); }
.events-module--autoDodge { color: oklch(0.72 0.10 250); }
.events-module--license { color: oklch(0.75 0.06 60); }
.events-module--session { color: oklch(0.72 0.03 260); }
.events-module--system { color: oklch(0.70 0.01 250); }

.events-row-details {
    display: grid;
    grid-template-columns: max-content 1fr;
    gap: 4px 14px;
    margin: 0;
    padding: 6px 12px 10px 12px;
    background: var(--pr-bg-inset);
    font-size: var(--pr-fs-small);
}

.events-row-details dt {
    color: var(--pr-text-muted);
}

.events-row-details dd {
    margin: 0;
    color: var(--pr-text-list);
    word-break: break-word;
}

.events-journal-empty {
    padding: 16px 12px;
}

.template-editor-overlay {
    z-index: 200;
}

.template-editor-modal {
    width: 92vw;
    height: 88vh;
    max-width: 1400px;
    margin: 0;
    background: var(--pr-bg-card);
    border: 1px solid var(--pr-border-control-strong);
    border-radius: var(--pr-radius-modal);
    box-shadow: var(--pr-shadow-dropdown);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.template-editor-header {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 18px;
    border-bottom: 1px solid var(--border);
}

.template-editor-title {
    font-size: 15px;
    font-weight: 700;
}

.template-editor-close-button {
    background: transparent;
    border: none;
    color: var(--muted);
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
    padding: 2px 6px;
    border-radius: 4px;
}

.template-editor-close-button:hover {
    background: var(--disabled);
    color: var(--text);
}

/* The Direct BUILD modals size to their content but never past the viewport, and the only thing
   that grows is the middle scroll region: the header and the action footer must stay reachable
   however long the empty-slot building list is. min-height:0 is what actually lets the scroll
   region shrink inside the flex column instead of overflowing the clipped modal. */
.direct-modal {
    height: auto;
    max-height: 88vh;
}

.direct-modal-scroll {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 12px 18px;
}

.direct-modal-card {
    max-width: none;
}

.direct-modal-footer {
    flex: 0 0 auto;
    border-top: 1px solid var(--border);
    padding: 12px 18px;
    background: var(--surface-raised);
}

.template-editor-body {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
}

.template-editor-left {
    flex: 0 0 260px;
    width: 260px;
    border-right: 1px solid var(--border);
    display: flex;
    flex-direction: column;
    padding: 14px;
    box-sizing: border-box;
    overflow-y: auto;
}

.template-editor-left-heading {
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--muted);
    margin-bottom: 8px;
}

.template-editor-list {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    gap: 4px;
    overflow-y: auto;
    margin-bottom: 10px;
}

.template-editor-list-item {
    display: block;
    width: 100%;
    text-align: left;
    background: transparent;
    color: var(--text);
    border: 1px solid transparent;
    border-radius: 4px;
    padding: 8px 10px;
    font-size: 13px;
    cursor: pointer;
}

.template-editor-list-item:hover {
    background: var(--surface);
}

.template-editor-list-item.template-editor-list-item-selected {
    background: var(--surface);
    border-color: var(--blue);
}

.template-editor-empty {
    margin-bottom: 10px;
}

.template-editor-left-actions {
    flex: 0 0 auto;
    display: flex;
    gap: 6px;
}

.template-editor-left-actions button {
    flex: 1 1 auto;
    padding: 7px 8px;
    font-size: 12px;
    font-weight: 600;
    border-radius: 4px;
    border: 1px solid var(--border);
    background: var(--surface-raised);
    color: var(--text);
    cursor: pointer;
}

.template-editor-left-actions button:disabled {
    cursor: not-allowed;
    opacity: 0.5;
}

.settings-danger-button {
    background: var(--red) !important;
    border-color: var(--red) !important;
    color: #2a0708 !important;
}

.template-editor-right {
    flex: 1 1 auto;
    min-width: 0;
    padding: 14px 18px;
    box-sizing: border-box;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
}

.template-editor-right-content {
    display: flex;
    flex-direction: column;
    min-height: 0;
    flex: 1 1 auto;
}

.template-editor-meta-row {
    display: flex;
    align-items: flex-end;
    gap: 16px;
    margin-bottom: 14px;
}

.template-editor-name-field {
    flex: 1 1 auto;
    max-width: 420px;
}

.template-editor-dirty-indicator {
    color: var(--amber);
    font-size: 12px;
    font-weight: 600;
    margin-bottom: 8px;
}

.template-editor-toolbar {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 12px;
    flex-wrap: wrap;
}

.template-editor-toolbar button {
    padding: 7px 12px;
    font-size: 12px;
    font-weight: 600;
    border-radius: 4px;
    border: 1px solid var(--border);
    background: var(--surface-raised);
    color: var(--text);
    cursor: pointer;
}

.template-editor-toolbar button:disabled {
    cursor: not-allowed;
    opacity: 0.5;
}

.template-editor-toolbar-sep {
    width: 1px;
    align-self: stretch;
    background: var(--border);
    margin: 0 2px;
}

.template-editor-table-wrap {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
    border: 1px solid var(--border);
    border-radius: 4px;
}

.template-editor-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
}

.template-editor-table th {
    position: sticky;
    top: 0;
    text-align: left;
    background: var(--surface);
    color: var(--muted);
    font-weight: 700;
    padding: 8px 10px;
    border-bottom: 1px solid var(--border);
}

.template-editor-table td {
    padding: 6px 10px;
    border-bottom: 1px solid var(--border);
    color: var(--text);
    vertical-align: middle;
}

.template-editor-table tbody tr:hover {
    background: var(--surface);
}

.template-editor-table tbody tr.template-editor-row-selected {
    background: var(--surface);
    box-shadow: inset 3px 0 0 var(--blue);
}

.template-editor-table tbody tr.build-proposal-row-generated {
    box-shadow: inset 3px 0 0 var(--amber);
}

.template-editor-table tbody tr.build-proposal-row-generated td:first-child {
    color: var(--amber);
}

.template-editor-table select,
.template-editor-table input[type="number"] {
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: 4px;
    color: var(--text);
    padding: 4px 6px;
    font-size: 12px;
    font-family: inherit;
    width: 100%;
    box-sizing: border-box;
}

.template-editor-table input[type="number"] {
    width: 70px;
}

.template-editor-row-delete-button {
    background: transparent;
    border: 1px solid var(--red);
    color: var(--red);
    border-radius: 4px;
    padding: 4px 8px;
    font-size: 12px;
    cursor: pointer;
}

.template-editor-footer {
    flex: 0 0 auto;
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: 14px 18px;
    border-top: 1px solid var(--border);
}

.template-editor-footer button {
    padding: 8px 18px;
    font-size: 13px;
    font-weight: 600;
    border-radius: 4px;
    border: 1px solid var(--border);
    cursor: pointer;
}

#buildTemplateEditorSave {
    background: var(--green);
    border-color: var(--green);
    color: #06210f;
}

#buildTemplateEditorSave:disabled {
    cursor: not-allowed;
    opacity: 0.5;
}

.build-ops-header {
    font-size: 12px;
    color: var(--muted);
    margin-bottom: 6px;
}

.build-ops-layout {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    align-items: flex-start;
    margin-top: 10px;
}

.build-ops-overview {
    flex: 0 1 300px;
    min-width: 0;
}

.build-ops-village-list {
    border: 1px solid var(--border);
    border-radius: 4px;
    background: var(--surface);
    max-height: 420px;
    overflow-y: auto;
}

.build-ops-village-row {
    padding: 8px 10px;
}

.build-ops-village-title {
    font-weight: 700;
    font-size: 12px;
    margin-bottom: 4px;
}

.build-ops-chip-row {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    margin-bottom: 4px;
}

.build-ops-village-meta {
    font-size: 11px;
    color: var(--muted);
    line-height: 1.5;
}

.build-ops-detail {
    flex: 1 1 420px;
    min-width: 0;
    border: 1px solid var(--border);
    border-radius: 4px;
    background: var(--surface);
    padding: 12px 14px;
}

.build-ops-detail-header {
    font-size: 13px;
    font-weight: 700;
    margin-bottom: 8px;
}

.build-ops-queue-table td,
.build-ops-queue-table th {
    white-space: nowrap;
}

.licensing-shell [hidden],
[data-view="licensing"] [hidden] {
    display: none !important;
}

.licensing-shell {
    display: flex;
    flex-direction: column;
    gap: 14px;
    max-width: 1100px;
}

.licensing-hero {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    border-left: 3px solid var(--border);
    padding: 16px 18px;
}

.licensing-hero.licensing-tone-active { border-left-color: var(--green); }
.licensing-hero.licensing-tone-warning { border-left-color: var(--amber); }
.licensing-hero.licensing-tone-danger { border-left-color: var(--red); }
.licensing-hero.licensing-tone-neutral { border-left-color: var(--orange); }

.licensing-hero-main {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
    min-width: 0;
}

.licensing-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 2px 10px 2px 8px;
    border-radius: 999px;
    border: 1px solid var(--border);
    background: var(--surface-raised);
    color: var(--muted);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    white-space: nowrap;
}

.licensing-badge-glyph {
    font-size: 12px;
    line-height: 1;
}

.licensing-badge.licensing-tone-active { color: var(--green); border-color: var(--green); }
.licensing-badge.licensing-tone-warning { color: var(--amber); border-color: var(--amber); }
.licensing-badge.licensing-tone-danger { color: var(--red); border-color: var(--red); }

.licensing-headline {
    font-size: 18px;
    font-weight: 600;
    color: var(--text);
}

.licensing-hero-meta {
    font-size: 12px;
    color: var(--muted);
    overflow-wrap: anywhere;
}

.licensing-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 8px 16px;
    border-radius: 4px;
    border: 1px solid var(--border);
    background: var(--surface-raised);
    color: var(--text);
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
    transition: background-color 0.12s ease, border-color 0.12s ease, transform 0.05s ease;
}

.licensing-btn:hover { border-color: var(--muted); }

.licensing-btn-primary {
    background: var(--orange);
    border-color: var(--orange);
    color: #1f1102;
    font-weight: 700;
}

.licensing-btn-primary:hover {
    background: var(--orange-hover);
    border-color: var(--orange-hover);
}

.licensing-btn:active:not(:disabled) {
    transform: translateY(1px);
    filter: brightness(0.92);
}

.licensing-btn:focus-visible {
    outline: 2px solid var(--orange);
    outline-offset: 2px;
}

.licensing-btn:disabled {
    cursor: not-allowed;
    opacity: 0.55;
    transform: none;
}

.licensing-btn.licensing-busy {
    cursor: progress;
    animation: licensing-busy-pulse 1.2s ease-in-out infinite;
}

@keyframes licensing-busy-pulse {
    0%, 100% { opacity: 0.55; }
    50% { opacity: 0.8; }
}

.licensing-notices {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.licensing-notice {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 10px 14px;
    border: 1px solid var(--border);
    border-left: 3px solid var(--border);
    border-radius: 4px;
    background: var(--surface);
}

.licensing-notice.licensing-tone-warning { border-left-color: var(--amber); background: rgba(217, 154, 61, 0.08); }
.licensing-notice.licensing-tone-danger { border-left-color: var(--red); background: rgba(229, 72, 77, 0.08); }

.licensing-notice-glyph {
    flex: 0 0 auto;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 11px;
    font-weight: 700;
    border: 1px solid currentColor;
}

.licensing-notice.licensing-tone-warning .licensing-notice-glyph { color: var(--amber); }
.licensing-notice.licensing-tone-danger .licensing-notice-glyph { color: var(--red); }

.licensing-notice-title {
    font-size: 13px;
    font-weight: 700;
    color: var(--text);
}

.licensing-notice-text {
    font-size: 12px;
    color: var(--muted);
    margin-top: 2px;
    line-height: 1.5;
}

.licensing-activation-intro {
    font-size: 12px;
    color: var(--muted);
    margin-bottom: 10px;
    line-height: 1.5;
}

.licensing-field-label {
    display: block;
    font-size: 12px;
    font-weight: 600;
    color: var(--text);
    margin-bottom: 6px;
}

.licensing-activation-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
}

.licensing-code-input {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    letter-spacing: 0.06em;
    min-width: 34ch;
    flex: 1 1 34ch;
    max-width: 520px;
}

.licensing-code-input:focus {
    outline: none;
    border-color: var(--orange);
    box-shadow: 0 0 0 2px rgba(240, 138, 36, 0.25);
}

.licensing-code-input.settings-input-invalid,
.licensing-code-input.settings-input-invalid:focus {
    border-color: var(--red);
    box-shadow: 0 0 0 2px rgba(229, 72, 77, 0.2);
}

.licensing-activation-error {
    margin-top: 6px;
}

.licensing-copyable {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 12px;
    user-select: all;
    overflow-wrap: anywhere;
}

.licensing-diagnostics {
    margin-top: 12px;
    padding-top: 8px;
    border-top: 1px dashed var(--border);
    display: flex;
    flex-direction: column;
    gap: 6px;
    opacity: 0.8;
}

.licensing-diagnostics-title {
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--muted);
}

.licensing-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 10px;
}

.licensing-chip {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 3px 9px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 600;
    border: 1px solid var(--border);
}

.licensing-chip-enabled {
    color: var(--text);
    border-color: rgba(46, 204, 113, 0.6);
}

.licensing-chip-enabled .licensing-chip-glyph { color: var(--green); }

.licensing-chip-disabled {
    color: var(--muted);
    border-style: dashed;
}

.licensing-chip-muted {
    color: var(--muted);
    border-color: var(--border);
    opacity: 0.6;
}

.licensing-chip-muted .licensing-chip-glyph { color: var(--muted); }

.lifecycle-license-refusal {
    padding: 8px 10px;
    border: 1px solid var(--pr-danger-border);
    border-radius: var(--pr-radius-input);
    background: var(--pr-danger-tint);
    color: var(--pr-danger-text);
    font-size: var(--pr-fs-meta);
    line-height: 1.4;
}

.lifecycle-license-refusal[hidden] {
    display: none;
}

.lifecycle-license-refusal-title {
    font-weight: 700;
    margin-bottom: 2px;
}

.licensing-secondary .status-row,
.licensing-reserved .status-row {
    font-size: 11px;
}

.licensing-reserved {
    background: transparent;
    border-style: dashed;
}

.licensing-reserved-title {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.licensing-soon {
    padding: 1px 7px;
    border-radius: 999px;
    border: 1px solid var(--orange);
    color: var(--orange);
    font-size: 9px;
    letter-spacing: 0.04em;
}

.licensing-reserved-value {
    color: var(--muted) !important;
    font-weight: 500 !important;
}

.invites-shell [hidden],
[data-view="invites"] [hidden] {
    display: none !important;
}

.invites-shell {
    display: flex;
    flex-direction: column;
    gap: 14px;
    max-width: 900px;
}

.invites-summary-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}

.invites-stats-line {
    margin: 12px 0;
    font-size: 16px;
    font-weight: 700;
}

.invites-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-top: 8px;
}

.invites-create-error {
    margin-top: 8px;
}

.invites-created {
    border-left: 3px solid var(--green);
}

.invites-copy-status,
.invites-created-note {
    margin-top: 6px;
}

.invites-copy-status.invites-copy-failed {
    color: var(--amber);
}

.invites-history-list {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-top: 8px;
}

.invites-history-row {
    display: grid;
    grid-template-columns: minmax(140px, 1fr) auto;
    gap: 2px 12px;
    padding: 8px 10px;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--surface-raised);
}

.invites-history-code {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 12px;
}

.invites-history-meta {
    grid-column: 1 / -1;
    color: var(--muted);
    font-size: 11px;
}

.invites-status {
    justify-self: end;
    padding: 1px 8px;
    border: 1px solid var(--muted);
    border-radius: 999px;
    color: var(--muted);
    font-size: 10px;
    font-weight: 600;
}

.invites-status-active { color: var(--green); border-color: var(--green); }
.invites-status-warning { color: var(--amber); border-color: var(--amber); }
.invites-status-danger { color: var(--red); border-color: var(--red); }
.invites-status-neutral { color: var(--orange); border-color: var(--orange); }

.settings-transfer-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-top: 10px;
}

.browser-proxy-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 10px;
    margin-top: 10px;
}

.browser-proxy-toggle {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 10px;
    font-size: 13px;
}

.browser-proxy-warning {
    color: var(--amber);
}

.browser-proxy-status {
    margin-top: 10px;
    overflow-wrap: anywhere;
}

.browser-proxy-status-success { color: var(--green); }
.browser-proxy-status-error { color: var(--red); }

.settings-transfer-message {
    margin: 8px 0 0;
    overflow-wrap: anywhere;
}

.settings-transfer-confirm {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid var(--border);
}

.settings-transfer-includes {
    margin-top: 10px;
    color: var(--muted);
    font-size: 12px;
}

.settings-transfer-sections {
    margin: 6px 0 10px;
    padding-left: 18px;
    font-size: 12px;
    overflow-wrap: anywhere;
}

.settings-transfer-world-bound {
    margin: 4px 0 10px;
    padding: 8px 10px;
    border-left: 3px solid var(--muted);
    border-radius: 4px;
    background: var(--surface-raised);
}

.settings-transfer-world-bound-message {
    font-size: 12px;
    font-weight: 700;
    overflow-wrap: anywhere;
}

.settings-transfer-live-impact {
    margin: 4px 0 10px;
    padding: 8px 10px;
    border-left: 3px solid var(--amber);
    border-radius: 4px;
    background: var(--surface-raised);
}

.settings-transfer-live-impact-title {
    color: var(--amber);
    font-size: 12px;
    font-weight: 700;
}

.settings-transfer-live-impact-list {
    margin: 6px 0 0;
    padding-left: 18px;
    font-size: 12px;
    overflow-wrap: anywhere;
}

.settings-transfer-live-impact-warning {
    color: var(--red);
    font-weight: 700;
}

.dual-shell [hidden],
[data-view="dual"] [hidden] {
    display: none !important;
}

.dual-shell {
    display: flex;
    flex-direction: column;
    gap: var(--pr-space-6);
}

.dual-toolbar,
.dual-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--pr-space-3);
}

.dual-toolbar {
    justify-content: space-between;
}

.dual-status-line {
    margin-top: 0;
}

.dual-feedback {
    display: flex;
    flex-direction: column;
    gap: var(--pr-space-2);
}

.dual-feedback .pr-feedback:empty {
    display: none;
}

.dual-feedback:not(:has(.pr-feedback:not(:empty))) {
    display: none;
}

.dual-summary-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: var(--pr-space-5) var(--pr-space-9);
}

.dual-summary-controller {
    grid-column: 1 / -1;
}

.dual-summary-handover:empty {
    display: none;
}

.dual-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: var(--pr-space-8);
    align-items: start;
}

.dual-main {
    display: flex;
    flex-direction: column;
    gap: var(--pr-space-8);
    min-width: 0;
}

.dual-section-header {
    margin: 0;
    font-weight: 400;
}

.dual-activity-column {
    min-width: 0;
}

.dual-activity-scroll {
    max-height: 420px;
    overflow-y: auto;
}

@media (min-width: 1100px) {
    .dual-layout {
        grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
    }

    .dual-layout.dual-layout--single {
        grid-template-columns: minmax(0, 1fr);
    }

    .dual-activity-column {
        position: sticky;
        top: 0;
    }

    .dual-activity-scroll {
        max-height: calc(100vh - var(--pr-header-height) - var(--pr-space-11) * 2);
    }
}

.dual-list,
.dual-activity-list {
    display: flex;
    flex-direction: column;
    gap: var(--pr-space-2);
}

.dual-member,
.dual-row {
    border: 1px solid var(--pr-border);
    border-radius: var(--pr-radius-button);
    background: var(--pr-bg-inset);
}

.dual-member {
    display: flex;
    flex-direction: column;
    gap: var(--pr-space-1);
    padding: var(--pr-space-3) var(--pr-space-4);
}

.dual-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--pr-space-2) var(--pr-space-5);
    padding: var(--pr-space-2) var(--pr-space-4);
}

.dual-member .dual-row {
    border: none;
    background: transparent;
    padding: 2px 0;
}

.dual-row-main {
    font-weight: 600;
}

.dual-device-row {
    padding-left: var(--pr-space-5) !important;
}

.dual-toggle {
    display: inline-flex;
    align-items: center;
    gap: var(--pr-space-2);
}

.dual-subtitle {
    margin-top: var(--pr-space-5);
}

.dual-created-invite {
    margin-top: var(--pr-space-4);
}

.dual-member-secondary {
    font-size: 0.9em;
}

.dual-handover {
    padding-left: var(--pr-space-11);
}

.dual-executor-status:empty,
.dual-action-step:empty {
    display: none;
}

.dual-operational-list {
    display: flex;
    flex-wrap: wrap;
    gap: var(--pr-space-2) var(--pr-space-3);
}

.dual-module {
    text-transform: none;
}

.dual-unavailable {
    border-color: var(--pr-warning-border);
    background: var(--pr-warning-tint);
}

.dual-unavailable .pr-card-title {
    color: var(--pr-warning);
}

.dual-audit-row {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: var(--pr-space-3) 0;
    border-top: 1px solid var(--pr-border-divider);
}

.dual-activity-list > .dual-audit-row:first-child {
    border-top: none;
}

.dual-audit-meta {
    display: flex;
    flex-wrap: wrap;
    gap: var(--pr-space-2);
    font-size: var(--pr-fs-meta);
    color: var(--pr-text-muted);
}

.dual-audit-meta > * + *::before {
    content: "·";
    margin-right: var(--pr-space-2);
}

.dual-audit-actor {
    color: var(--pr-text-secondary);
    font-weight: 600;
}

.dual-audit-sentence {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--pr-space-2);
    font-size: var(--pr-fs-body-sm);
    color: var(--pr-text);
}

.dual-audit-target {
    font-weight: 600;
}

.dual-audit-group-summary {
    display: flex;
    align-items: flex-start;
    gap: var(--pr-space-2);
    list-style: none;
    cursor: pointer;
}

.dual-audit-group-summary::-webkit-details-marker {
    display: none;
}

.dual-audit-group-summary::before {
    content: "▸";
    flex: none;
    width: var(--pr-space-4);
    color: var(--pr-text-muted);
    transition: transform 120ms ease;
}

.dual-audit-group[open] > .dual-audit-group-summary::before {
    transform: rotate(90deg);
}

.dual-audit-group-head {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.dual-audit-children {
    display: flex;
    flex-direction: column;
    gap: var(--pr-space-2);
    margin-top: var(--pr-space-2);
    padding-left: var(--pr-space-5);
    border-left: 1px solid var(--pr-border-divider);
}

.dual-audit-child {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.dual-audit-child > .dual-audit-time {
    font-size: var(--pr-fs-meta);
    color: var(--pr-text-muted);
}

.dual-audit-details-toggle {
    cursor: pointer;
    font-size: var(--pr-fs-meta);
    color: var(--pr-text-muted);
}

.dual-audit-change {
    font-size: var(--pr-fs-mono-sm);
    color: var(--pr-text-secondary);
    overflow-wrap: anywhere;
}

.dual-activity-more {
    padding-top: var(--pr-space-3);
}

.pr-build-layout {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: var(--pr-space-8);
}

.pr-build-main {
    flex: 1 1 420px;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: var(--pr-space-8);
}

.pr-build-head {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: var(--pr-space-7);
}

.pr-build-head .pr-page-head {
    margin-bottom: 0;
}

.pr-build-head-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 9px;
}

.pr-build-queue-pill {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 9px 14px;
    border-radius: var(--pr-radius-button);
    border: 1px solid var(--pr-border);
    background: var(--pr-bg-card);
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-meta);
    color: var(--pr-text-secondary);
    white-space: nowrap;
}

.pr-build-queue-pill--active {
    color: var(--pr-text);
    border-color: var(--pr-accent-border-soft);
}

.pr-build-overview,
.pr-build-meta {
    font-size: var(--pr-fs-meta);
    color: var(--pr-text-muted);
    line-height: 1.5;
}

.build-gold-journal {
    margin: 8px 0;
}

.build-gold-journal-list {
    list-style: none;
    margin: 4px 0 0;
    padding: 0;
}

.pr-build-overview:empty,
.pr-build-inline-error:empty {
    display: none;
}

.pr-build-inline-error {
    font-size: var(--pr-fs-small);
    color: var(--pr-danger-text);
}

.pr-build-capital-hint {
    margin-top: 8px;
    padding: 6px 10px;
    border: 1px solid var(--pr-warning-border);
    border-radius: 6px;
    background: var(--pr-warning-tint);
    color: var(--pr-text);
}

.pr-build-capital-hint[hidden] {
    display: none;
}

.pr-chooser-columns > .pr-build-capital-hint {
    grid-column: 1 / -1;
    margin-top: 0;
}

.pr-build-lines {
    font-size: var(--pr-fs-small);
    color: var(--pr-text-secondary);
    line-height: 1.5;
    white-space: pre-line;
}

.pr-build-review[hidden],
.pr-build-proposal[hidden],
.pr-next-level[hidden],
.pr-drawer-level-row[hidden] {
    display: none;
}

.pr-build-review {
    border-color: var(--pr-accent-border-soft);
}

.pr-build-draft[hidden] {
    display: none;
}

.pr-build-draft {
    display: flex;
    flex-direction: column;
    gap: var(--pr-space-2);
    padding-top: var(--pr-space-3);
    border-top: 1px solid var(--pr-border-divider);
}

.pr-build-draft-row {
    display: flex;
    align-items: center;
    gap: var(--pr-space-3);
    font-size: var(--pr-fs-small);
    color: var(--pr-text-secondary);
}

.pr-build-draft-row-text {
    flex: 1 1 auto;
    overflow-wrap: anywhere;
}

.pr-build-draft-cost-part {
    font-family: var(--pr-font-mono);
    font-variant-numeric: tabular-nums;
}

.pr-build-draft-cost-part--wood { color: var(--pr-res-wood); }
.pr-build-draft-cost-part--clay { color: var(--pr-res-clay); }
.pr-build-draft-cost-part--iron { color: var(--pr-res-iron); }
.pr-build-draft-cost-part--crop { color: var(--pr-res-crop); }

.pr-build-draft-row-note {
    color: var(--pr-text-muted);
}

.pr-build-draft-row.is-error .pr-build-draft-row-text {
    color: var(--pr-danger-text);
}

.pr-build-draft-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--pr-space-3);
}

.pr-build-summary {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 4px 16px;
    font-size: var(--pr-fs-small);
    color: var(--pr-text-secondary);
}

.pr-build-summary .status-row {
    padding: 0;
    border: none;
}

.pr-build-table-wrap {
    flex: 0 1 auto;
    border-color: var(--pr-border);
    border-radius: var(--pr-radius-strip);
}

.pr-build-table th {
    font-family: var(--pr-font-mono);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--pr-text-muted);
    background: var(--pr-bg-inset);
    border-bottom-color: var(--pr-border);
    padding: 10px;
}

.pr-build-table td {
    border-bottom-color: var(--pr-border-divider);
    padding: 8px 10px;
}

.pr-build-group-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--pr-space-3);
}

.pr-build-group-row .pr-build-meta:last-child {
    flex-basis: 100%;
}

.pr-build-duo {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: var(--pr-space-6);
}

.pr-build-side {
    flex: 0 0 286px;
    width: 286px;
    display: flex;
    flex-direction: column;
    gap: var(--pr-space-6);
    padding: var(--pr-space-7);
    border-radius: var(--pr-radius-card);
    border: 1px solid var(--pr-border);
    background: var(--pr-bg-card);
    box-sizing: border-box;
}

.pr-build-side-block {
    display: flex;
    flex-direction: column;
    gap: var(--pr-space-3);
}

.pr-build-side-title {
    font-size: 13.5px;
    font-weight: 600;
}

.pr-build-side-sub {
    font-size: var(--pr-fs-body-sm);
    color: var(--pr-text-secondary);
}

.pr-build-side-link,
#buildTemplateEditorOverlay #buildTemplateEditorSlotMap {
    align-self: center;
    color: var(--pr-accent);
}

.pr-build-side-divider {
    height: 1px;
    background: var(--pr-border);
}

.pr-build-side-actions {
    display: flex;
    gap: var(--pr-space-3);
}

.pr-build-side-actions .pr-btn {
    flex: 1 1 0;
}

@media (max-width: 1100px) {
    .pr-build-side {
        flex: 1 1 100%;
        width: auto;
    }
}

.pr-slot-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(138px, 1fr));
    gap: 10px;
}

.pr-slot-tile {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    min-width: 0;
    padding: 12px 13px 13px;
    border-radius: 13px;
    border: 1px solid var(--pr-border);
    background: var(--pr-bg-card);
    color: var(--pr-text);
    font-family: inherit;
    text-align: left;
    cursor: pointer;
}

.pr-slot-tile:hover {
    background: var(--pr-bg-control);
}

.pr-slot-tile.is-empty {
    background: transparent;
    border-style: dashed;
    border-color: var(--pr-border-empty);
}

.pr-slot-tile.is-empty:hover {
    background: var(--pr-bg-control);
}

.pr-slot-tile.is-reserved {
    border-color: var(--pr-accent-border-soft);
}

.pr-slot-tile.is-building {
    border-color: var(--pr-accent-border);
}

.pr-slot-tile.is-inactive .pr-slot-tile-name {
    color: var(--pr-text-secondary);
}

.pr-slot-tile.is-selected {
    background: var(--pr-bg-selected);
    border: 1px solid var(--pr-accent-border);
}

.pr-slot-tile-top {
    display: flex;
    align-items: center;
    gap: var(--pr-space-2);
}

.pr-slot-tile-id {
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-label-lg);
    color: var(--pr-text-muted);
}

.pr-slot-tile-tag {
    margin-left: auto;
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-label);
    letter-spacing: 0.05em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.pr-slot-tile-tag--accent { color: var(--pr-accent); }
.pr-slot-tile-tag--info { color: var(--pr-accent-hover); }
.pr-slot-tile-tag--gold { color: var(--pr-warning); }
.pr-slot-tile-tag--muted { color: var(--pr-text-muted); }
.pr-slot-tile-tag--ready { color: var(--pr-success-text); }
.pr-slot-tile-tag--eta { color: var(--pr-warning); }

.pr-slot-tile[hidden] {
    display: none;
}

.pr-slot-tile.is-ready:not(.is-selected) {
    border-color: var(--pr-success-tint-border);
    box-shadow: inset 0 0 0 1px var(--pr-success-tint-border);
}

.pr-build-ready-bar {
    display: flex;
    align-items: center;
    gap: var(--pr-space-3);
    flex-wrap: wrap;
}

.pr-build-ready-lines {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.pr-build-ready-line {
    font-size: var(--pr-fs-meta);
    color: var(--pr-text-muted);
}

.pr-build-ready-line[hidden] {
    display: none;
}

.pr-build-ready-line--busy {
    color: var(--pr-warning);
}

.pr-build-ready-filter {
    gap: var(--pr-space-2);
}

.pr-slot-tile-name {
    margin-top: 8px;
    font-size: var(--pr-fs-body);
    font-weight: 600;
    text-wrap: pretty;
}

.pr-slot-tile.is-empty .pr-slot-tile-name,
.pr-slot-tile.is-unknown .pr-slot-tile-name {
    color: var(--pr-text-muted);
}

.pr-slot-tile-level {
    margin-top: 4px;
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-meta);
    color: var(--pr-text-secondary);
}

.pr-slot-tile-timers {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-top: 6px;
}

.pr-slot-tile-timer {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.pr-slot-tile-timer-value {
    font-family: var(--pr-font-mono);
    white-space: nowrap;
}

.pr-slot-tile-timer-label {
    white-space: normal;
    overflow-wrap: break-word;
    color: var(--pr-text-secondary);
}

.pr-slot-tile-timer--next .pr-slot-tile-timer-value {
    font-size: var(--pr-fs-body);
    color: var(--pr-accent);
    font-weight: 600;
}

.pr-slot-tile-timer--next .pr-slot-tile-timer-label {
    font-size: var(--pr-fs-meta);
}

.pr-slot-tile-timer--end {
    margin-top: 2px;
    font-size: var(--pr-fs-label);
    color: var(--pr-text-muted);
}

.pr-slot-tile-timer--end .pr-slot-tile-timer-label {
    color: var(--pr-text-muted);
}

.pr-slot-tile-bar {
    display: block;
    height: 4px;
    margin-top: 11px;
    border-radius: 3px;
    background: var(--pr-bg-track-off);
    overflow: hidden;
}

.pr-slot-tile-bar-fill {
    display: block;
    height: 100%;
    border-radius: 3px;
}

.pr-slot-tile-bar-fill--neutral { background: oklch(0.60 0.03 250); }
.pr-slot-tile-bar-fill--accent { background: var(--pr-accent); }
.pr-slot-tile-bar-fill--gold { background: var(--pr-warning); }
.pr-slot-tile-bar-fill--none { background: transparent; }
.pr-slot-tile-bar-fill--res-wood { background: var(--pr-res-wood); }
.pr-slot-tile-bar-fill--res-clay { background: var(--pr-res-clay); }
.pr-slot-tile-bar-fill--res-iron { background: var(--pr-res-iron); }
.pr-slot-tile-bar-fill--res-crop { background: var(--pr-res-crop); }

.pr-slot-tile--res .pr-slot-tile-name {
    display: flex;
    align-items: center;
    gap: var(--pr-space-2);
}

.pr-slot-tile-bar-fill.is-indeterminate {
    background: repeating-linear-gradient(135deg, color-mix(in oklch, var(--pr-accent) 45%, transparent) 0 6px, transparent 6px 12px);
}

.pr-live-countdown {
    font-variant-numeric: tabular-nums;
}

.pr-slot-grid--fields {
    grid-template-columns: repeat(auto-fill, minmax(124px, 1fr));
}

.pr-build-fields {
    display: flex;
    flex-direction: column;
    gap: var(--pr-space-6);
    margin-top: var(--pr-space-3);
}

.pr-build-fields-head {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: var(--pr-space-5) var(--pr-space-7);
}

.pr-build-fields-head .pr-page-head {
    margin-bottom: 0;
}

.pr-build-section-title {
    margin: 0;
    font-size: 17px;
    font-weight: 700;
    letter-spacing: var(--pr-ls-title);
    color: var(--pr-text);
}

.pr-build-advanced {
    border: 1px solid var(--pr-border);
    border-radius: var(--pr-radius-card);
    background: var(--pr-bg-card);
    margin-top: var(--pr-space-3);
}

.pr-build-advanced-summary {
    padding: 11px var(--pr-space-7);
    cursor: pointer;
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-label-lg);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--pr-text-muted);
    user-select: none;
}

.pr-build-advanced-summary:hover {
    color: var(--pr-text-secondary);
}

.pr-build-advanced-body {
    display: flex;
    flex-direction: column;
    gap: var(--pr-space-6);
    padding: 0 var(--pr-space-7) var(--pr-space-7);
}

.pr-build-plan-list {
    display: flex;
    flex-direction: column;
    gap: 7px;
    margin-top: var(--pr-space-1);
}

.pr-build-plan-row {
    display: flex;
    align-items: flex-start;
    gap: var(--pr-space-4);
    font-size: var(--pr-fs-body-sm);
}

.pr-build-plan-slot {
    flex: none;
    padding: 3px 8px;
    border-radius: 6px;
    background: var(--pr-bg-control);
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-mono-sm);
    color: var(--pr-text-secondary);
}

.pr-build-plan-row.is-unavailable .pr-build-plan-text {
    color: var(--pr-text-muted);
    font-size: var(--pr-fs-small);
    line-height: 1.45;
}

.pr-drawer-overlay {
    align-items: stretch;
    justify-content: flex-end;
}

.pr-drawer {
    width: 390px;
    max-width: 100%;
    border-radius: 0;
    border: none;
    border-left: 1px solid var(--pr-border-control-strong);
}

.direct-modal.pr-drawer {
    height: 100vh;
    max-height: 100vh;
}

.pr-drawer-header {
    align-items: flex-start;
    padding: 24px 24px 12px;
    border-bottom: none;
}

.pr-drawer-heading {
    min-width: 0;
}

.pr-drawer-title {
    margin-top: 6px;
    font-size: 21px;
    font-weight: 700;
}

.pr-chooser-header .pr-drawer-title {
    font-size: 20px;
}

.pr-drawer-sub {
    margin-top: -6px;
    font-size: var(--pr-fs-body-sm);
    color: var(--pr-text-secondary);
}

.pr-drawer .direct-modal-scroll {
    display: flex;
    flex-direction: column;
    gap: var(--pr-space-5);
    padding: 4px 24px 12px;
}

.pr-drawer-footer {
    display: flex;
    flex-direction: column;
    gap: var(--pr-space-3);
    padding: 16px 24px 24px;
    background: transparent;
    border-top: 1px solid var(--pr-border);
}

.pr-drawer-actions {
    display: flex;
    flex-direction: column;
    gap: var(--pr-space-3);
}

.pr-drawer-footer .pr-btn {
    height: auto;
    padding: 11px 0;
    font-size: var(--pr-fs-body);
}

.pr-drawer-level-row {
    display: flex;
    align-items: center;
    gap: var(--pr-space-3);
}

.pr-drawer-level-row .pr-select {
    flex: 1 1 auto;
}

.pr-drawer-note {
    font-size: var(--pr-fs-meta);
    color: var(--pr-text-muted);
    line-height: 1.5;
}

.pr-next-level {
    padding: 15px;
    border-radius: var(--pr-radius-strip);
    border: 1px solid var(--pr-border);
    background: var(--pr-bg-inset);
}

.pr-next-level-title {
    font-size: 13.5px;
    font-weight: 600;
}

.pr-next-level-times {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--pr-space-3);
    margin-top: 12px;
}

.pr-next-level-time {
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-small);
}

.pr-next-level-key {
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-label);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--pr-text-muted);
}

.pr-next-level-value {
    margin-top: 3px;
    font-family: var(--pr-font-mono);
    font-size: 12.5px;
}

.pr-need-rows {
    display: flex;
    flex-direction: column;
    gap: var(--pr-space-2);
    margin-top: 14px;
}

.pr-need-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto minmax(64px, auto);
    align-items: center;
    gap: var(--pr-space-3);
    padding: 7px 9px;
    border-radius: var(--pr-radius-nav);
    background: var(--pr-bg-selected);
    font-size: var(--pr-fs-small);
}

.pr-need-label {
    display: flex;
    align-items: center;
    gap: var(--pr-space-2);
    min-width: 0;
}

.pr-need-row--wood .pr-need-label-text { color: var(--pr-res-wood); }
.pr-need-row--clay .pr-need-label-text { color: var(--pr-res-clay); }
.pr-need-row--iron .pr-need-label-text { color: var(--pr-res-iron); }
.pr-need-row--crop .pr-need-label-text { color: var(--pr-res-crop); }

.pr-need-amount {
    font-family: var(--pr-font-mono);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.pr-need-mark {
    font-family: var(--pr-font-mono);
    text-align: right;
    white-space: nowrap;
}

.pr-need-mark--enough { color: var(--pr-success-text); }
.pr-need-mark--short { color: var(--pr-warning); }
.pr-need-mark--storage-too-small { color: var(--pr-danger-text); }

.pr-need-summary {
    margin-top: 12px;
    font-size: var(--pr-fs-body-sm);
}

.pr-need-summary--enough { color: var(--pr-success-text); }
.pr-need-summary--short { color: var(--pr-warning); }
.pr-need-summary--unknown { color: var(--pr-text-muted); }

.pr-need-stock-age {
    margin-top: 4px;
    font-size: var(--pr-fs-meta);
    color: var(--pr-text-muted);
}

.pr-need-stock-age.is-stale {
    color: var(--pr-warning);
}

.pr-chooser-modal {
    width: calc(100% - 48px);
    max-width: 1080px;
    max-height: 92vh;
}

.pr-chooser-header {
    align-items: flex-start;
    padding: 20px 22px 14px;
    border-bottom: none;
}

.pr-chooser-modal .direct-modal-scroll {
    padding: 0 22px 18px;
}

.pr-chooser-columns {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
    gap: var(--pr-space-6);
    align-items: start;
}

.pr-chooser-column {
    display: flex;
    flex-direction: column;
    gap: 7px;
}

.pr-chooser-column-title {
    padding-bottom: 2px;
    font-family: var(--pr-font-mono);
    font-size: 10px;
    letter-spacing: var(--pr-ls-label);
    text-transform: uppercase;
    color: var(--pr-text-muted);
}

.pr-chooser-heading {
    margin-top: 8px;
    font-size: var(--pr-fs-meta);
    font-weight: 600;
}

.pr-chooser-heading--available { color: var(--pr-success-dot); }
.pr-chooser-heading--locked { color: var(--pr-warning); }
.pr-chooser-heading--built,
.pr-chooser-heading--na { color: var(--pr-text-secondary); }

.pr-chooser-item {
    padding: 9px 11px;
    border-radius: var(--pr-radius-button);
    border: 1px solid rgba(255, 255, 255, 0.05);
    background: var(--pr-bg-inset);
}

.pr-chooser-item.is-selected {
    border-color: var(--pr-accent-border);
    background: var(--pr-accent-tint);
}

.pr-chooser-item-button {
    display: block;
    width: 100%;
    padding: 0;
    border: none;
    background: transparent;
    font-family: inherit;
    font-size: var(--pr-fs-body-sm);
    font-weight: 500;
    text-align: left;
    color: var(--pr-text-secondary);
    cursor: default;
}

.pr-chooser-item--available .pr-chooser-item-button {
    color: var(--pr-text);
    cursor: pointer;
}

.pr-chooser-item--available:hover:not(.is-selected) {
    background: var(--pr-bg-control);
}

.pr-chooser-item--na .pr-chooser-item-button {
    color: var(--pr-text-muted);
}

.pr-chooser-item-button:disabled {
    opacity: 1;
}

.pr-chooser-item-note {
    margin-top: 2px;
    font-size: var(--pr-fs-mono-sm);
    color: var(--pr-text-muted);
    text-wrap: pretty;
}

.pr-chooser-footer {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--pr-space-5);
    padding: 15px 22px;
    background: transparent;
    border-top: 1px solid var(--pr-border);
}

.pr-chooser-picked-name {
    margin-top: 3px;
    max-width: 320px;
    font-size: 13.5px;
    font-weight: 600;
}

.pr-chooser-divider {
    width: 1px;
    height: 30px;
    background: var(--pr-border-control);
}

.pr-chooser-level {
    display: flex;
    align-items: center;
    gap: var(--pr-space-3);
}

.pr-chooser-footer .settings-error:empty {
    display: none;
}

.pr-build-confirm {
    margin: 0 var(--pr-space-11);
}

.pr-build-confirm-check {
    margin-top: var(--pr-space-7);
}

.pr-slot-map-overlay {
    z-index: 250;
}

.pr-slot-map {
    max-width: 640px;
    margin: 0 var(--pr-space-11);
}

.pr-slot-map-board {
    margin-top: var(--pr-space-7);
    padding: 20px;
    border-radius: var(--pr-radius-strip);
    border: 1px dashed var(--pr-border-empty);
    background: repeating-linear-gradient(135deg, #1d1e22 0 9px, var(--pr-bg-card) 9px 18px);
    overflow-y: auto;
}

.pr-slot-map-grid {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 9px;
}

.pr-slot-map-cell {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    min-height: 42px;
    padding: 4px;
    border-radius: var(--pr-radius-nav);
    background: var(--pr-bg-control);
    min-width: 0;
}

.pr-slot-map-id {
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-body);
    color: var(--pr-text-secondary);
}

.pr-slot-map-label {
    max-width: 100%;
    font-size: 10px;
    color: var(--pr-text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.pr-slot-map-cell.is-empty .pr-slot-map-label {
    color: var(--pr-text-disabled);
}

.pr-slot-map-note {
    margin-top: 14px;
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-label-lg);
    color: var(--pr-text-muted);
}

#buildTemplateEditorOverlay .template-editor-modal {
    width: calc(100% - 48px);
    max-width: 1120px;
    height: min(720px, 92vh);
}

#buildTemplateEditorOverlay .template-editor-header {
    padding: 18px 22px;
    border-bottom-color: var(--pr-border);
}

#buildTemplateEditorOverlay .template-editor-title {
    font-size: 17px;
}

#buildTemplateEditorOverlay .template-editor-body {
    gap: var(--pr-space-7);
    padding: 18px 22px;
}

#buildTemplateEditorOverlay .template-editor-left {
    flex: 0 0 232px;
    width: 232px;
    padding: 0;
    border-right: none;
}

#buildTemplateEditorOverlay .template-editor-list-item {
    padding: 10px 12px;
    border-radius: var(--pr-radius-button);
    border: 1px solid rgba(255, 255, 255, 0.06);
    font-family: inherit;
}

#buildTemplateEditorOverlay .template-editor-list-item:hover {
    background: var(--pr-bg-hover);
}

#buildTemplateEditorOverlay .template-editor-list-item.template-editor-list-item-selected {
    background: var(--pr-bg-control);
    border-color: oklch(0.72 0.14 40 / 0.45);
}

#buildTemplateEditorOverlay .template-editor-left-actions button,
#buildTemplateEditorOverlay .template-editor-toolbar button {
    border-radius: var(--pr-radius-nav);
    border: 1px solid var(--pr-border-control);
    background: var(--pr-bg-control);
    color: var(--pr-text);
    font-family: inherit;
    font-weight: 500;
}

#buildTemplateEditorOverlay .template-editor-left-actions .settings-danger-button {
    background: transparent !important;
    border-color: oklch(0.62 0.16 25 / 0.45) !important;
    color: var(--pr-danger-text) !important;
}

#buildTemplateEditorOverlay .template-editor-right {
    padding: 0;
}

#buildTemplateEditorOverlay .template-editor-table-wrap {
    border-color: var(--pr-border);
    border-radius: var(--pr-radius-strip);
}

#buildTemplateEditorOverlay .template-editor-table th {
    font-family: var(--pr-font-mono);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--pr-text-muted);
    background: var(--pr-bg-inset);
    border-bottom-color: var(--pr-border);
    padding: 10px;
}

#buildTemplateEditorOverlay .template-editor-table td {
    padding: 7px 8px;
    border-bottom-color: var(--pr-border-divider);
}

#buildTemplateEditorOverlay .template-editor-table tbody tr.template-editor-row-selected {
    background: var(--pr-bg-control);
    box-shadow: none;
}

#buildTemplateEditorOverlay .template-editor-table select,
#buildTemplateEditorOverlay .template-editor-table input[type="number"] {
    padding: 7px 8px;
    border-radius: var(--pr-radius-input);
    border: 1px solid rgba(255, 255, 255, 0.09);
    background: var(--pr-bg-control);
    font-size: var(--pr-fs-body-sm);
}

#buildTemplateEditorOverlay .template-editor-row-delete-button {
    width: 100%;
    padding: 6px 0;
    border-radius: var(--pr-radius-input);
    border-color: oklch(0.62 0.16 25 / 0.4);
    color: var(--pr-danger-text);
    font-size: var(--pr-fs-meta);
}

#buildTemplateEditorOverlay .template-editor-footer {
    align-items: center;
    padding: 14px 22px;
    border-top-color: var(--pr-border);
}

#buildTemplateEditorOverlay .template-editor-footer button {
    padding: 9px 20px;
    border-radius: var(--pr-radius-nav);
    font-size: var(--pr-fs-body-sm);
    font-family: inherit;
}

#buildTemplateEditorOverlay #buildTemplateEditorSave {
    background: var(--pr-bg-control);
    border-color: rgba(255, 255, 255, 0.09);
    color: var(--pr-text);
}

#buildTemplateEditorOverlay #buildTemplateEditorSlotMap {
    padding: 9px 6px;
    border: none;
    background: transparent;
}

#buildTemplateEditorOverlay #buildTemplateEditorQueueTemplate {
    border-color: var(--pr-accent);
}

.pr-npc-context {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 14px;
    padding: 8px 12px;
    border-radius: var(--pr-radius-card);
    border: 1px solid var(--pr-border);
    background: var(--pr-bg-raised);
    font-size: var(--pr-fs-body-sm);
    color: var(--pr-text-secondary);
}

.pr-npc-context-name {
    font-weight: 600;
    color: var(--pr-text);
}

.pr-npc-context-coords {
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-mono-sm);
    color: var(--pr-text-muted);
}

.pr-npc-context-sep {
    flex: 1 1 auto;
}

.pr-npc-context-note {
    color: var(--pr-text-muted);
}

.pr-npc-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 14px;
    align-items: start;
}

.pr-npc-col {
    display: flex;
    flex-direction: column;
    gap: 14px;
    min-width: 0;
}

.pr-npc-metrics {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.pr-npc-settings,
.pr-npc-distribution {
    gap: 0;
}

.pr-npc-distribution .pr-card-header {
    margin-bottom: 12px;
}

.pr-npc-res-list {
    display: flex;
    flex-direction: column;
}

.pr-npc-res-list > .pr-setting-hint {
    margin-top: 12px;
}

.pr-npc-res-list[hidden] {
    display: none;
}

.pr-npc-res-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto 64px;
    align-items: center;
    gap: 14px;
    padding: 8px 0;
    border-top: 1px solid var(--pr-border-divider);
}

.pr-npc-res-row .pr-input {
    width: 64px;
    text-align: center;
}

.pr-npc-res-row--exact .pr-input {
    width: 110px;
}

.pr-npc-res-name {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    min-width: 0;
    font-size: 13px;
    color: var(--pr-text);
}

.pr-npc-res-name .pr-res-dot {
    width: 7px;
    height: 7px;
}

.pr-npc-res-pct {
    font-family: var(--pr-font-mono);
    font-variant-numeric: tabular-nums;
    font-size: var(--pr-fs-mono-sm);
    color: var(--pr-text-muted);
    text-align: right;
}

.pr-npc-budget-row {
    display: flex;
    align-items: center;
    gap: 12px;
}

.pr-npc-budget-used {
    font-size: 18px;
}

.pr-npc-balance {
    margin-top: 10px;
}

.pr-villages-res-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px 14px;
}

.pr-villages-res-card {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 0;
}

.pr-villages-res-card-head {
    display: flex;
    align-items: center;
    gap: 7px;
    font-size: var(--pr-fs-body-sm);
    color: var(--pr-text-secondary);
}

.pr-villages-res-card-value {
    font-family: var(--pr-font-mono);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    color: var(--pr-text);
}

.pr-villages-res-card-value.is-unavailable,
.pr-data-row-value.is-unavailable {
    color: var(--pr-text-disabled);
}

.pr-villages-res-card-value.is-stale,
.pr-data-row-value.is-stale {
    color: var(--pr-text-muted);
    text-decoration: underline dotted;
    text-underline-offset: 3px;
}

.pr-ap-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    margin-top: 14px;
}

.pr-ap-grid--status {
    align-items: stretch;
}

.pr-ap-grid--lists {
    align-items: start;
}

.pr-ap-status-card {
    gap: 10px;
}

.pr-ap-status-card.is-alert,
.pr-ap-list-card.is-alert {
    border-color: var(--pr-danger-border-strong);
}

.pr-ap-status-head {
    display: flex;
    align-items: flex-start;
    gap: 10px;
}

.pr-ap-status-heading {
    flex: 1 1 auto;
    min-width: 0;
}

.pr-ap-status-title {
    font-size: var(--pr-fs-body-sm);
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--pr-text);
}

.pr-ap-status-state {
    margin-top: 2px;
    font-family: var(--pr-font-mono);
    font-size: 10px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--pr-text-muted);
}

.pr-ap-status-state.is-active,
.pr-ap-status-state.is-scheduled { color: var(--pr-success-text); }
.pr-ap-status-state.is-alert { color: var(--pr-danger-text); }

.pr-ap-status-switch {
    cursor: pointer;
}

.pr-ap-status-body {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 22px;
    align-items: start;
}

.pr-ap-timer-block {
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.pr-ap-timer {
    font-family: var(--pr-font-mono);
    font-variant-numeric: tabular-nums;
    font-size: 22px;
    font-weight: 600;
    color: var(--pr-text);
}

.pr-ap-timer.is-idle {
    color: var(--pr-text-disabled);
}

.pr-ap-status-rows {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.pr-ap-status-row,
.pr-ap-status-foot {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    font-size: var(--pr-fs-body-sm);
    border-top: 1px solid var(--pr-border-divider);
}

.pr-ap-status-row {
    padding: 6px 0;
}

.pr-ap-status-row > span:first-child,
.pr-ap-status-foot > span:first-child {
    color: var(--pr-text-muted);
}

.pr-ap-status-foot {
    padding-top: 8px;
    margin-top: auto;
}

.pr-ap-status-value {
    font-family: var(--pr-font-mono);
    font-variant-numeric: tabular-nums;
    color: var(--pr-text);
    text-align: right;
}

.pr-ap-status-value.is-muted,
.pr-ap-status-result.is-muted { color: var(--pr-text-secondary); }
.pr-ap-status-value.is-danger,
.pr-ap-status-result.is-danger { color: var(--pr-danger-text); }
.pr-ap-status-result.is-warning { color: var(--pr-warning); }

.pr-ap-status-result {
    text-align: right;
}

.pr-ap-list-card {
    gap: 0;
    padding: 12px 16px;
}

.pr-ap-list-head {
    display: flex;
    align-items: center;
    gap: 10px;
    padding-bottom: 8px;
}

.pr-ap-list-count {
    font-family: var(--pr-font-mono);
    font-variant-numeric: tabular-nums;
    font-size: var(--pr-fs-body);
    font-weight: 600;
    color: var(--pr-text);
}

.pr-ap-list-count.is-danger {
    color: var(--pr-danger-text);
}

.pr-ap-list-count.is-muted {
    color: var(--pr-text-muted);
}

.pr-ap-list-empty {
    padding: 6px 0 4px;
    border-top: 1px solid var(--pr-border-divider);
    font-size: var(--pr-fs-body-sm);
    color: var(--pr-text-muted);
}

.pr-ap-list-empty[hidden],
.pr-ap-list[hidden],
.pr-ap-target-empty[hidden],
.pr-chip-empty[hidden] {
    display: none;
}

.pr-ap-row {
    display: grid;
    grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr) minmax(0, 1fr);
    gap: 12px;
    align-items: center;
    padding: 8px 0;
    border-top: 1px solid var(--pr-border-divider);
}

.pr-ap-row-village {
    min-width: 0;
}

.pr-ap-row-village-line {
    display: flex;
    align-items: center;
    gap: 7px;
    min-width: 0;
}

.pr-ap-row-village-name {
    font-size: var(--pr-fs-body);
    font-weight: 600;
    color: var(--pr-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.pr-ap-row-sub {
    margin-top: 2px;
    font-family: var(--pr-font-mono);
    font-variant-numeric: tabular-nums;
    font-size: var(--pr-fs-mono-sm);
    color: var(--pr-text-muted);
}

.pr-ap-row-countdown {
    margin-top: 2px;
    font-family: var(--pr-font-mono);
    font-variant-numeric: tabular-nums;
    font-size: var(--pr-fs-body);
    font-weight: 600;
    color: var(--pr-text);
}

.pr-ap-row-countdown.is-danger {
    color: var(--pr-danger-text);
}

.pr-ap-row-type {
    font-size: var(--pr-fs-small);
    color: var(--pr-text-secondary);
}

.pr-ap-row-time {
    font-family: var(--pr-font-mono);
    font-variant-numeric: tabular-nums;
    font-size: var(--pr-fs-small);
    color: var(--pr-text-secondary);
}

.pr-ap-row-status {
    margin-top: 3px;
    font-family: var(--pr-font-mono);
    font-size: 10px;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--pr-text-secondary);
}

.pr-ap-chip-items {
    display: contents;
}

.pr-ap-adaptive-value {
    font-size: var(--pr-fs-body-sm);
    color: var(--pr-text-secondary);
}

.pr-ap-targets {
    display: flex;
    flex-direction: column;
}

.pr-ap-target-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) 60px;
    gap: 12px;
    align-items: center;
    padding: 6px 0;
    border-top: 1px solid var(--pr-border-divider);
    font-family: var(--pr-font-mono);
    font-variant-numeric: tabular-nums;
    font-size: var(--pr-fs-body-sm);
}

.pr-ap-target-row--head {
    padding: 0 0 4px;
    border-top: none;
}

.pr-ap-target-id {
    color: var(--pr-text);
}

.pr-ap-target-coords {
    color: var(--pr-text-secondary);
}

.pr-ap-target-remove {
    justify-self: end;
    font-family: var(--pr-font-sans, inherit);
    font-size: var(--pr-fs-small);
    color: var(--pr-text-muted);
}

.pr-ap-target-remove:hover:not(:disabled) {
    color: var(--pr-danger-text);
}

.pr-ap-target-empty {
    padding: 6px 0;
    border-top: 1px solid var(--pr-border-divider);
    font-size: var(--pr-fs-body-sm);
    color: var(--pr-text-muted);
}

.pr-ap-target-add {
    padding-top: 4px;
}

.pr-ap-target-add #attackProtectionTargetVillageIdInput {
    flex: 0 0 120px;
}

.pr-ap-target-add .pr-input--num {
    flex: 0 0 64px;
    text-align: center;
}

@media (max-width: 1100px) {
    .pr-ap-grid {
        grid-template-columns: minmax(0, 1fr);
    }
}

.pr-ap-settings-layout {
    display: grid;
    grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr);
    gap: 14px;
    align-items: start;
    margin-top: 14px;
}

.pr-ap-adaptive {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 12px;
    padding: 12px 0;
    border-top: 1px solid var(--pr-border-divider);
}

.pr-ap-settings,
.pr-ap-notifications {
    gap: 0;
    padding: 14px 18px 4px;
}

.pr-ap-settings .pr-select {
    min-width: 180px;
}

.pr-ap-notify-body {
    display: flex;
    flex-direction: column;
    gap: 16px;
    padding: 14px 0 16px;
    border-top: 1px solid var(--pr-border-divider);
}

.pr-ap-field {
    display: flex;
    flex-direction: column;
    gap: 8px;
    min-width: 0;
}

.pr-ap-field .pr-inline-add {
    max-width: none;
}

.pr-ap-token-saved {
    display: flex;
    align-items: center;
    gap: 8px;
    min-height: 34px;
    padding: 0 6px 0 12px;
    border-radius: var(--pr-radius-chip);
    border: 1px solid var(--pr-border-control);
    background: var(--pr-bg-control);
}

.pr-ap-token-saved[hidden],
.pr-ap-token-entry[hidden],
.pr-ap-token-entry .pr-btn[hidden] {
    display: none;
}

.pr-ap-token-mask {
    font-family: var(--pr-font-mono);
    letter-spacing: 1px;
    color: var(--pr-text-secondary);
}

.pr-ap-token-hint.is-success { color: var(--pr-success-text); }
.pr-ap-token-hint.is-warning { color: var(--pr-warning); }
.pr-ap-token-hint.is-error { color: var(--pr-danger-text); }

.pr-ap-test-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
}

.pr-ap-test-result {
    font-size: var(--pr-fs-small);
    color: var(--pr-text-secondary);
}

.pr-ap-test-result.is-success { color: var(--pr-success-text); }
.pr-ap-test-result.is-error { color: var(--pr-danger-text); }

.pr-ap-savebar {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 14px;
}

.pr-ap-savebar .pr-card-footer {
    border-top: none;
    padding-top: 0;
}

.pr-ap-savebar .settings-shared-banner,
.pr-ap-savebar .settings-error,
.pr-ap-savebar .settings-success {
    min-height: 0;
    margin: 0;
}

.pr-ap-savebar .settings-error:empty,
.pr-ap-savebar .settings-success:empty {
    display: none;
}

.pr-ap-reset-note {
    align-self: flex-end;
    text-align: right;
}

@media (max-width: 1100px) {
    .pr-ap-settings-layout {
        grid-template-columns: minmax(0, 1fr);
    }
}

.pr-npc-savebar {
    margin-top: 14px;
    gap: 8px;
}

@media (max-width: 1100px) {
    .pr-npc-layout {
        grid-template-columns: minmax(0, 1fr);
    }
}

.pr-military-global {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.pr-military-summary {
    font-size: var(--pr-fs-body-sm);
    color: var(--pr-text-secondary);
}

.pr-military-note[hidden],
.pr-military-empty[hidden] {
    display: none;
}

.pr-military-empty {
    margin-top: 14px;
}

.pr-military-villages {
    display: flex;
    flex-direction: column;
    gap: 14px;
    margin-top: 14px;
}

.pr-military-village {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.pr-military-buildings-head {
    padding-top: 12px;
    border-top: 1px solid var(--pr-border-divider);
}

.pr-military-buildings {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.pr-military-building {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 10px 12px;
    border: 1px solid var(--pr-border-divider);
    border-radius: var(--pr-radius-button);
    background: var(--pr-bg-inset);
}

.pr-military-building-grid {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 12px;
}

.pr-military-field .pr-input--num {
    width: 64px;
}

.pr-military-target {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.pr-military-building-summary {
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-body-sm);
}

.pr-military-building-state {
    font-size: var(--pr-fs-meta);
    color: var(--pr-text-muted);
}

.pr-military-building-state[hidden] {
    display: none;
}

.pr-military-building-head,
.pr-military-extra-line {
    display: flex;
    align-items: center;
    gap: 10px;
}

.pr-military-building-title {
    font-weight: 600;
}

.pr-military-extras {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding-top: 8px;
}

.pr-military-extra {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 8px 12px;
    border: 1px dashed var(--pr-border-divider);
    border-radius: var(--pr-radius-button);
}

.pr-military-errors {
    min-height: 0;
    margin: 0;
}

.pr-military-errors:empty {
    display: none;
}

.pr-military-result {
    font-size: var(--pr-fs-body-sm);
}

.pr-military-result.is-success {
    color: var(--green);
}

.pr-military-result.is-error {
    color: var(--red);
}

.pr-villages-status {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 18px;
    margin-bottom: 14px;
    padding: 10px 14px;
    border-radius: var(--pr-radius-card);
    border: 1px solid var(--pr-border);
    background: var(--pr-bg-raised);
}

.pr-villages-status-item {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.pr-villages-status-value {
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-body-sm);
    font-weight: 600;
    color: var(--pr-text);
}

.pr-villages-reason:empty {
    display: none;
}

.pr-tabs {
    display: flex;
    gap: 4px;
    margin-bottom: 14px;
    border-bottom: 1px solid var(--pr-border);
}

.pr-tab {
    padding: 8px 12px;
    border: none;
    border-bottom: 2px solid transparent;
    background: transparent;
    color: var(--pr-text-secondary);
    font-size: var(--pr-fs-body-sm);
    cursor: pointer;
}

.pr-tab:hover {
    color: var(--pr-text);
}

.pr-tab.active {
    color: var(--pr-text);
    border-bottom-color: var(--pr-accent);
}

.pr-villages-panel {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.pr-villages-panel[hidden] {
    display: none;
}

.pr-villages-summary {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
}

.pr-villages-summary-item {
    display: inline-flex;
    align-items: baseline;
    gap: 6px;
    color: var(--pr-text-secondary);
    font-size: var(--pr-fs-body-sm);
}

.pr-villages-summary-value {
    font-family: var(--pr-font-mono);
    font-size: 16px;
    font-weight: 600;
    color: var(--pr-text);
}

.pr-villages-summary-item.is-danger .pr-villages-summary-value { color: var(--pr-danger-text); }
.pr-villages-summary-item.is-warning .pr-villages-summary-value { color: var(--pr-warning); }

.pr-villages-table-card {
    padding: 0;
    overflow-x: auto;
}

.pr-villages-table tbody tr.pr-villages-row {
    cursor: pointer;
}

.pr-villages-table tbody tr.pr-villages-row:focus-visible {
    outline-offset: -2px;
}

.pr-villages-table tr.is-selected td {
    background: var(--pr-bg-selected);
}

.pr-villages-table tr.is-selected td:first-child {
    box-shadow: inset 2px 0 0 var(--pr-accent);
}

.pr-villages-table td {
    vertical-align: top;
}

.pr-villages-table td.is-danger {
    color: var(--pr-danger-text);
}

.pr-villages-name-line {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

.pr-villages-name {
    font-weight: 600;
}

.pr-villages-coords {
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-mono-sm);
    color: var(--pr-text-muted);
}

.pr-villages-timer {
    display: block;
    margin-top: 2px;
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-mono-sm);
    color: var(--pr-text-secondary);
}

.pr-villages-open {
    text-align: right;
    white-space: nowrap;
}

.pr-villages-subtabs {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.pr-villages-sort {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 0;
    border: none;
    background: transparent;
    color: inherit;
    font: inherit;
    letter-spacing: inherit;
    text-transform: inherit;
    cursor: pointer;
}

.pr-villages-sort:disabled {
    cursor: default;
}

.pr-villages-sort.is-sorted {
    color: var(--pr-text);
}

.pr-villages-res-cell {
    font-family: var(--pr-font-mono);
    font-variant-numeric: tabular-nums;
}

.pr-villages-res-cell .pr-progress {
    margin-top: 5px;
}

.pr-villages-res-cell.is-unavailable {
    color: var(--pr-text-disabled);
}

.pr-villages-res-cell.is-warning .pr-villages-res-main { color: var(--pr-warning); }
.pr-villages-res-cell.is-danger { color: var(--pr-danger-text); }
.pr-villages-res-cell.is-wood .pr-villages-res-main { color: var(--pr-res-wood); }
.pr-villages-res-cell.is-clay .pr-villages-res-main { color: var(--pr-res-clay); }
.pr-villages-res-cell.is-iron .pr-villages-res-main { color: var(--pr-res-iron); }
.pr-villages-res-cell.is-crop .pr-villages-res-main { color: var(--pr-res-crop); }

.pr-villages-table tr.is-stale .pr-villages-res-main {
    text-decoration: underline dotted;
    text-underline-offset: 3px;
}

.pr-villages-sum td {
    font-family: var(--pr-font-mono);
    color: var(--pr-text-secondary);
}

.pr-villages-back {
    align-self: flex-start;
}

.pr-villages-detail-head {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.pr-villages-detail-name {
    font-size: 20px;
    font-weight: 700;
}

.pr-villages-detail-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 14px;
    align-items: start;
}

.pr-villages-empty-state,
.pr-villages-not-read {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
    margin-top: 14px;
    color: var(--pr-text-secondary);
}

.pr-villages-res-card-pct {
    margin-left: auto;
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-mono-sm);
    color: var(--pr-text-muted);
}

.pr-dash {
    display: flex;
    flex-direction: column;
    gap: var(--pr-content-gap);
    min-width: 0;
}

.pr-dash-head {
    margin-bottom: 0;
}

.pr-dash-automation {
    display: flex;
    flex-direction: column;
    gap: var(--pr-space-4);
}

.pr-dash-section-head {
    display: flex;
    align-items: center;
    gap: var(--pr-space-4);
}

.pr-dash-section-title {
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-label-lg);
    letter-spacing: var(--pr-ls-label-wide);
    text-transform: uppercase;
    color: var(--pr-text-secondary);
}

.pr-dash-section-meta {
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-mono-sm);
    color: var(--pr-text-muted);
}

.pr-dash-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    grid-auto-rows: 1fr;
    gap: var(--pr-space-5);
}

@media (min-width: 1280px) {
    .pr-dash-grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.pr-dash-card {
    display: flex;
    flex-direction: column;
    gap: var(--pr-space-2);
    min-width: 0;
    padding: 10px 14px 7px;
    border-radius: var(--pr-radius-card);
    border: 1px solid var(--pr-border);
    background: var(--pr-bg-card);
}

.pr-dash-card.is-alert {
    border-color: var(--pr-danger-border-strong);
}

.pr-dash-card-head {
    display: flex;
    align-items: flex-start;
    gap: var(--pr-space-4);
}

.pr-dash-card-titles {
    flex: 1 1 auto;
    min-width: 0;
}

.pr-dash-card-name {
    font-size: var(--pr-fs-body-sm);
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--pr-text);
    overflow-wrap: anywhere;
}

.pr-dash-card-state {
    margin-top: 2px;
    font-family: var(--pr-font-mono);
    font-size: 10px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.pr-dash-card-timer .pr-label {
    display: block;
}

.pr-dash-timer-value {
    margin-top: 1px;
    font-family: var(--pr-font-mono);
    font-size: 19px;
    font-weight: 600;
    line-height: 1.25;
    font-variant-numeric: tabular-nums;
    color: var(--pr-text);
}

.pr-dash-timer-value.is-idle {
    color: var(--pr-text-disabled);
}

.pr-dash-card-rows {
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.pr-dash-row {
    display: flex;
    justify-content: space-between;
    gap: var(--pr-space-4);
    font-size: var(--pr-fs-small);
}

.pr-dash-row-key {
    min-width: 0;
    color: var(--pr-text-muted);
}

.pr-dash-row-value {
    flex: none;
    max-width: 60%;
    font-family: var(--pr-font-mono);
    font-variant-numeric: tabular-nums;
    text-align: right;
    overflow-wrap: anywhere;
    color: var(--pr-text);
}

.pr-dash-card-note {
    font-size: var(--pr-fs-small);
    color: var(--pr-text-muted);
}

.pr-dash-card-footer {
    display: flex;
    align-items: center;
    gap: var(--pr-space-6);
    margin-top: auto;
    padding-top: 5px;
    border-top: 1px solid var(--pr-border-divider);
}

.pr-dash-spacer {
    flex: 1 1 auto;
    min-width: 0;
}

.pr-dash-action,
.pr-dash-link {
    padding: 2px 0;
    border: none;
    background: transparent;
    font-family: inherit;
    font-size: var(--pr-fs-small);
    cursor: pointer;
    transition: color 120ms ease;
}

.pr-dash-action {
    color: var(--pr-text);
}

.pr-dash-action:disabled {
    color: var(--pr-text-disabled);
    cursor: not-allowed;
}

.pr-dash-link {
    color: var(--pr-text-secondary);
}

.pr-dash-link:hover,
.pr-dash-link--accent {
    color: var(--pr-accent);
}

.pr-dash-link--accent:hover {
    color: var(--pr-accent-hover);
}

.pr-toggle--readonly {
    cursor: default;
}

.pr-dash-card-state.is-secondary,
.pr-dash-kv-value.is-secondary { color: var(--pr-text-secondary); }
.pr-dash-card-state.is-muted,
.pr-dash-kv-value.is-muted,
.pr-dash-sec-value.is-muted { color: var(--pr-text-muted); }
.pr-dash-card-state.is-success { color: var(--pr-success-text); }
.pr-dash-card-state.is-danger,
.pr-dash-row-value.is-danger,
.pr-dash-sec-value.is-danger { color: var(--pr-danger-text); }
.pr-dash-row-value.is-secondary { color: var(--pr-text-secondary); }
.pr-dash-kv-value.is-warning { color: var(--pr-warning); }
.pr-dash-kv-value.is-default,
.pr-dash-sec-value.is-default { color: var(--pr-text); }

.view[data-view="hero"] .pr-dash-row {
    display: grid;
    grid-template-columns: minmax(0, 16rem) minmax(0, 1fr);
    column-gap: var(--pr-space-6);
}

.view[data-view="hero"] .pr-dash-row-value {
    max-width: none;
    min-width: 0;
    text-align: left;
}

.view[data-view="hero"] .pr-dash-row-value:only-child {
    grid-column: 1 / -1;
}

.view[data-view="hero"] .pr-setting-row:not(.pr-setting-row--stack) {
    grid-template-columns: minmax(0, 32rem) auto;
    justify-content: start;
}

.pr-dash-panels {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--pr-space-6);
}

.pr-dash-panel {
    padding: 14px 16px 8px;
}

.pr-dash-panel-head {
    display: flex;
    align-items: center;
    gap: var(--pr-space-4);
}

.pr-dash-kv-list {
    display: flex;
    flex-direction: column;
}

.pr-dash-kv {
    display: grid;
    grid-template-columns: 104px minmax(0, 1fr);
    gap: var(--pr-space-5);
    align-items: baseline;
    padding: 7px 0;
    border-top: 1px solid var(--pr-border-divider);
}

.pr-dash-kv-value {
    min-width: 0;
    font-size: var(--pr-fs-body-sm);
    overflow-wrap: anywhere;
}

.pr-dash-queue-summary {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: var(--pr-space-3) var(--pr-space-7);
    padding-bottom: 2px;
}

.pr-dash-queue-count {
    font-family: var(--pr-font-mono);
    font-size: 20px;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    color: var(--pr-text);
}

.pr-dash-queue-label {
    margin-left: calc(-1 * var(--pr-space-3));
    font-size: var(--pr-fs-body-sm);
    color: var(--pr-text-secondary);
}

.pr-dash-queue-scope {
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-meta);
    color: var(--pr-text-secondary);
}

.pr-dash-queue-list {
    display: flex;
    flex-direction: column;
}

.pr-dash-queue-row {
    display: flex;
    align-items: center;
    gap: var(--pr-space-4);
    padding: 6px 0;
    border-top: 1px solid var(--pr-border-divider);
}

.pr-dash-queue-group {
    flex: 0 0 72px;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-label-lg);
    color: var(--pr-text-muted);
}

.pr-dash-queue-task {
    flex: 1 1 auto;
    min-width: 0;
    font-size: var(--pr-fs-body-sm);
    color: var(--pr-text);
    overflow-wrap: anywhere;
}

.pr-dash-queue-status {
    flex: none;
    padding: 3px 8px;
    border-radius: 6px;
    background: var(--pr-bg-badge);
    font-family: var(--pr-font-mono);
    font-size: 10px;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--pr-text-secondary);
}

.pr-dash-queue-empty {
    padding: 6px 0;
    border-top: 1px solid var(--pr-border-divider);
    font-size: var(--pr-fs-body-sm);
    color: var(--pr-text-muted);
}

.pr-dash-security {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--pr-space-4) 26px;
    min-width: 0;
    padding: 12px 16px;
    border-radius: var(--pr-radius-card);
    border: 1px solid var(--pr-border);
    background: var(--pr-bg-card);
}

.pr-dash-security.is-alert {
    border-color: var(--pr-danger-border-strong);
}

.pr-dash-sec-item {
    display: flex;
    align-items: center;
    gap: var(--pr-space-3);
    min-width: 0;
    font-size: var(--pr-fs-body-sm);
}

.pr-dash-sec-key {
    color: var(--pr-text-muted);
}

.pr-dash-sec-value {
    font-family: var(--pr-font-mono);
    color: var(--pr-text);
}

.pr-dash-dot--off { background: var(--pr-text-disabled); }
.pr-dash-dot--success { background: var(--pr-success-dot); }
.pr-dash-dot--danger { background: var(--pr-danger-text); }

.pr-dash-context {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--pr-space-4);
    padding: 0 2px;
    font-size: var(--pr-fs-body-sm);
    color: var(--pr-text-muted);
}

@media (max-width: 1000px) {
    .pr-dash-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .pr-dash-panels {
        grid-template-columns: minmax(0, 1fr);
    }
}

@media (max-width: 820px) {
    .pr-dash-grid {
        grid-template-columns: minmax(0, 1fr);
        grid-auto-rows: auto;
    }
}

.queue-overview-card {
    max-width: none;
}

.queue-overview-row.is-selected {
    background: var(--pr-bg-selected);
}

.queue-overview-village {
    background: none;
    border: 0;
    padding: 0;
    color: var(--pr-accent);
    font: inherit;
    cursor: pointer;
    text-align: left;
}

.pr-farm-layout[hidden],
.pr-candidates-panel[hidden],
.pr-candidates-custom[hidden],
.pr-candidates-table-card[hidden],
.pr-candidates-more[hidden] {
    display: none;
}

.pr-candidates-more {
    display: flex;
    justify-content: center;
}

.pr-candidates-panel {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.pr-candidates-filters {
    gap: 10px;
}

.pr-candidates-filter-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: 12px 18px;
    align-items: end;
}

.pr-candidates-select {
    min-width: 72px;
}

.pr-candidates-custom {
    display: inline-flex;
    align-items: center;
    gap: var(--pr-space-2);
}

.pr-candidates-alliance {
    justify-content: space-between;
    gap: var(--pr-space-3);
}

.pr-candidates-filters .pr-input:disabled,
.pr-candidates-filters .pr-input[aria-disabled="true"] {
    opacity: 0.45;
}

.pr-candidates-notices {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.pr-candidates-notices:empty {
    display: none;
}

.pr-candidates-summary {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 12px;
}

.pr-candidates-count {
    font-size: var(--pr-fs-body-sm);
    font-weight: 600;
    color: var(--pr-text);
}

.pr-candidates-scout-controls {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
}

.pr-candidates-scout-count {
    width: 80px;
}

.pr-candidates-scout-status {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 4px;
}

.pr-candidates-scout-status:empty,
.pr-candidates-scout-error:empty {
    display: none;
}

.pr-candidates-scout-error {
    font-size: var(--pr-fs-small);
    color: var(--pr-danger-text);
}

.pr-candidates-scout-save {
    align-self: end;
    flex-direction: row;
    align-items: center;
    gap: 8px;
}

.pr-candidates-table-card {
    padding: 0;
    overflow-x: auto;
}

.pr-candidates-table th.pr-candidates-num,
.pr-candidates-table td.pr-candidates-num {
    text-align: right;
    font-family: var(--pr-font-mono);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.pr-candidates-table td.pr-candidates-expand {
    width: 28px;
    padding-right: 0;
}

.pr-candidates-from {
    display: block;
    margin-top: 2px;
    font-size: var(--pr-fs-meta);
    color: var(--pr-text-muted);
    white-space: nowrap;
}

.pr-candidates-player {
    font-weight: 600;
}

.pr-candidates-alliance-tag {
    font-family: var(--pr-font-mono);
    white-space: nowrap;
}

.pr-candidates-sub {
    display: block;
    margin-top: 2px;
    font-family: var(--pr-font-mono);
    font-size: var(--pr-fs-mono-sm);
    color: var(--pr-text-muted);
}

.pr-delta--growth { color: var(--pr-danger-text); }
.pr-delta--decline { color: var(--pr-success-text); }
.pr-delta--flat { color: var(--pr-text-secondary); }
.pr-delta--na { color: var(--pr-text-muted); }

.pr-candidates-table tr.pr-candidates-village-row td {
    background: var(--pr-bg-inset);
    font-size: var(--pr-fs-meta);
}

.pr-candidates-village-name {
    padding-left: 12px;
}

.pr-candidates-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    justify-content: flex-end;
}

.view[data-view="market"] .pr-card {
    margin-bottom: 14px;
}

.market-rows {
    display: flex;
    flex-direction: column;
}

.market-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    padding: 6px 0;
    font-size: var(--pr-fs-body-sm);
    border-bottom: 1px solid var(--pr-border-divider);
}

.market-row--unverified {
    padding-left: 8px;
    border-left: 3px solid var(--pr-danger);
    background: var(--pr-danger-tint);
}

.market-row-time,
.market-row-mode,
.market-row-code {
    font-family: var(--pr-font-mono);
    color: var(--pr-text-muted);
}

.market-row-route {
    font-weight: 600;
}

.market-row--alert {
    padding-left: 8px;
    border-left: 3px solid var(--pr-warning);
    background: var(--pr-warning-tint);
}

.market-row-hint {
    color: var(--pr-text-muted);
    font-style: italic;
}

.market-live-hint {
    color: var(--pr-danger-text);
}


.market-offer-templates {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin: 6px 0;
}

.market-offer-row-fields {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
}

.market-offer-row--invalid {
    padding-left: 8px;
    border-left: 3px solid var(--pr-danger);
}

.market-offer-label,
.market-offer-arrow {
    color: var(--pr-text-muted);
    font-size: var(--pr-fs-body-sm);
}

.market-offer-row-errors {
    margin: 2px 0 0;
}

.market-journal-rows {
    max-height: 40rem;
    overflow-y: auto;
}

.market-offer-groups {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin: 6px 0;
}

.market-offer-group {
    padding: 8px 10px;
    border: 1px solid var(--pr-border);
    border-radius: 6px;
}

.market-offer-group-header {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
}

.market-offer-group-title {
    font-weight: 600;
    flex: 1 1 auto;
}

.market-offer-group-switch,
.market-offer-copy-target {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: var(--pr-fs-body-sm);
}

.market-offer-copy {
    margin: 6px 0;
    padding: 6px 8px;
    border-left: 3px solid var(--pr-border-control);
}

.market-offer-copy-targets {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 12px;
    margin: 4px 0;
}

.market-offer-copy-actions {
    display: flex;
    gap: 6px;
}

.data-hub-content {
    display: flex;
    flex-direction: column;
    gap: var(--pr-space-4);
}

.data-hub-world {
    color: var(--pr-text-muted);
    font-size: var(--pr-fs-body-sm);
}

.data-hub-table td {
    vertical-align: top;
}

.data-hub-unknown td {
    color: var(--pr-text-muted);
}

.data-hub-stale td:first-child {
    border-left: 3px solid var(--pr-warning-border);
}

.data-hub-stale-badge {
    margin-left: var(--pr-space-2);
}
