@charset "utf-8";

/* ========================================
   Table Board Skin - Newtro Glass Design
   ======================================== */

/* 테이블 전용 CSS 변수 */
:root {
    --table-accent: var(--accent-color);
    --table-accent-dim: rgb(from var(--accent-color) r g b / 80%);
    --table-header-bg: rgb(from var(--card-bg-color) r g b / 5%);
    --table-header-gr: linear-gradient(to bottom, rgb(from var(--card-bg-color) r g b / 0.8), rgb(from var(--container-bg-color) r g b / 0.5));    --table-row-hover: rgb(from var(--card-border-color) r g b / 20%);
    --table-border: rgb(from var(--card-border-color) r g b / 30%);
    --table-cell-focus: rgb(from var(--accent-color) r g b / 15%);
    --table-glass-bg: rgb(from var(--card-bg-color) r g b / 65%);
    --table-glass-gr: linear-gradient(to bottom, rgb(from var(--card-bg-color) r g b / 0.9), rgb(from var(--container-bg-color) r g b / 0.75));

    --type-text: #94a3b8;
    --type-number: #a78bfa;
    --type-date: #f472b6;
    --type-checkbox: #22d3ee;
    --type-select: #4ade80;
    --type-multiselect: #fb923c;
    --type-url: #60a5fa;
}

/* ========================================
   LIST - 카드형 목록
   ======================================== */
.table-board-list {
    max-width: 1200px;
    margin: 0 auto;
    padding: var(--spacing-lg);
}

/* 헤더 */
.table-list-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: var(--spacing-md);
    flex-wrap: wrap;
    gap: var(--spacing-md);
}

.table-list-header .header-left {}

.board-title {
    font-size: 1.8em;
    font-weight: 700;
    color: var(--content-font-color);
    margin: 0 0 var(--spacing-xs);
}

.board-subtitle {
    font-size: 0.95em;
    color: var(--table-accent);
    margin: 0;
}

.table-list-header .header-right {
    display: flex;
    gap: var(--spacing-md);
    align-items: center;
}

.table-search-box {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    background: var(--form-bg-color);
    border: 1px solid var(--form-border-color);
    color: var(--form-text-color);
    border-radius: 8px;
    padding: var(--spacing-sm) var(--spacing-md);
    backdrop-filter: blur(8px);
}

.table-search-box i {
    color: var(--content-font-color);
}

.table-search-box input {
    background: transparent;
    border: none;
    color: var(--content-font-color);
    font-size: 0.95em;
    width: 180px;
    outline: none;
}

.table-search-box input::placeholder {
    color: var(--content-font-color);
}

.btn-new-table {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm);
    background: var(--btn-accent-bg);
    color: var(--btn-accent-text);
    font-weight: 600;
    border-radius: 8px;
    text-decoration: none;
    transition: all 0.2s;
}

.btn-new-table:hover {
    transform: translateY(-2px);
    box-shadow: 0 3px 10px var(--accent-color);
    text-decoration: none;
    color: var(--btn-accent-text);
}

/* 관리자 툴바 */
.admin-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--spacing-xs) var(--spacing-sm);
    background: var(--table-header-bg);
    border: 1px solid var(--table-border);
    border-radius: 8px;
    margin-bottom: var(--spacing-lg);
    backdrop-filter: blur(1px);
}

.admin-toolbar .chk_box {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    color: var(--content-font-color);
    font-size: 0.9em;
}

.admin-actions {
    display: flex;
    gap: var(--spacing-sm);
}

.btn-admin {
    padding: var(--spacing-xs) var(--spacing-md);
    background: transparent;
    border: 1px solid var(--table-border);
    color: var(--content-font-color);
    border-radius: 6px;
    cursor: pointer;
    transition: all 0.15s;
}

.btn-admin:hover {
    background: var(--table-accent-dim);
    border-color: var(--table-accent);
    color: var(--table-accent);
}

/* 카드 그리드 */
.table-cards-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: var(--spacing-lg);
}

/* 테이블 카드 */
.table-card {
    position: relative;
    background: var(--table-glass-bg);
    backdrop-filter: blur(16px);
    border: 1px solid var(--table-border);
    border-radius: 12px;
    overflow: hidden;
    transition: all 0.25s;
}

.table-card:hover {
    transform: translateY(-4px);
    border-color: var(--table-accent);
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
}

.table-card .card-checkbox {
    position: absolute;
    top: var(--spacing-sm);
    left: var(--spacing-sm);
    z-index: 10;
}

.table-card .card-link {
    display: block;
    text-decoration: none;
    color: inherit;
}

/* 테이블 썸네일 */
.table-thumbnail {
    display: flex;
    flex-direction: column;
    gap: 1px;
    background: var(--table-border);
    aspect-ratio: 16 / 10;
}

.thumb-row {
    display: flex;
    gap: 1px;
    flex: 1;
}

.thumb-cell {
    flex: 1;
    background: var(--table-header-gr);
    border-radius: 2px;
}

.thumb-row.thumb-header .thumb-cell {
    background: var(--table-header-gr);
}

.thumb-cell.has-data {
    background: var(--table-accent-dim);
}

/* 카드 정보 */
.card-info {
    padding: var(--spacing-md);
}

.card-title {
    font-size: 1em;
    font-weight: 600;
    color: var(--content-font-color);
    margin: 0 0 var(--spacing-sm);
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.badge-new {
    font-size: 0.7em;
    padding: 2px 6px;
    background: var(--table-accent);
    color: var(--btn-accent-text);
    border-radius: 4px;
    font-weight: 700;
}

.card-meta {
    display: flex;
    justify-content: space-between;
    font-size: 0.85em;
    color: var(--content-font-color);
}

.meta-item i {
    margin-right: 4px;
}

/* 카드 옵션 */
.card-options-btn {
    position: absolute;
    top: var(--spacing-sm);
    right: var(--spacing-sm);
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--table-header-gr);
    border: none;
    border-radius: 6px;
    color: var(--content-font-color);
    cursor: pointer;
    opacity: 0;
    transition: all 0.15s;
}

.table-card:hover .card-options-btn {
    opacity: 1;
}

