/**
 * ┌─────────────────────────────────────────────────────────────────────┐
 * │  FILE INDEX — 여수뉴스포털                                          │
 * ├──────────────┬──────────────────────────────────────────────────────┤
 * │  파일명      │  online.css                                           │
 * │  위치        │  /deal/assets/css/online.css                                        │
 * │  생성일      │  2026-05-16                                           │
 * │  수정일      │  2026-05-16                                           │
 * │  버전        │  v1.0                                                 │
 * ├──────────────┼──────────────────────────────────────────────────────┤
 * │  기능/역할   │  스타일시트 — 포털·컴포넌트별 규칙 적용               │
 * ├──────────────┼──────────────────────────────────────────────────────┤
 * │  레이아웃    │  기준 너비: 1200px (전역·포털 변수와 연동)            │
 * │  섹터 구조   │  .sector-wrap width:100% — 다열은 .sector-inner (원칙2) │
 * │  폰트 기준   │  최소 14px (--fs-base 등 변수 연동)                 │
 * ├──────────────┼──────────────────────────────────────────────────────┤
 * │  연관 파일   │  load-by  : header.php·포털 레이아웃 (상이)            │
 * │              │  변수 주입: echoLayoutVars()·포털 CSS (해당 시)       │
 * ├──────────────┼──────────────────────────────────────────────────────┤
 * │  참조 사항   │  /docs/PROJECT_RULES.md 원칙8·포털 CSS 접두 규칙       │
 * ├──────────────┼──────────────────────────────────────────────────────┤
 * │  변경 이력   │  2026-05-16 v1.0 - FILE INDEX 일괄 부여                     │
 * └──────────────┴──────────────────────────────────────────────────────┘
 */

:root {
  --onl-primary: #7c3aed;
  --onl-dark:    #4c1d95;
  --onl-light:   #ede9fe;
  --onl-bg:      #f5f3ff;
}

/* ── sector-inner grid 탈출 ── */
.onl-subnav,
.onl-page-header,
.onl-type-tabs,
.onl-filter,
.onl-content-wrap { grid-column: 1 / -1; width: 100%; box-sizing: border-box; }

