  :root{
    /* ── 배경 (은하 캔버스) — 다크 고정 ── */
    --bg:#070912; --bg2:#0b0f1d;
    /* ── UI 크롬 표면 계층 (다크/라이트 짝은 .light 스코프에서 재정의) ── */
    --panel:rgba(16,21,38,.74); --panel-solid:#0f1426;
    --cell:rgba(22,28,48,.66);          /* 리스트·그리드 셀 (카드 위 한 겹 밝게) */
    --fill-1:rgba(150,170,255,.035);    /* 은은한 채움 */
    --fill-2:rgba(150,170,255,.06);     /* 헤더·hover 채움 */
    /* ── 텍스트 ── */
    --txt:#e7ecff; --txt-dim:#9aa6cf; --txt-faint:#7480a6;
    /* ── 경계 ── */
    --stroke:rgba(150,170,255,.11); --stroke-2:rgba(150,170,255,.22);
    /* ── accent 팔레트 (의미 고정 — JS·인라인 style이 참조) ── */
    --violet:#7b6cff; --azure:#46b9ff; --hot:#ff5ea8; --mint:#5ce0c4; --amber:#ffc46b;
    --up:#a8d2ff; --dn:#ffb35e;
    /* ── accent 파생 — 인터랙션 (채도 절제) ── */
    --accent:var(--violet);
    --accent-fg:#f4f7ff;                /* accent 위 텍스트·아이콘 */
    --accent-tint:rgba(255,255,255,.07);   /* 은은한 채움 (모노크롬) */
    --accent-tint-2:rgba(255,255,255,.13); /* 선택·on 배경 (모노크롬) */
    --azure-tint:rgba(70,185,255,.14);
    --focus:rgba(255,255,255,.35);
    /* ── radius 스케일 ── */
    --r-sm:8px; --r-md:12px; --r-lg:16px; --r-xl:20px; --r-pill:999px;
    /* ── 그림자 — 절제된 depth(색 없음) ── */
    --shadow:0 18px 60px rgba(0,0,0,.55);
    --shadow-sm:0 2px 8px rgba(0,0,0,.26);
    --shadow-md:0 10px 32px rgba(0,0,0,.4);
    /* ── transition ── */
    --t-fast:.14s ease; --t:.18s ease; --t-slow:.4s cubic-bezier(.22,1,.3,1);
    font-family:"Pretendard","Pretendard Variable","Apple SD Gothic Neo",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans KR",sans-serif;
  }
  *{box-sizing:border-box}
  html,body{height:100%;margin:0}
  body{
    background:var(--bg);
    color:var(--txt); overflow:hidden; -webkit-font-smoothing:antialiased;
    word-break:keep-all; overflow-wrap:break-word; /* 한글은 어절(단어) 단위 줄바꿈, 긴 라틴어만 분해 */
  }
  #scene{position:fixed;inset:0;z-index:0;display:block;touch-action:none;cursor:grab}
  #scene.grab{cursor:grabbing}
  .vignette{position:fixed;inset:0;z-index:1;pointer-events:none;box-shadow:inset 0 0 240px 46px rgba(2,4,12,.66)}
  .tnum{font-variant-numeric:tabular-nums}
  .up{color:var(--up)} .dn{color:var(--dn)}

  /* ── 엔진 라벨 (galaxy.js가 생성) ── */
  #labels{position:fixed;inset:0;z-index:3;pointer-events:none;overflow:hidden}
  /* 분야 명판 — 행성 바로 아래 한 덩어리(이름·검증바·수치), 행성과 한 몸으로 읽힘 */
  .gx-catlabel{position:absolute;white-space:nowrap;transform-origin:50% 0;
    display:flex;flex-direction:column;align-items:center;gap:5px;padding:6px 12px 7px;border-radius:11px;
    transition:opacity .25s,background .15s}
  .gx-catlabel:hover{background:rgba(14,19,36,.62)}
  .gx-catlabel:hover .nm{color:#fff}
  .gx-catlabel .nm{display:flex;align-items:center;gap:8px;font-size:14.5px;font-weight:800;
    letter-spacing:.2em;text-indent:.02em;color:rgba(226,232,255,.92);
    text-shadow:0 0 24px rgba(140,150,255,.4),0 1px 10px rgba(0,0,0,.85);transition:color .15s}
  .gx-catlabel .dot{width:7px;height:7px;border-radius:50%;flex:none;box-shadow:0 0 10px currentColor}
  .gx-nl-metric{font-size:9.5px;font-weight:650;letter-spacing:.16em;text-shadow:0 1px 8px rgba(0,0,0,.9);opacity:.92}
  .gx-nl-metric b{font-size:11.5px;font-weight:800;letter-spacing:.02em}
  .gx-nl-bar{width:96px;height:3px;border-radius:2px;background:rgba(255,255,255,.13);overflow:hidden}
  .gx-nl-bar i{display:block;height:100%;border-radius:2px;transition:width .4s}
  /* 제도 핀 — 명판과 구분되는 작은 캡슐 (마우스 근접 시 표시, 클릭 진입점) */
  .gx-actorlabel{position:absolute;transform:translate(-50%,-100%);display:flex;align-items:center;gap:5px;
    font-size:10px;font-weight:600;color:rgba(214,222,247,.88);padding:2px 8px;border-radius:99px;
    background:rgba(8,11,22,.52);border:1px solid rgba(150,170,255,.13);backdrop-filter:blur(4px);
    white-space:nowrap;cursor:pointer;pointer-events:auto;user-select:none;transition:opacity .15s;
    text-shadow:0 1px 4px rgba(0,0,0,.8)}
  .gx-actorlabel:hover{border-color:rgba(165,148,255,.5);background:rgba(18,23,44,.9);color:#fff}
  .gx-actorlabel .dot{width:4px;height:4px;border-radius:50%;flex:none;box-shadow:0 0 5px currentColor}

  /* ── 상단 바 ── */
  .topbar{position:fixed;z-index:7;top:0;left:0;right:0;display:flex;align-items:center;gap:12px;padding:12px 16px;pointer-events:none}
  .brand{display:flex;align-items:center;gap:10px;pointer-events:auto}
  .brand a{text-decoration:none;color:inherit;display:flex;align-items:center;gap:10px}
  .logo{width:32px;height:32px;border-radius:50%;flex:none;background:radial-gradient(circle at 38% 34%,rgba(255,255,255,.16),rgba(255,255,255,.05) 60%);
    border:1px solid var(--stroke-2);display:grid;place-items:center}
  .logo::after{content:"";width:7px;height:7px;border-radius:50%;background:#fff;box-shadow:0 0 10px rgba(255,255,255,.9)}
  .brand h1{font-size:14.5px;margin:0;font-weight:750;line-height:1.15;letter-spacing:.1px;white-space:nowrap}
  .brand h1 span{color:var(--txt-dim);font-weight:500}
  .brand p{margin:1px 0 0;font-size:10.5px;color:var(--txt-faint)}
  .catwrap{pointer-events:auto;position:relative;max-width:44vw;border-radius:12px;background:var(--panel);
    border:1px solid var(--stroke);backdrop-filter:blur(14px);display:flex;align-items:stretch}
  .catnav{display:flex;gap:2px;padding:4px;overflow-x:auto;scrollbar-width:none}
  .catnav::-webkit-scrollbar{display:none}
  .catnav button{appearance:none;border:0;background:transparent;color:var(--txt-dim);font:700 12px/1 inherit;
    padding:8px 11px;border-radius:8px;cursor:pointer;white-space:nowrap;transition:.16s;display:flex;align-items:center;gap:6px}
  .catnav button:hover{color:var(--txt)}
  .catnav button.on{background:rgba(255,255,255,.14);color:#fff}
  .catnav button .d{width:7px;height:7px;border-radius:50%;box-shadow:0 0 7px currentColor}
  .catarrow{position:absolute;top:0;bottom:0;width:26px;border:0;cursor:pointer;display:grid;place-items:center;
    color:var(--txt-dim);opacity:0;pointer-events:none;transition:opacity .18s;z-index:2;padding:0}
  .catarrow:hover{color:var(--txt)}
  .catarrow.l{left:0;border-radius:12px 0 0 12px;background:linear-gradient(90deg,var(--panel-solid) 35%,transparent)}
  .catarrow.r{right:0;border-radius:0 12px 12px 0;background:linear-gradient(270deg,var(--panel-solid) 35%,transparent)}
  .catwrap.can-l .catarrow.l,.catwrap.can-r .catarrow.r{opacity:1;pointer-events:auto}
  .spacer{flex:1}
  /* 상단 바 압착 방지 — 줄어드는 건 catnav만, 나머지는 고정폭 */
  .topbar>*{flex-shrink:0}
  .topbar .catwrap{flex-shrink:1;min-width:0}
  .search{pointer-events:auto;position:relative;width:min(210px,30vw)}
  .search input{width:100%;padding:9px 34px 9px 32px;border-radius:11px;border:1px solid var(--stroke);
    background:var(--panel);backdrop-filter:blur(14px);color:var(--txt);font:500 13px/1 inherit;outline:none;transition:.16s}
  .search input:focus{border-color:var(--stroke-2)}
  .search svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);opacity:.5}
  /* 검색 단축키(/) 키캡 — 포커스·입력 시 사라짐, 모바일 미표시 */
  .searchkey{position:absolute;right:9px;top:50%;transform:translateY(-50%);pointer-events:none;
    font:600 11px/1 inherit;color:var(--txt-faint);background:var(--fill-2);border:1px solid var(--stroke);
    border-radius:6px;padding:3px 6px;transition:opacity .14s}
  .search input:focus ~ .searchkey,.search input:not(:placeholder-shown) ~ .searchkey{opacity:0}
  .sres{position:absolute;top:42px;right:0;left:auto;background:var(--panel-solid);border:1px solid var(--stroke);
    border-radius:11px;overflow:hidden;box-shadow:var(--shadow);display:none;max-height:300px;overflow-y:auto;min-width:300px}
  .sres.show{display:block}
  .sres button{display:flex;width:100%;text-align:left;gap:8px;align-items:center;padding:9px 12px;background:none;border:0;
    color:var(--txt);cursor:pointer;font:500 12.5px/1.3 inherit;border-bottom:1px solid var(--stroke)}
  .sres button:last-child{border-bottom:0}
  .sres button:hover,.sres button.sel{background:var(--accent-tint)}
  .sres .sw{width:8px;height:8px;border-radius:50%;flex:none}
  .sres .sc{margin-left:auto;font-size:10px;color:var(--txt-faint);white-space:nowrap}
  .viewseg{pointer-events:auto;display:flex;gap:3px;padding:4px;border-radius:12px;background:var(--panel);
    border:1px solid var(--stroke);backdrop-filter:blur(14px)}
  .viewseg button{appearance:none;border:0;background:transparent;color:var(--txt-dim);font:700 12px/1 inherit;
    padding:8px 13px;border-radius:8px;cursor:pointer;transition:.16s;white-space:nowrap}
  .viewseg button.on{background:rgba(255,255,255,.16);color:#fff}
  .autobtn{pointer-events:auto;display:flex;align-items:center;gap:6px;appearance:none;cursor:pointer;
    padding:8px 13px;border-radius:12px;font:700 12px/1 inherit;white-space:nowrap;transition:.16s;
    color:var(--txt-dim);background:var(--panel);border:1px solid var(--stroke);backdrop-filter:blur(14px)}
  .autobtn:hover{color:#fff}
  .autobtn.on{color:#fff;background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.3)}
  .autobtn.on svg{animation:autospin 8s linear infinite}
  @keyframes autospin{to{transform:rotate(360deg)}}

  /* ── 하단 독 (토글·연대기·카운트) ── */
  .ctrlbar{position:fixed;z-index:6;bottom:42px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:16px;
    padding:10px 18px;border-radius:16px;background:var(--panel);border:1px solid var(--stroke);
    backdrop-filter:blur(20px) saturate(1.15);pointer-events:auto;flex-wrap:nowrap;width:max-content;justify-content:center;
    max-width:calc(100vw - 32px);box-shadow:0 14px 44px rgba(0,0,0,.42)}
  @media (max-width:1140px){.ctrlbar{flex-wrap:wrap;width:auto}}
  .tgl{display:flex;align-items:center;gap:7px;font-size:11.5px;font-weight:600;color:var(--txt-dim);cursor:pointer;user-select:none;white-space:nowrap}
  .tgl .sw{width:26px;height:15px;border-radius:99px;background:rgba(255,255,255,.12);position:relative;transition:.18s;flex:none}
  .tgl .sw::after{content:"";position:absolute;top:2px;left:2px;width:11px;height:11px;border-radius:50%;background:#9aa6cf;transition:.18s}
  .tgl.on{color:var(--txt)}
  .tgl.on .sw{background:rgba(255,255,255,.45)}
  .tgl.on .sw::after{left:13px;background:#fff}
  .playwrap{display:flex;align-items:center;gap:9px;min-width:340px}
  .chron{font-size:10.5px;font-weight:800;letter-spacing:.08em;color:var(--txt-faint);white-space:nowrap}
  .pbtn{width:30px;height:30px;border-radius:50%;border:1px solid var(--stroke-2);background:rgba(255,255,255,.08);
    color:#fff;cursor:pointer;display:grid;place-items:center;transition:.16s;flex:none}
  .pbtn:hover{background:rgba(255,255,255,.16)}
  .spd{display:flex;gap:2px}
  .spd button{appearance:none;border:0;background:transparent;color:var(--txt-faint);font:700 10.5px/1 inherit;
    padding:5px 7px;border-radius:6px;cursor:pointer}
  .spd button.on{background:rgba(255,255,255,.1);color:var(--txt)}
  .tline{flex:1;-webkit-appearance:none;appearance:none;height:4px;border-radius:3px;background:rgba(255,255,255,.12);outline:none;cursor:pointer;min-width:120px}
  .tline::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#fff;
    box-shadow:0 1px 6px rgba(0,0,0,.5);cursor:grab}
  .tlabel{font-size:11.5px;font-weight:700;color:var(--txt-dim);white-space:nowrap;min-width:84px;text-align:center}
  .tlabel.live{color:var(--mint)}
  .tlabel.live::before{content:"●";margin-right:5px;animation:blink 1.6s ease infinite}
  @keyframes blink{50%{opacity:.35}}
  .counts{display:flex;gap:13px;font-size:11.5px;color:var(--txt-faint);white-space:nowrap}
  .counts b{color:var(--txt);font-weight:800}

  /* ── 범례 캡션(독 아래 한 줄)·크레딧 ── */
  .legend{position:fixed;z-index:5;left:50%;bottom:14px;transform:translateX(-50%);display:flex;gap:11px;
    font-size:10px;color:var(--txt-faint);align-items:center;white-space:nowrap;letter-spacing:.03em;
    max-width:calc(100vw - 24px);overflow:hidden}
  .legend .sw{width:6px;height:6px;border-radius:50%;box-shadow:0 0 6px currentColor;flex:none}
  .legend .sep{width:1px;height:10px;background:var(--stroke-2);flex:none}
  .credit{position:fixed;z-index:5;right:16px;bottom:14px;font-size:10px;color:var(--txt-faint);text-align:right;line-height:1.6}
  .credit a{color:var(--azure);text-decoration:none}

  /* ── 호버 툴팁 ── */
  .tip{position:fixed;z-index:9;pointer-events:none;width:300px;padding:14px;border-radius:13px;background:var(--panel-solid);
    border:1px solid var(--stroke-2);box-shadow:var(--shadow);opacity:0;transform:translateY(6px);transition:opacity .13s,transform .13s}
  .tip.show{opacity:1;transform:none}
  .tip .cat{font-size:9.5px;font-weight:800;letter-spacing:.1em;color:var(--txt-faint);margin-bottom:5px;display:flex;gap:7px;align-items:center;flex-wrap:wrap}
  .tip .vtag{font-size:9px;padding:2px 7px;border-radius:99px;display:inline-flex;gap:4px;align-items:center;font-weight:700;letter-spacing:0}
  .tip .vtag.v{color:var(--mint);background:rgba(92,224,196,.12)}
  .tip .vtag.r{color:var(--amber);background:rgba(255,196,107,.12)}
  .tip h3{margin:0 0 9px;font-size:14.5px;font-weight:750;line-height:1.35}
  .tip .ol{font-size:11px;color:var(--txt-dim);line-height:1.5;margin:-3px 0 9px}
  .tip .kvs{display:flex;flex-direction:column;gap:4px;margin-bottom:9px}
  .tip .kv{display:flex;justify-content:space-between;font-size:11.5px;gap:10px}
  .tip .kv small{color:var(--txt-faint)}
  .tip .kv b{font-weight:700;text-align:right}
  .tip .rows{border-top:1px solid var(--stroke);padding-top:8px;display:flex;flex-direction:column;gap:6px}
  .tip .rh{font-size:9.5px;font-weight:800;letter-spacing:.09em;color:var(--txt-faint)}
  .tip .row{display:flex;align-items:center;gap:7px;font-size:11px}
  .tip .row .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--txt-dim)}
  .tip .chip{font-size:9px;font-weight:800;padding:2px 6px;border-radius:5px;flex:none}
  .chip.y{background:var(--azure-tint);color:var(--azure)}
  .chip.n{background:rgba(150,170,255,.1);color:var(--txt-dim)}
  .tip .go{margin-top:9px;font-size:10px;color:var(--txt-faint);text-align:center}
  .tip .go b{color:var(--accent-fg)}

  /* ── 상세 패널 ── */
  #scrim{position:fixed;inset:0;z-index:40;background:rgba(3,5,14,.5);backdrop-filter:blur(2px);opacity:0;pointer-events:none;transition:opacity .35s}
  #scrim.show{opacity:1;pointer-events:auto}
  #detail{position:fixed;z-index:50;top:12px;right:12px;bottom:12px;width:min(540px,calc(100vw - 24px));
    background:rgba(10,13,26,.78);backdrop-filter:blur(28px) saturate(1.25);
    border:1px solid rgba(255,255,255,.09);border-radius:20px;
    box-shadow:0 32px 90px rgba(0,0,0,.55);transform:translateX(calc(100% + 24px));transition:transform .42s cubic-bezier(.22,1,.3,1);
    display:flex;flex-direction:column;overflow:hidden}
  #detail.show{transform:none}
  .dhead{padding:22px 26px 18px;border-bottom:1px solid var(--stroke);position:relative;flex:none;color:var(--txt)}
  .dhead .accent{position:absolute;left:0;top:22px;bottom:18px;height:auto;width:3px;border-radius:2px;background:var(--pc,#7b6cff)}
  .dhead .row1{display:flex;align-items:center;gap:9px;margin-bottom:12px;padding-right:46px;flex-wrap:wrap}
  .dhead .cat{font-size:11px;padding:4px 10px;border-radius:999px;color:var(--pc);
    background:color-mix(in srgb,var(--pc) 14%,transparent);border:1px solid color-mix(in srgb,var(--pc) 32%,transparent)}
  .dhead .rank{font-size:11px;color:var(--txt-faint);font-variant-numeric:tabular-nums}
  .dhead .vb{font-size:10.5px;padding:4px 9px;border-radius:999px;display:inline-flex;gap:5px;align-items:center;font-weight:700}
  .dhead .vb.v{color:var(--mint);background:rgba(92,224,196,.1);border:1px solid rgba(92,224,196,.3)}
  .dhead .vb.r{color:var(--amber);background:rgba(255,196,107,.1);border:1px solid rgba(255,196,107,.3)}
  .dhead .vb .d{width:6px;height:6px;border-radius:50%;background:currentColor}
  .dhead h2{margin:0;font-size:24px;font-weight:750;letter-spacing:-.015em;line-height:1.22;padding-right:52px;word-break:keep-all}
  .dhead .ty{font-size:12px;color:var(--txt-faint);margin-top:5px}
  .dhead .ol{margin:13px 0 0;font-size:13.5px;color:var(--txt-dim);line-height:1.6}
  .dhead .bignum{position:absolute;top:56px;right:26px;text-align:right}
  .dhead .bignum b{font-size:29px;font-weight:750;display:block;line-height:1;letter-spacing:-.02em}
  .dhead .bignum small{font-size:8.5px;color:var(--txt-faint);letter-spacing:.1em}
  .dclose{position:absolute;top:18px;right:18px;width:34px;height:34px;border-radius:9px;border:1px solid var(--stroke);
    background:var(--fill-2);color:var(--txt-dim);cursor:pointer;display:grid;place-items:center;transition:.16s;z-index:2}
  .dclose:hover{color:var(--txt);border-color:var(--stroke-2)}
  .dbody{overflow-y:auto;padding:22px 26px 60px;flex:1;scrollbar-width:thin;scrollbar-color:var(--stroke-2) transparent}
  /* 얇고 은은한 스크롤바 — 호버 시에만 진해짐 */
  .dbody::-webkit-scrollbar,.lm-body::-webkit-scrollbar{width:6px;height:6px}
  .dbody::-webkit-scrollbar-track,.lm-body::-webkit-scrollbar-track{background:transparent}
  .dbody::-webkit-scrollbar-thumb,.lm-body::-webkit-scrollbar-thumb{background:var(--stroke);border-radius:99px;border:1px solid transparent;background-clip:padding-box}
  .dbody:hover::-webkit-scrollbar-thumb,.lm-body:hover::-webkit-scrollbar-thumb{background:var(--stroke-2)}
  .lm-body{scrollbar-width:thin;scrollbar-color:var(--stroke-2) transparent}
  .metgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--stroke);border:1px solid var(--stroke);border-radius:12px;overflow:hidden;margin-bottom:22px}
  .metgrid .m{background:var(--cell);padding:12px 6px;text-align:center}
  .metgrid .m .v{font-size:17px;font-weight:700;color:var(--txt);font-variant-numeric:tabular-nums;letter-spacing:-.01em}
  .metgrid .m .k{font-size:9.5px;color:var(--txt-faint);margin-top:3px}
  .sblk{margin-bottom:26px}
  .sblk h3{font-size:12px;letter-spacing:.1em;color:var(--txt-faint);margin:0 0 13px;display:flex;align-items:center;gap:9px;font-weight:700}
  .sblk h3::after{content:"";flex:1;height:1px;background:var(--stroke)}
  .sblk h3 .cnt{color:var(--txt-faint);font-weight:600}
  .prose{font-size:13px;color:var(--txt-dim);line-height:1.68;margin:0}
  .prose+.prose{margin-top:10px}
  .prose b{color:var(--txt)}
  .steps{margin:0;padding:0;list-style:none;counter-reset:st;display:flex;flex-direction:column;gap:7px}
  .steps li{counter-increment:st;display:flex;gap:10px;font-size:12.5px;color:var(--txt-dim);line-height:1.55}
  .steps li::before{content:counter(st);flex:none;width:20px;height:20px;border-radius:7px;background:rgba(255,255,255,.09);
    color:var(--txt);font-size:10.5px;font-weight:800;display:grid;place-items:center;margin-top:1px}
  .bullets{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:7px}
  .bullets li{display:flex;gap:9px;font-size:12.5px;color:var(--txt-dim);line-height:1.55}
  .bullets li::before{content:"";flex:none;width:5px;height:5px;border-radius:50%;background:var(--pc,#7b6cff);margin-top:7px}
  .bullets.warn li::before{background:var(--amber)}
  .auth{display:flex;flex-direction:column;gap:1px;border:1px solid var(--stroke);border-radius:12px;overflow:hidden;background:var(--stroke)}
  .auth .a{background:var(--cell);padding:10px 13px}
  .auth .a b{display:block;font-size:12.5px;font-weight:700;margin-bottom:2px}
  .auth .a span{font-size:11.5px;color:var(--txt-dim);line-height:1.5}
  .flowbox{border:1px solid var(--stroke);border-radius:12px;padding:12px 14px;background:var(--fill-1)}
  .flowbox .fh{font-size:10.5px;font-weight:800;letter-spacing:.06em;margin-bottom:6px;display:flex;align-items:center;gap:6px}
  .flowbox .fh.money{color:var(--amber)} .flowbox .fh.docs{color:var(--azure)}
  .flowbox p{margin:0;font-size:12px;color:var(--txt-dim);line-height:1.62}
  .flowbox+.flowbox{margin-top:10px}
  .lawlist{display:flex;flex-direction:column;gap:1px;border:1px solid var(--stroke);border-radius:12px;overflow:hidden;background:var(--stroke)}
  .lawrow{display:flex;align-items:center;gap:9px;padding:10px 13px;background:var(--cell);cursor:pointer;transition:.13s;text-align:left;border:0;color:var(--txt);font:inherit}
  .lawrow:hover{background:var(--accent-tint)}
  .lawrow .kind{font-size:9px;font-weight:800;padding:2px 7px;border-radius:5px;flex:none}
  .kind.k1{background:var(--azure-tint);color:var(--azure)}
  .kind.k0{background:rgba(150,170,255,.1);color:var(--txt-dim)}
  .lawrow .nm{flex:1;font-size:12.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .lawrow .art{font-size:10px;color:var(--txt-faint);flex:none;max-width:38%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .sblk h3 .hh{font-size:10.5px;font-weight:500;color:var(--txt-faint);margin-left:8px}
  /* ── 라이트 테마(세부카드·모달) — 시맨틱 토큰만 재정의 → 하위 전수 전파 ── */
  #detail.light, .lawmodal.light, .askmodal.light{
    --txt:#1b2333; --txt-dim:#49516b; --txt-faint:#6b7590;
    --stroke:rgba(24,34,74,.12); --stroke-2:rgba(24,34,74,.22); --panel-solid:#fff;
    --cell:#eef2fa;                  /* 셀 — 밝은 회청, 흰 카드와 층위 구분 */
    --fill-1:#f5f8fd; --fill-2:#e9eef9;
    --accent-fg:#5b45c7;             /* 라이트에선 진한 보라로 대비 확보(WCAG AA) */
    --accent-tint:rgba(123,108,255,.09); --accent-tint-2:rgba(123,108,255,.14);
    --azure-tint:rgba(70,185,255,.12);
    --shadow-sm:0 1px 4px rgba(24,34,74,.06); --shadow-md:0 10px 32px rgba(24,34,74,.1);
    --shadow:0 24px 64px rgba(24,34,74,.16)}
  #detail.light{background:rgba(255,255,255,.88);backdrop-filter:blur(28px) saturate(1.2);border-color:rgba(24,34,74,.12)}
  #detail.light .dhead{background:#fff}
  .lawmodal.light .lm-card,.askmodal.light .ask-card{background:#fff}
  .lawmodal.light .lm-txt{color:#28304a}
  .lawmodal.light .lm-x{background:rgba(24,34,74,.05)}
  .askmodal.light .ask-q{background:color-mix(in srgb,var(--mint,#2bb89b) 15%,#fff);color:#12302a}
  .themebtn{position:absolute;top:18px;right:60px;width:34px;height:34px;border-radius:9px;border:1px solid var(--stroke);
    background:var(--fill-2);color:var(--txt-dim);cursor:pointer;display:grid;place-items:center;transition:.16s;z-index:2}
  .themebtn:hover{color:var(--txt);border-color:var(--stroke-2)}
  /* ── 매뉴얼 근거 사실 섹션 ── */
  .prose.lead{font-size:14px;line-height:1.7;color:var(--txt);margin:0 0 18px}
  .fsec{margin-bottom:16px}
  .fsec .fh{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:800;color:var(--txt);margin-bottom:8px}
  .fsec .fh .fi{font-size:13px;opacity:.9}
  .fsec .flist{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px}
  .fsec .flist li{position:relative;padding:9px 12px 9px 26px;font-size:13px;line-height:1.6;color:var(--txt-dim);
    background:var(--fill-1);border:1px solid var(--stroke);border-radius:10px}
  .fsec .flist li::before{content:'';position:absolute;left:12px;top:15px;width:5px;height:5px;border-radius:50%;background:var(--pc,#7b6cff)}
  /* 지원 금액 — 사용자가 가장 먼저 찾는 정보, 강조 카드로 히어로화 */
  .fsec.amt{background:color-mix(in srgb,var(--pc) 7%,transparent);border:1px solid color-mix(in srgb,var(--pc) 22%,transparent);
    border-radius:14px;padding:14px 15px 15px;margin-bottom:20px;position:relative;overflow:hidden}
  .fsec.amt::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--pc,#7b6cff)}
  .fsec.amt .fh{color:var(--pc,#7b6cff);font-size:13.5px}
  .fsec.amt .flist li{background:transparent;border:0;border-radius:0;padding:4px 0 4px 16px;
    color:var(--txt);font-weight:600;font-size:14.5px;line-height:1.62;font-variant-numeric:tabular-nums}
  .fsec.amt .flist li::before{left:2px;top:13px}
  .fsec .prose{margin:0;font-size:13px;color:var(--txt-dim);line-height:1.6}
  /* ── 한눈에 보기 브리핑(폴백) ── */
  .brief{display:flex;flex-direction:column;gap:9px;margin-top:6px}
  .bq{display:grid;grid-template-columns:80px 1fr;gap:12px;align-items:start;padding:10px 12px;
    background:var(--fill-1);border:1px solid var(--stroke);border-radius:11px}
  .bq .bl{font-size:11px;font-weight:800;color:var(--azure);padding-top:2px}
  .bq .bv{font-size:13px;line-height:1.65;color:var(--txt)}
  /* ── 접기 섹션(검증 정보) ── */
  .vfold{margin-top:16px;border-top:1px solid var(--stroke);padding-top:12px}
  .vfold summary{cursor:pointer;font-size:12px;color:var(--txt-faint);list-style:none;
    display:flex;align-items:center;gap:6px;user-select:none}
  .vfold summary::-webkit-details-marker{display:none}
  .vfold summary::before{content:'▸';font-size:10px;transition:transform .15s}
  .vfold[open] summary::before{transform:rotate(90deg)}
  .vfold summary:hover{color:var(--txt)}
  .vfold .vmeta{margin-top:10px}
  /* ── 법령 조문 모달 (lexdiff 스타일) ── */
  .lawmodal{position:fixed;inset:0;z-index:60;display:none;align-items:center;justify-content:center;
    background:rgba(4,6,14,.68);backdrop-filter:blur(6px);padding:20px}
  .lawmodal.show{display:flex}
  .lm-card{width:min(680px,94vw);max-height:88vh;position:relative;display:flex;flex-direction:column;
    background:rgba(13,17,33,.84);backdrop-filter:blur(30px) saturate(1.25);color:var(--txt);
    border:1px solid rgba(255,255,255,.1);border-radius:20px;overflow:hidden;
    box-shadow:0 32px 90px rgba(0,0,0,.55);animation:lmIn .22s cubic-bezier(.2,.8,.2,1)}
  @keyframes lmIn{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}
  .lm-head{position:relative;padding:20px 22px 15px;border-bottom:1px solid var(--stroke);
    background:linear-gradient(180deg,var(--accent-tint),transparent)}
  .lm-head h3{font-size:19px;font-weight:800;margin:0;letter-spacing:-.01em}
  .lm-kind{display:inline-block;font-size:10px;font-weight:800;padding:3px 9px;border-radius:6px;margin-bottom:8px;
    background:var(--azure-tint);color:var(--azure)}
  .lm-sub{margin-top:7px;font-size:12px;color:var(--txt-faint)}
  .lm-sub a{color:var(--azure);text-decoration:none} .lm-sub a:hover{text-decoration:underline}
  .lm-x{position:absolute;top:14px;right:14px;width:34px;height:34px;border:0;border-radius:10px;cursor:pointer;
    background:rgba(255,255,255,.06);color:var(--txt);font-size:15px;line-height:1;display:grid;place-items:center;z-index:2}
  .lm-x:hover{background:rgba(255,255,255,.12)}
  .lm-body{padding:16px 22px 8px;overflow-y:auto}
  .lm-art{margin-bottom:14px;border:1px solid var(--stroke);border-radius:12px;overflow:hidden;background:var(--fill-1)}
  .lm-art-h{display:flex;align-items:center;gap:9px;padding:10px 13px;background:var(--fill-2);border-bottom:1px solid var(--stroke)}
  .lm-jo{font-size:13px;font-weight:800;color:var(--violet,#9d8bff)}
  .lm-jt{font-size:12.5px;font-weight:600;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .lm-src{font-size:10px;color:var(--azure);text-decoration:none;flex:none}
  .lm-src:hover{text-decoration:underline}
  .lm-txt{margin:0;padding:12px 14px;font:inherit;font-size:12.5px;line-height:1.75;color:var(--txt);
    white-space:pre-wrap;word-break:break-word;max-height:none}
  .lm-none{padding:12px 14px;font-size:12px;color:var(--txt-faint);line-height:1.6}
  .lm-foot{padding:12px 22px 18px;border-top:1px solid var(--stroke)}
  .lm-rev{width:100%;padding:11px;border:1px solid var(--stroke);border-radius:11px;cursor:pointer;
    background:var(--accent-tint);color:var(--txt);font:inherit;font-size:12.5px;font-weight:600}
  .lm-rev:hover{background:rgba(123,108,255,.18)}
  /* ── AI 질문 버튼 + 상담 오버레이 ── */
  .askbtn{pointer-events:auto;display:flex;align-items:center;gap:6px;appearance:none;cursor:pointer;
    padding:8px 13px;border-radius:12px;border:1px solid var(--stroke);color:var(--txt-dim);
    background:var(--panel);backdrop-filter:blur(14px);font:700 12px/1 inherit;white-space:nowrap;transition:.16s}
  .askbtn:hover{color:#fff;background:rgba(255,255,255,.08)}
  .askbtn svg{color:var(--mint,#5ce0c4)}
  .askmodal{position:fixed;inset:0;z-index:62;display:none;align-items:flex-end;justify-content:center;
    background:rgba(4,6,14,.6);backdrop-filter:blur(6px);padding:0}
  .askmodal.show{display:flex}
  .ask-card{width:min(720px,100vw);max-height:86vh;position:relative;display:flex;flex-direction:column;
    background:rgba(13,17,33,.86);backdrop-filter:blur(30px) saturate(1.2);color:var(--txt);
    border:1px solid rgba(255,255,255,.1);border-radius:20px 20px 0 0;overflow:hidden;
    box-shadow:0 -20px 80px rgba(0,0,0,.55);animation:askIn .28s cubic-bezier(.2,.8,.2,1)}
  @media(min-width:760px){.askmodal{align-items:center}.ask-card{border-radius:20px}}
  @keyframes askIn{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:none}}
  .ask-head{position:relative;padding:18px 22px 14px;border-bottom:1px solid var(--stroke);
    background:linear-gradient(180deg,color-mix(in srgb,var(--mint,#5ce0c4) 12%,transparent),transparent)}
  .ask-title{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:800}
  .ask-dot{width:8px;height:8px;border-radius:50%;background:var(--mint,#5ce0c4);box-shadow:0 0 10px var(--mint,#5ce0c4)}
  .ask-sub{margin-top:5px;font-size:11px;color:var(--txt-faint)}
  .ask-body{flex:1;overflow-y:auto;padding:18px 22px;scrollbar-width:thin;scrollbar-color:var(--stroke-2) transparent}
  .ask-body::-webkit-scrollbar{width:6px}.ask-body::-webkit-scrollbar-thumb{background:var(--stroke);border-radius:99px}
  .ask-hint{font-size:13px;color:var(--txt-dim);line-height:1.6;margin-bottom:14px}
  .ask-egs{display:flex;flex-wrap:wrap;gap:7px}
  .ask-eg{font-size:12px;padding:8px 12px;border-radius:999px;cursor:pointer;color:var(--txt-dim);
    background:var(--fill-2);border:1px solid var(--stroke);transition:.14s}
  .ask-eg:hover{color:var(--txt);border-color:var(--stroke-2)}
  .ask-turn{margin-bottom:18px}
  .ask-q{font-size:13.5px;font-weight:700;color:var(--txt);padding:10px 14px;border-radius:12px 12px 12px 3px;
    background:color-mix(in srgb,var(--mint,#5ce0c4) 12%,transparent);display:inline-block;max-width:88%;margin-bottom:10px}
  .ask-a{font-size:13.5px;line-height:1.78;color:var(--txt-dim);white-space:pre-wrap;word-break:break-word}
  .ask-a b{color:var(--txt);font-weight:700}
  .ask-a .cite{display:inline-flex;align-items:center;gap:4px;padding:1px 8px;margin:0 2px;border-radius:6px;cursor:pointer;
    font-size:12px;font-weight:600;color:var(--mint,#5ce0c4);background:color-mix(in srgb,var(--mint,#5ce0c4) 14%,transparent);white-space:nowrap}
  .ask-a .cite:hover{background:color-mix(in srgb,var(--mint,#5ce0c4) 24%,transparent)}
  .ask-chips{margin-top:12px;display:flex;flex-wrap:wrap;gap:6px}
  .ask-cur{display:inline-block;width:7px;height:15px;background:var(--mint,#5ce0c4);vertical-align:text-bottom;animation:blink 1s steps(2) infinite}
  @keyframes blink{50%{opacity:0}}
  .ask-form{display:flex;gap:8px;padding:14px 18px;border-top:1px solid var(--stroke);background:rgba(150,170,255,.02)}
  .ask-form input{flex:1;padding:12px 15px;border-radius:13px;border:1px solid var(--stroke-2);background:var(--panel-solid);
    color:var(--txt);font:500 14px/1 inherit;outline:none}
  .ask-form input:focus{border-color:rgba(255,255,255,.35)}
  .ask-form button{width:46px;border:0;border-radius:13px;cursor:pointer;background:#f2f4fa;
    color:#0b0e1c;display:grid;place-items:center;transition:.16s}
  .ask-form button:hover{filter:brightness(1.1)} .ask-form button:disabled{opacity:.4;cursor:default}
  .ask-key{margin-top:8px;padding:12px;border-radius:12px;background:rgba(255,196,107,.07);border:1px solid rgba(255,196,107,.25);font-size:12px;color:var(--txt-dim);line-height:1.6}
  .ask-key input{width:100%;margin-top:8px;padding:9px 11px;border-radius:9px;border:1px solid var(--stroke-2);background:var(--panel-solid);color:var(--txt);font:500 12px/1 inherit}
  .stage{margin-bottom:14px;border:1px solid var(--stroke);border-radius:13px;overflow:hidden;background:rgba(150,170,255,.025)}
  .stage-h{display:flex;align-items:center;gap:10px;padding:11px 14px;background:var(--fill-2);border-bottom:1px solid var(--stroke)}
  .stage-h .gtag{font-size:11px;color:var(--azure);font-weight:700}
  .stage-h .gname{font-size:13px;font-weight:600}
  .stage-h .gcount{margin-left:auto;font-size:10.5px;color:var(--txt-faint);font-variant-numeric:tabular-nums}
  .pnode{padding:13px 15px;border-bottom:1px solid var(--stroke)}
  .pnode:last-child{border-bottom:0}
  .pnode .pn-top{display:flex;align-items:center;gap:9px;margin-bottom:7px;flex-wrap:wrap}
  .pnode .pn-name{font-size:13.5px;font-weight:700}
  .pnode .conf{font-size:10px;color:var(--txt-faint);font-variant-numeric:tabular-nums;flex:none}
  .pnode .lane{font-size:10.5px;color:var(--txt-faint);margin-left:auto}
  .pnode .meta{font-size:12px;color:var(--txt-dim);margin-bottom:8px}
  .pnode .meta b{color:var(--txt);font-weight:600}
  .docs{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px}
  .doc{font-size:10.5px;padding:3px 8px;border-radius:6px;background:rgba(70,185,255,.08);color:var(--azure);border:1px solid var(--azure-tint)}
  .blk{font-size:11.5px;color:var(--amber);margin-bottom:8px;display:flex;gap:6px;align-items:flex-start;line-height:1.5}
  .blk svg{flex:none;margin-top:2px}
  .legal{margin-top:7px;padding:9px 11px;border-radius:9px;background:rgba(123,108,255,.06);border:1px solid var(--accent-tint)}
  .legal .lref{font-size:11px;color:var(--accent-fg);font-weight:700;margin-bottom:3px}
  .legal .ltxt{font-size:11.5px;color:var(--txt-dim);line-height:1.5}
  .legal+.legal{margin-top:6px}
  .neichips{display:flex;flex-wrap:wrap;gap:7px}
  .neichip{font-size:12.5px;padding:7px 12px;border-radius:9px;border:1px solid var(--stroke);background:var(--fill-2);color:var(--txt);cursor:pointer;transition:.16s;display:inline-flex;align-items:center;gap:8px;font-family:inherit}
  .neichip:hover{border-color:var(--stroke-2);background:var(--accent-tint)}
  .neichip .sw{width:7px;height:7px;border-radius:50%}
  .vmeta{font-size:11.5px;color:var(--txt-faint);line-height:1.7}
  .vmeta b{color:var(--txt-dim)}
  .srcrow{display:flex;align-items:center;gap:8px;font-size:11.5px;padding:7px 0;border-bottom:1px solid var(--stroke)}
  .srcrow:last-child{border-bottom:0}
  .srcrow .nm{flex:1;color:var(--txt-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .srcrow .dt{color:var(--txt-faint);font-variant-numeric:tabular-nums;flex:none}
  .srcrow a{color:var(--azure);text-decoration:none;flex:none}
  .dfoot{padding:14px 26px;border-top:1px solid var(--stroke);font-size:11px;color:var(--txt-faint);flex:none;display:flex;justify-content:space-between;align-items:center;gap:10px}
  .dfoot a{color:var(--azure);text-decoration:none}
  .dfoot .dfr{display:flex;align-items:center;gap:12px;flex:none}
  .dshare{appearance:none;border:1px solid var(--stroke);background:var(--fill-2);color:var(--txt-dim);
    font:600 10.5px/1 inherit;padding:6px 10px;border-radius:8px;cursor:pointer;transition:.16s;
    display:inline-flex;align-items:center;gap:5px;flex:none}
  .dshare:hover{color:var(--txt);border-color:var(--stroke-2)}
  .dloading{padding:56px 20px;text-align:center;color:var(--txt-faint);font-size:13px}
  /* ── 스켈레톤 로딩 — 콘텐츠 형태 미리보기 ── */
  .skel{display:flex;flex-direction:column;gap:13px;padding:4px 0}
  .skel .skrow{display:flex;flex-direction:column;gap:9px}
  .skel .sk{border-radius:10px;background:linear-gradient(100deg,var(--fill-1) 30%,var(--fill-2) 50%,var(--fill-1) 70%);
    background-size:200% 100%;animation:skshimmer 1.3s ease-in-out infinite}
  .skel .sk.line{height:13px} .skel .sk.w90{width:90%} .skel .sk.w70{width:70%} .skel .sk.w50{width:50%}
  .skel .sk.title{height:19px;width:52%;margin-bottom:4px}
  .skel .sk.block{height:64px}
  @keyframes skshimmer{to{background-position:-200% 0}}
  #spark{width:100%;height:96px;border:1px solid var(--stroke);border-radius:11px;background:rgba(255,255,255,.02)}
  .instrow{display:flex;align-items:center;gap:9px;padding:10px 13px;background:var(--cell);cursor:pointer;transition:.13s;border:0;color:var(--txt);font:inherit;text-align:left;width:100%}
  .instrow:hover{background:var(--accent-tint)}
  .instrow .sw{width:8px;height:8px;border-radius:50%;flex:none;box-shadow:0 0 7px currentColor}
  .instrow .nm{flex:1;font-size:12.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .instrow .ct{font-size:10.5px;color:var(--txt-faint);flex:none;font-variant-numeric:tabular-nums}

  .toast{position:fixed;z-index:8;left:50%;top:112px;transform:translateX(-50%);padding:10px 18px;border-radius:11px;
    background:rgba(8,11,22,.88);border:1px solid var(--stroke-2);backdrop-filter:blur(10px);font-size:12px;font-weight:650;
    color:#fff;box-shadow:var(--shadow);opacity:0;transition:opacity .3s;pointer-events:none;max-width:calc(100vw - 40px);text-align:center}
  .toast.show{opacity:1}
  #err{position:fixed;z-index:99;inset:0;display:none;place-items:center;text-align:center;padding:30px;color:var(--txt-dim);background:var(--bg);line-height:1.7}

  @media (max-width:900px){
    .topbar{flex-wrap:wrap;gap:8px}
    .brand p{display:none}
    .brand h1 span{display:none}
    .search{order:2;flex:1;width:auto;min-width:110px}
    .viewseg{order:3}
    .catwrap{order:5;max-width:100%;width:100%}
    .ctrlbar{bottom:40px;left:8px;right:8px;transform:none;gap:9px;padding:9px 12px}
    .playwrap{min-width:240px;flex:1}
    .counts{display:none}
    .legend{bottom:12px;font-size:9.5px;gap:8px}
    .legend .hint{display:none}
    .credit{display:none}
    #detail{top:0;right:0;bottom:0;left:0;width:auto;height:auto;box-shadow:none}
    .dhead{padding:20px 20px 16px}
    .dhead h2{font-size:21px}
    .dhead .bignum{top:52px;right:20px}
    .dbody{padding:20px 20px 60px;overflow-x:hidden}
    .dfoot{padding:13px 20px}
    .tip{display:none} /* 터치엔 hover 카드 대신 바로 상세 열림 */
    .searchkey{display:none} /* 터치 기기엔 / 단축키 무의미 */
    .lm-x{width:42px;height:42px;top:12px;right:12px} /* 터치 타깃 44px급 */
  }
  @media (max-width:600px){ .metgrid{grid-template-columns:repeat(2,1fr)} }
  /* ?og=1 — OG 캡처·임베드용 클린 모드 (씬과 행성 명판만) */
  body.og .topbar,body.og .ctrlbar,body.og .legend,body.og .credit,body.og .toast,body.og .gx-actorlabel{display:none!important}

  /* ── 반응형 — 상단 바가 좁은 창에서 잘리지 않게 단계적 축약 ── */
  @media (max-width:1240px){
    .brand p{display:none}
    .brand h1 span{display:none}
    .catwrap{max-width:36vw}
  }
  @media (max-width:1020px){
    .autobtn span,.askbtn span{display:none}
    .autobtn,.askbtn{padding:8px 10px}
    .search{width:min(150px,24vw)}
    .catwrap{max-width:28vw}
    .topbar{gap:8px;padding:10px 12px}
  }
  @media (max-width:780px){
    .catwrap{display:none}
    .search{width:min(130px,30vw)}
  }

  /* ── UI 감추기 모드 (H) — 크롬만 접고 우주는 그대로 ── */
  .topbar,.ctrlbar,.legend,.credit{transition:opacity .4s ease,visibility .4s}
  body.ui-hidden .topbar,body.ui-hidden .ctrlbar,body.ui-hidden .legend,body.ui-hidden .credit{
    opacity:0;visibility:hidden;pointer-events:none}
  #uiRestore{position:fixed;z-index:8;right:14px;top:14px;width:36px;height:36px;border-radius:50%;
    display:grid;place-items:center;background:var(--panel);border:1px solid var(--stroke);color:var(--txt-dim);
    cursor:pointer;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .4s,color .15s;
    backdrop-filter:blur(12px)}
  body.ui-hidden #uiRestore{opacity:.45;visibility:visible;pointer-events:auto}
  body.ui-hidden #uiRestore:hover{opacity:1;color:#fff}

  /* 딥링크 진입 시 전환 생략 */
  #detail.noanim{transition:none !important}