.card-options-btn:hover {
    background: var(--table-accent);
    color: var(--btn-accent-text);
}

.card-options-menu {
    position: absolute;
    top: 45px;
    right: var(--spacing-sm);
    background: var(--card-bg-color);
    border: 1px solid var(--table-border);
    border-radius: 8px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
    z-index: 100;
    display: none;
    min-width: 120px;
}

.card-options-menu.show {
    display: block;
}

.card-options-menu a {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    color: var(--content-font-color);
    text-decoration: none;
    font-size: 0.9em;
    transition: all 0.15s;
}

.card-options-menu a:hover {
    background: var(--table-accent-dim);
    color: var(--table-accent);
}

.card-options-menu a i {
    width: 16px;
    text-align: center;
}

/* 빈 상태 */
.empty-state {
    grid-column: 1 / -1;
    text-align: center;
    padding: var(--spacing-xxl) var(--spacing-lg);
}

.empty-icon {
    font-size: 4em;
    color: var(--table-border);
    margin-bottom: var(--spacing-lg);
}

.empty-state h3 {
    font-size: 1.3em;
    color: var(--content-font-color);
    margin: 0 0 var(--spacing-sm);
}

.empty-state p {
    color: var(--content-font-color);
    margin: 0 0 var(--spacing-lg);
}

/* 페이지네이션 */
.table-pagination {
    margin-top: var(--spacing-xl);
    text-align: center;
}

/* ========================================
   WRITE / VIEW - 테이블 에디터
   ======================================== */
.table-editor-wrap, .table-view-wrap {
    max-width: 1400px;
    margin: 0 auto;
    padding: 30px;
}

/* 에디터 헤더 */
.table-editor-header, .table-view-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--spacing-md) var(--spacing-lg);
    background: var(--table-glass-gr);
    border-bottom: 1px solid var(--table-border);
    border-radius: var(--card-border-radius) var(--card-border-radius) 0 0;
    position: sticky;
    top: 0;
    z-index: 100;
    backdrop-filter: blur(8px);
}

.table-editor-header .header-left,
.table-view-header .header-left {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    flex: 1;
}

.btn-back {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    background: transparent;
    border: 1px solid var(--table-border);
    border-radius: 8px;
    color: var(--content-font-color);
    text-decoration: none;
    transition: all 0.15s;
}

.btn-back:hover {
    background: var(--table-accent-dim);
    border-color: var(--table-accent);
    color: var(--table-accent);
}

.title-wrap {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    flex: 1;
}

.table-title-input {
    background: transparent;
    border: none;
    font-size: 1.2em;
    font-weight: 600;
    color: var(--content-font-color);
    outline: none;
    flex: 1;
    max-width: 400px;
}

.table-title-input:focus {
    border-bottom: 2px solid var(--table-accent);
}

.table-title-input::placeholder {
    color: var(--content-font-color);
}

.table-title {
    font-size: 1.2em;
    font-weight: 600;
    color: var(--content-font-color);
    margin: 0;
}

.title-info {
    flex: 1;
}

.table-meta {
    display: flex;
    gap: var(--spacing-md);
    margin-top: var(--spacing-xs);
    font-size: 0.85em;
    color: var(--content-font-color);
}

.table-meta .meta-item i {
    margin-right: 4px;
}

.save-status {
    font-size: 0.85em;
    color: var(--content-font-color);
    display: flex;
    align-items: center;
    gap: 4px;
}

.save-status.saved {
    color: var(--type-select);
}

.save-status.unsaved {
    color: var(--type-multiselect);
}

.save-status.saving {
    color: var(--type-date);
}

/* Autosave 표시 (view 모드) */
.autosave-indicator {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 0.5em;
    font-weight: 500;
    vertical-align: middle;
    margin-left: 8px;
    padding: 4px 10px;
    background: linear-gradient(135deg, rgba(251, 146, 60, 0.2), rgba(251, 146, 60, 0.1));
    border: 1px solid rgba(251, 146, 60, 0.4);
    border-radius: 20px;
    animation: autosavePulse 2s ease-in-out infinite;
}

.autosave-indicator a {
    color: var(--type-multiselect);
    text-decoration: none;
    display: flex;
    align-items: center;
    gap: 4px;
}

.autosave-indicator a:hover {
    color: #fff;
}

.autosave-indicator i {
    font-size: 1.1em;
}

@keyframes autosavePulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.7; }
}

/* Autosave 복구 버튼 (write 모드) */
.save-status.autosave-available {
    background: linear-gradient(135deg, rgba(251, 146, 60, 0.2), rgba(251, 146, 60, 0.1));
    border: 1px solid rgba(251, 146, 60, 0.4);
    border-radius: 6px;
    padding: 4px 10px;
    animation: autosavePulse 2s ease-in-out infinite;
}

.save-status.autosave-available a {
    color: var(--type-multiselect);
    text-decoration: none;
    display: flex;
    align-items: center;
    gap: 4px;
}

.save-status.autosave-available a:hover {
    color: #fff;
}

/* Autosave 컨트롤 버튼 */
.autosave-controls {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-left: 8px;
}

.btn-autosave,
.btn-autosave-list {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    padding: 0;
    background: transparent;
    border: 1px solid var(--table-border);
    border-radius: 6px;
    color: var(--content-font-color);
    cursor: pointer;
    transition: all 0.2s ease;
}

.btn-autosave:hover,
.btn-autosave-list:hover {
    background: var(--table-row-hover);
    color: var(--table-accent);
    border-color: var(--table-accent);
}

.autosave-count {
    position: absolute;
    top: -4px;
    right: -4px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    font-size: 10px;
    font-weight: 600;
    background: var(--type-multiselect);
    color: #fff;
    border-radius: 8px;
}

/* Autosave 모달 */
.autosave-modal {
    max-width: 450px;
}

.autosave-modal .modal-body {
    max-height: 350px;
    overflow-y: auto;
}

.autosave-loading,
.autosave-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-xl);
    color: var(--content-font-color);
    opacity: 0.7;
}

.autosave-empty i {
    font-size: 2.5em;
    margin-bottom: var(--spacing-md);
}

