/* glossary.html 전용 스타일 — 인라인 <style> 에서 옮겼다(라이트 테마 P3-C). 공용 크롬은 hub.css·nav.css. */
.gl-note{max-width:1080px;margin:16px auto;color:var(--txt-dim);font-size:13px;line-height:1.8}
.gl-note strong{color:var(--txt);font-weight:500;margin-right:8px}
#gl-search,#gl-core-title{scroll-margin-top:110px}
.gl-core,.gl-tools,.gl-groups,.gl-empty,.gl-linked{max-width:1080px;margin-left:auto;margin-right:auto}
.gl-core{position:relative;margin-top:20px;padding:0 24px;border:1px solid rgba(var(--plasma-rgb),.22);border-radius:16px;background:linear-gradient(135deg,rgba(var(--plasma-rgb),.09),rgba(var(--ink-rgb),.025) 44%,rgba(var(--crim-rgb),.08));overflow:hidden;scroll-margin-top:100px}
.gl-core::before{content:"";position:absolute;inset:0 0 auto;height:2px;background:linear-gradient(90deg,var(--ember),var(--amber),var(--crim));opacity:.85}
.gl-section-head{display:flex;align-items:center;gap:14px;padding:18px 0;cursor:pointer;list-style:none}
.gl-section-head::-webkit-details-marker{display:none}
.gl-section-head h2{margin:0;font-size:18px;font-weight:600;color:var(--txt)}
.gl-core-hint{margin-left:auto;color:var(--txt-dim);font-size:12px}
.gl-core[open] .gl-core-hint{font-size:0}
.gl-core[open] .gl-core-hint::after{content:"접기";font-size:12px}
.gl-section-k{margin:0;font-family:"Space Grotesk";font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--amber)}
.gl-core-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding-bottom:24px}
.gl-core-link{min-width:0;display:flex;flex-direction:column;gap:3px;padding:13px 15px;border:1px solid var(--glass-line);border-radius:12px;background:rgba(var(--bg-rgb),.42);transition:transform .2s,border-color .2s,background .2s}
.gl-core-link span{color:var(--txt);font-size:14px;font-weight:600;overflow-wrap:anywhere}
.gl-core-link small{color:var(--txt-dim);font-family:"Space Grotesk";font-size:12px;overflow-wrap:anywhere}
.gl-core-link:hover{transform:translateY(-2px);border-color:rgba(var(--amber-rgb),.5);background:rgba(var(--plasma-rgb),.08)}
.gl-tools{margin-top:16px;padding:22px 26px;border:1px solid var(--glass-line);border-radius:18px;background:var(--panel);backdrop-filter:blur(18px);box-shadow:0 18px 54px rgba(var(--shade-rgb),.2)}
.gl-search-row{display:flex;gap:10px;align-items:stretch}
.gl-search-row .gl-search{min-width:0;flex:1}
.gl-reset{appearance:none;flex-shrink:0;padding:10px 14px;border:1px solid var(--glass-line);border-radius:10px;background:var(--glass);color:var(--txt);font:inherit;font-size:13px;cursor:pointer;min-height:44px}
.gl-reset:hover:not(:disabled){border-color:var(--ember);background:var(--glass-hover)}
.gl-reset:disabled{color:var(--txt-faint);cursor:default}
.gl-filter-panel{margin-top:12px}
.gl-filter-panel>summary{padding:10px 0;color:var(--txt-dim);font-size:13px;cursor:pointer;min-height:44px;box-sizing:border-box}
.gl-search-label{display:block;margin-bottom:8px;font-family:"Space Grotesk";font-size:12px;font-weight:600;letter-spacing:.06em;color:var(--amber)}
.gl-search{width:100%;box-sizing:border-box;padding:15px 17px;border:1px solid rgba(var(--ink-rgb),.13);border-radius:12px;outline:none;background:rgba(var(--ink-rgb),.045);color:var(--txt);font:15px/1.4 "Space Grotesk",sans-serif;transition:border-color .2s,box-shadow .2s,background .2s}
.gl-search::placeholder{color:var(--txt-faint)}
.gl-search:focus{border-color:rgba(var(--plasma-rgb),.68);box-shadow:0 0 0 3px rgba(var(--plasma-rgb),.12);background:rgba(var(--ink-rgb),.065)}
.gl-filter-row{display:grid;grid-template-columns:58px 1fr;gap:12px;align-items:start;margin-top:16px}
.gl-filter-k{padding-top:12px;font-size:12px;color:var(--txt-dim)}
.gl-filter-set{display:flex;flex-wrap:wrap;gap:7px}
.gl-filter{appearance:none;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--glass-line);border-radius:100px;min-height:40px;padding:8px 12px;background:var(--glass);color:var(--txt-dim);font:13px/1.2 "Space Grotesk",sans-serif;cursor:pointer;transition:border-color .2s,color .2s,background .2s}
.gl-filter span{color:var(--txt-dim);font-size:12px}
.gl-filter:hover{border-color:rgba(var(--plasma-rgb),.42);color:var(--txt)}
.gl-filter.on{border-color:rgba(var(--plasma-rgb),.62);background:rgba(var(--plasma-rgb),.13);color:var(--txt)}
.gl-filter:focus-visible,.gl-core-link:focus-visible,.gl-summary:focus-visible,.gl-links a:focus-visible,.gl-reset:focus-visible,.gl-section-head:focus-visible,.gl-filter-panel>summary:focus-visible,.gl-back-search:focus-visible{outline:2px solid var(--amber);outline-offset:3px}
.gl-result-count{margin:8px 0 0;padding-top:12px;border-top:1px solid var(--glass-line);color:var(--txt-dim);font-size:13px}
.gl-groups{padding-bottom:20px}
.gl-group{padding-top:42px;scroll-margin-top:80px}
.gl-group-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:18px}
.gl-group-head>span{font-family:"Space Grotesk";font-size:12px;color:var(--txt-dim)}
.gl-linked,#gl-results{padding-top:28px}
.gl-linked-note{color:var(--txt-dim);font-size:13px;margin:0 0 12px}
.gl-linked .gl-group-head a{color:var(--txt-dim);font-size:13px;text-decoration:underline;text-underline-offset:4px}
.gl-h{font-family:"Space Grotesk";font-size:22px;font-weight:600;color:var(--txt);margin:0}
.gl-h::before{content:"";display:inline-block;width:7px;height:20px;border-radius:3px;background:linear-gradient(var(--ember),var(--crim));margin-right:12px;vertical-align:-3px;box-shadow:0 0 18px rgba(var(--glow1-rgb),.36)}
.gl-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.gl-card{position:relative;min-width:0;background:var(--glass);border:1px solid var(--glass-line);border-radius:16px;backdrop-filter:blur(14px);scroll-margin-top:80px;overflow:hidden;transition:border-color .22s,background .22s,box-shadow .22s}
.gl-card:hover{border-color:rgba(var(--ink-rgb),.16);background:var(--glass-hover)}
.gl-card[open]{grid-column:1/-1;border-color:rgba(var(--plasma-rgb),.34);background:var(--glass-hover);box-shadow:0 18px 44px rgba(var(--shade-rgb),.22)}
.gl-card[hidden],.gl-group[hidden],.gl-core[hidden],.gl-linked[hidden],#gl-results[hidden],.gl-empty[hidden]{display:none!important}
.gl-legacy-anchor{position:absolute;top:-90px;display:block;visibility:hidden}
.gl-summary{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center;padding:21px 22px;cursor:pointer;list-style:none}
.gl-summary::-webkit-details-marker{display:none}
.gl-summary::marker{content:""}
.gl-summary-copy{min-width:0;display:flex;flex-direction:column;gap:10px}
.gl-title-row{min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:7px}
.gl-term{font-family:"Space Grotesk";font-size:18px;font-weight:600;color:var(--txt);letter-spacing:-.01em}
.gl-aka{font-family:"Space Grotesk";font-size:12px;font-weight:400;color:var(--txt-dim);letter-spacing:.02em}
.gl-level,.gl-core-badge,.gl-law-badge{border-radius:100px;padding:3px 7px;font-family:"Space Grotesk";font-size:11px;line-height:1.2}
.gl-level{border:1px solid var(--glass-line);color:var(--txt-dim)}
.gl-core-badge{border:1px solid rgba(var(--amber-rgb),.34);background:rgba(var(--amber-rgb),.09);color:var(--amber)}
.gl-definition{display:block;color:var(--read);font-size:14px;line-height:1.7;overflow-wrap:anywhere}
.gl-toggle{align-self:center;border:1px solid var(--glass-line);border-radius:100px;padding:6px 10px;color:var(--txt-dim);font-family:"Space Grotesk";font-size:12px;white-space:nowrap}
.gl-card[open] .gl-toggle{font-size:0;border-color:rgba(var(--plasma-rgb),.28);color:var(--txt-dim)}
.gl-card[open] .gl-toggle::after{content:"내용 접기";font-size:12px}
.gl-body{padding:20px 22px 22px;border-top:1px solid var(--glass-line);background:rgba(var(--shade-rgb),.08)}
.gl-dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:9px 15px;font-size:14px;line-height:1.65}
.gl-dl dt{font-family:"Space Grotesk";font-size:12px;font-weight:600;color:var(--amber);padding-top:3px;white-space:nowrap}
.gl-dl dd{margin:0;color:var(--read)}
.gl-links{margin-top:16px;padding-top:13px;border-top:1px solid var(--glass-line);display:flex;flex-wrap:wrap;align-items:center;gap:7px}
.gl-links-k{margin-right:2px;font-family:"Space Grotesk";font-size:12px;color:var(--txt-dim)}
.gl-links a{font-size:13px;line-height:1.6;color:var(--txt-dim);background:rgba(var(--ink-rgb),.035);border:1px solid var(--glass-line);border-radius:8px;padding:8px 10px;overflow-wrap:anywhere;transition:border-color .2s,color .2s,background .2s}
.gl-links a:hover{border-color:rgba(var(--plasma-rgb),.45);background:rgba(var(--plasma-rgb),.07);color:var(--txt)}
.gl-legal{margin-top:16px;padding:13px 15px;border:1px solid rgba(var(--amber-rgb),.22);border-radius:12px;background:rgba(var(--amber-rgb),.05)}
.gl-legal-k{margin:0 0 5px;font-family:"Space Grotesk";font-size:10.5px;font-weight:600;letter-spacing:.05em;color:var(--amber)}
.gl-legal-text{margin:0;font-size:14px;line-height:1.65;color:var(--read)}
.gl-legal-links{margin:10px 0 0;display:flex;flex-wrap:wrap;gap:7px}
.gl-legal-links a{font-size:12px;color:var(--txt-dim);background:rgba(var(--ink-rgb),.035);border:1px solid var(--glass-line);border-radius:8px;padding:5px 9px;transition:border-color .2s,color .2s,background .2s}
.gl-legal-links a:hover{border-color:rgba(var(--plasma-rgb),.45);background:rgba(var(--plasma-rgb),.07);color:var(--txt)}
.gl-legal-links a:focus-visible{outline:2px solid var(--amber);outline-offset:3px}
.gl-part-head{margin:44px 0 6px;padding:14px 18px;border-left:3px solid rgba(var(--blue-rgb),.7);border-radius:0 12px 12px 0;background:rgba(var(--blue-rgb),.06)}
.gl-part-head:first-child{margin-top:8px}
.gl-part-title{margin:0;font-size:22px;color:var(--txt)}
.gl-part-head p{margin:6px 0 0;font-size:14px;line-height:1.65;color:var(--txt-dim)}
/* 연결판과 같은 색 구분: AI 개념은 파랑, 소방 업무 용어는 주황 */
.gl-law-badge{border:1px solid rgba(var(--ember-rgb),.34);background:rgba(var(--ember-rgb),.08);color:var(--ember);white-space:nowrap}
.gl-part-head[data-part="fire"]{border-left-color:rgba(var(--ember-rgb),.7);background:rgba(var(--ember-rgb),.06)}
.gl-group[id^="cat-"] .gl-h::before{background:linear-gradient(var(--blue),rgba(var(--blue-rgb),.5));box-shadow:0 0 18px rgba(var(--blue-rgb),.3)}
.gl-law-defs{display:grid;gap:12px}
.gl-law-def blockquote{margin:0;padding:12px 15px;border-left:3px solid rgba(var(--blue-rgb),.6);border-radius:0 10px 10px 0;background:rgba(var(--blue-rgb),.06);font-size:14px;line-height:1.7;color:var(--read);white-space:pre-line}
.gl-law-card .gl-definition{white-space:pre-line}
.gl-law-caption{margin:6px 0 0;font-size:12px;color:var(--txt-dim)}
.gl-law-caption a,.gl-law-source a{color:var(--txt-dim);text-decoration:underline;text-underline-offset:3px}
.gl-law-source{margin:14px 0 0;font-size:12px;color:var(--txt-dim)}
.gl-law-role{margin:10px 0 0;font-size:13px;color:var(--txt)}
.gl-fire-law{border-color:rgba(var(--blue-rgb),.28);background:rgba(var(--blue-rgb),.05)}
.gl-fire-law .gl-legal-k{color:var(--blue)}
.gl-fire-reverse a{border-color:rgba(var(--blue-rgb),.28)}
/* 시행 예정 개정(2026-10-27 '구급') — 현행 정의 아래 따로 두는 시행 예정 문장과 카드 머리 배지. 색은 토큰만 */
.gl-law-pending blockquote{border-left-style:dashed;border-left-color:rgba(var(--ember-rgb),.6);background:rgba(var(--ember-rgb),.05)}
.gl-law-pending-badge{border-radius:100px;padding:3px 7px;font-size:11px;line-height:1.2;border:1px dashed rgba(var(--ember-rgb),.45);color:var(--ember);white-space:nowrap}
/* 소방 표준 용어(2026-10-27) — 고시 별표 묶음 머리와 카드의 옛 용어·개정 추가 표시. 색은 토큰만 */
.gl-std-intro{margin:0 0 14px;padding:14px 18px;border:1px solid rgba(var(--ember-rgb),.22);border-radius:14px;background:rgba(var(--ember-rgb),.04);font-size:13.5px;line-height:1.7;color:var(--read)}
.gl-std-intro p{margin:0 0 6px}
.gl-std-intro blockquote{margin:4px 0 10px;padding:10px 14px;border-left:3px solid rgba(var(--ember-rgb),.6);border-radius:0 10px 10px 0;background:rgba(var(--ember-rgb),.06);color:var(--txt)}
.gl-std-intro .gl-law-source{margin:8px 0 0}
.gl-std-intro .gl-law-source a{margin-right:12px}
.gl-std-old{font-size:12.5px;color:var(--txt-dim)}
.gl-std-new{border-radius:100px;padding:3px 7px;font-size:11px;line-height:1.2;border:1px dashed rgba(var(--ember-rgb),.45);color:var(--ember);white-space:nowrap}
.gl-empty{margin-top:36px;padding:38px 24px;border:1px dashed rgba(var(--plasma-rgb),.3);border-radius:18px;background:rgba(var(--plasma-rgb),.045);color:var(--txt-dim);text-align:center}
.gl-back-search{display:inline-flex;margin-top:16px;padding:10px 0;color:var(--txt-dim);font-size:13px;text-decoration:underline;text-underline-offset:4px}
@media (max-width:900px){.gl-core-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.gl-grid{grid-template-columns:1fr}}
@media (max-width:640px){.gl-core{padding:0 18px}.gl-section-head{gap:10px}.gl-section-head h2{font-size:17px}.gl-core-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.gl-tools{padding:18px 16px}.gl-search-row{flex-wrap:wrap}.gl-search-row .gl-search{flex-basis:100%}.gl-search-row .gl-reset{padding:8px 12px}.gl-filter-row{grid-template-columns:1fr;gap:8px}.gl-filter-k{padding-top:0}.gl-filter{min-height:44px}.gl-summary{grid-template-columns:1fr;padding:19px 17px}.gl-toggle{justify-self:start}.gl-body{padding:18px 17px 20px}.gl-dl{grid-template-columns:1fr;gap:4px}.gl-dl dd{margin-bottom:8px}.gl-group{padding-top:28px}.gl-group-head{flex-wrap:wrap;gap:8px}.gl-note{font-size:12px}.gl-part-head{padding:12px 14px}.gl-part-title{font-size:19px}}
@media print{.gl-tools,.gl-back-search{display:none}.gl-core{box-shadow:none}.gl-card{break-inside:avoid}}

