.ap-cms-overlay{position:fixed;inset:0;z-index:9100;background:rgba(7,10,20,.82);display:flex;align-items:center;justify-content:center;padding:20px}.ap-cms-overlay[hidden]{display:none}.ap-cms-panel{width:100%;max-width:640px;max-height:90vh;max-height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 40px);display:flex;flex-direction:column;background:var(--panel,#101722);border:1px solid var(--line,rgba(212,180,109,.18));border-radius:var(--radius,18px);box-shadow:var(--shadow,0 20px 60px rgba(0,0,0,.35));color:var(--text,#f4efe6);overflow:hidden}.ap-cms-header{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 12px;border-bottom:1px solid var(--line,rgba(212,180,109,.18));flex-shrink:0}.ap-cms-title{margin:0;line-height:1.2;color:var(--text,#f4efe6);font-size:clamp(22px,6.5vw,28px)}.ap-cms-close{background:none;border:none;color:var(--ap-gold-x,#d1b274);font-size:22px;cursor:pointer;padding:0 6px;flex-shrink:0}.ap-cms-close:hover{color:var(--ap-gold-x-hover,#d1b274)}.ap-cms-close{min-width:48px;min-height:48px;display:flex;align-items:center;justify-content:center}.ap-cms-account{margin-bottom:18px}.ap-cms-email{margin:0 0 3px;color:var(--text,#f4efe6);font-size:clamp(15px,4vw,17px);overflow-wrap:anywhere;word-break:normal}.ap-cms-role{margin:0;color:var(--muted,rgba(244,239,230,.68));font-size:clamp(13px,3.4vw,15px)}.ap-cms-menu-list{display:flex;flex-direction:column;gap:6px}.ap-cms-menu-list-btn{background:none;border:none;text-align:left;color:var(--text,#f4efe6);font-size:clamp(18px,4.4vw,19px);padding:12px 10px;border-radius:8px;cursor:pointer;min-height:46px;line-height:1.4}.ap-cms-menu-list-btn:hover{background:rgba(212,180,109,.08);color:var(--gold,#d4b46d)}.ap-cms-menu-list-btn-lastvisited{background:rgba(212,180,109,.1);border-left:3px solid var(--gold,#d4b46d);padding-left:7px}.ap-cms-menu-logout{margin-top:14px;color:rgba(224,122,122,.9);border-color:rgba(224,122,122,.4)}.ap-cms-menu-logout:hover{border-color:#e07a7a;color:#e07a7a}.ap-cms-account{margin-bottom:14px}.ap-cms-email{font-size:clamp(18px,4.6vw,20px);font-weight:500;margin-bottom:4px}.ap-cms-role{font-size:clamp(17px,4.2vw,19px)}.ap-cms-menu-list{gap:var(--manage-menu-gap,10px);margin:10px 0}.ap-cms-menu-list-btn{font-size:var(--manage-menu-font-size,clamp(22px,5.4vw,26px));font-weight:var(--manage-menu-font-weight,600);line-height:1.3;min-height:var(--manage-menu-min-height,60px);padding:var(--manage-menu-padding-y,17px) var(--manage-menu-padding-x,16px);margin:2px 0;border-radius:10px;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .12s ease-out}.ap-cms-menu-list-btn:active{background:rgba(212,180,109,.20)}.ap-cms-menu-logout{min-height:56px;font-size:17px;font-weight:700;border-radius:14px}.ap-cms-line-kr,.ap-cms-line-en{display:block}.ap-cms-line-en{opacity:.85;font-size:.9em;margin-top:2px}.ap-cms-h2-bi{line-height:1.3}.ap-cms-back-to-manage{margin-bottom:14px}.ap-cms-body{padding:20px 22px calc(24px + env(safe-area-inset-bottom));overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.ap-cms-body h2{font-size:clamp(20px,5.5vw,24px);margin:0 0 14px;line-height:1.3}.ap-cms-subhead{font-size:13px;color:var(--soft,rgba(244,239,230,.48));margin:20px 0 8px;text-transform:uppercase;letter-spacing:.04em}.ap-cms-dash-head{display:flex;align-items:center;gap:14px;margin-bottom:18px}.ap-cms-dash-head h2{margin:0 0 4px}.ap-cms-avatar{width:56px;height:56px;border-radius:50%;object-fit:cover;border:1px solid var(--line,rgba(212,180,109,.34))}.ap-cms-link{font-size:12.5px;color:var(--gold,#d4b46d);word-break:break-all}.ap-cms-stats{display:flex;gap:12px;margin-bottom:6px}.ap-cms-stat{flex:1;text-align:center;background:var(--bg,#0b0f14);border:1px solid var(--line,rgba(212,180,109,.18));border-radius:10px;padding:12px}.ap-cms-stat b{display:block;font-size:22px;color:var(--gold,#d4b46d)}.ap-cms-stat span{font-size:12px;color:var(--muted,rgba(244,239,230,.68))}.ap-cms-recent{list-style:none;margin:0;padding:0;font-size:13.5px}.ap-cms-recent li{padding:6px 0;border-bottom:1px solid var(--line,rgba(212,180,109,.1))}.ap-cms-bio-preview{font-size:13px;color:var(--muted,rgba(244,239,230,.68));line-height:1.6}.ap-cms-menu{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px}.ap-cms-menu-btn{padding:10px;border-radius:10px;border:1px solid var(--line,rgba(212,180,109,.34));background:transparent;color:var(--text,#f4efe6);font-size:13px;cursor:pointer}.ap-cms-menu-btn:hover{border-color:var(--gold,#d4b46d);color:var(--gold,#d4b46d)}.ap-cms-list-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.ap-cms-list-head h2{margin:0}.ap-cms-empty{color:var(--muted,rgba(244,239,230,.68));font-size:13.5px}.ap-cms-hint{color:var(--muted,rgba(244,239,230,.68));font-size:12px}.ap-cms-work-list,.ap-cms-section-list{list-style:none;margin:0;padding:0}.ap-cms-work-item,.ap-cms-section-item{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line,rgba(212,180,109,.1))}.ap-cms-thumb{width:44px;height:44px;border-radius:8px;object-fit:cover;background:var(--bg,#0b0f14);border:1px solid var(--line,rgba(212,180,109,.18));flex-shrink:0}.ap-cms-work-info,.ap-cms-section-info{flex:1;min-width:0}.ap-cms-work-title,.ap-cms-section-title{font-size:13.5px}.ap-cms-work-meta{font-size:11.5px;color:var(--soft,rgba(244,239,230,.48));margin-top:2px}.ap-cms-error-text{font-size:11.5px;color:#e0847a;margin-top:3px}.ap-cms-work-actions,.ap-cms-section-order{display:flex;gap:4px;flex-shrink:0}.ap-cms-icon-btn{background:none;border:1px solid var(--line,rgba(212,180,109,.34));color:var(--text,#f4efe6);border-radius:6px;padding:4px 8px;font-size:11.5px;cursor:pointer}.ap-cms-icon-btn:hover{border-color:var(--gold,#d4b46d);color:var(--gold,#d4b46d)}.ap-cms-icon-btn:disabled{opacity:.35;cursor:not-allowed}.ap-cms-icon-btn.ap-cms-danger:hover{border-color:#e0847a;color:#e0847a}.ap-cms-badge{display:inline-block;font-size:10.5px;padding:1px 6px;border-radius:999px;margin-left:4px;vertical-align:middle}.ap-cms-badge-draft{background:rgba(244,239,230,.12);color:var(--muted,rgba(244,239,230,.68))}.ap-cms-badge-processing{background:rgba(212,180,109,.16);color:var(--gold,#d4b46d)}.ap-cms-badge-published{background:rgba(127,214,160,.16);color:#7fd6a0}.ap-cms-badge-failed{background:rgba(224,132,122,.16);color:#e0847a}.ap-cms-back{background:none;border:none;color:var(--muted,rgba(244,239,230,.68));font-size:clamp(13px,3.6vw,15px);cursor:pointer;padding:0;margin-bottom:10px}.ap-cms-back:hover{color:var(--gold,#d4b46d)}.ap-cms-label{display:block;font-size:12px;color:var(--muted,rgba(244,239,230,.68));margin:12px 0 6px}.ap-cms-hint{font-weight:normal;opacity:1}.ap-sub-policy-notice{color:var(--muted,rgba(244,239,230,.68));opacity:1;font-size:13.5px;line-height:1.6}.ap-cms-en{display:inline-block;color:var(--muted,rgba(244,239,230,.68));font-weight:normal;font-size:.92em}.ap-cms-input,.ap-cms-textarea{width:100%;box-sizing:border-box;background:var(--bg,#0b0f14);border:1px solid var(--line,rgba(212,180,109,.18));border-radius:10px;color:var(--text,#f4efe6);padding:10px 12px;font-size:16px;font-family:inherit;min-height:52px}.ap-cms-textarea{min-height:0;resize:vertical;line-height:1.5}.ap-cms-file{width:100%;font-size:13px;color:var(--muted,rgba(244,239,230,.68))}.ap-cms-grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.ap-cms-checkbox{display:flex;align-items:center;gap:8px;font-size:13px;margin:14px 0}.ap-cms-readonly{background:var(--bg,#0b0f14);border:1px solid var(--line,rgba(212,180,109,.18));border-radius:10px;padding:10px 12px;font-size:16px;word-break:break-all}.ap-cms-qr{display:block;margin:14px auto;border-radius:8px;background:#fff;padding:8px}.ap-cms-error{margin-top:10px;font-size:12.5px;color:#e0847a;min-height:14px}.ap-cms-primary,.ap-cms-secondary{width:100%;margin-top:18px;padding:13px;border-radius:10px;cursor:pointer;min-height:48px;font-size:clamp(15px,4vw,18px);line-height:1.35}.ap-cms-primary{border:1px solid var(--gold,#d4b46d);background:var(--gold,#d4b46d);color:#10131a;font-weight:600}.ap-cms-primary:disabled{opacity:.45;cursor:not-allowed}.ap-cms-primary:not(:disabled):hover{filter:brightness(1.06)}.ap-cms-primary-sm{padding:7px 14px;border-radius:8px;border:1px solid var(--gold,#d4b46d);background:transparent;color:var(--gold,#d4b46d);font-size:12.5px;cursor:pointer}.ap-cms-primary-sm:hover{background:rgba(212,180,109,.12)}.ap-cms-secondary{border:1px solid var(--line,rgba(212,180,109,.34));background:transparent;color:var(--text,#f4efe6)}.ap-cms-secondary:hover{border-color:var(--gold,#d4b46d);color:var(--gold,#d4b46d)}@media (max-width:600px){.ap-cms-panel{max-height:94vh;max-height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 24px)}.ap-cms-body{padding:16px 16px calc(16px + env(safe-area-inset-bottom))}.ap-cms-grid2{grid-template-columns:1fr}.ap-cms-menu{grid-template-columns:1fr}}@media (min-width:1024px){.ap-cms-body{padding:32px 36px calc(36px + env(safe-area-inset-bottom))}.ap-cms-body h2{font-size:29px}.ap-cms-hint{font-size:15px;line-height:1.6}.ap-sub-policy-notice{font-size:17px;line-height:1.6}.ap-cms-label{font-size:14px;margin:16px 0 8px}.ap-cms-input,.ap-cms-textarea{font-size:16px;padding:13px 15px;min-height:58px}.ap-cms-primary,.ap-cms-secondary{font-size:18px;padding:15px;min-height:54px}.ap-cms-grid2{gap:16px}.ap-cms-checkbox{font-size:15px}.ap-cms-qr{width:264px!important;height:264px!important}.ap-cms-readonly{font-size:16px;padding:13px 15px;min-height:54px;display:flex;align-items:center}}.ap-cms-guest-banner{border:1px solid rgba(212,180,109,.35);background:rgba(212,180,109,.07);border-radius:10px;padding:12px 14px;margin-bottom:14px}.ap-cms-guest-banner p{margin:0 0 8px;font-size:12.5px;line-height:1.5;color:var(--text,#f4efe6)}.ap-cms-guest-banner p:last-of-type{margin-bottom:10px}.ap-cms-select-hint{margin:-2px 0 10px}.ap-cms-queue{margin:8px 0 4px;border:1px solid var(--line,rgba(212,180,109,.18));border-radius:10px;padding:10px 12px}.ap-cms-queue-count{margin:0 0 6px}.ap-cms-queue-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.ap-cms-queue-item{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 10px;padding:6px 0;border-bottom:1px solid var(--line,rgba(212,180,109,.12))}.ap-cms-queue-item:last-child{border-bottom:none;padding-bottom:0}.ap-cms-queue-item-thumb{width:36px;height:36px;object-fit:cover;border-radius:6px;flex:none;background:var(--bg,#0b0f14);border:1px solid var(--line,rgba(212,180,109,.18))}.ap-cms-queue-item-name{font-size:12.5px;color:var(--text,#f4efe6);word-break:break-all;flex:1 1 auto;min-width:0}.ap-cms-queue-item-status{font-size:11.5px;color:var(--muted,rgba(244,239,230,.68));flex:none}.ap-cms-queue-item-ok{color:#7fd6a0}.ap-cms-queue-item-error{color:#e0847a}.ap-cms-queue-item-actions{flex:none}.ap-cms-queue-item-actions .ap-auth-link-btn{font-size:11.5px;padding:0}.ap-cms-panel .ap-menu-scroll-chevron{display:none}@media (max-width:767px){.ap-cms-panel .ap-menu-scroll-chevron{display:flex;position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 14px);transform:translateX(-50%);align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:rgba(11,15,20,.55);color:var(--ap-gold-x,var(--gold,#d4b46d));opacity:0;pointer-events:none;z-index:5;cursor:pointer;transition:opacity .3s ease-out}.ap-cms-panel .ap-menu-scroll-chevron.ap-visible{opacity:.68;pointer-events:auto;animation:apMenuChevronBounce 1.6s ease-in-out infinite}.ap-cms-panel .ap-menu-scroll-chevron:hover,.ap-cms-panel .ap-menu-scroll-chevron:active{color:var(--ap-gold-x-hover,var(--gold,#d4b46d))}.ap-cms-panel .ap-menu-scroll-chevron.ap-no-motion{animation:none}}@media (prefers-reduced-motion:reduce){.ap-cms-panel .ap-menu-scroll-chevron{transition:none;animation:none!important}}.ap-auth-panel-menu .ap-manage-menu-row,.ap-cms-panel .ap-manage-menu-row{display:flex;width:100%;justify-content:flex-start;align-items:center}.ap-auth-panel-menu .ap-manage-label-hit,.ap-cms-panel .ap-manage-label-hit{width:100%;display:flex;justify-content:flex-start;align-items:center;box-sizing:border-box;cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:manipulation;-webkit-tap-highlight-color:rgba(212,180,109,.16)}.ap-auth-panel-menu .ap-manage-label-text,.ap-cms-panel .ap-manage-label-text{display:inline-block;pointer-events:none}@media (max-width:767px){.ap-auth-panel-menu .ap-manage-label-hit,.ap-cms-panel .ap-manage-label-hit{min-height:var(--manage-menu-min-height,64px);padding:var(--manage-menu-padding-y,16px) var(--manage-menu-padding-x,20px);margin:2px 0}}/* 2026-08-29(4차 수정) — Artist Bio 화면(실제+로그인 전 미리보기) 모바일 가독성 개선. 새 스코프 클래스(.ap-bio-screen)로만 한정해 라벨/힌트/설명문의 글자 크기와 명도만 조정하고, margin/padding/구조는 건드리지 않는다 — 다른 화면의 .ap-cms-label/.ap-cms-hint/.ap-plink-*/.ap-preview-field는 전혀 영향받지 않는다. */.ap-bio-screen .ap-cms-label{font-size:13.5px;color:var(--muted,rgba(244,239,230,.68))}.ap-bio-screen .ap-cms-hint{font-size:13.5px;line-height:1.6;color:var(--muted,rgba(244,239,230,.68));opacity:1}.ap-bio-screen .ap-plink-label{font-size:13.5px;color:var(--muted,rgba(244,239,230,.68))}.ap-bio-screen .ap-plink-desc{font-size:14.5px}.ap-bio-screen .ap-preview-field>span{font-size:14.5px;color:var(--muted,rgba(244,239,230,.68))}@media (min-width:1024px){.ap-bio-screen .ap-cms-label{font-size:15px}.ap-bio-screen .ap-cms-hint{font-size:16px}.ap-bio-screen .ap-plink-label{font-size:15px}.ap-bio-screen .ap-plink-desc{font-size:16px}.ap-bio-screen .ap-preview-field>span{font-size:16px}}@media (max-width:1023px){.ap-work-form-screen .ap-cms-label{font-size:13.5px;font-weight:500;color:var(--muted,rgba(244,239,230,.68))}.ap-work-form-screen .ap-cms-hint{font-size:13.5px;font-weight:500;opacity:1;color:var(--muted,rgba(244,239,230,.68))}}.ap-work-form-screen .ap-cms-select-hint{margin-top:14px}
/* 2026-09-03(5차 수정) — 노트북·iPad·Android 태블릿 전용 관리 화면 가독성 핀셋 조정.
   Golden Baseline: 섹션 생성/수정/삭제/정렬, 활성 섹션 수, KR/EN/KR+EN 섹션명,
   Gallery 검색창 동기화, 섹션 필터, 관리 화면 복귀 위치 등 기존에 정상 작동하는
   기능·데이터·구조·라우팅은 전혀 건드리지 않는다 — 오직 font-size/font-weight/
   line-height만, 이 파일의 기존 selector 그대로 재사용해 조정한다. 스마트폰
   화면(<768px)은 위쪽의 모든 규칙 그대로 완전히 동결 — 이 블록은 768px 이상에서만
   적용되므로 폰 화면에는 어떤 영향도 없다. 로그인 후 관리 창(artist-cms.js
   #apArtistCms .ap-cms-panel)과 Gallery "관리/Manage" 버튼으로 여는 관리 창이
   완전히 같은 .ap-cms-* 클래스를 공유하므로, 이 블록 하나로 두 진입 경로 모두
   동일한 타이포그래피 기준이 적용된다. 기존에 @media (min-width:1024px)에만
   있던 부분 확대(예: 본문 제목 29px, 입력창 16px 등)는 아래에서 768px부터
   동일한 값으로 통일해 다시 정의한다 — 태블릿(768~1023px)과 노트북/데스크톱
   (1024px~) 사이에 서로 다른 크기로 보이지 않게 하기 위함(요청 원문 "같은 관리
   전용 타이포그래피 기준"). 기존 1024px 전용 규칙은 그대로 남겨두되(최소 diff,
   삭제하지 않음), 소스 순서상 이 블록이 더 뒤에 있어 항상 이 블록의 값이
   최종 적용된다. */
@media (min-width:768px){
  /* ---- 관리 내부 화면 제목/보조 문구 ---- */
  .ap-cms-body h2{font-size:26px}
  .ap-cms-subhead{font-size:15px}
  .ap-cms-back{font-size:17px}
  /* ---- 필드 라벨 / 입력값 / 도움말·설명문 (placeholder는 input 자체 font-size를 그대로 상속) ---- */
  .ap-cms-label{font-size:17px}
  .ap-cms-hint{font-size:16px;line-height:1.55}
  .ap-work-form-screen .ap-cms-label{font-size:17px}
  .ap-work-form-screen .ap-cms-hint{font-size:16px}
  .ap-bio-screen .ap-cms-label{font-size:17px}
  .ap-bio-screen .ap-cms-hint{font-size:16px;line-height:1.55}
  .ap-bio-screen .ap-plink-label{font-size:17px}
  .ap-bio-screen .ap-plink-desc{font-size:16px}
  .ap-bio-screen .ap-preview-field>span{font-size:16px}
  .ap-cms-input,.ap-cms-textarea,.ap-cms-panel select{font-size:16px}
  .ap-cms-file{font-size:15px}
  .ap-cms-file-btn-label{font-size:16px}
  .ap-cms-filename{font-size:15px}
  .ap-cms-checkbox{font-size:15px}
  .ap-cms-select-hint{font-size:14px}
  /* ---- 작품 수·섹션 수·상태 문구, 수정/삭제/위·아래 이동 버튼 ---- */
  .ap-cms-work-title,.ap-cms-section-title{font-size:16px}
  .ap-cms-work-meta{font-size:14px}
  .ap-cms-error-text{font-size:13.5px}
  .ap-cms-icon-btn{font-size:15px}
  .ap-cms-badge{font-size:12px}
  .ap-cms-stat b{font-size:24px}
  .ap-cms-stat span{font-size:13px}
  .ap-cms-recent{font-size:15px}
  .ap-cms-bio-preview{font-size:15px;line-height:1.6}
  .ap-cms-empty{font-size:15px}
  /* ---- 저장/실행 버튼, QR 주소, 오류·성공·제한 안내문 ---- */
  .ap-cms-primary,.ap-cms-secondary{font-size:18px}
  .ap-cms-primary-sm{font-size:14px}
  .ap-cms-readonly{font-size:15px}
  .ap-cms-error{font-size:14px}
  .ap-sub-policy-notice{font-size:16px;line-height:1.6}
  .ap-cms-guest-banner p{font-size:14px;line-height:1.6}
  .ap-cms-queue-item-name{font-size:14px}
  .ap-cms-queue-item-status{font-size:13px}
  .ap-cms-link{font-size:14px}
  /* ---- KR·EN 병기 문구(Artist Bio 관련 설정 행) ---- */
  .ap-cms-bi-label-en{font-size:16px}
  .ap-cms-bi-desc-kr{font-size:15px}
  .ap-cms-bi-desc-en{font-size:15px}
  .ap-cms-bi-rdesc-kr{font-size:14px}
  .ap-cms-bi-rdesc-en{font-size:14px}
  .ap-cms-bi-back-kr{font-size:15px}
  .ap-cms-bi-back-en{font-size:14px}
  /* ---- 설정 화면(app/css/style.css의 .ap-cms-settings-*/.ap-cms-legal-*) ---- */
  .ap-cms-settings-title,.ap-cms-settings-title-bi{font-size:19px}
  .ap-cms-settings-row-label,.ap-cms-settings-row-label-bi{font-size:16px}
  .ap-cms-settings-row-desc,.ap-cms-settings-row-desc-bi{font-size:14px}
  .ap-cms-legal-h{font-size:15px}
  .ap-cms-legal-p{font-size:15px;line-height:1.6}
  .ap-cms-legal-ul{font-size:15px;line-height:1.6}
  .ap-cms-legal-updated{font-size:13px}
  .ap-cms-copyright{font-size:13px}
}
/* 2026-09-03(6차 수정) — 위 블록은 artist-cms.js(.ap-cms-panel, 자기등록 Artist용 관리 화면)만
   대상으로 했다. 그런데 실제 사이트 소유자(등작 본인)가 매일 쓰는 관리 화면은 cms-ui.js /
   section-manager-ui.js가 만드는 완전히 다른 클래스 체계(.ap-auth-panel*, .ap-section-*)를
   쓴다 — grep으로 cms-ui.js에 .ap-cms-panel이 0회, .ap-auth-panel이 10회 등장함을 확인했다.
   이 두 화면 진입 경로("로그인 후 표시되는 관리 창"과 "Gallery 상단의 관리/Manage 버튼")는
   결국 같은 역할(admin/artist)에 따라 cms-ui.js 또는 artist-cms.js 중 하나로 귀결되므로,
   같은 사람이 어느 경로로 들어오든 위 .ap-cms-* 블록과 이 .ap-auth-*/.ap-section-* 블록이
   합쳐져 동일한 가독성 기준을 제공한다. style.css를 조사한 결과 이 클래스들은 768px 이상
   구간(정확히 이 스펙의 대상 폭)에 대한 font-size 규칙이 단 하나도 없었다(모바일용
   max-width:640px/767px 규칙과 min-width:1024px 규칙만 존재, 768~1023px는 완전한 공백) —
   즉 노트북·iPad·Android 태블릿에서 글자가 작게 보이던 실제 원인 중 하나다. 아래는 그 공백만
   min-width:768px로 메우며, 스마트폰(<768px) 규칙은 전혀 건드리지 않는다. 섹션 관리 로직
   (.ap-section-* 관련 JS)은 전혀 수정하지 않았다 — 타이포그래피 속성만 추가한다. */