.autosave-items {
    list-style: none;
    margin: 0;
    padding: 0;
}

.autosave-item {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    border-bottom: 1px solid var(--table-border);
    transition: background 0.15s ease;
}

.autosave-item:last-child {
    border-bottom: none;
}

.autosave-item:hover {
    background: var(--table-row-hover);
}

.autosave-item-info {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 2px;
    cursor: pointer;
    min-width: 0;
}

.autosave-subject {
    font-size: 0.95em;
    color: var(--content-font-color);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.autosave-time {
    font-size: 0.8em;
    color: var(--content-font-color);
    opacity: 0.6;
}

.autosave-delete {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    padding: 0;
    background: transparent;
    border: none;
    color: var(--content-font-color);
    opacity: 0.5;
    cursor: pointer;
    border-radius: 4px;
    transition: all 0.15s ease;
}

.autosave-delete:hover {
    background: rgba(239, 68, 68, 0.2);
    color: #ef4444;
    opacity: 1;
}

.table-editor-header .header-right,
.table-view-header .header-right {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

/* 버튼 스타일 */
.btn-export,
.btn-more,
.btn-action {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    background: transparent;
    border: 1px solid var(--table-border);
    border-radius: 6px;
    color: var(--content-font-color);
    cursor: pointer;
    transition: all 0.15s;
    text-decoration: none;
    font-size: 0.9em;
}

.btn-export:hover,
.btn-more:hover,
.btn-action:hover {
    background: var(--table-accent-dim);
    border-color: var(--table-accent);
    color: var(--table-accent);
}

.btn-action.danger:hover {
    background: rgba(239, 68, 68, 0.1);
    border-color: #ef4444;
    color: #ef4444;
}

/* 드롭다운 메뉴 */
.export-dropdown,
.action-buttons {
    position: relative;
    display: flex;
    gap: var(--spacing-xs);
}

.export-menu,
.more-menu {
    position: absolute;
    top: 100%;
    right: 0;
    margin-top: var(--spacing-xs);
    background: var(--card-bg-color);
    border: 1px solid var(--table-border);
    border-radius: 8px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
    z-index: 200;
    min-width: 160px;
    display: none;
}

.export-menu.show,
.more-menu.show {
    display: block;
}

.export-menu button,
.more-menu a {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-md);
    background: transparent;
    border: none;
    color: var(--content-font-color);
    font-size: 0.9em;
    cursor: pointer;
    text-decoration: none;
    transition: all 0.15s;
    text-align: left;
}

.export-menu button:hover,
.more-menu a:hover {
    background: var(--table-accent-dim);
    color: var(--table-accent);
}

.menu-checkbox {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    color: var(--content-font-color);
    font-size: 0.9em;
    cursor: pointer;
}

.menu-checkbox input {
    accent-color: var(--table-accent);
}

/* 툴바 */
.table-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--spacing-sm) var(--spacing-lg);
    background: var(--table-glass-gr);
    border-bottom: 1px solid var(--table-border);
    position: sticky;
    top: 60px; /* 헤더 높이 */
    z-index: 90;
    backdrop-filter: blur(8px);
}

.toolbar-left,
.toolbar-right {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.table-search {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid var(--table-border);
    border-radius: 6px;
    padding: var(--spacing-xs) var(--spacing-sm);
    width: 240px;
}

.table-search i {
    color: var(--content-font-color);
}

.table-search input {
    background: transparent;
    border: none;
    color: var(--content-font-color);
    font-size: 0.9em;
    width: 100%;
    outline: none;
}

.table-search input::placeholder {
    color: var(--content-font-color);
}

.toolbar-btn {
    display: flex;
    align-items: center;
    gap: 4px;
    padding: var(--spacing-xs) var(--spacing-sm);
    background: transparent;
    border: none;
    border-radius: 6px;
    color: var(--content-font-color);
    font-size: 0.9em;
    cursor: pointer;
    transition: all 0.15s;
}

.toolbar-btn:hover {
    background: rgba(255, 255, 255, 0.05);
    color: var(--content-font-color);
}

.toolbar-btn.active {
    background: var(--table-accent-dim);
    color: var(--table-accent);
}

/* 테이블 에디터 컨테이너 */
.table-editor-container,
.table-view-container {
    overflow: auto;
    min-height: 400px;
    max-height: calc(100vh - 250px);
    background: var(--table-glass-bg);
    backdrop-filter: blur(4px);
}

/* 테이블 그리드 */
.table-grid {
    width: 100%;
}

.table-grid table {
    width: 100%;
    border-collapse: collapse;
}

.table-grid thead {
    position: sticky;
    top: 0;
    z-index: 80;
}

.table-grid thead th {
    position: relative;
    padding: var(--spacing-sm) var(--spacing-md);
    background: var(--card-bg-color);
    background-image: var(--table-header-gr);
    border-bottom: 1px solid var(--table-border);
    border-right: 0.5px solid var(--table-border);
    font-size: 0.9em;
    font-weight: 500;
    color: var(--content-font-color);
    text-align: left;
    user-select: none;
}

.table-grid thead th:last-child {
    border-right: none;
}

.col-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.col-type-icon {
    font-size: 0.85em;
    opacity: 0.6;
}

.col-name {
    flex: 1;
}

.col-sort {
    opacity: 0.5;
    cursor: pointer;
    transition: all 0.15s;
}

.col-sort:hover {
    opacity: 1;
    color: var(--table-accent);
}

/* 정렬 가능 헤더 */
th.sortable .col-header {
    cursor: pointer;
}

th.sortable .col-header:hover {
    color: var(--table-accent);
}

th.sortable.sorted {
    background: var(--table-cell-focus);
}

.col-sort-icon {
    opacity: 0.6;
    font-size: 0.85em;
    margin-left: auto;
    transition: all 0.15s;
}

.col-sort-icon:empty {
    display: none;
}

th.sortable:hover .col-sort-icon {
    opacity: 1;
}

th.sortable.sorted .col-sort-icon {
    opacity: 1;
    color: var(--table-accent);
}

.table-grid tbody tr {
    transition: background 0.1s;
}

.table-grid tbody tr:hover {
    background: var(--table-row-hover);
}

.table-grid tbody td {
    padding: var(--spacing-sm) var(--spacing-md);
    border-bottom: 1px solid var(--table-border);
    border-right: 1px solid var(--table-border);
    font-size: 1em;
    vertical-align: middle;
    min-height: 40px;
    line-height: 1.4;
}

.table-grid tbody td:last-child {
    border-right: none;
}

/* 셀 타입별 스타일 */
.cell-text {
    color: var(--content-font-color);
}

.cell-number {
    text-align: right;
    font-variant-numeric: tabular-nums;
    color: var(--type-number);
}

.cell-date {
    color: var(--type-date);
}

.cell-checkbox {
    text-align: center;
}

.cell-checkbox .cell-checkbox {
    width: 20px;
    height: 20px;
    border: 2px solid var(--content-font-color);
    border-radius: 4px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.85em;
}

.cell-checkbox .cell-checkbox.checked {
    background: var(--type-checkbox);
    border-color: var(--type-checkbox);
    color: var(--btn-accent-text);
}

.select-tag,
.multi-tag {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 0.85em;
    color: var(--btn-accent-text);
    font-weight: 500;
}

.multi-tag {
    font-size: 0.8em;
    margin-right: 4px;
    margin-bottom: 2px;
}

.url-link {
    color: var(--type-url);
    text-decoration: none;
}

.url-link:hover {
    text-decoration: underline;
}

.url-link i {
    margin-right: 4px;
    font-size: 0.85em;
}

/* 빈 행 */
.empty-row td {
    text-align: center;
    padding: var(--spacing-xxl);
}

.empty-message {
    color: var(--content-font-color);
}

/* 에디터 푸터 */
.table-editor-footer, .table-view-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--spacing-sm) var(--spacing-lg);
    background: var(--table-glass-bg);
    border-top: 1px solid var(--table-border);
    border-radius: 0 0 var(--card-border-radius) var(--card-border-radius);
    font-size: 0.85em;
    color: var(--content-font-color);
}

