/* ============================================
   SIGN — Single Theme Overrides

   Loaded after page CSS. Keep layout intact and
   normalize color, borders, and surface treatment.
   ============================================ */

/* ── Browser chrome / global surfaces ─────── */
*::-webkit-scrollbar-thumb {
  background: var(--surface-3);
}

*::-webkit-scrollbar-thumb:hover {
  background: var(--text-3);
}

body.app-page,
body.services-hub-page,
body.home-page {
  background: linear-gradient(180deg, var(--bg) 0%, #eee3d5 100%) fixed;
  color: var(--text);
}

body.home-page main,
body.services-hub-page main {
  background: transparent;
}

/* ── Header / navigation ──────────────────── */
.site-header {
  background: rgba(255, 250, 242, 0.94);
  border-bottom-color: var(--border);
  box-shadow: 0 1px 0 rgba(93, 67, 42, 0.05);
}

.site-nav {
  background: var(--surface);
  border-color: var(--border);
  box-shadow: var(--shadow-lg);
}

.site-nav a:hover,
.site-nav a:focus-visible {
  background: var(--accent-subtle);
  color: var(--text);
}

.nav-icon,
footer .social a:hover {
  color: var(--accent);
}

.mobile-menu-toggle {
  background: var(--surface);
  border-color: var(--border);
  color: var(--text-2);
}

.mobile-menu-toggle:hover,
html.mobile-nav-open .mobile-menu-toggle {
  background: var(--surface-2);
  color: var(--text);
  border-color: var(--border-focus);
}

@media (min-width: 860px) {
  .site-nav {
    background: transparent;
    border-color: transparent;
    box-shadow: none;
  }
}

/* ── Page typography ──────────────────────── */
h1,
h2,
h3,
h4,
h5,
h6,
body.app-page main :is(h1, h2, h3, h4, h5, h6),
.services-hub-copy h1,
.services-hub-section-head h2,
.services-hub-future-panel h2,
.services-hub-link-block strong,
.services-hub-feed-item strong,
.services-hub-mini-head strong,
.services-hub-section-head a,
.services-hub-link-block b,
.contact-card h3,
.contact-list dt,
.board-container h1,
.board-container h2,
.messenger-hero h1,
.messenger-item h2,
.messenger-empty h2,
.moneylab-hero h1,
.section-head h2,
.attendance-head h2,
.moneylab-section h2,
.panel h3,
.value,
.rank-user,
.rank-name,
.announcement-card h2,
.announcement-body h1,
.announcement-body h2,
.profile-card h2,
.pcard-name,
.profile-hero h1,
.auth-title,
.hero-copy h1,
.section-heading h2,
.vision-copy h2,
.page-header h1,
.detail-title,
.guild-card h1,
.guild-card h2,
.guild-card h3 {
  color: var(--text);
  letter-spacing: 0;
}

.hero-copy h1 {
  background: none;
  -webkit-text-fill-color: currentColor;
}

.auth-description,
.account-info-text,
.account-info-note,
.subtext,
.messenger-subtitle,
.messenger-body,
.messenger-meta,
.messenger-item-head time,
.comment-login-note,
.comment-empty,
.comment-date,
.guild-muted,
.guild-help,
.guild-hero-description,
.guild-level-panel-bottom,
.guild-member-sub,
.guild-chat-preview-meta,
.guild-profile-username,
.guild-profile-bio-box p,
.guild-profile-music-label,
.guild-profile-volume-label,
.runtime-help,
.runtime-lock-inline,
.dash-note,
.bot-data-summary-meta,
.command-help-count,
.command-help-aliases,
.coin-news-item-meta,
.coin-news-article-meta,
.history-reason,
.draft-excerpt,
.draft-time,
.card-meta,
.contact-list dd,
.services-hub-copy p,
.services-hub-link-block span,
.services-hub-feed-item span,
.services-hub-feed-empty,
.services-hub-future-panel p,
.moneylab-hero > p:last-child,
.meta,
.tiny,
.warning,
.comment-date,
.announcement-summary,
.announcement-meta,
.summary,
.period,
.detail-summary,
.section-heading p,
.hero-summary,
.vision-summary,
.service-card p,
.service-index,
.service-tag,
.section-block-head span,
.section-block-head a,
.guild-list-meta,
.profile-card p,
.auth-subtitle {
  color: var(--text-2);
}

.section-kicker,
.eyebrow,
.auth-kicker,
.auth-eyebrow,
.guild-eyebrow,
.messenger-eyebrow,
.messenger-kind,
.services-hub-kicker,
.services-hub-label,
.services-hub-link-label,
.services-hub-feed-type,
.contact-label,
.dashboard-kicker,
.guild-reward-kicker {
  color: var(--accent);
}

/* ── Cards / panels ───────────────────────── */
.auth-card,
.auth-container,
.legal-card,
.moneylab-section,
.panel,
.guild-card,
.card,
.announcement-card,
.announcement-form,
.detail-meta,
.announcement-body,
.board-container,
.post-detail .post-content,
.comment-item,
.messenger-card,
.profile-section,
.settings-dialog,
.crop-dialog,
.dashboard-section-card,
.dashboard-hero,
.dash-header,
.server-select,
.settings-shell,
.settings-pane,
.command-help-card,
.command-help-table-wrap,
.social-account-item,
.linked-role-card,
.profile-presence-card,
.account-links-group,
.coin-news-card,
.coin-news-detail-card,
.coin-news-modal-card,
.rank-profile-card,
.point-history-card,
.shop-panel,
.shop-item-card,
.attendance-garden-panel,
.draft-list-shell,
.draft-card,
.preview-card,
.markdown-editor-pane,
.feature-detail-card,
.post-form form,
.comment-section,
.reply-item,
.services-hub-links-panel,
.services-hub-feed-panel,
.services-hub-future-panel,
.services-hub-contact-panel,
.services-hub-hero-card,
.services-hub-card,
.services-hub-news-panel,
.services-hub-news-item,
.services-hub-future-card,
.services-hub-contact-card,
.services-hub-link-block,
.services-hub-feed-item,
.services-hub-feed-empty,
.services-hub-tag-list li,
.contact-card,
.contact-image-card,
.settings-modal-card,
.crop-modal-card,
.guild-landing-card,
.guild-hero,
.guild-policy-box,
.guild-list-item,
.guild-chat-shell,
.guild-member-card,
.guild-stat-card,
.guild-ranking-item,
.guild-attendance-item,
.guild-donation-item,
.guild-reward-card,
.guild-chat-message,
.guild-battlepass-highlight,
.guild-battlepass-highlight-active,
.guild-battlepass-body,
.guild-reward-inline,
.guild-reward-list li,
.guild-log-list li,
.guild-chat-preview-item,
.guild-profile-bio-box,
.guild-profile-music-box,
.guild-level-panel,
.runtime-category,
.runtime-item,
.hero-preview-panel,
.hero-signal-panel,
.hero-signal-step,
.hero-stat,
.service-card,
.notice-panel,
.notice-item,
.event-item,
.event-empty-card,
.event-slider-shell,
.vision-board,
.vision-node,
.vision-node-core,
.hero-core-item,
.home-side-services-shell,
.bot-focus-card,
.coin-news-item,
.point-history-item,
.coin-log-table-wrap,
.history-list,
.history-list-full,
.messenger-meta span,
.comment-context-menu,
.social-confirm-info,
.linked-role-meta-item,
.linked-role-account-block,
.profile-message,
.empty-state,
.vision-list li,
.vision-orbit,
.pedit-col,
.pcard {
  background: var(--surface);
  border-color: var(--border);
  color: var(--text);
  box-shadow: var(--shadow-sm);
}

.moneylab-section,
.auth-card,
.auth-container,
.board-container,
.messenger-card,
.services-hub-links-panel,
.services-hub-feed-panel,
.services-hub-future-panel,
.contact-card,
.pedit-col,
.pcard {
  box-shadow: var(--shadow-md);
}

.panel,
.post-detail .post-content,
.comment-item,
.services-hub-link-block,
.services-hub-feed-item,
.services-hub-feed-empty,
.services-hub-tag-list li,
.messenger-meta span,
.post-list th,
.post-list .pagination a,
.post-list .pagination .current,
.comment-context-menu button,
.inline-form input,
.shop-item-preview,
.rank-user-btn,
.coin-news-item,
.empty-state,
.vision-list li,
.vision-orbit,
.history-list li,
.history-list-full li {
  background: var(--surface-2);
  border-color: var(--border);
}

.services-hub-link-block:hover,
.services-hub-link-block:focus-visible,
.services-hub-feed-item:hover,
.services-hub-feed-item:focus-visible,
.service-card:hover,
.hero-stat:hover,
.event-item:hover,
.notice-item:hover,
.notice-panel:hover,
.contact-card:hover,
.contact-image-card:hover,
.guild-list-item:hover,
.guild-member-card:hover,
.guild-member-trigger:hover,
.guild-ranking-item:hover,
.guild-attendance-item:hover,
.guild-donation-item:hover,
.guild-reward-card:hover,
.bot-focus-card:hover,
.home-side-services-shell:hover,
.hero-core-item:hover,
.services-hub-card:hover,
.services-hub-news-item:hover,
.services-hub-quick-links a:hover,
.announcement-card:hover,
.draft-card:hover,
.messenger-item:hover,
.coin-news-item:hover,
.rank-user-btn:hover,
.section-link-button:hover,
.post-list tbody tr:hover,
.comment-context-menu button:hover {
  background: var(--surface-hover);
  border-color: var(--border-focus);
  box-shadow: var(--shadow-md);
}

/* ── Forms / tables ───────────────────────── */
input[type="text"],
input[type="password"],
input[type="email"],
input[type="search"],
input[type="number"],
input[type="url"],
input[type="tel"],
select,
textarea,
.post-form input[type="text"],
.post-form textarea,
.comment-form textarea,
.reply-form textarea,
.guild-form input[type="text"],
.guild-form input[type="number"],
.guild-form input[type="color"],
.guild-form input[type="file"],
.guild-form textarea,
.guild-inline-form input[type="text"],
.guild-inline-form input[type="number"],
.guild-search-form input[type="text"],
.guild-chat-form textarea,
.inline-form input {
  background: var(--surface-2);
  border-color: var(--border);
  color: var(--text);
}

input:focus,
select:focus,
textarea:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-subtle);
}

