/* 폴라로이드 사진 생성기 전용 CSS (2026-10-21). 막대 → [책상(인화지 + 맞춤 줄) | 선반(크기 도표 · 느낌 8 · 테두리 색 · 저장)] → [글씨 | 효과].
   배치는 툴 폭 컨테이너 쿼리(@container pol). 책상은 따뜻한 회색 바탕에 인화지가 그림자를 드리운 모습(다크 테마는 어두운 책상). 공용 부품은 assets/v2.css. */
.pol-work{container:pol / inline-size;--pol-desk:#e6e1d6;--pol-desk2:#d8d1c3;--pol-ink:#4a4337;--pol-frame:#f6f4ee}
:root[data-theme="dark"] .pol-work{--pol-desk:#2a2722;--pol-desk2:#1f1d19;--pol-ink:#cfc5b2}
:root[data-theme="dark"] .pol-print{outline:1px solid rgba(255,255,255,.08)}
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]) .pol-work{--pol-desk:#2a2722;--pol-desk2:#1f1d19;--pol-ink:#cfc5b2} :root:not([data-theme="light"]) .pol-print{outline:1px solid rgba(255,255,255,.08)} }
.pol-file{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}
/* 막대 */
.pol-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:10px 16px;border-bottom:1px solid var(--soft)}
.pol-pick{cursor:pointer}
.pol-file:focus-visible + .pol-pick{outline:2px solid var(--accent);outline-offset:2px}
.pol-src{flex:1 1 180px;min-width:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;margin:0;font-family:var(--sans);font-size:12.5px}
.pol-src b{min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700;color:var(--ink)}
.pol-src span{font-family:var(--mono);font-size:12px;color:var(--muted);white-space:nowrap}
.pol-drop{margin:0;font-family:var(--sans);font-size:12px;color:var(--muted)}
@container pol (max-width:560px){ .pol-drop{display:none} }
/* 본체: 넓으면 책상 | 선반 */
.pol-main{display:grid;grid-template-columns:minmax(0,1fr)}
@container pol (min-width:640px){ .pol-main{grid-template-columns:minmax(0,1fr) minmax(264px,36%)} .pol-side{border-left:1px solid var(--soft)} }
@container pol (min-width:860px){ .pol-main{grid-template-columns:minmax(0,1fr) 312px} }
/* 책상 */
.pol-desk{display:flex;flex-direction:column;justify-content:center;gap:10px;min-width:0;padding:14px 14px 12px;background:radial-gradient(120% 90% at 50% 38%,var(--pol-desk),var(--pol-desk2));color:var(--pol-ink)}
.pol-area{position:relative;width:100%;aspect-ratio:var(--pol-ar,1 / 1.2);max-height:78vh}
@container pol (min-width:640px){ .pol-area{flex:1 1 auto;aspect-ratio:auto;min-height:340px;max-height:none} }
.pol-print{position:absolute;left:0;top:0;border-radius:2px;box-shadow:0 1px 2px rgba(30,24,14,.22),0 10px 26px -6px rgba(30,24,14,.38)}
.pol-cv{display:block;width:100%;height:100%;border-radius:inherit}
.pol-win{position:absolute;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}
.pol-win:active{cursor:grabbing}
.pol-win:focus-visible{outline:2px solid #ff8a4c;outline-offset:2px}
.pol-work.is-over .pol-area{outline:2px dashed #e07a3c;outline-offset:-6px}
/* 현상: 사진 창이 어두운 청록에서 천천히 밝아짐(실제 필름은 10~15분·약 90초, 화면은 3초) */
.pol-dev{position:absolute;opacity:0;pointer-events:none;background:#253130;-webkit-backdrop-filter:saturate(.12) contrast(.85);backdrop-filter:saturate(.12) contrast(.85)}
.pol-dev.is-on{animation:polDev 3.2s cubic-bezier(.42,0,.58,1) both}
@keyframes polDev{0%{opacity:1;background:#1f2a29}35%{opacity:.86;background:#34403d}100%{opacity:0;background:#bfb7a6}}
@media (prefers-reduced-motion:reduce){ .pol-dev{display:none} }
/* 아래 여백에 바로 쓰는 글씨 */
.pol-cap{position:absolute;box-sizing:border-box;margin:0;padding:0;border:0;border-radius:0;background:transparent;font-weight:400;white-space:nowrap;overflow:hidden;cursor:text;outline:none}
.pol-cap::placeholder{color:currentColor;opacity:.4}
.pol-cap:hover{background:rgba(128,128,128,.07)}
.pol-cap:focus{background:rgba(128,128,128,.09)}
.pol-cap:focus-visible{outline:2px solid rgba(224,122,60,.9);outline-offset:-2px}
.pol-busy{position:absolute;left:50%;top:50%;margin:0;padding:6px 12px;transform:translate(-50%,-50%);border-radius:var(--radius);background:rgba(0,0,0,.7);font-family:var(--sans);font-size:12px;color:#fff}
.pol-busy[hidden]{display:none}
/* 맞춤 줄(인화지 바로 아래) */
.pol-fit{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px 16px;font-family:var(--sans);font-size:12px;font-weight:600}
.pol-zoom,.pol-tilt,.pol-fitb{display:inline-flex;align-items:center;gap:6px}
.pol-zoom input{width:120px}
.pol-tilt input{width:96px}
.pol-fit input[type="range"]{height:28px;margin:0;accent-color:var(--pol-ink)}
.pol-tilt output{min-width:3.4em;font-family:var(--mono);font-size:12px;text-align:right;font-variant-numeric:tabular-nums}
.pol-ib{width:28px;height:28px;padding:0;border:1px solid rgba(74,67,55,.28);border-radius:50%;background:rgba(255,255,255,.4);font:700 15px/1 var(--sans);color:inherit;cursor:pointer}
:root[data-theme="dark"] .pol-ib{background:rgba(255,255,255,.06);border-color:rgba(207,197,178,.3)}
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]) .pol-ib{background:rgba(255,255,255,.06);border-color:rgba(207,197,178,.3)} }
.pol-ib:hover{background:rgba(255,255,255,.7)}
.pol-ib:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.v2-btn.pol-sm{height:28px;padding:0 10px;font-size:12px}
.pol-sm .i{width:13px;height:13px}
.pol-note{display:flex;flex-wrap:wrap;justify-content:center;gap:2px 10px;margin:0;font-family:var(--sans);font-size:12px;line-height:1.5;text-align:center;color:inherit;opacity:.88}
.pol-devnote{font-weight:700}
.pol-devnote:empty{display:none}
@container pol (max-width:420px){ .pol-zoom input{width:96px} .pol-tilt input{width:78px} }
/* 선반 */
.pol-side{display:flex;flex-direction:column;min-width:0}
.pol-sec{padding:12px 16px;min-width:0}
.pol-sec + .pol-sec{border-top:1px solid var(--soft)}
.pol-sh{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:2px 10px;margin:0 0 8px}
.pol-sub{font-family:var(--sans);font-size:11.5px;color:var(--muted)}
/* 크기 도표: 다섯 인화지를 같은 배율(실제 비율)로, 아래를 맞춰 세움. 한 줄이면 폭 = mm × (도표 폭 − 틈 28px) ÷ 376.37mm */
.pol-sizes{container-type:inline-size;display:flex;align-items:flex-end;gap:10px;--pol-gp:28px;--pol-den:376.37}
@container pol (min-width:640px){ .pol-sizes{flex-direction:column;align-items:flex-start;gap:8px;--pol-gp:12px;--pol-den:234} } /* 선반 칸에서는 브랜드별 두 줄(배율은 긴 줄 instax 54 + 72 + 108mm 기준, 두 줄이 같은 배율) */
.pol-szg{display:flex;flex-direction:column;gap:3px;min-width:0}
.pol-brand{font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.04em;color:var(--muted);white-space:nowrap}
.pol-szrow{display:flex;align-items:flex-end;gap:6px}
.pol-sz{display:flex;flex-direction:column;align-items:center;gap:4px;padding:0;border:0;background:none;color:var(--muted);cursor:pointer;border-radius:2px}
.pol-sz span{font-family:var(--mono);font-size:10px;font-weight:700;line-height:1;white-space:nowrap}
.pol-sz[aria-pressed="true"] span{color:var(--accent)}
.pol-sz svg{display:block;width:calc(var(--w) * (100cqi - var(--pol-gp)) / var(--pol-den));height:auto;overflow:visible}
.pol-szf{fill:var(--pol-frame);stroke:var(--line);stroke-width:.7;transition:stroke var(--ease)}
.pol-szw{fill:var(--muted);opacity:.32;transition:opacity var(--ease),fill var(--ease)}
.pol-sz:hover .pol-szw{opacity:.45}
.pol-sz[aria-pressed="true"] .pol-szf{stroke:var(--accent);stroke-width:2.2}
.pol-sz[aria-pressed="true"] .pol-szw{fill:var(--accent);opacity:.3}
.pol-sz:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.pol-szinfo{margin:8px 0 0;font-family:var(--sans);font-size:12px;line-height:1.5;color:var(--muted);font-variant-numeric:tabular-nums}
.pol-szinfo b{color:var(--ink);font-weight:700}
/* 느낌 8: 내 사진으로 그린 작은 인화 */
.pol-looks{list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px 5px;margin:0;padding:0}
.pol-looks li{display:block;min-width:0}
.pol-lk{display:flex;flex-direction:column;align-items:center;gap:5px;width:100%;padding:0;border:0;background:none;color:var(--ink);cursor:pointer}
.pol-lk canvas{display:block;width:100%;height:auto;aspect-ratio:var(--pol-thumb,88.47 / 107.52);border-radius:1px;box-shadow:0 1px 3px rgba(0,0,0,.28);outline:2px solid transparent;outline-offset:2px;transition:outline-color var(--ease),transform var(--ease)}
.pol-lk span{max-width:100%;font-family:var(--sans);font-size:11px;font-weight:600;line-height:1.25;text-align:center;color:var(--muted);overflow-wrap:break-word;hyphens:auto}
.pol-lk span:lang(ko){word-break:keep-all}
.pol-lk:hover canvas{transform:translateY(-1px)}
.pol-lk[aria-pressed="true"] canvas{outline-color:var(--accent)}
.pol-lk[aria-pressed="true"] span{color:var(--ink)}
.pol-lk:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
@media (prefers-reduced-motion:reduce){ .pol-lk canvas{transition:none} .pol-lk:hover canvas{transform:none} }
/* 색 견본(테두리·펜) */
.pol-swatches{display:flex;flex-wrap:wrap;gap:5px}
.pol-sw{position:relative;width:26px;height:26px;padding:0;border:1px solid rgba(0,0,0,.2);border-radius:50%;background:var(--c);cursor:pointer;transition:box-shadow var(--ease)}
:root[data-theme="dark"] .pol-sw{border-color:rgba(255,255,255,.25)}
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]) .pol-sw{border-color:rgba(255,255,255,.25)} }
.pol-sw[aria-pressed="true"],.pol-sw.is-on{box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--accent)}
.pol-sw:focus-visible,.pol-sw--pick:focus-within{outline:2px solid var(--ink);outline-offset:4px}
.pol-sw--pick{display:inline-block;box-sizing:border-box;background:conic-gradient(#f2c7cf,#f3e09c,#c7e4d2,#c0d9ee,#c9b8e8,#f2c7cf)}
.pol-sw--pick input{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;border:0;opacity:0;cursor:pointer}
/* 저장 줄(인화지 바로 아래, 툴 폭 전체) */
.pol-save{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;padding:12px 16px;border-top:1px solid var(--soft)}
.pol-out{flex:1 1 220px;min-width:0;margin:0;font-family:var(--sans);font-size:12px;line-height:1.5;color:var(--muted);font-variant-numeric:tabular-nums}
.pol-acts{display:flex;flex-wrap:wrap;gap:6px;margin-left:auto}
@container pol (max-width:520px){ .pol-save > .v2-label{flex-basis:100%} }
/* 아래: 글씨 | 효과 */
.pol-tray{display:grid;grid-template-columns:minmax(0,1fr);border-top:1px solid var(--soft)}
.pol-tray > div{min-width:0;padding:14px 16px}
.pol-tray > div + div{border-top:1px solid var(--soft)}
@container pol (min-width:600px){ .pol-tray{grid-template-columns:minmax(0,1fr) minmax(0,1fr)} .pol-tray > div + div{border-top:0;border-left:1px solid var(--soft)} }
.pol-pen{display:flex;flex-direction:column;gap:10px}
.pol-pen .pol-sh{margin:0}
.pol-ff select{display:block;width:100%;height:var(--v2-ctl,42px);padding:0 10px;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);font-family:var(--sans);font-size:14px;color:var(--ink)}
.pol-ff select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.pol-penrow{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 14px}
.pol-daterow{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.pol-daterow small{font-family:var(--sans);font-size:12px;line-height:1.45;color:var(--muted)}
/* 막대 줄: 라벨 | 막대 | 값 (효과는 라벨 열 = 가장 긴 라벨) */
.pol-fx{display:grid;grid-template-columns:max-content minmax(0,1fr) 3.2em;align-items:center;gap:2px 10px;align-content:start}
.pol-fx .pol-sh{grid-column:1 / -1}
.pol-fx .pol-sl{display:contents}
.pol-pen .pol-sl{display:grid;grid-template-columns:max-content minmax(0,1fr) 3.2em;align-items:center;gap:10px}
.pol-sl label{font-family:var(--sans);font-size:12px;font-weight:600;line-height:1.3;color:var(--ink)}
.pol-sl input{width:100%;min-width:0;height:28px;margin:0;accent-color:var(--ink)}
.pol-sl output{font-family:var(--mono);font-size:12px;font-weight:600;text-align:right;color:var(--ink);font-variant-numeric:tabular-nums}
.pol-reset{display:inline-flex;align-items:center;gap:4px;padding:2px 0;border:0;background:none;font-family:var(--sans);font-size:12px;font-weight:600;color:var(--muted);cursor:pointer}
.pol-reset .i{width:13px;height:13px}
.pol-reset:hover{color:var(--ink)}
.pol-reset:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.pol-status{margin:0;padding:0 16px}
.pol-status:not(:empty){padding:10px 16px 12px;border-top:1px solid var(--soft)}