.footer-left,
.footer-right {
    display: flex;
    gap: var(--spacing-lg);
}

/* 비회원 입력 / 캡챠 */
.guest-info-section,
.captcha-section {
    padding: var(--spacing-md) var(--spacing-lg);
    background: var(--table-glass-bg);
    border-top: 1px solid var(--table-border);
}

.guest-info-section {
    display: flex;
    gap: var(--spacing-md);
}

.guest-info-section input {
    padding: var(--spacing-sm) var(--spacing-md);
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid var(--table-border);
    border-radius: 6px;
    color: var(--content-font-color);
}

/* 저장 버튼 */
.btn-confirm {
    display: flex;
    justify-content: center;
    gap: var(--spacing-sm);
    margin-top: var(--spacing-lg);
    /* background: var(--table-glass-gr); */
    /* border-top: 1px solid var(--table-border); */
}

.btn-cancel {
    text-decoration: none;
    background: var(--type-checkbox);
    color: white;
    padding: var(--spacing-sm) var(--spacing-xl);
    border: 1px solid var(--table-border);
    border-radius: 8px;
    transition: all 0.15s;
}


.btn-cancel:hover {
    background: rgba(255, 255, 255, 0.05);
    color: var(--content-font-color);
    text-decoration: none;
}

.btn-submit,
.btn-primary {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-xl);
    background: var(--btn-accent-bg);
    border: none;
    border-radius: 8px;
    color: var(--btn-accent-text);
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s;
    text-decoration: none;
}

.btn-submit:hover,
.btn-primary:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 16px var(--accent-color);
    text-decoration: none;
    color: var(--btn-accent-text);
}

.btn-submit:disabled {
    opacity: 0.5;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}

.row-delete-btn {
    border: 0;
    background: transparent;
}

.row-delete-btn:hover {
    color: var(--accent-color);
}

/* 이전글/다음글 */
.bo_v_nb {
    margin: var(--spacing-lg);
    padding: 0;
    list-style: none;
}

.bo_v_nb li {
    padding: var(--spacing-md);
    border-top: 1px solid var(--table-border);
}

.bo_v_nb li:last-child {
    border-bottom: 1px solid var(--table-border);
}

.bo_v_nb .nb_tit {
    display: inline-block;
    min-width: 80px;
    color: var(--content-font-color);
}

.bo_v_nb a {
    color: var(--content-font-color);
    text-decoration: none;
}

.bo_v_nb a:hover {
    color: var(--table-accent);
}

/* ========================================
   컬럼 타입 메뉴
   ======================================== */
.column-type-menu {
    position: absolute;
    min-width: 200px;
    background: var(--card-bg-color);
    border: 1px solid var(--table-border);
    border-radius: 8px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
    padding: var(--spacing-xs);
    z-index: 300;
}

.menu-section {
    padding: var(--spacing-xs) 0;
}

.menu-label {
    padding: var(--spacing-xs) var(--spacing-sm);
    font-size: 0.75em;
    color: var(--content-font-color);
    text-transform: uppercase;
}

.menu-item {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    font-size: 0.9em;
    border-radius: 4px;
    cursor: pointer;
    color: var(--content-font-color);
    transition: all 0.15s;
}

.menu-item:hover {
    background: rgba(255, 255, 255, 0.05);
}

.menu-item.danger {
    color: #ef4444;
}

.menu-item.danger:hover {
    background: rgba(239, 68, 68, 0.1);
}

.menu-divider {
    height: 1px;
    background: var(--table-border);
    margin: var(--spacing-xs) 0;
}

.type-icon {
    width: 20px;
    text-align: center;
    opacity: 0.7;
}

/* ========================================
   옵션 편집 모달
   ======================================== */
.modal-overlay {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.7);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1000;
}

.modal-content {
    background: var(--card-bg-color);
    border: 1px solid var(--table-border);
    border-radius: 12px;
    width: 90%;
    max-width: 500px;
    max-height: 80vh;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--spacing-md) var(--spacing-lg);
    border-bottom: 1px solid var(--table-border);
}