.post-list table {
  border-color: var(--border);
}

.post-list th,
.post-list td,
.post-detail .post-meta,
.comment-section,
.rank-list li,
.legal-section + .legal-section {
  border-color: var(--border);
}

.post-list tbody tr {
  background: var(--surface);
}

/* ── Buttons / links ──────────────────────── */
.btn-primary,
.auth-submit-button,
.auth-btn-primary,
.auth-required-login-btn,
.attendance-btn,
.cta-button-primary,
.primary-btn,
.board-button,
.messenger-btn-primary,
.shop-action-btn,
.shop-action-btn.is-buy,
.news-open-btn,
.detail-open-btn,
.linked-role-button.primary,
.guild-btn-primary,
.invite-btn,
.moneylab-section .inline-form button,
.post-list .pagination .current,
.post-list .pagination a:hover {
  background: linear-gradient(135deg, var(--accent), var(--accent-hover));
  border-color: transparent;
  color: var(--accent-ink);
  box-shadow: 0 8px 20px var(--accent-glow);
}

.btn-primary:hover,
.auth-submit-button:hover,
.auth-btn-primary:hover,
.auth-required-login-btn:hover,
.attendance-btn:hover,
.cta-button-primary:hover,
.primary-btn:hover,
.board-button:hover,
.messenger-btn-primary:hover,
.shop-action-btn:hover,
.news-open-btn:hover,
.detail-open-btn:hover,
.linked-role-button.primary:hover,
.guild-btn-primary:hover,
.invite-btn:hover {
  background: linear-gradient(135deg, var(--accent-hover), var(--accent));
  color: var(--accent-ink);
}

