/* ═══ theme-light.css — 밝은 화면 (v63, 머리 스위치 Light / Dark)
   · 읽는 순서: style.css → theme-glass.css → 이 파일 → tpl.css (index.html <head>)
   · 켜는 법: <html data-theme="light">. index.html <head> 의 인라인 스크립트가 CSS 보다 먼저 저장값(localStorage 'ui.theme' = 'light'·'dark',
     없으면 dark)을 읽어 속성을 달고, 머리 스위치 themeToggle() 이 붙이고 뗀다. 속성이 없으면(어두운 화면) 이 파일은 아무것도 바꾸지 않는다
   · 방식: 색은 되도록 토큰(:root 변수)으로 바꾸고, theme-glass.css · style.css 가 흰 글자 · 흰 반투명 · 어두운 바탕을 직접 적은 곳만
     같은 선택자로 덮는다. 덮는 규칙은 모두 `:where(:root[data-theme="light"]) <원래 선택자>` 모양이다 —
     :where() 는 우선순위를 더하지 않으므로 원래 선택자와 우선순위가 같고, 이 파일이 뒤에 있어서 이긴다.
     그래서 ① theme-glass.css 가 만든 규칙끼리의 관계(.asec th 는 투명 · .badge.cust 는 연두 …)가 그대로 유지되고
     ② 뒤에 읽히는 tpl.css(계약서 A4 흰 종이 — .tpg-body .tb-table td 등 0,2,1 이상)를 이 파일이 절대 이기지 못한다.
     표 칸(td·tr) 규칙은 원래 선택자 그대로라 (0,2,1) 을 넘는 것은 tpl 이 쓰지 않는 클래스(.asec · .txt · table.rp · table.fmgrid ·
     ds-on · pcleave)로 좁힌 것뿐이다. * · !important 는 쓰지 않는다
   · 색 글자는 같은 색 계열의 진한 톤 (glass 의 파스텔은 아이보리 위에서 읽히지 않는다) — 글자 대비 4.5:1 이상 (--text·--dim·색 글자 on --bg·--card·--card2)
   · 새 화면 CSS 는 var(--text|--dim|--line|--card|--card2|--bg|--cyan|--amber|--rose|--ok|--violet|--sky) 로만 색을 쓰면 여기 손대지 않아도 맞는다
   · theme-glass.css 없이도(index.html 에서 glass <link> 한 줄을 뺀 기본 화면 + 밝은 화면) 읽혀야 한다 — style.css 가 어두운 바탕·흰 글자를
     직접 적은 곳은 glass 가 덮어 준다고 기대지 말고 여기서 덮는다 (값은 glass 와 같게 → glass 가 있을 때 모양은 그대로) */