.modal-header h3 {
    margin: 0;
    font-size: 1.1em;
    color: var(--content-font-color);
}

.modal-close {
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: none;
    color: var(--content-font-color);
    font-size: 1.5em;
    cursor: pointer;
    border-radius: 6px;
}

.modal-close:hover {
    background: rgba(255, 255, 255, 0.05);
    color: var(--content-font-color);
}

.modal-body {
    padding: var(--spacing-lg);
    overflow-y: auto;
    flex: 1;
}

.modal-footer {
    display: flex;
    justify-content: flex-end;
    gap: var(--spacing-sm);
    padding: var(--spacing-md) var(--spacing-lg);
    border-top: 1px solid var(--table-border);
}

/* 모달 내부 폼 요소 */
.modal-body input[type="text"],
.modal-body input[type="number"],
.modal-body input[type="email"],
.modal-body input[type="url"],
.modal-body textarea {
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-md);
    background: var(--content-bg-color);
    border: 1px solid var(--table-border);
    border-radius: 6px;
    color: var(--content-font-color);
    font-size: 0.9em;
    transition: border-color 0.2s, box-shadow 0.2s;
}

.modal-body input[type="text"]:focus,
.modal-body input[type="number"]:focus,
.modal-body input[type="email"]:focus,
.modal-body input[type="url"]:focus,
.modal-body textarea:focus {
    outline: none;
    border-color: var(--primary-color);
    box-shadow: 0 0 0 2px rgba(var(--primary-color-rgb, 59, 130, 246), 0.2);
}

.modal-body input[type="color"] {
    width: 36px;
    height: 36px;
    padding: 2px;
    background: var(--content-bg-color);
    border: 1px solid var(--table-border);
    border-radius: 6px;
    cursor: pointer;
}

.modal-body input[type="color"]::-webkit-color-swatch-wrapper {
    padding: 2px;
}

.modal-body input[type="color"]::-webkit-color-swatch {
    border-radius: 4px;
    border: none;
}

.modal-body button {
    padding: var(--spacing-xs) var(--spacing-sm);
    background: var(--content-bg-color);
    border: 1px solid var(--table-border);
    border-radius: 6px;
    color: var(--content-font-color);
    cursor: pointer;
    transition: all 0.15s;
}

.modal-body button:hover {
    background: rgba(255, 255, 255, 0.1);
    border-color: var(--primary-color);
}

/* 옵션 편집 모달 */
.option-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

.option-row:last-of-type {
    border-bottom: none;
}

.opt-color {
    flex-shrink: 0;
}

.opt-label {
    flex: 1;
}

.opt-delete {
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 !important;
    background: transparent !important;
    border: none !important;
    color: var(--content-font-color);
    opacity: 0.5;
    font-size: 1.2em;
}

.opt-delete:hover {
    opacity: 1;
    color: #ef4444 !important;
    background: rgba(239, 68, 68, 0.1) !important;
    border-radius: 6px;
}

.btn-add-option {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-xs);
    width: 100%;
    margin-top: var(--spacing-md);
    padding: var(--spacing-sm) var(--spacing-md) !important;
    background: transparent !important;
    border: 1px dashed var(--table-border) !important;
    color: var(--content-font-color);
    opacity: 0.7;
}

.btn-add-option:hover {
    opacity: 1;
    border-color: var(--primary-color) !important;
    color: var(--primary-color);
}

/* 모달 푸터 버튼 */
.modal-footer .btn-cancel,
.modal-footer .btn-submit {
    padding: var(--spacing-sm) var(--spacing-lg);
    border-radius: 6px;
    font-size: 0.9em;
    cursor: pointer;
    transition: all 0.15s;
}

.modal-footer .btn-cancel {
    background: transparent;
    border: 1px solid var(--table-border);
    color: var(--content-font-color);
}

.modal-footer .btn-cancel:hover {
    background: rgba(255, 255, 255, 0.05);
}

.modal-footer .btn-submit {
    background: var(--primary-color);
    border: 1px solid var(--primary-color);
    color: #fff;
}

.modal-footer .btn-submit:hover {
    filter: brightness(1.1);
}

/* ========================================
   반응형
   ======================================== */
@media (max-width: 768px) {
    .table-list-header {
        flex-direction: column;
        align-items: stretch;
    }

    .table-list-header .header-right {
        flex-direction: column;
    }

    .table-search-box {
        width: 100%;
    }

    .table-search-box input {
        width: 100%;
    }

    .btn-new-table {
        width: 100%;
        justify-content: center;
    }

    .table-cards-grid {
        grid-template-columns: 1fr;
    }

    .table-editor-header,
    .table-view-header {
        flex-direction: column;
        gap: var(--spacing-md);
        padding: var(--spacing-md);
    }

    .table-editor-header .header-left,
    .table-view-header .header-left {
        width: 100%;
    }

    .table-editor-header .header-right,
    .table-view-header .header-right {
        width: 100%;
        justify-content: flex-end;
    }

    .table-title-input {
        max-width: none;
    }

    .table-toolbar {
        flex-direction: column;
        gap: var(--spacing-sm);
    }

    .table-search {
        width: 100%;
    }

    .toolbar-right {
        width: 100%;
        justify-content: flex-end;
    }

    .table-editor-container,
    .table-view-container {
        -webkit-overflow-scrolling: touch;
    }

    /* 첫 번째 열 고정 */
    .table-grid thead th:first-child,
    .table-grid tbody td:first-child {
        position: sticky;
        left: 0;
        z-index: 10;
        background: var(--card-bg-color);
    }

    .table-editor-footer,
    .table-view-footer {
        flex-direction: column;
        gap: var(--spacing-sm);
        text-align: center;
    }
}

/* ========================================
   에디터 전용 스타일 (table-editor.js)
   ======================================== */

/* 행 핸들 */
.row-handle {
    width: 24px;
    padding: var(--spacing-sm) 4px;
    color: var(--content-font-color);
    cursor: grab;
    text-align: center;
    border-right: 1px solid var(--table-border);
    opacity: 0.5;
    transition: all 0.15s;
}

.row-handle:hover {
    color: var(--content-font-color);
    background: rgba(255, 255, 255, 0.03);
    opacity: 1;
}