@media (min-width:768px){
  .ap-auth-panel-menu .ap-auth-menu-title{font-size:28px}
  .ap-auth-panel-menu .ap-auth-account .ap-auth-email{font-size:18px}
  .ap-auth-panel-menu .ap-auth-account .ap-auth-role{font-size:16px}
  .ap-auth-panel-menu .ap-auth-btn.ap-auth-logout{font-size:17px}
  .ap-auth-panel-menu .ap-auth-portfolio-note{font-size:16px;line-height:1.6}
  .ap-auth-menu-title{font-size:27px}
  .ap-auth-account .ap-auth-email{font-size:18px}
  .ap-auth-account .ap-auth-role{font-size:16px}
  .ap-auth-menu-item{font-size:19px;line-height:1.4}
  .ap-auth-profile-title{font-size:27px;font-weight:700;line-height:1.3}
  .ap-auth-profile input,.ap-auth-profile select{font-size:16px}
  .ap-auth-profile .ap-auth-note{font-size:17px;line-height:1.6}
  .ap-auth-profile .ap-auth-preview{font-size:15px}
  .ap-auth-bio-label{font-size:18px}
  .ap-auth-profile textarea.ap-auth-bio-textarea{font-size:16px;line-height:1.6}
  .ap-auth-profile .ap-auth-btn{font-size:18px}
  .ap-auth-artwork .ap-auth-field-label{font-size:17px;line-height:1.4}
  .ap-auth-artwork input,.ap-auth-artwork select,.ap-auth-artwork textarea{font-size:16px;line-height:1.4}
  .ap-auth-artwork .ap-auth-note,.ap-auth-artwork .ap-cms-filename{font-size:15px;line-height:1.6}
  .ap-auth-artwork .ap-auth-upload-note{font-size:15px}
  .ap-auth-artwork .ap-auth-btn{font-size:18px}
  .ap-auth-panel-artwork>.ap-auth-back.ap-auth-link-btn{font-size:17px}
  .ap-auth-size-preview-label{font-size:14px}
  .ap-size-preview-value{font-size:14px}
  .ap-auth-panel-sections>.ap-auth-note:first-child{font-size:16px}
  .ap-section-name{font-size:19px;font-weight:700;line-height:1.35}
  .ap-section-workcount{font-size:15px}
  .ap-section-row-actions button{font-size:17px}
  .ap-section-max-notice{font-size:15px}
  .ap-auth-new-section input,.ap-section-edit-kr,.ap-section-edit-en{font-size:16px}
  .ap-auth-new-section .ap-auth-btn{font-size:18px}
  .ap-cms-btn-row .ap-auth-btn{font-size:17px}
  .ap-cms-btn-row .ap-auth-link-btn{font-size:16px}
  .ap-auth-panel-sections>.ap-auth-back.ap-auth-link-btn{font-size:17px}
  .ap-auth-myqr-title{font-size:26px;font-weight:700;line-height:1.3}
  .ap-auth-myqr-intro{font-size:16px;line-height:1.6}
  .ap-auth-myqr-url-label{font-size:17px}
  .ap-auth-myqr-url-input{font-size:16px}
  .ap-auth-readonly-input{font-size:16px}
  .ap-auth-panel-myqr .ap-auth-btn{font-size:18px}
  .ap-cms-about-top{font-size:14px}
  .ap-cms-about-row{font-size:14px}
  .ap-cms-settings-desc,.ap-cms-settings-desc-bi{font-size:14px}
}
/* 2026-09-17 — Artwork Manager: '+ 새 작품 · Add Artwork' 버튼 바로 아래 캡션
   안내문 핀셋 추가. Golden Baseline: Add Artwork 버튼 기능, Edit/Delete 기능,
   작품 정렬, 작품 목록, 업로드, Firestore, Artwork ID, Section, Auth, Routing,
   PDF, QR, Bio, Publish Projection, Discover, 기존 공유 CSS/색상 체계는 전혀
   건드리지 않는다 — 이 안내문 전용 스코프 클래스만 새로 추가한다. 위쪽 간격은
   .ap-cms-list-head의 기존 margin-bottom:14px(건드리지 않음)를 그대로 활용하고,
   이 블록은 아래쪽(작품 목록 전) 간격만 추가한다. 768px 분기는 이 파일의 다른
   태블릿/데스크톱 통합 규칙(위 5차/6차 수정 블록)과 동일한 기준을 재사용한다. */
