:root{--bg:#0d1018;--surface:#151a24;--surface-2:#1b2230;--line:#2a3242;--line-soft:#ffffff12;--ink:#11141f;--ink-2:#1a2030;--accent:#10b981;--accent-line:#34d399;--product:#3a465c;--marketing:#7c3aed;--cs:#3b82f6;--meta:#14b8a6;--tint-ecom:#94a3b81a;--tint-marketing:#7c3aed33;--tint-cs:#3b82f633;--text:#e7eaf1;--muted:#97a1b2;--shadow:0 1px 2px #0006, 0 10px 30px #00000059}*{box-sizing:border-box}body{color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;margin:0;font-family:IBM Plex Sans,system-ui,-apple-system,sans-serif}.app{flex-direction:column;height:100vh;display:flex}.route-area,.dash{flex-direction:column;flex:1;min-height:0;display:flex}.topbar{background:linear-gradient(180deg, var(--ink-2), var(--ink));border-bottom:2px solid var(--accent-line);color:#fff;align-items:center;gap:28px;padding:10px 20px;display:flex}.topbar__brand{align-items:center;gap:12px;min-width:0;display:flex}.topbar__bolt{color:var(--accent);filter:drop-shadow(0 0 8px #34d399b3);display:block}.topbar__title{letter-spacing:.3px;margin:0;font-family:Bricolage Grotesque,sans-serif;font-size:19px;font-weight:800;line-height:1.1}.topbar__sub{color:#8b96b0;letter-spacing:.2px;margin:2px 0 0;font-size:11.5px}.topbar__nav{gap:6px;display:flex}.navlink{color:#aeb7d0;border-radius:8px;padding:7px 14px;font-size:13.5px;font-weight:600;text-decoration:none;transition:background .15s,color .15s}.navlink:hover{color:#fff;background:#ffffff14}.navlink--active{color:#fff;background:#10b98138}.userchip{align-items:center;gap:11px;margin-left:auto;display:flex}.userchip__text{flex-direction:column;align-items:flex-end;gap:3px;display:flex}.userchip__name{color:#fff;font-size:13px;font-weight:600;line-height:1}.userchip__avatar{background:var(--accent);color:#06281d;border-radius:50%;place-items:center;width:36px;height:36px;font-family:Bricolage Grotesque,sans-serif;font-size:16px;font-weight:800;display:grid;box-shadow:0 0 0 2px #34d39959}.role-badge{letter-spacing:.3px;text-transform:uppercase;color:#fff;border-radius:999px;padding:2px 9px;font-size:10.5px;font-weight:700;line-height:1.4}.role-badge--admin{background:var(--accent);color:#06281d}.role-badge--marketing{background:var(--marketing)}.role-badge--cs{background:var(--cs)}.role-badge--ecom{background:#64748b}.role-badge--super{background:#ef4444}.role-badge--editor{background:#6366f1}.userchip__meta{align-items:center;gap:8px;display:flex}.userchip__email{color:#8b94a7;font-size:11px}.role-mappings{margin-bottom:16px}.role-note{margin-bottom:12px}.role-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;display:grid}.role-card{flex-direction:column;gap:8px;margin-bottom:0;display:flex}.role-card__desc{color:#98a2b6;margin:2px 0 4px;font-size:12px}.role-card--super{border-top:3px solid #ef4444}.role-card--admin{border-top:3px solid var(--accent)}.role-card--editor{border-top:3px solid #6366f1}.role-field{margin-top:4px}.role-field__label{text-transform:uppercase;letter-spacing:.4px;color:#7c8699;margin-bottom:6px;font-size:10.5px;display:block}.tag-list{flex-wrap:wrap;gap:6px;min-height:22px;margin-bottom:8px;display:flex}.tag{background:var(--surface-2);border:1px solid var(--line);color:#dfe5f0;border-radius:8px;align-items:center;gap:6px;padding:3px 8px;font-size:12px;display:inline-flex}.tag button{color:#8b94a7;cursor:pointer;background:0 0;border:none;padding:0;font-size:14px;line-height:1}.tag button:hover{color:#ef4444}.tag-empty{color:#6b7488;font-size:12px;font-style:italic}.tag-input{gap:6px;display:flex}.tag-input input{background:var(--surface-2);border:1px solid var(--line);color:#e7eaf1;border-radius:8px;flex:1;padding:7px 10px;font-size:12px}.card__head{justify-content:space-between;align-items:center;gap:12px;display:flex}.toolbar{align-items:center;gap:16px;padding:12px 16px 2px;display:flex}.toolbar__search{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;flex:1;align-items:center;gap:8px;max-width:440px;padding:8px 12px;transition:border-color .15s;display:flex}.toolbar__search:focus-within{border-color:var(--accent)}.toolbar__search-icon{color:#8a93a4;font-size:16px}.toolbar__search input{color:var(--text);background:0 0;border:none;outline:none;flex:1;font-family:inherit;font-size:13.5px}.toolbar__search input::placeholder{color:#6f7a8c}.toolbar__search-clear{color:#8a93a4;cursor:pointer;background:0 0;border:none;font-size:18px;line-height:1}.toolbar__search-clear:hover{color:var(--text)}.toolbar__counts{gap:8px;margin-left:auto;display:flex}.stat{white-space:nowrap;border:1px solid #0000;border-radius:999px;padding:6px 12px;font-size:12px}.stat b{margin-right:3px;font-weight:700}.stat--stock{color:#6ee7b7;background:#10b98124;border-color:#10b98159}.stat--photos{color:#fcd34d;background:#f59e0b24;border-color:#f59e0b59}.stat--sold{color:#cbd5e1;background:#94a3b81f;border-color:#94a3b84d}.grid-wrap{background:var(--surface);border:1px solid var(--line);min-height:0;box-shadow:var(--shadow);border-radius:14px;flex:1;margin:12px 14px 14px;overflow:hidden}.grid-wrap .ag-root-wrapper{border:none;border-radius:14px}.ag-header-group-cell.grp-product,.ag-header-cell.col-product{background:var(--product)!important;color:#fff!important}.ag-header-group-cell.grp-marketing,.ag-header-cell.col-marketing{background:var(--marketing)!important;color:#fff!important}.ag-header-group-cell.grp-cs,.ag-header-cell.col-cs{background:var(--cs)!important;color:#fff!important}.ag-header-group-cell.grp-meta,.ag-header-cell.col-meta{background:var(--meta)!important;color:#062a26!important}.ag-header-group-cell.grp-product{background:#2b3548!important}.ag-header-group-cell.grp-marketing{background:#5b21b6!important}.ag-header-group-cell.grp-cs{background:#1d4ed8!important}.ag-header-group-cell.grp-meta{color:#fff!important;background:#0f766e!important}.ag-header-cell[class*=col-] .ag-icon{color:#ffffffd9!important}.ag-header-cell[class*=col-] .ag-header-cell-resize:after{background:#ffffff40!important}.cell-readonly{color:#7d8799;background:#ffffff06}.ag-cell.copyable{padding:0!important}.copy-cell{cursor:pointer;width:100%;height:100%;font:inherit;color:#cbd3e1;text-align:left;letter-spacing:.2px;background:0 0;border:0;align-items:center;gap:6px;padding:0 12px;display:flex}.copy-cell-value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.copy-cell-icon{opacity:0;flex:none;font-size:11px;transition:opacity .12s}.copy-cell:hover{color:#e7eaf1;background:#10b98114}.copy-cell:hover .copy-cell-icon,.copy-cell:focus-visible .copy-cell-icon{opacity:.75}.copy-cell:focus-visible{outline-offset:-2px;outline:2px solid #10b981b3}.copy-cell.copy-copied{color:#6ee7b7;background:#10b98124}.copy-cell.copy-copied .copy-cell-icon{opacity:1}.copy-cell.copy-failed{color:#fca5a5;background:#b91c1c29}.copy-cell.copy-failed .copy-cell-icon{opacity:1}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.ed-ecom{background:var(--tint-ecom)}.ed-marketing{background:var(--tint-marketing)}.ed-cs{background:var(--tint-cs)}.ag-cell.ed:hover{box-shadow:inset 0 0 0 1.5px #10b9818c}input[type=date]::-webkit-calendar-picker-indicator{filter:invert()brightness(1.8);cursor:pointer;opacity:.85}input[type=date]::-webkit-calendar-picker-indicator:hover{opacity:1}.combo-editor{width:200px}.combo-editor input{box-sizing:border-box;width:100%;height:40px;font:inherit;background:var(--surface-2);color:var(--text);border:1px solid var(--accent);outline:none;padding:0 10px;font-size:13px}.combo-editor input::placeholder{color:#6f7a8c}.combo-menu{background:var(--surface);border:1px solid var(--line);border-radius:8px;max-height:240px;margin:0;padding:4px;list-style:none;overflow-y:auto;box-shadow:0 12px 34px #00000080}.combo-menu li{color:var(--text);cursor:pointer;white-space:nowrap;border-radius:6px;padding:7px 10px;font-size:13px}.combo-menu li:hover{background:#3b82f638}.ag-cell.has-pill{align-items:center;display:flex;background:0 0!important}.pill{letter-spacing:.2px;color:#c2cadb;background:#2a3344;border-radius:999px;padding:2px 11px;font-size:11px;font-weight:700;line-height:18px;display:inline-block}.pill-not-started,.pill-needs-action{color:#fca5a5;background:#4a1d1d}.pill-not-scheduled{color:#c4b5fd;background:#312058}.pill-scheduled,.pill-in-progress{color:#93c5fd;background:#1e3a6b}.pill-shot,.pill-listed,.pill-edited{color:#a5b4fc;background:#2c2f6b}.pill-published,.pill-sold,.pill-yes{color:#6ee7b7;background:#0f4536}.pill-no{color:#97a1b2;background:#2a3344}.pill-high{color:#fca5a5;background:#4a1d1d}.pill-medium{color:#fcd34d;background:#463316}.pill-low{color:#67e8f9;background:#143b44}.pill-baselinker{color:#9aa6b8;background:#2a3344}.pill-manual{color:#fcd34d;background:#463316}.btn--add{background:var(--accent);color:#06281d}.btn--add:hover{background:#0ea372}.modal-backdrop{z-index:2000;background:#0009;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--line);border-radius:16px;width:min(680px,100%);max-height:90vh;padding:22px 24px;overflow:auto;box-shadow:0 24px 70px #0000008c}.modal__head{justify-content:space-between;align-items:center;display:flex}.modal__head h3{color:var(--text);margin:0;font-family:Bricolage Grotesque,sans-serif;font-size:18px}.modal__x{color:var(--muted);cursor:pointer;background:0 0;border:none;font-size:24px;line-height:1}.modal__hint{color:var(--muted);margin:6px 0 16px;font-size:12.5px}.modal__grid{grid-template-columns:1fr 1fr;gap:12px 16px;display:grid}.field{color:var(--muted);flex-direction:column;gap:5px;font-size:12.5px;display:flex}.field .req{color:#f87171;font-style:normal}.field input,.field select{font:inherit;border:1px solid var(--line);color:var(--text);background:var(--surface-2);border-radius:9px;outline:none;padding:8px 10px;font-size:13.5px}.field input:focus,.field select:focus{border-color:var(--accent)}.field select option{background:var(--surface-2);color:var(--text)}.modal__err{margin:14px 0 0}.modal__actions{justify-content:flex-end;gap:10px;margin-top:20px;display:flex}.settings{flex:1;min-height:0;padding:20px;overflow:auto}.settings__inner{max-width:880px;margin:0 auto}.settings__h{margin:4px 0 16px;font-family:Bricolage Grotesque,sans-serif;font-size:22px}.card{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;margin-bottom:16px;padding:18px 20px}.card__h{margin:0 0 14px;font-family:Bricolage Grotesque,sans-serif;font-size:15px}.kv{grid-template-columns:120px 1fr;gap:10px 16px;margin:0;display:grid}.kv dt{color:var(--muted);font-size:13px}.kv dd{margin:0;font-size:13.5px}.chips{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.chip{background:var(--surface-2);border:1px solid var(--line);color:#c2cadb;border-radius:8px;padding:3px 10px;font-size:12px}.muted{color:var(--muted)}.small{font-size:12px}.row{flex-wrap:wrap;gap:10px;margin-bottom:8px;display:flex}.btn{background:var(--accent);color:#06281d;cursor:pointer;border:none;border-radius:9px;padding:9px 16px;font-size:13px;font-weight:700}.btn:hover{background:#0ea372}.btn:disabled{opacity:.55;cursor:default}.btn--ghost{background:var(--surface-2);border:1px solid var(--line);color:#c2cadb}.btn--ghost:hover{background:#232c3c}.ok{color:#6ee7b7;font-size:13px}.bad{color:#fca5a5;font-size:13px}.audit{margin-top:12px;overflow:auto}.audit table{border-collapse:collapse;width:100%;font-size:12.5px}.audit th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);padding:6px 10px;font-weight:600}.audit td{border-bottom:1px solid var(--line-soft);padding:6px 10px}.splash{background:radial-gradient(1200px 600px at 50% -10%, #1c2540, var(--bg));place-items:center;height:100vh;display:grid}.splash__card{text-align:center;color:#fff}.splash__bolt{color:var(--accent);filter:drop-shadow(0 0 14px #34d399cc);display:inline-block}.splash__card h1{margin:10px 0 6px;font-family:Bricolage Grotesque,sans-serif;font-size:26px;font-weight:800}.splash__loading{color:#8b96b0}.splash__err{color:#fca5a5}.errbox{place-items:center;min-height:60vh;padding:40px;display:grid}.errbox__card{text-align:center;color:#e7eaf1;max-width:520px}.errbox__card h2{margin:0 0 8px;font-family:Bricolage Grotesque,sans-serif;font-size:22px;font-weight:800}.errbox__msg{color:#fca5a5;word-break:break-word;margin:0 0 18px;font-size:13px}.errbox__card button{background:var(--accent);color:#06251a;cursor:pointer;border:0;border-radius:10px;padding:9px 20px;font-size:13px;font-weight:700}.toast{z-index:1000;color:#fff;background:#b91c1c;border-radius:10px;padding:10px 16px;font-size:13px;font-weight:500;position:fixed;top:74px;right:22px;box-shadow:0 10px 30px #b91c1c73}