.filter-chip,
.secondary-btn,
.ghost-btn,
.account-link-button,
.guild-btn-ghost,
.messenger-btn-ghost,
.board-button.delete-button,
.shop-link,
.auth-social-btn,
.social-connect-button,
.linked-role-button,
.section-link-button,
.cta-button-secondary,
.guild-btn-disabled,
.btn-secondary,
.comment-context-menu button {
  background: var(--surface-2);
  border-color: var(--border);
  color: var(--text);
}

.filter-chip:hover,
.secondary-btn:hover,
.ghost-btn:hover,
.account-link-button:hover,
.guild-btn-ghost:hover,
.messenger-btn-ghost:hover,
.shop-link:hover,
.auth-social-btn:hover,
.social-connect-button:hover,
.linked-role-button:hover,
.section-link-button:hover,
.cta-button-secondary:hover,
.btn-secondary:hover {
  background: var(--surface-hover);
  border-color: var(--border-focus);
  color: var(--text);
}

/* Like button — override dark "filled" style with warm surface default */
.board-button.like-btn {
  background: var(--surface-2);
  border-color: var(--border);
  color: var(--text-2);
  box-shadow: none;
}

.board-button.like-btn:hover {
  background: var(--surface-hover);
  border-color: var(--border-focus);
  color: var(--text);
}