tr.dragging {
    opacity: 0.5;
    background: var(--table-accent-dim);
}

/* 편집 가능한 셀 */
.table-grid:not(.readonly) tbody td {
    cursor: text;
}

.table-grid:not(.readonly) tbody td:focus-within {
    background: var(--table-cell-focus);
    box-shadow: inset 0 0 0 2px var(--table-accent);
}

/* 인라인 입력 */
.cell-input {
    background: transparent;
    border: none;
    color: var(--content-font-color);
    font-size: inherit;
    width: 100%;
    outline: none;
}

.cell-input::placeholder {
    color: var(--content-font-color);
}

.table-grid .cell-input:focus {
    box-shadow: none !important;
    border: 0 !important;
}

/* textarea 입력 (줄바꿈 지원) */
.cell-textarea {
    resize: none;
    overflow: hidden;
    padding: 0;
    font-family: inherit;
}

/* 채우기 핸들 (엑셀 스타일) */
.table-grid:not(.readonly) tbody td {
    position: relative;
}

.fill-handle {
    position: absolute;
    right: 0;
    bottom: 0;
    width: 8px;
    height: 8px;
    background: var(--table-accent);
    cursor: crosshair;
    opacity: 0;
    transition: opacity 0.15s;
    z-index: 10;
}

.table-grid:not(.readonly) tbody td:hover .fill-handle,
.table-grid:not(.readonly) tbody td:focus-within .fill-handle {
    opacity: 1;
}

/* 채우기 하이라이트 */
.fill-source {
    background: var(--table-cell-focus) !important;
    box-shadow: inset 0 0 0 2px var(--table-accent) !important;
}

.fill-target {
    background: var(--table-accent-dim) !important;
    box-shadow: inset 0 0 0 1px var(--table-accent) !important;
}

/* 셀 선택 하이라이트 */
.cell-selected {
    background: var(--table-accent-dim) !important;
    box-shadow: inset 0 0 0 1px var(--table-accent) !important;
}

.cell-selected .cell-input {
    background: transparent;
}

/* 열 추가 버튼 */
.col-add {
    width: 40px;
    text-align: center;
    color: var(--content-font-color);
    cursor: pointer;
    transition: all 0.15s;
}

.col-add:hover {
    background: rgba(255, 255, 255, 0.05);
    color: var(--table-accent);
}

/* 행 추가 버튼 */
.add-row-btn {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-lg);
    color: var(--content-font-color);
    cursor: pointer;
    transition: all 0.15s;
    width: 100%;
    background: transparent;
    border: none;
    border-top: 1px dashed var(--table-border);
    text-align: left;
}

.add-row-btn:hover {
    background: var(--table-row-hover);
    color: var(--table-accent);
}

/* 열 리사이즈 핸들 */
.col-resize {
    position: absolute;
    right: 0;
    top: 0;
    bottom: 0;
    width: 4px;
    cursor: col-resize;
}

.col-resize:hover {
    background: var(--table-accent);
}

/* 선택 드롭다운 */
.select-dropdown {
    position: fixed;
    min-width: 150px;
    max-height: 300px;
    overflow-y: auto;
    background: var(--card-bg-color);
    border: 1px solid var(--table-border);
    border-radius: 8px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
    padding: var(--spacing-xs);
    z-index: 1000;
}

.select-option {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-xs) var(--spacing-sm);
    border-radius: 4px;
    cursor: pointer;
    transition: all 0.15s;
}

.select-option:hover {
    background: rgba(255, 255, 255, 0.05);
}

.select-color {
    width: 12px;
    height: 12px;
    border-radius: 3px;
}

/* 체크박스 클릭 스타일 */
.table-grid:not(.readonly) .cell-checkbox .cell-checkbox {
    cursor: pointer;
}

.table-grid:not(.readonly) .cell-checkbox .cell-checkbox:hover {
    border-color: var(--table-accent);
}

/* ========================================
   트리 구조 스타일
   ======================================== */

/* 행 핸들 헤더 (컬럼 헤더) */
.row-handle-header {
    width: 28px !important;
    min-width: 28px !important;
    max-width: 28px !important;
    padding: var(--spacing-xs) !important;
}

/* 행 핸들 내부 레이아웃 */
td.row-handle {
    vertical-align: middle;
    text-align: center;
    padding: var(--spacing-xs) !important;
    width: 28px;
    min-width: 28px;
    max-width: 28px;
}

td.row-handle > * {
    display: inline-block;
    vertical-align: middle;
}

/* 들여쓰기 공간 */
.row-indent {
    display: inline-block;
    vertical-align: middle;
}

/* 접기/펼치기 토글 버튼 */
.tree-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    padding: 0;
    background: transparent;
    border: none;
    border-radius: 4px;
    color: var(--content-font-color);
    cursor: pointer;
    transition: all 0.15s;
    flex-shrink: 0;
    opacity: 0.6;
}

.tree-toggle:hover {
    background: var(--table-accent-dim);
    color: var(--table-accent);
    opacity: 1;
}

.tree-toggle i {
    font-size: 0.7em;
}

.tree-toggle-placeholder {
    display: inline-block;
    width: 18px;
    flex-shrink: 0;
}

/* 드래그 핸들 */
.row-grip {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: grab;
    opacity: 0.4;
    transition: opacity 0.15s;
}

.row-handle:hover .row-grip {
    opacity: 1;
}

/* 레벨별 배경색 (미묘한 차이) */
.tree-row.level-0 {
    background: transparent;
}

.tree-row.level-1 {
    background: rgb(from var(--card-bg-color) r g b / 30%);
}

.tree-row.level-2 {
    background: rgb(from var(--card-bg-color) r g b / 50%);
}

.tree-row.level-3 {
    background: rgb(from var(--card-bg-color) r g b / 70%);
}

/* 드래그 앤 드롭 표시 */
tr.dragging {
    opacity: 0.4;
}

tr.drop-above {
    box-shadow: inset 0 3px 0 var(--table-accent);
}

tr.drop-below {
    box-shadow: inset 0 -3px 0 var(--table-accent);
}

