@charset "utf-8";
/*
 * 구정 스킨
 *
 * 아카이브 스킨의 style.css(99KB)와 완전히 분리한 파일이다. 두 화면은
 * 성격이 다르다 — 아카이브는 사진 한 장이 주인공이고, 구정은 행사가
 * 주인공이며 사진은 그 행사의 기록이다. 그래서 아카이브 쪽을 고쳐도
 * 이 화면은 그대로여야 하고, 반대도 그래야 한다.
 *
 * 색은 테마(arc_editorial)의 변수를 그대로 쓴다. 테마가 없는 곳에
 * 붙어도 깨지지 않도록 모든 var() 에 대비값을 적어 둔다.
 */

.arc-gj{
  --gj-navy:var(--navy,#0b3451);
  --gj-navy-dark:var(--navy-dark,#07263c);
  --gj-line:var(--line,#dbd5ca);
  --gj-text:var(--text,#1f1c19);
  --gj-muted:var(--muted,#6f6a64);
  --gj-bg2:var(--bg2,#fbfaf6);
  --gj-radius:14px;
  max-width:1600px;
  margin:0 auto;
  padding:34px 40px 80px;
  color:var(--gj-text);
}

.arc-gj-sr{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}

/* ── 머리말 ───────────────────────────────────────────────── */
.arc-gj-head{margin-bottom:26px}
.arc-gj-crumb{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--gj-muted);margin-bottom:12px}
.arc-gj-crumb a:hover{color:var(--gj-navy)}
.arc-gj-crumb strong{font-weight:500;color:var(--gj-text)}
.arc-gj-head h1{
  margin:0;font-family:'Noto Serif KR',serif;font-weight:600;
  font-size:38px;line-height:1.25;letter-spacing:-.01em;
}
.arc-gj-lead{margin:10px 0 0;font-size:15px;color:var(--gj-muted);max-width:760px}

/* ── 찾기 ─────────────────────────────────────────────────── */
.arc-gj-search{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  margin:22px 0 0;padding:0;
}
.arc-gj-search input[type=text]{
  flex:1 1 320px;min-width:0;height:48px;padding:0 16px;
  border:1px solid var(--gj-line);border-radius:10px;background:#fff;
  font-size:15px;color:var(--gj-text);font-family:inherit;
}
.arc-gj-search input[type=text]:focus{outline:none;border-color:var(--gj-navy);box-shadow:0 0 0 3px rgba(11,52,81,.10)}
.arc-gj-search button{
  height:48px;padding:0 24px;border:0;border-radius:10px;
  background:var(--gj-navy);color:#fff;font-size:15px;font-weight:500;
  font-family:inherit;cursor:pointer;
}
.arc-gj-search button:hover{background:var(--gj-navy-dark)}
.arc-gj-search-reset{font-size:14px;color:var(--gj-muted);padding:0 6px}
.arc-gj-search-reset:hover{color:var(--gj-navy);text-decoration:underline}

.arc-gj-summary{
  margin:16px 0 20px;padding-bottom:14px;
  border-bottom:1px solid var(--gj-line);
  font-size:14px;color:var(--gj-muted);
}
.arc-gj-summary b{color:var(--gj-navy);font-weight:700}
.arc-gj-summary strong{color:var(--gj-text)}

/* ── 행사 카드 ────────────────────────────────────────────── */
.arc-gj-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(258px,1fr));
  gap:26px 22px;
}
.arc-gj-card{min-width:0}
.arc-gj-card a{display:block}

.arc-gj-thumb{
  position:relative;aspect-ratio:16/9;overflow:hidden;
  border-radius:var(--gj-radius);background:var(--gj-bg2);
  border:1px solid var(--gj-line);
}
.arc-gj-thumb img{
  width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .5s cubic-bezier(.2,.8,.3,1);
}
.arc-gj-card a:hover .arc-gj-thumb img{transform:scale(1.05)}

/* 썸네일이 아직 준비되지 않은 행사. 원본을 대신 걸지 않는다 —
   구정 원본은 한 장에 10MB가 넘는 것이 흔해서 목록이 마비된다. */
.arc-gj-blank{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  color:#c3bcb0;
}
.arc-gj-blank svg{width:38px;height:38px;fill:none;stroke:currentColor;stroke-width:1.4;
  stroke-linecap:round;stroke-linejoin:round}
.arc-gj-thumb.is-blank{background:var(--gj-bg2)}

.arc-gj-count{
  position:absolute;right:10px;bottom:10px;
  display:inline-flex;align-items:baseline;gap:2px;
  padding:4px 9px;border-radius:999px;
  background:rgba(7,38,60,.78);color:#fff;
  font-size:12px;line-height:1;letter-spacing:.01em;
  backdrop-filter:blur(2px);
}
.arc-gj-count b{font-size:13px;font-weight:700}

.arc-gj-body{padding:12px 2px 0}
.arc-gj-body h2{
  margin:0;font-size:16px;font-weight:500;line-height:1.45;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.arc-gj-card a:hover .arc-gj-body h2{color:var(--gj-navy)}
.arc-gj-meta{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  margin-top:7px;font-size:13px;color:var(--gj-muted);
}
.arc-gj-place{position:relative;padding-left:11px}
.arc-gj-place::before{
  content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);
  width:3px;height:3px;border-radius:50%;background:var(--gj-line);
}

/* ── 빈 목록·페이지 ──────────────────────────────────────── */
.arc-gj-empty{
  padding:90px 20px;text-align:center;color:var(--gj-muted);font-size:16px;
  background:var(--gj-bg2);border-radius:var(--gj-radius);
}
.arc-gj-paging{margin-top:46px;display:flex;justify-content:center}
.arc-gj-paging .pg_wrap{display:flex;justify-content:center}
.arc-gj-paging .pg{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}
.arc-gj-paging .pg_page,.arc-gj-paging .pg_current{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:38px;height:38px;padding:0 10px;border-radius:9px;
  font-size:14px;text-decoration:none;
}
.arc-gj-paging .pg_page{border:1px solid var(--gj-line);color:var(--gj-muted);background:#fff}
.arc-gj-paging .pg_page:hover{border-color:var(--gj-navy);color:var(--gj-navy)}
.arc-gj-paging .pg_current{background:var(--gj-navy);color:#fff;font-weight:600}

.arc-gj-actions{margin-top:26px;display:flex;justify-content:flex-end;gap:8px}
.arc-gj-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  height:44px;padding:0 20px;border-radius:10px;border:1px solid var(--gj-line);
  background:#fff;color:var(--gj-text);font-size:15px;font-family:inherit;cursor:pointer;
}
.arc-gj-btn:hover{border-color:var(--gj-navy);color:var(--gj-navy)}
.arc-gj-btn.p{background:var(--gj-navy);border-color:var(--gj-navy);color:#fff}
.arc-gj-btn.p:hover{background:var(--gj-navy-dark);color:#fff}

/* ── 좁은 화면 ───────────────────────────────────────────── */
@media (max-width:1024px){
  .arc-gj{padding:26px 22px 60px}
  .arc-gj-head h1{font-size:30px}
  .arc-gj-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:22px 16px}
}
@media (max-width:640px){
  .arc-gj{padding:20px 16px 50px}
  .arc-gj-head h1{font-size:25px}
  .arc-gj-lead{font-size:14px}
  /* 폰에서는 한 줄에 한 장 (2026-08-30).
     두 장씩 놓으면 한 칸이 150px 남짓이라 사진도 제목도 눈에 안 들어온다.
     한 장씩 크게 보여 주는 편이 낫다 — 대신 처음에 여섯 장만 펴고 나머지는
     [더 보기]로 이어 붙인다(아래 skin.js). */
  .arc-gj-grid{grid-template-columns:1fr;gap:16px}
  .arc-gj-body h2{font-size:14px}
  /* 찾기 칸과 단추를 한 줄에 (2026-08-30).
     input 에 flex-basis 100% 를 주고 있어서 단추가 다음 줄로 밀렸다.
     칸은 남는 만큼 늘리고(min-width:0 이 없으면 글자 길이만큼 버틴다),
     단추는 제 크기를 지키게 한다. */
  .arc-gj-search input[type=text]{flex:1 1 auto;min-width:0}
  .arc-gj-search button,.arc-gj-search .arc-gj-btn{flex:0 0 auto}

  /* 페이지 줄이 두 줄로 접히지 않게 (2026-08-30).
     번호를 다섯 개로 줄여도 앞뒤에 [처음][다음][맨끝] 이 붙으면 여덟 칸이라
     375px 에서 넘쳤다. 칸 크기와 사이를 줄여 한 줄에 앉힌다. */
  .arc-gj-paging{margin-top:34px}
  .arc-gj-paging .pg{gap:4px;flex-wrap:nowrap}
  .arc-gj-paging .pg_page,.arc-gj-paging .pg_current{
    min-width:32px;height:34px;padding:0 6px;font-size:13px;border-radius:8px;
  }

}

/* ═══════════════════════════════════════════════════════════
   행사 상세
   ═══════════════════════════════════════════════════════════ */
.arc-gj-view .arc-gj-head{margin-bottom:22px}
.arc-gj-vmeta{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  margin-top:14px;font-size:14px;color:var(--gj-muted);
}
.arc-gj-vmeta > *{position:relative}
.arc-gj-vmeta > * + *::before{
  content:'';position:absolute;left:-8px;top:50%;transform:translateY(-50%);
  width:1px;height:11px;background:var(--gj-line);
}
.arc-gj-vcount b{color:var(--gj-navy);font-weight:700}

.arc-gj-desc{
  margin:22px 0 0;padding:20px 22px;
  background:var(--gj-bg2);border-radius:var(--gj-radius);
  font-size:15.5px;line-height:1.75;color:#3a352f;
}
/* 본문에 섞여 들어온 이미지는 감춘다 — 사진은 아래 사진 칸에서 보여 준다.
   본문 이미지는 원본을 그대로 거는 경우가 많아 그냥 두면 10MB짜리가 뜬다. */
.arc-gj-desc img{display:none}

.arc-gj-tags{display:flex;flex-wrap:wrap;gap:7px;list-style:none;margin:16px 0 0;padding:0}
.arc-gj-tags a{
  display:inline-block;padding:5px 11px;border-radius:999px;
  border:1px solid var(--gj-line);background:#fff;
  font-size:13px;color:var(--gj-muted);
}
.arc-gj-tags a:hover{border-color:var(--gj-navy);color:var(--gj-navy);background:#f5f8fb}

/* ── 도구 막대 ───────────────────────────────────────────── */
.arc-gj-toolbar{
  display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  margin:30px 0 16px;padding-bottom:14px;border-bottom:1px solid var(--gj-line);
}
.arc-gj-toolbar-left{font-size:15px;color:var(--gj-muted)}
.arc-gj-toolbar-left b{color:var(--gj-navy);font-weight:700;font-size:17px}
.arc-gj-toolbar-right{display:flex;gap:8px;flex-wrap:wrap}
.arc-gj-toolbar .arc-gj-btn{height:40px;padding:0 15px;font-size:14px}

/* ── 왼쪽 사진칸 80% + 오른쪽 장바구니 20% ───────────────── */
.arc-gj-work{
  display:flex;align-items:flex-start;gap:24px;
  margin-top:30px;
}
.arc-gj-main{flex:1 1 80%;min-width:0}
.arc-gj-main .arc-gj-toolbar{margin-top:0}

/* ── 사진 칸 — 한 줄에 두 장, 자르지 않는다 ────────────────
 *
 * 예전에는 모든 사진을 16:9 로 잘라 맞췄다. 칸이 커지니 잘려 나간
 * 부분이 눈에 띄어서, 원래 비율 그대로 놓기로 했다.
 *
 * 방법은 간단하다. 한 줄을 flex 로 두고 각 칸의 flex-grow 를 그 사진의
 * 가로세로비(--ar)로 준다. 그러면 폭이 비율에 비례해 나뉘고,
 *   높이 = 폭 ÷ 비율 = (전체폭 ÷ 비율의 합)
 * 이 되어 두 칸의 높이가 저절로 같아진다. 줄도 정확히 꽉 찬다.
 * 자바스크립트가 필요 없고 구멍도 생기지 않는다.
 */
.arc-gj-photos{display:flex;flex-direction:column;gap:14px}
/* align-items 를 stretch 로 둔다. 폭이 소수점으로 나뉘다 보니 비율로 구한
   높이가 두 칸에서 1~2px 어긋나 계단처럼 보였다. 늘려서 줄 높이에 맞추면
   딱 떨어진다 — 이때 생기는 1px 안팎의 잘림은 눈에 띄지 않는다. */
.arc-gj-row{display:flex;gap:14px;align-items:stretch}

/* 마지막 줄에 한 장만 남았을 때. 그냥 두면 혼자 줄 전체를 차지해
   유독 커 보인다 — 두 장일 때와 같은 폭으로 묶어 둔다. */
.arc-gj-row.is-alone > .arc-gj-ph{flex:0 0 calc(50% - 7px)}

.arc-gj-ph{
  position:relative;margin:0;min-width:0;
  flex:var(--ar,1.5) 1 0;
  aspect-ratio:var(--ar,1.5);
  overflow:hidden;
  border-radius:10px;background:var(--gj-bg2);border:1px solid var(--gj-line);
  cursor:grab;
}
/* 잡을 수 있다는 뜻으로 펼친 손, 누르면 쥔 손. 관리자 컬렉션과 같다.
   (돋보기는 크게 보기만 되는 것처럼 읽혀서 바꿨다 — 여기서는 끌어서
   장바구니에 담는 것이 더 자주 쓰는 동작이다.) */
.arc-gj-ph:active{cursor:grabbing}
.arc-gj-ph img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .45s cubic-bezier(.2,.8,.3,1)}
.arc-gj-ph:hover img{transform:scale(1.06)}
.arc-gj-ph::after{
  content:'';position:absolute;inset:0;background:rgba(7,38,60,.22);
  opacity:0;transition:opacity .2s;pointer-events:none;
}
.arc-gj-ph:hover::after{opacity:1}

.arc-gj-ph-cart{
  position:absolute;right:8px;top:8px;z-index:2;
  display:flex;align-items:center;justify-content:center;
  height:32px;padding:0 11px 0 9px;border:0;border-radius:999px;
  background:rgba(255,255,255,.95);color:#1f1c19;
  font-family:inherit;font-size:13px;font-weight:600;line-height:1;
  letter-spacing:-.01em;white-space:nowrap;cursor:pointer;
  box-shadow:0 1px 5px rgba(7,38,60,.28);
  opacity:0;transform:translateY(-4px);transition:opacity .18s,transform .18s;
}
.arc-gj-ph-cart-add,.arc-gj-ph-cart-del{display:flex;align-items:center;gap:5px}
.arc-gj-ph-cart svg{
  width:18px;height:18px;flex:none;fill:none;stroke:currentColor;
  stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;
}
.arc-gj-ph:hover .arc-gj-ph-cart,.arc-gj-ph-cart:focus{opacity:1;transform:none}
.arc-gj-ph-cart:hover{background:#fff}
.arc-gj-ph-cart:disabled{opacity:.5;cursor:default}

/* 담기 / 빼기 — 아이콘과 글자를 함께 바꾼다(2026-08-30).
   ✕ 만 두었더니 사진을 지우는 단추로 읽혔다. 담긴 사진은 남색 [빼기]
   가 되어, 무엇이 빠지는지 글자로 못박는다. 폰에서는 장바구니 상자가
   화면 위쪽에 있어, 빼려면 여기서 눌러야 한다. */
.arc-gj-ph-cart-del{display:none}
.arc-gj-ph.is-in-cart .arc-gj-ph-cart-add{display:none}
.arc-gj-ph.is-in-cart .arc-gj-ph-cart-del{display:flex}
.arc-gj-ph.is-in-cart .arc-gj-ph-cart{
  opacity:1;transform:none;
  background:var(--gj-navy);color:#fff;
}
.arc-gj-ph.is-in-cart .arc-gj-ph-cart:hover{background:#12525f}
.arc-gj-ph.is-in-cart{outline:2px solid var(--gj-navy);outline-offset:-2px}

/* 터치 기기에는 마우스 올림이 없다 — 단추를 늘 보이게, 손가락 크기로 */
@media (hover:none){
  .arc-gj-ph-cart{opacity:1;transform:none;height:38px;padding:0 14px 0 11px;font-size:14px}
  .arc-gj-ph-cart svg{width:20px;height:20px}
}


/* ── 공공누리 ────────────────────────────────────────────── */
.arc-gj-kogl{margin-top:46px;padding-top:26px;border-top:1px solid var(--gj-line)}
.arc-gj-kogl h2{margin:0 0 14px;font-size:16px;font-weight:600}
.arc-gj-kogl-card{
  display:flex;align-items:flex-start;gap:20px;flex-wrap:wrap;
  padding:20px 22px;background:var(--gj-bg2);border-radius:var(--gj-radius);
}
.arc-gj-kogl-img{width:170px;height:auto;flex:0 0 auto}
.arc-gj-kogl-text{flex:1 1 320px;min-width:0}
.arc-gj-kogl-text strong{display:block;font-size:16px;margin-bottom:6px}
.arc-gj-kogl-text p{margin:0 0 10px;font-size:14px;color:var(--gj-muted);line-height:1.65}
.arc-gj-kogl-text ul{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding:0}
.arc-gj-kogl-text li{
  padding:4px 10px;border-radius:999px;background:#fff;
  border:1px solid var(--gj-line);font-size:12.5px;color:var(--gj-muted);
}
.arc-gj-kogl.is-none .arc-gj-kogl-text strong{color:#9a938a}

/* ── 아래 단추줄 ─────────────────────────────────────────── */
.arc-gj-nav{
  display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;
  margin-top:34px;padding-top:22px;border-top:1px solid var(--gj-line);
}
.arc-gj-nav-mid,.arc-gj-nav-right{display:flex;gap:8px;flex-wrap:wrap}

/* ── 크게 보기 ───────────────────────────────────────────── */
body.arc-gj-lb-open{overflow:hidden}
.arc-gj-lb{
  position:fixed;inset:0;z-index:9000;
  background:rgba(10,12,16,.94);
  display:flex;align-items:center;justify-content:center;
  padding:56px 76px;
}
.arc-gj-lb[hidden]{display:none}
.arc-gj-lb-stage{
  margin:0;max-width:100%;max-height:100%;
  display:flex;flex-direction:column;align-items:center;gap:14px;
}
.arc-gj-lb-stage img{
  max-width:100%;max-height:calc(100vh - 190px);
  object-fit:contain;border-radius:6px;background:#15181d;
  /* 눌러서 닫는다 — ✕ 를 없앤 대신이다. 돋보기(zoom-out)를 써 봤더니
     확대/축소를 하는 것처럼 읽혀서 손 모양으로 바꿨다. */
  cursor:pointer;
}
.arc-gj-lb.is-noimg .arc-gj-lb-stage img{display:none}
.arc-gj-lb.is-noimg .arc-gj-lb-stage::before{
  content:'큰 사진을 준비하는 중입니다. 원본 내려받기는 바로 됩니다.';
  display:block;padding:60px 30px;color:#c9cdd4;font-size:15px;text-align:center;
}
.arc-gj-lb-stage figcaption{
  display:flex;align-items:center;gap:16px;flex-wrap:wrap;justify-content:center;
  color:#e8eaee;font-size:13.5px;
}
.arc-gj-lb-name{font-weight:500;max-width:420px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.arc-gj-lb-info{color:#98a0ab}
.arc-gj-lb-tools{display:flex;gap:8px}
.arc-gj-lb-tools .arc-gj-btn{
  height:38px;padding:0 14px;font-size:13.5px;
  background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.22);color:#fff;
}
.arc-gj-lb-tools .arc-gj-btn:hover{background:rgba(255,255,255,.20);color:#fff;border-color:rgba(255,255,255,.4)}

.arc-gj-lb-prev,.arc-gj-lb-next{
  position:absolute;z-index:2;border:0;cursor:pointer;
  background:rgba(255,255,255,.10);color:#fff;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
}
.arc-gj-lb-prev,.arc-gj-lb-next{top:50%;transform:translateY(-50%);width:52px;height:52px;font-size:30px;line-height:1}
.arc-gj-lb-prev{left:20px}
.arc-gj-lb-next{right:20px}
.arc-gj-lb-prev:hover,.arc-gj-lb-next:hover{background:rgba(255,255,255,.24)}

/* ── 알림 ────────────────────────────────────────────────── */
.arc-gj-toast{
  position:fixed;left:50%;bottom:34px;transform:translate(-50%,14px);
  z-index:9500;padding:13px 22px;border-radius:11px;
  background:rgba(11,52,81,.96);color:#fff;font-size:14.5px;
  opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;
  box-shadow:0 12px 30px rgba(0,0,0,.24);
}
.arc-gj-toast.is-on{opacity:1;transform:translate(-50%,0)}
.arc-gj-toast.is-bad{background:rgba(150,42,42,.96)}

@media (max-width:1024px){
  .arc-gj-photos,.arc-gj-row{gap:10px}
  .arc-gj-lb{padding:44px 16px}
  .arc-gj-lb-prev,.arc-gj-lb-next{width:44px;height:44px;font-size:26px}
}
@media (max-width:640px){
  /* 폰에서는 한 줄에 사진 한 장 (2026-08-30).
     두 장씩 놓으면 한 장이 160px 남짓이라 무엇이 찍혔는지 알아볼 수 없다.
     한 장씩 크게 보여 준다 — 비율은 그대로 지킨다(--ar). */
  .arc-gj-photos,.arc-gj-row{gap:8px}
  .arc-gj-row{flex-direction:column}
  .arc-gj-row > .arc-gj-ph,
  .arc-gj-row.is-alone > .arc-gj-ph{flex:1 1 auto;width:100%}
  .arc-gj-desc{padding:16px;font-size:14.5px}
  .arc-gj-toolbar{margin-top:22px}
  .arc-gj-toolbar-right{width:100%}
  .arc-gj-toolbar-right .arc-gj-btn{flex:1}
  .arc-gj-kogl-img{width:130px}
  .arc-gj-lb{padding:16px 10px 20px}
  .arc-gj-lb-stage img{max-height:calc(100vh - 230px)}
  .arc-gj-lb-prev{left:6px}
  .arc-gj-lb-next{right:6px}
  .arc-gj-nav{gap:8px}
  .arc-gj-nav > *{flex:1 1 auto}
}

/* ═══════════════════════════════════════════════════════════
   오른쪽 장바구니 상자
   ═══════════════════════════════════════════════════════════ */
.arc-gj-cart{
  flex:0 0 20%;max-width:20%;min-width:210px;
  position:sticky;top:96px;                 /* 머리띠(sticky header) 아래에 붙인다 */
  display:flex;flex-direction:column;
  border:1px solid var(--gj-line);border-radius:var(--gj-radius);
  background:#fff;overflow:hidden;
  box-shadow:0 6px 20px rgba(30,25,18,.05);
}

.arc-gj-cart-head{
  padding:15px 18px;border-bottom:1px solid var(--gj-line);
  background:#f7f9fb;font-size:15px;font-weight:500;
}
.arc-gj-cart-head b{color:var(--gj-navy);font-weight:700;font-size:17px;margin-left:4px}

.arc-gj-cart-body{
  position:relative;flex:1 1 auto;
  /* 담은 사진이 몇 장 안 될 때도 상자가 넉넉해 보이게 기본 높이를 준다.
     다만 640px 을 그냥 못박으면 노트북처럼 세로가 짧은 화면에서 상자가
     화면 밖으로 밀려 아래 단추([비우기]·[장바구니 보기])가 안 보인다.
     그래서 화면 높이에서 머리띠·머리말·단추줄 몫을 뺀 값과 견주어
     둘 중 작은 쪽을 쓴다. */
  min-height:min(640px, calc(100vh - 260px));
  max-height:calc(100vh - 250px);
  overflow-y:auto;padding:14px;
}
.arc-gj-cart-guide{
  display:none;margin:0;padding:34px 10px;text-align:center;
  color:#9aa2ac;font-size:13.5px;line-height:1.8;
}
.arc-gj-cart.is-empty .arc-gj-cart-guide{display:block}

.arc-gj-cart-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}

.arc-gj-ci{
  position:relative;aspect-ratio:4/3;overflow:hidden;
  border-radius:8px;background:var(--gj-bg2);border:1px solid var(--gj-line);
}
.arc-gj-ci img{width:100%;height:100%;object-fit:cover;display:block}
.arc-gj-ci-blank{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  color:#b9b2a7;font-size:12px;
}
.arc-gj-ci-del{
  position:absolute;right:4px;top:4px;
  width:22px;height:22px;padding:0;border:0;border-radius:6px;
  background:rgba(15,20,26,.62);color:#fff;
  font-size:11px;line-height:1;cursor:pointer;
  opacity:0;transition:opacity .15s;
}
.arc-gj-ci:hover .arc-gj-ci-del,.arc-gj-ci-del:focus{opacity:1}
.arc-gj-ci-del:hover{background:rgba(150,42,42,.9)}
.arc-gj-ci-del:disabled{opacity:.35;cursor:default}
@media (hover:none){ .arc-gj-ci-del{opacity:1} }

/* 놓자마자 들어온 칸. 서버 대답을 기다리는 동안에도 이미 보인다.
   톡 튀어드는 짧은 움직임을 주어 "들어갔다"가 눈에 남게 한다. */
.arc-gj-ci.is-pending{animation:arc-gj-pop .16s cubic-bezier(.2,.8,.3,1)}
@keyframes arc-gj-pop{
  from{transform:scale(.78);opacity:.25}
  to{transform:none;opacity:1}
}

.arc-gj-cart-foot{
  display:flex;gap:8px;padding:12px 14px;
  border-top:1px solid var(--gj-line);background:#fbfcfd;
}
.arc-gj-cart-foot .arc-gj-btn{flex:1;height:42px;padding:0 10px;font-size:14px}

/* 사진을 끌어와 상자 위에 있을 때 */
.arc-gj-cart.is-drop{
  border-color:var(--gj-navy);
  box-shadow:0 0 0 3px rgba(11,52,81,.14),0 10px 26px rgba(30,25,18,.10);
}
.arc-gj-cart.is-drop .arc-gj-cart-body{background:#f2f7fb}

/* ── 끌고 가는 느낌 ─────────────────────────────────────── */
/* 끄는 동안에는 화면 어디에 있든 '쥐고 있는' 커서를 유지한다 */
body.arc-gj-dragging,body.arc-gj-dragging *{cursor:grabbing!important}
body.arc-gj-dragging{user-select:none}

/* 유령은 겉과 속으로 나눠 둔다.
     겉(.arc-gj-ghost)    — 위치만 맡는다. 전환효과가 없어야 커서를 즉시 따라온다.
     속(.arc-gj-ghost-in) — 크기만 맡는다. 잡은 사진 크기로 떠올랐다가
                           손에 쥘 만한 크기로 오므라든다.
   한 요소에 둘을 같이 걸면, 크기가 줄어드는 동안 따라오는 움직임까지
   느려져 끌리는 맛이 없어진다. */
.arc-gj-ghost{
  position:fixed;left:0;top:0;z-index:9800;pointer-events:none;
  will-change:transform;
}
.arc-gj-ghost-in{
  width:100%;height:100%;
  border-radius:10px;overflow:hidden;opacity:.92;
  box-shadow:0 18px 40px rgba(10,20,40,.38),0 0 0 2px rgba(255,255,255,.9) inset;
  transform:scale(1);
  transition:transform .17s cubic-bezier(.2,.8,.3,1);
  will-change:transform;
}
.arc-gj-ghost img{
  width:100%;height:100%;object-fit:cover;display:block;
  transform:scale(1.04) rotate(-2deg);
}
.arc-gj-ph.is-dragging{opacity:.45}

/* 사진 번호 — 몇 번째 사진인지 알려 준다 */
.arc-gj-ph-no{
  position:absolute;left:8px;top:8px;z-index:2;
  min-width:24px;height:22px;padding:0 7px;border-radius:6px;
  display:inline-flex;align-items:center;justify-content:center;
  background:rgba(7,38,60,.62);color:#fff;font-size:11.5px;line-height:1;
  opacity:0;transition:opacity .18s;
}
.arc-gj-ph:hover .arc-gj-ph-no{opacity:1}

.arc-gj-hint{
  display:block;font-style:normal;font-size:12.5px;color:#9aa2ac;margin-top:3px;
}

/* ── 좁은 화면 — 오른쪽 상자를 아래로 내린다 ─────────────── */
@media (max-width:1100px){
  .arc-gj-work{flex-direction:column;gap:18px}
  .arc-gj-main{flex:1 1 auto;width:100%}
  .arc-gj-cart{
    flex:1 1 auto;max-width:none;width:100%;
    position:static;order:-1;             /* 사진보다 위에 둔다 — 담긴 것을 먼저 본다 */
  }
  /* 상자를 두 줄 높이로 묶는다(2026-08-30). 풀어 두었더니 한 줄이 찰
     때마다 상자가 자라 아래 사진을 밀어냈다 — 담을수록 화면이 흔들린다.
     넘치는 것은 상자 안에서 굴린다(skin.js revealInBox). */
  .arc-gj-cart-body{max-height:250px;min-height:0}
  .arc-gj-cart-items{grid-template-columns:repeat(auto-fill,minmax(110px,1fr))}
  .arc-gj-hint{display:none}               /* 손가락으로는 끌어놓기를 쓰지 않는다 */
}

/* ── 물어보기 레이어 ─────────────────────────────────────
   브라우저 기본 confirm() 은 주소가 그대로 적혀 나오고 생김새도 사이트와
   따로 논다. 장바구니 화면(cart.php)이 쓰는 것과 같은 모양으로 맞췄다. */
body.arc-gj-ask-open{overflow:hidden}
.arc-gj-ask{
  /* 이 레이어는 .arc-gj 바깥(본문 맨 끝)에 둔다. 그래서 색 변수가 닿지 않아
     [확인] 단추가 흰 바탕에 흰 글씨로 사라졌었다 — 여기서 다시 정해 준다. */
  --gj-navy:var(--navy,#0b3451);
  --gj-navy-dark:var(--navy-dark,#07263c);
  --gj-line:var(--line,#dbd5ca);
  --gj-text:var(--text,#1f1c19);
  position:fixed;inset:0;z-index:9600;display:flex;align-items:center;justify-content:center;padding:20px;
}
.arc-gj-ask[hidden]{display:none}
.arc-gj-ask-bg{position:absolute;inset:0;background:rgba(12,16,22,.52);backdrop-filter:blur(2px)}
.arc-gj-ask-panel{
  position:relative;width:min(420px,100%);
  padding:30px 28px 22px;border-radius:16px;background:#fff;
  box-shadow:0 24px 60px rgba(10,20,40,.28);
  text-align:center;
  animation:arc-gj-ask-in .16s cubic-bezier(.2,.8,.3,1);
}
@keyframes arc-gj-ask-in{
  from{opacity:0;transform:translateY(10px) scale(.97)}
  to{opacity:1;transform:none}
}
.arc-gj-ask-icon{
  display:inline-flex;align-items:center;justify-content:center;
  width:46px;height:46px;border-radius:50%;
  background:#f2f7fb;color:var(--gj-navy,#0b3451);margin-bottom:14px;
}
.arc-gj-ask-icon svg{width:24px;height:24px}
.arc-gj-ask-msg{
  margin:0 0 22px;font-size:15.5px;line-height:1.7;color:#2e2925;
  white-space:pre-line;   /* 줄바꿈을 넣은 그대로 보여 준다 */
}
.arc-gj-ask-foot{display:flex;gap:8px}
.arc-gj-ask-foot .arc-gj-btn{flex:1;height:46px}


/* 폰 — 설명글과 해시태그는 감춘다 (2026-08-30)
   ----------------------------------------------------------------------------
   자료 하나를 열면 사진보다 먼저 설명 넉 줄과 해시태그 열댓 개가 나와,
   정작 보러 온 사진이 화면 아래로 밀렸다. 폰에서는 둘 다 감춘다.

   지우지 않고 감추는 까닭 — 해시태그는 누르면 그 낱말로 다시 찾아가는 길이고
   검색에도 쓰인다. 글은 그대로 두고 화면에서만 뺀다.

   PC 는 그대로다. 641px 이상은 손대지 않는다. */
@media (max-width:640px){
  .arc-gj-desc,
  .arc-gj-tags{display:none}
}

/* 폰 — 장바구니 상자 대신 아래 띠 (2026-08-30)
   ----------------------------------------------------------------------------
   오른쪽 장바구니 상자는 좁은 화면에서 사진 위로 올라오는데(1100px 규칙),
   폰에서는 그것만으로 첫 화면이 다 찼다. 게다가 상자가 안내하는 동작
   (끌어다 놓기)은 마우스에서만 되는 것이라, 폰에서는 할 수 없는 일을
   알려 주고 있었다.

   폰에서는 상자를 감추고, 담긴 것이 있을 때만 아래 띠를 띄운다.
   담는 일은 사진마다 붙은 [담기] 단추가 한다.

   띠는 기본이 감춤이다 — PC 에서는 어떤 경우에도 나오지 않는다. */
.arc-gj-cartbar{display:none}

@media (max-width:640px){
  .arc-gj-cart{display:none}

  .arc-gj-cartbar{
    position:fixed;left:0;right:0;bottom:0;z-index:60;
    display:flex;align-items:center;justify-content:space-between;gap:12px;
    /* 아이폰 아래 가로줄(홈 인디케이터) 자리를 비켜 준다 */
    padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px));
    background:var(--gj-navy,#12365a);color:#fff;
    box-shadow:0 -2px 12px rgba(17,34,51,.18);
  }
  .arc-gj-cartbar.is-empty{display:none}
  .arc-gj-cartbar__n{font-size:14.5px;font-weight:700}
  .arc-gj-cartbar__n b{font-size:17px}
  .arc-gj-cartbar__go{
    flex:none;min-height:38px;padding:0 16px;display:inline-flex;align-items:center;
    border-radius:8px;background:#fff;color:var(--gj-navy,#12365a);
    font-size:13.5px;font-weight:700;text-decoration:none;
  }
  /* 알림쪽지(toast)가 띠에 겹치지 않게 그만큼 올려 준다 */
  body.arc-gj-has-cartbar .arc-gj-toast{bottom:calc(76px + env(safe-area-inset-bottom,0px))}

  /* 띠가 마지막 줄을 가리지 않게 (skin.js 가 담긴 것이 있을 때만 붙인다) */
  body.arc-gj-has-cartbar{padding-bottom:64px}
}
