.painting-detail { position: relative; min-height: 100vh; background: linear-gradient(180deg, #1a1a2e 0%, #0f0f1a 100%); color: #e8d5b5; } .painting-header { display: flex; align-items: center; justify-content: space-between; padding: 16px 24px; border-bottom: 2px solid #c9a96e; background: rgba(26, 26, 46, 0.95); position: sticky; top: 0; z-index: 50; } .painting-title-block h1 { font-family: 'Georgia', serif; font-size: 24px; margin: 0; color: #e8d5b5; } .painting-meta { margin: 4px 0 0; color: #c9a96e; font-size: 14px; } .painting-catalog-position { color: rgba(232, 213, 181, 0.65); } .back-btn, .bio-btn { padding: 8px 16px; border: 1px solid #c9a96e; background: rgba(201, 169, 110, 0.15); color: #e8d5b5; border-radius: 4px; cursor: pointer; font-family: 'Georgia', serif; font-size: 14px; white-space: nowrap; transition: background 0.2s; } .back-btn:hover, .bio-btn:hover { background: rgba(201, 169, 110, 0.35); } .painting-layout { display: grid; grid-template-columns: minmax(300px, 360px) 1fr minmax(300px, 360px); gap: 0; min-height: calc(100vh - 80px); } .influence-panel { padding: 20px 16px; overflow-y: auto; max-height: calc(100vh - 80px); } .influence-left, .influence-right { min-width: 300px; max-width: 360px; } .influence-left { border-right: 1px solid rgba(201, 169, 110, 0.2); background: rgba(0, 0, 0, 0.2); } .influence-right { border-left: 1px solid rgba(201, 169, 110, 0.2); background: rgba(0, 0, 0, 0.2); } .influence-panel h3 { font-family: 'Georgia', serif; color: #c9a96e; font-size: 16px; margin: 0 0 16px; text-align: center; border-bottom: 1px solid rgba(201, 169, 110, 0.3); padding-bottom: 8px; } .no-influences { font-size: 13px; color: rgba(232, 213, 181, 0.5); text-align: center; font-style: italic; } .influence-list { display: flex; flex-direction: column; gap: 16px; } .influence-card-expanded { background: rgba(201, 169, 110, 0.08); border: 1px solid rgba(201, 169, 110, 0.2); border-radius: 8px; overflow: hidden; } .influence-image-btn { display: flex; align-items: center; justify-content: center; width: 100%; min-height: 120px; max-height: 220px; padding: 8px; border: none; background: #2a1f15; cursor: pointer; box-sizing: border-box; } .influence-image-btn img { width: auto; height: auto; max-width: 100%; max-height: 200px; object-fit: contain; object-position: center; display: block; transition: opacity 0.2s; } .influence-image-btn:hover img { opacity: 0.85; } .influence-body { padding: 12px; display: flex; flex-direction: column; gap: 8px; } .influence-title-btn { background: none; border: none; padding: 0; text-align: left; cursor: pointer; color: inherit; } .influence-title-btn:hover strong { color: #c9a96e; } .influence-title-btn strong { display: block; font-size: 14px; color: #e8d5b5; transition: color 0.2s; } .influence-title-btn span { font-size: 11px; color: #c9a96e; } .influence-title-static { cursor: default; } .influence-card-movement { display: flex; flex-direction: row; } .influence-movement-swatch { width: 12px; flex-shrink: 0; } .influence-card-artist .influence-portrait-btn img { max-height: 160px; object-fit: contain; object-position: center top; } .influence-period { font-size: 11px; color: #a89070; font-style: italic; margin: 0; } .influence-discovered-tag { font-size: 10px; color: #7a6a55; font-style: italic; } .influence-title-btn:disabled { cursor: default; opacity: 0.85; } .influence-image-btn:disabled { cursor: default; } .influence-aspects { display: flex; flex-wrap: wrap; gap: 4px; } .aspect-tag { font-size: 10px; padding: 2px 8px; border-radius: 10px; background: rgba(201, 169, 110, 0.15); border: 1px solid rgba(201, 169, 110, 0.3); color: #c9a96e; text-transform: capitalize; } .influence-notes { font-size: 12px; color: rgba(232, 213, 181, 0.8); margin: 0; line-height: 1.55; } .influence-quote { margin: 0; padding: 10px 12px; border-left: 3px solid #c9a96e; background: rgba(0, 0, 0, 0.2); border-radius: 0 4px 4px 0; } .influence-quote p { margin: 0 0 6px; font-family: 'Georgia', serif; font-size: 12px; font-style: italic; color: rgba(232, 213, 181, 0.9); line-height: 1.5; } .influence-quote footer { font-size: 11px; color: rgba(201, 169, 110, 0.7); } .influence-quote cite { font-style: normal; } .influence-source-link { font-size: 11px; color: #87b5d8; text-decoration: none; border-bottom: 1px dotted rgba(135, 181, 216, 0.4); align-self: flex-start; } .influence-source-link:hover { color: #a8d4f5; border-bottom-color: #a8d4f5; } .influence-card { display: flex; gap: 10px; padding: 8px; background: rgba(201, 169, 110, 0.08); border: 1px solid rgba(201, 169, 110, 0.2); border-radius: 6px; cursor: pointer; text-align: left; color: inherit; transition: background 0.2s, border-color 0.2s; } .influence-card:hover { background: rgba(201, 169, 110, 0.2); border-color: #c9a96e; } .influence-card img { width: 64px; height: 64px; object-fit: contain; object-position: center; border-radius: 4px; flex-shrink: 0; background: rgba(0, 0, 0, 0.25); } .influence-info { display: flex; flex-direction: column; gap: 2px; min-width: 0; } .influence-info strong { font-size: 13px; color: #e8d5b5; } .influence-info span { font-size: 11px; color: #c9a96e; } .painting-center { display: flex; flex-direction: column; align-items: center; padding: 24px; } .painting-center-nav { display: flex; align-items: center; justify-content: center; gap: 16px; width: 100%; max-width: 820px; } .painting-nav-btn { flex-shrink: 0; width: 44px; height: 44px; border: 1px solid #c9a96e; border-radius: 50%; background: rgba(201, 169, 110, 0.15); color: #e8d5b5; font-size: 28px; line-height: 1; cursor: pointer; transition: background 0.2s, border-color 0.2s, opacity 0.2s; } .painting-nav-btn:hover:not(:disabled) { background: rgba(201, 169, 110, 0.35); border-color: #e8d5b5; } .painting-nav-btn:disabled { opacity: 0.25; cursor: default; } .painting-nav-btn:focus-visible { outline: 2px solid #c9a96e; outline-offset: 2px; } .painting-frame-large { max-width: 700px; width: 100%; border: 8px solid #5c3d2e; border-image: linear-gradient(135deg, #8B6914, #c9a96e, #8B6914) 1; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5), inset 0 0 0 2px #c9a96e; background: #2a1f15; padding: 4px; } .painting-detail-fullscreen-active { overflow: hidden; } .painting-frame-clickable { cursor: zoom-in; transition: box-shadow 0.2s, transform 0.2s; } .painting-frame-clickable:hover { box-shadow: 0 10px 36px rgba(0, 0, 0, 0.6), inset 0 0 0 2px #e8d5b5; transform: scale(1.005); } .painting-frame-clickable:focus-visible { outline: 2px solid #c9a96e; outline-offset: 4px; } .painting-frame-large img { width: 100%; display: block; user-select: none; } .painting-frame-large .painting-frame-image-wrap img { width: 100%; display: block; } .painting-description { max-width: 700px; margin-top: 20px; padding: 16px; background: rgba(201, 169, 110, 0.08); border-radius: 6px; border: 1px solid rgba(201, 169, 110, 0.15); } .painting-description p { margin: 0; font-family: 'Georgia', serif; font-size: 14px; line-height: 1.7; color: rgba(232, 213, 181, 0.85); } .debug-image-panel { position: fixed; left: 16px; bottom: 16px; z-index: 60; width: min(280px, calc(100vw - 32px)); padding: 12px; border-radius: 8px; border: 1px solid rgba(232, 160, 64, 0.45); background: rgba(15, 15, 26, 0.94); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.45); font-family: ui-monospace, 'Cascadia Code', monospace; } .debug-image-panel h4 { margin: 0 0 6px; font-size: 11px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: #e8a040; } .debug-image-query { margin: 0 0 8px; font-size: 10px; line-height: 1.4; color: rgba(232, 213, 181, 0.75); word-break: break-word; } .debug-action-buttons { display: flex; gap: 8px; margin-top: 4px; } .debug-checked-btn { flex: 1; padding: 8px 10px; border: 1px solid rgba(201, 169, 110, 0.45); border-radius: 6px; background: rgba(201, 169, 110, 0.1); color: #c9a96e; font-size: 12px; font-weight: 600; cursor: pointer; } .debug-checked-btn:hover:not(:disabled) { background: rgba(201, 169, 110, 0.22); border-color: #c9a96e; } .debug-checked-btn:disabled { opacity: 0.55; cursor: default; } .debug-image-preview { display: block; width: 100%; max-height: 160px; object-fit: contain; background: #2a1f15; border-radius: 4px; margin-bottom: 8px; } .debug-fix-btn { flex: 1; padding: 8px 10px; border: 1px solid #e8a040; border-radius: 6px; background: rgba(232, 160, 64, 0.15); color: #e8a040; font-size: 12px; font-weight: 600; cursor: pointer; } .debug-fix-btn:hover:not(:disabled) { background: rgba(232, 160, 64, 0.28); } .debug-fix-btn:disabled { opacity: 0.6; cursor: wait; } .debug-more-btn { flex: 1; padding: 8px 10px; border: 1px solid rgba(201, 169, 110, 0.55); border-radius: 6px; background: rgba(201, 169, 110, 0.08); color: #e8d5b5; font-size: 12px; font-weight: 600; cursor: pointer; } .debug-more-btn:hover:not(:disabled) { background: rgba(201, 169, 110, 0.2); border-color: #c9a96e; } .debug-more-btn:disabled { opacity: 0.6; cursor: wait; } .debug-action-buttons-secondary { margin-top: 0; } .debug-clear-btn, .debug-upload-btn { flex: 1; padding: 8px 10px; border-radius: 6px; font-size: 12px; font-weight: 600; cursor: pointer; } .debug-clear-btn { border: 1px solid rgba(232, 120, 100, 0.55); background: rgba(232, 120, 100, 0.1); color: #e87864; } .debug-clear-btn:hover:not(:disabled) { background: rgba(232, 120, 100, 0.2); border-color: #e87864; } .debug-upload-btn { border: 1px solid rgba(140, 190, 140, 0.55); background: rgba(140, 190, 140, 0.1); color: #8cbe8c; } .debug-upload-btn:hover:not(:disabled) { background: rgba(140, 190, 140, 0.2); border-color: #8cbe8c; } .debug-clear-btn:disabled, .debug-upload-btn:disabled { opacity: 0.6; cursor: wait; } .painting-frame-empty { min-height: 280px; cursor: default; } .painting-frame-empty:hover { transform: none; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5), inset 0 0 0 2px #c9a96e; } .painting-frame-cleared { background: transparent; } .debug-image-status { margin: 0; font-size: 10px; color: rgba(201, 169, 110, 0.7); } .debug-image-error { margin: 0 0 8px; font-size: 10px; color: #ff8a80; } @media (max-width: 1024px) { .painting-layout { grid-template-columns: 1fr; } .influence-panel { max-height: none; } .painting-center-nav { gap: 8px; } .painting-nav-btn { width: 36px; height: 36px; font-size: 22px; } }