.board-button.like-btn.is-liked {
  background: rgba(217, 120, 30, 0.12);
  border-color: rgba(217, 120, 30, 0.36);
  color: var(--accent);
  box-shadow: none;
}

.board-button.like-btn.is-liked:hover {
  background: rgba(217, 120, 30, 0.20);
  border-color: rgba(217, 120, 30, 0.50);
}

.danger-btn,
.disconnect-button,
.linked-role-button.danger,
.guild-btn-danger,
.delete-button,
.btn-danger,
.btn-danger-outline {
  background: var(--danger-subtle);
  border-color: rgba(201, 78, 66, 0.24);
  color: var(--danger);
}

.danger-btn:hover,
.disconnect-button:hover,
.linked-role-button.danger:hover,
.guild-btn-danger:hover,
.delete-button:hover,
.btn-danger:hover,
.btn-danger-outline:hover {
  background: rgba(201, 78, 66, 0.18);
  border-color: rgba(201, 78, 66, 0.34);
}

/* ── Semantic states ──────────────────────── */
.non-field-errors,
.auth-container > form > ul,
.django-messages-list,
.msg.error,
.profile-message-error,
.messenger-flash-error,
.guild-message-error,
.guild-form-error {
  border-color: rgba(201, 78, 66, 0.24);
  background: var(--danger-subtle);
  color: var(--danger);
}

.msg.success,
.profile-message-success,
.messenger-flash-success,
.guild-message-success,
.linked-role-badge.ok {
  border-color: rgba(63, 143, 104, 0.24);
  background: var(--success-subtle);
  color: var(--success);
}

.messenger-item.is-unread,
.msg.info,
.profile-message-info,
.messenger-flash-info,
.guild-message-info,
.flash,
.pill,
.linked-role-badge.info {
  border-color: rgba(74, 127, 159, 0.24);
  background: var(--info-subtle);
  color: var(--info);
}

.msg.warning,
.linked-role-badge.muted {
  border-color: rgba(196, 135, 40, 0.28);
  background: var(--warning-subtle);
  color: var(--warning);
}

.guild-role-leader,
.coin-news-tag.tier-major {
  background: var(--accent-subtle);
  border-color: rgba(217, 120, 30, 0.26);
  color: var(--accent);
}

.guild-role-vice_leader,
.guild-role-member,
.coin-news-tag,
.coin-news-tag.tier-normal,
.pill-muted {
  background: var(--surface-2);
  border-color: var(--border);
  color: var(--text-2);
}

.coin-news-tag.sentiment-good {
  background: var(--success-subtle);
  border-color: rgba(63, 143, 104, 0.22);
  color: var(--success);
}

.coin-news-tag.sentiment-bad {
  background: var(--danger-subtle);
  border-color: rgba(201, 78, 66, 0.22);
  color: var(--danger);
}

/* ── Page-specific accents ────────────────── */
.profile-hero {
  background:
    radial-gradient(90% 110% at 0% 0%, rgba(217, 120, 30, 0.16) 0%, transparent 52%),
    linear-gradient(145deg, var(--banner-color, var(--accent)) 0%, var(--surface-2) 62%, var(--surface) 100%);
}

.profile-avatar-box,
.pcard-avatar-ring {
  border-color: var(--surface);
  background: var(--surface-2);
  box-shadow: var(--shadow-sm);
}