.ap-cms-worklist-guide{max-width:520px;width:100%;box-sizing:border-box;margin:0 0 14px;text-align:left}
.ap-cms-worklist-guide-line{display:block;color:rgba(255,255,255,.78);font-size:13px;font-weight:500;line-height:1.6;overflow-wrap:break-word;word-break:break-word}
.ap-cms-worklist-guide-line+.ap-cms-worklist-guide-line{margin-top:3px}
.ap-cms-worklist-guide-emph{font-weight:700}
@media (min-width:768px){
  .ap-cms-worklist-guide{margin:0 0 16px}
  .ap-cms-worklist-guide-line{font-size:14px}
}
/* 2026-09-17 — Artwork Manager Edit 화면: '작가의 생각 · 짧은 시 / Artist
   Thought · Short Poem' 필드를 독립 입력 항목으로 명확히 표시(핀셋 추가).
   Golden Baseline: textarea(#apCmsNote) id/rows, note_kr·note_en 언어별
   값 연결, 저장(buildWorkMeta/updateWork) 로직은 전혀 건드리지 않는다 —
   이 필드 전용 제목/설명 스코프 클래스만 새로 추가한다. 내부에서는 기존
   .ap-cms-line-kr/.ap-cms-line-en(수정 없음)을 그대로 재사용해 KR+EN 2줄
   스택을 만든다. */
