/* sosig.site — 페이지 밝은 Windows 95 톤 (2026-08-15, 리뉴얼 3단계 시범).
   적용 방법: <body class="t95"> . 클래스가 없으면 이 파일은 아무 영향도 주지 않는다(전역 오염 없음).
   적용 방법: <html class="t95"> — :root 수준이라야 페이지가 :root에서 만드는 파생 변수(--text-muted 등)까지 따라온다.
   하드코딩 색이 남아 있는 부분만 아래 개별 규칙으로 보정한다. */

:root.t95{
  /* 면 */
  --c-bg:var(--retro-face); --c-bg2:var(--retro-face2); --c-bg3:var(--retro-field);
  --c-bg-alt1:var(--retro-face2); --c-bg-alt2:var(--retro-face); --c-bg-alt3:var(--retro-field);
  /* 선 */
  --c-border:var(--retro-shadow); --c-border2:#404040;
  /* 글자 */
  --c-text:var(--retro-ink); --c-text2:#101010; --c-text3:#1a1a1a;
  --c-muted:#4a4a4a; --c-muted2:#4f4f4f; --c-muted3:#2c3e6b;
  /* 강조 */
  --c-accent:var(--retro-accent); --c-accent2:var(--retro-accent2); --c-accent3:#0a246a; --c-accent-soft:#1f3a68;
  --c-cyan:#00566f;
  /* 의미색 (밝은 배경에서 읽히도록 어둡게) */
  --c-good:#004a00; --c-bad:#8b0000; --c-warn:#674500;

}
:root.t95 body{
  background:var(--c-bg); color:var(--c-text);
  font-family:var(--retro-font);
}

