*,*:before,*:after{box-sizing:border-box}:root{--gn-orange: #ea7200;--gn-orange-hover: #c96200;--gn-dark-blue: #253746;--gn-charcoal: #382e2c;--gn-warm-gray: #b6ada5;--gn-blue: #5c88da;--gn-green: #2a7e5b;--gn-gold: #bd9b60;--gn-white: #ffffff;--surface-bg: #f4f5f7;--surface-card: #ffffff;--surface-header: #ffffff;--surface-stripe: #f9f9fb;--surface-filters: #f7f8fa;--surface-detail: #f0f1f4;--border: #dde1e7;--border-subtle: #eceff3;--text-primary: #1a2530;--text-secondary: #5a6472;--text-muted: #8a939e;--radius: 6px;--radius-lg: 8px;--shadow-sm: 0 1px 3px rgba(37,55,70,.08), 0 1px 2px rgba(37,55,70,.04)}html,body{margin:0;padding:0;min-height:100%}body{font-family:Arial,Helvetica Neue,Helvetica,sans-serif;font-size:14px;color:var(--text-primary);background:var(--surface-bg)}#app{min-height:100vh;display:flex;flex-direction:column}header{background:var(--surface-header);border-bottom:2px solid var(--gn-orange);padding:0 24px;height:60px;display:flex;align-items:center;gap:16px;flex-wrap:wrap;position:sticky;top:0;z-index:100;box-shadow:var(--shadow-sm)}header h1{margin:0;color:var(--gn-dark-blue);font-size:16px;font-weight:700;letter-spacing:.1px;white-space:nowrap}.brand-block{display:flex;align-items:center;gap:12px}.logo{width:34px;height:34px;object-fit:contain;flex-shrink:0}.brand-divider{width:1px;height:26px;background:var(--border);margin:0 4px;flex-shrink:0}.header-spacer{flex:1;min-width:12px}.header-user{font-size:13px;color:var(--text-secondary);white-space:nowrap}main.is-locked{filter:blur(4px) saturate(.85);pointer-events:none;-webkit-user-select:none;user-select:none}.app-preview .preview-input{height:36px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-card)}.app-preview .preview-btn{display:inline-flex;align-items:center}.app-preview .preview-bar{display:inline-block;height:10px;border-radius:99px;background:var(--border-subtle)}.login-overlay{position:fixed;top:62px;right:0;bottom:0;left:0;z-index:90;display:flex;align-items:center;justify-content:center;padding:24px;background:#2537462e}.login-card{width:min(400px,100%);padding:32px 32px 24px;display:flex;flex-direction:column;gap:14px;background:var(--surface-card);border:1px solid var(--border);border-top:3px solid var(--gn-orange);border-radius:var(--radius-lg);box-shadow:0 24px 60px #25374638}.login-card h2{margin:0;text-align:center;color:var(--gn-dark-blue);font-size:20px}.login-logo{width:52px;height:52px;object-fit:contain;align-self:center}.login-subtitle{margin:-8px 0 4px;text-align:center;color:var(--text-muted);font-size:13px}.login-notice{margin:0;padding:9px 12px;border-radius:var(--radius);background:#fdf4ec;color:var(--gn-charcoal);font-size:12px}.btn.btn-sso{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:42px;text-decoration:none;text-transform:none;letter-spacing:normal;font-size:14px;white-space:nowrap}.sso-icon{width:16px;height:16px;flex-shrink:0}.login-help{margin:0;text-align:center;color:var(--text-muted);font-size:12px}main{padding:24px;max-width:1480px;margin:0 auto;width:100%;flex:1}.tabs{display:flex;margin-bottom:20px;border-bottom:2px solid var(--border)}.tab-btn{background:transparent;border:0;border-bottom:2px solid transparent;margin-bottom:-2px;color:var(--text-muted);padding:10px 20px;font-size:13px;font-weight:700;letter-spacing:.3px;text-transform:uppercase;cursor:pointer;transition:color .15s,border-color .15s}.tab-btn:hover{color:var(--text-primary)}.tab-btn.active{color:var(--gn-orange);border-bottom-color:var(--gn-orange)}.card{background:var(--surface-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.card-header{padding:18px 22px;border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.card-header h2{margin:0;color:var(--gn-dark-blue);font-size:18px;font-weight:700}.card-header p{margin:3px 0 0;color:var(--text-muted);font-size:13px}.filters{padding:16px 22px;border-bottom:1px solid var(--border-subtle);background:var(--surface-filters)}.filter-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;align-items:end}.field{display:flex;flex-direction:column;gap:5px}label{font-size:11px;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.55px}input,select{height:36px;width:100%;padding:0 10px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-card);color:var(--text-primary);font-size:13px;transition:border-color .15s,box-shadow .15s}input:focus,select:focus{outline:none;border-color:var(--gn-orange);box-shadow:0 0 0 3px #ea72001f}input::placeholder{color:var(--text-muted)}.filter-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.btn{min-height:36px;padding:0 18px;border-radius:var(--radius);font-size:13px;font-weight:700;cursor:pointer;text-transform:uppercase;letter-spacing:.4px;transition:background-color .15s,color .15s,box-shadow .15s}.btn:disabled{opacity:.5;cursor:not-allowed}a.btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.btn-primary{border:0;background:var(--gn-orange);color:var(--gn-white)}.btn-primary:hover:not(:disabled){background:var(--gn-orange-hover);box-shadow:0 2px 6px #ea72004d}.btn-ghost{border:1.5px solid var(--border);color:var(--text-secondary);background:transparent}.btn-ghost:hover:not(:disabled){border-color:var(--gn-orange);color:var(--gn-orange)}.btn-sm{min-height:30px;padding:0 12px;font-size:11px}.link-btn{padding:0;border:0;background:none;color:var(--gn-orange);font:inherit;font-weight:700;cursor:pointer}.link-btn:hover{color:var(--gn-orange-hover);text-decoration:underline}.copy-btn{width:20px;height:20px;padding:0;border:1px solid transparent;border-radius:4px;background:transparent;color:var(--text-muted);font-size:12px;line-height:1;cursor:pointer;opacity:0;transition:opacity .1s,color .1s}tr:hover .copy-btn,.sku-hover-header .copy-btn,.copy-btn:focus-visible,.copy-btn.copied,.copy-btn.failed{opacity:1}.copy-btn:hover{color:var(--gn-orange);border-color:var(--border)}.copy-btn.copied{color:var(--gn-green)}.copy-btn.failed{color:#c0392b}.cell-with-action{display:inline-flex;align-items:center;gap:6px}.badge{display:inline-block;padding:3px 9px;border-radius:99px;font-size:11px;font-weight:700;letter-spacing:.35px}.badge-blue{color:var(--gn-dark-blue);background:#5c88da1f;border:1px solid rgba(92,136,218,.3)}.state-box{padding:52px 20px;text-align:center}.state-box .icon{font-size:32px;margin-bottom:10px}.state-box p{margin:0;font-size:14px;color:var(--text-secondary)}.state-box p.sub{margin-top:4px;font-size:12px;color:var(--text-muted)}.error-box{margin:16px 22px;background:#fff5f5;border:1px solid #fcc;color:#c0392b;border-radius:var(--radius);padding:12px 14px;font-size:13px;white-space:pre-line;line-height:1.45}@keyframes spin{to{transform:rotate(360deg)}}.spinner{width:28px;height:28px;border:3px solid rgba(37,55,70,.12);border-top-color:var(--gn-orange);border-radius:50%;animation:spin .7s linear infinite;margin:0 auto 12px}.table-wrap{overflow-x:auto}.relationship-table-wrap{position:relative}.relationship-sku-link{padding:0;border:0;background:none;color:inherit;font:inherit;cursor:pointer;text-decoration:underline dotted rgba(234,114,0,.65);text-underline-offset:2px}.relationship-sku-link:hover{color:var(--gn-orange)}table{width:100%;border-collapse:collapse;font-size:13px}thead th{padding:10px 14px;text-align:left;font-size:11px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;border-bottom:2px solid var(--border);background:var(--surface-stripe);white-space:nowrap}thead th.sorted{color:var(--gn-orange)}.sort-btn{all:inherit;display:inline-flex;align-items:center;gap:4px;padding:0;border:0;background:none;cursor:pointer}.sort-btn:hover{color:var(--gn-orange)}.sort-btn:focus-visible{outline:2px solid var(--gn-orange);outline-offset:2px}.sort-indicator{font-size:10px;opacity:.55}thead th.sorted .sort-indicator{opacity:1}.column-filter-row th{padding:6px 14px 8px;background:var(--surface-filters)}.column-filter{width:100%;min-width:70px;height:28px;padding:0 8px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-card);color:var(--text-primary);font:inherit;font-size:12px;font-weight:400;text-transform:none;letter-spacing:normal}.column-filter:focus{outline:none;border-color:var(--gn-orange)}.clear-filters-btn{padding:0;border:0;background:none;color:var(--text-muted);cursor:pointer}.clear-filters-btn:hover{color:var(--gn-orange)}.no-match-row td{padding:20px 14px;text-align:center;color:var(--text-muted)}.detail-actions{display:flex;gap:8px;padding:12px 14px 0}.sku-hover-actions{display:flex;gap:14px;margin-top:6px;font-size:12px}.graph-node{cursor:pointer}tbody tr{border-bottom:1px solid var(--border-subtle);transition:background-color .1s}tbody tr:hover{background:#fdf4ec}td{padding:10px 14px;color:var(--text-primary);vertical-align:middle}td.mono{font-family:SF Mono,Fira Code,Menlo,monospace;font-size:12px;color:var(--gn-dark-blue);font-weight:600}td.muted{color:var(--text-muted)}td.empty{font-style:italic;color:var(--text-muted)}.relationship-row.relationship-group-start td{border-top:1px solid rgba(234,114,0,.18)}.relationship-parent-cell{min-width:118px;font-weight:700}.relationship-parent-cell.empty{color:transparent;-webkit-user-select:none;user-select:none}.pagination{padding:12px 22px;border-top:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;background:var(--surface-filters)}.pagination-info{font-size:12px;color:var(--text-muted)}.pagination-controls{display:flex;gap:4px;align-items:center}.page-btn{min-width:32px;height:32px;padding:0 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-card);cursor:pointer;font-size:13px;color:var(--text-secondary);transition:border-color .15s,color .15s,background-color .15s}.page-btn:hover:not(:disabled){border-color:var(--gn-orange);color:var(--gn-orange)}.page-btn.active{border-color:var(--gn-orange);background:var(--gn-orange);color:var(--gn-white)}.page-btn:disabled{opacity:.35;cursor:not-allowed}.results-bar{display:flex;align-items:center;gap:10px}.subview-switch{display:inline-flex;align-items:center;gap:4px;padding:4px;border:1px solid var(--border);border-radius:999px;background:var(--surface-bg)}.subview-btn{min-height:30px;padding:0 12px;border:0;border-radius:999px;background:transparent;color:var(--text-secondary);font-size:12px;font-weight:700;letter-spacing:.25px;cursor:pointer}.subview-btn.active{background:var(--gn-orange);color:var(--gn-white)}.subview-btn:hover:not(.active){color:var(--text-primary)}.graph-panel{padding:18px 22px 22px}.graph-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:18px}.graph-stats{display:flex;gap:10px;flex-wrap:wrap}.graph-stat{display:flex;flex-direction:column;gap:3px;min-width:88px;padding:10px 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface-stripe)}.graph-stat span{font-size:10px;font-weight:700;letter-spacing:.45px;text-transform:uppercase;color:var(--text-muted)}.graph-stat strong{font-size:16px;line-height:1.1;color:var(--gn-dark-blue)}.graph-note{margin:0;max-width:280px;font-size:12px;line-height:1.5;color:var(--text-muted)}.graph-canvas-wrap{position:relative;overflow:auto;border:1px solid var(--border-subtle);border-radius:16px;background:radial-gradient(circle at top left,rgba(92,136,218,.08),transparent 28%),linear-gradient(180deg,#fbfcfd,#f4f6f9)}.relationship-graph{display:block;width:max-content;min-width:100%;height:auto}.graph-edge{fill:none}.sku-hover-popover{position:absolute;z-index:5;width:auto;max-height:320px;overflow:auto;padding:6px 10px;border:1px solid rgba(234,114,0,.35);border-radius:8px;background:var(--surface-card);box-shadow:0 6px 16px #2537461f;font-size:12px}.sku-hover-popover.expanded{width:min(380px,82vw);padding:10px 12px;border-radius:10px;box-shadow:0 10px 24px #25374629}.sku-hover-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.sku-hover-header strong{color:var(--gn-dark-blue);font-size:12px}.expanded .sku-hover-header strong{font-size:13px}.sku-fetch-btn{width:24px;height:24px;border-radius:6px;border:1px solid var(--border);background:#fff;cursor:pointer;font-size:11px}.expanded .sku-fetch-btn{width:28px;height:28px;border-radius:8px;font-size:inherit}.sku-fetch-btn:hover:not(:disabled){border-color:var(--gn-orange);background:#ea720014}.sku-fetch-btn:disabled{opacity:.55;cursor:not-allowed}.sku-hover-hint{margin:4px 0 0;font-size:10px;color:var(--text-muted)}.expanded .sku-hover-hint{margin:6px 0 8px;font-size:11px}.sku-hover-state{font-size:12px;color:var(--text-secondary)}.sku-hover-state.error{color:#c0392b;white-space:pre-line}.sku-hover-grid{margin:0;display:grid;grid-template-columns:minmax(112px,1fr) minmax(0,2fr);gap:6px 10px;font-size:12px}.sku-hover-grid dt{margin:0;color:var(--text-muted);font-weight:700}.sku-hover-grid dd{margin:0;color:var(--text-primary);word-break:break-word}.compact-state{padding:38px 20px}tr.expandable td:first-child{cursor:pointer}tr.expandable td:first-child:before{content:"▶";font-size:9px;color:var(--text-muted);display:inline-block;transition:transform .15s}tr.expandable.expanded td:first-child:before{transform:rotate(90deg);color:var(--gn-orange)}tr.detail-row td{padding:0}.detail-content{background:var(--surface-detail);border-top:1px solid var(--border-subtle);padding:16px 22px;display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.detail-field{display:flex;flex-direction:column;gap:2px}.detail-field .key{font-size:10px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.detail-field .val{font-size:13px;color:var(--text-primary)}.detail-field .val.empty-val{color:var(--text-muted);font-style:italic}.detail-field .val.mono{font-family:SF Mono,Fira Code,Menlo,monospace;font-size:12px;color:var(--gn-dark-blue);font-weight:600}.page-footer{border-top:1px solid var(--border);padding:10px 24px;display:flex;align-items:center;justify-content:space-between;background:var(--surface-header)}.page-footer span{font-size:11px;color:var(--text-muted);letter-spacing:.3px}.page-footer .footer-logo{width:22px;height:22px;object-fit:contain;opacity:.5}@media(max-width:900px){header{padding:8px 16px;height:auto;min-height:60px}main{padding:16px}.filter-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.secret-wrap input{width:100%}.tab-btn{min-width:120px}.pagination{align-items:flex-start}}
