/* 다섯 갈래 메뉴 · 홈 · 사이트맵 · 원칙 · TALOS 화면 */
:root { --argus: #2f9a8f; --ariadne: #3d81a4; --hermes: #5b6fb5; --mentor: #8a5f9e; --talos: #b8823f; }
body.dark, .topbar, .nav-panel, .platform-shell { --argus: #5cc2b6; --ariadne: #7fbbd6; --hermes: #98a8e6; --mentor: #c39cd4; --talos: #d6a565; }
.mono { font-family: "SFMono-Regular", Menlo, Consolas, monospace; }

/* 상단 메뉴 */
.nav-link { color: #9dafbb; font-size: 13px; font-weight: 600; white-space: nowrap; position: relative; }
.nav-link:hover, .nav-link.active { color: white; }
.nav-branch { display: flex; align-self: stretch; align-items: center; position: relative; }
.nav-branch-button { display: inline-flex; align-items: center; gap: 7px; background: transparent; border: 0; color: #9dafbb; font-size: 13px; font-weight: 600; padding: 6px 4px; border-radius: 6px; white-space: nowrap; }
.nav-branch-button::after { content: "▾"; font-size: 9px; color: #6f8797; margin-left: 1px; }
.nav-branch-button:hover, .nav-branch.open .nav-branch-button, .nav-branch.active .nav-branch-button { color: white; }
.nav-branch-button:focus-visible, .nav-link:focus-visible, .nav-page:focus-visible, .pm-node:focus-visible { outline: 2px solid #9ed1d2; outline-offset: 2px; }
.nav-dot { width: 7px; height: 7px; border-radius: 50%; display: inline-block; background: #9ed1d2; }
.nav-dot.argus { background: var(--argus); } .nav-dot.ariadne { background: var(--ariadne); } .nav-dot.hermes { background: var(--hermes); } .nav-dot.mentor { background: var(--mentor); } .nav-dot.talos { background: var(--talos); }
.nav-branch.active::after { content: ""; position: absolute; left: 4px; right: 4px; bottom: 0; height: 2px; background: #9ed1d2; }
.nav-branch.active[data-branch="argus"]::after { background: var(--argus); } .nav-branch.active[data-branch="ariadne"]::after { background: var(--ariadne); } .nav-branch.active[data-branch="hermes"]::after { background: var(--hermes); } .nav-branch.active[data-branch="mentor"]::after { background: var(--mentor); } .nav-branch.active[data-branch="talos"]::after { background: var(--talos); }
.nav-panel { position: absolute; left: 0; right: 0; top: 100%; z-index: 40; background: var(--navy-850); border-bottom: 1px solid rgba(158,209,210,.22); box-shadow: 0 24px 50px rgba(0,0,0,.28); color: white; }
.nav-panel[hidden] { display: none; }
.nav-menu-inner { max-width: 1500px; margin: 0 auto; padding: 18px 32px 22px; display: grid; grid-template-columns: minmax(220px, .8fr) minmax(0, 2.2fr); gap: 22px; }
.nav-menu-head { display: grid; gap: 6px; align-content: start; }
.branch-code { font-family: "SFMono-Regular", Menlo, Consolas, monospace; font-size: 11px; letter-spacing: .2em; font-weight: 700; color: #9ed1d2; }
.branch-code.argus { color: var(--argus); } .branch-code.ariadne { color: var(--ariadne); } .branch-code.hermes { color: var(--hermes); } .branch-code.mentor { color: var(--mentor); } .branch-code.talos { color: var(--talos); }
.nav-menu-head strong { font-size: 18px; letter-spacing: -.02em; }
.nav-menu-summary { color: #b6c8d2; font-size: 12px; line-height: 1.55; }
.nav-motif { color: #7f97a6; font-size: 11px; line-height: 1.5; }
.nav-menu-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 8px; }
.nav-page { display: grid; gap: 4px; padding: 12px 13px; border: 1px solid rgba(255,255,255,.1); border-radius: 10px; background: rgba(255,255,255,.04); color: white; }
.nav-page:hover, .nav-page.active { border-color: rgba(158,209,210,.5); background: rgba(158,209,210,.1); }
.nav-page strong { font-size: 13px; }
.nav-page span { color: #a9bcc7; font-size: 11px; line-height: 1.5; }
.nav-page em { font-style: normal; font-size: 10px; letter-spacing: .06em; color: #9ed1d2; }
.nav-page.planned { opacity: .72; } .nav-page.planned em { color: #c9d5db; }
.nav-page.built em { color: #e8c48a; }

/* 홈 */
.home-page .page-heading p { max-width: 720px; }
.platform-shell { background: radial-gradient(circle at 46% 48%, rgba(50,111,142,.24), transparent 33%), radial-gradient(circle at 70% 20%, rgba(56,102,126,.12), transparent 28%), var(--navy-900); border-radius: 18px; box-shadow: var(--shadow); padding: 16px 18px 6px; overflow: hidden; }
.platform-map { width: 100%; height: auto; display: block; max-width: 100%; font-family: "DM Sans", "Noto Sans KR", sans-serif; }
.pm-box { fill: rgba(10,28,43,.9); stroke-width: 1.4; transition: fill .16s; }
.pm-box.argus { stroke: var(--argus); } .pm-box.ariadne { stroke: var(--ariadne); } .pm-box.hermes { stroke: var(--hermes); } .pm-box.mentor { stroke: var(--mentor); } .pm-box.talos { stroke: var(--talos); }
.pm-box.gov { stroke-dasharray: 5 4; stroke-width: 1.2; fill: rgba(10,28,43,.85); }
.pm-node { cursor: pointer; }
.pm-node:hover .pm-box, .pm-node:focus .pm-box { fill: rgba(158,209,210,.16); }
.pm-node:focus { outline: none; }
.pm-code { font-family: "SFMono-Regular", Menlo, Consolas, monospace; font-size: 11px; letter-spacing: 2px; font-weight: 600; }
.pm-code.argus { fill: var(--argus); } .pm-code.ariadne { fill: var(--ariadne); } .pm-code.hermes { fill: var(--hermes); } .pm-code.mentor { fill: var(--mentor); } .pm-code.talos { fill: var(--talos); }
.pm-name { fill: #ffffff; font-size: 14px; font-weight: 700; }
.pm-line { fill: #9db3c0; font-size: 10.5px; }
.pm-label { fill: #c9dde3; font-size: 10px; }
.pm-label.hermes { fill: var(--hermes); } .pm-label.talos { fill: var(--talos); } .pm-label.faint { fill: #7f97a6; }
.pm-flow { stroke: #c9dde3; stroke-width: 1.3; fill: none; } .pm-flow.dashed { stroke-dasharray: 3 3; stroke-width: 1.1; }
.pm-gov { stroke: var(--hermes); stroke-width: 1; stroke-dasharray: 4 4; fill: none; }
.pm-arrowhead { fill: #c9dde3; } .pm-arrowhead.hermes { fill: var(--hermes); }
.pm-rule { stroke: var(--talos); stroke-width: .8; stroke-dasharray: 2 3; fill: none; }
.status-strip { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin: 18px 0; }
.status-tile { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px; display: grid; gap: 3px; }
.status-tile span { font-size: 11px; color: var(--muted); letter-spacing: .06em; text-transform: uppercase; }
.status-tile strong { font-size: 21px; letter-spacing: -.03em; font-variant-numeric: tabular-nums; }
.status-tile small { color: #76919f; font-size: 11px; line-height: 1.45; }
.entry-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.entry-card { text-align: left; display: grid; gap: 6px; padding: 16px 18px; background: var(--card); border: 1px solid var(--line); border-radius: 12px; color: var(--ink); transition: border-color .16s, transform .16s; }
.entry-card:hover { border-color: #a9c9d4; transform: translateY(-2px); }
.entry-card strong { font-size: 15px; line-height: 1.4; letter-spacing: -.02em; }
.entry-card span:last-child { color: var(--muted); font-size: 12px; line-height: 1.55; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.principles-strip { display: flex; flex-wrap: wrap; gap: 8px 20px; align-items: center; margin-top: 22px; padding: 14px 4px 0; border-top: 1px solid var(--line); color: #567080; font-size: 12px; }
.principles-strip span::before { content: "◆"; color: var(--teal); font-size: 8px; margin-right: 6px; vertical-align: middle; }
.principles-strip a { margin-left: auto; color: var(--blue); font-weight: 700; }

/* 홈 히어로 · 관심 · 갈래 카드 */
.hero-panel { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 28px; background: radial-gradient(circle at 18% 12%, rgba(92,194,182,.16), transparent 34%), radial-gradient(circle at 88% 88%, rgba(91,111,181,.2), transparent 36%), var(--navy-900); border-radius: 18px; box-shadow: var(--shadow); padding: 36px 38px; color: white; margin-bottom: 26px; overflow: hidden; }
.hero-main { display: grid; gap: 14px; align-content: start; }
.eyebrow.light { color: #9ed1d2; }
.hero-main h1 { margin: 0; font-size: clamp(30px, 3.6vw, 46px); letter-spacing: -.045em; line-height: 1.12; }
.hero-main > p { margin: 0; color: #b6c8d2; font-size: 15px; line-height: 1.7; max-width: 56ch; }
.hero-actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 6px; }
.button.ghost { background: transparent; color: white; border-color: rgba(255,255,255,.34); }
.button.ghost:hover { background: rgba(255,255,255,.1); border-color: rgba(255,255,255,.6); }
.hero-fresh { margin: 4px 0 0; color: #7f97a6; font-size: 12px; }
.hero-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.12); border-radius: 14px; overflow: hidden; margin: 0; align-content: start; }
.hero-stats > div { background: rgba(7,21,34,.72); padding: 18px; display: grid; gap: 4px; }
.hero-stats dt { color: #8fa6b3; font-size: 11px; letter-spacing: .08em; }
.hero-stats dd { margin: 0; font-size: 24px; font-weight: 700; letter-spacing: -.03em; font-variant-numeric: tabular-nums; }
.section-title { font-size: 17px; letter-spacing: -.02em; margin: 0 0 12px; }
.home-page section { margin-bottom: 24px; }
.attention-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.attention-card { display: grid; gap: 6px; padding: 18px; background: var(--card); border: 1px solid var(--line); border-left: 4px solid var(--teal); border-radius: 12px; color: var(--ink); transition: border-color .16s, transform .16s; }
.attention-card:hover { border-color: #a9c9d4; border-left-color: var(--teal); transform: translateY(-2px); }
.attention-card strong { font-size: 24px; letter-spacing: -.03em; font-variant-numeric: tabular-nums; }
.attention-card span:last-child { color: var(--muted); font-size: 12px; line-height: 1.55; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.branch-cards { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; }
.branch-card { display: grid; gap: 12px; align-content: space-between; padding: 18px 16px 14px; background: var(--card); border: 1px solid var(--line); border-top: 4px solid; border-radius: 12px; transition: border-color .16s, transform .16s; }
.branch-card:hover { transform: translateY(-2px); }
.branch-card.talos { border-top-color: var(--talos); } .branch-card.argus { border-top-color: var(--argus); } .branch-card.ariadne { border-top-color: var(--ariadne); } .branch-card.hermes { border-top-color: var(--hermes); } .branch-card.mentor { border-top-color: var(--mentor); }
.branch-card h3 { margin: 6px 0 4px; font-size: 16px; letter-spacing: -.02em; }
.branch-card h3 a { color: var(--ink); }
.branch-card h3 a:hover { color: var(--blue); }
.branch-card p { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.55; }
.branch-card .branch-stats { margin-top: 8px; color: var(--ink); font-size: 12px; font-weight: 700; font-variant-numeric: tabular-nums; }
.branch-links { display: flex; gap: 12px; border-top: 1px dashed var(--line); padding-top: 10px; }
.branch-links a { color: var(--blue); font-size: 12px; font-weight: 700; }
.flow-note { margin: 12px 0 0; color: var(--muted); font-size: 12px; }
a.status-tile:hover { border-color: #a9c9d4; }
a.status-tile strong { color: var(--ink); }
.entry-grid { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }

/* 사이트맵 · 원칙 · 설계됨 */
.chip { display: inline-flex; align-items: center; padding: 3px 8px; border-radius: 20px; font-size: 10.5px; font-weight: 700; white-space: nowrap; background: #edf3f5; color: #526b7b; }
.chip.have { background: #e8eef6; color: #486687; } .chip.built { background: #e1f1ef; color: #287b75; } .chip.planned { background: #eef1f3; color: #6d7d8a; } .chip.out { background: #f6e8e8; color: #9a4b4d; }
.sitemap-tree { list-style: none; padding: 0; margin: 0; display: grid; gap: 12px; }
.sitemap-tree > li { background: var(--card); border: 1px solid var(--line); border-left-width: 4px; border-radius: 14px; padding: 16px 18px; }
.sitemap-tree > li.common { border-left-color: var(--muted); } .sitemap-tree > li.argus { border-left-color: var(--argus); } .sitemap-tree > li.ariadne { border-left-color: var(--ariadne); } .sitemap-tree > li.hermes { border-left-color: var(--hermes); } .sitemap-tree > li.mentor { border-left-color: var(--mentor); } .sitemap-tree > li.talos { border-left-color: var(--talos); }
.sitemap-tree .head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 12px; margin-bottom: 8px; }
.sitemap-tree .head strong { font-size: 16px; letter-spacing: -.02em; }
.sitemap-tree .head .small { max-width: 60ch; }
.sitemap-tree ul { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(270px, 1fr)); gap: 4px 16px; }
.sitemap-tree ul li { display: grid; grid-template-columns: auto 1fr auto; gap: 8px; align-items: baseline; font-size: 13px; padding: 7px 0; border-bottom: 1px dashed var(--line); }
.sitemap-tree ul li .mono { font-size: 11px; color: var(--muted); }
.sitemap-tree ul li a { font-weight: 700; color: var(--ink); }
.sitemap-tree ul li a:hover { color: var(--blue); }
.sitemap-tree ul li small { grid-column: 2 / -1; color: var(--muted); font-size: 11.5px; line-height: 1.45; }
.principle-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; margin-bottom: 12px; }
.principle h2, .boundary h2 { margin: 0 0 8px; font-size: 16px; letter-spacing: -.02em; }
.principle p, .boundary p, .boundary li { color: #4e6977; font-size: 13px; line-height: 1.7; margin: 0; }
.boundary { margin-top: 12px; } .boundary ul { margin: 0; padding-left: 18px; display: grid; gap: 4px; }
.planned-page .panel h2 { margin: 0 0 8px; font-size: 17px; }
.planned-page .panel p { color: var(--muted); font-size: 13px; line-height: 1.7; margin: 0 0 14px; }

/* TALOS · 합성 공급원 */
.sources-layout { display: grid; grid-template-columns: minmax(250px, .8fr) minmax(0, 2fr); gap: 18px; align-items: start; }
.source-list { display: grid; gap: 8px; }
.source-card { text-align: left; display: grid; gap: 4px; padding: 12px 13px; border: 1px solid var(--line); border-left: 4px solid var(--talos); border-radius: 11px; background: var(--card); color: var(--ink); }
.source-card:hover { border-color: #a9c9d4; border-left-color: var(--talos); }
.source-card.active { border-color: #8ebac2; border-left-color: var(--talos); box-shadow: 0 7px 20px rgba(53,111,124,.08); }
.source-card strong { font-size: 13.5px; } .source-card strong em { font-style: normal; color: var(--muted); font-weight: 500; font-size: 12px; }
.source-layer { font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--talos); font-weight: 700; }
.source-card .mono { font-size: 10.5px; color: #8fa2ad; letter-spacing: .06em; }
.source-format { color: var(--muted); font-size: 11px; line-height: 1.45; }
.source-head { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; flex-wrap: wrap; }
.source-head h2 { margin: 8px 0 6px; font-size: 22px; letter-spacing: -.03em; } .source-head h2 em { font-style: normal; color: var(--muted); font-weight: 500; font-size: 15px; }
.source-head p { margin: 0 0 14px; color: #4e6977; font-size: 13px; line-height: 1.65; max-width: 640px; }
.source-panel h3 { font-size: 14px; margin: 20px 0 8px; }
.schema-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.schema-chips code { background: #eef3f5; border: 1px solid var(--line); border-radius: 6px; padding: 3px 7px; font-size: 11.5px; font-family: "SFMono-Regular", Menlo, Consolas, monospace; }
.run-form { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, .7fr) minmax(0, 1.2fr) auto; gap: 10px; align-items: end; }
.run-form label { display: grid; gap: 4px; font-size: 11px; color: var(--muted); font-weight: 700; }
.run-form input, .run-form select { height: 38px; border: 1px solid var(--line); border-radius: 8px; padding: 0 10px; font-size: 13px; background: #fbfcfc; color: var(--ink); min-width: 0; }
.run-form input:focus, .run-form select:focus { border-color: #7aadb9; box-shadow: 0 0 0 3px rgba(104,168,180,.12); outline: none; }
.run-error { color: #9a4b4d; font-size: 12px; margin: 10px 0 0; }
.run-result { margin-top: 18px; border-top: 1px solid var(--line); padding-top: 6px; }
.eval-table { width: 100%; border-collapse: collapse; font-size: 12px; min-width: 560px; }
.eval-table th, .eval-table td { text-align: left; padding: 8px 10px; border-bottom: 1px solid #edf1f2; vertical-align: middle; }
.eval-table th { color: #8798a0; font-size: 10px; text-transform: uppercase; letter-spacing: .07em; font-weight: 700; }
.fault-chip { display: inline-block; font-style: normal; font-size: 10px; padding: 2px 6px; border-radius: 10px; background: #f6eee1; color: #9a6d2d; margin: 2px 4px 0 0; }
.fault-chip.clean { background: #e5f2f0; color: #26736c; }
.record-row { border-left: 3px solid var(--talos); }
.record-detail { margin-top: 12px; padding: 14px 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--card); }
.record-detail h3 { margin: 6px 0 2px; font-size: 13px; word-break: break-all; }
.record-detail pre { background: #f5f8f8; border-radius: 8px; padding: 10px 12px; font-size: 11px; line-height: 1.5; overflow-x: auto; margin: 6px 0 0; }
.record-detail details { margin-top: 10px; }
.ingest-page .ledger-row h3 { font-size: 14px; }
.ingest-page .ledger-row .mono { word-break: break-all; }

/* 어두운 테마 */
body.dark .status-tile, body.dark .entry-card, body.dark .source-card, body.dark .sitemap-tree > li, body.dark .record-detail { background: #102535; }
body.dark .schema-chips code, body.dark .record-detail pre { background: #0d2332; border-color: #284655; }
body.dark .run-form input, body.dark .run-form select { background: #122c3d; border-color: #2b4c5c; }
body.dark .principle p, body.dark .boundary p, body.dark .boundary li, body.dark .source-head p, body.dark .principles-strip { color: #b7c7cf; }
body.dark .chip { background: #17324a; color: #b7c7cf; } body.dark .chip.built { color: #8fd8cf; } body.dark .chip.out { color: #e2a2a4; }
body.dark .eval-table th, body.dark .eval-table td { border-color: #234052; }
body.dark .fault-chip { background: #3a3220; color: #e8c48a; } body.dark .fault-chip.clean { background: #143a37; color: #8fd8cf; }
body.dark .sitemap-tree ul li a { color: var(--ink); }

@media (max-width: 1050px) {
  .sources-layout { grid-template-columns: 1fr; }
  .run-form { grid-template-columns: 1fr 1fr; }
  .status-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .entry-grid { grid-template-columns: 1fr; }
  .nav-menu-inner { padding: 16px 20px 20px; }
  .hero-panel { grid-template-columns: 1fr; padding: 28px; }
  .branch-cards { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }
  .attention-grid { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .nav-menu-inner { grid-template-columns: 1fr; padding: 14px 16px 18px; gap: 12px; }
  .nav-menu-grid { grid-template-columns: 1fr; }
  .status-strip, .run-form { grid-template-columns: 1fr; }
  .platform-shell { padding: 10px 8px 2px; border-radius: 13px; }
  .principles-strip a { margin-left: 0; }
  .sitemap-tree ul li { grid-template-columns: 1fr auto; }
  .sitemap-tree ul li .mono { display: none; }
  .sitemap-tree ul li small { grid-column: 1 / -1; }
  .hero-panel { padding: 24px 20px; }
  .hero-stats { grid-template-columns: 1fr 1fr; }
}

/* ARGUS 상황판 · 피드 상태 */
.cop-layout { display: grid; grid-template-columns: minmax(280px, .9fr) minmax(0, 2.1fr); gap: 18px; align-items: start; }
.layer-panel h2 { margin: 0 0 12px; font-size: 1.0625rem; }
.layer-row { padding: 12px 0; border-top: 1px solid var(--line); display: grid; gap: 6px; }
.layer-row:first-child { border-top: 0; padding-top: 0; }
.layer-toggle { display: flex; align-items: center; gap: 9px; font-weight: 700; font-size: .9375rem; cursor: pointer; }
.layer-toggle input { width: 16px; height: 16px; accent-color: #23576b; }
.layer-title small { color: var(--muted); font-weight: 500; font-size: .8125rem; margin-left: 4px; }
.layer-status { margin: 0; color: var(--muted); font-size: .8125rem; line-height: 1.5; }
.layer-row .evidence-tag { justify-self: start; }
.layer-row.synthetic.on { background: #fbf4e6; border-radius: 8px; padding: 12px; border-top: 0; }
body.dark .layer-row.synthetic.on { background: #362e20; }
.layer-runs { display: grid; gap: 6px; font-size: .8125rem; }
.layer-runs label { display: flex; gap: 8px; align-items: flex-start; }
.layer-runs input { margin-top: 3px; }
.cop-lower { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr); gap: 18px; margin-top: 18px; align-items: start; }
.cop-toolbar { margin-bottom: 12px; padding: 12px; }
.cop-page .world-list { max-height: 560px; }
.cop-page .world-detail { margin-top: 0; }
.feed-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(420px, 1fr)); gap: 16px; }
.feed-card { display: grid; gap: 14px; border-top: 4px solid #357b91; }
.feed-card.synthetic { border-top-color: var(--talos); }
.feed-card.offline { border-top-color: #9aa8b0; }
.feed-card-head { display: flex; justify-content: space-between; gap: 14px; align-items: flex-start; }
.feed-card-head h2 { margin: 8px 0 4px; font-size: 1.15rem; }
.feed-card-head p { margin: 0; }
.feed-count { text-align: right; display: grid; gap: 2px; }
.feed-count strong { font-size: 1.1rem; white-space: nowrap; }
.feed-count span { color: var(--muted); font-size: .8125rem; max-width: 220px; }
.feed-card .feed-clocks { gap: 12px; }
.feed-facts > div { grid-template-columns: 140px minmax(0, 1fr); }
/* 근거팩 내보내기 · 관측 공백 배너·뱃지 */
.feeds-heading-side { display: grid; gap: 10px; justify-items: end; align-content: start; }
.evidence-pack-actions { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.gap-banner { border-left: 4px solid #8a9aa4; margin-bottom: 16px; }
.gap-banner-head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.gap-banner-head h2 { margin: 0; font-size: 1.1rem; }
.gap-banner-head span { color: var(--muted); font-size: .8125rem; }
.gap-banner ul { margin: 12px 0 0; padding: 0; list-style: none; display: grid; gap: 8px; font-size: .875rem; }
.gap-banner p { margin: 10px 0 0; font-size: .875rem; color: var(--muted); }
.gap-chips { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 8px; }
.gap-chip { display: inline-block; font-size: .75rem; font-weight: 700; padding: 3px 9px; border-radius: 20px; border: 1px solid; white-space: nowrap; }
.gap-chip.warn { color: #8a5a17; background: #faf0d7; border-color: #d9b96a; }
.gap-chip.info { color: #23576b; background: #e7f2f5; border-color: #8fb8c4; }
.gap-chip.struct { color: #5a6470; background: #eef1f3; border-color: #b9c2ca; }
body.dark .gap-chip.warn { color: #ecd294; background: #42351d; border-color: #8e753c; }
body.dark .gap-chip.info { color: #bfe0ea; background: #15313e; border-color: #3b8395; }
body.dark .gap-chip.struct { color: #cfd8dc; background: #263238; border-color: #5a6470; }
.gap-swatch { width: 10px; height: 10px; border-radius: 2px; border: 1px solid #8a9aa4; background: repeating-linear-gradient(45deg, #cfd8dc 0 2px, #f4f7f8 2px 4px); display: inline-block; flex: 0 0 auto; }
.gap-toggle { display: flex; gap: 8px; align-items: center; font-size: .875rem; font-weight: 600; margin-top: 12px; cursor: pointer; }
.gap-toggle .muted { font-weight: 400; }
.detail-actions { display: flex; gap: 8px; flex-wrap: wrap; }
@media (max-width: 1050px) { .cop-layout, .cop-lower { grid-template-columns: 1fr; } .feed-grid { grid-template-columns: 1fr; } }

/* ARIADNE 객체 탐색 · 연표 */
.fig-frame { overflow-x: auto; padding: 4px 0; }
.objects-layout { display: grid; grid-template-columns: 230px minmax(0, 1fr) minmax(0, 1.3fr); gap: 16px; align-items: start; }
.object-types { display: grid; gap: 6px; padding: 12px; }
.object-type { text-align: left; display: grid; gap: 2px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--card); color: var(--ink); }
.object-type.active { border-color: #3b8395; box-shadow: inset 3px 0 #3b8395; background: #eaf4f5; }
.object-type strong { font-size: 13.5px; } .object-type span { color: var(--blue); font-size: 12px; font-weight: 700; } .object-type small { color: var(--muted); font-size: 11px; line-height: 1.4; }
.object-list { display: grid; gap: 6px; max-height: 620px; overflow-y: auto; padding: 2px; }
.object-row { text-align: left; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 10px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 9px; background: var(--card); color: var(--ink); }
.object-row strong { font-size: 13px; } .object-row span { grid-column: 1; color: var(--muted); font-size: 11px; } .object-row em { grid-row: 1 / span 2; align-self: center; font-style: normal; font-weight: 700; color: var(--blue); font-variant-numeric: tabular-nums; }
.object-row[aria-pressed=true] { border-color: #3b8395; box-shadow: inset 3px 0 #3b8395; background: #eaf4f5; }
.object-head h2 { margin: 8px 0 4px; font-size: 20px; letter-spacing: -.03em; }
.object-detail h3 { font-size: 14px; margin: 18px 0 8px; }
.object-detail .library-toolbar { position: relative; margin-bottom: 12px; }
.case-results { top: 100%; left: 0; width: 100%; }
.pivot-list { display: flex; flex-wrap: wrap; gap: 6px; }
.pivot-chip { display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; border: 1px solid var(--line); border-radius: 20px; background: var(--card); color: var(--ink); font-size: 12px; }
.pivot-chip:hover { border-color: #82a9b4; }
.pivot-type { font-size: 10px; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); font-weight: 700; }
.pivot-chip em { font-style: normal; color: var(--muted); font-size: 11px; }
.case-start { display: grid; gap: 8px; padding: 12px; border: 1px dashed var(--line); border-radius: 10px; margin-bottom: 12px; }
body.dark .object-type.active, body.dark .object-row[aria-pressed=true] { background: #173b48; }
body.dark .object-type, body.dark .object-row, body.dark .pivot-chip { background: #102535; }
.tl-toolbar { align-items: center; }
.tl-kinds { display: flex; flex-wrap: wrap; gap: 8px 14px; flex: 1 1 100%; font-size: 12px; font-weight: 500; }
.tl-kinds label { display: inline-flex; align-items: center; gap: 6px; }
.timeline-svg { width: 100%; height: auto; display: block; min-width: 720px; font-family: "DM Sans", "Noto Sans KR", sans-serif; }
.timeline-svg.relative { min-width: 640px; }
.tl-lane { font-size: 11px; fill: var(--muted); }
.tl-grid { stroke: var(--line); stroke-width: 1; }
.tl-tick { stroke: var(--line); stroke-dasharray: 2 3; }
.tl-tick-label { font-size: 10px; fill: var(--muted); }
.tl-mark { cursor: pointer; } .tl-mark:hover circle, .tl-mark:hover rect, .tl-mark:focus circle, .tl-mark:focus rect { stroke: var(--ink); stroke-width: 2; }
.tl-mark:focus { outline: none; }
.tl-bar { fill: #cf9c59; } .tl-month { cursor: pointer; } .tl-month.active .tl-bar, .tl-month:hover .tl-bar { fill: #9a6d2d; }
.tl-count { font-size: 10px; fill: var(--muted); }
.tl-list { display: grid; gap: 6px; }
.tl-row { display: grid; grid-template-columns: 10px minmax(0, 1fr) auto auto; gap: 12px; align-items: center; padding: 10px 12px; border: 1px solid var(--line); border-radius: 9px; background: var(--card); }
.tl-row .legend-dot { width: 10px; height: 10px; }
.tl-row strong { font-size: 13px; display: block; } .tl-row > div > span { color: var(--muted); font-size: 11.5px; line-height: 1.45; }
.tl-when { text-align: right; } .tl-when strong { font-variant-numeric: tabular-nums; font-size: 12px; } .tl-when span { display: block; color: var(--muted); font-size: 10.5px; }
body.dark .tl-row { background: #102535; }
@media (max-width: 1050px) { .objects-layout { grid-template-columns: 1fr; } .tl-row { grid-template-columns: 10px minmax(0, 1fr); } .tl-when { text-align: left; } }

/* HERMES 판본 원장 · 환경 · 재현 */
.hermes-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin-top: 16px; }
.hermes-page pre { background: #f5f8f8; border-radius: 8px; padding: 10px 12px; font-size: 11px; line-height: 1.5; overflow: auto; max-height: 360px; margin: 8px 0 0; }
body.dark .hermes-page pre { background: #0d2332; }
.release-table td:nth-child(4) { min-width: 240px; }
.changelog { display: grid; gap: 4px; }
.changelog-row { display: grid; grid-template-columns: auto auto; gap: 2px 12px; padding: 10px 0; border-bottom: 1px solid var(--line); }
.changelog-row p { grid-column: 1 / -1; margin: 0; font-size: 13px; color: #4e6977; line-height: 1.55; }
body.dark .changelog-row p { color: #b7c7cf; }
.env-card { border-top: 4px solid #9aa8b0; }
.env-card.match { border-top-color: var(--teal); } .env-card.differ { border-top-color: var(--amber); }
.env-form { grid-template-columns: minmax(0, 1.4fr) minmax(0, .8fr) minmax(0, 1.4fr) auto; }
.paste-holder { display: grid; gap: 8px; margin-top: 8px; }
.paste-holder textarea { width: 100%; border: 1px solid var(--line); border-radius: 8px; padding: 10px; font-family: Menlo, Consolas, monospace; font-size: 11px; background: var(--card); color: var(--ink); }
@media (max-width: 1050px) { .hermes-grid { grid-template-columns: 1fr; } .env-form { grid-template-columns: 1fr 1fr; } }

/* MENTOR 보좌관 */
.mentor-page .ask-card textarea#handoff-text, .mentor-page .ask-card textarea#answer-text { min-height: 120px; font-size: 12.5px; line-height: 1.6; font-family: Menlo, Consolas, monospace; margin-top: 6px; }
.mentor-result h3 { margin: 18px 0 8px; font-size: 14px; }
.mentor-ok { color: #26736c; font-size: 13px; margin: 0; }
.mentor-flag { margin: 6px 0; padding: 10px 12px; border-radius: 8px; font-size: 13px; line-height: 1.55; }
.mentor-flag.block { background: #f6e8e8; color: #7a3538; } .mentor-flag.warn { background: #f6eee1; color: #7a5a1f; }
body.dark .mentor-flag.block { background: #3d2325; color: #f0b6b8; } body.dark .mentor-flag.warn { background: #3a3220; color: #e8c48a; }
.mentor-review { display: flex; gap: 8px; align-items: center; font-size: 13px; margin: 10px 0 4px; }
.relation-link.static { cursor: default; }
.relation-link.static a { color: var(--blue); font-weight: 700; }
.mentor-entry pre { background: #f5f8f8; border-radius: 8px; padding: 10px 12px; font-size: 11.5px; white-space: pre-wrap; margin: 6px 0 0; }
body.dark .mentor-entry pre { background: #0d2332; }
.guard-form { grid-template-columns: minmax(0, 1fr) auto; }
.mentor-page .principle .chip { margin-bottom: 8px; }

/* 내 자료 */
.state-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin: 16px 0; }
.state-page pre { background: #f5f8f8; border-radius: 8px; padding: 10px 12px; font-size: 11px; line-height: 1.5; overflow: auto; max-height: 360px; margin: 10px 0 0; }
body.dark .state-page pre { background: #0d2332; }
.state-page textarea { width: 100%; border: 1px solid var(--line); border-radius: 8px; padding: 10px; font-family: Menlo, Consolas, monospace; font-size: 11px; margin-top: 8px; background: var(--card); color: var(--ink); }
.state-page input[type=file] { display: block; margin-top: 6px; font-size: 12px; }
@media (max-width: 1050px) { .state-grid { grid-template-columns: 1fr; } }