tr.drop-child {
    background: var(--table-accent-dim) !important;
    box-shadow: inset 0 0 0 2px var(--table-accent);
}

/* 들여쓰기가 있는 셀 - wrapper 방식 사용 */

.indent-wrapper {
    display: flex;
    align-items: center;
    gap: 2px;
    width: 100%;
}

.indent-wrapper > .row-indent {
    flex-shrink: 0;
}

.indent-wrapper > .tree-toggle,
.indent-wrapper > .tree-toggle-placeholder {
    flex-shrink: 0;
}

.indent-wrapper > .cell-input,
.indent-wrapper > .cell-textarea,
.indent-wrapper > .select-cell,
.indent-wrapper > .multiselect-cell,
.indent-wrapper > .cell-text,
.indent-wrapper > .cell-checkbox,
.indent-wrapper > .cell-number,
.indent-wrapper > .url-cell {
    flex: 1;
    min-width: 0;
}

/* readonly 모드의 태그들 */
.indent-wrapper > .select-tag,
.indent-wrapper > .multi-tag,
.indent-wrapper > .url-link {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* 하위 항목 추가 버튼 */
.row-add-child-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    padding: 0;
    background: transparent;
    border: none;
    border-radius: 4px;
    color: var(--content-font-color);
    cursor: pointer;
    opacity: 0;
    transition: all 0.15s;
}

tr:hover .row-add-child-btn {
    opacity: 0.5;
}

.row-add-child-btn:hover {
    background: var(--table-accent-dim);
    color: var(--table-accent);
    opacity: 1 !important;
}

/* 행 액션 영역 */
.row-actions {
    display: flex;
    align-items: center;
    gap: 2px;
    padding: var(--spacing-xs) !important;
    white-space: nowrap;
}

/* ========================================
   필터 패널 개선
   ======================================== */

.filter-panel {
    padding: var(--spacing-md) var(--spacing-lg);
    background: var(--table-header-gr);
    border-bottom: 1px solid var(--table-border);
}

.filter-panel-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--spacing-sm);
}

.filter-panel-title {
    font-size: 0.9em;
    font-weight: 500;
    color: var(--content-font-color);
}

.filter-panel-actions {
    display: flex;
    gap: var(--spacing-sm);
}

#filter_rows {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.filter-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-xs);
    background: rgb(from var(--card-bg-color) r g b / 50%);
    border-radius: 6px;
}

.filter-column,
.filter-operator {
    padding: var(--spacing-xs) var(--spacing-sm);
    background: var(--form-bg-color);
    border: 1px solid var(--form-border-color);
    border-radius: 4px;
    color: var(--form-text-color);
    font-size: 0.85em;
}

.filter-column {
    min-width: 120px;
}

.filter-operator {
    min-width: 100px;
}

.filter-value {
    flex: 1;
    min-width: 100px;
    padding: var(--spacing-xs) var(--spacing-sm);
    background: var(--form-bg-color);
    border: 1px solid var(--form-border-color);
    border-radius: 4px;
    color: var(--form-text-color);
    font-size: 0.85em;
}

.filter-remove {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    padding: 0;
    background: transparent;
    border: none;
    border-radius: 4px;
    color: var(--content-font-color);
    font-size: 1.2em;
    cursor: pointer;
    transition: all 0.15s;
}

.filter-remove:hover {
    background: rgba(239, 68, 68, 0.2);
    color: #ef4444;
}

.btn-add-filter,
.btn-apply-filter,
.btn-clear-filter {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-xs);
    padding: var(--spacing-xs) var(--spacing-sm);
    background: transparent;
    border: 1px dashed var(--table-border);
    border-radius: 4px;
    color: var(--content-font-color);
    font-size: 0.85em;
    cursor: pointer;
    transition: all 0.15s;
}

.btn-add-filter:hover {
    border-color: var(--table-accent);
    color: var(--table-accent);
}

.btn-apply-filter {
    border-style: solid;
    background: var(--table-accent-dim);
    border-color: var(--table-accent);
}

.btn-apply-filter:hover {
    background: var(--table-accent);
    color: var(--btn-accent-text);
}

.btn-clear-filter:hover {
    border-color: #ef4444;
    color: #ef4444;
}

/* 필터 상태 표시 */
#filter_status {
    font-size: 0.85em;
    color: var(--content-font-color);
    opacity: 0.6;
}

#filter_status.active {
    color: var(--table-accent);
    opacity: 1;
}

/* 툴바 내 트리 컨트롤 */
.tree-controls {
    display: flex;
    gap: var(--spacing-xs);
}

.tree-controls .toolbar-btn {
    font-size: 0.8em;
}

/* 툴바 구분선 */
.toolbar-divider {
    width: 1px;
    height: 20px;
    background: var(--table-border);
    margin: 0 var(--spacing-sm);
}

/* 서식 버튼 */
.format-controls {
    display: flex;
    gap: 2px;
}

.format-btn {
    width: 28px;
    height: 28px;
    padding: 0 !important;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: Georgia, serif;
}

.format-btn b {
    font-weight: 700;
}

.format-btn i {
    font-style: italic;
}

.format-btn s {
    text-decoration: line-through;
}

.format-btn u {
    text-decoration: underline;
}

/* 색상 피커 */
.color-picker-wrap {
    position: relative;
}

.color-btn {
    position: relative;
}

.color-icon {
    font-weight: 700;
    font-size: 0.9em;
}

.highlight-icon {
    background: linear-gradient(to top, #fef08a 40%, transparent 40%);
    padding: 0 2px;
}

.text-icon {
    color: #ef4444;
    border-bottom: 2px solid #ef4444;
}

.color-picker {
    position: absolute;
    top: 100%;
    left: 0;
    margin-top: 4px;
    background: var(--card-bg-color);
    border: 1px solid var(--table-border);
    border-radius: 8px;
    padding: var(--spacing-sm);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3);
    z-index: 300;
}

.color-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 4px;
}

.color-swatch {
    width: 24px;
    height: 24px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    transition: transform 0.1s;
}

.color-swatch:hover {
    transform: scale(1.15);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}