/* ── 서브네비 ── */
.onl-subnav { background:#fff; border-bottom:1px solid #e2e8f0; position:sticky; top:0; z-index:50; }
.onl-subnav-inner { width:100%; display:flex; flex-wrap:wrap; gap:4px; padding:10px 16px; align-items:center; }
.onl-snav-item { display:inline-flex; align-items:center; gap:5px; padding:7px 14px; border-radius:20px; background:#f1f5f9; color:#475569; font-size:15px; font-weight:500; text-decoration:none; transition:all .15s; }
.onl-snav-item:hover,.onl-snav-item.active { background:var(--onl-primary); color:#fff; }
.onl-snav-write { margin-left:auto; display:inline-flex; align-items:center; gap:6px; padding:7px 16px; border-radius:20px; background:var(--onl-primary); color:#fff; font-size:15px; font-weight:600; text-decoration:none; }
.onl-snav-write:hover { background:var(--onl-dark); }

/* ── 헤더 ── */
.onl-page-header { background:linear-gradient(135deg,#7c3aed 0%,#a855f7 100%); color:#fff; padding:28px 24px; }
.onl-page-header-inner { width:100%; display:flex; align-items:center; justify-content:space-between; }
.onl-page-header h1 { margin:0 0 6px; font-size:24px; font-weight:800; }
.onl-page-header p  { margin:0; opacity:.88; font-size:15px; }

/* ── 거래유형 탭 ── */
.onl-type-tabs { background:#fff; border-bottom:1px solid #e2e8f0; }
.onl-type-tabs-inner { width:100%; display:flex; overflow-x:auto; }
.onl-ttab { display:flex; align-items:center; gap:6px; padding:11px 20px; font-size:15px; font-weight:600; color:#64748b; text-decoration:none; border-bottom:2px solid transparent; white-space:nowrap; transition:all .15s; }
.onl-ttab:hover  { color:var(--onl-primary); }
.onl-ttab.active { color:var(--onl-primary); border-bottom-color:var(--onl-primary); }
.onl-ttab-cnt { font-size:14px; background:#f1f5f9; border-radius:10px; padding:1px 7px; }
.onl-ttab.active .onl-ttab-cnt { background:var(--onl-light); color:var(--onl-dark); }

/* ── 필터 ── */
.onl-filter-panel { background:#fff; border-bottom:1px solid #e2e8f0; padding:12px 0; }
.onl-filter-inner { width:100%; padding-left:0; padding-right:0; display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.onl-fselect,.onl-finput { padding:6px 10px; border:1.5px solid #e2e8f0; border-radius:8px; font-size:15px; color:#374151; background:#fff; }
.onl-fselect:focus,.onl-finput:focus { outline:none; border-color:var(--onl-primary); }
.onl-fbtn-search { padding:6px 16px; border-radius:8px; background:var(--onl-primary); color:#fff; border:none; font-size:15px; font-weight:600; cursor:pointer; }
.onl-fbtn-reset { padding:6px 12px; border-radius:8px; background:#f1f5f9; color:#64748b; border:1.5px solid #e2e8f0; font-size:15px; cursor:pointer; text-decoration:none; }

/* ── 콘텐츠 ── */
.onl-content-wrap { width:100%; display:block; padding:0; box-sizing:border-box; }
.onl-list-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
.onl-list-total { font-size:15px; color:#64748b; }
.onl-sort-sel { padding:5px 10px; border:1.5px solid #e2e8f0; border-radius:8px; font-size:15px; background:#fff; }

/* ── 테이블형 목록 ── */
.onl-table { width:100%; border-collapse:collapse; }
.onl-table th { padding:10px 14px; background:#f8fafc; font-size:14px; font-weight:600; color:#64748b; text-align:left; border-bottom:2px solid #e2e8f0; }
.onl-table td { padding:10px 14px; border-bottom:1px solid #f1f5f9; font-size:15px; vertical-align:middle; }
.onl-table tr:hover td { background:#fdf4ff; }
.onl-tr-link { text-decoration:none; color:#1e293b; display:contents; }
.onl-type-badge { display:inline-block; padding:3px 9px; border-radius:6px; font-size:14px; font-weight:700; }
.onl-type-sell     { background:#dbeafe; color:#1d4ed8; }
.onl-type-buy      { background:#dcfce7; color:#166534; }
.onl-type-exchange { background:var(--onl-light); color:var(--onl-dark); }
.onl-cat-tag { display:inline-block; padding:2px 8px; background:#f1f5f9; border-radius:4px; font-size:14px; color:#64748b; }
.onl-price-cell { font-weight:700; font-size:14px; white-space:nowrap; }
.onl-sold-mark { color:#94a3b8; text-decoration:line-through; font-size:14px; }
.onl-title-cell { max-width:340px; }
.onl-title-text { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; display:block; font-weight:600; color:#1e293b; }
.onl-title-text:hover { color:var(--onl-primary); }

/* ── 사이드바 ── */
.onl-sb-box { background:#fff; border:1.5px solid #f1f5f9; border-radius:14px; padding:18px; margin-bottom:16px; box-shadow:0 1px 4px rgba(0,0,0,.05); }
.onl-sb-title { font-size:14px; font-weight:700; color:#1e293b; margin-bottom:12px; }

/* ── 빈 상태 ── */
.onl-empty { text-align:center; padding:60px 24px; background:#f8fafc; border-radius:14px; color:#94a3b8; }
.onl-empty i { font-size:32px; display:block; margin-bottom:10px; }

/* ── 페이지네이션 ── */
.onl-pagination { display:flex; align-items:center; justify-content:center; gap:4px; margin-top:20px; }
.onl-pag-btn { display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px; border-radius:8px; font-size:15px; text-decoration:none; font-weight:500; background:#fff; color:#475569; border:1.5px solid #e2e8f0; transition:all .15s; }
.onl-pag-btn:hover  { border-color:var(--onl-primary); color:var(--onl-primary); }
.onl-pag-btn.active { background:var(--onl-primary); color:#fff; border-color:var(--onl-primary); }
.onl-pag-btn.disabled { opacity:.4; pointer-events:none; }

@media (max-width:860px) { .onl-sidebar{display:none;} }
@media (max-width:600px) {
  .onl-table thead { display:none; }
  .onl-table td { display:block; border:none; padding:4px 12px; }
  .onl-table tr { display:block; border-bottom:1.5px solid #f1f5f9; padding:8px 0; }
}

/* ═══ 상세 페이지 ═══ */
/* onl-detail-wrap 폐기 — shell .pub-content-wrap SSOT */
.onl-detail-main {}
.onl-detail-gallery { border-radius:14px; overflow:hidden; background:#1e293b; }
.onl-gallery-main { width:100%; aspect-ratio:16/9; object-fit:cover; display:block; cursor:zoom-in; }
.onl-gallery-blank { width:100%; aspect-ratio:16/9; display:flex; align-items:center; justify-content:center; font-size:32px; color:#4b5563; }
.onl-detail-h1 { font-size:20px; font-weight:800; color:#1e293b; margin:16px 0 10px; }
.onl-price-box { background:var(--onl-bg); border:1.5px solid #c4b5fd; border-radius:12px; padding:14px 18px; margin-bottom:16px; }
.onl-price-main { font-size:24px; font-weight:800; color:#1e293b; }
.onl-info-table { width:100%; border-collapse:collapse; margin-bottom:16px; }
.onl-info-table th,.onl-info-table td { padding:8px 12px; border-bottom:1px solid #f1f5f9; font-size:15px; text-align:left; }
.onl-info-table th { color:#64748b; font-weight:600; width:100px; background:#f8fafc; }
.onl-desc-box { background:#fff; border:1.5px solid #f1f5f9; border-radius:12px; padding:16px; margin-bottom:16px; }
.onl-desc-box h3 { font-size:15px; font-weight:700; margin:0 0 10px; }
.onl-desc-box p  { font-size:14px; line-height:1.8; color:#374151; white-space:pre-wrap; margin:0; }
.onl-nav-row { display:flex; gap:8px; margin-top:20px; }
.onl-nav-btn { flex:1; padding:10px 14px; border-radius:9px; font-size:15px; font-weight:600; border:1.5px solid #e2e8f0; background:#fff; color:#475569; cursor:pointer; text-decoration:none; text-align:center; transition:all .15s; }
.onl-nav-btn:hover { border-color:var(--onl-primary); color:var(--onl-primary); }
.onl-nav-btn.primary { background:var(--onl-primary); color:#fff; border-color:var(--onl-primary); }
.onl-nav-btn.primary:hover { background:var(--onl-dark); }
.onl-nav-btn.danger { border-color:#dc2626; color:#dc2626; }
.onl-nav-btn.danger:hover { background:#dc2626; color:#fff; }
.onl-contact-card { background:#fff; border:1.5px solid #f1f5f9; border-radius:14px; padding:18px; box-shadow:0 1px 4px rgba(0,0,0,.05); }
.onl-contact-card h3 { font-size:14px; font-weight:700; margin:0 0 12px; }
.onl-contact-phone { font-size:18px; font-weight:800; color:var(--onl-primary); margin-bottom:12px; }
.onl-call-btn { display:block; width:100%; padding:10px; border-radius:9px; background:var(--onl-primary); color:#fff; font-size:14px; font-weight:700; text-align:center; text-decoration:none; }
.onl-call-btn:hover { background:var(--onl-dark); }


/* ═══ 등록 폼 ═══ */
.online-write-wrap,
.onl-write-wrap { width:100%; max-width:100%; margin:0; padding:28px 0 60px; box-sizing:border-box; }
.onl-form-box { background:#fff; border:1.5px solid #f1f5f9; border-radius:14px; padding:22px; margin-bottom:18px; box-shadow:0 1px 4px rgba(0,0,0,.05); }
.onl-form-box h2 { font-size:15px; font-weight:700; color:#1e293b; margin:0 0 16px; padding-bottom:10px; border-bottom:1.5px solid #f1f5f9; }
.ow-row { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:12px; }
.ow-row-full { grid-template-columns:1fr; }
.ow-field { display:flex; flex-direction:column; gap:5px; }
.ow-label { font-size:15px; font-weight:600; color:#374151; }
.ow-label .req { color:#dc2626; margin-left:2px; }
.ow-input,.ow-select,.ow-textarea { padding:8px 12px; border:1.5px solid #e2e8f0; border-radius:8px; font-size:15px; color:#1e293b; background:#fff; }
.ow-input:focus,.ow-select:focus,.ow-textarea:focus { outline:none; border-color:var(--onl-primary); }
.ow-textarea { min-height:100px; resize:vertical; }
.ow-hint { font-size:14px; color:#94a3b8; }
.ow-radio-group { display:flex; flex-wrap:wrap; gap:10px; padding-top:8px; }
.ow-radio-item { display:inline-flex; align-items:center; gap:5px; font-size:15px; cursor:pointer; }
.ow-alert { background:#fef2f2; border:1.5px solid #fca5a5; border-radius:10px; padding:12px 16px; margin-bottom:14px; }
.ow-alert ul { margin:0; padding-left:18px; }
.ow-alert li { font-size:15px; color:#dc2626; line-height:1.7; }
.ow-submit-row { display:flex; gap:10px; justify-content:center; margin-top:6px; }
.ow-btn-submit { padding:12px 36px; border-radius:10px; background:var(--onl-primary); color:#fff; font-size:15px; font-weight:700; border:none; cursor:pointer; }
.ow-btn-submit:hover { background:var(--onl-dark); }
.ow-btn-cancel { padding:12px 24px; border-radius:10px; background:#f1f5f9; color:#475569; font-size:15px; font-weight:600; border:1.5px solid #e2e8f0; cursor:pointer; text-decoration:none; display:inline-flex; align-items:center; }
@media (max-width:600px) { .ow-row{grid-template-columns:1fr;} }

/* ── Mobile-First 보정 (원칙: 14px·모바일우선·터치44px) ── */
@media (max-width: 768px) {
  [class*="-page-header"],[class*="-hd"],[class*="-header-inner"] { flex-wrap: wrap !important; }
  [class*="-sidebar"]:not(.pub-sidebar),[class*="-side-col"] { display: none !important; }
  [class*="-content-wrap"]:not(.pub-content-wrap),[class*="-detail-wrap"],[class*="-body-wrap"] { grid-template-columns: 1fr !important; }
  [class*="-grid"]:not([class*="-1"]) { grid-template-columns: repeat(auto-fill, minmax(280px,1fr)) !important; }
  [class*="-search"] input, [class*="-filter"] input, [class*="-filter"] select { font-size: 16px !important; min-height: 44px !important; }
  [class*="-btn"]:not([class*="-icon"]):not([class*="-sm-icon"]) { min-height: 44px; }
  [class*="-list-item"],[class*="-card"] { flex-wrap: wrap !important; }
  [class*="-list-thumb"],[class*="-card-img"] { width: 100% !important; max-height: 200px !important; object-fit: cover; }
  [class*="-meta"],[class*="-tags"] { flex-wrap: wrap !important; }
}
@media (max-width: 480px) {
  [class*="-grid"] { grid-template-columns: 1fr !important; }
  [class*="-card-grid"],[class*="-view-card"] { grid-template-columns: 1fr !important; }
}