/* ── 토큰 ── */
:root[data-theme="light"]{
  color-scheme:light; --scheme:light;                     /* 날짜 칸 달력 아이콘·스크롤바·체크 상자를 밝은 모양으로 (style.css 의 color-scheme:var(--scheme)) */
  --bg:#faf7f0; --card:#fffdf8; --card2:#f3eee3; --line:#ddd5c4;
  --text:#1d2127; --dim:#4f5663;
  --hi:#14171c; --faint:#5f6672; --row:rgba(90,72,40,.12);   /* v63 style.css 토큰: 제목 글자 · 흐린 글자 · 표 줄 선 */
  --cyan:#0b6b74; --amber:#955800; --rose:#b42b45; --ok:#18753f; --violet:#6b4fb3;
  --gold:#7f5b00;                                         /* v101 (명세 2-A): '(딸린 변경 N)' 금색 — 짙은 금색 (on --card 6.0:1 · --card2 5.3:1) */
  --sky:#0a78b8;                                          /* v78: 계약 상태 '대기' 글씨 — 흰 바탕에서 읽히는 짙은 하늘색 (on --card 4.6:1). 토큰이라 이 블록(:root[data-theme]) — :where() 로 적으면 style.css :root 를 못 이긴다 */
  --red:#b42b45; --accent:#2563eb;                        /* style.css 의 var(--red,…)·var(--accent,…) 기본값(밝은 바탕에서 옅음) 대신 */
  --glass:rgba(255,255,255,.64); --glass-line:rgba(90,72,40,.16);
  --glass-shadow:0 8px 28px rgba(90,70,30,.08),0 1px 2px rgba(90,70,30,.06);
  --ink:#15161a;
  --svg-halo:rgba(255,253,248,.92);                      /* 그래프 끝점 테두리·값 라벨 번짐 (owner.js — 어두운 화면은 검은 반투명) */
  /* 지역 지도: 값이 클수록 진한 초록 (밝은 바탕의 관례). 1~3 은 어두운 글자, 4~5 는 흰 글자 (아래 .rt.l4·.rt.l5) */
  --map1:#dcf2e2; --map2:#b3e2c1; --map3:#7cc795; --map4:#2e8350; --map5:#1b5e36;
  --map-edge:rgba(90,72,40,.34);                         /* v68: 실제 지도의 시군구 경계선 — 옅은 칸·진한 칸 위 모두 보이는 누런 회색 */
  /* 이 파일 안에서만: 흰 반투명 대신 쓰는 누런 회색 반투명 (아이보리 위 옅은 칠·선) */
  --lt-t1:rgba(90,72,40,.05); --lt-t2:rgba(90,72,40,.09); --lt-edge:rgba(90,72,40,.24); --lt-pop:rgba(255,253,248,.96);
  background:#f3efe6;                                     /* theme-glass 의 html{background:#1c1c21} 자리 */
}
:where(:root[data-theme="light"]) body{
  background:
    radial-gradient(1100px 650px at 10% -10%, rgba(255,226,170,.34), transparent 60%),
    radial-gradient(900px 600px at 100% 100%, rgba(170,200,235,.30), transparent 60%),
    linear-gradient(135deg,#fbf8f1 0%,#f6f2e9 45%,#f0ebe0 100%);
  background-attachment:fixed;color:var(--text)}
:where(:root[data-theme="light"]) h1{text-shadow:none}
:where(:root[data-theme="light"]) h1 span{color:var(--dim);opacity:1}

/* ── 유리 패널 (theme-glass.css '유리 패널' 절 — 색은 토큰이 바꾼다) ── */
:where(:root[data-theme="light"]) .tblwrap{background:rgba(255,255,255,.74)}
:where(:root[data-theme="light"]) .f{background:var(--lt-t1);border-color:rgba(90,72,40,.14)}
:where(:root[data-theme="light"]) .err{background:#fbe9eb;border-color:rgba(180,43,69,.35);color:#6e1426}

/* ── 표 ── */
:where(:root[data-theme="light"]) th{background:rgba(245,241,232,.95);color:#2b2f36;border-bottom-color:var(--glass-line)}
:where(:root[data-theme="light"]) td{border-bottom-color:var(--row)}
:where(:root[data-theme="light"]) tbody tr:hover,
:where(:root[data-theme="light"]) .asec tbody tr.click:hover,
:where(:root[data-theme="light"]) .txt tbody tr:hover td{background:rgba(90,72,40,.06)}
:where(:root[data-theme="light"]) .hist li,:where(:root[data-theme="light"]) .actlist li{border-bottom-color:var(--row)}
:where(:root[data-theme="light"]) tr.grp td{background:var(--lt-t2);color:var(--text)}
:where(:root[data-theme="light"]) .badge{border-color:rgba(90,72,40,.26);color:var(--text);background:var(--lt-t1)}
/* .badge.cust·rev·exp·no·p = theme-glass 와 같은 파스텔 바탕 + 진한 글자 (밝은 바탕에서도 읽힌다).
   glass 가 없으면 style.css 의 어두운 바탕(#12241c · #231b10 · #241216)이 남아 진한 글자가 2.8:1 이 되므로 여기서도 적는다 */
:where(:root[data-theme="light"]) .badge.cust{color:#0b3a1f;background:#9ff2b8;border-color:#9ff2b8}
:where(:root[data-theme="light"]) .badge.rev{color:#4a2e00;background:#ffd57a;border-color:#ffd57a}
:where(:root[data-theme="light"]) .badge.exp,:where(:root[data-theme="light"]) .badge.no,:where(:root[data-theme="light"]) .badge.p{
  color:#4a0c18;background:#ffa3b1;border-color:#ffa3b1}
/* v78: '대기'(DB 등록완료) — 밝은 화면에서도 바탕을 칠하지 않고 글씨가 짙은 하늘색 (theme-glass 의 옅은 하늘색 글씨를 덮는다) */
:where(:root[data-theme="light"]) .badge.sky{color:var(--sky);background:transparent;border-color:#9fd3f7}
:where(:root[data-theme="light"]) .dd-sky,:where(:root[data-theme="light"]) .st-sky,:where(:root[data-theme="light"]) .warnbox .st-sky{color:var(--sky)}
/* 경고 상자 (#setup 의 'secret · service_role 키' 안내 등): style.css 의 #221417 바탕 대신 밝은 유리 (glass 와 같은 값) */
:where(:root[data-theme="light"]) .warnbox{background:var(--glass)}
:where(:root[data-theme="light"]) .pill{background:#c9344f;color:#fff}
:where(:root[data-theme="light"]) .dd.dim,:where(:root[data-theme="light"]) .f .v.na,:where(:root[data-theme="light"]) .nofile,
:where(:root[data-theme="light"]) .owner.none,:where(:root[data-theme="light"]) .hint{color:var(--faint)}
:where(:root[data-theme="light"]) .tile .s{color:var(--faint)}
:where(:root[data-theme="light"]) .tile .v{text-shadow:none}

/* ── 입력 (theme-glass '입력' 절과 같은 선택자) ── */
:where(:root[data-theme="light"]) select,:where(:root[data-theme="light"]) input[type=text],:where(:root[data-theme="light"]) input[type=number],
:where(:root[data-theme="light"]) input[type=date],:where(:root[data-theme="light"]) input[type=month],:where(:root[data-theme="light"]) input[type=email],
:where(:root[data-theme="light"]) input[type=password],:where(:root[data-theme="light"]) textarea,
:where(:root[data-theme="light"]) #setup input,:where(:root[data-theme="light"]) #login input,:where(:root[data-theme="light"]) #signup input,
:where(:root[data-theme="light"]) #actModal input:not([type=checkbox]),:where(:root[data-theme="light"]) #actModal select,:where(:root[data-theme="light"]) #actModal textarea,
:where(:root[data-theme="light"]) #ctModal input:not([type=checkbox]):not([type=file]),:where(:root[data-theme="light"]) #ctModal select,
:where(:root[data-theme="light"]) #crModal input:not([type=checkbox]):not([type=file]),:where(:root[data-theme="light"]) #crModal select,:where(:root[data-theme="light"]) #crModal textarea,
:where(:root[data-theme="light"]) #txModal input:not([type=checkbox]),:where(:root[data-theme="light"]) #txModal select,:where(:root[data-theme="light"]) #txModal textarea,
:where(:root[data-theme="light"]) #askModal textarea,:where(:root[data-theme="light"]) .asec select,:where(:root[data-theme="light"]) .asec input[type=text]{
  background:rgba(255,255,255,.92);border-color:rgba(90,72,40,.28);color:var(--text)}
:where(:root[data-theme="light"]) ::placeholder{color:#767c86}
:where(:root[data-theme="light"]) select:focus,:where(:root[data-theme="light"]) input:focus,:where(:root[data-theme="light"]) textarea:focus{
  border-color:var(--cyan);box-shadow:0 0 0 3px rgba(11,107,116,.16)}
:where(:root[data-theme="light"]) #askModal input[type=file],:where(:root[data-theme="light"]) #ctModal input[type=file],:where(:root[data-theme="light"]) #crModal input[type=file]{
  background:rgba(255,255,255,.7);border-color:rgba(90,72,40,.36);color:var(--text)}
:where(:root[data-theme="light"]) .chk input{accent-color:var(--cyan)}
:where(:root[data-theme="light"]) .fsec .fgrid input,:where(:root[data-theme="light"]) .fsec .fgrid select,:where(:root[data-theme="light"]) .fsec>input{background:#fff}
:where(:root[data-theme="light"]) .months label{background:rgba(255,255,255,.7);border-color:rgba(90,72,40,.24);color:var(--text)}
:where(:root[data-theme="light"]) .cxlist .cxi{background:rgba(255,255,255,.7);border-color:rgba(90,72,40,.24);color:var(--text)}

/* ── 버튼 ── 밝은 바탕에서는 주 버튼을 짙게 (어두운 화면의 흰 버튼과 짝) */
:where(:root[data-theme="light"]) button.go{background:linear-gradient(135deg,#2c3542,#1d2127);color:#fff;box-shadow:0 4px 14px rgba(40,30,10,.16)}
:where(:root[data-theme="light"]) button.go:hover{box-shadow:0 6px 18px rgba(40,30,10,.24)}
:where(:root[data-theme="light"]) button.ghost,:where(:root[data-theme="light"]) button.mini,:where(:root[data-theme="light"]) button.pg,
:where(:root[data-theme="light"]) .fchip,:where(:root[data-theme="light"]) .addfile,:where(:root[data-theme="light"]) .asec .cnt{
  background:rgba(255,255,255,.72);border-color:rgba(90,72,40,.24);color:var(--text)}
:where(:root[data-theme="light"]) .addfile{color:var(--cyan)}
:where(:root[data-theme="light"]) button.mini.ok{color:var(--ok);border-color:rgba(24,117,63,.42)}
:where(:root[data-theme="light"]) button.mini.ok:hover{background:rgba(24,117,63,.09)}
:where(:root[data-theme="light"]) button.mini.no{color:var(--rose);border-color:rgba(180,43,69,.42)}
:where(:root[data-theme="light"]) button.mini.no:hover{background:rgba(180,43,69,.08)}
:where(:root[data-theme="light"]) button.ghost:hover,:where(:root[data-theme="light"]) button.mini:hover,
:where(:root[data-theme="light"]) button.pg:hover:not(:disabled):not(.on){background:#fff;color:var(--text);border-color:rgba(90,72,40,.45)}
:where(:root[data-theme="light"]) button.pg.on{background:var(--text);color:#fff;border-color:var(--text)}
:where(:root[data-theme="light"]) .fchip:hover,:where(:root[data-theme="light"]) .addfile:hover{border-color:var(--cyan);background:#fff}
:where(:root[data-theme="light"]) .fchip .th{background:#ebe5d8}
:where(:root[data-theme="light"]) .x{color:var(--dim)}
:where(:root[data-theme="light"]) .x:hover{color:var(--text)}

/* ── 탭 · 머리 · 알림 종 ── */
:where(:root[data-theme="light"]) .tabs{background:rgba(255,255,255,.58)}
:where(:root[data-theme="light"]) button.tab{color:var(--dim)}
:where(:root[data-theme="light"]) button.tab:hover{color:var(--text);background:var(--lt-t1)}
:where(:root[data-theme="light"]) button.tab.on{background:#fff;color:var(--text);box-shadow:0 2px 8px rgba(80,60,20,.12)}
:where(:root[data-theme="light"]) header{border-bottom-color:var(--glass-line)}
:where(:root[data-theme="light"]) button.bell{background:rgba(255,255,255,.72);border-color:rgba(90,72,40,.24)}
:where(:root[data-theme="light"]) .bellpanel{background:var(--lt-pop);border-color:var(--glass-line);box-shadow:0 12px 32px rgba(60,45,20,.16)}
:where(:root[data-theme="light"]) .bellpanel .row{border-top-color:var(--row)}

/* ── 팝업 · 뷰어 (theme-glass 의 어두운 반투명 → 밝은 반투명) ── */
:where(:root[data-theme="light"]) .mask{background:rgba(60,50,30,.28)}
:where(:root[data-theme="light"]) .modal{background:rgba(255,253,248,.93);border-color:var(--glass-line);box-shadow:0 24px 64px rgba(60,45,20,.18)}
:where(:root[data-theme="light"]) .mhead{border-bottom-color:var(--glass-line)}
:where(:root[data-theme="light"]) .sec h4{color:var(--cyan);text-shadow:none}
:where(:root[data-theme="light"]) .fv{background:rgba(255,253,248,.93);border-color:var(--glass-line)}
:where(:root[data-theme="light"]) .fvhead{border-bottom-color:var(--glass-line)}
:where(:root[data-theme="light"]) .fvbody{background:#e6e1d6}
:where(:root[data-theme="light"]) .oppbox .st{background:rgba(11,107,116,.10);color:var(--cyan)}
:where(:root[data-theme="light"]) .sqlpeek pre{background:var(--lt-t1);border-color:var(--glass-line)}
:where(:root[data-theme="light"]) .sqlpeek code{color:#2b3340}
:where(:root[data-theme="light"]) .kw{color:#a3285f}
:where(:root[data-theme="light"]) .bar .t{background:var(--lt-t2)}
:where(:root[data-theme="light"]) .bar .f{background:var(--cyan)}
:where(:root[data-theme="light"]) .bar .f.g{background:var(--ok)}
:where(:root[data-theme="light"]) .bar .f.a{background:var(--amber)}
:where(:root[data-theme="light"]) .sum b{color:var(--text)}
:where(:root[data-theme="light"]) .who{color:var(--text)}
:where(:root[data-theme="light"]) .loginfoot{border-top-color:var(--glass-line)}
:where(:root[data-theme="light"]) .loginfoot a,:where(:root[data-theme="light"]) .owner a,:where(:root[data-theme="light"]) .txt td a{
  color:var(--text);text-decoration-color:rgba(29,33,39,.35)}
:where(:root[data-theme="light"]) .cm{color:var(--faint)}
@media (max-width:700px){
  :where(:root[data-theme="light"]) .chk{background:rgba(255,255,255,.62);border-color:rgba(90,72,40,.2)}
}
/* 유리 효과를 못 그리는 오래된 브라우저 */
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  :where(:root[data-theme="light"]) .filters,:where(:root[data-theme="light"]) .tblwrap,:where(:root[data-theme="light"]) .asec,
  :where(:root[data-theme="light"]) .tile,:where(:root[data-theme="light"]) .modal,:where(:root[data-theme="light"]) .fv,
  :where(:root[data-theme="light"]) #setup,:where(:root[data-theme="light"]) #login,:where(:root[data-theme="light"]) #signup,
  :where(:root[data-theme="light"]) .tabs{background:rgba(255,253,248,.95)}
}

/* ── 계정 칩 · 메뉴 · 목록 표시 (theme-glass v18 절) ── */
:where(:root[data-theme="light"]) .uchip{background:rgba(255,255,255,.72);border-color:rgba(90,72,40,.22);color:var(--text)}
:where(:root[data-theme="light"]) .uname b{color:var(--text)}
:where(:root[data-theme="light"]) .uname span,:where(:root[data-theme="light"]) .caret{color:var(--dim)}
:where(:root[data-theme="light"]) .umenu{background:var(--lt-pop);border-color:var(--glass-line);box-shadow:0 12px 30px rgba(60,45,20,.16)}
:where(:root[data-theme="light"]) .umenu .uhead{border-bottom-color:var(--row)}
:where(:root[data-theme="light"]) .uitem:hover{background:var(--lt-t2)}
:where(:root[data-theme="light"]) .avatar{color:#fff}     /* 바탕 = --cyan (밝은 화면에서는 진한 청록) */
:where(:root[data-theme="light"]) .badge.non{color:var(--dim);background:var(--lt-t1);border-color:rgba(90,72,40,.2)}
:where(:root[data-theme="light"]) .dd-g{color:var(--ok)}
:where(:root[data-theme="light"]) .dd-x{color:var(--faint)}
/* v65: 끝난 서비스 태그(회색) · 변경이력 머리 줄 (theme-glass 의 흐린 흰색 대신) */
:where(:root[data-theme="light"]) .pgone{color:var(--faint)}
:where(:root[data-theme="light"]) .hist li.hh span,:where(:root[data-theme="light"]) .hist li.hh .cx{color:var(--faint)}
:where(:root[data-theme="light"]) sup.rn{color:var(--amber)}
:where(:root[data-theme="light"]) .owtip{background:var(--lt-pop);box-shadow:0 6px 20px rgba(60,45,20,.16)}
:where(:root[data-theme="light"]) tbody.ds-on>tr.ds-drag>td{background:rgba(255,253,248,.97)}
:where(:root[data-theme="light"]) tbody.ds-on>tr.ds-drag{box-shadow:0 10px 26px rgba(60,45,20,.22),0 0 0 1px var(--cyan)}
/* 지역 지도: 1~3 단계 칸은 어두운 글자(style.css .rt · 1단계는 style.css 가 흰 글자라 여기서 --ink, glass 와 같은 값), 4~5 단계는 흰 글자 */
:where(:root[data-theme="light"]) .rt.l1{color:var(--ink)}
:where(:root[data-theme="light"]) .rt.l4,:where(:root[data-theme="light"]) .rt.l5{color:#fff}
:where(:root[data-theme="light"]) .rt .rtt{background:var(--lt-pop);border-color:var(--glass-line);box-shadow:0 6px 20px rgba(60,45,20,.16)}
:where(:root[data-theme="light"]) .rrow:hover{background:var(--lt-t1)}

/* ── style.css 가 흰 반투명·어두운 바탕을 직접 적은 곳 (theme-glass 가 덮지 않는 곳) ── */
:where(:root[data-theme="light"]) .rtable::-webkit-scrollbar-thumb{background:rgba(60,50,30,.28)}
:where(:root[data-theme="light"]) .rtable::-webkit-scrollbar-track{background:rgba(60,50,30,.06)}
:where(:root[data-theme="light"]) table.rp tr.rgadd td{background:var(--lt-t1)}
:where(:root[data-theme="light"]) table.rp .cnt{background:var(--lt-t2)}
:where(:root[data-theme="light"]) .lg .trk,:where(:root[data-theme="light"]) .fnl .trk{background:var(--lt-t2)}
:where(:root[data-theme="light"]) .tl .bar{background:rgba(90,72,40,.07)}
:where(:root[data-theme="light"]) table.fmgrid td.bg{background:var(--lt-t2)}
:where(:root[data-theme="light"]) .rqsteps .st.wd{color:var(--dim)}
:where(:root[data-theme="light"]) tbody tr.pcleave,:where(:root[data-theme="light"]) tbody tr.pcleave:hover{background:#fbe5e8}   /* 관리자 '회원정보 변경' 표의 탈퇴 신청 줄 (admin.js) */
/* 정정 = 주황 글자: 어두운 화면의 #ff8a1f 는 밝은 바탕에서 2:1 이라 같은 주황의 진한 톤 */
:where(:root[data-theme="light"]) .badge.fix{color:#a64b00;border-color:#a64b00}
:where(:root[data-theme="light"]) .st-fix,:where(:root[data-theme="light"]) .ctr .st-fix b{color:#a64b00}
/* 점검 모드 (v62): 빨간 안내 글자 · 덮개 */
:where(:root[data-theme="light"]) .mtitle{color:#c62828}
:where(:root[data-theme="light"]) .mnote{border-left-color:#c62828;background:rgba(198,40,40,.07)}
:where(:root[data-theme="light"]) .mask.maintmask{background:rgba(236,231,220,.94)}

/* ── 머리 '화면 밝기' 스위치 (모양은 style.css v63 theme 블록) — 밝은 화면의 손잡이 ── */
:where(:root[data-theme="light"]) .thsw{background:rgba(255,255,255,.6);border-color:rgba(90,72,40,.22)}
:where(:root[data-theme="light"]) .thsw-k{background:linear-gradient(160deg,#fff,rgba(255,255,255,.72));border-color:rgba(90,72,40,.18);
  box-shadow:inset 0 1px 0 #fff,0 2px 8px rgba(80,60,20,.18)}

/* v67 W1 두 줄 메뉴 — 윗줄 묶음 (아랫줄은 위 .tabs 흰 알약 그대로) */
:where(:root[data-theme="light"]) button.navg{color:var(--dim)}
:where(:root[data-theme="light"]) button.navg:hover{color:var(--text);background:var(--lt-t1)}
:where(:root[data-theme="light"]) button.navg.on{color:var(--text);background:#fff;border-color:var(--glass-line);box-shadow:0 2px 8px rgba(80,60,20,.12)}
/* ═══ v67 W3 updates · gsw ═══ 머리 Updates 버튼·목록 · 유리 밀어 켜기 스위치(흰 유리 손잡이) · 기능 공개 적용 막대 */
:where(:root[data-theme="light"]) button.updbtn{background:rgba(255,255,255,.72);border-color:rgba(90,72,40,.24)}
:where(:root[data-theme="light"]) .updpanel{background:var(--lt-pop);border-color:var(--glass-line);box-shadow:0 12px 32px rgba(60,45,20,.16)}
:where(:root[data-theme="light"]) .updrow,:where(:root[data-theme="light"]) .updpanel .updfoot{border-top-color:var(--row)}
:where(:root[data-theme="light"]) .gsw{background:rgba(255,255,255,.6);border-color:rgba(90,72,40,.22)}
:where(:root[data-theme="light"]) .gsw-k{background:linear-gradient(160deg,#fff,rgba(255,255,255,.72));border-color:rgba(90,72,40,.18);
  box-shadow:inset 0 1px 0 #fff,0 2px 8px rgba(80,60,20,.18)}
:where(:root[data-theme="light"]) .gsw[aria-checked="true"] .gsw-k{background:linear-gradient(160deg,#d7f3ef,#fff)}
:where(:root[data-theme="light"]) .ftapbar{background:var(--lt-pop);box-shadow:0 8px 24px rgba(60,45,20,.16)}
:where(:root[data-theme="light"]) #boxFeatures .ftrow.staged{background:rgba(166,75,0,.05)}
/* ═══ /v67 W3 ═══ */
/* ═══ v68 대시보드 ═══ 만료 임박 머리줄(theme-glass 의 짙은 불투명 대신 밝은 불투명) · 지도 말풍선 · 고른 목록 줄 */
:where(:root[data-theme="light"]) #dExpiring thead th{background:#f5f1e8}
:where(:root[data-theme="light"]) .rmtip{background:var(--lt-pop);border-color:var(--glass-line);box-shadow:0 6px 20px rgba(60,45,20,.16)}
:where(:root[data-theme="light"]) .rrow.on{background:var(--lt-t2)}
/* ═══ /v68 ═══ */
/* ═══ v79 ═══ ⓘ 설명 상자 (theme-glass 의 짙은 불투명 대신 밝은 불투명) · 결과 줄 초점 */
:where(:root[data-theme="light"]) .itip-pop{background:var(--lt-pop);border-color:var(--glass-line);box-shadow:0 12px 30px rgba(60,45,20,.18)}
:where(:root[data-theme="light"]) tbody tr.rowl:focus-within{background:var(--lt-t2)}
/* ═══ /v79 ═══ */
/* ═══ v80 ═══ 보고서 단지 묶음 색 (style.css --rp-hov) — 토큰이라 :root[data-theme] 블록 (:where() 로 적으면 style.css · theme-glass 의 :root 를 못 이긴다) */
:root[data-theme="light"]{--rp-hov:rgba(10,120,184,.09)}
/* ═══ /v80 ═══ */
/* ═══ v82 ═══ 오이패스 현황 — 밝은 화면은 시트 색 그대로 (설치완료 #00FF00 · 해지·마이타운 #FF0000 · 노랑 #FFFF00 · 머리 #F2F2F2 · 검은 글자).
   토큰이라 :root[data-theme] 블록 (:where() 로 적으면 style.css · theme-glass 의 :root 를 못 이긴다) */
:root[data-theme="light"]{--oip-done-bg:#00ff00;--oip-stop-bg:#ff0000;--oip-open-bg:#ffff00;--oip-open-bar:#ffff00;--oip-head-bg:#f2f2f2;--oip-head-ink:#000;
  --oip-cell-bg:#fffdf8;--oip-pop-bg:#fffdf8;--oip-ink:#000;--oip-auto-ink:#4f5663}
:where(:root[data-theme="light"]) .oiped{box-shadow:0 8px 24px rgba(60,45,20,.18)}
/* ═══ /v82 ═══ */
/* ═══ v91 검토 고침 — 승인 대기함 처리 결과 글(#aprFlash — 화면 아래에 떠 있음): theme-glass.css 의 짙은 유리 바탕(rgba(40,41,48,.9))이 밝은 화면에도 걸려
   진초록 글자(--ok)가 1.9:1 로 읽히지 않았다 → 밝은 카드 바탕 (우선순위 = glass 규칙과 같음 · 이 파일이 뒤라 이김) ═══ */
:where(:root[data-theme="light"]) #aprFlash .okflash{background:color-mix(in srgb,var(--ok) 10%,var(--card));-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:0 8px 24px rgba(60,45,20,.18)}
/* v93 검토 고침: theme-glass.css 의 빨간 글 짙은 유리(#aprFlash .okflash.bad)가 밝은 화면에도 걸리지 않게 — style.css 와 같은 밝은 장밋빛 */
:where(:root[data-theme="light"]) #aprFlash .okflash.bad{background:color-mix(in srgb,var(--rose) 12%,var(--card))}