/* 개념 설명과 근거는 펼친 카드 안에서 읽는다. */
.gl-scope{font-size:12px;color:var(--txt-dim)}
.gl-note-body{max-width:78ch;margin-top:24px;color:var(--read);font-size:15px;line-height:1.85;overflow-wrap:anywhere}
.gl-note-body h2{margin:24px 0 10px;font-size:19px;color:var(--txt);scroll-margin-top:100px}
.gl-note-body h3{margin:18px 0 8px;font-size:16px;color:var(--txt)}
.gl-note-body p{margin:8px 0}
.gl-note-body ul,.gl-note-body ol{padding-left:22px}
.gl-note-body table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;margin:14px 0;font-size:13px}
.gl-note-body th,.gl-note-body td{border:1px solid var(--glass-line);padding:8px 12px;text-align:left}
.gl-detail-section{border-top:1px solid var(--glass-line);margin-top:22px;padding-top:16px;font-size:14px;line-height:1.7;color:var(--read)}
.gl-detail-section h3{font-size:14px;margin:0 0 10px;color:var(--txt)}
.gl-detail-section ul{list-style:none;padding:0;margin:0;display:grid;gap:12px}
.gl-detail-section p{margin:3px 0}
.gl-detail-section a,.gl-paths a{color:var(--txt);text-decoration:underline;text-underline-offset:4px;overflow-wrap:anywhere}
.gl-detail-section small,.gl-relation-kind{color:var(--txt-dim);font-size:12px}
.gl-relation-kind{display:inline-block;margin-right:8px}
.gl-legacy-relations{margin-top:18px;font-size:13px;color:var(--txt-dim)}
.gl-legacy-relations>summary{cursor:pointer;padding:10px 0;min-height:44px;box-sizing:border-box}
.gl-legacy-relations .gl-links{margin-top:0;border-top:0;padding-top:0}
.gl-legacy-relations p{margin:10px 0;line-height:1.7}
.gl-paths{margin-top:14px;padding:4px 24px;border:1px solid var(--glass-line);border-radius:16px;background:var(--glass);color:var(--read)}
.gl-paths>summary{cursor:pointer;padding:16px 0;color:var(--txt);font-weight:600}
.gl-paths>p,.gl-path-grid p{font-size:13px;line-height:1.7;margin:0 0 10px}
.gl-path-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;padding:8px 0 20px}
.gl-path-grid section{padding:18px;border:1px solid var(--glass-line);border-radius:12px;min-width:0}
.gl-path-grid h3{font-size:16px;margin:0 0 8px}
.gl-path-grid ol{padding-left:22px;margin:12px 0;font-size:14px;line-height:2}
.gl-path-grid section>a{font-size:13px}
.gl-detail-section a:focus-visible,.gl-paths a:focus-visible,.gl-paths>summary:focus-visible,.gl-legacy-relations>summary:focus-visible{outline:2px solid var(--amber);outline-offset:4px}
@media(max-width:640px){.gl-paths{padding:0 16px}.gl-path-grid{grid-template-columns:1fr}.gl-note-body{font-size:14px}}

