/* 30-A 디자인사양 4~6절 / 28 mockup/app.css. 기존 기본·밝게의 배치는 보존한다. */
.gn-bgstack{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;background:var(--bg0)}
html[data-theme=base] .gn-bgstack,html.gn-dashboard .gn-bgstack{display:none}
.gn-bgstack .bgl{position:absolute;inset:-3%;background-size:cover;background-position:center;opacity:0;transition:opacity var(--d-photo) var(--ez-io)}
.gn-bgstack .bgl.on{opacity:1}
.gn-bgstack .bgh{position:absolute;inset:0;background-size:cover;background-position:center 35%;mask:linear-gradient(180deg,#000 0,#000 70px,rgba(0,0,0,.55) 140px,transparent 260px)}
.gn-bgstack .bgtint{position:absolute;inset:0;background:radial-gradient(90% 80% at 72% 18%,var(--acc),transparent 70%),radial-gradient(70% 70% at 10% 95%,var(--acc2),transparent 70%);mix-blend-mode:soft-light;opacity:.55}
.gn-bgstack .bgscrim{position:absolute;inset:0;background:rgba(var(--scrim0),var(--scrim))}
.gn-bgstack .bgvig{position:absolute;inset:0;background:radial-gradient(120% 90% at 50% 50%,rgba(3,10,28,0) 35%,rgba(3,10,28,.55) 75%,rgba(2,7,20,.92) 100%),linear-gradient(180deg,rgba(3,10,28,.7),transparent 16%,transparent 72%,rgba(3,10,28,.78))}
.gn-bgstack .bgmotif{position:absolute;inset:0;background:var(--acc);opacity:var(--motif-op);mask:var(--motif) 0 0/var(--motif-size) repeat}
.gn-bgstack .bgfade{position:absolute;inset:0;mask:radial-gradient(75% 70% at 60% 45%,#000,transparent)}
html[data-tone=light] .gn-bgstack .bgtint{mix-blend-mode:multiply;opacity:.10}
html[data-tone=light] .gn-bgstack .bgvig{background:radial-gradient(120% 90% at 50% 50%,transparent 35%,rgba(232,242,250,.45) 75%,rgba(232,242,250,.85))}
html[data-photo=off] .gn-bgstack .bgl,html:is([data-kind=map],[data-kind=viewer]) .gn-bgstack :is(.bgl,.bgtint,.bgmotif){display:none}
html[data-theme=board]:is([data-kind=dash],[data-sub=card])[data-motion=full]:not(.still) .gn-bgstack .bgl.on{animation:gn-photo 34s ease-in-out infinite alternate}
@keyframes gn-photo{from{transform:scale(1.02)}to{transform:scale(1.12) translate3d(-1.4%,-1%,0)}}
.gn-photo-credit{position:fixed;bottom:3px;right:8px;z-index:60;padding:1px 7px;border-radius:4px;font-size:11px;color:var(--ink2);background:rgba(var(--glass2),.72);text-decoration:none}
html[data-theme=base] .gn-photo-credit,html[data-photo=off] .gn-photo-credit,html.gn-dashboard .gn-photo-credit,html:is([data-kind=map],[data-kind=viewer]) .gn-photo-credit{display:none}
html[data-theme=board] body{background:var(--bg0);color:var(--ink1)}
html[data-theme=board] #app{position:relative;background:transparent}
html[data-theme=board] :is(.work-content,#main,.work-page){background:transparent}
html[data-theme=board] #sidebar{background:var(--side-bg);color:var(--side-ink);backdrop-filter:blur(22px) saturate(1.3);box-shadow:inset -1px 0 0 var(--line)}
html[data-theme=board] #sidebar :is(.brand-title,.ui-nav-h,.ui-nav-ht,.ui-tree-h,#identity){color:var(--side-ink)}
html[data-theme=board] #sidebar :is(.brand-sub,.side-heading,.side-foot small,.work-version){color:var(--side-ink2)}
html[data-theme=board] #sidebar nav a{color:var(--side-ink)}
html[data-theme=board] #sidebar nav a:is(:hover,.active){background:var(--side-on);color:var(--ink1)}
html[data-theme=board] #sidebar nav a.active{box-shadow:inset 3px 0 var(--acc)}
html[data-theme=board] #sidebar .brand-logo{background:#fff}
html[data-theme=board] :is(.card,.surface,.work-stat,.work-table-wrap,.ui-set-block,.question,.survey-choice,.an-panel,.dm-card){position:relative;background:var(--panel);border-color:var(--line);border-radius:var(--r-pn);box-shadow:var(--shadow),inset 0 1px var(--ghi);backdrop-filter:var(--glass-fx);transition:backdrop-filter .5s var(--ez-out)}
html[data-theme=board] :is(.card,.surface,.work-stat,.ui-set-block)::before{content:'';position:absolute;inset:0;pointer-events:none;border-radius:inherit;padding:1px;background:linear-gradient(135deg,var(--acc),var(--line2) 14%,var(--line) 40%,var(--line) 62%,var(--line2) 86%,var(--acc2));mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);opacity:.8}
html[data-theme=board] :is(.section-heading h2,.surface>h2,.ui-set-block>h2)::before{content:'';display:inline-block;vertical-align:middle;width:4px;height:16px;margin-right:8px;border-radius:2px;background:linear-gradient(var(--acc),var(--acc2));box-shadow:0 0 10px var(--acc)}
html[data-theme=board] :is(table,.work-table){color:var(--ink1)}
html[data-theme=board] :is(table,.work-table) th{background:rgba(var(--glass2),.96);color:var(--ink2);border-color:var(--line2)}
html[data-theme=board] :is(table,.work-table) td{border-color:var(--hair)}
html[data-theme=board] :is(table,.work-table) tbody tr:nth-child(even){background:var(--zebra)}
html[data-theme=board] :is(table,.work-table) tbody tr:hover{background:var(--hover)}
html:is([data-theme=board],[data-tone=dark]) :is(input:not([type=radio]):not([type=checkbox]),select,textarea){background:var(--input-bg);border-color:var(--input-line);color:var(--ink1)}
html:is([data-theme=board],[data-tone=dark]) :is(input,textarea)::placeholder{color:var(--ink4);opacity:1}
html[data-theme=board] .btn{color:var(--ink1);background:var(--panel2);border-color:var(--line2);box-shadow:none}
html[data-theme=board] .btn:hover{background:var(--hover)}
html[data-theme=board] .btn.pri{background:linear-gradient(180deg,var(--acc),color-mix(in srgb,var(--acc) 72%,var(--acc2)));color:var(--acc-on);border-color:var(--acc);box-shadow:0 6px 18px -6px var(--acc)}
html[data-theme=board][data-tone=light] .btn.pri{background:var(--acc-ink);border-color:var(--acc-ink)}
html[data-theme=board] .btn.acc{background:var(--ok);color:var(--acc-on)}
html[data-theme=board] :is(.badge.red,.badge.orange,.badge.green,.badge.blue){background:color-mix(in srgb,var(--badge-color) 18%,transparent);color:var(--badge-ink);border-color:color-mix(in srgb,var(--badge-color) 45%,transparent)}
.badge.red{--badge-color:var(--red);--badge-ink:var(--red-ink)}.badge.orange{--badge-color:var(--amb);--badge-ink:var(--amb-ink)}.badge.green{--badge-color:var(--ok);--badge-ink:var(--ok-ink)}.badge.blue{--badge-color:var(--blu);--badge-ink:var(--blu-ink)}
html[data-theme=board] :is(.modal,.modal-card,.dialog){background:var(--gsolid);color:var(--ink1);border-color:var(--line2)}
html[data-glass-blur="0"] :is(.card,.surface,.work-stat,.work-table-wrap,.ui-set-block,.question,.survey-choice,.an-panel,.dm-card,#sidebar,.gn-theme-head){backdrop-filter:none!important}
.glass-off{backdrop-filter:none!important;transition:none!important}
.gn-theme-head{height:var(--head-h);flex:none;display:flex;align-items:center;gap:14px;padding:0 24px;background:var(--head-bg);color:var(--ink1);border-bottom:1px solid var(--line);position:relative;z-index:40}
html[data-theme=board] .gn-theme-head{backdrop-filter:blur(16px) saturate(1.3)}
.gn-theme-head::before{content:'';position:absolute;inset:0;background:var(--acc);opacity:calc(var(--motif-op)*1.6);mask:var(--motif) 0 0/var(--motif-size) repeat;pointer-events:none}
.gn-theme-head::after{content:'';position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,transparent,var(--line2) 10%,var(--acc) 50%,var(--line2) 90%,transparent)}
.gn-theme-title{font-size:16px;font-weight:760;position:relative;white-space:nowrap}
.gn-theme-quick{display:flex;align-items:center;gap:8px;margin-left:auto;position:relative}
.gn-theme-seg{display:flex;gap:2px;padding:3px;border:1px solid var(--line2);border-radius:9px}
.gn-theme-seg button{font:650 13.5px var(--font);border:0;border-radius:6px;background:transparent;color:var(--ink3);padding:4px 12px;cursor:pointer;min-height:28px}
.gn-theme-seg button.on{background:var(--accs);color:var(--ink1);box-shadow:inset 0 0 0 1px var(--line2)}
.gn-catchip{font-size:12.5px;font-weight:700;display:flex;align-items:center;gap:7px;white-space:nowrap}
.gn-catchip i{width:9px;height:9px;border-radius:50%;background:var(--acc);box-shadow:0 0 8px var(--acc)}
.gn-sweep{position:absolute;left:0;right:0;bottom:0;height:2px;pointer-events:none;background:linear-gradient(90deg,transparent,var(--acc) 40%,#fff 50%,var(--acc) 60%,transparent);opacity:0}
.gn-sweep.go{animation:gn-sweep .9s var(--ez-cat)}
@keyframes gn-sweep{0%{opacity:0;transform:translateX(-60%)}20%{opacity:1}100%{opacity:0;transform:translateX(60%)}}
/* 기본·밝게: 원래 본문 좌표를 유지. 머리 영역에 포인터/초점을 두면 빠른 전환이 열린다. */
html[data-theme=base][data-tone=light] .gn-theme-head{position:absolute;top:0;right:0;height:32px;padding:0 12px;opacity:0;background:var(--panel)}
html[data-theme=base][data-tone=light] .gn-theme-head:is(:hover,:focus-within){opacity:1}
html[data-theme=base] .gn-catchip,html[data-theme=base][data-tone=light] .gn-theme-title{display:none}
html[data-theme=base][data-tone=light] .gn-theme-head::after{display:none}
.gn-theme-settings .gn-theme-previews{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0}
.gn-theme-preview{display:block;padding:12px;border:1px solid var(--line2);border-radius:10px;background:var(--panel2);color:var(--ink1);cursor:pointer;font:inherit;text-align:left}
.gn-theme-preview.on{outline:2px solid var(--acc);outline-offset:1px}
/* 30-D: 미리보기 = 작은 화면 모형(메뉴 · 머리 줄 + 강조 빛선 · 패널 3장). 현황판은 바탕 사진 + 유리 판(28 목업 설정 화면). */
.gn-theme-preview .pv{position:relative;overflow:hidden;height:96px;border-radius:7px;margin-bottom:9px;display:grid;grid-template-columns:22% 1fr;grid-template-rows:17px 1fr;gap:6px;padding:8px;background:var(--pvimg,none) center/cover,var(--pvbg);color:var(--pvfg);box-shadow:inset 0 0 0 1px var(--pvln,rgba(127,127,127,.25))}
.gn-theme-preview .pv i{grid-row:1/3;border-radius:4px;background:var(--pvside,currentColor);opacity:var(--pvsideop,.18)}
.gn-theme-preview .pv span{font-size:12px;font-weight:800;line-height:15px;padding:0 5px;border-radius:3px 3px 0 0;white-space:nowrap;overflow:hidden;background:var(--pvhd,transparent);border-bottom:1px solid var(--pvac,currentColor)}
.gn-theme-preview .pv::after{content:'';position:absolute;left:calc(22% + 14px);right:8px;top:32px;bottom:8px;background:linear-gradient(var(--pvpn),var(--pvpn)) 0 0/48% 44% no-repeat,linear-gradient(var(--pvpn),var(--pvpn)) 100% 0/48% 44% no-repeat,linear-gradient(var(--pvpn),var(--pvpn)) 0 100%/100% 48% no-repeat,linear-gradient(var(--pvac),var(--pvac)) 4px 5px/2px 8px no-repeat,linear-gradient(var(--pvac),var(--pvac)) calc(52% + 4px) 5px/2px 8px no-repeat,linear-gradient(var(--pvac),var(--pvac)) 4px calc(52% + 5px)/2px 8px no-repeat}
.gn-theme-preview[data-theme-pick=base][data-tone-pick=light] .pv{--pvpn:#fff;--pvac:#2a78d6;--pvside:#0f2f5c;--pvsideop:.9;--pvln:#dbe2eb}
.gn-theme-preview[data-theme-pick=base][data-tone-pick=dark] .pv{--pvpn:#151d29;--pvac:#7fb0ff;--pvside:#151d29;--pvsideop:1;--pvln:#2a3546}
.gn-theme-preview[data-theme-pick=board][data-tone-pick=dark] .pv{--pvimg:linear-gradient(rgba(4,12,31,.35),rgba(4,12,31,.55)),url(../assets/theme/cat_now_dark_soft.webp);--pvpn:rgba(14,36,78,.72);--pvhd:rgba(6,18,44,.82);--pvac:#45d3ff;--pvside:rgba(6,18,44,.8);--pvsideop:1;--pvln:rgba(140,196,255,.3)}
.gn-theme-preview[data-theme-pick=board][data-tone-pick=light] .pv{--pvimg:linear-gradient(rgba(228,238,247,.25),rgba(228,238,247,.45)),url(../assets/theme/cat_now_light_soft.webp);--pvpn:rgba(255,255,255,.8);--pvhd:rgba(255,255,255,.9);--pvac:#0a8fc4;--pvside:rgba(255,255,255,.7);--pvsideop:1;--pvln:rgba(30,80,140,.28)}
.gn-theme-settings .ui-row{flex-wrap:wrap;gap:12px}
.gn-theme-settings .gn-categories{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:16px}
.gn-categories a{display:flex;align-items:center;gap:8px;min-width:0;padding:8px 10px 8px 8px;border-radius:9px;border:1px solid var(--line2);color:var(--ink1);text-decoration:none;font-size:13px;font-weight:650}
/* 30-D: 카테고리 칸에 그 묶음의 바탕 사진(미리 흐린 판) + 강조색 덮개 — 28 목업 «카테고리 미리보기» */
.gn-categories a::before{content:'';flex:none;width:52px;height:34px;border-radius:6px;background:linear-gradient(135deg,color-mix(in srgb,var(--catcolor) 38%,transparent),transparent 70%),var(--catimg,none) center/cover,var(--panel2);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--catcolor) 45%,transparent)}
html[data-tone=dark] .gn-categories a[data-cat=now]{--catimg:url(../assets/theme/cat_now_dark_soft.webp)}html[data-tone=dark] .gn-categories a[data-cat=fac]{--catimg:url(../assets/theme/cat_fac_dark_soft.webp)}html[data-tone=dark] .gn-categories a[data-cat=svy]{--catimg:url(../assets/theme/cat_svy_dark_soft.webp)}html[data-tone=dark] .gn-categories a[data-cat=act]{--catimg:url(../assets/theme/cat_act_dark_soft.webp)}html[data-tone=dark] .gn-categories a[data-cat=ast]{--catimg:url(../assets/theme/cat_ast_dark_soft.webp)}html[data-tone=dark] .gn-categories a[data-cat=map]{--catimg:url(../assets/theme/cat_map_dark_soft.webp)}html[data-tone=dark] .gn-categories a[data-cat=doc]{--catimg:url(../assets/theme/cat_doc_dark_soft.webp)}html[data-tone=dark] .gn-categories a[data-cat=adm]{--catimg:url(../assets/theme/cat_adm_dark_soft.webp)}html[data-tone=light] .gn-categories a[data-cat=now]{--catimg:url(../assets/theme/cat_now_light_soft.webp)}html[data-tone=light] .gn-categories a[data-cat=fac]{--catimg:url(../assets/theme/cat_fac_light_soft.webp)}html[data-tone=light] .gn-categories a[data-cat=svy]{--catimg:url(../assets/theme/cat_svy_light_soft.webp)}html[data-tone=light] .gn-categories a[data-cat=act]{--catimg:url(../assets/theme/cat_act_light_soft.webp)}html[data-tone=light] .gn-categories a[data-cat=ast]{--catimg:url(../assets/theme/cat_ast_light_soft.webp)}html[data-tone=light] .gn-categories a[data-cat=map]{--catimg:url(../assets/theme/cat_map_light_soft.webp)}html[data-tone=light] .gn-categories a[data-cat=doc]{--catimg:url(../assets/theme/cat_doc_light_soft.webp)}html[data-tone=light] .gn-categories a[data-cat=adm]{--catimg:url(../assets/theme/cat_adm_light_soft.webp)}
.gn-categories i{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--catcolor);margin-right:7px}
.gn-sources table{table-layout:fixed;width:100%;border-collapse:collapse}.gn-sources th,.gn-sources td{padding:10px;vertical-align:top;overflow-wrap:anywhere}.gn-sources a{color:var(--acc-ink)}
html.vt-circle::view-transition-old(root){animation:none}html.vt-circle::view-transition-new(root){animation:none;mix-blend-mode:normal}
html.vt-fade::view-transition-old(root){animation:gn-vtout .5s var(--ez-io) both}html.vt-fade::view-transition-new(root){animation:gn-vtin .5s var(--ez-io) both}
@keyframes gn-vtout{to{opacity:0}}@keyframes gn-vtin{from{opacity:0}}
@media(max-height:800px){.gn-theme-head{height:54px}}
@media(max-width:800px){.gn-theme-head{display:none}.gn-theme-settings .gn-theme-previews,.gn-theme-settings .gn-categories{grid-template-columns:repeat(2,minmax(0,1fr))}.gn-photo-credit{display:none}}
@media(prefers-reduced-motion:reduce){.gn-bgstack .bgl{animation:none!important;transition:none!important}}
@media print{.gn-bgstack,.gn-theme-head,.gn-photo-credit{display:none!important}html[data-theme] body{background:white;color:#111826}html[data-theme] :is(.card,.surface,.work-table-wrap){background:white;color:#111826;box-shadow:none;backdrop-filter:none}}

html[data-theme=board] .ui-set{display:flex;flex-direction:column}html[data-theme=board] .ui-set>[data-theme-settings]{order:-1}
html[data-theme=board] #sidebar :is(.ui-tree-h,.ui-tree-title,.ui-tree-label,.ui-user-n,.ui-user-name,.ui-user-role,.ui-brand-sub,.ui-brand-name,.ui-nav-h span,.ui-tree-h span,.ui-user-text,.ui-user-text b,.ui-user-text small){color:var(--side-ink)!important}html[data-theme=board] #sidebar :is(svg,.ui-side-toggle){color:var(--side-ink2)}

/* 기존 네 가지 사이드 메뉴도 사양의 동일한 잉크·판 토큰을 사용한다. */
html:is([data-theme=board],[data-tone=dark]) #sidebar.ui-shell{
 --sb-solid:var(--gsolid);--sb-bg:var(--side-bg);--sb-fg:var(--side-ink);--sb-strong:var(--ink1);--sb-mute:var(--side-ink2);--sb-line:var(--line);--sb-hover:var(--hover);
 --sb-ind:var(--accs);--sb-ind-sh:inset 0 0 0 1px var(--line2);--sb-bar:var(--acc);--sb-act-fg:var(--ink1);--sb-ic:var(--side-ink2);--sb-ic-act:var(--acc);
 --sb-card:var(--panel2);--sb-card-line:var(--line);--sb-cnt:var(--panel2);--sb-cnt-fg:var(--ink2);--sb-acnt:var(--accs);--sb-acnt-fg:var(--acc-ink);--sb-wcnt:var(--reds);--sb-wcnt-fg:var(--red-ink);
 --sb-on-cnt:var(--panel2);--sb-on-cnt-fg:var(--ink1);--sb-on-acnt:var(--accs);--sb-on-acnt-fg:var(--acc-ink);--sb-tone-act:var(--acc-ink);--sb-tone-warn:var(--red-ink);--sb-ring:var(--acc);--sb-ring-t:var(--accs);--sb-mark:#fff;--sb-av:var(--accs);--sb-av-fg:var(--ink1)
}
html[data-theme=board] #sidebar.ui-shell :is(.ui-nav-h,.ui-brand-sub,.ui-me-sub,.work-version){font-size:12px;opacity:1}

html:is([data-theme=board],[data-tone=dark]) #main a:not(.btn):not(.gn-theme-preview){color:var(--acc-ink)}
html[data-theme=board] .welcome-line :is(.eyebrow,p,.work-scope){color:var(--ink2)!important}
html[data-theme=board] :is(.ui-def,.zoom-src){opacity:1;color:var(--ink2)}
html[data-theme=board] button:disabled{cursor:not-allowed}
/* 시설 지도: 30-A fmap 토큰. 기존 밝은 지도 색의 글자/도형 혼용을 분리한다. */
html:is([data-theme=board],[data-tone=dark]) .fm{--fm-ink:var(--ink1);--fm-sub:var(--ink2);--fm-line:var(--line2)}
html:is([data-theme=board],[data-tone=dark]) .fm-stage{background:var(--map-bg,var(--gsolid))}
html:is([data-theme=board],[data-tone=dark]) .fm-out{fill:var(--map-bg,var(--gsolid))}
html:is([data-theme=board],[data-tone=dark]) .fm-land{fill:var(--fmap-land,var(--panel2))}
html:is([data-theme=board],[data-tone=dark]) .fm-water{fill:var(--fmap-water,var(--track))}
html:is([data-theme=board],[data-tone=dark]) .fm-green{fill:var(--fmap-green,var(--track))}
html:is([data-theme=board],[data-tone=dark]) .fm-rc{stroke:var(--fmap-road,var(--line2))}
html:is([data-theme=board],[data-tone=dark]) .fm-rf{stroke:var(--map-bg,var(--gsolid))}
html:is([data-theme=board],[data-tone=dark]) .fm-rail{stroke:var(--fmap-rail,var(--line2))}
html:is([data-theme=board],[data-tone=dark]) .fm-dong{stroke:var(--fmap-dong,var(--line2))}
html:is([data-theme=board],[data-tone=dark]) .fm-district{stroke:var(--fmap-edge,var(--acc))}
html:is([data-theme=board],[data-tone=dark]) .fm-fade{fill:transparent}
html:is([data-theme=board],[data-tone=dark]) :is(.fm-lab text,.fm-st-name,.fm-tag){fill:var(--ink2);stroke:var(--fmap-halo,var(--gsolid))}
html:is([data-theme=board],[data-tone=dark]) .fm-num{fill:var(--acc-on)}
html:is([data-theme=board],[data-tone=dark]) .fm-attr{background:var(--gsolid);color:var(--ink2)}
html:is([data-theme=board],[data-tone=dark]) .fm-scale{background:var(--gsolid);color:var(--ink2);padding:3px}
html[data-theme=board] .personal-work .welcome-line{background:var(--panel)!important;backdrop-filter:var(--glass-fx);padding:24px;border-radius:var(--r-pn)}
html[data-theme=board] :is(.home-overview,.home-help){background:var(--panel);padding:20px;border-radius:var(--r-pn)}
html[data-theme=board] .personal-work :is(.stat-s,.s,.eyebrow,.work-scope){color:var(--ink2)}
html[data-theme=board] .ui-card .ui-def{color:var(--ink2);background:var(--gsolid)}
html:is([data-theme=board],[data-tone=dark]) .bv{color-scheme:inherit;--ink:var(--ink1);--muted:var(--ink2);--soft:var(--panel2);--green:var(--ok-ink);--orange:var(--org-ink);--blue:var(--blu-ink)}
html:is([data-theme=board],[data-tone=dark]) .tool-btn{color:var(--ink1);background:var(--panel2)}
html:is([data-theme=board],[data-tone=dark]) .tool-btn.on{color:var(--acc-ink);background:var(--accs)}
html[data-theme=board][data-tone=light] .btn.pri{background:var(--acc-ink);color:var(--acc-on)}
html[data-theme=board] .badge.blue{--badge-ink:var(--ink2)}
html[data-theme=base][data-tone=light] [data-theme-settings]:not(.gn-show-theme){display:none}
html:is([data-theme=board],[data-tone=dark]) .lg-tile{color:var(--ink1)}
html[data-theme=board] :is(.admin-tab.on,.btn.on){background:var(--accs);color:var(--acc-ink)}
html[data-theme=board] :is(.page-sub,.muted){color:var(--ink2)}
html[data-theme=board] .fm-num{fill:var(--ink1)}

html[data-theme=board] :is(.group-title,.tools-tabs .on,.work-tools-nav .on){color:var(--ink1);background:var(--panel2)}
html[data-theme=board] .fm-lab text{stroke-width:4px!important;paint-order:stroke}
html[data-theme=board] .badge.red{--badge-ink:var(--ink1)}
.fm-board-labels{display:none;pointer-events:none}
html:is([data-theme=board],[data-tone=dark]) .fm-board-labels{display:inline}
html:is([data-theme=board],[data-tone=dark]) .fm-theme-source{visibility:hidden;opacity:0}
html:is([data-theme=board],[data-tone=dark]) .fm-label-plate{fill:var(--fmap-halo);stroke:none}
html[data-theme=board] .fm-board-labels .fm-st.out{opacity:1}
html[data-theme=board] .fm-pt:has(.fm-num) .fm-dot{fill:var(--gsolid);stroke:var(--point-color);opacity:1}
html[data-theme=board] :is(.work-head,.page-head,.survey-top){background:var(--panel);border-radius:var(--r-pn)}
html[data-theme=board] .bv-topline span{background:var(--gsolid);color:var(--ink2);padding:3px 6px;border-radius:4px}
html[data-theme=board] #main .at-tabs a.on{background:var(--accs);color:var(--acc-ink);border-color:var(--acc)}
html[data-theme=board] .bld-list-head,html[data-theme=board] .bld-tools{background:var(--panel);border-radius:var(--r-pn)}
html[data-theme=board] :is(.info-strip,.fac-tabs,.an-sub,.admin-tabs,.list-meta,.gn-subnav){background:var(--panel);border-radius:var(--r-pn);backdrop-filter:var(--glass-fx)}
html[data-theme=board] .bld-rows em,html[data-theme=board] .ft-names em{background:var(--gsolid);color:var(--ink2)}
html[data-theme=board] .an-tabs .admin-tab.on{background:var(--gsolid);color:var(--acc-ink)}
html[data-theme=board] .gn-subnav a.on{color:var(--acc-ink)}

html[data-theme=board] .ft-nm em{color:var(--ink2)}
html[data-theme=board] .an-page .an-presets .btn.on{background:var(--acc);color:var(--acc-on)}

html[data-theme=board] .assign-chip[aria-pressed=true],html[data-theme=board] .assign-chip[aria-pressed=true] :is(b,span){color:var(--acc-on);opacity:1}
html[data-theme=board] .ft-stats :is(span,b),html[data-theme=board] .ft-foot .zero{color:var(--ink2)}
html[data-theme=board] :is(.home-chip strong,.work-stat strong){color:var(--ink1)}
html[data-theme=board] .home-status .text-link{background:var(--gsolid)}
html[data-theme=board] #assign-form .form-grid small{color:var(--ink2);background:var(--gsolid);opacity:1}

/* 30-D: 표의 이름 링크는 줄 제목 — 사양 6절 «이름 650 --ink1», 마우스를 올리면 강조색 밑줄(현황판 테마만) */
html[data-theme=board] #main .work-table td.facility-name>a{color:var(--ink1);text-decoration:none}
html[data-theme=board] #main .work-table td.facility-name>a:is(:hover,:focus-visible){color:var(--acc-ink);text-decoration:underline;text-underline-offset:3px}
/* 30-D: 머리 줄 빠른 전환 단추는 화면 스타일(손글씨형·현장형 등)과 상관없이 사양 6절 모양(현황판 = 투명 바탕 + 1px --line2) */
html[data-theme=board] .gn-theme-head .btn{background:transparent;border:1px solid var(--line2);color:var(--ink1);box-shadow:none}
html[data-theme=board] .gn-theme-head .btn:hover{background:var(--hover)}
/* 30-D: 업무 배정 설명 글자 10px → 사양 2절 최소 12px(현황판 테마) */
html[data-theme=board] #assign-form .form-grid small{font-size:12px;line-height:1.45}

/* 30-E: 겹친 시설점의 묶음 숫자는 상태점 위의 독립 받침에 표시한다. */
.fm-board-counts{display:none;pointer-events:none}
html:is([data-theme=board],[data-tone=dark]) .fm-board-counts{display:inline}
html:is([data-theme=board],[data-tone=dark]) .fm-pts>.fm-pt>.fm-num{visibility:hidden}
html:is([data-theme=board],[data-tone=dark]) .fm-count-plate{fill:var(--gsolid);stroke:var(--point-color);opacity:1}
html:is([data-theme=board],[data-tone=dark]) .fm-board-counts .fm-num{fill:var(--ink1)}
/* 주소 없는 카드 창도 사양서의 카드 재질을 쓴다. */
html[data-theme=board] .modal[data-sub=card]{--pa1:.70;--pa2:.66;--scrim:.48;--blur:20px;--kb:1;background:rgba(var(--glass1),var(--pa1));backdrop-filter:blur(20px) saturate(1.35)}
html[data-theme=board][data-tone=light] .modal[data-sub=card]{--pa1:.84;--pa2:.78}

/* 30-A §7-1: 업무 목록의 C 그림 칸. 큰 그림 칸은 B 받침 + 아래쪽 빛(화면 검수는 2차). */
html[data-app=work][data-theme=board] :is(.wf-thumb,.fac-thumb:not(.big)){
 width:46px;height:32px;border:1px solid var(--line);border-radius:5px;background:var(--panel2)
}

.gn-bc-decor{display:none}
html[data-app=work][data-theme=board] .fac-thumb.big.has-img{isolation:isolate;background:radial-gradient(80% 60% at 50% 95%,color-mix(in srgb,var(--acc) 20%,transparent),transparent 70%),var(--panel2)}
html[data-app=work][data-theme=board] .gn-bc-decor{display:block;position:absolute;inset:0;pointer-events:none}
html[data-app=work][data-theme=board] .gn-bc-stage>img{inset:auto;left:50%;bottom:calc(8px + var(--bw) * .2186);width:var(--bw);height:auto;translate:-50% 0;z-index:1}
.gn-bc-stage .bped{position:absolute;left:50%;bottom:8px;width:calc(var(--bw) * 1.08);height:auto;translate:-50% 0;overflow:visible;transform-origin:50% 50%}
.gn-bc-stage .bped .s0{stop-color:var(--ill-ped-glow-a)}.gn-bc-stage .bped .s1{stop-color:var(--ill-ped-glow-b)}.gn-bc-stage .bped .s2{stop-color:var(--acc);stop-opacity:0}
.gn-bc-stage .bped .g-shadow{fill:var(--ill-ped-shadow)}
.gn-bc-stage .bped .g-ped1{fill:none;stroke:var(--ill-ped-ring);stroke-width:3;vector-effect:non-scaling-stroke}     /* 지금 건물 = 고리 3px(PC .g-ped.cur) */
.gn-bc-stage .bped .g-hex{fill:var(--ill-ped-hex-cur);stroke:var(--ill-ped-ring);stroke-width:1;vector-effect:non-scaling-stroke}
.gn-bc-stage .bpul{position:absolute;left:50%;bottom:calc(8px + var(--bw) * .3186);width:calc(var(--bw) * .5);aspect-ratio:1/.59;translate:-50% 50%;border-radius:50%;box-shadow:inset 0 0 0 2px var(--ill-ped-ring);opacity:0;pointer-events:none}
.gn-bc-stage .bbeam{position:absolute;left:50%;top:0;bottom:calc(8px + var(--bw) * .3186);width:clamp(44px,calc(var(--bw) * .62),70px);translate:-50% 0;transform-origin:50% 100%;pointer-events:none;
  border-radius:50% 50% 0 0/18% 18% 0 0;background:linear-gradient(to top,var(--ill-beam-a),var(--ill-beam-b) 45%,transparent);
  -webkit-mask:linear-gradient(90deg,transparent,#000 32%,#000 68%,transparent);mask:linear-gradient(90deg,transparent,#000 32%,#000 68%,transparent)}   /* PC 는 흐림 7px — 가벼운 현황판은 흐림 대신 가로 가림판 */
.gn-bc-stage .bbeam::after{content:'';position:absolute;left:50%;bottom:0;width:5px;height:100%;translate:-50% 0;border-radius:3px;background:linear-gradient(to top,var(--ill-beam-core),var(--ill-beam-core-b) 55%,transparent)}

/* 30-E: 모형의 밝은 캔버스와 무관하게 조작 글자를 읽을 수 있는 불투명 받침. */
html:is([data-theme=board],[data-tone=dark]) .v3d-hud{--color-inline-5b8859e0a8:var(--gsolid);--color-inline-cfd8e3:var(--ink1)}
html:is([data-theme=board],[data-tone=dark]) .v3d-hud .btn{background:var(--gsolid);color:var(--ink1)}
html:is([data-theme=board],[data-tone=dark]) .v3d-hud .btn[aria-pressed=true]{background:var(--acc)!important;color:var(--acc-on)}
html[data-theme=board] .ib-cap small{color:var(--ink1);opacity:1}
html[data-theme=board] .atlas-alert-detail .muted{color:var(--ink1);opacity:1}
html[data-theme=board] .hv-person{background:var(--gsolid);color:var(--ink1)}
html[data-theme=board] .hv-person[aria-pressed=true]{background:var(--accs);color:var(--ink1)}
html[data-theme=board] .ib-cap small{background:var(--gsolid);padding:2px 6px;border-radius:4px}

html:is([data-theme=board],[data-tone=dark]) .fm-count{pointer-events:all;cursor:pointer}
/* 30-F: 판 밖(바탕 사진 위)에 놓인 «보고 올리기» 옆 설명(시설 담당 나의 할 일·시설 담당 보고). 사진 출처와 같은 받침(사양 4절) — 1366 사진 위 4.12:1 */
html[data-theme=board] .home-admin-actions .muted-note{align-self:center;padding:3px 8px;border-radius:6px;background:rgba(var(--glass2),.72);color:var(--ink2)}