.event-item-fallback,
.shop-item-empty,
.rank-avatar {
  background: linear-gradient(135deg, var(--surface-2), var(--surface-3));
  color: var(--text-3);
}

.service-card::before {
  background: linear-gradient(90deg, var(--accent), rgba(217, 120, 30, 0.36), transparent);
}

.vision-node-core {
  background: linear-gradient(135deg, var(--accent), var(--accent-hover));
  color: var(--accent-ink);
}

.auth-ambient-orb {
  opacity: 0.16;
}

.rank-points,
.post-list td a:hover,
.comment-anon.is-owner,
.reply-prefix,
.footer-legal-links a:hover,
.auth-link,
.form-links a:hover {
  color: var(--accent);
}

.reply-prefix {
  border-color: rgba(217, 120, 30, 0.24);
}

.panel .rank-user-btn,
.rank-user-btn {
  background: var(--surface-2) !important;
  border-color: var(--border) !important;
  box-shadow: none !important;
  color: var(--text);
}

.panel .rank-user-btn:hover,
.panel .rank-user-btn:focus-visible,
.rank-user-btn:hover,
.rank-user-btn:focus-visible {
  background: var(--surface-hover) !important;
  border-color: var(--border-focus) !important;
  box-shadow: var(--shadow-sm) !important;
}

.coin-news-item-btn:hover,
.coin-news-item-btn:focus-visible {
  background: var(--surface-hover);
  border-color: var(--border-focus);
}

.services-hub-roblox-btn {
  background: rgba(217, 120, 30, 0.1);
  border-color: rgba(217, 120, 30, 0.22);
  color: var(--accent);
}

.services-hub-roblox-btn:hover {
  background: rgba(217, 120, 30, 0.18);
  border-color: rgba(217, 120, 30, 0.40);
}

.services-hub-recruit-list li {
  background: var(--surface-2);
  border-color: var(--border);
}

.services-hub-recruit-list strong {
  color: var(--text);
}

.services-hub-recruit-list span,
.services-hub-recruit-note {
  color: var(--text-2);
}

/* ── Guild page — warm theme overrides ────── */

/* Hero meta badges (guild leader, Lv., donation, etc.) */
.guild-hero-meta span {
  background: var(--surface-2);
  border-color: var(--border);
  color: var(--text-2);
}

/* Level progress bar fill */
.guild-progress-bar span {
  background: linear-gradient(90deg, var(--accent), var(--accent-hover));
}

/* Reward pill (was blue bg + white text — invisible in warm) */
.guild-reward-pill {
  background: var(--accent-subtle);
  border-color: rgba(217, 120, 30, 0.28);
  color: var(--accent);
}

/* Reward inline row */
.guild-reward-inline {
  background: var(--surface-2);
  border-color: var(--border);
}

/* Modal dialog */
.guild-modal-dialog {
  background: var(--surface);
  border-color: var(--border);
  box-shadow: var(--shadow-lg);
}

.guild-modal-header p {
  color: var(--text-2);
}

.guild-modal-close {
  background: var(--surface-2);
  border-color: var(--border);
  color: var(--text);
}

/* Member / profile popup card */
.guild-profile-card {
  background: var(--surface);
  border-color: var(--border);
}

.guild-profile-close {
  background: var(--surface-2);
  border-color: var(--border);
  color: var(--text);
}

.guild-profile-banner {
  background:
    radial-gradient(90% 110% at 0% 0%, rgba(217, 120, 30, 0.16) 0%, transparent 52%),
    linear-gradient(145deg, var(--surface-2) 0%, var(--surface) 100%);
}

.guild-profile-avatar-wrap {
  border-color: var(--surface);
  background: var(--surface-2);
}

.guild-profile-badge {
  background: var(--accent-subtle);
  border-color: rgba(217, 120, 30, 0.26);
  color: var(--accent);
}

.guild-profile-headline h4 {
  color: var(--text);
}

.guild-profile-points {
  color: var(--text);
}

/* Battlepass track */
.guild-battlepass-header {
  color: var(--text-2);
}

.guild-battlepass-highlight {
  background: var(--surface-2);
  border-color: var(--border);
}

.guild-battlepass-highlight-active {
  background: var(--success-subtle);
  border-color: rgba(63, 143, 104, 0.24);
}