/* 용어 연결판(첫 화면) — 지식 그래프 상황판과 같은 어두운 섬(.theme-dark, 라이트 테마에서도 어둡다).
 * 왼쪽 원 AI 개념(파랑), 오른쪽 원 소방 업무 용어(주황), 그 사이 곡선 = 소방 업무 용어가 이어지는 AI 개념.
 * 그림 좌표는 scripts/lib/builders/glossary-board.js, 움직임·검색 연동은 assets/glossary-board.js. 색은 토큰만. */
.gb-board{--gb-ai:var(--blue);--gb-fire:var(--ember);--gb-core:var(--amber);position:relative;color:var(--txt);
  /* 바탕은 검정(--bg)에서 한 단계 올린 계기판 색(--inst → --bg-2)에, 제목 쪽 불씨 빛·왼쪽 아래 파랑 빛·아래쪽 심홍 빛을 얹는다.
   * 두 원 뒤의 파랑·주황 빛은 .gb-stage::before 가 원 위치를 따라 그린다. */
  background:
    radial-gradient(46% 62% at 4% 0%,rgba(var(--ember-rgb),.13),transparent 70%),
    radial-gradient(60% 46% at 62% 112%,rgba(var(--crim-rgb),.14),transparent 72%),
    radial-gradient(40% 50% at 100% 0%,rgba(var(--blue-rgb),.08),transparent 70%),
    radial-gradient(42% 52% at 0% 100%,rgba(var(--blue-rgb),.10),transparent 72%),
    linear-gradient(180deg,var(--inst) 0%,var(--bg-2) 70%,var(--bg) 100%);
  border-bottom:1px solid var(--glass-line);overflow:hidden}
