/* static/css/pages/public_dark.css
   Ver.1196 - 공개 사이트 블랙 테마
   - 관리자 화면은 제외하고 public_layout.html을 쓰는 공개 영역에만 적용한다.
   - 기존 site tokens/home/board/work classes를 유지하고, 신규 .hero/.work-card 계약을 만들지 않는다.
   - References: MDN color-scheme, prefers-color-scheme, forced-colors, CSS custom properties.
*/

body.public-dark{
  color-scheme: dark;
  --ed2-bg:#070b14;
  --ed2-card:#111827;
  --ed2-text:#e5edf8;
  --ed2-muted:#9aa8bd;
  --ed2-line:#27364e;
  --ed2-mint:#60a5fa;
  --ed2-mint-2:#3b82f6;
  --ed2-shadow:0 18px 48px rgba(0,0,0,.34);

  --bg:var(--ed2-bg);
  --surface:var(--ed2-card);
  --surface-2:#172033;
  --text:var(--ed2-text);
  --muted:var(--ed2-muted);
  --line:var(--ed2-line);
  --border:var(--ed2-line);
  --border-2:#40536f;

  --brand-accent:#60a5fa;
  --accent:var(--brand-accent);
  --accent-weak:rgba(96,165,250,.18);
  --bar-bg:#101827;
  --bar-border:#2b3b55;

  --wd-card:#111827;
  --wd-card-bg:#111827;
  --wd-line:#27364e;
  --wd-card-border:#27364e;
  --wd-btn-bg:#111827;

  --post-card:#111827;
  --post-border:#27364e;
  --post-muted:#9aa8bd;

  --shadow-lg:0 22px 60px rgba(0,0,0,.42);
  --shadow-sm:0 14px 34px rgba(0,0,0,.30);
  --shadow-xs:0 8px 24px rgba(0,0,0,.24);

  --btn-primary-bg:#3b82f6;
  --btn-primary-bg-hover:#2563eb;
  --btn-secondary-bg:#334155;
  --btn-secondary-bg-hover:#475569;
  --btn-success-bg:#10b981;
  --btn-success-bg-hover:#059669;
  --btn-danger-bg:#ef4444;
  --btn-danger-bg-hover:#dc2626;
  --btn-focus-ring:rgba(96,165,250,.34);

  min-height:100vh;
  background:
    radial-gradient(circle at top left, rgba(96,165,250,.14), transparent 34rem),
    radial-gradient(circle at 80% 8%, rgba(139,92,246,.13), transparent 30rem),
    linear-gradient(180deg, #050814 0%, #0a0f1c 48%, #070b14 100%);
  color:var(--text);
}

body.public-dark a{ color:inherit; }
body.public-dark a:hover{ color:var(--accent); }
body.public-dark img{ background:#0f172a; }

body.public-dark .site-header{
  background:linear-gradient(90deg, #050814 0%, #0b1220 54%, #111a2c 100%);
  border-bottom:1px solid rgba(148,163,184,.18);
  box-shadow:0 14px 34px rgba(0,0,0,.32);
}

body.public-dark .g-page,
body.public-dark .container,
body.public-dark .work-list-page,
body.public-dark .search-page,
body.public-dark .community-page,
body.public-dark .board-container,
body.public-dark .post-container{
  color:var(--text);
}

body.public-dark :where(
  .surface,
  .card,
  .home-card,
  .home-worktile,
  .home-list,
  .board-hub,
  .board-hub-card,
  .board-best-wrap,
  .board-list,
  ul.lst,
  .m-card,
  .maker-card,
  .works-controls,
  .facet-row,
  .work-card,
  .actor-card,
  .initial-pill,
  .community-card,
  .wd-card,
  .wd-title-card,
  .write-panel,
  .write-box,
  .msg-modal__dialog,
  .msg-list-card,
  .msg-reader-card,
  .auth-modal-panel
){
  background:color-mix(in oklab, var(--surface) 94%, #0b1220 6%);
  color:var(--text);
  border-color:var(--line);
  box-shadow:var(--shadow-xs);
}

body.public-dark :where(
  .home-card--latest,
  .home-li,
  .board-list-head,
  .msg-hero,
  .msg-table thead th,
  .head-menu,
  .head-item,
  .write-input,
  .write-field input,
  .write-field select,
  .write-field textarea,
  .msg-input,
  .msg-textarea,
  input,
  select,
  textarea
){
  background:#0f172a;
  color:var(--text);
  border-color:var(--line);
}

body.public-dark :where(input, select, textarea)::placeholder{ color:#6f7f95; }
body.public-dark :where(input, select, textarea):focus{
  outline:none;
  border-color:rgba(96,165,250,.72);
  box-shadow:0 0 0 4px rgba(96,165,250,.14);
}

body.public-dark .home{
  --home-card-shadow:0 14px 36px rgba(0,0,0,.32);
  --home-card-shadow-hover:0 26px 60px rgba(0,0,0,.50), 0 0 0 1px rgba(96,165,250,.18);
}

body.public-dark .home-hero{
  background:
    linear-gradient(135deg, rgba(5,8,20,.92), rgba(10,15,28,.84)),
    var(--home-hero-image, linear-gradient(135deg, #050814, #111827 52%, #1e3a8a));
  box-shadow:0 22px 70px rgba(0,0,0,.44);
}
body.public-dark .home-hero::before{
  background:
    radial-gradient(circle at 18% 20%, rgba(96,165,250,.33), transparent 38%),
    radial-gradient(circle at 76% 16%, rgba(139,92,246,.24), transparent 34%),
    linear-gradient(rgba(5,8,20,.48), rgba(5,8,20,.66));
}
body.public-dark .home-hero__eyebrow,
body.public-dark .home-hero__featured{
  background:rgba(15,23,42,.62);
  border-color:rgba(226,232,240,.22);
}
body.public-dark .home-hero__featured-label{
  background:linear-gradient(135deg, #60a5fa, #93c5fd);
  color:#06111f;
}

body.public-dark .sec-head__title,
body.public-dark .home-sumblock__title,
body.public-dark .home-worktile__title,
body.public-dark .home-actortile__name,
body.public-dark .m-title,
body.public-dark .work-title,
body.public-dark .maker-name,
body.public-dark .post-title-card,
body.public-dark .write-label,
body.public-dark .radio,
body.public-dark .checkbox{
  color:var(--text);
}
body.public-dark .sec-head__sub,
body.public-dark .home-li__label,
body.public-dark .home-li__meta,
body.public-dark .m-dscr,
body.public-dark .m-stats,
body.public-dark .m-right,
body.public-dark .maker-count,
body.public-dark .write-help{
  color:var(--muted);
}
body.public-dark .home-worktile__code,
body.public-dark .work-code,
body.public-dark .m-stat .v,
body.public-dark .board-head,
body.public-dark .board-best-stats .blue{
  color:#60a5fa;
}

body.public-dark .board-list-head{
  border-bottom-color:#2b3b55;
}
body.public-dark ul.lst{
  border-bottom-color:#1f2a3b;
}
body.public-dark ul.lst.notice,
body.public-dark .m-card.m-notice{
  background:linear-gradient(135deg, rgba(120,83,18,.30), rgba(15,23,42,.96));
  border-color:rgba(245,158,11,.36);
}
body.public-dark .m-thumb{
  border-color:var(--line);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.04);
}

body.public-dark .maker-card:hover,
body.public-dark .board-hub-card:hover,
body.public-dark .home-worktile:hover,
body.public-dark :is(.work-list-page, .maker-detail-page) .work-card:hover{
  border-color:rgba(96,165,250,.58);
}

body.public-dark .chip,
body.public-dark .scope-chip{
  background:rgba(96,165,250,.13);
  border-color:rgba(96,165,250,.25);
  color:#bfdbfe;
}

/*
  Ver.1337: work-badge is a component with state tokens.
  Public dark CSS is loaded after page CSS in base/public_layout, so the
  generic fallback must consume --work-badge-* tokens rather than replacing
  state colors directly. MDN: custom properties participate in the cascade,
  and :where() keeps the fallback selector low-specificity.
*/
body.public-dark :where(.work-badge){
  background:var(--work-badge-bg, rgba(96,165,250,.13));
  border-color:var(--work-badge-border, rgba(96,165,250,.25));
  color:var(--work-badge-fg, #bfdbfe);
}

body.public-dark :where(.btn, .ed2-btn, .wd-btn, .wd-icon-btn, .wd-more-btn, .rv-write-btn, .rv-submit, .wd-eval-btn, .wd-mini-btn, .wd-fav-btn, .wd-vote-btn, .wd-overflow-item){
  border-color:var(--line);
  background:#111827;
  color:var(--text);
}
body.public-dark :where(.btn-primary, .ed2-btn--primary, .rv-submit){
  border-color:rgba(96,165,250,.58);
  background:linear-gradient(135deg, #3b82f6, #2563eb);
  color:#fff;
}
body.public-dark :where(.btn-secondary){
  background:#334155;
  color:#f8fafc;
}
body.public-dark :where(.btn-outline){
  background:rgba(96,165,250,.07);
  border-color:rgba(96,165,250,.58);
  color:#bfdbfe;
}
body.public-dark :where(.btn-danger){ background:#dc2626; color:#fff; }
body.public-dark :where(.btn-success){ background:#059669; color:#fff; }

@media (hover: hover){
  body.public-dark :where(.home-card, .home-worktile, .m-card, .card, .work-card, .maker-card):hover{
    box-shadow:0 26px 60px rgba(0,0,0,.50), 0 0 0 1px rgba(96,165,250,.18);
  }
  body.public-dark ul.lst:hover,
  body.public-dark .home-li:hover,
  body.public-dark .head-item:hover{
    background:#172033;
  }
}

body.public-dark .auth-modal-backdrop,
body.public-dark .msg-modal__backdrop,
body.public-dark .preview-backdrop{
  background:rgba(0,0,0,.64);
}
body.public-dark .msg-compose-context{
  background:rgba(96,165,250,.10);
  border-color:rgba(96,165,250,.24);
}
body.public-dark .msg-compose-context__text,
body.public-dark .msg-table thead th{
  color:var(--text);
}
body.public-dark .msg-table tbody td{
  border-bottom-color:#1f2a3b;
}

body.public-dark .g-footerbar{
  background:rgba(5,8,20,.88);
  border-top:1px solid rgba(148,163,184,.18);
  color:var(--text);
  backdrop-filter:blur(10px);
}

@media (prefers-reduced-motion: reduce){
  body.public-dark *,
  body.public-dark *::before,
  body.public-dark *::after{
    transition-duration:.01ms !important;
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    scroll-behavior:auto !important;
  }
}

@media (forced-colors: active){
  body.public-dark{
    background:Canvas;
    color:CanvasText;
  }
  body.public-dark :where(.card, .home-card, .home-worktile, .board-list, .m-card, .maker-card, .wd-card, .msg-modal__dialog, .auth-modal-panel){
    background:Canvas;
    color:CanvasText;
    border-color:CanvasText;
    box-shadow:none;
  }
  body.public-dark :where(.btn, .ed2-btn, .wd-btn){
    background:ButtonFace;
    color:ButtonText;
    border-color:ButtonText;
  }
}
