/* CSS 그라데이션 생성기 전용 CSS (2026-10-20). 그라데이션 편집대: 무대 | 모양 칸 → 자 + 고른 정지 색 칸 → 쓰는 곳 | CSS. 공용 부품은 assets/v2.css */
.ggn{container:ggn / inline-size;--ggn-ck:color-mix(in srgb, var(--ink) 10%, var(--paper));--ggn-checker:repeating-conic-gradient(var(--ggn-ck) 0 25%, var(--paper) 0 50%) 0 0 / 14px 14px}
.ggn-top{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:16px;padding:16px 18px;border-bottom:1px solid var(--soft)}
.ggn-stagebox{position:relative;display:flex;min-width:0}
.ggn-stage{position:relative;flex:1 1 auto;min-height:280px;border-radius:var(--radius);overflow:hidden;background:var(--ggn-checker);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--ink) 10%, transparent);touch-action:none}
.ggn-layer{position:absolute;inset:0;opacity:0}
.ggn-layer.is-now{opacity:1}
.ggn-stage.is-ready .ggn-layer{transition:opacity .35s ease}
.ggn-over{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;filter:drop-shadow(0 0 1px rgba(0,0,0,.6)) drop-shadow(0 1px 2px rgba(0,0,0,.22))}
.ggn-over [data-drag]{pointer-events:all;cursor:grab}
.ggn-stage.is-drag,.ggn-stage.is-drag [data-drag]{cursor:grabbing}
.ggn-line{stroke:#fff;stroke-width:2;stroke-linecap:round}
.ggn-dash{fill:none;stroke:#fff;stroke-width:1.2;stroke-dasharray:5 5;opacity:.8}
.ggn-start{fill:none;stroke:#fff;stroke-width:2}
.ggn-hit{fill:transparent}
.ggn-od circle:last-child{stroke:#fff;stroke-width:2.5}
.ggn-od.is-cur circle:last-child{stroke-width:4}
.ggn-ok circle:nth-child(2){fill:#fff}
.ggn-ok text{fill:#fff;font-family:var(--sans);font-size:12px;font-weight:700;paint-order:stroke;stroke:rgba(0,0,0,.55);stroke-width:3px}
.ggn-guide{position:absolute;top:10px;right:10px;z-index:1;height:26px;padding:0 10px;border:0;border-radius:999px;background:color-mix(in srgb, var(--paper) 86%, transparent);color:var(--ink);font-family:var(--sans);font-size:11.5px;font-weight:650;cursor:pointer}
.ggn-guide[aria-pressed="false"]{color:var(--muted);text-decoration:line-through}
.ggn-guide:focus-visible,.ggn-chip:focus-visible,.ggn-dirs button:focus-visible,.ggn-use:focus-visible,.ggn-css:focus-visible,.ggn-linkbtn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.ggn-insp{display:flex;flex-direction:column;gap:14px;min-width:0}
.ggn-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 10px;align-content:start}
.ggn-fields .full{grid-column:1 / -1}
.ggn .v2-f > span.v2-label{display:block;margin:0 0 5px} /* 버튼 묶음 라벨도 label 칸과 같은 높이(theme.js 라벨 맞춤은 block 라벨만 봄) */
.ggn-fields[data-t="linear"] .ggn-for-r,.ggn-fields[data-t="linear"] .ggn-for-rc,.ggn-fields[data-t="radial"] .ggn-for-lc,.ggn-fields[data-t="conic"] .ggn-for-r{display:none}
.ggn-seg{display:grid;width:100%}
.ggn-seg--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.ggn-seg--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.ggn-seg button{height:var(--v2-ctl,42px);min-width:0;padding:0 4px;white-space:nowrap} /* 옆 입력·선택 칸과 같은 높이 */
.ggn-select{display:block;width:100%;max-width:100%;height:var(--v2-ctl,42px);padding:0 6px;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px;font-weight:600}
.ggn-select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.ggn-dirs{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:4px}
.ggn-dirs button{display:grid;place-items:center;height:30px;min-width:0;padding:0;border:1px solid var(--soft);border-radius:var(--radius);background:var(--paper);color:var(--muted);cursor:pointer;transition:background var(--ease),color var(--ease)}
.ggn-dirs button:hover{background:var(--btn);color:var(--ink)}
.ggn-dirs button[aria-pressed="true"]{background:var(--fill);border-color:var(--fill);color:var(--on-fill)}
.ggn-dirs svg,.ggn-acts svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.ggn-repf small{display:inline}
.ggn-exbox{display:flex;flex-direction:column;gap:6px}
.ggn-ex{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.ggn-chip{display:block;height:34px;padding:0;border:0;border-radius:var(--radius);background:var(--ggn-checker);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--ink) 10%, transparent);cursor:pointer;overflow:hidden;transition:transform var(--ease)}
.ggn-chip:hover{transform:translateY(-2px)}
.ggn-chip i{display:block;width:100%;height:100%}

/* 자와 고른 정지 색 */
.ggn-mid{display:flex;flex-direction:column;gap:10px;padding:14px 18px 16px;border-bottom:1px solid var(--soft)}
.ggn-ruler{padding:0 11px}
.ggn-bar{position:relative;height:34px;border-radius:8px;background:var(--ggn-checker);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--ink) 12%, transparent);cursor:copy;touch-action:none}
.ggn-bar i{position:absolute;inset:0;border-radius:inherit}
.ggn-hs{position:relative;height:28px}
.ggn-h{position:absolute;top:0;width:22px;height:28px;margin-left:-11px;cursor:grab;touch-action:none;outline:0}
.ggn-h::after{content:"";position:absolute;left:10px;top:0;width:2px;height:6px;border-radius:1px;background:var(--ink);opacity:.55}
.ggn-h::before,.ggn-h i{content:"";position:absolute;left:1px;top:6px;width:20px;height:20px;border-radius:50%}
.ggn-h::before{background:var(--ggn-checker);background-size:8px 8px}
.ggn-h i{border:2px solid var(--paper);box-shadow:0 0 0 1px color-mix(in srgb, var(--ink) 40%, transparent),0 1px 3px rgba(0,0,0,.2);transition:transform var(--ease)}
.ggn-h.is-cur i{box-shadow:0 0 0 2px var(--ink),0 1px 3px rgba(0,0,0,.25);transform:scale(1.12)}
.ggn-h.is-cur::after{opacity:1}
.ggn-h:focus-visible i{outline:2px solid var(--accent);outline-offset:3px}
.ggn-ticks{display:flex;justify-content:space-between;margin:2px -4px 0;font-family:var(--mono);font-size:10.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.ggn-edit{display:grid;grid-template-columns:minmax(150px,1.2fr) minmax(84px,.7fr) minmax(84px,.7fr) auto;gap:10px;align-items:start}
.ggn-hexbox{align-items:center}
.ggn-hexbox input[type="color"]{flex:0 0 30px;width:30px;height:30px;margin:0 0 0 6px;padding:0;border:0;border-radius:6px;background:none;cursor:pointer}
.ggn-hexbox input[type="color"]::-webkit-color-swatch-wrapper{padding:0}
.ggn-hexbox input[type="color"]::-webkit-color-swatch{border:1px solid color-mix(in srgb, var(--ink) 18%, transparent);border-radius:6px}
.ggn-hexbox input[type="color"]::-moz-color-swatch{border:1px solid color-mix(in srgb, var(--ink) 18%, transparent);border-radius:6px}
.ggn-hexbox input[type="text"],.ggn-clsbox input{text-align:left;font-family:var(--mono);font-size:14px}
.ggn-acts{display:flex;gap:6px}
.ggn-acts .v2-btn{padding:0 10px}
.ggn-mud{margin:0;padding:8px 12px;border-radius:var(--radius);background:var(--accent-wash);color:var(--ink);font-family:var(--sans);font-size:13px;line-height:1.5}
.ggn-linkbtn{padding:0;border:0;background:none;color:var(--ink);font:inherit;font-weight:700;text-decoration:underline;text-underline-offset:2px;cursor:pointer}

/* 쓰는 곳 | CSS */
.ggn-low{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.ggn-usebox{display:flex;flex-direction:column;gap:8px;padding:16px 18px;min-width:0}
.ggn-uses{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.ggn-use{display:flex;flex-direction:column;gap:6px;min-width:0;padding:6px;border:1px solid var(--soft);border-radius:var(--radius);background:var(--paper);color:var(--ink);text-align:left;cursor:pointer;transition:border-color var(--ease),box-shadow var(--ease)}
.ggn-use:hover{border-color:var(--line)}
.ggn-use[aria-pressed="true"]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.ggn-pv{display:grid;place-items:center;height:92px;container-type:inline-size;overflow:hidden;border-radius:calc(var(--radius) - 2px);box-shadow:inset 0 0 0 1px color-mix(in srgb, #000 8%, transparent)}
.ggn-pv--page{background:#fff;color:#1a1a1a} /* 흰 바탕 페이지(대비·테두리 안쪽 색과 같은 기준) */
.ggn-pv--bg{align-content:center;gap:3px;padding:8px;text-align:center}
.ggn-pv--bg .pv-h{font-family:var(--sans);font-size:16px;font-weight:800;line-height:1.2}
.ggn-pv--bg .pv-p{font-family:var(--sans);font-size:11.5px;font-weight:500;opacity:.88}
.ggn-pv-t{max-width:100%;padding:0 4px;font-family:var(--sans);font-size:min(26px, 13cqi);font-weight:900;line-height:1.15;letter-spacing:-.02em;-webkit-background-clip:text;background-clip:text;color:transparent;overflow-wrap:anywhere;text-align:center}
.ggn-pv-card{display:grid;place-items:center;width:72%;height:62%;border:3px solid transparent;border-radius:12px;background-origin:padding-box,border-box;background-clip:padding-box,border-box;font-family:var(--sans);font-size:12.5px;font-weight:700;color:#1a1a1a}
.ggn-pv-btn{display:inline-grid;place-items:center;height:36px;padding:0 20px;border-radius:999px;font-family:var(--sans);font-size:13px;font-weight:700;white-space:nowrap}
.ggn-un{padding:0 2px;font-family:var(--sans);font-size:12px;font-weight:650;color:var(--muted)}
.ggn-use[aria-pressed="true"] .ggn-un{color:var(--ink)}
.ggn-pv.is-move,.ggn-pv .is-move{background-size:200% 200%;animation:ggn-move var(--mv-d) ease-in-out infinite alternate}
@keyframes ggn-move{from{background-position:var(--mv-a)}to{background-position:var(--mv-b)}}
.ggn-rows{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;padding:0;list-style:none}
.ggn-rows li{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:0 8px;padding:7px 10px;border:1px solid var(--soft);border-radius:var(--radius);font-family:var(--sans)}
.ggn-rows li span{font-size:12.5px;color:var(--muted)}
.ggn-rows li b{font-size:15px;font-weight:750;font-variant-numeric:tabular-nums lining-nums;color:var(--ink);white-space:nowrap}
.ggn-rows li small{grid-column:1 / -1;font-size:11.5px;font-weight:650;color:var(--ink)}
.ggn-rows li.is-mid b,.ggn-rows li.is-fail b,.ggn-rows li.is-mid small,.ggn-rows li.is-fail small{color:var(--accent)}
.ggn-rows li.ggn-tip{display:block;grid-column:1 / -1;padding:0;border:0;font-size:12px;line-height:1.5;color:var(--muted)}
.ggn-code{display:flex;flex-direction:column;gap:10px;min-width:0;padding:16px 18px;border-left:1px solid var(--soft)}
.ggn-css{flex:1 1 auto;min-height:7.8em;max-height:17.6em;margin:0;padding:10px 12px;overflow:auto;border:1px solid var(--soft);border-radius:var(--radius);background:var(--paper);color:var(--ink);font-family:var(--mono);font-size:12px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}
.ggn-opt{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.ggn-opt .full{grid-column:1 / -1}
.ggn-clsbox b{order:-1;min-width:24px;padding:0 4px 0 8px;border-left:0;background:none;font-family:var(--mono);font-size:14px}
.ggn-clsbox input{padding-left:0}
.ggn-acts2{display:flex;flex-wrap:wrap;gap:8px}
.ggn-status:empty{display:none}

/* 좁은 폭: DOM 순서 그대로 한 열 */
@container ggn (max-width:759px){
  .ggn-top{grid-template-columns:minmax(0,1fr)}
  .ggn-stage{min-height:0;aspect-ratio:16 / 9}
  .ggn-ex{grid-template-columns:repeat(8,minmax(0,1fr))}
  .ggn-low{grid-template-columns:minmax(0,1fr)}
  .ggn-uses{grid-template-columns:repeat(4,minmax(0,1fr))}
  .ggn-code{border-left:0;border-top:1px solid var(--soft)}
}
@container ggn (max-width:519px){
  .ggn-stage{aspect-ratio:4 / 3}
  .ggn-ex{grid-template-columns:repeat(4,minmax(0,1fr))}
  .ggn-uses{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ggn-top,.ggn-mid,.ggn-usebox,.ggn-code{padding-left:14px;padding-right:14px}
}
@container v2in (max-width:719px){
  .ggn-edit{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ggn-colf,.ggn-actf{grid-column:1 / -1}
  .ggn-actf > .v2-label{display:none}
  .ggn-acts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
  .ggn-acts .v2-btn{justify-content:center;padding:0 4px}
}
@container v2in (max-width:359px){
  .ggn-acts{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (prefers-reduced-motion:reduce){
  .ggn-stage.is-ready .ggn-layer,.ggn-chip,.ggn-h i{transition:none}
  .ggn-chip:hover{transform:none}
  .ggn-pv.is-move,.ggn-pv .is-move{animation:none;background-size:auto}
}