/* 옅은 점 격자 — 판의 깊이. 가장자리로 갈수록 사라진다. */
.gb-board::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(rgba(var(--ink-rgb),.075) 1px,transparent 1.6px) 0 0/26px 26px;
  -webkit-mask-image:radial-gradient(70% 80% at 62% 52%,rgb(var(--black-rgb)) 25%,transparent 80%);mask-image:radial-gradient(70% 80% at 62% 52%,rgb(var(--black-rgb)) 25%,transparent 80%)}
.gb-board::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.55;background:repeating-linear-gradient(0deg,rgba(var(--ink-rgb),.016) 0 1px,transparent 1px 3px)}
.gb-in{position:relative;z-index:1;max-width:1600px;margin:0 auto;min-height:min(84vh,760px)}
.gb-copy{position:absolute;left:30px;top:30px;width:min(380px,29vw);z-index:2}
.gb-copy .crumb{margin-bottom:22px}
.gb-eyebrow{margin:0 0 12px;font:600 12px/1.5 var(--font-sans);letter-spacing:.04em;color:var(--ember)}
.gb-copy h1{margin:0;font:700 clamp(40px,4.4vw,62px)/1.02 var(--font-sans);letter-spacing:-.045em;text-wrap:balance}
.gb-lead{margin:16px 0 0;color:var(--read);font-size:15px;line-height:1.75;text-wrap:balance}
.gb-nobr{white-space:nowrap}
.gb-stats{display:flex;flex-wrap:wrap;gap:10px 26px;margin-top:24px;padding-top:16px;border-top:1px solid var(--glass-line)}
.gb-stats div{display:flex;flex-direction:column-reverse;gap:2px}
.gb-stats b{font:700 32px/1 "Space Grotesk",var(--font-sans);letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.gb-stats div:nth-child(1) b{color:var(--gb-ai)}
.gb-stats div:nth-child(2) b{color:var(--gb-fire)}
.gb-stats span{font-size:12px;color:var(--txt-dim)}
.gb-search{margin-top:24px}
.gb-search .gl-search{background:rgba(var(--ink-rgb),.06)}
.gb-core-link{display:inline-block;margin-top:12px;font-size:13px;color:var(--txt-dim);text-decoration:underline;text-underline-offset:4px}
.gb-core-link:hover{color:var(--txt)}
.gb-core-link:focus-visible{outline:2px solid var(--amber);outline-offset:3px;border-radius:4px}
.gb-stage{position:absolute;right:18px;top:50%;width:min(64vw,1010px);transform:translateY(-50%);isolation:isolate}
/* 두 원 뒤의 빛 — 그림 좌표(RINGS: AI 292/1080·326/640, 소방 818/1080)를 비율로 옮겨 화면 폭이 바뀌어도 원을 따라간다.
 * 빛이 무대 상자 끝에서 잘려 세로 경계가 보이지 않게 상자를 좌우 12%·위아래 25% 넓히고, 그만큼 위치·반지름을 나눴다. */
.gb-stage::before{content:"";position:absolute;inset:-25% -12%;z-index:-1;pointer-events:none;
  background:
    radial-gradient(25% 33.3% at 31.5% 50.7%,rgba(var(--blue-rgb),.24),rgba(var(--blue-rgb),.07) 55%,transparent 100%),
    radial-gradient(21% 28.7% at 70.7% 50.7%,rgba(var(--ember-rgb),.26),rgba(var(--ember-rgb),.08) 55%,transparent 100%),
    radial-gradient(48% 46% at 50% 50.7%,rgba(var(--ink-rgb),.035),transparent 100%)}
.gb-rings .gb-ring-ai{fill:rgba(var(--blue-rgb),.045)}
.gb-rings .gb-ring-fire{fill:rgba(var(--ember-rgb),.05)}
.gb-svg{display:block;width:100%;height:auto;overflow:visible}
.gb-rings circle{fill:none;stroke:rgba(var(--ink-rgb),.09);stroke-width:1}
.gb-rings .gb-ring-in{stroke:rgba(var(--ink-rgb),.06);stroke-dasharray:2 6}
.gb-n{transition:opacity .45s ease}
.gb-n.gb-ai{fill:var(--gb-ai);opacity:.62}
.gb-n.gb-fire{fill:var(--gb-fire);opacity:.7}
.gb-n.gb-linked{opacity:1}
.gb-n.gb-core{fill:var(--gb-core);opacity:1}
.gb-br{fill:none;stroke:rgba(var(--ember-rgb),.34);stroke-width:1;stroke-dasharray:1;stroke-dashoffset:0;transition:stroke-dashoffset 1.1s ease,stroke .25s,opacity .25s}
.gb-rel{fill:none;stroke:rgba(var(--blue-rgb),.16);stroke-width:.8;transition:opacity .25s}
.gb-gl text{font:600 15px var(--font-sans);fill:var(--read);paint-order:stroke;stroke:var(--bg);stroke-width:4px;stroke-linejoin:round}
.gb-gl .gb-gn{font:500 13px "Space Grotesk",var(--font-sans);fill:var(--txt-dim)}
.gb-gl:hover text,.gb-gl:focus-visible text{fill:var(--txt)}
.gb-gl-ai:hover .gb-gn,.gb-gl-ai:focus-visible .gb-gn{fill:var(--gb-ai)}
.gb-gl-fire:hover .gb-gn,.gb-gl-fire:focus-visible .gb-gn{fill:var(--gb-fire)}
.gb-gl:focus-visible{outline:2px solid var(--amber);outline-offset:4px;border-radius:4px}
.gb-tip{position:absolute;z-index:4;pointer-events:none;padding:6px 10px;border-radius:10px;background:var(--panel);border:1px solid var(--glass-line);font-size:13px;white-space:nowrap;transform:translate(14px,-50%);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.gb-tip small{color:var(--txt-dim);margin-left:8px;font-size:12px}
.gb-groups{display:none}
.gb-hint{position:absolute;left:30px;bottom:22px;z-index:2;width:min(380px,29vw);margin:0;font-size:12.5px;line-height:1.7;color:var(--txt-dim)}
.gb-hint span{display:block}
.gb-legend{position:absolute;right:30px;bottom:18px;z-index:2;display:flex;flex-wrap:wrap;gap:6px 18px;margin:0;padding:0;list-style:none;font-size:12px;color:var(--txt-dim)}
.gb-legend li{display:flex;align-items:center;gap:7px}
.gb-key{display:inline-block;flex:none}
.gb-key-ai,.gb-key-fire{width:8px;height:8px;border-radius:50%}
.gb-key-ai{background:var(--gb-ai)}
.gb-key-fire{background:var(--gb-fire)}
.gb-key-br,.gb-key-rel{width:18px;height:0;border-top:2px solid rgba(var(--ember-rgb),.7)}
.gb-key-rel{border-top:1px solid rgba(var(--blue-rgb),.5)}
/* 점에 올렸을 때: 그 점과 이웃만 밝게 */
.gb-board.is-focus .gb-n{opacity:.12}
.gb-board.is-focus .gb-n.is-near{opacity:1}
.gb-board.is-focus .gb-n.is-hot{stroke:var(--txt);stroke-width:2}
.gb-board.is-focus .gb-br{stroke:rgba(var(--ember-rgb),.07)}
.gb-board.is-focus .gb-br.is-near{stroke:var(--ember);stroke-width:2}
.gb-board.is-focus .gb-rel{opacity:.25}
.gb-board.is-focus .gb-rel.is-near{opacity:1;stroke:rgba(var(--blue-rgb),.75);stroke-width:1.4}
.gb-gl{transition:opacity .25s}
.gb-board.is-focus .gb-gl{opacity:.3}
/* 검색·필터와 함께: 결과에 든 용어만 밝게 */
.gb-board.is-filtering:not(.is-focus) .gb-n{opacity:.1}
.gb-board.is-filtering:not(.is-focus) .gb-n.is-hit{opacity:1;stroke:var(--txt);stroke-width:1.4}
.gb-board.is-filtering:not(.is-focus) .gb-br{stroke:rgba(var(--ember-rgb),.08)}
.gb-board.is-filtering:not(.is-focus) .gb-br.is-hit{stroke:var(--ember);stroke-width:1.6}
.gb-board.is-filtering:not(.is-focus) .gb-rel{opacity:.3}
/* 첫 장면 — 스크립트가 있을 때만 숨겼다가 한 번 켠다. 움직임 줄이기면 바로 완성 화면. */
.gb-board.gb-js:not(.is-on) .gb-n{opacity:0}
.gb-board.gb-js:not(.is-on) .gb-br{stroke-dashoffset:1}
@media (prefers-reduced-motion:reduce){.gb-n,.gb-br,.gb-rel{transition:none}}
@media (max-width:1100px){
  .gb-in{min-height:0;padding:26px 20px 22px}
  .gb-copy{position:static;width:auto;max-width:640px}
  .gb-stage{position:relative;right:auto;top:auto;width:100%;transform:none;margin-top:22px}
  .gb-hint,.gb-legend{position:static;width:auto;margin-top:12px}
  .gb-gl{display:none}
  .gb-groups{display:block;margin-top:14px}
  .gb-groups p{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin:0 0 8px}
  .gb-groups span{font-size:12px;color:var(--txt-dim);margin-right:2px}
  .gb-chip{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:4px 11px;border:1px solid var(--glass-line);border-radius:100px;font-size:13px;color:var(--txt);background:rgba(var(--ink-rgb),.04)}
  .gb-chip b{font:500 12px "Space Grotesk",var(--font-sans);color:var(--txt-dim)}
  .gb-chip-ai{border-color:rgba(var(--blue-rgb),.35)}
  .gb-chip-fire{border-color:rgba(var(--ember-rgb),.4)}
  .gb-chip:focus-visible{outline:2px solid var(--amber);outline-offset:2px}
}
@media (max-width:640px){.gb-in{padding:22px 16px 18px}.gb-copy h1{font-size:38px}.gb-stats b{font-size:28px}}
@media print{.gb-board{display:none}}

/* 한글 줄바꿈(2026-10-24): 띄어쓰기에서만 줄을 바꾸고(keep-all), 끊을 자리가 없는 긴 덩어리(ㆍ·→로 이은 말)만 글자 사이에서 끊는다.
 * 문단 끝에 한 어절만 남는 외톨이 줄은 text-wrap:pretty 로 줄인다. 표 칸은 글자를 쪼개지 않고 표 상자가 가로로 스크롤한다. */
.gb-board,.gl-tools,.gl-core,.gl-paths,#gl-groups{word-break:keep-all;overflow-wrap:break-word}
:is(#gl-groups,.gl-core,.gl-paths) :is(p,dd,li,blockquote,.gl-definition){text-wrap:pretty}
.gl-part-head p,.gb-hint span{text-wrap:pretty}
.gl-note-body :is(td,th){overflow-wrap:normal}
.gl-nobr{white-space:nowrap} /* 숫자·%·조사 한 덩어리(softBreaks) */
