.guide-orb[data-v-61dcf429]{position:fixed;bottom:2rem;right:2rem;width:56px;height:56px;border-radius:50%;background:var(--gallery-guide-purple);border:none;cursor:pointer;z-index:1000;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 16px #9b8aff4d;transition:transform .3s cubic-bezier(.16,1,.3,1),box-shadow .3s ease}.guide-orb[data-v-61dcf429]:hover{transform:scale(1.05);box-shadow:0 6px 24px #9b8aff66}.guide-orb.has-items[data-v-61dcf429]{background:var(--gallery-guide-purple);animation:pulse-61dcf429 2s ease infinite}.orb-inner[data-v-61dcf429]{color:#fff;font-weight:700;font-size:18px;font-family:var(--font-mono)}.orb-badge[data-v-61dcf429]{position:absolute;top:-4px;right:-4px;background:var(--gallery-truth-red);color:#fff;font-size:12px;font-weight:700;min-width:20px;height:20px;border-radius:10px;display:flex;align-items:center;justify-content:center;padding:0 4px}.guide-orb-panel[data-v-61dcf429]{position:fixed;bottom:6rem;right:2rem;width:320px;max-height:60vh;background:#fff;border-radius:var(--gallery-radius);box-shadow:var(--gallery-shadow-lg);z-index:999;overflow:hidden}.panel-header[data-v-61dcf429]{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid var(--gallery-border)}.panel-header h3[data-v-61dcf429]{font-size:16px;font-weight:700;margin:0}.panel-close[data-v-61dcf429]{background:none;border:none;font-size:18px;cursor:pointer;color:var(--gallery-text-secondary);padding:.25rem}.panel-body[data-v-61dcf429]{padding:1rem 1.25rem}.panel-empty[data-v-61dcf429]{text-align:center;padding:2rem 0}.panel-empty p[data-v-61dcf429]{margin:.5rem 0;color:var(--gallery-text-secondary)}.panel-hint[data-v-61dcf429]{font-size:13px;color:var(--gallery-text-muted)}.panel-items[data-v-61dcf429]{display:flex;flex-direction:column;gap:.75rem}.panel-item[data-v-61dcf429]{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;border-bottom:1px solid var(--gallery-border)}.item-name[data-v-61dcf429]{font-size:14px;font-weight:600}.item-weight[data-v-61dcf429]{font-family:var(--font-mono);font-size:13px;color:var(--gallery-guide-purple);font-weight:600}.drawer-enter-active[data-v-61dcf429]{transition:all .3s cubic-bezier(.16,1,.3,1)}.drawer-leave-active[data-v-61dcf429]{transition:all .2s ease-in}.drawer-enter-from[data-v-61dcf429],.drawer-leave-to[data-v-61dcf429]{opacity:0;transform:translateY(20px)}@keyframes pulse-61dcf429{0%,to{box-shadow:0 4px 16px #9b8aff4d}50%{box-shadow:0 4px 24px #9b8aff80}}@media (max-width: 768px){.guide-orb[data-v-61dcf429]{bottom:1rem;right:1rem;width:48px;height:48px}.guide-orb-panel[data-v-61dcf429]{bottom:0;right:0;left:0;width:100%;max-height:70vh;border-radius:var(--gallery-radius) var(--gallery-radius) 0 0}}#gallery-app{background:var(--gallery-bg);min-height:100vh}.page-enter-active{transition:opacity .2s ease,transform .2s ease}.page-leave-active{transition:opacity .15s ease}.page-enter-from{opacity:0;transform:translateY(8px)}.page-leave-to{opacity:0}:root{--bg-void: #111113;--bg-primary: #18181b;--bg-secondary: #1c1c1f;--bg-surface: #232326;--bg-surface-hover: #2a2a2e;--bg-elevated: #2f2f33;--bg-glass: rgba(28, 28, 31, .82);--border-color: rgba(255, 255, 255, .07);--border-subtle: rgba(255, 255, 255, .04);--border-strong: rgba(255, 255, 255, .13);--border-glow: rgba(255, 255, 255, .2);--text-primary: #ececec;--text-secondary: #8c8c99;--text-muted: #52525e;--text-code: #a78bfa;--accent: #9b8aff;--accent-hover: #b3a6ff;--accent-dim: rgba(155, 138, 255, .12);--accent-bg: rgba(155, 138, 255, .08);--accent-border: rgba(155, 138, 255, .22);--blue: #60a5fa;--blue-dim: rgba(96, 165, 250, .1);--green: #4ade80;--green-dim: rgba(74, 222, 128, .1);--red: #f87171;--red-dim: rgba(248, 113, 113, .1);--amber: #f59e0b;--amber-dim: rgba(245, 158, 11, .1);--glow-sm: 0 1px 3px rgba(0, 0, 0, .4);--glow-md: 0 2px 8px rgba(0, 0, 0, .5);--glow-text: none;--font-display: "Inter", "SF Pro Display", -apple-system, sans-serif;--font-sans: "Inter", "Noto Sans SC", -apple-system, sans-serif;--font-mono: "JetBrains Mono", "SF Mono", "IBM Plex Mono", monospace;--radius: 8px;--radius-sm: 6px;--radius-lg: 12px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .45), 0 0 0 1px rgba(255, 255, 255, .04);--shadow-md: 0 4px 16px rgba(0, 0, 0, .55), 0 1px 3px rgba(0, 0, 0, .4), 0 0 0 1px rgba(255, 255, 255, .06);--shadow-lg: 0 12px 40px rgba(0, 0, 0, .7), 0 4px 12px rgba(0, 0, 0, .5), 0 0 0 1px rgba(255, 255, 255, .07);--transition: .15s ease}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;overflow-y:auto}body{font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);line-height:1.5;-webkit-font-smoothing:antialiased;position:relative}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='1'/%3E%3C/svg%3E");background-size:128px 128px;opacity:.028;pointer-events:none;z-index:0}#app{position:relative;z-index:1}.app{display:flex;flex-direction:column;height:100vh;max-height:100vh}.main-content{flex:1;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column}.portfolio-layout{display:flex;flex-direction:row;flex:1;overflow:hidden;height:100%}.header{display:flex;align-items:center;justify-content:space-between;padding:0 20px;height:52px;background:#18181bbf;backdrop-filter:blur(24px) saturate(160%);-webkit-backdrop-filter:blur(24px) saturate(160%);border-bottom:1px solid var(--border-color);box-shadow:0 1px #ffffff0a,0 4px 20px #00000059;flex-shrink:0;position:relative;z-index:10}.header-brand{display:flex;align-items:center;gap:10px}.header-logo{font-size:18px;color:var(--accent)}@keyframes logoPulse{0%,to{opacity:1}50%{opacity:.7}}.header h1{font-size:15px;font-weight:700;letter-spacing:.5px;color:var(--text-primary);font-family:var(--font-display)}.header-sub{font-size:12px;color:var(--text-muted);letter-spacing:.2px}.main{display:flex;flex:1;overflow:hidden}.sidebar{width:260px;min-width:260px;display:flex;flex-direction:column;gap:10px;padding:14px;border-right:1px solid var(--border-color);background:var(--bg-secondary);overflow-y:auto}.panel{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius);overflow:hidden;transition:border-color .15s ease}.panel:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.panel-header{display:flex;align-items:center;gap:8px;padding:9px 13px;font-size:11px;font-weight:600;letter-spacing:.6px;color:var(--text-muted);border-bottom:1px solid var(--border-subtle);text-transform:uppercase;background:var(--bg-elevated);border-left:2px solid var(--accent)}.panel-indicator{width:5px;height:5px;border-radius:50%;background:var(--accent);opacity:.7}.panel-body{padding:13px;display:flex;flex-direction:column;gap:10px}.form-group{display:flex;flex-direction:column;gap:5px}.form-group label{font-size:11px;font-weight:500;color:var(--text-muted);letter-spacing:.2px}.form-group input,.form-group select{padding:7px 10px;font-size:13px;font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:var(--radius-sm);outline:none;transition:border-color var(--transition),box-shadow var(--transition)}.form-group input:focus,.form-group select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim);outline:none}.form-group input:disabled,.form-group select:disabled{opacity:.35;cursor:not-allowed}.btn{display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;font-size:13px;font-weight:600;font-family:var(--font-sans);border:none;border-radius:var(--radius-sm);cursor:pointer;transition:background-color .18s ease,box-shadow .18s ease,color .18s ease,border-color .18s ease;margin-top:2px}.btn-primary{background:var(--accent);color:#fff;border:1px solid transparent;box-shadow:var(--shadow-sm);position:relative;overflow:hidden}.btn-primary:hover:not(:disabled){background:var(--accent-hover);box-shadow:var(--shadow-md)}.btn:disabled{opacity:.35;cursor:not-allowed}.btn-icon{font-size:15px;font-weight:700}.btn-save{background:#4ade8026;color:var(--green);border:1px solid rgba(74,222,128,.25);box-shadow:var(--shadow-sm);width:100%}.btn-save:hover:not(:disabled){background:#4ade8038;border-color:#4ade8066;box-shadow:var(--shadow-md)}.btn-save:disabled{opacity:.4}.save-status{font-size:11px;font-family:var(--font-mono);text-align:center;min-height:16px;line-height:16px;transition:opacity .3s ease}.save-status.save-ok{color:var(--green)}.save-status.save-err{color:var(--red)}.panel-summary .panel-body{gap:6px}.summary-item{display:flex;justify-content:space-between;align-items:center;padding:5px 0;border-bottom:1px solid var(--border-subtle)}.summary-item:last-child{border-bottom:none}.summary-label{font-size:12px;color:var(--text-muted)}.summary-value{font-size:13px;font-weight:600;font-family:var(--font-mono);color:var(--text-primary)}.display{flex:1;display:flex;flex-direction:column;padding:16px 20px;overflow:hidden}.display-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;flex-shrink:0}.display-header h2{font-size:14px;font-weight:600;color:var(--text-secondary);letter-spacing:.2px}.dimension-tabs{display:flex;gap:2px;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-sm);padding:3px}.tab{position:relative;padding:5px 13px;font-size:12px;font-weight:500;font-family:var(--font-sans);color:var(--text-muted);background:transparent;border:none;border-radius:4px;cursor:pointer;transition:color .18s ease,background-color .18s ease;letter-spacing:.2px;display:flex;align-items:center;gap:5px}.tab:hover{color:var(--text-secondary);background:var(--bg-elevated)}.tab.active{color:var(--text-primary);background:var(--bg-elevated);box-shadow:var(--shadow-sm)}.tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:17px;height:17px;padding:0 4px;font-size:10px;font-weight:700;font-family:var(--font-mono);border-radius:8px;background:#ffffff14;color:var(--text-muted);transition:background-color .18s ease,color .18s ease}.tab.active .tab-badge{background:var(--accent-dim);color:var(--accent)}.treemap-wrapper{flex:1;position:relative;overflow:hidden;border:1px solid var(--border-color);border-radius:var(--radius);background:var(--bg-secondary)}.treemap-container{position:absolute;top:0;left:0;right:0;bottom:0;transition:opacity .2s ease}.treemap-container.fading-out{opacity:0}.treemap-container.fading-in{opacity:0;animation:fadeIn .3s ease forwards}@keyframes fadeIn{to{opacity:1}}.treemap-block{position:absolute;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;overflow:hidden;cursor:pointer;border:1px solid rgba(255,255,255,.07);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);transition:border-color var(--transition),box-shadow var(--transition);opacity:0;transform:scale(.94);animation:blockIn .35s ease forwards}.treemap-block:hover{border-color:#ffffff2e;box-shadow:var(--shadow-md),inset 0 0 0 1px #ffffff1a;z-index:10}.treemap-block .block-name,.treemap-block .block-pct,.treemap-block .block-amount{pointer-events:none}@keyframes blockIn{to{opacity:1;transform:scale(1)}}.treemap-tooltip{position:fixed;padding:10px 14px;background:#232326eb;backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);border:1px solid var(--border-strong);border-radius:var(--radius);pointer-events:none;z-index:1000;opacity:0;transition:opacity .12s ease;box-shadow:var(--shadow-lg)}.treemap-tooltip.visible{opacity:1}.treemap-tooltip .tip-name{font-size:13px;font-weight:600;color:var(--text-primary);margin-bottom:6px}.treemap-tooltip .tip-row{display:flex;justify-content:space-between;gap:20px;font-size:12px;color:var(--text-secondary);line-height:1.6}.treemap-tooltip .tip-val{font-family:var(--font-mono);color:var(--text-primary);font-weight:600}.detail-bar{display:flex;flex-wrap:wrap;gap:4px 8px;padding:10px 2px 0;flex-shrink:0}.detail-chip{display:flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--radius-sm);background:var(--bg-surface);border:1px solid var(--border-color);font-size:12px;color:var(--text-secondary);cursor:default;transition:border-color .18s ease,background-color .18s ease;opacity:0;animation:chipIn .25s ease forwards}.detail-chip:hover{border-color:var(--border-strong);background:var(--bg-elevated)}.detail-dot{width:7px;height:7px;border-radius:2px;flex-shrink:0}.detail-name{font-weight:600;color:var(--text-primary)}.detail-pct{font-family:var(--font-mono);font-weight:700;color:var(--text-primary);font-size:11px}.detail-amt{font-family:var(--font-mono);color:var(--text-muted);font-size:11px}@keyframes chipIn{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}.treemap-tooltip .tip-items{margin-top:7px;padding-top:7px;border-top:1px solid var(--border-color)}.treemap-tooltip .tip-items-title{font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px;margin-bottom:4px}.treemap-tooltip .tip-item{display:flex;justify-content:space-between;gap:14px;font-size:11px;color:var(--text-secondary);line-height:1.7}.treemap-tooltip .tip-item-val{font-family:var(--font-mono);color:var(--text-muted);font-size:10px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;-webkit-backdrop-filter:blur(8px) saturate(120%);backdrop-filter:blur(8px) saturate(120%);display:flex;align-items:center;justify-content:center;z-index:100;opacity:0;pointer-events:none;transition:opacity .18s ease}.modal-overlay.visible{opacity:1;pointer-events:auto}.modal{width:500px;max-height:80vh;background:#232326eb;backdrop-filter:blur(28px) saturate(180%);-webkit-backdrop-filter:blur(28px) saturate(180%);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;transform:scale(.97) translateY(6px);transition:transform .2s cubic-bezier(.34,1.56,.64,1)}.modal-overlay.visible .modal{transform:scale(1) translateY(0)}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border-color);flex-shrink:0}.modal-title{font-size:14px;font-weight:600;color:var(--text-primary)}.modal-close{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:none;border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-muted);font-size:16px;cursor:pointer;transition:color .18s ease,border-color .18s ease,background-color .18s ease;line-height:1}.modal-close:hover{color:var(--text-primary);border-color:var(--border-strong);background:var(--bg-elevated)}.modal-body{overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:8px}.modal-empty{text-align:center;color:var(--text-muted);padding:24px;font-size:13px}.modal-asset{background:var(--bg-elevated);border:1px solid var(--border-color);border-radius:var(--radius);padding:12px 14px;transition:border-color var(--transition)}.modal-asset:hover{border-color:var(--border-strong)}.modal-asset-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.modal-asset-info{flex:1;min-width:0}.modal-asset-name{font-size:14px;font-weight:600;color:var(--text-primary);line-height:1.3}.modal-asset-meta{display:flex;align-items:center;gap:10px;margin-top:3px;font-size:12px}.modal-asset-code{font-family:var(--font-mono);color:var(--text-muted);font-size:11px}.modal-asset-amount{font-family:var(--font-mono);color:var(--text-primary);font-weight:600;font-size:12px}.modal-asset-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:7px}.modal-tag{padding:2px 7px;font-size:10px;font-weight:500;border-radius:4px;background:var(--bg-surface);color:var(--text-secondary);border:1px solid var(--border-color);letter-spacing:.1px}.modal-asset-actions{display:flex;gap:6px;flex-shrink:0;padding-top:2px}.btn-edit,.btn-delete{padding:4px 11px;font-size:11px;font-weight:600;font-family:var(--font-sans);border-radius:var(--radius-sm);cursor:pointer;transition:background-color .18s ease,border-color .18s ease;border:1px solid;background:none}.btn-edit{color:var(--accent);border-color:var(--accent-border);background:var(--accent-bg);transition:background-color .18s ease,border-color .18s ease}.btn-edit:hover{background:var(--accent-dim);border-color:var(--border-strong)}.btn-delete{color:var(--red);border-color:#ef444440;background:var(--red-dim)}.btn-delete:hover{background:#ef44442e;border-color:#ef444473}.btn-delete.confirming{background:#ef444447;border-color:#ef44448c;animation:pulse-red 1s ease infinite}@keyframes pulse-red{0%,to{box-shadow:0 0 #f8717100}50%{box-shadow:0 0 0 3px #f871712e}}.modal-edit-form{margin-top:10px;padding-top:10px;border-top:1px solid var(--border-color)}.edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.edit-grid .form-group label{font-size:10px}.edit-grid .form-group input,.edit-grid .form-group select{width:100%;padding:6px 8px;font-size:12px}.edit-actions{display:flex;gap:8px;margin-top:10px;justify-content:flex-end}.btn-save-action{background:#4ade8026!important;color:var(--green)!important;border:1px solid rgba(74,222,128,.3)!important;margin-top:0!important;padding:5px 16px;box-shadow:var(--shadow-sm)}.btn-save-action:hover{background:#4ade8038!important;border-color:#4ade8073!important;box-shadow:var(--shadow-md)!important}.btn-cancel-action{background:transparent!important;color:var(--text-muted)!important;border:1px solid var(--border-color)!important;margin-top:0!important;padding:5px 16px}.btn-cancel-action:hover{color:var(--text-secondary)!important;border-color:var(--border-strong)!important;background:var(--bg-elevated)!important}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#ffffff38}tbody tr{position:relative;transition:background-color .12s ease}tbody tr:hover{background:var(--bg-surface-hover)}.page-enter-active{animation:pageIn .22s ease both}.page-leave-active{animation:pageOut .14s ease both}@keyframes pageIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes pageOut{0%{opacity:1;transform:translateY(0)}to{opacity:0}}@keyframes cardIn{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media (max-height: 800px){.header{height:44px;padding:0 20px}.header-logo{font-size:16px}.header h1{font-size:14px}.sidebar{padding:10px;gap:8px}.panel-header{padding:7px 12px;font-size:10px}.panel-body{padding:10px;gap:7px}.form-group{gap:3px}.form-group label{font-size:10px}.form-group input,.form-group select{padding:5px 8px;font-size:12px}.btn{padding:6px 12px;font-size:12px;margin-top:1px}.summary-item{padding:3px 0}.summary-label{font-size:11px}.summary-value{font-size:12px}.display{padding:10px 16px}.display-header{margin-bottom:8px}.display-header h2{font-size:13px}.detail-bar{padding:6px 2px 0;max-height:64px;overflow-y:auto}.detail-chip{padding:3px 8px;font-size:11px}}@media (max-width: 1440px){.sidebar{width:230px;min-width:230px}.detail-chip{padding:3px 7px;gap:5px}.detail-pct,.detail-amt{font-size:10px}.detail-name{font-size:11px}.tab{padding:4px 10px;font-size:11px}.tab-badge{min-width:15px;height:15px;font-size:9px}}@media (max-width: 1440px) and (max-height: 800px){.sidebar{width:220px;min-width:220px;padding:8px;gap:6px}.panel-body{padding:8px;gap:6px}.form-group input,.form-group select{padding:4px 7px}.detail-bar{max-height:56px}}.modal{max-width:calc(100vw - 40px)}@media (max-height: 800px){.modal{max-height:75vh}.modal-header{padding:10px 14px}.modal-title{font-size:13px}.modal-body{padding:10px;gap:6px}.modal-asset{padding:10px 12px}.modal-asset-name{font-size:13px}.edit-grid{gap:6px}.edit-grid .form-group input,.edit-grid .form-group select{padding:4px 7px;font-size:11px}}@media (max-width: 1440px){.modal{width:460px}}.view-nav{display:flex;gap:2px;background:#00000040;border:1px solid var(--border-color);border-radius:var(--radius-sm);padding:3px}.view-tab{position:relative;padding:5px 16px;font-size:12px;font-weight:500;font-family:var(--font-sans);color:var(--text-muted);background:transparent;border:none;border-radius:3px;cursor:pointer;transition:color .18s ease,background-color .18s ease;letter-spacing:.1px;text-decoration:none;display:inline-block}.view-tab:hover{color:var(--text-secondary);background:var(--bg-surface)}.view-tab.active{color:var(--text-primary);background:var(--bg-elevated);font-weight:600}.view-tab.active:after{content:"";position:absolute;bottom:0;left:4px;right:4px;height:2px;background:var(--accent);border-radius:1px;transform-origin:center;animation:tabLineIn .18s ease forwards}@keyframes tabLineIn{0%{transform:scaleX(.15);opacity:0}to{transform:scaleX(1);opacity:1}}.view-panel{display:none;flex:1;overflow:hidden}.view-panel.active{display:flex}#view-templates{overflow-y:auto;flex-direction:column}.templates-layout{display:flex;flex-direction:column;padding:20px 24px;gap:16px;min-height:100%}.templates-header-row{flex-shrink:0}.section-title{font-size:16px;font-weight:700;color:var(--text-primary);margin-bottom:4px}.section-desc{font-size:13px;color:var(--text-secondary);margin-bottom:8px}.metrics-disclaimer{font-size:11px;color:var(--text-muted);font-family:var(--font-mono);padding:5px 10px;background:var(--bg-elevated);border:1px solid var(--border-color);border-radius:var(--radius-sm);display:inline-block}.templates-loading{color:var(--text-muted);font-size:13px;padding:24px;text-align:center}.templates-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:14px;align-content:start}.template-card{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-lg);display:flex;flex-direction:column;gap:0;transition:border-color var(--transition),box-shadow var(--transition),transform var(--transition);overflow:hidden;cursor:pointer}.template-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md);transform:translateY(-1px)}.tcard-header{padding:14px 16px 12px;border-bottom:1px solid var(--border-subtle)}.tcard-title-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}.tcard-name{font-size:15px;font-weight:700;color:var(--text-primary)}.risk-badge{font-size:10px;font-weight:600;padding:2px 8px;border-radius:4px;border:1px solid;letter-spacing:.2px;flex-shrink:0}.tcard-tagline{font-size:12px;color:var(--text-secondary);margin-bottom:3px;font-weight:500}.tcard-audience{font-size:11px;color:var(--text-muted);line-height:1.4}.tcard-alloc{padding:10px 16px;border-bottom:1px solid var(--border-subtle)}.alloc-bar{display:flex;height:6px;border-radius:4px;overflow:hidden;gap:1px;margin-bottom:8px}.alloc-bar-seg{height:100%;border-radius:2px;min-width:3px;transition:filter var(--transition)}.alloc-bar-seg:hover{filter:brightness(1.25)}.alloc-chips{display:flex;flex-wrap:wrap;gap:4px}.alloc-chip{display:inline-flex;align-items:center;gap:4px;font-size:10px;color:var(--text-secondary);background:var(--bg-elevated);border:1px solid var(--border-color);border-radius:4px;padding:2px 6px}.alloc-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.alloc-chip-pct{font-family:var(--font-mono);font-weight:600;color:var(--text-primary)}.tcard-metrics{display:grid;grid-template-columns:repeat(4,1fr);padding:10px 16px;gap:6px;border-bottom:1px solid var(--border-subtle);background:var(--bg-elevated)}.metric-item{display:flex;flex-direction:column;gap:3px}.metric-label{font-size:9px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px}.metric-value{font-size:13px;font-weight:700;font-family:var(--font-mono);color:var(--text-primary)}.metric-pos{color:var(--green)}.metric-neg{color:var(--red)}.tcard-personality{padding:10px 16px;border-bottom:1px solid var(--border-subtle)}.ptags{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:8px}.ptag{font-size:10px;font-weight:500;padding:2px 8px;border-radius:4px;background:var(--accent-bg);color:var(--accent);border:1px solid var(--accent-border);letter-spacing:.1px}.personality-desc{font-size:11px;color:var(--text-secondary);line-height:1.6}.tcard-footer{display:flex;align-items:center;justify-content:space-between;padding:10px 16px}.data-period{font-size:10px;font-family:var(--font-mono);color:var(--text-muted)}.data-period-real{color:var(--green)}.data-period-est{color:var(--text-muted)}.btn-compare-from-card{padding:5px 13px;font-size:11px;font-weight:600;font-family:var(--font-sans);background:var(--accent);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:background-color .18s ease,box-shadow .18s ease;box-shadow:var(--shadow-sm)}.btn-compare-from-card:hover{background:var(--accent-hover);box-shadow:var(--shadow-md)}#view-compare{overflow:hidden;flex-direction:row}.compare-layout{display:flex;flex:1;overflow:hidden}.compare-sidebar{width:260px;min-width:260px;display:flex;flex-direction:column;gap:12px;padding:14px;border-right:1px solid var(--border-color);background:var(--bg-secondary);overflow-y:auto}.compare-select{width:100%;padding:7px 10px;font-size:12px;font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:var(--radius-sm);outline:none;transition:border-color var(--transition)}.compare-select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.panel-ai .panel-indicator-ai{background:var(--accent-hover)}.ai-hint{font-size:11px;color:var(--text-muted);line-height:1.5;margin-bottom:4px}.btn-ai{background:var(--accent-bg);color:var(--accent);border:1px solid var(--accent-border);border-radius:var(--radius-sm);padding:7px 14px;font-size:12px;font-weight:600;font-family:var(--font-sans);cursor:pointer;transition:background-color .15s ease,border-color .15s ease;width:100%;box-shadow:var(--shadow-sm)}.btn-ai:hover:not(:disabled){background:var(--accent-dim);border-color:var(--accent)}.btn-ai:disabled{opacity:.4;cursor:not-allowed}.ai-result{margin-top:8px;font-size:11px;color:var(--text-secondary);line-height:1.7;max-height:0;overflow:hidden;transition:max-height .4s ease}.ai-result.ai-result-visible{max-height:400px}.compare-display{flex:1;overflow-y:auto;padding:20px 24px}.compare-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:12px;color:var(--text-muted)}.compare-empty-icon{font-size:36px;opacity:.25}.compare-empty p{font-size:13px}.compare-loading{padding:24px;text-align:center;font-size:13px;color:var(--text-muted)}.compare-error{padding:32px 24px;text-align:center}.compare-error-icon{font-size:28px;color:var(--amber);margin-bottom:12px}.compare-error p{font-size:13px;color:var(--text-muted);background:var(--amber-dim);border-radius:var(--radius-sm);padding:10px 14px;display:inline-block}.compare-result{display:flex;flex-direction:column;gap:14px}.compare-summary-row{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius);padding:12px 16px}.compare-summary-text{display:flex;align-items:center;gap:8px;margin-bottom:8px}.compare-vs-label{font-size:13px;font-weight:600;color:var(--text-primary)}.compare-vs-sep{font-size:11px;color:var(--text-muted);font-family:var(--font-mono)}.compare-tmpl-label{font-size:13px;font-weight:600;color:var(--text-secondary)}.compare-summary{font-size:12px;color:var(--text-secondary);line-height:1.6}.metrics-tabs{display:flex;gap:8px;margin:16px 0}.metrics-tabs .tab-btn{padding:8px 20px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--text-secondary);font-size:13px;cursor:pointer;transition:background-color .18s ease,border-color .18s ease,color .18s ease}.metrics-tabs .tab-btn:hover{background:var(--bg-surface-hover);border-color:var(--border-strong)}.metrics-tabs .tab-btn.active{background:var(--bg-elevated);border-color:var(--border-strong);color:var(--text-primary);box-shadow:var(--shadow-sm)}.total-return-note{font-size:12px;color:var(--amber);margin-bottom:16px;padding:8px 12px;background:var(--amber-dim);border-radius:var(--radius-sm)}.compare-charts-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.compare-metrics-row{display:flex;gap:14px}.chart-panel{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius);padding:12px 14px;flex:1}.chart-panel-wide{flex:1}.chart-panel-title{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px}.chart-canvas-wrap{position:relative}.metrics-note{font-size:10px;color:var(--text-muted);margin-top:8px;font-family:var(--font-mono)}.metrics-data-source.data-period-real{color:var(--green)}.metrics-data-source.data-period-est{color:var(--text-muted)}.metrics-delta-table{width:100%;border-collapse:collapse;font-size:12px;margin-bottom:2px}.metrics-delta-table th{text-align:left;padding:5px 8px;color:var(--text-muted);font-size:10px;text-transform:uppercase;letter-spacing:.4px;border-bottom:1px solid var(--border-color)}.metrics-delta-table td{padding:7px 8px;border-bottom:1px solid var(--border-subtle)}.metrics-delta-table tr:last-child td{border-bottom:none}.mdelta-label{font-weight:600;color:var(--text-primary);width:30%}.mdelta-num{font-family:var(--font-mono);font-size:11px;color:var(--text-secondary);width:25%}.mdelta-tmpl{color:var(--text-muted)}.mdelta-diff{font-family:var(--font-mono);font-size:11px;font-weight:700;width:20%}.mdelta-good{color:var(--green)}.mdelta-bad{color:var(--red)}.mdelta-neutral{color:var(--text-muted)}.compare-table-section{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius);padding:12px 14px}.diff-table{width:100%;border-collapse:collapse;font-size:12px}.diff-table th{text-align:left;padding:6px 8px;color:var(--text-muted);font-size:10px;text-transform:uppercase;letter-spacing:.4px;border-bottom:1px solid var(--border-color)}.diff-table td{padding:6px 8px;border-bottom:1px solid var(--border-subtle);color:var(--text-secondary)}.diff-table tr:last-child td{border-bottom:none}.diff-cat{font-weight:600;color:var(--text-primary)!important}.diff-num{font-family:var(--font-mono);font-size:11px}.diff-dev{font-family:var(--font-mono);font-weight:700;font-size:11px}.dev-over{color:var(--red)}.dev-under{color:var(--green)}.dev-neutral{color:var(--text-muted)}@media (max-width: 1440px){.compare-charts-row{grid-template-columns:1fr}.templates-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}}@media (max-height: 800px){.templates-layout{padding:12px 16px;gap:10px}.compare-display{padding:12px 16px}}@media (max-width: 768px){.app{height:auto;min-height:100vh;max-height:none}.main-content{overflow-y:visible;overflow-x:hidden}.header{padding:0 16px;height:52px;position:sticky;top:0;z-index:100}.header-sub{display:none}.mobile-menu-btn{display:flex;align-items:center;justify-content:center;width:44px;height:44px;background:transparent;border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;font-size:18px;transition:background-color var(--transition),color var(--transition);flex-shrink:0}.mobile-menu-btn:hover{background:var(--bg-surface);color:var(--text-primary)}.view-nav{display:none}.mobile-nav-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:200;opacity:0;pointer-events:none;transition:opacity .2s ease}.mobile-nav-overlay.open{opacity:1;pointer-events:all}.mobile-nav-drawer{position:fixed;top:0;right:0;bottom:0;width:240px;background:var(--bg-secondary);border-left:1px solid var(--border-color);box-shadow:var(--shadow-lg);z-index:201;display:flex;flex-direction:column;padding:16px;gap:4px;transform:translate(100%);transition:transform .25s cubic-bezier(.32,.72,0,1)}.mobile-nav-drawer.open{transform:translate(0)}.mobile-nav-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:12px;margin-bottom:8px;border-bottom:1px solid var(--border-color)}.mobile-nav-title{font-size:13px;font-weight:700;color:var(--text-primary);letter-spacing:.3px}.mobile-nav-close{display:flex;align-items:center;justify-content:center;width:44px;height:44px;background:transparent;border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;font-size:16px;transition:background-color var(--transition),color var(--transition)}.mobile-nav-close:hover{background:var(--bg-surface);color:var(--text-primary)}.mobile-nav-link{display:flex;align-items:center;padding:10px 12px;font-size:14px;font-weight:500;color:var(--text-secondary);text-decoration:none;border-radius:var(--radius-sm);transition:background-color var(--transition),color var(--transition);min-height:44px}.mobile-nav-link:hover{background:var(--bg-surface);color:var(--text-primary)}.mobile-nav-link.active{background:var(--accent-bg);color:var(--accent);font-weight:600;border:1px solid var(--accent-border)}.portfolio-layout{flex-direction:column;height:auto;overflow:visible}.sidebar{width:100%;min-width:unset;border-right:none;border-bottom:1px solid var(--border-color)}.mobile-panel-tabs{display:flex;gap:0;border-bottom:1px solid var(--border-color);background:var(--bg-secondary);flex-shrink:0}.mobile-panel-tab{flex:1;padding:12px 16px;font-size:13px;font-weight:500;color:var(--text-muted);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color var(--transition),border-color var(--transition);min-height:44px}.mobile-panel-tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.display{overflow:visible;height:auto}.treemap-wrapper{height:360px;flex:none}.compare-layout{flex-direction:column!important;overflow:visible!important;height:auto!important}.compare-sidebar{width:100%!important;min-width:unset!important;border-right:none!important;border-bottom:1px solid var(--border-color)}.compare-display{overflow:visible!important;height:auto!important}.table-container{overflow-x:auto;-webkit-overflow-scrolling:touch}.btn{min-height:44px;padding:10px 16px}.btn-save{min-height:44px}.form-group input,.form-group select{min-height:44px;padding:10px 12px;font-size:14px}.modal-close{width:44px!important;height:44px!important;font-size:20px}.modal{width:calc(100vw - 32px)!important;max-width:none}.btn-edit,.btn-delete{min-height:36px;padding:6px 14px;font-size:12px}.tcard-metrics{grid-template-columns:repeat(2,1fr)!important}.templates-grid{grid-template-columns:1fr!important}.compare-charts-row{grid-template-columns:1fr}.compare-metrics-row{flex-direction:column}}:root{--gallery-white: #fafafa;--gallery-ink: #1a1a1a;--gallery-truth-red: #dc2626;--gallery-guide-purple: #9b8aff;--gallery-growth-green: #22c55e;--gallery-reveal-gold: #f59e0b;--gallery-bg: #fafafa;--gallery-surface: #f5f5f5;--gallery-text-primary: #1a1a1a;--gallery-text-secondary: #666;--gallery-text-muted: #999;--gallery-border: rgba(0, 0, 0, .06);--gallery-shadow: 0 2px 8px rgba(0, 0, 0, .04);--gallery-shadow-lg: 0 8px 32px rgba(0, 0, 0, .08);--gallery-radius: 12px;--gallery-radius-sm: 8px;--gallery-transition: .3s cubic-bezier(.16, 1, .3, 1);--font-display: "Inter", "SF Pro Display", -apple-system, sans-serif;--font-sans: "Inter", "Noto Sans SC", -apple-system, sans-serif;--font-mono: "JetBrains Mono", "SF Mono", "IBM Plex Mono", monospace}.gallery-container{background:var(--gallery-bg);color:var(--gallery-ink);min-height:100vh;perspective:1200px;overflow-x:hidden;font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.gallery-section{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:6rem 2rem;position:relative}.gallery-number{font-family:var(--font-display);font-weight:800;font-size:clamp(48px,8vw,96px);letter-spacing:-2px;line-height:1;color:var(--gallery-ink)}.gallery-statement{font-family:var(--font-sans);font-weight:700;font-size:clamp(20px,3vw,32px);line-height:1.3;color:var(--gallery-ink);max-width:600px;text-align:center}.gallery-caption{font-family:var(--font-sans);font-weight:400;font-size:14px;color:var(--gallery-text-secondary);max-width:500px;line-height:1.6}.gallery-mono{font-family:var(--font-mono);font-weight:500;font-size:12px}.truth-red{color:var(--gallery-truth-red)}.growth-green{color:var(--gallery-growth-green)}.reveal-gold{color:var(--gallery-reveal-gold)}.guide-purple{color:var(--gallery-guide-purple)}