/* ── 기본 요소 ─────────────────────────────────────────────── */
.t95 h1,.t95 h2,.t95 h3,.t95 h4{color:var(--c-text); text-shadow:none;}
.t95 a{color:var(--c-accent);}
.t95 a:hover{color:var(--c-accent3);}
.t95 hr{border:0; border-top:1px solid var(--c-border); border-bottom:1px solid #fff;}

/* 패널·카드류: 95 베벨 */
.t95 section,.t95 article,.t95 .card,.t95 .panel,.t95 .box,.t95 details,.t95 fieldset{
  background:var(--c-bg2); color:var(--c-text);
  border:2px solid; border-color:#fff #808080 #808080 #fff;
}
.t95 details summary{color:var(--c-text);}

/* Legacy glass panels (podcast filters/calendar) use the same 95 panel treatment. */
:root.t95 .glass-panel{
  background:var(--c-bg2);color:var(--c-text);border-radius:0;
  border:2px solid;border-color:var(--retro-field) var(--retro-shadow) var(--retro-shadow) var(--retro-field);
  box-shadow:1px 1px 0 var(--retro-shadow);backdrop-filter:none;
}

/* 입력·버튼 */
.t95 input,.t95 select,.t95 textarea{
  background:#fff; color:#000;
  border:2px solid; border-color:#808080 #fff #fff #808080; padding:2px 5px;
  font-family:inherit;
}
.t95 button,.t95 .btn,.t95 a.btn{
  background:var(--c-bg); color:var(--c-text); font-family:inherit;
  border:2px solid; border-color:#fff #000 #000 #fff; padding:3px 10px; border-radius:0;
}
.t95 button:active,.t95 .btn:active{border-color:#000 #fff #fff #000;}

/* 표: 목록뷰 느낌 */
.t95 table{background:#fff; border-collapse:collapse;}
.t95 th{background:var(--c-bg); color:var(--c-text); border:1px solid; border-color:#fff #808080 #808080 #fff; padding:3px 7px;}
.t95 td{border:1px solid #c8c8c8; padding:3px 7px; color:var(--c-text);}

/* 알약·배지: 밝은 바탕에서 읽히게 */
.t95 .pill,.t95 .badge,.t95 .chip,.t95 .tag{
  background:var(--c-bg); color:var(--c-text);
  border:1px solid; border-color:#fff #808080 #808080 #fff; border-radius:0;
}

/* ── 하드코딩 색 보정 ──────────────────────────────────────── */
/* 어두운 배경을 직접 지정한 요소들(다크 전제) → 95 면으로 */
.t95 [style*="#0d1117"],.t95 [style*="#161b22"],.t95 [style*="#1c2128"],
.t95 [style*="#131a26"],.t95 [style*="#10151f"]{
  background:var(--c-bg2)!important; color:var(--c-text)!important;
}
/* 다크 전제의 밝은 글자색 → 검정 */
.t95 [style*="color:#fff"],.t95 [style*="color: #fff"],
.t95 [style*="#bfc8d6"],.t95 [style*="#a0c8ff"]{color:var(--c-text)!important;}

/* 상단 큰 헤더 띠(페이지마다 hero/header 계열) */
.t95 .hero,.t95 .page-header,.t95 .header,.t95 header{
  background:linear-gradient(90deg,#000080,#1084d0); color:#fff;
  border:0; padding:8px 12px;
}
.t95 .hero *:not(.tag):not(.pill):not(.badge):not(.chip),
.t95 .page-header *:not(.tag):not(.pill):not(.badge):not(.chip),
.t95 header h1,.t95 header p{color:#fff!important;}

/* 스크롤 영역이 검게 남는 것 방지 */
.t95 main,.t95 .container,.t95 .content,.t95 .wrap{background:transparent; color:var(--c-text);}

/* ══ 대비 보정 (실측 기반, 2026-08-15) ═══════════════════════════════════
   저대비 검사(WCAG 대비비 < 3)로 잡힌 요소만 정확히 지정한다. */

/* 상단 네비 → 95 메뉴바 */
.t95 .sg-topnav{
  background:var(--c-bg); color:#000;
  border-bottom:2px solid; border-color:#fff #808080 #808080 #fff;
}
.t95 .sg-topnav a,.t95 .sg-topnav .sg-home,.t95 .sg-topnav span{color:#000;}
.t95 .sg-topnav a:hover,.t95 .sg-topnav .sg-home:hover{color:var(--c-accent);}
.t95 .sg-menu-btn{
  background:var(--c-bg); color:#000; border-radius:0;
  border:2px solid; border-color:#fff #000 #000 #fff;
}
.t95 .sg-menu-btn:hover{border-color:#fff #000 #000 #fff; color:var(--c-accent);}
.t95 .sg-menu{
  background:var(--c-bg); border:2px solid; border-color:#fff #000 #000 #fff;
  border-radius:0; box-shadow:2px 2px 0 rgba(0,0,0,.45);
}
.t95 .sg-menu a{color:#000;}
.t95 .sg-menu a:hover{background:var(--c-accent); color:#fff;}
.t95 .sg-menu .sg-lbl{color:#404040;}
.t95 .sg-grp+.sg-grp{border-top-color:#808080;}

/* 페이지 상단 제목 띠 — 밝은 면 위 흰 글씨 방지 */
.t95 h1,.t95 .sg-sub{color:var(--c-text);}

/* 인라인으로 다크 전제 색을 박아둔 텍스트 */
.t95 [style*="#58a6ff"]{color:var(--c-accent)!important;}
.t95 [style*="#c9d1d9"],.t95 [style*="#e6edf3"],.t95 [style*="#8b949e"]{color:var(--c-text)!important;}

/* 배지·알약: 어두운 배경 전제 → 95 면 + 색은 글자에만 */
.t95 .cat,.t95 .badge,.t95 .series-badge,.t95 .status-pill,.t95 .count{
  border-radius:0; border:1px solid; border-color:#fff #808080 #808080 #fff;
  background:var(--c-bg); color:var(--c-text);
}
.t95 .cat-sec_notice{color:#8b0000;}
.t95 .cat-vuln{color:#7a3d00;}
.t95 .cat-notice{color:#000080;}
.t95 .series-badge{background:var(--c-accent); color:#fff; border-color:#000;}
.t95 .status-pill,.t95 .status-ok{background:var(--c-bg); color:#005c00;}
.t95 .count{background:transparent; border:0; color:#303030;}

/* 목록·플레이어 텍스트 */
.t95 .book-title,.t95 .track-title,.t95 .episode-title{color:#000;}
.t95 .book-author,.t95 .episode-date,.t95 .track-meta,
.t95 .day-name,.t95 .compile-divider{color:#3c3c3c;}
.t95 .play-icon{color:var(--c-accent);}

/* ══ 2차 보정 — 특이성 충돌 + 마크업 인라인 style ══════════════════════
   _topnav.html의 <style>이 문서 뒤쪽에 오므로 같은 특이성으로는 못 이긴다 → :root.t95 로 올린다.
   인라인 style 속성의 다크 전제 색은 속성 선택자로 덮는다(스윕 대상이 아니었음). */

:root.t95 .sg-topnav .sg-menu-btn{
  background:var(--c-bg); color:#000;
  border:2px solid; border-color:#fff #000 #000 #fff; border-radius:0;
}
:root.t95 .sg-topnav .sg-menu-btn:hover{color:var(--c-accent); border-color:#fff #000 #000 #fff;}
:root.t95 .sg-topnav .sg-home{color:#000;}

/* 페이지 제목 띠: 밝은 면 위에서는 검정 */
:root.t95 h1,:root.t95 .sg-sub{color:var(--c-text)!important;}

/* 인라인 style 로 박힌 다크 배경 → 95 면 */
:root.t95 [style*="#21262d"],:root.t95 [style*="#1c2128"],:root.t95 [style*="#0d1117"],
:root.t95 [style*="#161b22"],:root.t95 [style*="#131a26"],:root.t95 [style*="#10151f"],
:root.t95 [style*="#1a3d2a"],:root.t95 [style*="#4d1f1f"],:root.t95 [style*="#4a2e1a"],
:root.t95 [style*="#3d3a1a"]{
  background:var(--c-bg2)!important; color:var(--c-text)!important;
  border:1px solid; border-color:#fff #808080 #808080 #fff;
}
/* 위 상자 안 글자도 밝은 면 기준으로 */
:root.t95 [style*="#1a3d2a"] strong{color:#005c00!important;}
:root.t95 [style*="#4d1f1f"] strong{color:#8b0000!important;}

/* 배지가 부모 다크 배경에 얹혀 있던 경우 자기 면을 갖게 */
:root.t95 .cat{background:#fff!important; color:var(--c-text);}
:root.t95 .cat.cat-sec_notice{color:#8b0000;}

/* 작은 회색 숫자 */
:root.t95 .day-num,:root.t95 .num,:root.t95 .cnt{color:#3c3c3c;}

/* ══ 3차 보정 — 클래스 기반 잔여 2건 ══════════════════════════════════ */
/* 사이버 위기단계 배지: 어두운 녹색 면 → 95 면 + 색은 글자에 */
:root.t95 .cyber-status{
  background:var(--c-bg)!important; color:var(--c-text)!important;
  border:2px solid; border-color:#fff #808080 #808080 #fff; border-radius:0;
}
:root.t95 .cyber-status strong{color:#005c00!important;}
:root.t95 .cyber-status[class*="주의"] strong{color:#7a5200!important;}
:root.t95 .cyber-status[class*="경계"] strong,
:root.t95 .cyber-status[class*="심각"] strong{color:#8b0000!important;}

/* 달력 날짜 숫자 */
:root.t95 .day span,:root.t95 .day.has-data span{color:#2a2a2a;}

/* ══ 4차 보정 — 남은 개별 건 (2026-08-15) ═══════════════════════════════ */

/* 외신: 어두운 뱃지 면들 */
:root.t95 .source-badge{background:var(--c-bg)!important; color:var(--c-accent)!important;
  border:1px solid; border-color:#fff #808080 #808080 #fff;}
:root.t95 .kr-axis{background:transparent!important; color:#3c3c3c!important;}
:root.t95 .kr-badge{background:var(--c-bg)!important; border:1px solid; border-color:#fff #808080 #808080 #fff;}
:root.t95 .kr-badge.v-악재{color:#8b0000!important;}
:root.t95 .kr-badge.v-호재{color:#005c00!important;}

/* mermaid: 노드마다 자체 fill/색을 갖는 SVG라 페이지 팔레트를 강제하지 않는다.
   (대비 검사기가 SVG rect fill 을 배경으로 못 읽어 오탐을 내는 구간) */
:root.t95 .mermaid,:root.t95 pre.mermaid{
  background:#ffffff; padding:12px; border:2px solid; border-color:#808080 #fff #fff #808080;
}

/* JS가 인라인으로 넣는 다크 팔레트 색 */
:root.t95 [style*="#3fb950"]{color:#005c00!important;}
:root.t95 [style*="#f85149"]{color:#8b0000!important;}
:root.t95 [style*="#d29922"]{color:#7a5200!important;}

/* 취약점: 정보/소프트웨어 색 */
:root.t95 .max-cvss.low,:root.t95 .value.info{color:#00566f!important;}
:root.t95 .software{color:var(--c-accent)!important;}

/* 챗봇 전송 버튼: 진한 면 위 흰 글씨 */
:root.t95 .chat button[type="submit"],:root.t95 button.send,
:root.t95 #chat-form button{background:var(--c-accent)!important; color:#fff!important; border-color:#fff #000 #000 #fff;}

/* 경고색 면 위 글자는 흰색 */


/* 3D 지구본 등 어두운 캔버스 위 컨트롤 라벨 */
:root.t95 .option-label,:root.t95 .globe-ui .option-label{color:#e6edf3!important;}

/* ══ 5차 보정 ═══════════════════════════════════════════════════════════ */
/* 팟캐스트 달력: 데이터 있는 날은 95 선택색 면 + 흰 글씨 */
:root.t95 .day.has-data{background:var(--c-accent);}
:root.t95 .day.has-data span{color:#fff!important;}

/* 외신 기사 카드 안 판정 영역이 어두운 면을 유지하던 부분 */
:root.t95 .art-card,:root.t95 .kr-reason{background:var(--c-bg2)!important; color:var(--c-text)!important;}
:root.t95 .kr-reason .kr-axis{color:#3c3c3c!important;}

/* 챗봇 전송 버튼 */
:root.t95 #send{background:var(--c-accent)!important; color:#fff!important;
  border:2px solid; border-color:#fff #000 #000 #fff;}

/* 취약점 정보색 */
:root.t95 .value,:root.t95 .max-cvss{color:var(--c-text);}
:root.t95 .value.info,:root.t95 .max-cvss.low,:root.t95 [style*="#17a2b8"]{color:#00566f!important;}

/* 다크 전제 장식(배경 글로우) — 밝은 톤에선 불필요하고 가로 스크롤을 만든다 */
:root.t95 .glow{display:none!important;}

/* ══ 95 형태 정리 — 둥근 모서리 제거 (2026-08-15) ═══════════════════════
   95는 각진 모서리 + 베벨이 정체성. 색만 바꾸면 "회색 모던 UI"로 보인다.
   이미지·아바타는 제외(사진이 잘려 보이면 안 됨). */
:root.t95 section,:root.t95 article,:root.t95 details,:root.t95 fieldset,
:root.t95 .card,:root.t95 .panel,:root.t95 .box,:root.t95 .art-card,
:root.t95 button,:root.t95 .btn,:root.t95 a.btn,:root.t95 input,:root.t95 select,
:root.t95 textarea,:root.t95 .pill,:root.t95 .badge,:root.t95 .chip,:root.t95 .tag,
:root.t95 .cat,:root.t95 .series-badge,:root.t95 .status-pill,:root.t95 .tab,
:root.t95 .day,:root.t95 .filter,:root.t95 .stat,:root.t95 .value,:root.t95 .label{
  border-radius:0!important;
}
/* 그림자도 95식으로: 흐린 그림자 대신 1px 하드 섀도 */
:root.t95 .card,:root.t95 .panel,:root.t95 .art-card,:root.t95 section{
  box-shadow:1px 1px 0 #808080;
}

/* 페이지 자체 강조색을 95 남색으로 통일 (2026-08-17)
   about 의 소제목·구분선이 청록 계열(--accent-cyan → --c-cyan #00566f)이라 톤이 튀었다.
   :root 수준에서 정의되므로 :root.t95 로 덮는다(우선순위 확보). */
:root.t95{
  --accent-cyan: var(--c-accent);
  --accent-blue: var(--c-accent);
}

/* 입력 요소 가독성 보장 (2026-08-17)
   페이지가 id 선택자로 배경을 지정하면(예: /chat 의 #q) 클래스 규칙이 밀려
   '검정 글씨 + 검정 배경'이 된다. 입력창은 읽히는 게 최우선이라 !important 로 못박는다. */
:root.t95 input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
:root.t95 textarea,
:root.t95 select{
  background:#ffffff!important; color:#000000!important;
  border:2px solid!important; border-color:#808080 #fff #fff #808080!important;
  border-radius:0!important;
}
:root.t95 input::placeholder,:root.t95 textarea::placeholder{color:#5a5a5a!important; opacity:1;}
:root.t95 input:focus,:root.t95 textarea:focus,:root.t95 select:focus{outline:1px dotted #000; outline-offset:-3px;}

/* 파란 활성 필터 버튼 안의 건수는 밝은 회색이라 3.3:1 이었다. 검정이 5.2:1 로 가장 잘 읽힌다. */
.t95 .filter-btn .count{color:#000;}
