/* CSS 그림자 효과 생성기 전용 CSS (2026-10-21). 그림자 조명대: [무대 + 보기 줄 | 레이어 탑 + 조절] → [CSS | 바깥 여백 지도] → 예시 24개. 공용 부품은 assets/v2.css */
.shg{container:shg / inline-size}
.shg svg{flex:0 0 auto}
.shg-top{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:16px;padding:16px 18px;border-bottom:1px solid var(--soft)}

/* 무대 */
.shg-stagebox{display:flex;flex-direction:column;gap:12px;min-width:0}
.shg-stage{position:relative;flex:1 1 auto;min-height:340px;border-radius:var(--radius);overflow:hidden;background:var(--shg-bg,#F1F5F9);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--ink) 12%, transparent)}
.shg-el{position:absolute;inset:0;margin:auto;display:grid;place-items:center;background:var(--shg-el,#fff);color:var(--shg-ink,#0F172A)}
.shg-stage.is-ready .shg-el{transition:box-shadow .35s ease,filter .35s ease,background-color .35s ease,width .25s ease,height .25s ease,border-radius .25s ease}
.shg-stage.is-live .shg-el{transition:none}
.shg-el > *{display:none}
.shg-el[data-f="card"] .shg-c-card{display:grid;gap:9px;width:72%}
.shg-c-card i{display:block;height:9px;border-radius:5px;background:currentColor;opacity:.16}
.shg-c-card i:first-child{width:46%;height:12px;opacity:.5}
.shg-c-card i:last-child{width:78%}
.shg-el[data-f="button"] .shg-c-button,.shg-el[data-f="circle"] .shg-c-circle{display:block;font-family:var(--sans);font-size:15px;font-weight:700;letter-spacing:.01em}
.shg-el[data-f="circle"] .shg-c-circle{font-size:30px;opacity:.55}
.shg-el[data-f="input"]{place-items:center start}
.shg-el[data-f="input"] .shg-c-input{display:block;padding:0 14px;font-family:var(--sans);font-size:14px;opacity:.45}
.shg-el[data-f="icon"]{background:transparent}
.shg-el[data-f="icon"] .shg-c-icon{display:block;width:100%;height:100%;fill:var(--shg-el,#fff)}
.shg-over{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;filter:drop-shadow(0 0 1px rgba(0,0,0,.65)) drop-shadow(0 1px 2px rgba(0,0,0,.2))}
.shg-orbit{fill:none;stroke:#fff;stroke-width:1;stroke-dasharray:2 6;opacity:.55}
.shg-ray{stroke:#FDE68A;stroke-width:1.4;stroke-dasharray:2 5;opacity:.9}
.shg-g-edge{fill:none;stroke:#fff;stroke-width:1.5;stroke-dasharray:6 4}
.shg-g-band{fill:none;stroke:#fff;stroke-width:1;stroke-dasharray:1.5 3.5;opacity:.85}
.shg-g-reach{fill:none;stroke:#FDE68A;stroke-width:1;stroke-dasharray:1 3;opacity:.9}
.shg-g-arrow{fill:none;stroke:#fff;stroke-width:1.6;stroke-linecap:round}
.shg-gr .shg-gt{fill:#FDE68A;font-size:11px}
.shg-gt{fill:#fff;font-family:var(--sans);font-size:11.5px;font-weight:700;paint-order:stroke;stroke:rgba(0,0,0,.6);stroke-width:3px}
.shg-light{position:absolute;top:10px;left:10px;z-index:1;padding:3px 9px;border-radius:999px;background:color-mix(in srgb, var(--paper) 88%, transparent);color:var(--ink);font-family:var(--sans);font-size:11.5px;font-weight:650;pointer-events:none}
.shg-lamp{position:absolute;z-index:2;display:grid;place-items:center;width:36px;height:36px;margin:-18px 0 0 -18px;padding:0;border:0;border-radius:50%;background:#FDE68A;color:#92400E;box-shadow:0 0 0 5px rgba(253,230,138,.32),0 0 22px rgba(250,204,21,.6);cursor:grab;touch-action:none}
.shg-lamp svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}
.shg-grip{position:absolute;z-index:2;display:grid;place-items:center;width:28px;height:28px;margin:-14px 0 0 -14px;padding:0;border:2px solid #fff;border-radius:50%;background:rgba(15,23,42,.6);box-shadow:0 1px 3px rgba(0,0,0,.35);cursor:move;touch-action:none}
.shg-grip i{width:10px;height:10px;background:linear-gradient(#fff 0 0) center / 10px 2px no-repeat,linear-gradient(#fff 0 0) center / 2px 10px no-repeat}
.shg-grip.is-out{border-style:dashed}
.shg-stage.is-drag,.shg-stage.is-drag .shg-lamp{cursor:grabbing}
.shg-lamp:focus-visible,.shg-grip:focus-visible,.shg-li:focus-visible,.shg-tile:focus-visible,.shg-css:focus-visible,.shg-color:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* 보기 줄 */
.shg-view{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}
.shg-vg{display:flex;align-items:center;gap:7px;min-width:0}
.shg-vg > .v2-label{margin:0;white-space:nowrap}
.shg-seg{flex-wrap:nowrap}
.shg-seg button{white-space:nowrap}
.shg-seg button svg{display:block;width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
#shgShape button{padding:0 7px}
.shg-bgs button{padding:0 8px}
.shg-bgs button i{display:block;width:14px;height:14px;border-radius:50%;box-shadow:0 0 0 1px color-mix(in srgb, var(--ink) 35%, transparent)}
.shg-bgs button[data-v="light"] i{background:#F1F5F9}
.shg-bgs button[data-v="white"] i{background:#FFFFFF}
.shg-bgs button[data-v="neu"] i{background:#E0E5EC}
.shg-bgs button[data-v="dark"] i{background:#0F172A}
.shg-color{width:36px;height:30px;padding:2px;border:1px solid var(--soft);border-radius:var(--radius);background:var(--paper);cursor:pointer}

/* 레이어 탑 */
.shg-side{display:flex;flex-direction:column;gap:10px;min-width:0}
.shg-lhead{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 8px}
.shg-lhead > .v2-label{margin:0}
.shg-lacts,.shg-allb{display:flex;flex-wrap:wrap;gap:4px}
.shg-lacts .v2-btn,.shg-allb .v2-btn{height:30px;padding:0 9px}
.shg-lacts svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.shg-lacts .shg-ib{padding:0 8px}
.shg-layers{margin:0;padding:0;list-style:none;max-height:calc(36px * 5);overflow-y:auto;border-radius:var(--radius);box-shadow:inset 0 0 0 1px var(--soft)}
.shg-li{display:grid;grid-template-columns:16px 34px minmax(0,1fr) auto;align-items:center;gap:8px;width:100%;height:36px;padding:0 10px;border:0;background:transparent;box-shadow:inset 0 -1px 0 var(--soft);color:var(--ink);text-align:left;cursor:pointer}
.shg-layers li:last-child .shg-li{box-shadow:none}
.shg-li:hover{background:color-mix(in srgb, var(--wash) 60%, transparent)}
.shg-li[aria-pressed="true"]{background:var(--wash);box-shadow:inset 3px 0 0 var(--ink),inset 0 -1px 0 var(--soft)}
.shg-layers li:last-child .shg-li[aria-pressed="true"]{box-shadow:inset 3px 0 0 var(--ink)}
.shg-ln{font-family:var(--mono);font-size:11px;font-weight:700;color:var(--muted)}
.shg-sw{display:grid;place-items:center;width:34px;height:24px;border-radius:4px;overflow:hidden;box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--ink) 10%, transparent)}
.shg-sw i{display:block;width:16px;height:10px;border-radius:2px}
.shg-lt{overflow:hidden;font-family:var(--mono);font-size:12px;font-weight:600;white-space:nowrap;text-overflow:ellipsis}
.shg-la{display:flex;align-items:center;gap:5px;font-family:var(--sans);font-size:12px;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums}
.shg-la i{width:10px;height:10px;border-radius:2px;box-shadow:0 0 0 1px color-mix(in srgb, var(--ink) 30%, transparent)}
.shg-all{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 8px}
.shg-all > .v2-label{margin:0}

/* 고른 레이어 조절: 라벨 | 막대 | 칸 (막대 높이 = 칸 높이라 줄 위·아래가 맞음) */
.shg-edit{display:grid;grid-template-columns:max-content minmax(0,1fr) 92px;align-items:center;gap:8px 10px;padding:12px;border-radius:var(--radius);box-shadow:inset 0 0 0 1px var(--soft)}
.shg-curl{grid-column:1 / -1;margin:0;color:var(--ink)}
.shg-row{display:grid;grid-column:1 / -1;grid-template-columns:subgrid;align-items:center}
.shg-row > .v2-label{margin:0}
.shg-range{display:block;width:100%;height:var(--v2-ctl,42px);margin:0;accent-color:var(--ink);cursor:pointer}
.shg-row--sw > .v2-switch{grid-column:1 / -1}
.shg-row--col > .shg-hexf{grid-column:2 / -1}
.shg-row--sw .v2-switch{flex-wrap:wrap;row-gap:2px}
.shg-row--sw small{flex:1 1 auto;min-width:0}
.shg-hexbox input[type="color"]{flex:0 0 40px;width:40px;height:calc(var(--v2-ctl,42px) - 2px);padding:5px;border:0;border-right:1px solid var(--soft);background:none;cursor:pointer}
.shg-hexbox #shgHex{text-align:left;font-family:var(--mono);font-size:14px}

/* CSS + 바깥 여백 문장 */
.shg-code{display:grid;gap:9px;min-width:0;padding:14px 18px;border-bottom:1px solid var(--soft)}
.shg-chead{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px}
.shg-chead > .v2-label{margin:0}
.shg-acts{display:flex;flex-wrap:wrap;gap:6px;margin-left:auto}
.shg-status:empty{display:none}
.shg-css{margin:0;padding:12px 14px;overflow-x:auto;border-radius:var(--radius);background:var(--paper);box-shadow:inset 0 0 0 1px var(--soft);font-family:var(--mono);font-size:13px;line-height:1.6;white-space:pre;color:var(--ink)}
.shg-warn{display:grid;gap:3px;margin:0;padding:0 0 0 17px;font-family:var(--sans);font-size:12px;line-height:1.5;color:var(--muted)}
.shg-warn[hidden]{display:none}
.shg-reachtx{margin:0;font-family:var(--sans);font-size:12.5px;line-height:1.55;color:var(--muted)}

/* 예시 24 */
.shg-exw{padding:14px 18px 18px}
.shg-exhead{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;margin:0 0 10px}
.shg-exhead > .v2-label{margin:0}
.shg-grp{flex-wrap:wrap}
.shg-ex{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px} /* 24개가 줄마다 꽉 차게 6·4·3열 */
.shg-tile{display:flex;flex-direction:column;gap:6px;min-width:0;padding:5px 5px 7px;border:1px solid var(--soft);border-radius:var(--radius);background:var(--paper);color:var(--ink);cursor:pointer;transition:border-color var(--ease)}
.shg-tile:hover{border-color:var(--line)}
.shg-tile[aria-pressed="true"]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.shg-tile[hidden]{display:none}
.shg-tv{position:relative;display:block;height:78px;overflow:hidden;border-radius:calc(var(--radius) - 2px);background:var(--shg-tbg,#F1F5F9)}
.shg-tv i{position:absolute;left:50%;top:50%;background:var(--shg-tel,#fff)}
.shg-tn{overflow:hidden;font-family:var(--sans);font-size:12px;font-weight:600;white-space:nowrap;text-overflow:ellipsis}

@media (prefers-reduced-motion: reduce){ .shg-stage.is-ready .shg-el,.shg-tile{transition:none} }
@container shg (max-width: 720px){ .shg-ex{grid-template-columns:repeat(4,minmax(0,1fr))} }
@container shg (max-width: 600px){
  .shg-top{grid-template-columns:minmax(0,1fr)}
  .shg-stage{min-height:300px}
}
@container shg (max-width: 420px){
  .shg-top,.shg-code,.shg-exw{padding-left:12px;padding-right:12px}
  .shg-edit{grid-template-columns:max-content minmax(0,1fr) 84px;padding:10px}
  .shg-ex{grid-template-columns:repeat(3,minmax(0,1fr))}
  .shg-stage{min-height:280px}
}