.guild-battlepass-marker {
  background: var(--surface-2);
  border-color: var(--border);
  color: var(--text);
}

.guild-battlepass-step-current .guild-battlepass-marker {
  border-color: var(--accent);
  box-shadow: 0 0 0 1px rgba(217, 120, 30, 0.2), 0 0 24px rgba(217, 120, 30, 0.18);
}

.guild-battlepass-step:not(:last-child)::after {
  background: linear-gradient(180deg, rgba(217, 120, 30, 0.35), transparent);
}

/* Search result cards */
.guild-search-card {
  background: var(--surface-2);
  border-color: var(--border);
}

.guild-search-avatar {
  background: var(--surface-3);
  color: var(--text);
}

.guild-result-badge {
  background: var(--accent-subtle);
  border-color: rgba(217, 120, 30, 0.28);
  color: var(--accent);
}

/* Chat bubbles */
.guild-chat-bubble {
  background: var(--surface-2);
  border-color: var(--border);
}

.guild-chat-bubble-me {
  background: rgba(217, 120, 30, 0.12);
  border-color: rgba(217, 120, 30, 0.22);
}

.guild-chat-bubble p {
  color: var(--text);
}

/* ── MoneyLab page — warm theme overrides ────── */

/* 자세히 (history-more-btn) — warm orange pill */
.history-more-btn {
  background: var(--accent-subtle);
  border-color: rgba(217, 120, 30, 0.28);
  color: var(--accent);
}

.history-more-btn:hover {
  background: rgba(217, 120, 30, 0.18);
  border-color: rgba(217, 120, 30, 0.40);
}

/* Modal headers */
.coin-news-head,
.point-history-head {
  background: var(--surface-2);
  border-bottom-color: var(--border);
}

/* Modal close buttons */
.coin-news-close,
.point-history-close {
  background: var(--surface-3);
  border-color: var(--border);
  color: var(--text);
}

.coin-news-close:hover,
.point-history-close:hover {
  background: var(--surface-hover);
  border-color: var(--border-focus);
}

/* Coin news list inside modal */
.coin-news-card .coin-news-list li {
  border-bottom-color: var(--border);
}

/* Coin news headline inside modal (outside .panel) */
.coin-news-card .coin-news-item-headline {
  color: var(--text);
}

.coin-news-card .coin-news-item-btn:hover .coin-news-item-headline,
.coin-news-card .coin-news-item-btn:focus-visible .coin-news-item-headline {
  color: var(--accent);
}

/* Point history modal content */
.point-history-card .history-entry-left .history-reason {
  color: var(--text);
}

/* Coin news detail article — newspaper bar */
.coin-news-detail-topbar {
  background: var(--surface-2);
  border-bottom-color: var(--border);
}

.coin-news-paper-name {
  color: var(--accent);
}

.coin-news-paper-section {
  color: var(--text-2);
}

.coin-news-paper-dot {
  background: var(--text-3);
}

.coin-news-detail-topbar .coin-news-close {
  background: var(--surface-3);
  border-color: var(--border);
  color: var(--text);
}

/* Article body */
.coin-news-article-body {
  background: var(--surface);
}

.coin-news-article-kicker {
  color: var(--accent);
}

.coin-news-detail-card #coin-news-detail-headline {
  color: var(--text);
}

.coin-news-article-summary {
  color: var(--text-2);
}

.coin-news-article-byline {
  color: var(--text-2);
  border-top-color: var(--border);
}

.coin-news-article-reporter {
  color: var(--text);
}

.coin-news-article-paragraph,
.coin-news-article-paragraph.is-lead {
  color: var(--text);
}

/* Hero statbox */
.coin-news-hero-statbox {
  background: var(--surface);
  box-shadow: var(--shadow-md);
}

.coin-news-hero-stat-title {
  color: var(--text-2);
}

.coin-news-hero-caption {
  color: var(--text-2);
}

/* Detail impact / price */
.coin-news-detail-impact.neutral {
  color: var(--text);
}

.coin-news-detail-price {
  color: var(--text-2);
}

/* Article footer */
.coin-news-detail-footer {
  border-top-color: var(--border);
}

.coin-news-detail-footer-note {
  color: var(--text-2);
}
