:root{--color-gold: #a8862f;--color-gold-light: #c9a84c;--bg-primary: #f5f3ee;--bg-surface: #ffffff;--bg-elevated: #f0ede5;--border-subtle: #e6e2d8;--border-default: #d3cec0;--border-strong: #b5ae9c;--text-primary: #1f1d18;--text-secondary: #57544b;--text-muted: #8a8678;--color-success: #2e8b5f;--color-warning: #b97a14;--color-error: #c43d3d;--color-info: #2f6ea8;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 40px;--font-display: "Cormorant Garamond", Georgia, serif;--font-body: "Jost", system-ui, sans-serif;--font-mono: "JetBrains Mono", monospace;--radius-sm: 3px;--radius-md: 6px;--radius-lg: 10px}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font-body);font-weight:400;font-size:17px;background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--font-display);font-weight:500;letter-spacing:.01em}a{color:var(--color-gold);text-decoration:none}a:hover{color:var(--color-gold-light)}button{font-family:var(--font-body);cursor:pointer}input,textarea,select{font-family:var(--font-body)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--bg-primary)}::-webkit-scrollbar-thumb{background:var(--border-default);border-radius:5px}::-webkit-scrollbar-thumb:hover{background:var(--border-strong)}.app-shell{display:flex;flex-direction:column;min-height:100vh}.app-topbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:0 var(--space-lg);height:66px;background:var(--bg-surface);border-bottom:1px solid var(--border-subtle);position:sticky;top:0;z-index:50;box-shadow:0 1px 6px #3c37280f}.app-topbar .brand{font-family:var(--font-display);font-size:26px;color:var(--text-primary);letter-spacing:.05em}.app-topbar .brand em{color:var(--color-gold);font-style:normal}.app-topbar nav{display:flex;gap:var(--space-md);align-items:center}.app-topbar nav a{color:var(--text-secondary);font-size:16px;padding:8px 12px;border-radius:var(--radius-md)}.app-topbar nav a:hover{color:var(--text-primary);background:var(--bg-elevated)}.app-topbar nav a.active{color:var(--color-gold)}.app-main{flex:1;padding:var(--space-xl);max-width:1400px;width:100%;margin:0 auto}.card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-lg);box-shadow:0 1px 4px #3c37280d}.card-title{font-family:var(--font-display);font-size:23px;margin-bottom:var(--space-md)}.form-grid{display:grid;gap:var(--space-md)}.form-row{display:flex;gap:var(--space-md);flex-wrap:wrap}.form-row>*{flex:1;min-width:180px}.table{width:100%;border-collapse:collapse;font-size:16px}.table th{text-align:left;padding:10px var(--space-md);color:var(--text-muted);font-weight:500;font-size:13px;text-transform:uppercase;letter-spacing:.08em;border-bottom:1px solid var(--border-default)}.table td{padding:10px var(--space-md);border-bottom:1px solid var(--border-subtle);color:var(--text-secondary)}.table tr:hover td{background:var(--bg-elevated)}.muted{color:var(--text-muted)}.text-secondary{color:var(--text-secondary)}.gold{color:var(--color-gold)}.flex{display:flex;gap:var(--space-md)}.flex-between{display:flex;justify-content:space-between;align-items:center;gap:var(--space-md)}.flex-center{display:flex;align-items:center;gap:var(--space-sm)}.mt-md{margin-top:var(--space-md)}.mt-lg{margin-top:var(--space-lg)}.mb-md{margin-bottom:var(--space-md)}.mb-lg{margin-bottom:var(--space-lg)}.empty-state{text-align:center;padding:var(--space-xl);color:var(--text-muted)}.page-header{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-md);margin-bottom:var(--space-lg);flex-wrap:wrap}.page-header h1{font-size:36px}.page-header .sub{color:var(--text-muted);font-size:16px;margin-top:4px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 22px;border-radius:var(--radius-md);font-size:16px;font-weight:400;border:1px solid transparent;transition:all .15s ease;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-gold);color:#fff;font-weight:500}.btn-primary:hover:not(:disabled){background:var(--color-gold-light)}.btn-secondary{background:transparent;color:var(--color-gold);border-color:var(--color-gold)}.btn-secondary:hover:not(:disabled){background:#a8862f14}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover:not(:disabled){color:var(--text-primary);background:var(--bg-elevated)}.btn-danger{background:transparent;color:var(--color-error);border-color:var(--color-error)}.btn-danger:hover:not(:disabled){background:#c43d3d14}.btn-sm{padding:7px 14px;font-size:15px}.input-group{display:flex;flex-direction:column;gap:6px}.input-label{font-size:15px;color:var(--text-secondary)}.input-field{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:11px 14px;font-size:16px;color:var(--text-primary);width:100%;outline:none;transition:border-color .15s ease}.input-field:focus{border-color:var(--color-gold)}.input-field::placeholder{color:var(--text-muted)}.input-field.has-error{border-color:var(--color-error)}.input-field:disabled{background:var(--bg-elevated);color:var(--text-muted)}.input-error{font-size:14px;color:var(--color-error)}textarea.input-field{resize:vertical;min-height:90px}select.input-field{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#28241a73;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:200;padding:var(--space-lg)}.modal-box{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:var(--space-lg);width:100%;max-width:560px;max-height:85vh;overflow-y:auto;box-shadow:0 16px 50px #322d1e40}.modal-box.modal-lg{max-width:840px}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-md)}.modal-header h3{font-size:26px}.modal-close{background:none;border:none;color:var(--text-muted);font-size:26px;line-height:1;padding:4px}.modal-close:hover{color:var(--text-primary)}.toast-stack{position:fixed;bottom:var(--space-lg);right:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-sm);z-index:300;max-width:400px}.toast{background:var(--bg-surface);border:1px solid var(--border-default);border-left:3px solid var(--color-info);border-radius:var(--radius-md);padding:14px 18px;font-size:16px;color:var(--text-primary);display:flex;justify-content:space-between;gap:var(--space-md);align-items:center;animation:toast-in .2s ease;box-shadow:0 6px 24px #3c37282e}.toast.success{border-left-color:var(--color-success)}.toast.error{border-left-color:var(--color-error)}@keyframes toast-in{0%{transform:translate(20px);opacity:0}to{transform:translate(0);opacity:1}}.toast button{background:none;border:none;color:var(--text-muted);font-size:18px}.avatar{border-radius:50%;background:var(--bg-elevated);border:1px solid var(--border-default);display:inline-flex;align-items:center;justify-content:center;color:var(--color-gold);font-weight:500;overflow:hidden;flex-shrink:0}.avatar img{width:100%;height:100%;object-fit:cover}.badge{display:inline-flex;align-items:center;padding:3px 12px;border-radius:20px;font-size:14px;letter-spacing:.04em;background:var(--bg-elevated);border:1px solid var(--border-default);color:var(--text-secondary)}.badge.gold{color:var(--color-gold);border-color:var(--color-gold);background:#a8862f14}.badge.success{color:var(--color-success);border-color:var(--color-success);background:#2e8b5f14}.badge.error{color:var(--color-error);border-color:var(--color-error);background:#c43d3d14}.upload-zone{border:2px dashed var(--border-default);border-radius:var(--radius-lg);padding:var(--space-lg);text-align:center;color:var(--text-muted);font-size:16px;cursor:pointer;transition:all .15s ease;position:relative;background:var(--bg-surface)}.upload-zone:hover,.upload-zone.dragging{border-color:var(--color-gold);color:var(--text-secondary);background:#a8862f0a}.upload-zone img.preview{max-width:100%;max-height:220px;border-radius:var(--radius-md);display:block;margin:0 auto var(--space-sm)}.spinner{width:24px;height:24px;border:2px solid var(--border-default);border-top-color:var(--color-gold);border-radius:50%;animation:spin .7s linear infinite;display:inline-block}.spinner.large{width:42px;height:42px;border-width:3px}@keyframes spin{to{transform:rotate(360deg)}}.spinner-center{display:flex;justify-content:center;padding:var(--space-xl)}.copy-btn{position:relative}.copy-btn .copied{color:var(--color-success)}.editor-toolbar{display:flex;gap:2px;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:4px;flex-wrap:wrap;box-shadow:0 1px 4px #3c37280d}.editor-toolbar button{background:transparent;border:none;color:var(--text-secondary);font-size:15px;padding:10px 16px;border-radius:var(--radius-sm);transition:all .15s ease}.editor-toolbar button:hover{color:var(--text-primary);background:var(--bg-elevated)}.editor-toolbar button.active{color:#fff;background:var(--color-gold);font-weight:500}.ip-modal-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:var(--space-sm)}.ip-modal-gallery img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--radius-md);cursor:pointer}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000eb;display:flex;align-items:center;justify-content:center;z-index:400;cursor:zoom-out}.lightbox img{max-width:92vw;max-height:88vh;border-radius:var(--radius-md)}.lightbox .caption{position:absolute;bottom:24px;left:0;right:0;text-align:center;color:#e8e4da;font-size:16px}.confirm-actions{display:flex;justify-content:flex-end;gap:var(--space-sm);margin-top:var(--space-lg)}.pv-hotspot-ring{position:relative;width:44px;height:44px;margin:0 auto}.pv-hotspot-pulse{position:absolute;top:0;right:0;bottom:0;left:0;border:2px solid var(--color-gold, #c9a84c);border-radius:50%;opacity:.4;animation:pv-pulse 2s ease-out infinite}.pv-hotspot-core{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--color-gold, #c9a84c);border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 12px #00000080;transition:transform .15s ease}.pv-hotspot:hover .pv-hotspot-core{transform:scale(1.12)}.pv-hotspot:hover .pv-hotspot-pulse{animation-play-state:paused}.pv-hotspot-label{position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);display:inline-block;background:#0a0a0ebf;color:#fff;font-size:12px;padding:3px 10px;border-radius:12px;white-space:nowrap;opacity:.85;transition:opacity .15s ease}.pv-hotspot:hover .pv-hotspot-label{opacity:1}@keyframes pv-pulse{0%{transform:scale(1);opacity:.4}70%{transform:scale(1.7);opacity:0}to{transform:scale(1.7);opacity:0}}.pv-ip-badge{position:relative;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 10px #00000080;margin:0 auto;transition:transform .15s ease}.pv-infopoint:hover .pv-ip-badge{transform:scale(1.15)}.pv-ip-info .pv-ip-badge{background:var(--color-gold, #c9a84c)}.pv-ip-link .pv-ip-badge{background:var(--color-info, #5090d0)}.pv-ip-image .pv-ip-badge{background:#2a9d8f}.pv-ip-pulse{position:absolute;top:0;right:0;bottom:0;left:0;border:2px solid currentColor;border-radius:50%;opacity:.35;animation:pv-pulse 2.4s ease-out infinite}.pv-ip-info .pv-ip-pulse{color:var(--color-gold, #c9a84c)}.pv-ip-link .pv-ip-pulse{color:var(--color-info, #5090d0)}.pv-ip-image .pv-ip-pulse{color:#2a9d8f}.pv-ip-title{position:absolute;top:calc(100% + 5px);left:50%;transform:translate(-50%);text-align:center;background:#0a0a0ebf;color:#fff;font-size:11px;padding:2px 8px;border-radius:10px;white-space:nowrap;opacity:0;transition:opacity .15s ease}.pv-infopoint:hover .pv-ip-title{opacity:1}.pv-dragging{z-index:50!important}.pv-dragging .pv-hotspot-core,.pv-dragging .pv-ip-badge{transform:scale(1.25);box-shadow:0 0 0 4px #c9a84c73,0 4px 18px #00000080}.pv-dragging .pv-hotspot-pulse,.pv-dragging .pv-ip-pulse{animation:none;opacity:0}.pv-dragging .pv-hotspot-label,.pv-dragging .pv-ip-title{opacity:1}