.color-swatch.clear-color {
    background: var(--card-bg-color);
    border: 1px dashed var(--table-border);
    color: var(--content-font-color);
    font-size: 0.8em;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* ========================================
   이미지 사이드바
   ======================================== */

.table-editor-main {
    display: flex;
    gap: 0;
}

.table-editor-main .table-editor-container {
    flex: 1;
    min-width: 0;
}

.image-sidebar {
    width: 200px;
    min-width: 200px;
    background: var(--card-bg-color);
    border-left: 1px solid var(--table-border);
    display: flex;
    flex-direction: column;
    transition: width 0.3s, min-width 0.3s;
}

.image-sidebar.collapsed {
    width: 40px;
    min-width: 40px;
}

.image-sidebar.collapsed .sidebar-content {
    display: none;
}

.image-sidebar.collapsed .sidebar-title {
    display: none;
}

.sidebar-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px;
    border-bottom: 1px solid var(--table-border);
    background: var(--table-header-bg);
}

.sidebar-title {
    font-size: 0.85em;
    font-weight: 600;
    color: var(--content-font-color);
    display: flex;
    align-items: center;
    gap: 6px;
}

.sidebar-toggle {
    width: 24px;
    height: 24px;
    border: none;
    background: transparent;
    color: var(--sub-font-color);
    cursor: pointer;
    border-radius: 4px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.sidebar-toggle:hover {
    background: var(--table-hover-bg);
}

.sidebar-content {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.image-dropzone {
    margin: 10px;
    padding: 20px 10px;
    border: 2px dashed var(--table-border);
    border-radius: 8px;
    text-align: center;
    cursor: pointer;
    transition: all 0.2s;
}

.image-dropzone:hover,
.image-dropzone.dragover {
    border-color: var(--link-color);
    background: rgba(var(--link-color-rgb, 59, 130, 246), 0.05);
}

.image-dropzone i {
    font-size: 1.5em;
    color: var(--sub-font-color);
    margin-bottom: 8px;
}

.image-dropzone p {
    font-size: 0.75em;
    color: var(--sub-font-color);
    margin: 0;
    line-height: 1.4;
}

.image-list {
    flex: 1;
    overflow-y: auto;
    padding: 10px;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 8px;
    align-content: start;
}

.image-item {
    position: relative;
    aspect-ratio: 1;
    border-radius: 6px;
    overflow: hidden;
    cursor: grab;
    border: 2px solid transparent;
    transition: all 0.2s;
}

.image-item:hover {
    border-color: var(--link-color);
}

.image-item.dragging {
    opacity: 0.5;
}

.image-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.image-item-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(0,0,0,0.6) 0%, transparent 50%);
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    padding: 4px 6px;
    opacity: 0;
    transition: opacity 0.2s;
}

.image-item:hover .image-item-overlay {
    opacity: 1;
}

.image-index {
    background: var(--link-color);
    color: #fff;
    font-size: 0.7em;
    font-weight: 600;
    padding: 2px 6px;
    border-radius: 4px;
}

.btn-delete-image {
    width: 20px;
    height: 20px;
    border: none;
    background: rgba(239, 68, 68, 0.9);
    color: #fff;
    border-radius: 4px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.7em;
}

.btn-delete-image:hover {
    background: #dc2626;
}

.sidebar-help {
    font-size: 0.7em;
    color: var(--sub-font-color);
    text-align: center;
    padding: 8px;
    border-top: 1px solid var(--table-border);
    margin: 0;
}

/* 셀에 드롭 시 하이라이트 */
.table-grid td.drop-target {
    background: rgba(var(--link-color-rgb, 59, 130, 246), 0.15) !important;
    outline: 2px dashed var(--link-color);
    outline-offset: -2px;
}

/* 셀 내 이미지 */
.cell-image-wrap {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 4px;
}

.cell-image-wrap img.table-image {
    max-width: 100%;
    max-height: 80px;
    border-radius: 4px;
    object-fit: contain;
}

.cell-image-placeholder {
    padding: 8px;
    color: var(--sub-font-color);
    font-size: 0.8em;
    font-family: monospace;
    background: var(--table-hover-bg);
    border-radius: 4px;
    text-align: center;
}

/* 셀 이미지 클릭 가능 표시 */
.cell-image-wrap img.table-image {
    cursor: zoom-in;
    transition: transform 0.2s, box-shadow 0.2s;
}

.cell-image-wrap img.table-image:hover {
    transform: scale(1.05);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}

/* ========================================
   이미지 모달
   ======================================== */

.table-image-modal {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 9999;
    align-items: center;
    justify-content: center;
}

.table-image-modal.active {
    display: flex;
}

.table-image-modal-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.9);
    cursor: pointer;
}

.table-image-modal-content {
    position: relative;
    max-width: 90vw;
    max-height: 90vh;
    z-index: 1;
}

.table-image-modal-content img {
    max-width: 90vw;
    max-height: 90vh;
    object-fit: contain;
    border-radius: 4px;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
}

.table-image-modal-close {
    position: absolute;
    top: -40px;
    right: 0;
    width: 36px;
    height: 36px;
    border: none;
    background: rgba(255, 255, 255, 0.1);
    color: #fff;
    font-size: 1.2em;
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.2s;
}

.table-image-modal-close:hover {
    background: rgba(255, 255, 255, 0.2);
}

.table-grid td {
    position: relative;
}

.btn-remove-cell-image {
    position: absolute;
    top: 2px;
    right: 2px;
    width: 18px;
    height: 18px;
    border: none;
    background: rgba(239, 68, 68, 0.8);
    color: #fff;
    border-radius: 3px;
    cursor: pointer;
    font-size: 0.65em;
    display: none;
    align-items: center;
    justify-content: center;
}

.table-grid td:hover .btn-remove-cell-image {
    display: flex;
}

/* 반응형 */
@media (max-width: 768px) {
    .image-sidebar {
        position: fixed;
        right: 0;
        top: 0;
        bottom: 0;
        z-index: 1000;
        box-shadow: -2px 0 10px rgba(0,0,0,0.2);
    }

    .image-sidebar.collapsed {
        width: 40px;
    }
}
