:root{--bg: #03030a;--surface-1: #07071a;--surface-2: #0c0c20;--surface-3: #111128;--gold: #c9a84c;--gold-bright: #e8c878;--gold-dim: rgba(201, 168, 76, .12);--gold-glow: rgba(201, 168, 76, .06);--text-1: #f0f0fa;--text-2: #8888aa;--text-3: #44446a;--border: rgba(201, 168, 76, .1);--border-hover: rgba(201, 168, 76, .28);--danger: #e85c4a;--success: #4ae8a0;--ff-serif: "Playfair Display", Georgia, serif;--ff-sans: "Inter", system-ui, sans-serif;--ff-mono: "JetBrains Mono", monospace}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;background:var(--bg);color:var(--text-1);font-family:var(--ff-sans);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:var(--surface-1)}::-webkit-scrollbar-thumb{background:var(--text-3);border-radius:3px}.nav{position:fixed;top:0;left:0;right:0;z-index:100;height:60px;background:#03030ae6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 32px;gap:40px}.nav-logo{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--gold);font-family:var(--ff-serif);font-size:18px;font-weight:600}.nav-logo-img{width:32px;height:32px;object-fit:contain}.nav-links{display:flex;gap:28px;flex:1}.nav-links a{color:var(--text-2);text-decoration:none;font-size:12px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;transition:color .2s}.nav-links a:hover,.nav-links a.active{color:var(--text-1)}.btn{display:inline-flex;align-items:center;gap:6px;padding:0 18px;height:36px;border:none;border-radius:2px;font-family:var(--ff-sans);font-size:12px;font-weight:500;letter-spacing:.05em;cursor:pointer;transition:all .2s;text-decoration:none;white-space:nowrap}.btn-primary{background:var(--gold);color:#080600}.btn-primary:hover{background:var(--gold-bright);box-shadow:0 4px 16px #c9a84c40}.btn-ghost{background:transparent;color:var(--text-2);border:1px solid var(--border)}.btn-ghost:hover{color:var(--text-1);border-color:var(--border-hover);background:var(--gold-dim)}.btn-danger{background:transparent;color:var(--danger);border:1px solid rgba(232,92,74,.25)}.btn-danger:hover{background:#e85c4a14}.gallery-page{padding-top:60px;min-height:100vh}.gallery-hero{padding:72px 32px 40px;max-width:1400px;margin:0 auto}.gallery-hero h1{font-family:var(--ff-serif);font-size:44px;font-weight:400;letter-spacing:-.01em;margin-bottom:10px}.gallery-hero h1 em{color:var(--gold);font-style:italic}.gallery-hero p{color:var(--text-2);font-size:15px;max-width:440px;line-height:1.7}.gallery-divider{height:1px;background:linear-gradient(90deg,transparent,var(--border) 30%,var(--border) 70%,transparent);margin:0 32px}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(400px,1fr));gap:36px;padding:40px 32px;max-width:1400px;margin:0 auto}.exhibit-card{display:flex;flex-direction:column;cursor:pointer}.exhibit-card:hover .exhibit-frame{border-color:var(--border-hover)}.exhibit-card:hover{transform:translateY(-3px);transition:transform .3s}.exhibit-frame{position:relative;background:var(--surface-1);border:1px solid var(--border);border-bottom:none;aspect-ratio:4/3;overflow:hidden;transition:border-color .3s}.exhibit-frame:before{content:"";position:absolute;top:0;left:0;right:0;height:100px;background:linear-gradient(180deg,rgba(201,168,76,.03) 0%,transparent 100%);z-index:1;pointer-events:none}.exhibit-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#03030aa6;opacity:0;transition:opacity .2s;z-index:10}.exhibit-card:hover .exhibit-overlay{opacity:1}.exhibit-overlay-btn{background:var(--gold);color:#080600;padding:10px 24px;font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;border:none;cursor:pointer}.exhibit-nameplate{background:var(--surface-2);border:1px solid var(--border);border-top:2px solid var(--gold);padding:14px 18px;transition:border-color .3s}.exhibit-card:hover .exhibit-nameplate{border-color:var(--border-hover);border-top-color:var(--gold-bright)}.exhibit-number{font-size:9px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);margin-bottom:4px}.exhibit-title{font-family:var(--ff-serif);font-size:17px;font-weight:400;color:var(--text-1);margin-bottom:2px}.exhibit-desc{font-size:12px;color:var(--text-2);margin-top:2px}.exhibit-meta{display:flex;align-items:center;gap:12px;font-size:10px;color:var(--text-3);margin-top:8px}.exhibit-meta .medium{color:var(--text-2);font-style:italic}.exhibit-actions{display:flex;gap:6px;margin-top:10px}.exhibit-actions button{background:transparent;border:1px solid var(--border);color:var(--text-3);padding:3px 10px;font-size:10px;font-family:var(--ff-sans);cursor:pointer;border-radius:2px;letter-spacing:.04em;transition:all .2s}.exhibit-actions button:hover{color:var(--text-1);border-color:var(--border-hover)}.exhibit-actions button.del:hover{color:var(--danger);border-color:#e85c4a4d}.gallery-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:100px 32px;text-align:center}.gallery-empty-frame{width:180px;height:140px;border:1px solid var(--border);display:flex;align-items:center;justify-content:center;margin-bottom:28px;position:relative}.gallery-empty-frame:before{content:"";position:absolute;top:10px;right:10px;bottom:10px;left:10px;border:1px dashed var(--border)}.gallery-empty h2{font-family:var(--ff-serif);font-size:22px;font-weight:400;color:var(--text-2);margin-bottom:10px}.gallery-empty p{font-size:13px;color:var(--text-3);max-width:320px;margin-bottom:28px}.studio-page{padding-top:60px;height:100vh;display:flex;flex-direction:column}.studio-layout{flex:1;display:flex;flex-direction:column;overflow:hidden}.studio-toolbar{flex-shrink:0;background:var(--surface-2);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 16px;gap:10px;height:44px}.studio-body{flex:1;display:flex;overflow:hidden}.studio-resize-handle{width:5px;flex-shrink:0;background:var(--border);cursor:col-resize;transition:background .15s;-webkit-user-select:none;user-select:none}.studio-resize-handle:hover,.studio-resize-handle:active{background:var(--gold)}.studio-toolbar-divider{width:1px;height:18px;background:var(--border);margin:0 4px}.studio-title-input{flex:1;background:transparent;border:none;color:var(--text-1);font-family:var(--ff-serif);font-size:15px;font-style:italic;outline:none;padding:0 6px}.studio-title-input::placeholder{color:var(--text-3)}.editor-panel{display:flex;flex-direction:column;overflow:hidden}.editor-header{padding:0 16px;height:36px;background:var(--surface-2);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:12px;font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text-3)}.editor-wrap{flex:1;overflow:hidden}.preview-panel{display:flex;flex-direction:column;background:var(--surface-1);overflow:hidden}.preview-side-panels{overflow-y:auto;flex-shrink:0;max-height:45%}.preview-header{padding:0 16px;height:36px;background:var(--surface-2);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text-3)}.preview-meta{padding:12px 16px;border-top:1px solid var(--border);background:var(--surface-2)}.preview-meta label{display:block;font-size:10px;color:var(--text-3);text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px}.preview-meta input,.preview-meta textarea{width:100%;background:var(--surface-1);border:1px solid var(--border);color:var(--text-1);font-family:var(--ff-sans);font-size:13px;padding:7px 10px;outline:none;border-radius:2px;margin-bottom:8px;transition:border-color .2s}.preview-meta input:focus,.preview-meta textarea:focus{border-color:var(--border-hover)}.preview-meta textarea{resize:none;height:56px;line-height:1.5}.preview-container{flex:1;overflow:hidden;position:relative}.preview-container iframe{width:100%;height:100%;border:none}.data-panel{border-top:1px solid var(--border);background:var(--surface-2);display:flex;flex-direction:column;flex-shrink:0}.dp-header{padding:8px 14px;display:flex;align-items:center;justify-content:space-between;font-size:10px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-3);border-bottom:1px solid var(--border)}.dp-loaded-badge{color:var(--success);font-size:10px}.dp-loaded{display:flex;align-items:center;gap:8px;padding:8px 14px;font-size:12px}.dp-loaded-name{color:var(--gold);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dp-clear{background:none;border:none;color:var(--text-3);cursor:pointer;font-size:13px}.dp-clear:hover{color:var(--danger)}.dp-tabs{display:flex;border-bottom:1px solid var(--border)}.dp-tab{flex:1;padding:7px 4px;background:none;border:none;font-family:var(--ff-sans);font-size:11px;font-weight:500;color:var(--text-3);cursor:pointer;letter-spacing:.03em;border-bottom:2px solid transparent;transition:all .2s}.dp-tab.active{color:var(--gold);border-bottom-color:var(--gold)}.dp-tab:hover:not(.active){color:var(--text-2)}.dp-body{padding:12px;overflow-y:auto;max-height:260px}.dp-drop{border:1px dashed var(--border);padding:20px 12px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:12px;color:var(--text-3);border-radius:2px;transition:all .2s}.dp-drop:hover,.dp-drop.dragging{border-color:var(--border-hover);background:var(--gold-dim);color:var(--text-2)}.dp-hint{font-size:10px;letter-spacing:.04em}.dp-form{display:flex;flex-direction:column;gap:5px}.dp-form label{font-size:10px;color:var(--text-3);text-transform:uppercase;letter-spacing:.05em;margin-top:2px}.dp-input{width:100%;background:var(--surface-1);border:1px solid var(--border);color:var(--text-1);font-family:var(--ff-sans);font-size:12px;padding:6px 9px;border-radius:2px;outline:none;resize:none;transition:border-color .2s}.dp-input:focus{border-color:var(--border-hover)}.dp-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}.dp-error{color:var(--danger);font-size:11px;margin-top:6px;word-break:break-word}.file-drop{border:1px dashed var(--border);padding:12px;margin-bottom:8px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:12px;color:var(--text-3);transition:all .2s;border-radius:2px}.file-drop:hover,.file-drop.dragging{border-color:var(--border-hover);background:var(--gold-dim);color:var(--text-2)}.file-drop-icon{font-size:18px;color:var(--text-3)}.file-drop-hint{font-size:10px;letter-spacing:.04em}.file-loaded{display:flex;align-items:center;gap:8px;background:var(--surface-1);border:1px solid var(--border);padding:7px 10px;border-radius:2px;margin-bottom:8px;font-size:12px}.file-loaded-name{color:var(--gold);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-loaded-count{color:var(--text-3);font-size:10px;white-space:nowrap}.file-clear-btn{background:transparent;border:none;color:var(--text-3);cursor:pointer;font-size:12px;padding:0 4px;transition:color .2s}.file-clear-btn:hover{color:var(--danger)}.status-dot{width:6px;height:6px;border-radius:50%;background:var(--text-3)}.status-dot.ready{background:var(--success);box-shadow:0 0 5px #4ae8a080}.status-dot.running{background:var(--gold);animation:blink 1s infinite}.status-dot.error{background:var(--danger)}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:#03030ae0;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center}.modal{background:var(--surface-2);border:1px solid var(--border);width:92vw;height:88vh;display:flex;flex-direction:column}.modal-header{padding:18px 24px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.modal-header h2{font-family:var(--ff-serif);font-size:20px;font-weight:400}.modal-close{background:transparent;border:1px solid var(--border);color:var(--text-2);width:30px;height:30px;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:all .2s}.modal-close:hover{border-color:var(--border-hover);color:var(--text-1)}.modal-body{flex:1;overflow:hidden}.gallery-footer{text-align:center;padding:32px 0 24px;font-size:11px;color:var(--text-3);border-top:1px solid var(--border);margin-top:48px;letter-spacing:.06em}.tp-modal{background:var(--surface-2);border:1px solid var(--border);width:min(900px,94vw);max-height:88vh;display:flex;flex-direction:column;overflow:hidden}.tp-header{padding:24px 28px 20px;border-bottom:1px solid var(--border);display:flex;align-items:flex-start;justify-content:space-between}.tp-header h2{font-family:var(--ff-serif);font-size:22px;font-weight:400;margin-bottom:4px}.tp-header p{font-size:12px;color:var(--text-2)}.tp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;padding:20px 28px 28px;overflow-y:auto}.tp-card{background:var(--surface-1);border:1px solid var(--border);padding:0;cursor:pointer;text-align:left;transition:border-color .2s,transform .15s;display:flex;flex-direction:column}.tp-card:hover{border-color:var(--border-hover);transform:translateY(-2px)}.tp-preview{height:90px;display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--border)}.tp-icon{font-size:32px;opacity:.7}.tp-info{padding:12px 14px}.tp-name{font-size:13px;font-weight:600;margin-bottom:4px}.tp-desc{font-size:11px;color:var(--text-2);line-height:1.5;margin-bottom:8px}.tp-tags{display:flex;flex-wrap:wrap;gap:4px}.tp-tag{font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);background:var(--surface-3);padding:2px 6px;border:1px solid var(--border)}.generate-panel{border:1px solid var(--border);background:var(--surface-1);margin-top:12px}.gp-header{padding:8px 12px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;font-size:9px;letter-spacing:.12em;color:var(--text-2);text-transform:uppercase}.gp-badge{font-size:9px;letter-spacing:.06em;color:var(--gold);background:var(--gold-dim);padding:1px 6px}.gp-body{padding:10px 12px;display:flex;flex-direction:column;gap:8px}.gp-btn{width:100%}.modal-body iframe{width:100%;height:100%;border:none}.docs-page{display:flex;flex-direction:column;min-height:100vh}.docs-layout{display:flex;flex:1;max-width:1100px;margin:0 auto;width:100%;padding:48px 24px;gap:48px}.docs-sidebar{width:180px;flex-shrink:0}.docs-nav{position:sticky;top:32px;display:flex;flex-direction:column;gap:4px}.docs-nav a{color:var(--text-2);text-decoration:none;font-size:12px;padding:6px 10px;border-left:2px solid transparent;transition:all .2s;letter-spacing:.04em}.docs-nav a:hover{color:var(--text-1);border-left-color:var(--border-hover)}.docs-content{flex:1;min-width:0}.docs-content section{margin-bottom:56px}.docs-content h1{font-family:var(--ff-serif);font-size:32px;font-weight:400;margin-bottom:16px}.docs-content h2{font-family:var(--ff-serif);font-size:22px;font-weight:400;margin-bottom:14px;padding-top:8px;border-top:1px solid var(--border)}.docs-content p{font-size:14px;color:var(--text-2);line-height:1.8;margin-bottom:12px}.docs-content ul{padding-left:20px;color:var(--text-2);font-size:14px;line-height:2}.docs-content strong{color:var(--text-1)}.docs-content em{color:var(--gold);font-style:normal}.docs-callout{background:var(--gold-dim);border-left:3px solid var(--gold);padding:12px 16px;font-size:13px;color:var(--text-1);margin:16px 0;line-height:1.6}.docs-code{background:var(--surface-2);border:1px solid var(--border);padding:20px 24px;margin:16px 0}.docs-code pre{font-family:var(--ff-mono);font-size:12px;color:var(--text-2);line-height:1.8;white-space:pre}.docs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin-top:16px}.docs-card{background:var(--surface-2);border:1px solid var(--border);padding:14px 16px}.docs-card-name{font-size:13px;font-weight:600;color:var(--gold);margin-bottom:4px}.docs-card-desc{font-size:11px;color:var(--text-2);line-height:1.6}.docs-table{width:100%;border-collapse:collapse;font-size:13px;margin-top:16px}.docs-table th{text-align:left;padding:10px 14px;background:var(--surface-2);color:var(--text-2);font-weight:500;font-size:11px;letter-spacing:.06em;text-transform:uppercase;border-bottom:1px solid var(--border)}.docs-table td{padding:10px 14px;color:var(--text-2);border-bottom:1px solid var(--border)}.docs-table code{font-family:var(--ff-mono);font-size:11px;color:var(--gold)}