.ap-cms-note-title{display:block;font-weight:700;color:var(--text,#f4efe6);margin:14px 0 4px}
.ap-cms-note-desc{display:block;color:rgba(255,255,255,.78);font-size:13.5px;font-weight:500;line-height:1.6;margin:0 0 8px;overflow-wrap:break-word}
@media (min-width:768px){
  .ap-cms-note-desc{font-size:14.5px}
}

/* 2026-09-18 추가 (핀셋 수정 — 업로드 체감 속도, 스펙 §7: 파일 선택 즉시
   로컬 미리보기). 단일 파일 업로드 모드에서만 쓰인다(큐 모드는 이미
   .ap-cms-queue-item-thumb로 미리보기를 표시). object-fit:contain으로
   원본 비율을 유지하고(그리드 썸네일 .thumb과 동일한 원칙), 폭/높이를
   미리 고정해 이미지 로드 전후로 레이아웃이 흔들리지 않게 한다. */
.ap-cms-single-preview{
  display:block;
  width:100%;
  max-width:220px;
  aspect-ratio:1/1;
  object-fit:contain;
  margin:10px auto 0;
  border-radius:10px;
  background:var(--bg,#0b0f14);
  border:1px solid var(--line,rgba(212,180,109,.18));
}
.ap-cms-single-preview[hidden]{display:none}

/* 2026-09-20 추가 (PUBLISH 엔진, Milestone C — Artist DISCOVER Management
   "VISUAL PUBLISHING STUDIO"). Golden Baseline: 위쪽의 기존 .ap-cms-*
   클래스는 단 한 글자도 수정하지 않았다 — 이 화면 전용 .ap-discover-mgmt-*/
   .ap-discover-zoom-* 클래스만 새로 추가한다. 색상 토큰(--gold/--text/
   --muted/--bg/--line/--panel)은 위에서 이미 쓰던 값을 그대로 재사용해
   "새 팔레트"를 만들지 않는다(요청 원문 §40). */
.ap-discover-mgmt-desc{margin-bottom:16px}
.ap-discover-mgmt-statusrow{margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid var(--line,rgba(212,180,109,.18))}
.ap-discover-mgmt-badge{display:inline-block;font-size:11.5px;font-weight:600;padding:2px 9px;border-radius:999px;margin-left:6px;vertical-align:middle}
.ap-discover-mgmt-badge.is-published{background:rgba(212,180,109,.18);color:var(--gold,#d4b46d)}
.ap-discover-mgmt-badge.is-hidden{background:rgba(244,239,230,.1);color:var(--muted,rgba(244,239,230,.68))}
.ap-discover-mgmt-summary{display:flex;gap:12px;margin:14px 0}
.ap-discover-mgmt-viewlink{display:inline-block;width:auto;margin:0 0 18px}
.ap-discover-mgmt-empty{margin-top:6px}
.ap-discover-mgmt-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:6px 0 16px}
.ap-discover-mgmt-filters{display:flex;flex-wrap:wrap;gap:6px}
.ap-discover-mgmt-filterbtn{opacity:.62}
.ap-discover-mgmt-filterbtn.is-active{opacity:1;background:rgba(212,180,109,.16)}
.ap-discover-mgmt-search{flex:1 1 160px;min-width:120px}
.ap-discover-mgmt-selectall{margin:0;flex:0 0 auto;white-space:nowrap}
.ap-discover-mgmt-bulkbtns{display:flex;gap:8px;flex:0 0 auto}
.ap-discover-mgmt-bulkbtns button{width:auto;margin:0}
/* §11~§13 VISUAL PROJECTION BOX — image area가 Box에서 가장 큰 시각
   요소여야 한다(§12 권장 65~75%). 모바일 기본 2열(§24), 데스크톱
   3~5열 반응형(§25) — 새 layout 의존성(Masonry 라이브러리 등) 추가 없이
   순수 CSS grid의 auto-fill만 사용한다. */
.ap-discover-mgmt-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.ap-discover-mgmt-card{border:1px solid var(--line,rgba(212,180,109,.18));border-radius:12px;overflow:hidden;background:var(--panel,#101722);display:flex;flex-direction:column}
.ap-discover-mgmt-imgbox{position:relative;aspect-ratio:1/1;background:var(--bg,#0b0f14);cursor:zoom-in}
.ap-discover-mgmt-img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.ap-discover-mgmt-imgerror{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--muted,rgba(244,239,230,.68));text-align:center;padding:8px;box-sizing:border-box}
.ap-discover-mgmt-check{position:absolute;top:8px;left:8px;z-index:2;width:22px;height:22px;margin:0;cursor:pointer}
.ap-discover-mgmt-zoombtn{position:absolute;bottom:8px;right:8px;z-index:2;width:32px;height:32px;border-radius:50%;border:1px solid rgba(255,255,255,.4);background:rgba(11,15,20,.55);color:var(--text,#f4efe6);font-size:15px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
.ap-discover-mgmt-body{padding:9px 10px 11px;display:flex;flex-direction:column;gap:3px}
.ap-discover-mgmt-title{font-size:13px;font-weight:600;color:var(--text,#f4efe6);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ap-discover-mgmt-meta{font-size:11.5px;color:var(--muted,rgba(244,239,230,.68))}
.ap-discover-mgmt-togglerow{margin:6px 0 0;justify-content:space-between}
.ap-discover-mgmt-notice{font-size:10.5px;color:var(--muted,rgba(244,239,230,.5));margin:4px 0 0;line-height:1.4}
/* Publish ON/OFF micro-interaction(§41) — 150~220ms, bounce/flash/glow 없음. */
.ap-discover-mgmt-card,.ap-discover-mgmt-badge{transition:background-color .18s ease-out,color .18s ease-out}
@media (max-width:420px){
  .ap-discover-mgmt-grid{grid-template-columns:1fr}
}
@media (min-width:768px){
  .ap-discover-mgmt-grid{grid-template-columns:repeat(3,1fr)}
}
@media (min-width:1200px){
  .ap-discover-mgmt-grid{grid-template-columns:repeat(4,1fr)}
}
@media (min-width:1600px){
  .ap-discover-mgmt-grid{grid-template-columns:repeat(5,1fr)}
}

/* §16~§17 DISCOVER WORK ZOOM VIEWER — 기존 Public Viewer(viewer.css/
   viewer.js)와 완전히 독립된 새 lightbox. Golden Baseline 보호 대상인
   기존 .ap-viewer-*/#appViewer 클래스는 전혀 참조하지 않는다. */
.ap-discover-zoom-backdrop{position:fixed;inset:0;z-index:9200;background:rgba(4,6,10,.92);display:flex;align-items:center;justify-content:center}
.ap-discover-zoom-backdrop[hidden]{display:none}
.ap-discover-zoom-stage{width:100%;height:100%;display:flex;align-items:center;justify-content:center;overflow:hidden;touch-action:none}
.ap-discover-zoom-img{max-width:92vw;max-height:78vh;object-fit:contain;will-change:transform;user-select:none;-webkit-user-drag:none}
.ap-discover-zoom-close{position:absolute;top:14px;right:14px;width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,255,255,.3);background:rgba(11,15,20,.6);color:#fff;font-size:18px;cursor:pointer}
.ap-discover-zoom-info{position:absolute;left:0;right:0;bottom:0;padding:14px 18px calc(14px + env(safe-area-inset-bottom));background:linear-gradient(0deg,rgba(4,6,10,.88),transparent);color:var(--text,#f4efe6);text-align:center}
.ap-discover-zoom-title{font-size:15px;font-weight:600;margin-bottom:2px}
.ap-discover-zoom-meta{font-size:12.5px;color:var(--muted,rgba(244,239,230,.75));margin-bottom:1px}
@media (min-width:1024px){
  .ap-discover-zoom-img{max-width:70vw;max-height:88vh}
  .ap-discover-zoom-info{left:auto;right:0;bottom:0;top:0;width:280px;background:rgba(11,15,20,.72);display:flex;flex-direction:column;justify-content:center;text-align:left;padding:24px}
}

/* §31 ARTIST DISCOVER SECONDARY NAV — WORKS / COLLECTIONS 탭. 기존
   .ap-discover-mgmt-filterbtn(필터 버튼)과 같은 골드 액티브 패턴을
   그대로 재사용하되, 별도 클래스로 스코프를 분리해 필터 버튼 스타일이
   바뀌어도 이 탭에 영향이 없게 한다. */
.ap-discover-mgmt-tabs{display:flex;gap:8px;margin:14px 0 6px;border-bottom:1px solid var(--line,rgba(212,180,109,.18))}
.ap-discover-mgmt-tabbtn{background:none;border:none;border-bottom:2px solid transparent;color:var(--muted,rgba(244,239,230,.68));font-size:13px;font-weight:600;letter-spacing:.03em;padding:8px 4px;cursor:pointer;margin-bottom:-1px}
.ap-discover-mgmt-tabbtn.is-active{color:var(--gold,#d4b46d);border-bottom-color:var(--gold,#d4b46d)}
.ap-discover-mgmt-tabbtn:hover{color:var(--gold,#d4b46d)}

/* §49~§56 COLLECTION MANAGER — 카드/그리드는 기존 Visual Projection Box
   (.ap-discover-mgmt-*) 스타일을 그대로 상속하고, 여기서는 Collection
   전용으로 다른 부분(카드 버튼 줄, 커버 없음 상태)만 추가한다. */
.ap-collection-mgmt-toolbar{justify-content:flex-end}
.ap-collection-mgmt-cardbtns{display:flex;gap:6px;margin-top:8px}
.ap-collection-mgmt-cardbtns .ap-cms-primary-sm{flex:1;text-align:center}
/* §54 COLLECTION ORDER — Collection 카드 자체의 Drag & Drop(2026-09-20 추가). */
.ap-collection-mgmt-card{cursor:grab;transition:opacity .15s,border-color .15s}
.ap-collection-mgmt-card.is-dragging{opacity:.4}
.ap-collection-mgmt-card.is-drag-over{border-color:var(--gold,#d4b46d)}

/* Collection 편집 화면 — 기존 .ap-work-form-screen 스코프 안에서만
   적용되는 보조 스타일(작품 등록/수정 폼의 레이아웃 규칙은 전혀 건드리지
   않는다, §renderWorkForm 주석 참고). */
.ap-collection-selector-grid{margin:10px 0 18px}
.ap-collection-selector-card{opacity:.7}
.ap-collection-selector-card.is-selected{opacity:1;border-color:var(--gold,#d4b46d)}
.ap-collection-selector-cover{margin:6px 0 0;font-size:11.5px}
.ap-collection-selector-cover input:disabled{opacity:.4}
.ap-collection-order-list{display:flex;flex-direction:column;gap:6px;margin:8px 0 16px}
.ap-collection-order-row{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--line,rgba(212,180,109,.18));border-radius:8px;background:var(--panel,#101722);cursor:grab;transition:opacity .15s,border-color .15s}
.ap-collection-order-index{font-size:11px;color:var(--muted,rgba(244,239,230,.68));width:18px;text-align:center;flex-shrink:0}
.ap-collection-order-title{flex:1;min-width:0;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* §54 COLLECTION ORDER — 실제 Drag & Drop(2026-09-20 추가) 핸들 + 드래그 중 시각 피드백. */
.ap-collection-order-drag{flex-shrink:0;color:var(--muted,rgba(244,239,230,.5));font-size:14px;line-height:1;cursor:grab;user-select:none}
.ap-collection-order-row.is-dragging{opacity:.4}
.ap-collection-order-row.is-drag-over{border-color:var(--gold,#d4b46d)}
.ap-collection-editor-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}
.ap-collection-editor-actions .ap-cms-primary{width:auto;flex:1;margin-top:0}
.ap-collection-editor-actions .ap-cms-icon-btn{flex-shrink:0}

/* §55 COLLECTION PREVIEW — 읽기 전용 화면. */
.ap-collection-preview-cover{width:100%;max-height:320px;object-fit:cover;border-radius:12px;margin:8px 0}
.ap-collection-preview-title{margin:4px 0 2px;font-size:clamp(18px,4.6vw,22px)}

@media (min-width:1024px){
  .ap-discover-mgmt-tabbtn{font-size:14px;padding:10px 6px}
}

/* 2026-09-19 추가 (COSMOS ARTIST ENTRY 최종 핀포인트 — Part A §5/§12) —
   COSMOS Publishing Studio 화면 최상단 "COSMOS / Connected Art Network"
   상단 context 블록. 새 design system이 아니라 기존 --gold 토큰과
   .ap-cms-subhead(uppercase/letter-spacing) 관례를 그대로 재사용한 2줄
   타이포그래피일 뿐이다 — 카드 border/배경/애니메이션 없음(§32 금지 항목
   준수: neon/glow/pulse/galaxy particle 등 전혀 추가하지 않음). */
.ap-cosmos-heading{margin:0 0 10px}
.ap-cosmos-eyebrow{margin:0;font-size:13px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--gold,#d4b46d);opacity:.95}
.ap-cosmos-descriptor{margin:2px 0 0;font-size:12px;font-weight:500;letter-spacing:.02em;color:var(--muted,rgba(244,239,230,.68))}
@media (min-width:768px){
  .ap-cosmos-eyebrow{font-size:15px}
  .ap-cosmos-descriptor{font-size:13.5px}
}